summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-11-30 16:17:12 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-30 16:17:12 -0800
commita08399b1c97af8b667a17ff403c06e587ab00f46 (patch)
treeee7c4efeee116fb044fa65e51893fb96cde41291
parent0e845d8be0046ea074c76dfa24ceac50e26fc2f5 (diff)
parentb57ee31689ac5714cfbdca218fd285ff3bb0d5d8 (diff)
downloadmedia-a08399b1c97af8b667a17ff403c06e587ab00f46.tar.gz
Merge "mm-video-v4l2: Allow disabling implicit B-Frames"
-rw-r--r--mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h1
-rw-r--r--mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp14
2 files changed, 10 insertions, 5 deletions
diff --git a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
index 48c0d909..9885b8c6 100644
--- a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
+++ b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
@@ -474,6 +474,7 @@ class venc_dev
bool venc_set_profile(OMX_U32 eProfile);
bool venc_set_level(OMX_U32 eLevel);
bool venc_set_intra_period(OMX_U32 nPFrames, OMX_U32 nBFrames);
+ bool _venc_set_intra_period(OMX_U32 nPFrames, OMX_U32 nBFrames);
bool venc_set_target_bitrate(OMX_U32 nTargetBitrate);
bool venc_set_ratectrl_cfg(OMX_VIDEO_CONTROLRATETYPE eControlRate);
bool venc_set_session_qp_range(OMX_QCOM_VIDEO_PARAM_IPB_QPRANGETYPE *qp_range);
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 383f20bb..f1eecbe6 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
@@ -4133,7 +4133,7 @@ bool venc_dev::venc_empty_buf(void *buffer, void *pmem_data_buf, unsigned index,
m_sVenc_cfg.inputformat != V4L2_PIX_FMT_NV12_UBWC)) {
if (bframe_implicitly_enabled) {
DEBUG_PRINT_HIGH("Disabling implicitly enabled B-frames");
- if (!venc_set_intra_period(intra_period.num_pframes, 0)) {
+ if (!_venc_set_intra_period(intra_period.num_pframes, 0)) {
DEBUG_PRINT_ERROR("Failed to set nPframes/nBframes");
return OMX_ErrorUndefined;
}
@@ -5103,16 +5103,20 @@ bool venc_dev::venc_reconfigure_intra_period()
bool venc_dev::venc_set_intra_period(OMX_U32 nPFrames, OMX_U32 nBFrames)
{
-
DEBUG_PRINT_LOW("venc_set_intra_period: nPFrames = %u, nBFrames: %u", (unsigned int)nPFrames, (unsigned int)nBFrames);
- int rc;
- struct v4l2_control control;
- char property_value[PROPERTY_VALUE_MAX] = {0};
if ((streaming[OUTPUT_PORT] || streaming[CAPTURE_PORT]) && (intra_period.num_bframes != nBFrames)) {
DEBUG_PRINT_ERROR("Invalid settings, Cannot change B frame count dynamically");
return false;
}
+ return _venc_set_intra_period(nPFrames, nBFrames);
+}
+
+bool venc_dev::_venc_set_intra_period(OMX_U32 nPFrames, OMX_U32 nBFrames)
+{
+ int rc;
+ struct v4l2_control control;
+ char property_value[PROPERTY_VALUE_MAX] = {0};
if (m_sVenc_cfg.codectype != V4L2_PIX_FMT_H264 &&
m_sVenc_cfg.codectype != V4L2_PIX_FMT_HEVC) {