mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 10:17:32 +00:00
media: venus: Helper function for dynamically updating bitrate
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> Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
This commit is contained in:
parent
a745d7acc1
commit
498375e2cb
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user