diff options
author | Kelvin Lawson <klawson@lisden.com> | 2018-11-30 03:07:28 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2018-12-07 16:27:29 +0300 |
commit | 2123cbd687ca0c511faa97db9f18ca55767c5684 (patch) | |
tree | 4bdc8b2c622943d974f9275ca92ee03c1a846e1b /drivers/media/platform/qcom/venus/venc.c | |
parent | 4e1e0eb0e0744e02fdada653463cc8010523b2f3 (diff) | |
download | linux-2123cbd687ca0c511faa97db9f18ca55767c5684.tar.xz |
media: venus: Support V4L2 QP parameters in Venus encoder
Support V4L2 QP parameters in Venus encoder:
* V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP
* V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP
* V4L2_CID_MPEG_VIDEO_H264_MIN_QP
* V4L2_CID_MPEG_VIDEO_H264_MAX_QP
Signed-off-by: Kelvin Lawson <klawson@lisden.com>
Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/platform/qcom/venus/venc.c')
-rw-r--r-- | drivers/media/platform/qcom/venus/venc.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c index 9a9b0d989ae7..32cff294582f 100644 --- a/drivers/media/platform/qcom/venus/venc.c +++ b/drivers/media/platform/qcom/venus/venc.c @@ -651,6 +651,8 @@ static int venc_set_properties(struct venus_inst *inst) struct hfi_framerate frate; struct hfi_bitrate brate; struct hfi_idr_period idrp; + struct hfi_quantization quant; + struct hfi_quantization_range quant_range; u32 ptype, rate_control, bitrate, profile = 0, level = 0; int ret; @@ -770,6 +772,23 @@ static int venc_set_properties(struct venus_inst *inst) if (ret) 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; + 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; + quant_range.layer_id = 0; + ret = hfi_session_set_property(inst, ptype, &quant_range); + if (ret) + return ret; + if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_H264) { profile = venc_v4l2_to_hfi(V4L2_CID_MPEG_VIDEO_H264_PROFILE, ctr->profile.h264); |