summaryrefslogtreecommitdiff
path: root/gralloc/gr_buf_mgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gralloc/gr_buf_mgr.cpp')
-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;
}