commonsys-intf: display: add CVP metadata support

Add set and get CVP (Computer Vision Program) metadata
interface for producer (camera) to set and consumer
(video) to get it.

Change-Id: Ib3c5b3a9bcf8a6a56ec265d6ccbee2fd4b28aca8
diff --git a/libqdmetadata/qdMetaData.cpp b/libqdmetadata/qdMetaData.cpp
index 4635540..3cbafb7 100644
--- a/libqdmetadata/qdMetaData.cpp
+++ b/libqdmetadata/qdMetaData.cpp
@@ -140,6 +140,20 @@
                     sizeof(data->graphics_metadata.data));
              break;
         }
+        case SET_CVP_METADATA: {
+             struct CVPMetadata *cvpMetadata = (struct CVPMetadata *)param;
+             if (cvpMetadata->size < CVP_METADATA_SIZE) {
+                 data->cvpMetadata.size = cvpMetadata->size;
+                 memcpy(data->cvpMetadata.payload, cvpMetadata->payload,
+                        cvpMetadata->size);
+             } else {
+                 data->operation &= ~(paramType);
+                 ALOGE("%s: cvp metadata length %d is more than max size %d",
+                     __func__, cvpMetadata->size, CVP_METADATA_SIZE);
+                 return -EINVAL;
+             }
+             break;
+        }
         default:
             ALOGE("Unknown paramType %d", paramType);
             break;
@@ -167,6 +181,9 @@
         case SET_VIDEO_PERF_MODE:
             data->isVideoPerfMode = 0;
             break;
+        case SET_CVP_METADATA:
+            data->cvpMetadata.size = 0;
+            break;
         default:
             ALOGE("Unknown paramType %d", paramType);
             break;
@@ -287,6 +304,18 @@
                 ret = 0;
             }
             break;
+        case GET_CVP_METADATA:
+            if (data->operation & SET_CVP_METADATA) {
+                struct CVPMetadata *cvpMetadata = (struct CVPMetadata *)param;
+                cvpMetadata->size = 0;
+                if (data->cvpMetadata.size < CVP_METADATA_SIZE) {
+                    cvpMetadata->size = data->cvpMetadata.size;
+                    memcpy(cvpMetadata->payload, data->cvpMetadata.payload,
+                           data->cvpMetadata.size);
+                    ret = 0;
+                }
+            }
+            break;
         default:
             ALOGE("Unknown paramType %d", paramType);
             break;