diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2018-02-15 21:16:15 +0100 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2018-03-02 16:02:20 +0000 |
commit | cfa55479c2e5ab93f48fe96719df495223a662ec (patch) | |
tree | 5a66c9e2584d2183e141bfe44c578c6792bd2cd9 | |
parent | b82706f412ba897c3b265caadefbb2cabe852d75 (diff) | |
download | strace-cfa55479c2e5ab93f48fe96719df495223a662ec.tar.gz |
v4l2: print known pixel/SDR formats
* xlat/v4l2_pix_fmts.in: New file.
* xlat/v4l2_sdr_fmts.in: Likewise.
* v4l2.c [!v4l2_fourcc_be] (v4l2_fourcc_be): New macro.
(print_pixelformat): Add xlat parameter, print constant name
as a comment if it has been found in xlat.
(print_v4l2_fmtdesc, print_v4l2_frmivalenum): Pass v4l2_pix_fmts
to print_pixelformat.
(print_v4l2_format_fmt) <case V4L2_BUF_TYPE_VIDEO_CAPTURE, case
V4L2_BUF_TYPE_VIDEO_OUTPUT, case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, case V4L2_BUF_TYPE_VBI_CAPTURE,
case V4L2_BUF_TYPE_VBI_OUTPUT>: Pass v4l2_pix_fmts to print_pixelformat.
(print_v4l2_format_fmt) <case V4L2_BUF_TYPE_SDR_OUTPUT, case
V4L2_BUF_TYPE_SDR_CAPTURE>: Pass v4l2_sdr_fmts to print_pixelformat.
* tests/v4l2.c: Test it, update expected output.
* NEWS: Mention it.
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | tests/ioctl_v4l2.c | 119 | ||||
-rw-r--r-- | v4l2.c | 31 | ||||
-rw-r--r-- | xlat/v4l2_pix_fmts.in | 153 | ||||
-rw-r--r-- | xlat/v4l2_sdr_fmts.in | 8 |
5 files changed, 276 insertions, 37 deletions
@@ -15,6 +15,8 @@ Noteworthy changes in release ?.?? (????-??-??) * Updated lists of signal codes. * Updated lists of INET_DIAG_BC_*, POLL*, RWF_*, and SCHED_FLAG_* constants. * Implemented block/character device number printing in -yy mode. + * Known pixel/SDR format names are printed as comments for pixelformat fields + in v4l2 structures. * Bug fixes * Fixed build on m68k. diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c index 4d5745e40..8cf22777c 100644 --- a/tests/ioctl_v4l2.c +++ b/tests/ioctl_v4l2.c @@ -27,6 +27,7 @@ */ #include "tests.h" +#include <errno.h> #include <stdio.h> #include <string.h> #include <sys/ioctl.h> @@ -44,6 +45,10 @@ ((unsigned int)(a3) << 24)) static const unsigned int magic = 0xdeadbeef; +static const unsigned int pf_magic = fourcc('S', '5', '0', '8'); +#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT +static const unsigned int sf_magic = fourcc('R', 'U', '1', '2'); +#endif static void init_v4l2_format(struct v4l2_format *const f, @@ -56,7 +61,10 @@ init_v4l2_format(struct v4l2_format *const f, case V4L2_BUF_TYPE_VIDEO_OUTPUT: f->fmt.pix.width = 0x657b8160; f->fmt.pix.height = 0x951c0047; - f->fmt.pix.pixelformat = magic; + if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE) + f->fmt.pix.pixelformat = magic; + else + f->fmt.pix.pixelformat = pf_magic; f->fmt.pix.field = V4L2_FIELD_NONE; f->fmt.pix.bytesperline = 0xdf20d185; f->fmt.pix.sizeimage = 0x0cf7be41; @@ -70,7 +78,10 @@ init_v4l2_format(struct v4l2_format *const f, f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; f->fmt.pix_mp.width = 0x1f3b774b; f->fmt.pix_mp.height = 0xab96a8d6; - f->fmt.pix_mp.pixelformat = magic; + if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) + f->fmt.pix_mp.pixelformat = magic; + else + f->fmt.pix_mp.pixelformat = pf_magic; f->fmt.pix_mp.field = V4L2_FIELD_NONE; f->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG; struct v4l2_plane_pix_format *cur_pix = @@ -117,7 +128,10 @@ init_v4l2_format(struct v4l2_format *const f, f->fmt.vbi.sampling_rate = 0x3d9b5b79; f->fmt.vbi.offset = 0x055b3a09; f->fmt.vbi.samples_per_line = 0xf176d436; - f->fmt.vbi.sample_format = magic; + if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE) + f->fmt.vbi.sample_format = magic; + else + f->fmt.vbi.sample_format = pf_magic; f->fmt.vbi.start[0] = 0x9858e2eb; f->fmt.vbi.start[1] = 0x8a4dc8c1; f->fmt.vbi.count[0] = 0x4bcf36a3; @@ -142,10 +156,12 @@ init_v4l2_format(struct v4l2_format *const f, #endif #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT case V4L2_BUF_TYPE_SDR_OUTPUT: + f->fmt.sdr.pixelformat = sf_magic; #endif #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE case V4L2_BUF_TYPE_SDR_CAPTURE: - f->fmt.sdr.pixelformat = magic; + if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE) + f->fmt.sdr.pixelformat = magic; #ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE f->fmt.sdr.buffersize = 0x25afabfb; #endif @@ -159,18 +175,30 @@ dprint_ioctl_v4l2(struct v4l2_format *const f, const char *request, const unsigned int buf_type, const char *buf_type_string) { + int saved_errno; + switch (buf_type) { case V4L2_BUF_TYPE_VIDEO_CAPTURE: case V4L2_BUF_TYPE_VIDEO_OUTPUT: + saved_errno = errno; printf("ioctl(-1, %s, {type=%s" - ", fmt.pix={width=%u, height=%u, pixelformat=" - "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')" - ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u" - ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n", + ", fmt.pix={width=%u, height=%u, pixelformat=", request, buf_type_string, - f->fmt.pix.width, f->fmt.pix.height, - cc0(magic), cc1(magic), cc2(magic), cc3(magic), + f->fmt.pix.width, f->fmt.pix.height); + + if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE) + printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')", + cc0(magic), cc1(magic), cc2(magic), cc3(magic)); + else + printf("v4l2_fourcc('%c', '%c', '%c', '%c') " + "/* V4L2_PIX_FMT_SPCA508 */", + cc0(pf_magic), cc1(pf_magic), cc2(pf_magic), + cc3(pf_magic)); + + errno = saved_errno; + printf(", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u" + ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n", f->fmt.pix.bytesperline, f->fmt.pix.sizeimage); break; @@ -179,16 +207,25 @@ dprint_ioctl_v4l2(struct v4l2_format *const f, case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: { unsigned int i; + saved_errno = errno; printf("ioctl(-1, %s" ", {type=%s" - ", fmt.pix_mp={width=%u, height=%u, pixelformat=" - "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')" - ", field=V4L2_FIELD_NONE, colorspace=" - "V4L2_COLORSPACE_JPEG, plane_fmt=[", + ", fmt.pix_mp={width=%u, height=%u, pixelformat=", request, buf_type_string, - f->fmt.pix_mp.width, f->fmt.pix_mp.height, - cc0(magic), cc1(magic), cc2(magic), cc3(magic)); + f->fmt.pix_mp.width, f->fmt.pix_mp.height); + + if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) + printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')", + cc0(magic), cc1(magic), cc2(magic), cc3(magic)); + else + printf("v4l2_fourcc('%c', '%c', '%c', '%c') " + "/* V4L2_PIX_FMT_SPCA508 */", + cc0(pf_magic), cc1(pf_magic), cc2(pf_magic), + cc3(pf_magic)); + + printf(", field=V4L2_FIELD_NONE, colorspace=" + "V4L2_COLORSPACE_JPEG, plane_fmt=["); for (i = 0; i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt); ++i) { @@ -198,6 +235,7 @@ dprint_ioctl_v4l2(struct v4l2_format *const f, f->fmt.pix_mp.plane_fmt[i].sizeimage, f->fmt.pix_mp.plane_fmt[i].bytesperline); } + errno = saved_errno; printf("], num_planes=%u}}) = -1 EBADF (%m)\n", f->fmt.pix_mp.num_planes); break; @@ -238,18 +276,28 @@ dprint_ioctl_v4l2(struct v4l2_format *const f, break; case V4L2_BUF_TYPE_VBI_CAPTURE: case V4L2_BUF_TYPE_VBI_OUTPUT: + saved_errno = errno; printf("ioctl(-1, %s, {type=%s" ", fmt.vbi={sampling_rate=%u, offset=%u" - ", samples_per_line=%u, sample_format=" - "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')" - ", start=[%u, %u], count=[%u, %u]" - ", flags=V4L2_VBI_INTERLACED}})" - " = -1 EBADF (%m)\n", + ", samples_per_line=%u, sample_format=", request, buf_type_string, f->fmt.vbi.sampling_rate, f->fmt.vbi.offset, - f->fmt.vbi.samples_per_line, - cc0(magic), cc1(magic), cc2(magic), cc3(magic), + f->fmt.vbi.samples_per_line); + + if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE) + printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')", + cc0(magic), cc1(magic), cc2(magic), cc3(magic)); + else + printf("v4l2_fourcc('%c', '%c', '%c', '%c') " + "/* V4L2_PIX_FMT_SPCA508 */", + cc0(pf_magic), cc1(pf_magic), cc2(pf_magic), + cc3(pf_magic)); + + errno = saved_errno; + printf(", start=[%u, %u], count=[%u, %u]" + ", flags=V4L2_VBI_INTERLACED}})" + " = -1 EBADF (%m)\n", f->fmt.vbi.start[0], f->fmt.vbi.start[1], f->fmt.vbi.count[0], f->fmt.vbi.count[1]); break; @@ -289,16 +337,29 @@ dprint_ioctl_v4l2(struct v4l2_format *const f, #endif #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE case V4L2_BUF_TYPE_SDR_CAPTURE: + saved_errno = errno; printf("ioctl(-1, %s, {type=%s" - ", fmt.sdr={pixelformat=v4l2_fourcc('\\x%x', '\\x%x'," - " '\\x%x', '\\x%x')" + ", fmt.sdr={pixelformat=", + request, + buf_type_string); + + if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE) + printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')", + cc0(magic), cc1(magic), cc2(magic), cc3(magic)); +# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT + else + printf("v4l2_fourcc('%c', '%c', '%c', '%c') " + "/* V4L2_SDR_FMT_RU12LE */", + cc0(sf_magic), cc1(sf_magic), cc2(sf_magic), + cc3(sf_magic)); +# endif + + errno = saved_errno; + printf( #ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE ", buffersize=%u" #endif - "}}) = -1 EBADF (%m)\n", - request, - buf_type_string, - cc0(magic), cc1(magic), cc2(magic), cc3(magic) + "}}) = -1 EBADF (%m)\n" #ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE , f->fmt.sdr.buffersize #endif @@ -75,14 +75,22 @@ typedef struct v4l2_standard struct_v4l2_standard; #define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33) #endif +/* v4l2_fourcc_be was added by Linux commit v3.18-rc1~101^2^2~127 */ +#ifndef v4l2_fourcc_be +# define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31)) +#endif + #define FMT_FRACT "%u/%u" #define ARGS_FRACT(x) ((x).numerator), ((x).denominator) #define FMT_RECT "{left=%d, top=%d, width=%u, height=%u}" #define ARGS_RECT(x) (x).left, (x).top, (x).width, (x).height +#include "xlat/v4l2_pix_fmts.h" +#include "xlat/v4l2_sdr_fmts.h" + static void -print_pixelformat(uint32_t fourcc) +print_pixelformat(uint32_t fourcc, const struct xlat *xlat) { unsigned char a[] = { (unsigned char) fourcc, @@ -129,6 +137,13 @@ print_pixelformat(uint32_t fourcc) } } tprints(")"); + + if (xlat) { + const char *pixfmt_name = xlookup(xlat, fourcc); + + if (pixfmt_name) + tprints_comment(pixfmt_name); + } } #include "xlat/v4l2_device_capabilities_flags.h" @@ -184,7 +199,7 @@ print_v4l2_fmtdesc(struct tcb *const tcp, const kernel_ulong_t arg) "V4L2_FMT_FLAG_???"); PRINT_FIELD_CSTRING(", ", f, description); tprints(", pixelformat="); - print_pixelformat(f.pixelformat); + print_pixelformat(f.pixelformat, v4l2_pix_fmts); } tprints("}"); return RVAL_IOCTL_DECODED; @@ -214,7 +229,7 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix, tprints(prefix); tprintf("fmt.pix={width=%u, height=%u, pixelformat=", f->fmt.pix.width, f->fmt.pix.height); - print_pixelformat(f->fmt.pix.pixelformat); + print_pixelformat(f->fmt.pix.pixelformat, v4l2_pix_fmts); tprints(", field="); printxval(v4l2_fields, f->fmt.pix.field, "V4L2_FIELD_???"); tprintf(", bytesperline=%u, sizeimage=%u, colorspace=", @@ -231,7 +246,7 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix, tprints(prefix); tprintf("fmt.pix_mp={width=%u, height=%u, pixelformat=", f->fmt.pix_mp.width, f->fmt.pix_mp.height); - print_pixelformat(f->fmt.pix_mp.pixelformat); + print_pixelformat(f->fmt.pix_mp.pixelformat, v4l2_pix_fmts); tprints(", field="); printxval(v4l2_fields, f->fmt.pix_mp.field, "V4L2_FIELD_???"); tprints(", colorspace="); @@ -282,7 +297,7 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix, "samples_per_line=%u, sample_format=", f->fmt.vbi.sampling_rate, f->fmt.vbi.offset, f->fmt.vbi.samples_per_line); - print_pixelformat(f->fmt.vbi.sample_format); + print_pixelformat(f->fmt.vbi.sample_format, v4l2_pix_fmts); tprintf(", start=[%u, %u], count=[%u, %u], ", f->fmt.vbi.start[0], f->fmt.vbi.start[1], f->fmt.vbi.count[0], f->fmt.vbi.count[1]); @@ -329,7 +344,7 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix, case V4L2_BUF_TYPE_SDR_CAPTURE: tprints(prefix); tprints("fmt.sdr={pixelformat="); - print_pixelformat(f->fmt.sdr.pixelformat); + print_pixelformat(f->fmt.sdr.pixelformat, v4l2_sdr_fmts); #ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE tprintf(", buffersize=%u", f->fmt.sdr.buffersize); @@ -873,7 +888,7 @@ print_v4l2_frmsizeenum(struct tcb *const tcp, const kernel_ulong_t arg) if (umove_or_printaddr(tcp, arg, &s)) return RVAL_IOCTL_DECODED; tprintf("{index=%u, pixel_format=", s.index); - print_pixelformat(s.pixel_format); + print_pixelformat(s.pixel_format, v4l2_pix_fmts); return 0; } @@ -913,7 +928,7 @@ print_v4l2_frmivalenum(struct tcb *const tcp, const kernel_ulong_t arg) if (umove_or_printaddr(tcp, arg, &f)) return RVAL_IOCTL_DECODED; tprintf("{index=%u, pixel_format=", f.index); - print_pixelformat(f.pixel_format); + print_pixelformat(f.pixel_format, v4l2_pix_fmts); tprintf(", width=%u, height=%u", f.width, f.height); return 0; } diff --git a/xlat/v4l2_pix_fmts.in b/xlat/v4l2_pix_fmts.in new file mode 100644 index 000000000..1c7e8f686 --- /dev/null +++ b/xlat/v4l2_pix_fmts.in @@ -0,0 +1,153 @@ +V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ +V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ +V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ +V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */ +V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ +V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */ +V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ +V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ +V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ +V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ +V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */ +V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ +V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ +V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ +V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ +V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ +V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */ +V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */ +V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ +V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ +V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ +V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ +V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ +V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ +V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ +V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ +V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ +V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ +V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ +V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ +V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ') /* 8 UV 4:4 */ +V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ +V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ +V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ +V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ +V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ +V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */ +V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */ +V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ +V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ +V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ +V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ +V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ +V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ +V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ +V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ +V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ +V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ +V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ +V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ +V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ +V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ +V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */ +V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */ +V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ +V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */ +V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ +V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ +V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 12 YVU411 planar */ +V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ +V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ +V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ +V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ +V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */ +V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16 YUV422 planar */ +V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16 YVU422 planar */ +V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */ +V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */ +V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ +V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ +V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ +V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ +V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */ +V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ +V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ +V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ +V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A') +V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A') +V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A') +V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A') +V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8') +V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8') +V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8') +V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8') +V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8') +V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8') +V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') +V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8') +V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12 BGBG.. GRGR.. */ +V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ +V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ +V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ +V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C') +V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') +V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') +V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C') +V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ +V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */ +V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */ +V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16 RGRG.. GBGB.. */ +V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3') +V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4') +V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */ +V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */ +V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */ +V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ +V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ +V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ +V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ +V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ +V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ +V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ +V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */ +V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ +V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ +V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ +V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */ +V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */ +V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ +V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ +V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ +V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ +V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ +V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ +V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ +V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */ +V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */ +V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */ +V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */ +V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */ +V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ +V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed RGGB bayer */ +V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */ +V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ +V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ +V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ +V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ +V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */ +V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */ +V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */ +V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ +V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ +V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ +V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ +V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */ +V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */ +V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ +V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ +V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ +V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ +V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */ +V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */ +V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 packed 10-bit RGGB bayer */ diff --git a/xlat/v4l2_sdr_fmts.in b/xlat/v4l2_sdr_fmts.in new file mode 100644 index 000000000..b8aec9196 --- /dev/null +++ b/xlat/v4l2_sdr_fmts.in @@ -0,0 +1,8 @@ +V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ +V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ +V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */ +V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ +V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ +V4L2_SDR_FMT_PCU16BE v4l2_fourcc('P', 'C', '1', '6') /* planar complex u16be */ +V4L2_SDR_FMT_PCU18BE v4l2_fourcc('P', 'C', '1', '8') /* planar complex u18be */ +V4L2_SDR_FMT_PCU20BE v4l2_fourcc('P', 'C', '2', '0') /* planar complex u20be */ |