]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
media: venus: Support V4L2 QP parameters in Venus encoder
authorKelvin Lawson <klawson@lisden.com>
Fri, 30 Nov 2018 00:07:28 +0000 (19:07 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Fri, 7 Dec 2018 13:27:29 +0000 (08:27 -0500)
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>
drivers/media/platform/qcom/venus/venc.c

index 9a9b0d989ae7bf7e7e32ad409605a94847b17130..32cff294582f9abee76cc22baa589cb87f136bb5 100644 (file)
@@ -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);