sdm: Add support for LINEAR_FORMAT metadata operation
1. Define LINEAR_FORMAT operation in MetaData.
2. VENUS ouput buffer is linear for NV12_UBWC Interlaced video playback.
So Video module performs LINEAR_FORMAT operation to set "linearFormat"
metadata member to NV12 linear format in case of Interlaced video.
3. Handle LINEAR_FORMAT metadata operation in HWC wrapper and gralloc.
CRs-Fixed: 855474
Change-Id: I77dd72bec26f225de75adb6c214ccd90db239e3e
diff --git a/libqdutils/qdMetaData.cpp b/libqdutils/qdMetaData.cpp
index aae0a47..2aa4a31 100644
--- a/libqdutils/qdMetaData.cpp
+++ b/libqdutils/qdMetaData.cpp
@@ -96,6 +96,9 @@
case S3D_FORMAT:
data->s3dFormat = *((uint32_t *)param);
break;
+ case LINEAR_FORMAT:
+ data->linearFormat = *((uint32_t *)param);
+ break;
default:
ALOGE("Unknown paramType %d", paramType);
break;
diff --git a/libqdutils/qdMetaData.h b/libqdutils/qdMetaData.h
index a1afa38..7688444 100644
--- a/libqdutils/qdMetaData.h
+++ b/libqdutils/qdMetaData.h
@@ -89,6 +89,8 @@
/* The supported formats are defined in gralloc_priv.h to
* support legacy code*/
uint32_t s3dFormat;
+ /* VENUS output buffer is linear for UBWC Interlaced video */
+ uint32_t linearFormat;
};
enum DispParamType {
@@ -104,6 +106,7 @@
UPDATE_COLOR_SPACE = 0x0200,
MAP_SECURE_BUFFER = 0x400,
S3D_FORMAT = 0x800,
+ LINEAR_FORMAT = 0x1000,
};
struct private_handle_t;