From 9cf3017b600c9fd71b3ce4a9a190509d42f08f45 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Sharma Date: Fri, 20 May 2022 11:49:17 -0700 Subject: [PATCH] gralloc: Add getter and setter for transcode stats feature Add setter and getter for transcode stats in gralloc. feature used to set stat info received from video decoder to gralloc. This decoder stat enables to fine tune encoding in second pass. Change-Id: I781ce6ea2eadd07bf9b0f38c302f6ce7a05351bb Signed-off-by: Mahesh Kumar Sharma --- gralloc/QtiGralloc.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gralloc/QtiGralloc.cpp b/gralloc/QtiGralloc.cpp index 954c46d..e71e545 100644 --- a/gralloc/QtiGralloc.cpp +++ b/gralloc/QtiGralloc.cpp @@ -164,6 +164,23 @@ Error encodeVideoHistogramMetadata(VideoHistogramMetadata &in, hidl_vec return Error::NONE; } +Error decodeVideoTranscodeStatsMetadata(hidl_vec &in, VideoTranscodeStatsMetadata *out) { + if (!in.size() || !out) { + return Error::BAD_VALUE; + } + memcpy(out, in.data(), sizeof(VideoTranscodeStatsMetadata)); + return Error::NONE; +} + +Error encodeVideoTranscodeStatsMetadata(VideoTranscodeStatsMetadata &in, hidl_vec *out) { + if (!out) { + return Error::BAD_VALUE; + } + out->resize(sizeof(VideoTranscodeStatsMetadata)); + memcpy(out->data(), &in, sizeof(VideoTranscodeStatsMetadata)); + return Error::NONE; +} + Error decodeVideoTimestampInfo(hidl_vec &in, VideoTimestampInfo *out) { if (!in.size() || !out) { return Error::BAD_VALUE; @@ -225,6 +242,8 @@ MetadataType getMetadataType(uint32_t in) { return MetadataType_CVPMetadata; case QTI_VIDEO_HISTOGRAM_STATS: return MetadataType_VideoHistogramStats; + case QTI_VIDEO_TRANSCODE_STATS: + return MetadataType_VideoTranscodeStats; case QTI_VIDEO_TS_INFO: return MetadataType_VideoTimestampInfo; case QTI_FD: @@ -326,6 +345,10 @@ Error get(void *buffer, uint32_t type, void *param) { err = decodeVideoHistogramMetadata(bytestream, reinterpret_cast(param)); break; + case QTI_VIDEO_TRANSCODE_STATS: + err = decodeVideoTranscodeStatsMetadata(bytestream, + reinterpret_cast(param)); + break; case QTI_VIDEO_TS_INFO: err = decodeVideoTimestampInfo(bytestream, reinterpret_cast(param)); break; @@ -449,6 +472,10 @@ Error set(void *buffer, uint32_t type, void *param) { err = encodeVideoHistogramMetadata(*reinterpret_cast(param), &bytestream); break; + case QTI_VIDEO_TRANSCODE_STATS: + err = encodeVideoTranscodeStatsMetadata( + *reinterpret_cast(param), &bytestream); + break; case QTI_VIDEO_TS_INFO: err = encodeVideoTimestampInfo(*reinterpret_cast(param), &bytestream); break;