Linux Media Controller development
 help / color / mirror / Atom feed
* [PATCH 0/2] add MBR type rate control for encoder
@ 2026-02-13  6:04 Sachin Kumar Garg
  2026-02-13  6:04 ` [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control Sachin Kumar Garg
  2026-02-13  6:04 ` [PATCH 2/2] media: iris: add new rate control type MBR for encoder Sachin Kumar Garg
  0 siblings, 2 replies; 12+ messages in thread
From: Sachin Kumar Garg @ 2026-02-13  6:04 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Vikash Garodia, Dikshita Agarwal,
	Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm, Sachin Kumar Garg

This series adds the support for MBR rate control type in the
Iris driver.
The changes include:
- Add MBR Rate Control definition in the v4l2-ctrl.
- Add MBR Documentation in the v4l2-ctrl.
- Add MBR RC handling in the Iris driver for sc7280.

I have validated this series on sc7280 using the below test application
by setting the BitRateMode control to V4L2_MPEG_VIDEO_BITRATE_MODE_MBR:
https://github.com/quic/v4l-video-test-app

Signed-off-by: Sachin Kumar Garg <sachin.garg@oss.qualcomm.com>
---
Sachin Kumar Garg (2):
      media: v4l2-ctrls: add encoder maximum bitrate control
      media: iris: add new rate control type MBR for encoder

 .../userspace-api/media/v4l/ext-ctrls-codec.rst    |   7 +
 drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
 .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
 .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
 .../platform/qcom/iris/iris_platform_sc7280.h      | 202 +++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ctrls-defs.c          |   1 +
 include/uapi/linux/v4l2-controls.h                 |   1 +
 7 files changed, 216 insertions(+), 7 deletions(-)
---
base-commit: c824345288d11e269ce41b36c105715bc2286050
change-id: 20260212-b4-add_sc7280_mbr-597ac615b931

Best regards,
-- 
Sachin Kumar Garg <sachin.garg@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control
  2026-02-13  6:04 [PATCH 0/2] add MBR type rate control for encoder Sachin Kumar Garg
@ 2026-02-13  6:04 ` Sachin Kumar Garg
  2026-02-13 18:04   ` kernel test robot
  2026-02-13 19:29   ` Nicolas Dufresne
  2026-02-13  6:04 ` [PATCH 2/2] media: iris: add new rate control type MBR for encoder Sachin Kumar Garg
  1 sibling, 2 replies; 12+ messages in thread
From: Sachin Kumar Garg @ 2026-02-13  6:04 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Vikash Garodia, Dikshita Agarwal,
	Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm, Sachin Kumar Garg

Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control for Encoder.
Encoder will choose appropriate quantization parameter and do the
smart bit allocation to set the frame maximum bitrate level as per
the Bitrate value configured.

Signed-off-by: Sachin Kumar Garg <sachin.garg@oss.qualcomm.com>
---
 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst | 7 +++++++
 drivers/media/v4l2-core/v4l2-ctrls-defs.c                 | 1 +
 include/uapi/linux/v4l2-controls.h                        | 1 +
 3 files changed, 9 insertions(+)

diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
index c8890cb5e00a..6b2dfabfc4fd 100644
--- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
+++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
@@ -577,6 +577,13 @@ enum v4l2_mpeg_video_bitrate_mode -
       - Constant bitrate
     * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CQ``
       - Constant quality
+    * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_MBR``
+      MBR Rate Control is a VBR Rate Control mode optimized for
+      surveillance video contents which has high temporal correlation
+      due to static camera positions. This Rate Control smartly identifies
+      key-frames in the scene, and allocates more bits to them to improve
+      the coding efficiency by taking advantage of high temporal
+      correlation in surveillance videos.
 
 
 
diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
index 551426c4cd01..b336171539a7 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
@@ -154,6 +154,7 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
 		"Variable Bitrate",
 		"Constant Bitrate",
 		"Constant Quality",
+		"Maximum Bitrate",
 		NULL
 	};
 	static const char * const mpeg_stream_type[] = {
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index 68dd0c4e47b2..614fc2c4c81d 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -412,6 +412,7 @@ enum v4l2_mpeg_video_bitrate_mode {
 	V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
 	V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
 	V4L2_MPEG_VIDEO_BITRATE_MODE_CQ  = 2,
+	V4L2_MPEG_VIDEO_BITRATE_MODE_MBR = 3,
 };
 #define V4L2_CID_MPEG_VIDEO_BITRATE		(V4L2_CID_CODEC_BASE+207)
 #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK	(V4L2_CID_CODEC_BASE+208)

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-02-13  6:04 [PATCH 0/2] add MBR type rate control for encoder Sachin Kumar Garg
  2026-02-13  6:04 ` [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control Sachin Kumar Garg
@ 2026-02-13  6:04 ` Sachin Kumar Garg
  2026-02-13  9:54   ` Konrad Dybcio
  1 sibling, 1 reply; 12+ messages in thread
From: Sachin Kumar Garg @ 2026-02-13  6:04 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Vikash Garodia, Dikshita Agarwal,
	Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm, Sachin Kumar Garg

Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
Encoder will choose appropriate quantization parameter and
do the smart bit allocation to set the frame maximum bitrate
level as per the Bitrate value configured.
---
 drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
 .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
 .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
 .../platform/qcom/iris/iris_platform_sc7280.h      | 202 +++++++++++++++++++++
 4 files changed, 207 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/platform/qcom/iris/iris_ctrls.c
index 3cec957580f5..dba3a4ba5d26 100644
--- a/drivers/media/platform/qcom/iris/iris_ctrls.c
+++ b/drivers/media/platform/qcom/iris/iris_ctrls.c
@@ -628,6 +628,8 @@ int iris_set_bitrate_mode_gen1(struct iris_inst *inst, enum platform_inst_fw_cap
 		rc_mode = frame_skip ? HFI_RATE_CONTROL_CBR_VFR : HFI_RATE_CONTROL_CBR_CFR;
 	else if (bitrate_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_CQ)
 		rc_mode = HFI_RATE_CONTROL_CQ;
+	else if (bitrate_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_MBR)
+		rc_mode = HFI_RATE_CONTROL_MBR;
 
 	inst->hfi_rc_type = rc_mode;
 
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h b/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h
index 42226ccee3d9..6f3688bfbf58 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h
@@ -130,6 +130,7 @@
 #define HFI_RATE_CONTROL_VBR_CFR		0x1000003
 #define HFI_RATE_CONTROL_CBR_VFR		0x1000004
 #define HFI_RATE_CONTROL_CBR_CFR		0x1000005
+#define HFI_RATE_CONTROL_MBR			0x1000006
 #define HFI_RATE_CONTROL_CQ				0x1000008
 
 #define HFI_H264_ENTROPY_CAVLC			0x1
diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/drivers/media/platform/qcom/iris/iris_platform_gen1.c
index df8e6bf9430e..286f623e60d3 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c
+++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c
@@ -15,11 +15,6 @@
 
 #include "iris_platform_sc7280.h"
 
-#define BITRATE_MIN		32000
-#define BITRATE_MAX		160000000
-#define BITRATE_PEAK_DEFAULT	(BITRATE_DEFAULT * 2)
-#define BITRATE_STEP		100
-
 static struct iris_fmt platform_fmts_sm8250_dec[] = {
 	[IRIS_FMT_H264] = {
 		.pixfmt = V4L2_PIX_FMT_H264,
@@ -419,8 +414,8 @@ const struct iris_platform_data sc7280_data = {
 	.inst_caps = &platform_inst_cap_sm8250,
 	.inst_fw_caps_dec = inst_fw_cap_sm8250_dec,
 	.inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8250_dec),
-	.inst_fw_caps_enc = inst_fw_cap_sm8250_enc,
-	.inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8250_enc),
+	.inst_fw_caps_enc = inst_fw_cap_sc7280_enc,
+	.inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sc7280_enc),
 	.tz_cp_config_data = tz_cp_config_sm8250,
 	.tz_cp_config_data_size = ARRAY_SIZE(tz_cp_config_sm8250),
 	.hw_response_timeout = HW_RESPONSE_TIMEOUT_VALUE,
diff --git a/drivers/media/platform/qcom/iris/iris_platform_sc7280.h b/drivers/media/platform/qcom/iris/iris_platform_sc7280.h
index 0ec8f334df67..3f220c4c9cc0 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_sc7280.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_sc7280.h
@@ -6,6 +6,13 @@
 #ifndef __IRIS_PLATFORM_SC7280_H__
 #define __IRIS_PLATFORM_SC7280_H__
 
+#include "iris_platform_common.h"
+
+#define BITRATE_MIN		32000
+#define BITRATE_MAX		160000000
+#define BITRATE_PEAK_DEFAULT	(BITRATE_DEFAULT * 2)
+#define BITRATE_STEP		100
+
 static const struct bw_info sc7280_bw_table_dec[] = {
 	{ ((3840 * 2160) / 256) * 60, 1896000, },
 	{ ((3840 * 2160) / 256) * 30,  968000, },
@@ -28,4 +35,199 @@ static const char * const sc7280_opp_clk_table[] = {
 	NULL,
 };
 
+static const struct platform_inst_fw_cap inst_fw_cap_sc7280_enc[] = {
+	{
+		.cap_id = STAGE,
+		.min = STAGE_1,
+		.max = STAGE_2,
+		.step_or_mask = 1,
+		.value = STAGE_2,
+		.hfi_id = HFI_PROPERTY_PARAM_WORK_MODE,
+		.set = iris_set_stage,
+	},
+	{
+		.cap_id = PROFILE_H264,
+		.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
+		.max = V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
+				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
+				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
+				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH) |
+				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH) |
+				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH),
+		.value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
+		.hfi_id = HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_profile_level_gen1,
+	},
+	{
+		.cap_id = PROFILE_HEVC,
+		.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
+		.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10),
+		.value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
+		.hfi_id = HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_profile_level_gen1,
+	},
+	{
+		.cap_id = LEVEL_H264,
+		.min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
+		.max = V4L2_MPEG_VIDEO_H264_LEVEL_5_1,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
+				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1),
+		.value = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
+		.hfi_id = HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_profile_level_gen1,
+	},
+	{
+		.cap_id = LEVEL_HEVC,
+		.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
+		.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) |
+				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2),
+		.value = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
+		.hfi_id = HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_profile_level_gen1,
+	},
+	{
+		.cap_id = HEADER_MODE,
+		.min = V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
+		.max = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) |
+				BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME),
+		.value = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
+		.hfi_id = HFI_PROPERTY_CONFIG_VENC_SYNC_FRAME_SEQUENCE_HEADER,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_header_mode_gen1,
+	},
+	{
+		.cap_id = BITRATE,
+		.min = BITRATE_MIN,
+		.max = BITRATE_MAX,
+		.step_or_mask = BITRATE_STEP,
+		.value = BITRATE_DEFAULT,
+		.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
+			CAP_FLAG_DYNAMIC_ALLOWED,
+		.set = iris_set_bitrate,
+	},
+	{
+		.cap_id = BITRATE_MODE,
+		.min = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
+		.max = V4L2_MPEG_VIDEO_BITRATE_MODE_MBR,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
+				BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) |
+				BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_MBR),
+		.value = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
+		.hfi_id = HFI_PROPERTY_PARAM_VENC_RATE_CONTROL,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_bitrate_mode_gen1,
+	},
+	{
+		.cap_id = FRAME_SKIP_MODE,
+		.min = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
+		.max = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) |
+				BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT),
+		.value = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+	},
+	{
+		.cap_id = FRAME_RC_ENABLE,
+		.min = 0,
+		.max = 1,
+		.step_or_mask = 1,
+		.value = 1,
+	},
+	{
+		.cap_id = GOP_SIZE,
+		.min = 0,
+		.max = (1 << 16) - 1,
+		.step_or_mask = 1,
+		.value = 30,
+		.set = iris_set_u32
+	},
+	{
+		.cap_id = ENTROPY_MODE,
+		.min = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
+		.max = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
+		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
+				BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
+		.value = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
+		.hfi_id = HFI_PROPERTY_PARAM_VENC_H264_ENTROPY_CONTROL,
+		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
+		.set = iris_set_entropy_mode_gen1,
+	},
+	{
+		.cap_id = MIN_FRAME_QP_H264,
+		.min = MIN_QP_8BIT,
+		.max = MAX_QP,
+		.step_or_mask = 1,
+		.value = MIN_QP_8BIT,
+		.hfi_id = HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE_V2,
+		.flags = CAP_FLAG_OUTPUT_PORT,
+		.set = iris_set_qp_range,
+	},
+	{
+		.cap_id = MIN_FRAME_QP_HEVC,
+		.min = MIN_QP_8BIT,
+		.max = MAX_QP_HEVC,
+		.step_or_mask = 1,
+		.value = MIN_QP_8BIT,
+		.hfi_id = HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE_V2,
+		.flags = CAP_FLAG_OUTPUT_PORT,
+		.set = iris_set_qp_range,
+	},
+	{
+		.cap_id = MAX_FRAME_QP_H264,
+		.min = MIN_QP_8BIT,
+		.max = MAX_QP,
+		.step_or_mask = 1,
+		.value = MAX_QP,
+		.hfi_id = HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE_V2,
+		.flags = CAP_FLAG_OUTPUT_PORT,
+		.set = iris_set_qp_range,
+	},
+	{
+		.cap_id = MAX_FRAME_QP_HEVC,
+		.min = MIN_QP_8BIT,
+		.max = MAX_QP_HEVC,
+		.step_or_mask = 1,
+		.value = MAX_QP_HEVC,
+		.hfi_id = HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE_V2,
+		.flags = CAP_FLAG_OUTPUT_PORT,
+		.set = iris_set_qp_range,
+	},
+};
+
 #endif

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-02-13  6:04 ` [PATCH 2/2] media: iris: add new rate control type MBR for encoder Sachin Kumar Garg
@ 2026-02-13  9:54   ` Konrad Dybcio
  2026-03-16  6:22     ` Sachin Kumar Garg
  0 siblings, 1 reply; 12+ messages in thread
From: Konrad Dybcio @ 2026-02-13  9:54 UTC (permalink / raw)
  To: Sachin Kumar Garg, Mauro Carvalho Chehab, Vikash Garodia,
	Dikshita Agarwal, Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm

On 2/13/26 7:04 AM, Sachin Kumar Garg wrote:
> Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
> Encoder will choose appropriate quantization parameter and
> do the smart bit allocation to set the frame maximum bitrate
> level as per the Bitrate value configured.
> ---
>  drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
>  .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
>  .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
>  .../platform/qcom/iris/iris_platform_sc7280.h      | 202 +++++++++++++++++++++

Is this really only available on 7280?

Konrad

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control
  2026-02-13  6:04 ` [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control Sachin Kumar Garg
@ 2026-02-13 18:04   ` kernel test robot
  2026-02-13 19:29   ` Nicolas Dufresne
  1 sibling, 0 replies; 12+ messages in thread
From: kernel test robot @ 2026-02-13 18:04 UTC (permalink / raw)
  To: Sachin Kumar Garg, Mauro Carvalho Chehab, Vikash Garodia,
	Dikshita Agarwal, Abhinav Kumar, Bryan O'Donoghue
  Cc: oe-kbuild-all, linux-media, linux-kernel, linux-arm-msm,
	Sachin Kumar Garg

Hi Sachin,

kernel test robot noticed the following build errors:

[auto build test ERROR on c824345288d11e269ce41b36c105715bc2286050]

url:    https://github.com/intel-lab-lkp/linux/commits/Sachin-Kumar-Garg/media-v4l2-ctrls-add-encoder-maximum-bitrate-control/20260213-180753
base:   c824345288d11e269ce41b36c105715bc2286050
patch link:    https://lore.kernel.org/r/20260213-b4-add_sc7280_mbr-v1-1-e8d95b4e4809%40oss.qualcomm.com
patch subject: [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
docutils: docutils (Docutils 0.21.2, Python 3.13.5, on linux)
reproduce: (https://download.01.org/0day-ci/archive/20260213/202602131921.PUY3mqyw-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602131921.PUY3mqyw-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   The parent of level 2 sections cannot be reached. The parser is at section level 2 but the current node has only 0 parent section(s).
   One reason may be a high level section used in a directive that parses its content into a base node not attached to the document
   (up to Docutils 0.21, these sections were silently dropped). [docutils]
   WARNING: ./net/bridge/br_private.h:267 struct member 'tunnel_hash' not described in 'net_bridge_vlan_group'
>> Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst:581: WARNING: Bullet list ends without a blank line; unexpected unindent. [docutils]
>> Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst:570: ERROR: Error parsing content block for the "flat-table" directive: two-level bullet list expected, but row 4 does not contain a second-level bullet list.


vim +570 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst

4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  561  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  562  ``V4L2_CID_MPEG_VIDEO_BITRATE_MODE``
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  563      (enum)
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  564  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  565  enum v4l2_mpeg_video_bitrate_mode -
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  566      Video bitrate mode. Possible values are:
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  567  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  568  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  569  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08 @570  .. flat-table::
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  571      :header-rows:  0
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  572      :stub-columns: 0
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  573  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  574      * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_VBR``
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  575        - Variable bitrate
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  576      * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CBR``
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  577        - Constant bitrate
4ad1b0d410c88c Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Maheshwar Ajja    2020-05-23  578      * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CQ``
4ad1b0d410c88c Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Maheshwar Ajja    2020-05-23  579        - Constant quality
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13  580      * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_MBR``
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13 @581        MBR Rate Control is a VBR Rate Control mode optimized for
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13  582        surveillance video contents which has high temporal correlation
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13  583        due to static camera positions. This Rate Control smartly identifies
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13  584        key-frames in the scene, and allocates more bits to them to improve
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13  585        the coding efficiency by taking advantage of high temporal
9e046466b28d68 Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst Sachin Kumar Garg 2026-02-13  586        correlation in surveillance videos.
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  587  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  588  
4f14e3272f1ca1 Documentation/media/uapi/v4l/ext-ctrls-codec.rst          Hans Verkuil      2019-02-08  589  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control
  2026-02-13  6:04 ` [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control Sachin Kumar Garg
  2026-02-13 18:04   ` kernel test robot
@ 2026-02-13 19:29   ` Nicolas Dufresne
  2026-03-16  6:18     ` Sachin Kumar Garg
  1 sibling, 1 reply; 12+ messages in thread
From: Nicolas Dufresne @ 2026-02-13 19:29 UTC (permalink / raw)
  To: Sachin Kumar Garg, Mauro Carvalho Chehab, Vikash Garodia,
	Dikshita Agarwal, Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm

[-- Attachment #1: Type: text/plain, Size: 3029 bytes --]

Le vendredi 13 février 2026 à 11:34 +0530, Sachin Kumar Garg a écrit :
> Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control for Encoder.
> Encoder will choose appropriate quantization parameter and do the
> smart bit allocation to set the frame maximum bitrate level as per
> the Bitrate value configured.
> 
> Signed-off-by: Sachin Kumar Garg <sachin.garg@oss.qualcomm.com>
> ---
>  Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst | 7 +++++++
>  drivers/media/v4l2-core/v4l2-ctrls-defs.c                 | 1 +
>  include/uapi/linux/v4l2-controls.h                        | 1 +
>  3 files changed, 9 insertions(+)
> 
> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
> b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
> index c8890cb5e00a..6b2dfabfc4fd 100644
> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
> @@ -577,6 +577,13 @@ enum v4l2_mpeg_video_bitrate_mode -
>        - Constant bitrate
>      * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CQ``
>        - Constant quality
> +    * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_MBR``
> +      MBR Rate Control is a VBR Rate Control mode optimized for
> +      surveillance video contents which has high temporal correlation
> +      due to static camera positions. This Rate Control smartly identifies
> +      key-frames in the scene, and allocates more bits to them to improve
> +      the coding efficiency by taking advantage of high temporal
> +      correlation in surveillance videos.

This is a bit vague, and it sounds like how you'd describe a proprietary thing.
Are you sure this is a generic mode that other vendors will support ? If not,
perhaps it should be visible in the API ?

Nicolas

>  
>  
>  
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-
> core/v4l2-ctrls-defs.c
> index 551426c4cd01..b336171539a7 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> @@ -154,6 +154,7 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>  		"Variable Bitrate",
>  		"Constant Bitrate",
>  		"Constant Quality",
> +		"Maximum Bitrate",
>  		NULL
>  	};
>  	static const char * const mpeg_stream_type[] = {
> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-
> controls.h
> index 68dd0c4e47b2..614fc2c4c81d 100644
> --- a/include/uapi/linux/v4l2-controls.h
> +++ b/include/uapi/linux/v4l2-controls.h
> @@ -412,6 +412,7 @@ enum v4l2_mpeg_video_bitrate_mode {
>  	V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
>  	V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
>  	V4L2_MPEG_VIDEO_BITRATE_MODE_CQ  = 2,
> +	V4L2_MPEG_VIDEO_BITRATE_MODE_MBR = 3,
>  };
>  #define V4L2_CID_MPEG_VIDEO_BITRATE		(V4L2_CID_CODEC_BASE+207)
>  #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK	(V4L2_CID_CODEC_BASE+208)

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control
  2026-02-13 19:29   ` Nicolas Dufresne
@ 2026-03-16  6:18     ` Sachin Kumar Garg
  0 siblings, 0 replies; 12+ messages in thread
From: Sachin Kumar Garg @ 2026-03-16  6:18 UTC (permalink / raw)
  To: Nicolas Dufresne, Mauro Carvalho Chehab, Vikash Garodia,
	Dikshita Agarwal, Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm



On 2/14/2026 12:59 AM, Nicolas Dufresne wrote:
> Le vendredi 13 février 2026 à 11:34 +0530, Sachin Kumar Garg a écrit :
>> Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control for Encoder.
>> Encoder will choose appropriate quantization parameter and do the
>> smart bit allocation to set the frame maximum bitrate level as per
>> the Bitrate value configured.
>>
>> Signed-off-by: Sachin Kumar Garg <sachin.garg@oss.qualcomm.com>
>> ---
>>   Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst | 7 +++++++
>>   drivers/media/v4l2-core/v4l2-ctrls-defs.c                 | 1 +
>>   include/uapi/linux/v4l2-controls.h                        | 1 +
>>   3 files changed, 9 insertions(+)
>>
>> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
>> b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
>> index c8890cb5e00a..6b2dfabfc4fd 100644
>> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
>> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
>> @@ -577,6 +577,13 @@ enum v4l2_mpeg_video_bitrate_mode -
>>         - Constant bitrate
>>       * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_CQ``
>>         - Constant quality
>> +    * - ``V4L2_MPEG_VIDEO_BITRATE_MODE_MBR``
>> +      MBR Rate Control is a VBR Rate Control mode optimized for
>> +      surveillance video contents which has high temporal correlation
>> +      due to static camera positions. This Rate Control smartly identifies
>> +      key-frames in the scene, and allocates more bits to them to improve
>> +      the coding efficiency by taking advantage of high temporal
>> +      correlation in surveillance videos.
> 
> This is a bit vague, and it sounds like how you'd describe a proprietary thing.
> Are you sure this is a generic mode that other vendors will support ? If not,
> perhaps it should be visible in the API ?
> 
> Nicolas

Hi Nicolas, sorry for the late reply — we were aligning internally on 
the exact behavior and naming. This is Qualcomm defined Rate control. 
This is mainly useful for very low bitrate / high temporal-correlation 
content (e.g., static camera).
If the consensus is that this is not generic enough across vendors, we 
can instead expose it as a driver-specific control rather than a new 
global V4L2 bitrate mode.

Thanks,
Sachin

> 
>>   
>>   
>>   
>> diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-
>> core/v4l2-ctrls-defs.c
>> index 551426c4cd01..b336171539a7 100644
>> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
>> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
>> @@ -154,6 +154,7 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
>>   		"Variable Bitrate",
>>   		"Constant Bitrate",
>>   		"Constant Quality",
>> +		"Maximum Bitrate",
>>   		NULL
>>   	};
>>   	static const char * const mpeg_stream_type[] = {
>> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-
>> controls.h
>> index 68dd0c4e47b2..614fc2c4c81d 100644
>> --- a/include/uapi/linux/v4l2-controls.h
>> +++ b/include/uapi/linux/v4l2-controls.h
>> @@ -412,6 +412,7 @@ enum v4l2_mpeg_video_bitrate_mode {
>>   	V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
>>   	V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
>>   	V4L2_MPEG_VIDEO_BITRATE_MODE_CQ  = 2,
>> +	V4L2_MPEG_VIDEO_BITRATE_MODE_MBR = 3,
>>   };
>>   #define V4L2_CID_MPEG_VIDEO_BITRATE		(V4L2_CID_CODEC_BASE+207)
>>   #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK	(V4L2_CID_CODEC_BASE+208)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-02-13  9:54   ` Konrad Dybcio
@ 2026-03-16  6:22     ` Sachin Kumar Garg
  2026-03-16 17:37       ` Nicolas Dufresne
  0 siblings, 1 reply; 12+ messages in thread
From: Sachin Kumar Garg @ 2026-03-16  6:22 UTC (permalink / raw)
  To: Konrad Dybcio, Mauro Carvalho Chehab, Vikash Garodia,
	Dikshita Agarwal, Abhinav Kumar, Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm



On 2/13/2026 3:24 PM, Konrad Dybcio wrote:
> On 2/13/26 7:04 AM, Sachin Kumar Garg wrote:
>> Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
>> Encoder will choose appropriate quantization parameter and
>> do the smart bit allocation to set the frame maximum bitrate
>> level as per the Bitrate value configured.
>> ---
>>   drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
>>   .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
>>   .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
>>   .../platform/qcom/iris/iris_platform_sc7280.h      | 202 +++++++++++++++++++++
> 
> Is this really only available on 7280?
> 
> Konrad

Yes Konrad, in this series we enable V4L2_MPEG_VIDEO_BITRATE_MODE_MBR 
only for SC7280 because currently, we have added the support only for 
low tier chipset. MBR rate control aims to improve the compression 
efficiency of encoder for static and low motion scenes for extremely low 
bitrate use-case.

Thanks,
Sachin


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-03-16  6:22     ` Sachin Kumar Garg
@ 2026-03-16 17:37       ` Nicolas Dufresne
  2026-03-16 18:47         ` Dmitry Baryshkov
  0 siblings, 1 reply; 12+ messages in thread
From: Nicolas Dufresne @ 2026-03-16 17:37 UTC (permalink / raw)
  To: Sachin Kumar Garg, Konrad Dybcio, Mauro Carvalho Chehab,
	Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
	Bryan O'Donoghue
  Cc: linux-media, linux-kernel, linux-arm-msm

[-- Attachment #1: Type: text/plain, Size: 1408 bytes --]

Le lundi 16 mars 2026 à 11:52 +0530, Sachin Kumar Garg a écrit :
> 
> 
> On 2/13/2026 3:24 PM, Konrad Dybcio wrote:
> > On 2/13/26 7:04 AM, Sachin Kumar Garg wrote:
> > > Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
> > > Encoder will choose appropriate quantization parameter and
> > > do the smart bit allocation to set the frame maximum bitrate
> > > level as per the Bitrate value configured.
> > > ---
> > >   drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
> > >   .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
> > >   .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
> > >   .../platform/qcom/iris/iris_platform_sc7280.h      | 202
> > > +++++++++++++++++++++
> > 
> > Is this really only available on 7280?
> > 
> > Konrad
> 
> Yes Konrad, in this series we enable V4L2_MPEG_VIDEO_BITRATE_MODE_MBR 
> only for SC7280 because currently, we have added the support only for 
> low tier chipset. MBR rate control aims to improve the compression 
> efficiency of encoder for static and low motion scenes for extremely low 
> bitrate use-case.

Without a spec definition, which constrained the implementations toward
interoperability, this needs to be made vendor specific. That being said, even
as vendor specific control, I think it deserves more documentation for your
users.

Nicolas

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-03-16 17:37       ` Nicolas Dufresne
@ 2026-03-16 18:47         ` Dmitry Baryshkov
  2026-03-30  5:44           ` Sachin Kumar Garg
  0 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2026-03-16 18:47 UTC (permalink / raw)
  To: Nicolas Dufresne
  Cc: Sachin Kumar Garg, Konrad Dybcio, Mauro Carvalho Chehab,
	Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
	Bryan O'Donoghue, linux-media, linux-kernel, linux-arm-msm

On Mon, Mar 16, 2026 at 01:37:21PM -0400, Nicolas Dufresne wrote:
> Le lundi 16 mars 2026 à 11:52 +0530, Sachin Kumar Garg a écrit :
> > 
> > 
> > On 2/13/2026 3:24 PM, Konrad Dybcio wrote:
> > > On 2/13/26 7:04 AM, Sachin Kumar Garg wrote:
> > > > Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
> > > > Encoder will choose appropriate quantization parameter and
> > > > do the smart bit allocation to set the frame maximum bitrate
> > > > level as per the Bitrate value configured.
> > > > ---
> > > >   drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
> > > >   .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
> > > >   .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
> > > >   .../platform/qcom/iris/iris_platform_sc7280.h      | 202
> > > > +++++++++++++++++++++
> > > 
> > > Is this really only available on 7280?
> > > 
> > > Konrad
> > 
> > Yes Konrad, in this series we enable V4L2_MPEG_VIDEO_BITRATE_MODE_MBR 
> > only for SC7280 because currently, we have added the support only for 
> > low tier chipset. MBR rate control aims to improve the compression 
> > efficiency of encoder for static and low motion scenes for extremely low 
> > bitrate use-case.
> 
> Without a spec definition, which constrained the implementations toward
> interoperability, this needs to be made vendor specific. That being said, even
> as vendor specific control, I think it deserves more documentation for your
> users.

What kind of documentation would be a better fit for keeping this in the
generic namespace? Frankly speaking, I think that the current
documentation is too vendor-specific, it describe the particular
algorithm, while the control seems to be more generic. However, I also
feel that defining it as "Maximum Bitrate" might not be specific enough
(nor would it show a difference from the CBR mode).


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-03-16 18:47         ` Dmitry Baryshkov
@ 2026-03-30  5:44           ` Sachin Kumar Garg
  2026-07-07  7:02             ` Vikash Garodia
  0 siblings, 1 reply; 12+ messages in thread
From: Sachin Kumar Garg @ 2026-03-30  5:44 UTC (permalink / raw)
  To: Dmitry Baryshkov, Nicolas Dufresne
  Cc: Konrad Dybcio, Mauro Carvalho Chehab, Vikash Garodia,
	Dikshita Agarwal, Abhinav Kumar, Bryan O'Donoghue,
	linux-media, linux-kernel, linux-arm-msm



On 3/17/2026 12:17 AM, Dmitry Baryshkov wrote:
> On Mon, Mar 16, 2026 at 01:37:21PM -0400, Nicolas Dufresne wrote:
>> Le lundi 16 mars 2026 à 11:52 +0530, Sachin Kumar Garg a écrit :
>>>
>>>
>>> On 2/13/2026 3:24 PM, Konrad Dybcio wrote:
>>>> On 2/13/26 7:04 AM, Sachin Kumar Garg wrote:
>>>>> Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
>>>>> Encoder will choose appropriate quantization parameter and
>>>>> do the smart bit allocation to set the frame maximum bitrate
>>>>> level as per the Bitrate value configured.
>>>>> ---
>>>>>    drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
>>>>>    .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
>>>>>    .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
>>>>>    .../platform/qcom/iris/iris_platform_sc7280.h      | 202
>>>>> +++++++++++++++++++++
>>>>
>>>> Is this really only available on 7280?
>>>>
>>>> Konrad
>>>
>>> Yes Konrad, in this series we enable V4L2_MPEG_VIDEO_BITRATE_MODE_MBR
>>> only for SC7280 because currently, we have added the support only for
>>> low tier chipset. MBR rate control aims to improve the compression
>>> efficiency of encoder for static and low motion scenes for extremely low
>>> bitrate use-case.
>>
>> Without a spec definition, which constrained the implementations toward
>> interoperability, this needs to be made vendor specific. That being said, even
>> as vendor specific control, I think it deserves more documentation for your
>> users.
> 
> What kind of documentation would be a better fit for keeping this in the
> generic namespace? Frankly speaking, I think that the current
> documentation is too vendor-specific, it describe the particular
> algorithm, while the control seems to be more generic. However, I also
> feel that defining it as "Maximum Bitrate" might not be specific enough
> (nor would it show a difference from the CBR mode).
> 
> 
Thanks for the suggestion.
I understand that this functionality is vendor-specific and should not 
be exposed via a generic control. Would it be acceptable to convert this 
into a vendor-specific control (for example, 
V4L2_MPEG_VIDEO_BITRATE_MODE_QCOM_MBR) and update the documentation 
accordingly?
Please let me know if this aligns with upstream expectations, or can you 
please suggest if there is any other preferred approach for adding 
vendor-specific controls in this case.

Thanks,
Sachin

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] media: iris: add new rate control type MBR for encoder
  2026-03-30  5:44           ` Sachin Kumar Garg
@ 2026-07-07  7:02             ` Vikash Garodia
  0 siblings, 0 replies; 12+ messages in thread
From: Vikash Garodia @ 2026-07-07  7:02 UTC (permalink / raw)
  To: Sachin Kumar Garg, Dmitry Baryshkov, Nicolas Dufresne
  Cc: Konrad Dybcio, Mauro Carvalho Chehab, Dikshita Agarwal,
	Abhinav Kumar, Bryan O'Donoghue, linux-media, linux-kernel,
	linux-arm-msm


On 3/30/2026 11:14 AM, Sachin Kumar Garg wrote:
> 
> 
> On 3/17/2026 12:17 AM, Dmitry Baryshkov wrote:
>> On Mon, Mar 16, 2026 at 01:37:21PM -0400, Nicolas Dufresne wrote:
>>> Le lundi 16 mars 2026 à 11:52 +0530, Sachin Kumar Garg a écrit :
>>>>
>>>>
>>>> On 2/13/2026 3:24 PM, Konrad Dybcio wrote:
>>>>> On 2/13/26 7:04 AM, Sachin Kumar Garg wrote:
>>>>>> Introduce V4L2_MPEG_VIDEO_BITRATE_MODE_MBR rate control to Encoder.
>>>>>> Encoder will choose appropriate quantization parameter and
>>>>>> do the smart bit allocation to set the frame maximum bitrate
>>>>>> level as per the Bitrate value configured.
>>>>>> ---
>>>>>>    drivers/media/platform/qcom/iris/iris_ctrls.c      |   2 +
>>>>>>    .../platform/qcom/iris/iris_hfi_gen1_defines.h     |   1 +
>>>>>>    .../media/platform/qcom/iris/iris_platform_gen1.c  |   9 +-
>>>>>>    .../platform/qcom/iris/iris_platform_sc7280.h      | 202
>>>>>> +++++++++++++++++++++
>>>>>
>>>>> Is this really only available on 7280?
>>>>>
>>>>> Konrad
>>>>
>>>> Yes Konrad, in this series we enable V4L2_MPEG_VIDEO_BITRATE_MODE_MBR
>>>> only for SC7280 because currently, we have added the support only for
>>>> low tier chipset. MBR rate control aims to improve the compression
>>>> efficiency of encoder for static and low motion scenes for extremely 
>>>> low
>>>> bitrate use-case.
>>>
>>> Without a spec definition, which constrained the implementations toward
>>> interoperability, this needs to be made vendor specific. That being 
>>> said, even
>>> as vendor specific control, I think it deserves more documentation 
>>> for your
>>> users.
>>
>> What kind of documentation would be a better fit for keeping this in the
>> generic namespace? Frankly speaking, I think that the current
>> documentation is too vendor-specific, it describe the particular
>> algorithm, while the control seems to be more generic. However, I also
>> feel that defining it as "Maximum Bitrate" might not be specific enough
>> (nor would it show a difference from the CBR mode).
>>
>>
> Thanks for the suggestion.
> I understand that this functionality is vendor-specific and should not 
> be exposed via a generic control. Would it be acceptable to convert this 
> into a vendor-specific control (for example, 
> V4L2_MPEG_VIDEO_BITRATE_MODE_QCOM_MBR) and update the documentation 
> accordingly?
> Please let me know if this aligns with upstream expectations, or can you 
> please suggest if there is any other preferred approach for adding 
> vendor-specific controls in this case.

I discussed this with Hans during embedded conference on handling vendor 
specific controls. His suggestion was that vendor can define a reserve 
for 16/32/64 controls, something similar to [1], for cases like this 
which seems quite vendor specific handling to me.

[1] 
https://github.com/torvalds/linux/blob/0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53/include/uapi/linux/v4l2-controls.h#L235

Regards,
Vikash

> 
> Thanks,
> Sachin


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-07-07  7:02 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-13  6:04 [PATCH 0/2] add MBR type rate control for encoder Sachin Kumar Garg
2026-02-13  6:04 ` [PATCH 1/2] media: v4l2-ctrls: add encoder maximum bitrate control Sachin Kumar Garg
2026-02-13 18:04   ` kernel test robot
2026-02-13 19:29   ` Nicolas Dufresne
2026-03-16  6:18     ` Sachin Kumar Garg
2026-02-13  6:04 ` [PATCH 2/2] media: iris: add new rate control type MBR for encoder Sachin Kumar Garg
2026-02-13  9:54   ` Konrad Dybcio
2026-03-16  6:22     ` Sachin Kumar Garg
2026-03-16 17:37       ` Nicolas Dufresne
2026-03-16 18:47         ` Dmitry Baryshkov
2026-03-30  5:44           ` Sachin Kumar Garg
2026-07-07  7:02             ` Vikash Garodia

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox