diff options
author | Prateek Shrivastava <pshrivas@codeaurora.org> | 2017-12-27 19:45:35 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-07-28 12:04:32 -0700 |
commit | 9afc6c3d07dcd9daf74d2250a3874bf83f04bc2a (patch) | |
tree | 4d689b92e85332d615c72f1b1d63a55847dffbd6 | |
parent | d81b5b698842105865cabc281648f8e9436022c1 (diff) | |
download | media-9afc6c3d07dcd9daf74d2250a3874bf83f04bc2a.tar.gz |
mm-video-v4l2: venc: Reset P frame count.
When implicitly enabled B frames are disabled,
the number of P frames are set to new P frame count.
This should be set back to initial value before
implicitly enabling B frames.
Change-Id: Id91dbedda6e1c93fbceacd9045636a6413626428
-rw-r--r-- | mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h | 1 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp | 2 |
2 files changed, 3 insertions, 0 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 c22006a5..0c7ee4f8 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 @@ -406,6 +406,7 @@ class venc_dev #endif }; + int nPframes_cache; int stopped; int resume_in_stopped; bool m_max_allowed_bitrate_check; 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 3b337574..0f15a1ed 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 @@ -4177,6 +4177,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"); + intra_period.num_pframes = nPframes_cache; if (!_venc_set_intra_period(intra_period.num_pframes, 0)) { DEBUG_PRINT_ERROR("Failed to set nPframes/nBframes"); return OMX_ErrorUndefined; @@ -5097,6 +5098,7 @@ bool venc_dev::venc_reconfigure_intra_period() if (enableBframes && intra_period.num_bframes == 0) { intra_period.num_bframes = VENC_BFRAME_MAX_COUNT; + nPframes_cache = intra_period.num_pframes; intra_period.num_pframes = intra_period.num_pframes / (1 + intra_period.num_bframes); bframe_implicitly_enabled = true; } else if (!enableBframes && intra_period.num_bframes > 0) { |