RE: [EXT] Re: [PATCH v12 00/13] amphion video decoder/encoder driver

From: Ming Qian
Date: Fri Dec 03 2021 - 00:20:17 EST


> -----Original Message-----
> From: Nicolas Dufresne [mailto:nicolas@xxxxxxxxxxxx]
> Sent: Friday, December 3, 2021 12:10 PM
> To: Ming Qian <ming.qian@xxxxxxx>; mchehab@xxxxxxxxxx;
> shawnguo@xxxxxxxxxx; robh+dt@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx
> Cc: hverkuil-cisco@xxxxxxxxx; kernel@xxxxxxxxxxxxxx; festevam@xxxxxxxxx;
> dl-linux-imx <linux-imx@xxxxxxx>; Aisheng Dong <aisheng.dong@xxxxxxx>;
> linux-media@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [EXT] Re: [PATCH v12 00/13] amphion video decoder/encoder
> driver
>
> Caution: EXT Email
>
> Le vendredi 26 novembre 2021 à 06:31 +0000, Ming Qian a écrit :
> > > -----Original Message-----
> > > From: Nicolas Dufresne [mailto:nicolas@xxxxxxxxxxxx]
> > > Sent: Thursday, November 25, 2021 11:36 PM
> > > To: Ming Qian <ming.qian@xxxxxxx>; mchehab@xxxxxxxxxx;
> > > shawnguo@xxxxxxxxxx; robh+dt@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx
> > > Cc: hverkuil-cisco@xxxxxxxxx; kernel@xxxxxxxxxxxxxx;
> > > festevam@xxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; Aisheng Dong
> > > <aisheng.dong@xxxxxxx>; linux-media@xxxxxxxxxxxxxxx;
> > > linux-kernel@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
> > > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> > > Subject: Re: [EXT] Re: [PATCH v12 00/13] amphion video
> > > decoder/encoder driver
> > >
> > > Caution: EXT Email
> > >
> > > Le jeudi 25 novembre 2021 à 05:25 +0000, Ming Qian a écrit :
> > > > For test [JCT-VC-HEVC_V1] (GStreamer-H.265-V4L2-Gst1.0)
> > > > VPSSPSPPS_A_MainConcept_1, The vpu report an unsupported message
> > > > to
> > > driver, so driver report pollerr to gstreamer.
> > > > But this stream can be decoded using the amphion vpu when I test
> > > > it using our unit test, I checked the difference, there are many
> > > > vps, sps and pps at the beginning, gstreamer will skip the first
> > > > vpu and two pps, totally skip 56 bytes. It leds to vpu can't
> > > > decode And our unit test won't
> > > skip anthing, so the vpu can decode the stream.
> > >
> > > This specific test triggers a bug in GStreamer HEVC parser, I'm
> > > aware of this one, and it is on my todo to fix (just not as trivial
> > > as it looks like, the VCL nal detection code was implemented wrong
> > > and that ended up leaking into the rest of the design). This
> > > specific test will of course be marked and skipped for CI test that
> > > uses GStreamer.
> > >
> > > regards,
> > > Nicolas
> >
> > Hi Nicolas,
> >
> > For the h264 decoder test, If I test with our unit test tool, the
> > result is 124/135 tests successfully, But only 75/135 tests
> > successfully when test using gstreamer.
> > There are 49 tests with different results, and all of the 49 test
> > streams are interlaced stream.
> > The amphion vpu will output the interlaced frame directly, it won't
> > merge the interlaced two parts into one progressive frame.
> > And the gstreamer tiled unpack function(unpack_NV12_TILED) won't
> > handle the interlaced case, so the output frame is abnormal, and led to test
> fail.
> > I think it should be a hardware limitation of the amphion vpu.
> > And maybe
>
> If this is the case, it needs to be signaled as ALTERNATE (if you have 1 v4l2
> buffer per field) or SEQ if they are stored in the same v4l2_buffer but on top of
> each other instead of interleaved.
>
> Some bit about this might not we all wired properly, I have only tested
> alternate field for capture devices (Xilinx ZinqMP). Please check the signalling
> of interlace field in your driver, I'll check the state of GStreamer in this regard.


The two fields are stored in the same v4l2_buffer, I'll change the filed to V4L2_FIELD_SEQ_TB and test it again.

>
> > the gstreamer videoconvert can handle it.
> > The interlaced list is as below:
> > [JVT-AVC_V1] cabac_mot_fld0_full
> > [JVT-AVC_V1] cabac_mot_mbaff0_full
> > [JVT-AVC_V1] cabac_mot_picaff0_full
> > [JVT-AVC_V1] CABREF3_Sand_D
> > [JVT-AVC_V1] CAFI1_SVA_C
> > [JVT-AVC_V1] CAMA1_Sony_C
> > [JVT-AVC_V1] CAMA1_TOSHIBA_B
> > [JVT-AVC_V1] CAMA3_Sand_E
> > [JVT-AVC_V1] CAMACI3_Sony_C
> > [JVT-AVC_V1] CAMANL1_TOSHIBA_B
> > [JVT-AVC_V1] CAMANL2_TOSHIBA_B
> > [JVT-AVC_V1] CAMANL3_Sand_E
> > [JVT-AVC_V1] CAMASL3_Sony_B
> > [JVT-AVC_V1] CAMP_MOT_MBAFF_L30
> > [JVT-AVC_V1] CAMP_MOT_MBAFF_L31
> > [JVT-AVC_V1] CANLMA2_Sony_C
> > [JVT-AVC_V1] CANLMA3_Sony_C
> > [JVT-AVC_V1] CAPA1_TOSHIBA_B
> > [JVT-AVC_V1] CAPAMA3_Sand_F
> > [JVT-AVC_V1] cavlc_mot_fld0_full_B
> > [JVT-AVC_V1] cavlc_mot_mbaff0_full_B
> > [JVT-AVC_V1] cavlc_mot_picaff0_full_B
> > [JVT-AVC_V1] CVCANLMA2_Sony_C
> > [JVT-AVC_V1] CVFI1_Sony_D
> > [JVT-AVC_V1] CVFI1_SVA_C
> > [JVT-AVC_V1] CVFI2_Sony_H
> > [JVT-AVC_V1] CVFI2_SVA_C
> > [JVT-AVC_V1] CVMA1_Sony_D
> > [JVT-AVC_V1] CVMA1_TOSHIBA_B
> > [JVT-AVC_V1] CVMANL1_TOSHIBA_B
> > [JVT-AVC_V1] CVMANL2_TOSHIBA_B
> > [JVT-AVC_V1] CVMAPAQP3_Sony_E
> > [JVT-AVC_V1] CVMAQP2_Sony_G
> > [JVT-AVC_V1] CVMAQP3_Sony_D
> > [JVT-AVC_V1] CVMP_MOT_FLD_L30_B
> > [JVT-AVC_V1] CVMP_MOT_FRM_L31_B
> > [JVT-AVC_V1] CVNLFI1_Sony_C
> > [JVT-AVC_V1] CVNLFI2_Sony_H
> > [JVT-AVC_V1] CVPA1_TOSHIBA_B
> > [JVT-AVC_V1] FI1_Sony_E
> > [JVT-AVC_V1] MR6_BT_B
> > [JVT-AVC_V1] MR7_BT_B
> > [JVT-AVC_V1] MR8_BT_B
> > [JVT-AVC_V1] MR9_BT_B
> > [JVT-AVC_V1] Sharp_MP_Field_1_B
> > [JVT-AVC_V1] Sharp_MP_Field_2_B
> > [JVT-AVC_V1] Sharp_MP_Field_3_B
> > [JVT-AVC_V1] Sharp_MP_PAFF_1r2
> > [JVT-AVC_V1] Sharp_MP_PAFF_2r
> >