video: driver: Add support for CQ bitrate mode

Add CQ bitrate mode support. Also add related
constant quality control support.

Change-Id: I415423e76dc855a7a72e1b68062b9d49433f3ed3
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
Bu işleme şunda yer alıyor:
Akshata Sahukar
2021-02-08 16:06:53 -08:00
ebeveyn 0b04217dd2
işleme 691eb8dfa5
4 değiştirilmiş dosya ile 61 ekleme ve 11 silme

Dosyayı Görüntüle

@@ -27,6 +27,7 @@
#define MIN_QP_8BIT 0
#define MAX_QP 51
#define DEFAULT_QP 20
#define MAX_CONSTANT_QUALITY 100
#define UBWC_CONFIG(mc, ml, hbb, bs1, bs2, bs3, bsp) \
{ \
@@ -299,17 +300,32 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
{0}, {0},
NULL, msm_vidc_set_u32},
{BITRATE_MODE, ENC, CODECS_ALL,
{BITRATE_MODE, ENC, H264,
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
/* TODO: CQ. For more info: go/videogki */
BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR),
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0}, {LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP},
{0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC, I_FRAME_QP},
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
{BITRATE_MODE, ENC, HEVC,
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) |
BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ),
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
HFI_PROP_RATE_CONTROL,
CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
{0},
{LTR_COUNT, IR_RANDOM, TIME_DELTA_BASED_RC,
I_FRAME_QP, CONSTANT_QUALITY},
msm_vidc_adjust_bitrate_mode, msm_vidc_set_u32_enum},
{LOSSLESS, ENC, HEVC,
@@ -319,17 +335,22 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
{FRAME_SKIP_MODE, ENC, CODECS_ALL,
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
1, V4L2_MPEG_MSM_VIDC_DISABLE},
/* TODO(AS): uncomment once below v4l2 id is
* available (post 5.4 kernel)
*/
//V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE},
1, V4L2_MPEG_MSM_VIDC_DISABLE,
V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE},
{FRAME_RC_ENABLE, ENC, CODECS_ALL,
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
1, V4L2_MPEG_MSM_VIDC_ENABLE,
V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE},
{CONSTANT_QUALITY, ENC, HEVC,
1, MAX_CONSTANT_QUALITY, 1, 90,
V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
HFI_PROP_CONSTANT_QUALITY,
CAP_FLAG_OUTPUT_PORT,
{BITRATE_MODE}, {0},
NULL, msm_vidc_set_constant_quality},
// TODO: GOP dependencies
{GOP_SIZE, ENC, CODECS_ALL,
0, INT_MAX, 1, 2 * DEFAULT_FPS - 1,