[1/2] media: venus: venc: configure entropy mode

Message ID 1511516042-11415-1-git-send-email-loic.poulain@linaro.org
State New
Headers show
Series
  • [1/2] media: venus: venc: configure entropy mode
Related show

Commit Message

Loic Poulain Nov. 24, 2017, 9:34 a.m.
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>

---
 drivers/media/platform/qcom/venus/venc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Stanimir Varbanov Nov. 24, 2017, 12:53 p.m. | #1
Hi Loic,

Thanks for the patch!

On 11/24/2017 11:34 AM, Loic Poulain wrote:
> 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>

> ---

>  drivers/media/platform/qcom/venus/venc.c | 11 +++++++++++

>  1 file changed, 11 insertions(+)


Reviewed-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>


-- 
regards,
Stan
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c
index 6f123a3..d5d824e 100644
--- a/drivers/media/platform/qcom/venus/venc.c
+++ b/drivers/media/platform/qcom/venus/venc.c
@@ -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;
 	}
 
 	ptype = HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD;