diff options
author | Tharaga Balachandran <tbalacha@codeaurora.org> | 2020-03-23 16:00:18 -0400 |
---|---|---|
committer | Baldev Sahu <bsahu@codeaurora.org> | 2020-05-12 10:13:25 +0530 |
commit | f5861d54e873de696ce34d718caf24633f979ba5 (patch) | |
tree | 183a117c82bcd20eb60877a32e588e8193c5615d /gralloc | |
parent | 70b03c7e8715cfa7d404a772d49930b046e16f36 (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.cpp | 13 |
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; } |