Merge "commonsys-intf: display: add CVP metadata support"

This commit is contained in:
qctecmdr Service
2019-02-14 01:40:58 -08:00
committed by Gerrit - the friendly Code Review server
2 changed files with 42 additions and 0 deletions

View File

@@ -147,6 +147,20 @@ int setMetaDataVa(MetaData_t *data, DispParamType paramType,
sizeof(data->graphics_metadata.data)); sizeof(data->graphics_metadata.data));
break; 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: default:
ALOGE("Unknown paramType %d", paramType); ALOGE("Unknown paramType %d", paramType);
break; break;
@@ -174,6 +188,9 @@ int clearMetaDataVa(MetaData_t *data, DispParamType paramType) {
case SET_VIDEO_PERF_MODE: case SET_VIDEO_PERF_MODE:
data->isVideoPerfMode = 0; data->isVideoPerfMode = 0;
break; break;
case SET_CVP_METADATA:
data->cvpMetadata.size = 0;
break;
default: default:
ALOGE("Unknown paramType %d", paramType); ALOGE("Unknown paramType %d", paramType);
break; break;
@@ -294,6 +311,18 @@ int getMetaDataVa(MetaData_t *data, DispFetchParamType paramType,
ret = 0; ret = 0;
} }
break; 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: default:
ALOGE("Unknown paramType %d", paramType); ALOGE("Unknown paramType %d", paramType);
break; break;

View File

@@ -38,6 +38,7 @@ extern "C" {
#define MAX_UBWC_STATS_LENGTH 32 #define MAX_UBWC_STATS_LENGTH 32
#define GRAPHICS_METADATA_SIZE 4096 #define GRAPHICS_METADATA_SIZE 4096
#define CVP_METADATA_SIZE 1024
enum ColorSpace_t{ enum ColorSpace_t{
ITU_R_601, ITU_R_601,
@@ -105,6 +106,11 @@ typedef struct GraphicsMetadata {
uint32_t data[GRAPHICS_METADATA_SIZE]; uint32_t data[GRAPHICS_METADATA_SIZE];
} GraphicsMetadata; } GraphicsMetadata;
typedef struct CVPMetadata {
uint32_t size; /* payload size in bytes */
uint8_t payload[CVP_METADATA_SIZE];
} CVPMetadata;
struct MetaData_t { struct MetaData_t {
int32_t operation; int32_t operation;
int32_t interlaced; int32_t interlaced;
@@ -148,6 +154,11 @@ struct MetaData_t {
/* Populated and used by adreno during buffer size calculation. /* Populated and used by adreno during buffer size calculation.
* Set only for RGB formats. */ * Set only for RGB formats. */
GraphicsMetadata graphics_metadata; GraphicsMetadata graphics_metadata;
/*
* Producer (camera) will set cvp metadata and consumer (video) will
* use it. The format of metadata is known to producer and consumer.
*/
CVPMetadata cvpMetadata;
}; };
enum DispParamType { enum DispParamType {
@@ -167,6 +178,7 @@ enum DispParamType {
SET_IGC = 0x2000, SET_IGC = 0x2000,
SET_SINGLE_BUFFER_MODE = 0x4000, SET_SINGLE_BUFFER_MODE = 0x4000,
SET_S3D_COMP = 0x8000, SET_S3D_COMP = 0x8000,
SET_CVP_METADATA = 0x00010000,
}; };
enum DispFetchParamType { enum DispFetchParamType {
@@ -186,6 +198,7 @@ enum DispFetchParamType {
GET_IGC = 0x2000, GET_IGC = 0x2000,
GET_SINGLE_BUFFER_MODE = 0x4000, GET_SINGLE_BUFFER_MODE = 0x4000,
GET_S3D_COMP = 0x8000, GET_S3D_COMP = 0x8000,
GET_CVP_METADATA = 0x00010000,
}; };
struct private_handle_t; struct private_handle_t;