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)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 25 May 2023 14:21:20 +0000 (16:21 +0200)
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>
drivers/media/platform/amphion/vpu_malone.c

index e969944..c1d6606 100644 (file)
@@ -1313,6 +1313,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;
@@ -1460,6 +1469,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,
        },
        {