summaryrefslogtreecommitdiff
path: root/msm8974
diff options
context:
space:
mode:
authorPraveen Chavan <pchavan@codeaurora.org>2016-06-20 00:24:25 -0700
committerWei Jia <wjia@google.com>2016-07-13 16:53:11 -0700
commit0442f2ca1a72c6a6c6fea429fafff88cddbf50cc (patch)
treebf1e16def32a7407401ebe780ca963964f0dd704 /msm8974
parent4d6b67cc3635ba357edbafb611c23b4d1ccd4812 (diff)
downloadmedia-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.h1
-rw-r--r--msm8974/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp6
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: