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-18 07:03:40 -0700
commit8c7562d21f571f109ce19e8805c894e274880d9d (patch)
treeef777714381f7d5cd8afc8f687b7ad9dcc03d525
parentf61da5a3d5fe3986b660df033e0f240e643f5ecc (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 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;