Re: [PATCH] [media] v4l2: Add AV1, AVS and AVS2 format

From: Nicolas Dufresne
Date: Fri Aug 26 2022 - 14:12:36 EST


Le vendredi 26 août 2022 à 12:15 +0300, Laurent Pinchart a écrit :
> Hello Shi,
>
> Thank you for the patch.
>
> On Fri, Aug 26, 2022 at 11:00:03AM +0800, Shi Hao wrote:
> > From: "hao.shi" <hao.shi@xxxxxxxxxxx>
> >
> > Add AV1, AVS and AVS2 compressed pixel formats. They are
> > the more common formats.
> >
> > Signed-off-by: Shi Hao <hao.shi@xxxxxxxxxxx>
> > ---
> > drivers/media/v4l2-core/v4l2-ioctl.c | 3 +++
> > include/uapi/linux/videodev2.h | 3 +++
>
> The patch also needs to document the formats, in
> Documentation/userspace-api/media/v4l/.
>
> > 2 files changed, 6 insertions(+)
> >
> > diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
> > index c314025d977e..7b102c2f59b1 100644
> > --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> > +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> > @@ -1497,6 +1497,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
> > case V4L2_PIX_FMT_MT21C: descr = "Mediatek Compressed Format"; break;
> > case V4L2_PIX_FMT_QC08C: descr = "QCOM Compressed 8-bit Format"; break;
> > case V4L2_PIX_FMT_QC10C: descr = "QCOM Compressed 10-bit Format"; break;
> > + case V4L2_PIX_FMT_AV1: descr = "AV1"; break;

A recommendation while adding proper spec/doc. AV1 have multiple representation,
the exact expected representation should be specified in the doc. This will
avoid similar issues we had with H.264 (Annex B. vs AVCc formats).

> > + case V4L2_PIX_FMT_AVS: descr = "AVS"; break;
> > + case V4L2_PIX_FMT_AVS2: descr = "AVS2"; break;

Same things should be checked for these two, they aren't very common outside of
China, at least I didn't had a chance to play with these so far.

cheers,
Nicolas

> > default:
> > if (fmt->description[0])
> > return;
> > diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> > index 01e630f2ec78..fa8ec0ddde3d 100644
> > --- a/include/uapi/linux/videodev2.h
> > +++ b/include/uapi/linux/videodev2.h
> > @@ -738,6 +738,9 @@ struct v4l2_pix_format {
> > #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
> > #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
> > #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
> > +#define V4L2_PIX_FMT_AV1 v4l2_fourcc('A', 'V', '1', '0') /* AV1 */
> > +#define V4L2_PIX_FMT_AVS v4l2_fourcc('A', 'V', 'S', '0') /* AVS */
> > +#define V4L2_PIX_FMT_AVS2 v4l2_fourcc('A', 'V', 'S', '2') /* AVS2 */
> >
> > /* Vendor-specific formats */
> > #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
> >
> > base-commit: 568035b01cfb107af8d2e4bd2fb9aea22cf5b868
>