[PATCH] media: mediatek: vcodec: Skip SOURCE_CHANGE & EOS events for stateless

Nicolas Dufresne nicolas at ndufresne.ca
Tue Jun 21 07:22:34 PDT 2022


Le lundi 20 juin 2022 à 14:33 +0800, Chen-Yu Tsai a écrit :
> The stateless decoder API does not specify the usage of SOURCE_CHANGE
> and EOF events. These events are used by stateful decoders to signal
> changes in the bitstream. They do not make sense for stateless decoders.
> 
> Do not handle subscription for these two types of events for stateless
> decoder instances. This fixes the last v4l2-compliance error:
> 
> Control ioctls:
> 		fail: v4l2-test-controls.cpp(946): have_source_change || have_eos
> 	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL
> 
> Fixes: 8cdc3794b2e3 ("media: mtk-vcodec: vdec: support stateless API")
> Signed-off-by: Chen-Yu Tsai <wenst at chromium.org>

Reviewed-by: Nicolas Dufresne <nicolas.dufresne at collabora.com>

> ---
> 
> This should apply cleanly on next-20220617. The other media patches I
> have on my branch:
> 
> media: mediatek: vcodec: Initialize decoder parameters after getting dec_capability
> media: mediatek: vcodec: Fix non subdev architecture open power fail
> 
> should not interfere, though the second is required for proper operation
> of the decoder on MT8183.
> 
>  drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> index 62f29b6fa104..a5fbc0a1c6bc 100644
> --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> @@ -234,6 +234,11 @@ static int vidioc_vdec_querycap(struct file *file, void *priv,
>  static int vidioc_vdec_subscribe_evt(struct v4l2_fh *fh,
>  				     const struct v4l2_event_subscription *sub)
>  {
> +	struct mtk_vcodec_ctx *ctx = fh_to_ctx(fh);
> +
> +	if (ctx->dev->vdec_pdata->uses_stateless_api)
> +		return v4l2_ctrl_subscribe_event(fh, sub);
> +
>  	switch (sub->type) {
>  	case V4L2_EVENT_EOS:
>  		return v4l2_event_subscribe(fh, sub, 2, NULL);




More information about the Linux-mediatek mailing list