From: Marcus Glocker Subject: Re: sys/videoio.h: sync with Linux 6.16 To: "Kirill A. Korinsky" Cc: tech@openbsd.org Date: Fri, 30 May 2025 20:34:23 +0200 On Thu, May 29, 2025 at 01:36:52PM +0200, Kirill A. Korinsky wrote: > tech@, > > I'd like to keep our videoio.h in sync with latest Linux, and here > backport of few trivial changes. > > 1. Add NV15 and NV20 pixel formats, from: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dcbe2aeda2e09eb69f5feba7e171db2836d9999d > > 2. Fix V4L2_TYPE_IS_OUTPUT condition, from: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f81f69a0e3da141bdd73a16b8676f4e542533d87 > > 3. Add C3ISP_PARAMS and C3ISP_STATS meta formats, from: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a3aa115af25473c1309bc99cac6b2b6cd180fdd9 > > 4. Change V4L2_TYPE_IS_CAPTURE condition, from: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ad2698efce37e910dcf3c3914263e6cb3e86f8cd > > Ok? > > Index: sys/sys/videoio.h > =================================================================== > RCS file: /home/cvs/src/sys/sys/videoio.h,v > diff -u -p -r1.22 videoio.h > --- sys/sys/videoio.h 26 Mar 2025 20:30:42 -0000 1.22 > +++ sys/sys/videoio.h 29 May 2025 11:29:14 -0000 > @@ -3714,10 +3714,18 @@ enum v4l2_buf_type { > V4L2_BUF_TYPE_SDR_OUTPUT = 12, > V4L2_BUF_TYPE_META_CAPTURE = 13, > V4L2_BUF_TYPE_META_OUTPUT = 14, > + /* > + * Note: V4L2_TYPE_IS_VALID and V4L2_TYPE_IS_OUTPUT must > + * be updated if a new type is added. > + */ > /* Deprecated, do not use */ > V4L2_BUF_TYPE_PRIVATE = 0x80, > }; > > +#define V4L2_TYPE_IS_VALID(type) \ > + ((type) >= V4L2_BUF_TYPE_VIDEO_CAPTURE &&\ > + (type) <= V4L2_BUF_TYPE_META_OUTPUT) > + > #define V4L2_TYPE_IS_MULTIPLANAR(type) \ > ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \ > || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) > @@ -3725,14 +3733,14 @@ enum v4l2_buf_type { > #define V4L2_TYPE_IS_OUTPUT(type) \ > ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \ > || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \ > - || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \ > | | (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \ | > | | (type) == V4L2_BUF_TYPE_VBI_OUTPUT \ | > | | (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT \ | > | | (type) == V4L2_BUF_TYPE_SDR_OUTPUT \ | > | | (type) == V4L2_BUF_TYPE_META_OUTPUT) | The formatting seems to be screwed here, and hence I'm getting rejects when applying your diff. > -#define V4L2_TYPE_IS_CAPTURE(type) (!V4L2_TYPE_IS_OUTPUT(type)) > +#define V4L2_TYPE_IS_CAPTURE(type) \ > + (V4L2_TYPE_IS_VALID(type) && !V4L2_TYPE_IS_OUTPUT(type)) > > enum v4l2_tuner_type { > V4L2_TUNER_RADIO = 1, > @@ -4178,8 +4186,10 @@ struct v4l2_pix_format { > /* two planes -- one Y, one Cr + Cb interleaved */ > #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ > #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ > +#define V4L2_PIX_FMT_NV15 v4l2_fourcc('N', 'V', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit packed */ > #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ > #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ > +#define V4L2_PIX_FMT_NV20 v4l2_fourcc('N', 'V', '2', '0') /* 20 Y/CbCr 4:2:2 10-bit packed */ > #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ > #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ > #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */ > @@ -4392,6 +4402,10 @@ struct v4l2_pix_format { > #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ > #define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */ > #define V4L2_META_FMT_RK_ISP1_EXT_PARAMS v4l2_fourcc('R', 'K', '1', 'E') /* Rockchip ISP1 3a Extensible Parameters */ > + > +/* Vendor specific - used for C3_ISP */ > +#define V4L2_META_FMT_C3ISP_PARAMS v4l2_fourcc('C', '3', 'P', 'M') /* Amlogic C3 ISP Parameters */ > +#define V4L2_META_FMT_C3ISP_STATS v4l2_fourcc('C', '3', 'S', 'T') /* Amlogic C3 ISP Statistics */ > > /* Vendor specific - used for RaspberryPi PiSP */ > #define V4L2_META_FMT_RPI_BE_CFG v4l2_fourcc('R', 'P', 'B', 'C') /* PiSP BE configuration */