summaryrefslogtreecommitdiff
path: root/gralloc
diff options
context:
space:
mode:
authorTharaga Balachandran <tbalacha@codeaurora.org>2020-03-23 16:00:18 -0400
committerBaldev Sahu <bsahu@codeaurora.org>2020-05-12 10:13:25 +0530
commitf5861d54e873de696ce34d718caf24633f979ba5 (patch)
tree183a117c82bcd20eb60877a32e588e8193c5615d /gralloc
parent70b03c7e8715cfa7d404a772d49930b046e16f36 (diff)
gralloc: Set dynamicMetaDataValid for SMPTE2094_40
The dynamicMetaDataValid flag needs to be set or reset in SetMetadata() to indicate if the dynamic metadata is useable. This change was required because GetMetadata() for SMPTE2094_40 was returning std::nullopt, as the flag was not being set. CRs-Fixed: 2648631 Change-Id: Ic0dbc6043f94b9848ebf1d17aa81faf9e9754a5e
Diffstat (limited to 'gralloc')
-rw-r--r--gralloc/gr_buf_mgr.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp
index f22ca6ca..703cc1e2 100644
--- a/gralloc/gr_buf_mgr.cpp
+++ b/gralloc/gr_buf_mgr.cpp
@@ -1109,9 +1109,16 @@ Error BufferManager::SetMetadata(private_handle_t *handle, int64_t metadatatype_
std::optional<std::vector<uint8_t>> dynamic_metadata_payload;
android::gralloc4::decodeSmpte2094_40(in, &dynamic_metadata_payload);
if (dynamic_metadata_payload != std::nullopt) {
- metadata->color.dynamicMetaDataLen = static_cast<uint32_t>(dynamic_metadata_payload->size());
- memcpy(&metadata->color.dynamicMetaDataPayload, &dynamic_metadata_payload,
- metadata->color.dynamicMetaDataLen);
+ if (dynamic_metadata_payload->size() <= HDR_DYNAMIC_META_DATA_SZ &&
+ dynamic_metadata_payload->size() > 0) {
+ metadata->color.dynamicMetaDataLen = static_cast<uint32_t>(dynamic_metadata_payload->size());
+ memcpy(&metadata->color.dynamicMetaDataPayload, &dynamic_metadata_payload,
+ metadata->color.dynamicMetaDataLen);
+ metadata->color.dynamicMetaDataValid = true;
+ }
+ } else {
+ // Reset metadata by passing in std::nullopt
+ metadata->color.dynamicMetaDataValid = false;
}
break;
}