diff options
author | Yadav Anamika <anamik@codeaurora.org> | 2015-08-17 16:55:56 +0530 |
---|---|---|
committer | Yadav Anamika <anamik@codeaurora.org> | 2015-08-18 14:43:46 +0530 |
commit | 72acb7fe9f3d61ae54f62789bcf93b7ac6a01472 (patch) | |
tree | 65eb4197056a04a788c7d8c136437e21e5bec6b7 /mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp | |
parent | 382b5b7c884293b2bececb636e69b5a104f138c7 (diff) | |
parent | b266f81c65e2f4ddacb0c78cb3a49d8121d4574b (diff) | |
download | android_hardware_qcom_media-72acb7fe9f3d61ae54f62789bcf93b7ac6a01472.tar.gz android_hardware_qcom_media-72acb7fe9f3d61ae54f62789bcf93b7ac6a01472.tar.bz2 android_hardware_qcom_media-72acb7fe9f3d61ae54f62789bcf93b7ac6a01472.zip |
Merge commit 'b266f81c65e2f4ddacb0c78cb3a49d8121d4574b' into remote branch.
Conflicts:
mm-core/inc/OMX_QCOMExtns.h
Change-Id: I0cf042156b98b4c81876d046404dbf4c13c57e74
Diffstat (limited to 'mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp')
-rw-r--r-- | mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp index 217d3a07..e5571ca9 100644 --- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp +++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp @@ -1941,6 +1941,16 @@ bool venc_dev::venc_set_param(void *paramData, OMX_INDEXTYPE index) } break; } + case OMX_QcomIndexConfigVideoVencLowLatencyMode: + { + QOMX_ENABLETYPE *pParam = (QOMX_ENABLETYPE*)paramData; + + if (!venc_set_lowlatency_mode(pParam->bEnable)) { + DEBUG_PRINT_ERROR("Setting low latency mode failed"); + return OMX_ErrorUnsupportedSetting; + } + break; + } case OMX_IndexParamVideoSliceFMO: default: DEBUG_PRINT_ERROR("ERROR: Unsupported parameter in venc_set_param: %u", @@ -3665,7 +3675,8 @@ bool venc_dev::venc_set_intra_period(OMX_U32 nPFrames, OMX_U32 nBFrames) DEBUG_PRINT_LOW("Success IOCTL set control for id=%d, value=%lu", control.id, intra_period.num_bframes); - if (m_sVenc_cfg.codectype == V4L2_PIX_FMT_H264) { + if (m_sVenc_cfg.codectype == V4L2_PIX_FMT_H264 || + m_sVenc_cfg.codectype == V4L2_PIX_FMT_HEVC) { control.id = V4L2_CID_MPEG_VIDC_VIDEO_IDR_PERIOD; control.value = 1; @@ -4661,6 +4672,28 @@ bool venc_dev::venc_set_max_hierp(OMX_U32 hierp_layers) } } +bool venc_dev::venc_set_lowlatency_mode(OMX_BOOL enable) +{ + int rc = 0; + struct v4l2_control control; + + control.id = V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE; + if (enable) + control.value = V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_ENABLE; + else + control.value = V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_DISABLE; + + DEBUG_PRINT_LOW("Calling IOCTL set control for id=%x, val=%d", control.id, control.value); + rc = ioctl(m_nDriver_fd, VIDIOC_S_CTRL, &control); + if (rc) { + DEBUG_PRINT_ERROR("Failed to set lowlatency control"); + return false; + } + DEBUG_PRINT_LOW("Success IOCTL set control for id=%x, value=%d", control.id, control.value); + + return true; +} + bool venc_dev::venc_set_vui_timing_info(OMX_BOOL enable) { struct v4l2_control control; |