From 595d428ab1ee2c78583735b9ac33e5b6c92c45cc Mon Sep 17 00:00:00 2001 From: Tapas Kumar Kundu Date: Mon, 10 Sep 2018 15:35:35 -0700 Subject: [PATCH] msm: vidc: Introducing CBR_VFR upto 480p@30fps Introducing CBR_VFR (CBR = constant bitrate, VFR = variable framerate ) upto 480p@30fps due to tighter bitrate convergence. Change-Id: I9477761f7f0936a319dc66413a28cddb619ba0cb Signed-off-by: Tapas Kumar Kundu --- drivers/media/platform/msm/vidc/msm_vidc.c | 6 ++++-- drivers/media/platform/msm/vidc/msm_vidc_clocks.c | 4 +++- drivers/media/platform/msm/vidc/msm_vidc_common.h | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/msm/vidc/msm_vidc.c b/drivers/media/platform/msm/vidc/msm_vidc.c index 23fc44e16c25..3611d95d2ebb 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc.c +++ b/drivers/media/platform/msm/vidc/msm_vidc.c @@ -925,8 +925,10 @@ int msm_vidc_set_internal_config(struct msm_vidc_inst *inst) if ((rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR || rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR_VFR) && (codec != V4L2_PIX_FMT_VP8)) { - if (rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR && - mbps < CBR_MB_LIMIT) + if ((rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR && + mbps < CBR_MB_LIMIT) || + (rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR_VFR && + mbps < CBR_VFR_MB_LIMIT)) hrd_buf_size.vbv_hdr_buf_size = 500; else hrd_buf_size.vbv_hdr_buf_size = 1000; diff --git a/drivers/media/platform/msm/vidc/msm_vidc_clocks.c b/drivers/media/platform/msm/vidc/msm_vidc_clocks.c index 0a8526b16890..2bd78df84b99 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_clocks.c +++ b/drivers/media/platform/msm/vidc/msm_vidc_clocks.c @@ -1224,7 +1224,9 @@ int msm_vidc_decide_work_route(struct msm_vidc_inst *inst) if (slice_mode == V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES || (rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR && - mbps < CBR_MB_LIMIT)) { + mbps < CBR_MB_LIMIT) || + (rc_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR_VFR && + mbps < CBR_VFR_MB_LIMIT)) { pdata.video_work_route = 1; dprintk(VIDC_DBG, "Configured work route = 1"); } diff --git a/drivers/media/platform/msm/vidc/msm_vidc_common.h b/drivers/media/platform/msm/vidc/msm_vidc_common.h index 6d329ca95012..3db2a7e135a4 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_common.h +++ b/drivers/media/platform/msm/vidc/msm_vidc_common.h @@ -24,7 +24,8 @@ #define DEFAULT_FRAME_QUALITY 80 #define FRAME_QUALITY_STEP 1 #define HEIC_GRID_DIMENSION 512 -#define CBR_MB_LIMIT (1280*720/256*30) +#define CBR_MB_LIMIT (((1280+15)/16)*((720+15)/16)*30) +#define CBR_VFR_MB_LIMIT (((640+15)/16)*((480+15)/16)*30) struct vb2_buf_entry { struct list_head list;