diff options
author | 2019-09-09 10:08:22 +0800 | |
---|---|---|
committer | 2019-09-20 00:32:58 +0000 | |
commit | e409e38f7a874d02c5900f201ba38ca94837aea6 (patch) | |
tree | 7b44ebabe1504f2c0c7d6ee53bf146e99462bbd8 | |
parent | 323d89081945901f6aeba4845a8e1f376ee4ab47 (diff) |
libgui: Set HDR metadataSize data type as uint32_t
sizeof(metadataSize) is different in 32-bit or 64-bit mode if data type
of metadataSize is size_t. Fix metadataSize in uint32_t for flatten and
unflatten. In addition, we take hdr10plus array element size into
consideration when allocate memoery for flatten and unflatten.
b/127370432
Test: check size of metadataSize in flatten and unflatten in hdr10plus
playback.
Test: Check hdr10plus array content when array element size is
non-uint8_t such as uint32_t.
Change-Id: Id7a415887b43c440e3f23ea2f6b201d45271c160
-rw-r--r-- | libs/gui/HdrMetadata.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/libs/gui/HdrMetadata.cpp b/libs/gui/HdrMetadata.cpp index add3ef0458..058cd9aa3b 100644 --- a/libs/gui/HdrMetadata.cpp +++ b/libs/gui/HdrMetadata.cpp @@ -28,8 +28,8 @@ size_t HdrMetadata::getFlattenedSize() const { size += sizeof(cta8613); } if (validTypes & HDR10PLUS) { - size += sizeof(size_t); - size += hdr10plus.size(); + size += sizeof(uint32_t); + size += hdr10plus.size() * sizeof(hdr10plus[0]); } return size; } @@ -47,10 +47,11 @@ status_t HdrMetadata::flatten(void* buffer, size_t size) const { FlattenableUtils::write(buffer, size, cta8613); } if (validTypes & HDR10PLUS) { - size_t metadataSize = hdr10plus.size(); + uint32_t metadataSize = hdr10plus.size(); FlattenableUtils::write(buffer, size, metadataSize); - memcpy(buffer, hdr10plus.data(), metadataSize); - FlattenableUtils::advance(buffer, size, metadataSize); + size_t metadataSizeinByte = metadataSize * sizeof(hdr10plus[0]); + memcpy(buffer, hdr10plus.data(), metadataSizeinByte); + FlattenableUtils::advance(buffer, size, metadataSizeinByte); } return NO_ERROR; @@ -74,20 +75,21 @@ status_t HdrMetadata::unflatten(void const* buffer, size_t size) { FlattenableUtils::read(buffer, size, cta8613); } if (validTypes & HDR10PLUS) { - if (size < sizeof(size_t)) { + if (size < sizeof(uint32_t)) { return NO_MEMORY; } - size_t metadataSize; + uint32_t metadataSize; FlattenableUtils::read(buffer, size, metadataSize); - if (size < metadataSize) { + size_t metadataSizeinByte = metadataSize * sizeof(hdr10plus[0]); + if (size < metadataSizeinByte) { return NO_MEMORY; } hdr10plus.resize(metadataSize); - memcpy(hdr10plus.data(), buffer, metadataSize); - FlattenableUtils::advance(buffer, size, metadataSize); + memcpy(hdr10plus.data(), buffer, metadataSizeinByte); + FlattenableUtils::advance(buffer, size, metadataSizeinByte); } return NO_ERROR; |