summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRay Zhang <rayz@codeaurora.org>2016-07-01 13:33:15 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-07-14 18:04:21 -0700
commit0c0fc5bacd0ff037ceea2b32dc5c84e376119f8d (patch)
tree0af86c02167610797d263308a973b2d5e88d3345
parent0400de293afeec3d35f4867b421b04d00f2a7bda (diff)
downloadhardware_qcom_display-0c0fc5bacd0ff037ceea2b32dc5c84e376119f8d.tar.gz
hardware_qcom_display-0c0fc5bacd0ff037ceea2b32dc5c84e376119f8d.tar.bz2
hardware_qcom_display-0c0fc5bacd0ff037ceea2b32dc5c84e376119f8d.zip
qdMetadata: Add support for deterministic frame rate
Determinitic frame rate needs frame count and timestamp as input parameters to calculate corresponding cadence of video stream. Use metadata to exchange this info between display and video. CRs-fixed: 1021682 Change-Id: I031fed2f92b8e0b23cd0bfff35537abf17223a35
-rw-r--r--libqdutils/qdMetaData.cpp6
-rw-r--r--libqdutils/qdMetaData.h14
2 files changed, 19 insertions, 1 deletions
diff --git a/libqdutils/qdMetaData.cpp b/libqdutils/qdMetaData.cpp
index 279a4d803..e51575a11 100644
--- a/libqdutils/qdMetaData.cpp
+++ b/libqdutils/qdMetaData.cpp
@@ -90,6 +90,9 @@ int setMetaData(private_handle_t *handle, DispParamType paramType,
case SET_S3D_RENDER:
data->s3dRender = *((S3DSFRender_t *)param);
break;
+ case SET_FRC_INFO:
+ data->frc = *((FrameRateControl_t *)param);
+ break;
default:
ALOGE("Unknown paramType %d", paramType);
break;
@@ -189,6 +192,9 @@ int getMetaData(private_handle_t *handle, DispFetchParamType paramType,
case GET_S3D_RENDER:
*((S3DSFRender_t *)param) = data->s3dRender;
break;
+ case GET_FRC_INFO:
+ *((FrameRateControl_t *)param) = data->frc;
+ break;
default:
ALOGE("Unknown paramType %d", paramType);
break;
diff --git a/libqdutils/qdMetaData.h b/libqdutils/qdMetaData.h
index 9a33eee8d..1d71b394e 100644
--- a/libqdutils/qdMetaData.h
+++ b/libqdutils/qdMetaData.h
@@ -63,6 +63,15 @@ struct S3DSFRender_t {
uint32_t GpuS3dFormat;
};
+struct FrameRateControl_t {
+ /* Deterministic Frame Rate Control (FRC) */
+ int32_t enable;
+ /* video frame count */
+ uint32_t counter;
+ /* video timestamp */
+ int64_t timestamp;
+};
+
struct MetaData_t {
int32_t operation;
int32_t interlaced;
@@ -87,10 +96,12 @@ struct MetaData_t {
uint32_t isSingleBufferMode;
/* Indicate GPU to help draw S3D layer on dedicate display device */
struct S3DSFRender_t s3dRender;
+ /* Video frame info used by FRC */
+ struct FrameRateControl_t frc;
};
enum DispParamType {
- UNUSED0 = 0x0001,
+ SET_FRC_INFO = 0x0001,
UNUSED1 = 0x0002,
PP_PARAM_INTERLACED = 0x0004,
UNUSED2 = 0x0008,
@@ -109,6 +120,7 @@ enum DispParamType {
};
enum DispFetchParamType {
+ GET_FRC_INFO = 0x0001,
GET_PP_PARAM_INTERLACED = 0x0004,
GET_BUFFER_GEOMETRY = 0x0080,
GET_REFRESH_RATE = 0x0100,