From 0d8803d83eb7b2ce4ff2014c2322fe32ae8eb9ba Mon Sep 17 00:00:00 2001 From: Sachin Kumar Garg Date: Fri, 13 Feb 2026 14:13:34 +0530 Subject: [PATCH] video: driver: Add MBR RC support for kodiak There is no limit on the maximum level of the bit rate with the existing VBR rate control. V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control will limit the frame maximum bit rate range to the +/- 10% of the configured bit-rate value. Encoder will choose appropriate quantization parameter and do the smart bit allocation to set the frame maximum bitrate level. Change-Id: Ib81711ebc8d59fd8b7a3f7879300cb8754be0254 Signed-off-by: Sachin Kumar Garg --- driver/platform/common/src/msm_vidc_platform.c | 2 ++ driver/platform/kodiak/src/kodiak.c | 10 ++++++---- driver/vidc/inc/hfi_property.h | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/driver/platform/common/src/msm_vidc_platform.c b/driver/platform/common/src/msm_vidc_platform.c index a3d924a7..1e9169a2 100644 --- a/driver/platform/common/src/msm_vidc_platform.c +++ b/driver/platform/common/src/msm_vidc_platform.c @@ -902,6 +902,8 @@ int msm_vidc_adjust_bitrate_mode(void *instance, struct v4l2_ctrl *ctrl) hfi_value = HFI_RC_CBR_CFR; } else if (bitrate_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CQ) { hfi_value = HFI_RC_CQ; + } else if (bitrate_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_MBR) { + hfi_value = HFI_RC_MBR_CBR; } update: diff --git a/driver/platform/kodiak/src/kodiak.c b/driver/platform/kodiak/src/kodiak.c index a6071c19..23cc9fa9 100644 --- a/driver/platform/kodiak/src/kodiak.c +++ b/driver/platform/kodiak/src/kodiak.c @@ -620,9 +620,10 @@ static struct msm_platform_inst_capability instance_cap_data_kodiak_v0[] = { {BITRATE_MODE, ENC, H264, V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, + V4L2_MPEG_VIDEO_BITRATE_MODE_MBR, BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR), + BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) | + BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_MBR), V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, V4L2_CID_MPEG_VIDEO_BITRATE_MODE, HFI_PROP_RATE_CONTROL, @@ -630,10 +631,11 @@ static struct msm_platform_inst_capability instance_cap_data_kodiak_v0[] = { {BITRATE_MODE, ENC, HEVC, V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CQ, + V4L2_MPEG_VIDEO_BITRATE_MODE_MBR, BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) | - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ), + BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ) | + BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_MBR), V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, V4L2_CID_MPEG_VIDEO_BITRATE_MODE, HFI_PROP_RATE_CONTROL, diff --git a/driver/vidc/inc/hfi_property.h b/driver/vidc/inc/hfi_property.h index 617ca66f..60e00d1e 100644 --- a/driver/vidc/inc/hfi_property.h +++ b/driver/vidc/inc/hfi_property.h @@ -363,6 +363,7 @@ enum hfi_rate_control { HFI_RC_OFF = 0x00000003, HFI_RC_CBR_VFR = 0x00000004, HFI_RC_LOSSLESS = 0x00000005, + HFI_RC_MBR_CBR = 0x00000006, }; #define HFI_PROP_RATE_CONTROL 0x0300012a