summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrateek Shrivastava <pshrivas@codeaurora.org>2017-12-27 19:45:35 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2018-07-28 12:04:32 -0700
commit9afc6c3d07dcd9daf74d2250a3874bf83f04bc2a (patch)
tree4d689b92e85332d615c72f1b1d63a55847dffbd6
parentd81b5b698842105865cabc281648f8e9436022c1 (diff)
downloadmedia-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.h1
-rw-r--r--mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp2
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) {