Move the dynamic bitrate updating functionality to a separate function
so that it can be shared.
No functionality changes.
Signed-off-by: Fritz Koenig <frkoenig@chromium.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
drivers/media/platform/qcom/venus/venc_ctrls.c | 34 +++++++++++++++-----------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/drivers/media/platform/qcom/venus/venc_ctrls.c b/drivers/media/platform/qcom/venus/venc_ctrls.c
index d9d2a293f3ef..3e1f6f26eddf 100644
--- a/drivers/media/platform/qcom/venus/venc_ctrls.c
+++ b/drivers/media/platform/qcom/venus/venc_ctrls.c
@@ -67,12 +67,28 @@ static int venc_calc_bpframes(u32 gop_size, u32 conseq_b, u32 *bf, u32 *pf)
return 0;
}
+static int dynamic_bitrate_update(struct venus_inst *inst, u32 bitrate,
+ u32 layer_id)
+{
+ int ret = 0;
+
+ mutex_lock(&inst->lock);
+ if (inst->streamon_out && inst->streamon_cap) {
+ u32 ptype = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE;
+ struct hfi_bitrate brate = { .bitrate = bitrate, .layer_id = layer_id };
+
+ ret = hfi_session_set_property(inst, ptype, &brate);
+ }
+ mutex_unlock(&inst->lock);
+
+ return ret;
+}
+
static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl)
{
struct venus_inst *inst = ctrl_to_inst(ctrl);
struct venc_controls *ctr = &inst->controls.enc;
struct hfi_enable en = { .enable = 1 };
- struct hfi_bitrate brate;
struct hfi_ltr_use ltr_use;
struct hfi_ltr_mark ltr_mark;
u32 bframes;
@@ -85,19 +101,9 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl)
break;
case V4L2_CID_MPEG_VIDEO_BITRATE:
ctr->bitrate = ctrl->val;
- mutex_lock(&inst->lock);
- if (inst->streamon_out && inst->streamon_cap) {
- ptype = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE;
- brate.bitrate = ctr->bitrate;
- brate.layer_id = 0;
-
- ret = hfi_session_set_property(inst, ptype, &brate);
- if (ret) {
- mutex_unlock(&inst->lock);
- return ret;
- }
- }
- mutex_unlock(&inst->lock);
+ ret = dynamic_bitrate_update(inst, ctr->bitrate, 0);
+ if (ret)
+ return ret;
break;
case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
ctr->bitrate_peak = ctrl->val;
--
2.47.0.rc1.288.g06298d1525-goog
On 10/18/2024 1:34 AM, Fritz Koenig wrote: > Move the dynamic bitrate updating functionality to a separate function > so that it can be shared. > > No functionality changes. > > Signed-off-by: Fritz Koenig <frkoenig@chromium.org> > Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > drivers/media/platform/qcom/venus/venc_ctrls.c | 34 +++++++++++++++----------- > 1 file changed, 20 insertions(+), 14 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/venc_ctrls.c b/drivers/media/platform/qcom/venus/venc_ctrls.c > index d9d2a293f3ef..3e1f6f26eddf 100644 > --- a/drivers/media/platform/qcom/venus/venc_ctrls.c > +++ b/drivers/media/platform/qcom/venus/venc_ctrls.c > @@ -67,12 +67,28 @@ static int venc_calc_bpframes(u32 gop_size, u32 conseq_b, u32 *bf, u32 *pf) > return 0; > } > > +static int dynamic_bitrate_update(struct venus_inst *inst, u32 bitrate, > + u32 layer_id) > +{ > + int ret = 0; > + > + mutex_lock(&inst->lock); > + if (inst->streamon_out && inst->streamon_cap) { > + u32 ptype = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE; > + struct hfi_bitrate brate = { .bitrate = bitrate, .layer_id = layer_id }; > + > + ret = hfi_session_set_property(inst, ptype, &brate); > + } > + mutex_unlock(&inst->lock); > + > + return ret; > +} > + > static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl) > { > struct venus_inst *inst = ctrl_to_inst(ctrl); > struct venc_controls *ctr = &inst->controls.enc; > struct hfi_enable en = { .enable = 1 }; > - struct hfi_bitrate brate; > struct hfi_ltr_use ltr_use; > struct hfi_ltr_mark ltr_mark; > u32 bframes; > @@ -85,19 +101,9 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl) > break; > case V4L2_CID_MPEG_VIDEO_BITRATE: > ctr->bitrate = ctrl->val; > - mutex_lock(&inst->lock); > - if (inst->streamon_out && inst->streamon_cap) { > - ptype = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE; > - brate.bitrate = ctr->bitrate; > - brate.layer_id = 0; > - > - ret = hfi_session_set_property(inst, ptype, &brate); > - if (ret) { > - mutex_unlock(&inst->lock); > - return ret; > - } > - } > - mutex_unlock(&inst->lock); > + ret = dynamic_bitrate_update(inst, ctr->bitrate, 0); > + if (ret) > + return ret; > break; > case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK: > ctr->bitrate_peak = ctrl->val; > Reviewed-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
© 2016 - 2024 Red Hat, Inc.