media: mtk-vcodec: venc: fix invalid time per frame in S_PARM

v4l2-compliance expects the driver to adjust the time per frame if it is
invalid (numerator or denominator set to 0). Adjust it to the default
value in these cases.

Signed-off-by: Alexandre Courbot <acourbot@chromium.org>
Acked-by: Tiffany Lin <tiffany.lin@mediatek.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Alexandre Courbot 2020-08-21 12:36:08 +02:00 committed by Mauro Carvalho Chehab
parent 7ee20328e4
commit 42f401e751

View File

@ -200,14 +200,18 @@ static int vidioc_venc_s_parm(struct file *file, void *priv,
struct v4l2_streamparm *a)
{
struct mtk_vcodec_ctx *ctx = fh_to_ctx(priv);
struct v4l2_fract *timeperframe = &a->parm.output.timeperframe;
if (a->type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
return -EINVAL;
ctx->enc_params.framerate_num =
a->parm.output.timeperframe.denominator;
ctx->enc_params.framerate_denom =
a->parm.output.timeperframe.numerator;
if (timeperframe->numerator == 0 || timeperframe->denominator == 0) {
timeperframe->numerator = MTK_DEFAULT_FRAMERATE_NUM;
timeperframe->denominator = MTK_DEFAULT_FRAMERATE_DENOM;
}
ctx->enc_params.framerate_num = timeperframe->denominator;
ctx->enc_params.framerate_denom = timeperframe->numerator;
ctx->param_change |= MTK_ENCODE_PARAM_FRAMERATE;
a->parm.output.capability = V4L2_CAP_TIMEPERFRAME;