Merge "commonsys-intf: display: add CVP metadata support"
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
commit
905ec5255c
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user