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-18 07:03:40 -0700 |
commit | 8c7562d21f571f109ce19e8805c894e274880d9d (patch) | |
tree | ef777714381f7d5cd8afc8f687b7ad9dcc03d525 | |
parent | f61da5a3d5fe3986b660df033e0f240e643f5ecc (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 1a326108..cc584cd3 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; |