diff options
author | Praveen Chavan <pchavan@codeaurora.org> | 2016-06-20 00:24:25 -0700 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2016-07-13 16:53:11 -0700 |
commit | 0442f2ca1a72c6a6c6fea429fafff88cddbf50cc (patch) | |
tree | bf1e16def32a7407401ebe780ca963964f0dd704 /msm8974 | |
parent | 4d6b67cc3635ba357edbafb611c23b4d1ccd4812 (diff) | |
download | media-0442f2ca1a72c6a6c6fea429fafff88cddbf50cc.tar.gz |
mm-video-v4l2: venc: Configure intra preriod for HEVC
HEVC's main config param now supports key-frame-interval.
Use this information to configure the intra-period. i.e
configure number of P-Frames (assuming no B-frames)
Bug: 29494247
CRs-Fixed: 1023504
Change-Id: I3d2f0df3a5ab3b7d659ae58ae6f4df5898006934
Diffstat (limited to 'msm8974')
-rw-r--r-- | msm8974/mm-core/inc/OMX_VideoExt.h | 1 | ||||
-rw-r--r-- | msm8974/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/msm8974/mm-core/inc/OMX_VideoExt.h b/msm8974/mm-core/inc/OMX_VideoExt.h index 92d360a..30fe514 100644 --- a/msm8974/mm-core/inc/OMX_VideoExt.h +++ b/msm8974/mm-core/inc/OMX_VideoExt.h @@ -155,6 +155,7 @@ typedef struct OMX_VIDEO_PARAM_HEVCTYPE { OMX_U32 nPortIndex; OMX_VIDEO_HEVCPROFILETYPE eProfile; OMX_VIDEO_HEVCLEVELTYPE eLevel; + OMX_U32 nKeyFrameInterval; /* 0 => undefined. Codec-default */ } OMX_VIDEO_PARAM_HEVCTYPE; /** diff --git a/msm8974/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/msm8974/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp index b3b37d1..cd3ba9f 100644 --- a/msm8974/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp +++ b/msm8974/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp @@ -1623,6 +1623,12 @@ bool venc_dev::venc_set_param(void *paramData,OMX_INDEXTYPE index ) if (!venc_set_inloop_filter(OMX_VIDEO_AVCLoopFilterEnable)) DEBUG_PRINT_HIGH("WARN: Request for setting Inloop filter failed for HEVC encoder"); + OMX_U32 fps = m_sVenc_cfg.fps_num ? m_sVenc_cfg.fps_num / m_sVenc_cfg.fps_den : 30; + OMX_U32 nPFrames = pParam->nKeyFrameInterval > 0 ? pParam->nKeyFrameInterval - 1 : fps - 1; + if (!venc_set_intra_period (nPFrames, 0 /* nBFrames */)) { + DEBUG_PRINT_ERROR("ERROR: Request for setting intra period failed"); + return false; + } break; } case OMX_IndexParamVideoIntraRefresh: |