qdutils: Provide a way to reset MetaData key
If data or parameter passed is NULL for setMetaData,
clear the specified metadata key.
Change-Id: I700f431c27ee6b433e363da6c846c792ea3e2d59
diff --git a/libqdutils/qdMetaData.cpp b/libqdutils/qdMetaData.cpp
index 130cf46..c676098 100644
--- a/libqdutils/qdMetaData.cpp
+++ b/libqdutils/qdMetaData.cpp
@@ -38,18 +38,14 @@
int setMetaData(private_handle_t *handle, DispParamType paramType,
void *param) {
- if (!handle) {
- ALOGE("%s: Private handle is null!", __func__);
+ if (private_handle_t::validate(handle)) {
+ ALOGE("%s: Private handle is invalid! handle=%p", __func__, handle);
return -1;
}
if (handle->fd_metadata == -1) {
ALOGE("%s: Bad fd for extra data!", __func__);
return -1;
}
- if (!param) {
- ALOGE("%s: input param is null!", __func__);
- return -1;
- }
unsigned long size = ROUND_UP_PAGESIZE(sizeof(MetaData_t));
void *base = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED,
handle->fd_metadata, 0);
@@ -58,6 +54,12 @@
return -1;
}
MetaData_t *data = reinterpret_cast <MetaData_t *>(base);
+ // If parameter is NULL reset the specific MetaData Key
+ if (!param) {
+ data->operation &= ~paramType;
+ return munmap(base, size);
+ }
+
data->operation |= paramType;
switch (paramType) {
case PP_PARAM_INTERLACED: