diff options
author | Paras Nagda <pnagda@codeaurora.org> | 2020-08-10 19:09:55 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-08-11 02:11:00 -0700 |
commit | 53ca46dc4c5a94ba3586bfacdc98a741db16977b (patch) | |
tree | 4195a740f5de2c71337d4569711b5577271c1c58 | |
parent | 33297dfdc8ce7b00e84297a135f289938fe7f568 (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.h | 1 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 17 |
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; |