]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
media: venus: venc: configure entropy mode
authorLoic Poulain <loic.poulain@linaro.org>
Fri, 24 Nov 2017 09:34:01 +0000 (04:34 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 8 Dec 2017 16:20:06 +0000 (11:20 -0500)
H264 entropy mode can be selected via V4L2 API but is eventually not
applied. Configure encoder with selected mode, CALVC (def) or CABAC.

Note that hw/firmware also expects a CABAC model configuration which
currently doesn't have existing V4L2 API control. For now, use model_0
which seems always supported and so the default one.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Reviewed-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/qcom/venus/venc.c

index 8cfc866b07e5ded802134b4c710b51468204a838..0c2331f53b7981d3d07b93a4c829e43bba1cb161 100644 (file)
@@ -641,6 +641,7 @@ static int venc_set_properties(struct venus_inst *inst)
 
        if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_H264) {
                struct hfi_h264_vui_timing_info info;
+               struct hfi_h264_entropy_control entropy;
 
                ptype = HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO;
                info.enable = 1;
@@ -650,6 +651,16 @@ static int venc_set_properties(struct venus_inst *inst)
                ret = hfi_session_set_property(inst, ptype, &info);
                if (ret)
                        return ret;
+
+               ptype = HFI_PROPERTY_PARAM_VENC_H264_ENTROPY_CONTROL;
+               entropy.entropy_mode = venc_v4l2_to_hfi(
+                                         V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE,
+                                         ctr->h264_entropy_mode);
+               entropy.cabac_model = HFI_H264_CABAC_MODEL_0;
+
+               ret = hfi_session_set_property(inst, ptype, &entropy);
+               if (ret)
+                       return ret;
        }
 
        /* IDR periodicity, n: