media: mediatek: vcodec: record capture queue format type
authorYunfei Dong <yunfei.dong@mediatek.com>
Thu, 12 May 2022 02:19:45 +0000 (04:19 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 13 May 2022 12:47:10 +0000 (14:47 +0200)
The capture queue format type may be differ depending on platform: for
stateless decoder drivers, we need to calculate the capture buffer size
according to the capture queue format type in SCP.

As a preparation for introducing drivers for stateless decoding, save the
current capture queue type on a per vcodec context basis.

Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tested-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h

index ff79687..52e5d36 100644 (file)
@@ -464,6 +464,8 @@ static int vidioc_vdec_s_fmt(struct file *file, void *priv,
                        }
                        ctx->state = MTK_STATE_INIT;
                }
+       } else {
+               ctx->capture_fourcc = fmt->fourcc;
        }
 
        /*
index 75a1c6d..c047f42 100644 (file)
@@ -274,6 +274,7 @@ struct vdec_pic_info {
  *                  to be used with encoder and stateful decoder.
  * @is_flushing: set to true if flushing is in progress.
  * @current_codec: current set input codec, in V4L2 pixel format
+ * @capture_fourcc: capture queue type in V4L2 pixel format
  *
  * @colorspace: enum v4l2_colorspace; supplemental to pixelformat
  * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding
@@ -321,6 +322,7 @@ struct mtk_vcodec_ctx {
        bool is_flushing;
 
        u32 current_codec;
+       u32 capture_fourcc;
 
        enum v4l2_colorspace colorspace;
        enum v4l2_ycbcr_encoding ycbcr_enc;