diff options
author | Ryan Prichard <rprichard@google.com> | 2024-02-14 12:28:34 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-14 12:28:34 +0000 |
commit | 3f3c7bb6b843e6f1beb2fac5fcefd5a8ff417b3e (patch) | |
tree | b3988f5970308866d0602c8ee769a8d7a96bba96 | |
parent | 186e9a59b10d9208c862f1a83cceacdfd300c6b2 (diff) | |
parent | e7519a879d0025584bfc7fe3eefcacfda7dea21c (diff) | |
download | media-3f3c7bb6b843e6f1beb2fac5fcefd5a8ff417b3e.tar.gz |
Merge "Use vector instead of std::basic_string<uint8_t>" into main am: e7519a879d
Original change: https://android-review.googlesource.com/c/platform/system/media/+/2954455
Change-Id: Id2afe98467ef88832459161d34780702bdb0752b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | audio_utils/Metadata.cpp | 5 | ||||
-rw-r--r-- | audio_utils/include/audio_utils/Metadata.h | 12 | ||||
-rw-r--r-- | audio_utils/tests/metadata_tests.cpp | 8 |
3 files changed, 14 insertions, 11 deletions
diff --git a/audio_utils/Metadata.cpp b/audio_utils/Metadata.cpp index d580f4cb..1b7062d4 100644 --- a/audio_utils/Metadata.cpp +++ b/audio_utils/Metadata.cpp @@ -170,7 +170,8 @@ audio_metadata_t *audio_metadata_from_byte_string(const uint8_t *byteString, siz return nullptr; } return reinterpret_cast<audio_metadata_t *>( - new(std::nothrow) Data(dataFromByteString(ByteString(byteString, length)))); + new(std::nothrow) Data(dataFromByteString(ByteString(byteString, + byteString + length)))); } ssize_t byte_string_from_audio_metadata(audio_metadata_t *metadata, uint8_t **byteString) { @@ -182,7 +183,7 @@ ssize_t byte_string_from_audio_metadata(audio_metadata_t *metadata, uint8_t **by if (*byteString == nullptr) { return -ENOMEM; } - memcpy(*byteString, bs.c_str(), bs.size()); + memcpy(*byteString, bs.data(), bs.size()); return bs.size(); } diff --git a/audio_utils/include/audio_utils/Metadata.h b/audio_utils/include/audio_utils/Metadata.h index 2f1edb33..90186a82 100644 --- a/audio_utils/include/audio_utils/Metadata.h +++ b/audio_utils/include/audio_utils/Metadata.h @@ -23,6 +23,7 @@ #ifdef __cplusplus +#include <algorithm> #include <any> #include <map> #include <string> @@ -554,7 +555,7 @@ using datum_size_t = uint32_t; // The particular implementation of ByteString may change // without affecting compatibility. -using ByteString = std::basic_string<uint8_t>; +using ByteString = std::vector<uint8_t>; /* These should correspond to the Java AudioMetadata.java @@ -592,7 +593,7 @@ std::enable_if_t< bool > copyToByteString(const T& t, ByteString& bs) { - bs.append((uint8_t*)&t, sizeof(t)); + bs.insert(bs.end(), (uint8_t*)&t, (uint8_t*)&t + sizeof(t)); return true; } @@ -609,7 +610,7 @@ bool copyToByteString(const V<Args...>& v, ByteString& bs) { index_size_t size = v.size(); if (!copyToByteString(size, bs)) return false; if constexpr (std::is_same_v<std::decay_t<V<Args...>>, std::string>) { - bs.append((uint8_t*)v.c_str()); + bs.insert(bs.end(), (uint8_t*)v.c_str(), (uint8_t*)v.c_str() + v.size()); } else /* constexpr */ { for (const auto &d : v) { // handles std::vector and std::map if (!copyToByteString(d, bs)) return false; @@ -677,7 +678,8 @@ bool copyToByteString(const Datum& datum, ByteString &bs) { const size_t diff = bs.size() - idx - sizeof(datum_size); if (diff > std::numeric_limits<datum_size_t>::max()) return; datum_size = diff; - bs.replace(idx, sizeof(datum_size), (uint8_t*)&datum_size, sizeof(datum_size)); + std::copy((uint8_t*)&datum_size, (uint8_t*)&datum_size + sizeof(datum_size), + bs.begin() + idx); success = true; }, &datum) && success; } @@ -707,7 +709,7 @@ std::enable_if_t< copyFromByteString(T *dest, const ByteString& bs, size_t& idx, ByteStringUnknowns *unknowns __attribute__((unused))) { if (idx + sizeof(T) > bs.size()) return false; - bs.copy((uint8_t*)dest, sizeof(T), idx); + std::copy(bs.begin() + idx, bs.begin() + idx + sizeof(T), (uint8_t*)dest); idx += sizeof(T); return true; } diff --git a/audio_utils/tests/metadata_tests.cpp b/audio_utils/tests/metadata_tests.cpp index 3856dc0d..2d63f990 100644 --- a/audio_utils/tests/metadata_tests.cpp +++ b/audio_utils/tests/metadata_tests.cpp @@ -458,13 +458,13 @@ TEST(metadata_tests, c) { ASSERT_GT(length, 0); // if gt 0, the bs has been updated to a new value. ASSERT_EQ((size_t)length, audio_metadata_byte_string_len(bs)); ASSERT_EQ((size_t)length, dataByteStringLen(bs)); - ASSERT_EQ(byteStringFromData(d).size(), ByteString(bs, length).size()); + ASSERT_EQ(byteStringFromData(d).size(), ByteString(bs, bs + length).size()); audio_metadata_t *metadataFromBs = audio_metadata_from_byte_string(bs, length); free(bs); bs = nullptr; length = byte_string_from_audio_metadata(metadataFromBs, &bs); ASSERT_GT(length, 0); // if gt 0, the bs has been updated to a new value. - ASSERT_EQ(byteStringFromData(d), ByteString(bs, length)); + ASSERT_EQ(byteStringFromData(d), ByteString(bs, bs + length)); ASSERT_EQ((size_t)length, audio_metadata_byte_string_len(bs)); ASSERT_EQ((size_t)length, dataByteStringLen(bs)); free(bs); @@ -499,13 +499,13 @@ TEST(metadata_tests, empty_data_c) { ASSERT_EQ((size_t)length, dataByteStringLen(bs)); Data d; // empty metadata container. - ASSERT_EQ(byteStringFromData(d).size(), ByteString(bs, length).size()); + ASSERT_EQ(byteStringFromData(d).size(), ByteString(bs, bs + length).size()); std::unique_ptr<audio_metadata_t, decltype(&audio_metadata_destroy)> metadataFromBs{audio_metadata_from_byte_string(bs, length), audio_metadata_destroy}; length = byte_string_from_audio_metadata(metadataFromBs.get(), &bs); ASSERT_GT(length, 0); // if gt 0, the bs has been updated to a new value. bs_scoped_deleter.reset(bs); - ASSERT_EQ(byteStringFromData(d), ByteString(bs, length)); + ASSERT_EQ(byteStringFromData(d), ByteString(bs, bs + length)); ASSERT_EQ((size_t)length, audio_metadata_byte_string_len(bs)); ASSERT_EQ((size_t)length, dataByteStringLen(bs)); }; |