From: dikshita@codeaurora.org
To: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: linux-media@vger.kernel.org, nicolas@ndufresne.ca,
stanimir.varbanov@linaro.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org, vgarodia@codeaurora.org
Subject: Re: [PATCH v3 3/3] venus: venc: Add support for frame-specific min/max qp controls
Date: Tue, 08 Dec 2020 22:07:35 +0530 [thread overview]
Message-ID: <445dd26796e2242666e5256e7e36bcbe@codeaurora.org> (raw)
In-Reply-To: <a5f99684-54ff-6d09-eeb7-4748ed3c3271@xs4all.nl>
On 2020-12-02 19:06, Hans Verkuil wrote:
> On 18/11/2020 07:54, Dikshita Agarwal wrote:
>> Add support for frame type specific min and max qp controls
>> for encoder.
>>
>> Signed-off-by: Dikshita Agarwal <dikshita@codeaurora.org>
>> ---
>> drivers/media/platform/qcom/venus/core.h | 18 +++++++++
>> drivers/media/platform/qcom/venus/venc.c | 21 ++++++++---
>> drivers/media/platform/qcom/venus/venc_ctrls.c | 51
>> ++++++++++++++++++++++++++
>> 3 files changed, 85 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/media/platform/qcom/venus/core.h
>> b/drivers/media/platform/qcom/venus/core.h
>> index 3bc129a..6a764c9 100644
>> --- a/drivers/media/platform/qcom/venus/core.h
>> +++ b/drivers/media/platform/qcom/venus/core.h
>> @@ -230,10 +230,28 @@ struct venc_controls {
>> u32 h264_b_qp;
>> u32 h264_min_qp;
>> u32 h264_max_qp;
>> + u32 h264_i_min_qp;
>> + u32 h264_i_max_qp;
>> + u32 h264_p_min_qp;
>> + u32 h264_p_max_qp;
>> + u32 h264_b_min_qp;
>> + u32 h264_b_max_qp;
>> u32 h264_loop_filter_mode;
>> s32 h264_loop_filter_alpha;
>> s32 h264_loop_filter_beta;
>>
>> + u32 hevc_i_qp;
>> + u32 hevc_p_qp;
>> + u32 hevc_b_qp;
>> + u32 hevc_min_qp;
>> + u32 hevc_max_qp;
>> + u32 hevc_i_min_qp;
>> + u32 hevc_i_max_qp;
>> + u32 hevc_p_min_qp;
>> + u32 hevc_p_max_qp;
>> + u32 hevc_b_min_qp;
>> + u32 hevc_b_max_qp;
>> +
>> u32 vp8_min_qp;
>> u32 vp8_max_qp;
>>
>> diff --git a/drivers/media/platform/qcom/venus/venc.c
>> b/drivers/media/platform/qcom/venus/venc.c
>> index 0bf92cc..f2f5a85 100644
>> --- a/drivers/media/platform/qcom/venus/venc.c
>> +++ b/drivers/media/platform/qcom/venus/venc.c
>> @@ -668,17 +668,28 @@ static int venc_set_properties(struct venus_inst
>> *inst)
>> return ret;
>>
>> ptype = HFI_PROPERTY_PARAM_VENC_SESSION_QP;
>> - quant.qp_i = ctr->h264_i_qp;
>> - quant.qp_p = ctr->h264_p_qp;
>> - quant.qp_b = ctr->h264_b_qp;
>> + if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_HEVC) {
>> + quant.qp_i = ctr->hevc_i_qp;
>> + quant.qp_p = ctr->hevc_p_qp;
>> + quant.qp_b = ctr->hevc_b_qp;
>> + } else {
>> + quant.qp_i = ctr->h264_i_qp;
>> + quant.qp_p = ctr->h264_p_qp;
>> + quant.qp_b = ctr->h264_b_qp;
>> + }
>> quant.layer_id = 0;
>> ret = hfi_session_set_property(inst, ptype, &quant);
>> if (ret)
>> return ret;
>>
>> ptype = HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE;
>> - quant_range.min_qp = ctr->h264_min_qp;
>> - quant_range.max_qp = ctr->h264_max_qp;
>> + if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_HEVC) {
>> + quant_range.min_qp = ctr->hevc_min_qp;
>> + quant_range.max_qp = ctr->hevc_max_qp;
>> + } else {
>> + quant_range.min_qp = ctr->h264_min_qp;
>> + quant_range.max_qp = ctr->h264_max_qp;
>> + }
>> quant_range.layer_id = 0;
>> ret = hfi_session_set_property(inst, ptype, &quant_range);
>> if (ret)
>> diff --git a/drivers/media/platform/qcom/venus/venc_ctrls.c
>> b/drivers/media/platform/qcom/venus/venc_ctrls.c
>> index 0708b3b..cd131e3 100644
>> --- a/drivers/media/platform/qcom/venus/venc_ctrls.c
>> +++ b/drivers/media/platform/qcom/venus/venc_ctrls.c
>> @@ -125,9 +125,60 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl)
>> case V4L2_CID_MPEG_VIDEO_H264_MIN_QP:
>> ctr->h264_min_qp = ctrl->val;
>> break;
>> + case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP:
>> + ctr->h264_i_min_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP:
>> + ctr->h264_p_min_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP:
>> + ctr->h264_b_min_qp = ctrl->val;
>> + break;
>> case V4L2_CID_MPEG_VIDEO_H264_MAX_QP:
>> ctr->h264_max_qp = ctrl->val;
>> break;
>> + case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP:
>> + ctr->h264_i_max_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP:
>> + ctr->h264_p_max_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP:
>> + ctr->h264_b_max_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP:
>> + ctr->hevc_i_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP:
>> + ctr->hevc_p_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP:
>> + ctr->hevc_b_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP:
>> + ctr->hevc_min_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP:
>> + ctr->hevc_i_min_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP:
>> + ctr->hevc_p_min_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP:
>> + ctr->hevc_b_min_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP:
>> + ctr->hevc_max_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP:
>> + ctr->hevc_i_max_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP:
>> + ctr->hevc_p_max_qp = ctrl->val;
>> + break;
>> + case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP:
>> + ctr->hevc_b_max_qp = ctrl->val;
>> + break;
>> case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE:
>> ctr->multi_slice_mode = ctrl->val;
>> break;
>>
>
> This looks incomplete: the new controls aren't actually added to the
> driver with v4l2_ctrl_new_std(). Did you test this?
Oh, Sorry. Looks like I forgot to add some changes.
will send a new patch.
Thanks,
Dikshita
>
> Regards,
>
> Hans
prev parent reply other threads:[~2020-12-08 16:38 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-18 6:54 [PATCH v3 0/3] Add new controls for QP and layer bitrate Dikshita Agarwal
2020-11-18 6:54 ` [PATCH v3 1/3] media: v4l2-ctrl: Add frame-specific min/max qp controls for hevc Dikshita Agarwal
2020-12-02 13:51 ` Hans Verkuil
2020-11-18 6:54 ` [PATCH v3 2/3] media: v4l2-ctrl: Add layer wise bitrate controls for h264 Dikshita Agarwal
2020-11-18 6:54 ` [PATCH v3 3/3] venus: venc: Add support for frame-specific min/max qp controls Dikshita Agarwal
2020-12-02 13:36 ` Hans Verkuil
2020-12-08 16:37 ` dikshita [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=445dd26796e2242666e5256e7e36bcbe@codeaurora.org \
--to=dikshita@codeaurora.org \
--cc=hverkuil-cisco@xs4all.nl \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=nicolas@ndufresne.ca \
--cc=stanimir.varbanov@linaro.org \
--cc=vgarodia@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.