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 <tkundu@codeaurora.org>
This commit is contained in:
Tapas Kumar Kundu 2018-09-10 15:35:35 -07:00
parent 9ad222c284
commit 595d428ab1
3 changed files with 9 additions and 4 deletions

View File

@ -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;

View File

@ -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");
}

View File

@ -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;