qdMetadata: Remove unused metadata types

This change removes metadata types which are not set. The color
space is also set through ColorMetadata, with helpers to convert
to/from the legacy type ColorSpace_t.

CRs-Fixed: 2606686
Change-Id: I2dd67c0082a31ca6900fe845c13d0519a2289060
diff --git a/libqdmetadata/qdMetaData.cpp b/libqdmetadata/qdMetaData.cpp
index 6434ea3..fb32095 100644
--- a/libqdmetadata/qdMetaData.cpp
+++ b/libqdmetadata/qdMetaData.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -35,6 +35,61 @@
 #include <gralloc_priv.h>
 #include "qdMetaData.h"
 
+static int colorMetaDataToColorSpace(ColorMetaData in, ColorSpace_t *out) {
+  if (in.colorPrimaries == ColorPrimaries_BT601_6_525 ||
+      in.colorPrimaries == ColorPrimaries_BT601_6_625) {
+    if (in.range == Range_Full) {
+      *out = ITU_R_601_FR;
+    } else {
+      *out = ITU_R_601;
+    }
+  } else if (in.colorPrimaries == ColorPrimaries_BT2020) {
+    if (in.range == Range_Full) {
+      *out = ITU_R_2020_FR;
+    } else {
+      *out = ITU_R_2020;
+    }
+  } else if (in.colorPrimaries == ColorPrimaries_BT709_5) {
+    *out = ITU_R_709;
+  } else {
+    ALOGE("Cannot convert ColorMetaData to ColorSpace_t");
+    return -1;
+  }
+
+  return 0;
+}
+
+static int colorSpaceToColorMetadata(ColorSpace_t in, ColorMetaData *out) {
+  out->transfer = Transfer_sRGB;
+  switch (in) {
+    case ITU_R_601:
+      out->colorPrimaries = ColorPrimaries_BT601_6_525;
+      out->range = Range_Limited;
+      break;
+    case ITU_R_601_FR:
+      out->colorPrimaries = ColorPrimaries_BT601_6_525;
+      out->range = Range_Full;
+      break;
+    case ITU_R_709:
+      out->colorPrimaries = ColorPrimaries_BT709_5;
+      out->range = Range_Limited;
+      break;
+    case ITU_R_2020:
+      out->colorPrimaries = ColorPrimaries_BT2020;
+      out->range = Range_Limited;
+      break;
+    case ITU_R_2020_FR:
+      out->colorPrimaries = ColorPrimaries_BT2020;
+      out->range = Range_Full;
+      break;
+    default:
+      ALOGE("Cannot convert ColorSpace_t to ColorMetaData");
+      return -1;
+      break;
+  }
+
+  return 0;
+}
 unsigned long getMetaDataSize() {
     return static_cast<unsigned long>(ROUND_UP_PAGESIZE(sizeof(MetaData_t)));
 }
@@ -102,9 +157,13 @@
         case UPDATE_REFRESH_RATE:
             data->refreshrate = *((float *)param);
             break;
-        case UPDATE_COLOR_SPACE:
-            data->colorSpace = *((ColorSpace_t *)param);
-            break;
+        case UPDATE_COLOR_SPACE: {
+          ColorMetaData color;
+          if (!colorSpaceToColorMetadata(*((ColorSpace_t *)param), &color)) {
+            data->color = color;
+          }
+          break;
+        }
         case MAP_SECURE_BUFFER:
             data->mapSecureBuffer = *((int32_t *)param);
             break;
@@ -114,15 +173,9 @@
         case LINEAR_FORMAT:
             data->linearFormat = *((uint32_t *)param);
             break;
-        case SET_IGC:
-            data->igc = *((IGC_t *)param);
-            break;
         case SET_SINGLE_BUFFER_MODE:
             data->isSingleBufferMode = *((uint32_t *)param);
             break;
-        case SET_S3D_COMP:
-            data->s3dComp = *((S3DGpuComp_t *)param);
-            break;
         case SET_VT_TIMESTAMP:
             data->vtTimeStamp = *((uint64_t *)param);
             break;
@@ -205,10 +258,6 @@
         return -EINVAL;
     data->operation &= ~paramType;
     switch (paramType) {
-        case SET_S3D_COMP:
-            data->s3dComp.displayId = -1;
-            data->s3dComp.s3dMode = 0;
-            break;
         case SET_VIDEO_PERF_MODE:
             data->isVideoPerfMode = 0;
             break;
@@ -264,7 +313,10 @@
             break;
         case GET_COLOR_SPACE:
             if (data->operation & UPDATE_COLOR_SPACE) {
-                *((ColorSpace_t *)param) = data->colorSpace;
+              ColorSpace_t color_space;
+              if (!colorMetaDataToColorSpace(data->color, &color_space)) {
+                *((ColorSpace_t *)param) = color_space;
+              }
                 ret = 0;
             }
             break;
@@ -286,24 +338,12 @@
                 ret = 0;
             }
             break;
-        case GET_IGC:
-            if (data->operation & SET_IGC) {
-                *((IGC_t *)param) = data->igc;
-                ret = 0;
-            }
-            break;
         case GET_SINGLE_BUFFER_MODE:
             if (data->operation & SET_SINGLE_BUFFER_MODE) {
                 *((uint32_t *)param) = data->isSingleBufferMode;
                 ret = 0;
             }
             break;
-        case GET_S3D_COMP:
-            if (data->operation & SET_S3D_COMP) {
-                *((S3DGpuComp_t *)param) = data->s3dComp;
-                ret = 0;
-            }
-            break;
         case GET_VT_TIMESTAMP:
             if (data->operation & SET_VT_TIMESTAMP) {
                 *((uint64_t *)param) = data->vtTimeStamp;
diff --git a/libqdmetadata/qdMetaData.h b/libqdmetadata/qdMetaData.h
index ca16a94..fe396f2 100644
--- a/libqdmetadata/qdMetaData.h
+++ b/libqdmetadata/qdMetaData.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -48,18 +48,6 @@
     ITU_R_2020_FR,
 };
 
-enum IGC_t {
-    IGC_NotSpecified,
-    IGC_sRGB,
-};
-
-struct HSICData_t {
-    int32_t hue;
-    float   saturation;
-    int32_t intensity;
-    float   contrast;
-};
-
 struct BufferDim_t {
     int32_t sliceWidth;
     int32_t sliceHeight;
@@ -96,11 +84,6 @@
     };
 };
 
-struct S3DGpuComp_t {
-    int32_t displayId; /* on which display S3D is composed by client */
-    uint32_t s3dMode; /* the S3D format of this layer to be accessed by client */
-};
-
 typedef struct GraphicsMetadata {
     uint32_t size;
     uint32_t data[GRAPHICS_METADATA_SIZE];
@@ -147,8 +130,6 @@
     int32_t interlaced;
     struct BufferDim_t bufferDim;
     float refreshrate;
-    enum ColorSpace_t colorSpace;
-    enum IGC_t igc;
      /* Gralloc sets PRIV_SECURE_BUFFER flag to inform that the buffers are from
       * ION_SECURE. which should not be mapped. However, for GPU post proc
       * feature, GFX needs to map this buffer, in the client context and in SF
@@ -164,9 +145,6 @@
     /* Set by graphics to indicate that this buffer will be written to but not
      * swapped out */
     uint32_t isSingleBufferMode;
-    /* Indicate GPU to draw S3D layer on dedicate display device */
-    struct S3DGpuComp_t s3dComp;
-
     /* Set by camera to program the VT Timestamp */
     uint64_t vtTimeStamp;
     /* Color Aspects + HDR info */