summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorParas Nagda <pnagda@codeaurora.org>2020-08-10 19:09:55 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2020-08-11 02:11:00 -0700
commit53ca46dc4c5a94ba3586bfacdc98a741db16977b (patch)
tree4195a740f5de2c71337d4569711b5577271c1c58
parent33297dfdc8ce7b00e84297a135f289938fe7f568 (diff)
mm-video: vidc: Add support to set control for LowLatency
Add support at setConfig level to configure decoder low latency mode. Change-Id: I54f2f88d8edbf6d1ad87ae7c1a4c873d8f86e35a
-rw-r--r--mm-core/inc/OMX_IndexExt.h1
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp17
2 files changed, 18 insertions, 0 deletions
diff --git a/mm-core/inc/OMX_IndexExt.h b/mm-core/inc/OMX_IndexExt.h
index 60e515c0..837c9f1d 100644
--- a/mm-core/inc/OMX_IndexExt.h
+++ b/mm-core/inc/OMX_IndexExt.h
@@ -98,6 +98,7 @@ typedef enum OMX_INDEXEXTTYPE {
OMX_IndexConfigOperatingRate, /**< reference: OMX_PARAM_U32TYPE in Q16 format for video and in Hz for audio */
OMX_IndexParamConsumerUsageBits, /**< reference: OMX_PARAM_U32TYPE */
OMX_IndexConfigLatency, /**< reference: OMX_PARAM_U32TYPE */
+ OMX_IndexConfigLowLatency, /**< reference: OMX_CONFIG_BOOLEANTYPE */
OMX_IndexExtOtherEndUnused,
/* Time configurations */
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 98cffcc5..ccc39748 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -5626,6 +5626,23 @@ OMX_ERRORTYPE omx_vdec::set_config(OMX_IN OMX_HANDLETYPE hComp,
VALIDATE_OMX_VENDOR_EXTENSION_PARAM_DATA(ext);
return set_vendor_extension_config(ext);
+ } else if ((int)configIndex == (int)OMX_IndexConfigLowLatency) {
+ OMX_CONFIG_BOOLEANTYPE *lowLatency = (OMX_CONFIG_BOOLEANTYPE *)configData;
+ DEBUG_PRINT_LOW("Set_config: low-latency %u",(uint32_t)lowLatency->bEnabled);
+ struct v4l2_control control;
+ control.id = V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE;
+ if (lowLatency->bEnabled) {
+ control.value = V4L2_MPEG_MSM_VIDC_ENABLE;
+ } else {
+ control.value = V4L2_MPEG_MSM_VIDC_DISABLE;
+ }
+ if (ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
+ DEBUG_PRINT_ERROR("Set low latency failed");
+ ret = OMX_ErrorUnsupportedSetting;
+ } else {
+ m_sParamLowLatency.bEnableLowLatencyMode = lowLatency->bEnabled;
+ }
+ return ret;
}
return OMX_ErrorNotImplemented;