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 */