From: Marcus Glocker Subject: Re: sys/uvideo: sync GUID to pixelformat mappngs with Linux 6.13-rc7 To: "Kirill A. Korinsky" Cc: tech@openbsd.org Date: Thu, 16 Jan 2025 23:35:49 +0100 On Thu, Jan 16, 2025 at 10:57:22PM GMT, Kirill A. Korinsky wrote: > On Thu, 16 Jan 2025 20:47:16 +0100, > Marcus Glocker wrote: > > > > On Thu, Jan 16, 2025 at 03:32:51PM GMT, Kirill A. Korinsky wrote: > > > > > On Thu, 16 Jan 2025 13:56:22 +0100, > > > Kirill A. Korinsky wrote: > > > > > > > > On Thu, 16 Jan 2025 07:20:46 +0100, > > > > Marcus Glocker wrote: > > > > > > > > > > On Wed, Jan 15, 2025 at 09:43:22PM GMT, Kirill A. Korinsky wrote: > > > > > > > > > > > tech@ > > > > > > > > > > > > I'd like to sync mappings of GUID to pixel format with Linux 6.13-rc7. > > > > > > > > > > > > Sources for used data: > > > > > > - https://github.com/torvalds/linux/blob/v6.13-rc7/drivers/media/common/uvc.c > > > > > > - https://github.com/torvalds/linux/blob/v6.13-rc7/include/linux/usb/uvc.h > > > > > > > > > > > > Ok? > > > > > > > > > > Why not, makes sense. Also quickly regression tested. > > > > > > > > > > ok mglocker@ > > > > > > > > > > > > > I had made one more read and discovered few typos. > > > > > > > > UVIDEO_FORMAT_GUID_GBRG, UVIDEO_FORMAT_GUID_GRBG, UVIDEO_FORMAT_GUID_RGGB > > > > and UVIDEO_FORMAT_GUID_RG16 were wrong, and UVIDEO_FORMAT_GUID_GR16 was > > > > missed. All this 4 leter combinations... heh. > > > > > > > > Also, I had replaced 0x00 to '\0' at the end of the "string" in GUID. > > > > Since you force me to look closer at your diff ;-), does it make sense > > to set NUL after the four digit string, since I can see that rule > > doesn't apply for all the strings, for example: > > > > #define UVIDEO_FORMAT_GUID_INVZ { \ > > 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ > > 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b } > > > > #define UVIDEO_FORMAT_GUID_INVI { \ > > 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ > > 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f } > > > > Or should we do it the same as Linux, and just always set 0x00? > > > > Yeah, I had re-read this diff more than dozen times to catch typos with all > thess numbers :) > > Regarding 0x00... I think this is right things. So, here the updated diff > where I replaced all '\0' to 0x00 in GUIDs Looks good to me. ok mglocker@ > Index: sys/dev/usb/uvideo.c > =================================================================== > RCS file: /home/cvs/src/sys/dev/usb/uvideo.c,v > diff -u -p -r1.235 uvideo.c > --- sys/dev/usb/uvideo.c 15 Jan 2025 20:34:50 -0000 1.235 > +++ sys/dev/usb/uvideo.c 16 Jan 2025 12:32:52 -0000 > @@ -392,7 +392,25 @@ const struct uvideo_map_fmts { > { UVIDEO_FORMAT_GUID_I420, V4L2_PIX_FMT_YUV420 }, > { UVIDEO_FORMAT_GUID_Y800, V4L2_PIX_FMT_GREY }, > { UVIDEO_FORMAT_GUID_Y8, V4L2_PIX_FMT_GREY }, > + { UVIDEO_FORMAT_GUID_D3DFMT_L8, V4L2_PIX_FMT_GREY }, > { UVIDEO_FORMAT_GUID_KSMEDIA_L8_IR, V4L2_PIX_FMT_GREY }, > + { UVIDEO_FORMAT_GUID_BY8, V4L2_PIX_FMT_SBGGR8 }, > + { UVIDEO_FORMAT_GUID_BA81, V4L2_PIX_FMT_SBGGR8 }, > + { UVIDEO_FORMAT_GUID_GBRG, V4L2_PIX_FMT_SGBRG8 }, > + { UVIDEO_FORMAT_GUID_GRBG, V4L2_PIX_FMT_SGRBG8 }, > + { UVIDEO_FORMAT_GUID_RGGB, V4L2_PIX_FMT_SRGGB8 }, > + { UVIDEO_FORMAT_GUID_RGBP, V4L2_PIX_FMT_RGB565 }, > + { UVIDEO_FORMAT_GUID_D3DFMT_R5G6B5, V4L2_PIX_FMT_RGB565 }, > + { UVIDEO_FORMAT_GUID_BGR3, V4L2_PIX_FMT_BGR24 }, > + { UVIDEO_FORMAT_GUID_BGR4, V4L2_PIX_FMT_XBGR32 }, > + { UVIDEO_FORMAT_GUID_H265, V4L2_PIX_FMT_HEVC }, > + { UVIDEO_FORMAT_GUID_RW10, V4L2_PIX_FMT_SRGGB10P }, > + { UVIDEO_FORMAT_GUID_BG16, V4L2_PIX_FMT_SBGGR16 }, > + { UVIDEO_FORMAT_GUID_GB16, V4L2_PIX_FMT_SGBRG16 }, > + { UVIDEO_FORMAT_GUID_RG16, V4L2_PIX_FMT_SRGGB16 }, > + { UVIDEO_FORMAT_GUID_GR16, V4L2_PIX_FMT_SGRBG16 }, > + { UVIDEO_FORMAT_GUID_INVZ, V4L2_PIX_FMT_Z16 }, > + { UVIDEO_FORMAT_GUID_INVI, V4L2_PIX_FMT_Y10 }, > }; > > int > Index: sys/dev/usb/uvideo.h > =================================================================== > RCS file: /home/cvs/src/sys/dev/usb/uvideo.h,v > diff -u -p -r1.62 uvideo.h > --- sys/dev/usb/uvideo.h 13 Jan 2025 15:32:36 -0000 1.62 > +++ sys/dev/usb/uvideo.h 16 Jan 2025 21:56:50 -0000 > @@ -297,28 +297,100 @@ struct usb_video_probe_commit { > */ > /* Table 2-1: Compression Formats */ > #define UVIDEO_FORMAT_GUID_YUY2 { \ > - 'Y', 'U', 'Y', '2', '\0', 0x00, 0x10, 0x00, \ > + 'Y', 'U', 'Y', '2', 0x00, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > > #define UVIDEO_FORMAT_GUID_YV12 { \ > - 'Y', 'V', '1', '2', '\0', 0x00, 0x10, 0x00, \ > + 'Y', 'V', '1', '2', 0x00, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > > #define UVIDEO_FORMAT_GUID_I420 { \ > - 'I', '4', '2', '0', '\0', 0x00, 0x10, 0x00, \ > + 'I', '4', '2', '0', 0x00, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > > #define UVIDEO_FORMAT_GUID_Y800 { \ > - 'Y', '8', '0', '0', '\0', 0x00, 0x10, 0x00, \ > + 'Y', '8', '0', '0', 0x00, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > > #define UVIDEO_FORMAT_GUID_Y8 { \ > - 'Y', '8', ' ', ' ', '\0', 0x00, 0x10, 0x00, \ > + 'Y', '8', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_D3DFMT_L8 { \ > + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > > #define UVIDEO_FORMAT_GUID_KSMEDIA_L8_IR { \ > 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, \ > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_BY8 { \ > + 'B', 'Y', '8', ' ', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_BA81 { \ > + 'B', 'A', '8', '1', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_GBRG { \ > + 'G', 'B', 'R', 'G', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_GRBG { \ > + 'G', 'R', 'B', 'G', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_RGGB { \ > + 'R', 'G', 'G', 'B', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_RGBP { \ > + 'R', 'G', 'B', 'P', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_D3DFMT_R5G6B5 { \ > + 0x7b, 0xeb, 0x36, 0xe4, 0x4f, 0x52, 0xce, 0x11, \ > + 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 } > + > +#define UVIDEO_FORMAT_GUID_BGR3 { \ > + 0x7d, 0xeb, 0x36, 0xe4, 0x4f, 0x52, 0xce, 0x11, \ > + 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 } > + > +#define UVIDEO_FORMAT_GUID_BGR4 { \ > + 0x7e, 0xeb, 0x36, 0xe4, 0x4f, 0x52, 0xce, 0x11, \ > + 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 } > + > +#define UVIDEO_FORMAT_GUID_H265 { \ > + 'H', '2', '6', '5', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_RW10 { \ > + 'R', 'W', '1', '0', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_BG16 { \ > + 'B', 'G', '1', '6', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_GB16 { \ > + 'G', 'B', '1', '6', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_RG16 { \ > + 'R', 'G', '1', '6', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_GR16 { \ > + 'G', 'R', '1', '6', 0x00, 0x00, 0x10, 0x00, \ > + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } > + > +#define UVIDEO_FORMAT_GUID_INVZ { \ > + 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \ > + 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b } > + > +#define UVIDEO_FORMAT_GUID_INVI { \ > + 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \ > + 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f } > > /* > * USB Video Payload MJPEG > > > -- > wbr, Kirill >