summaryrefslogtreecommitdiff
path: root/libs/gui/HdrMetadata.cpp
diff options
context:
space:
mode:
author Valerie Hau <vhau@google.com> 2018-11-21 09:31:43 -0800
committer Valerie Hau <vhau@google.com> 2018-11-26 14:13:22 -0800
commita82679d85492b4bcab53484d684e444fa2311769 (patch)
tree8bc53123d9be1f802f1af91b4c1d3148988468a0 /libs/gui/HdrMetadata.cpp
parentce02296727b427fc82b67f11ffae3d89f3cfc601 (diff)
Adding HDR10+ metadata support for media API
Bug: 118343714 Test: build, boot, run libgui_test Change-Id: Ifa5ccb31083d920f1162ea892de0be047f5b88a1
Diffstat (limited to 'libs/gui/HdrMetadata.cpp')
-rw-r--r--libs/gui/HdrMetadata.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/libs/gui/HdrMetadata.cpp b/libs/gui/HdrMetadata.cpp
index b715e431d5..add3ef0458 100644
--- a/libs/gui/HdrMetadata.cpp
+++ b/libs/gui/HdrMetadata.cpp
@@ -15,6 +15,7 @@
*/
#include <gui/HdrMetadata.h>
+#include <limits>
namespace android {
@@ -26,6 +27,10 @@ size_t HdrMetadata::getFlattenedSize() const {
if (validTypes & CTA861_3) {
size += sizeof(cta8613);
}
+ if (validTypes & HDR10PLUS) {
+ size += sizeof(size_t);
+ size += hdr10plus.size();
+ }
return size;
}
@@ -41,6 +46,12 @@ status_t HdrMetadata::flatten(void* buffer, size_t size) const {
if (validTypes & CTA861_3) {
FlattenableUtils::write(buffer, size, cta8613);
}
+ if (validTypes & HDR10PLUS) {
+ size_t metadataSize = hdr10plus.size();
+ FlattenableUtils::write(buffer, size, metadataSize);
+ memcpy(buffer, hdr10plus.data(), metadataSize);
+ FlattenableUtils::advance(buffer, size, metadataSize);
+ }
return NO_ERROR;
}
@@ -62,6 +73,22 @@ status_t HdrMetadata::unflatten(void const* buffer, size_t size) {
}
FlattenableUtils::read(buffer, size, cta8613);
}
+ if (validTypes & HDR10PLUS) {
+ if (size < sizeof(size_t)) {
+ return NO_MEMORY;
+ }
+
+ size_t metadataSize;
+ FlattenableUtils::read(buffer, size, metadataSize);
+
+ if (size < metadataSize) {
+ return NO_MEMORY;
+ }
+
+ hdr10plus.resize(metadataSize);
+ memcpy(hdr10plus.data(), buffer, metadataSize);
+ FlattenableUtils::advance(buffer, size, metadataSize);
+ }
return NO_ERROR;
}
@@ -91,6 +118,10 @@ bool HdrMetadata::operator==(const HdrMetadata& rhs) const {
}
}
+ if ((validTypes & HDR10PLUS) == HDR10PLUS) {
+ if (hdr10plus != rhs.hdr10plus) return false;
+ }
+
return true;
}