summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2024-02-14 12:28:34 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-02-14 12:28:34 +0000
commit3f3c7bb6b843e6f1beb2fac5fcefd5a8ff417b3e (patch)
treeb3988f5970308866d0602c8ee769a8d7a96bba96
parent186e9a59b10d9208c862f1a83cceacdfd300c6b2 (diff)
parente7519a879d0025584bfc7fe3eefcacfda7dea21c (diff)
downloadmedia-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.cpp5
-rw-r--r--audio_utils/include/audio_utils/Metadata.h12
-rw-r--r--audio_utils/tests/metadata_tests.cpp8
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));
};