media: amphion: drop repeated codec data for vc1g format
authorMing Qian <ming.qian@nxp.com>
Fri, 14 Apr 2023 01:55:43 +0000 (09:55 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jul 2023 14:21:50 +0000 (16:21 +0200)
[ Upstream commit e1d2ccc2cdd6333584aa3d5386dc667d0837c48f ]

For format V4L2_PIX_FMT_VC1_ANNEX_G,
the separate codec data is required only once.
The repeated codec data may introduce some decoding error.
so drop the repeated codec data.

It's amphion vpu's limitation

Fixes: e670f5d672ef ("media: amphion: only insert the first sequence startcode for vc1l format")
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Tested-by: xiahong.bao <xiahong.bao@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/platform/amphion/vpu_malone.c

index 36e563d29621f44fe44d77be152621ed7628fc39..c2f4fb12c3b6466be265349712298574effbbc00 100644 (file)
@@ -1286,6 +1286,15 @@ static int vpu_malone_insert_scode_pic(struct malone_scode_t *scode, u32 codec_i
        return sizeof(hdr);
 }
 
+static int vpu_malone_insert_scode_vc1_g_seq(struct malone_scode_t *scode)
+{
+       if (!scode->inst->total_input_count)
+               return 0;
+       if (vpu_vb_is_codecconfig(to_vb2_v4l2_buffer(scode->vb)))
+               scode->need_data = 0;
+       return 0;
+}
+
 static int vpu_malone_insert_scode_vc1_g_pic(struct malone_scode_t *scode)
 {
        struct vb2_v4l2_buffer *vbuf;
@@ -1423,6 +1432,7 @@ static const struct malone_scode_handler scode_handlers[] = {
        },
        {
                .pixelformat = V4L2_PIX_FMT_VC1_ANNEX_G,
+               .insert_scode_seq = vpu_malone_insert_scode_vc1_g_seq,
                .insert_scode_pic = vpu_malone_insert_scode_vc1_g_pic,
        },
        {