diff options
| author | Ray Zhang <rayz@codeaurora.org> | 2016-07-01 13:33:15 +0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-07-14 18:04:21 -0700 |
| commit | 0c0fc5bacd0ff037ceea2b32dc5c84e376119f8d (patch) | |
| tree | 0af86c02167610797d263308a973b2d5e88d3345 | |
| parent | 0400de293afeec3d35f4867b421b04d00f2a7bda (diff) | |
| download | hardware_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.cpp | 6 | ||||
| -rw-r--r-- | libqdutils/qdMetaData.h | 14 |
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, |
