.. | .. |
---|
80 | 80 | /* Four-character-code (FOURCC) */ |
---|
81 | 81 | #define v4l2_fourcc(a, b, c, d)\ |
---|
82 | 82 | ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24)) |
---|
83 | | -#define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31)) |
---|
| 83 | +#define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1U << 31)) |
---|
84 | 84 | |
---|
85 | 85 | /* |
---|
86 | 86 | * E N U M S |
---|
.. | .. |
---|
130 | 130 | ((field) == V4L2_FIELD_BOTTOM ||\ |
---|
131 | 131 | (field) == V4L2_FIELD_TOP ||\ |
---|
132 | 132 | (field) == V4L2_FIELD_ALTERNATE) |
---|
| 133 | +#define V4L2_FIELD_IS_INTERLACED(field) \ |
---|
| 134 | + ((field) == V4L2_FIELD_INTERLACED ||\ |
---|
| 135 | + (field) == V4L2_FIELD_INTERLACED_TB ||\ |
---|
| 136 | + (field) == V4L2_FIELD_INTERLACED_BT) |
---|
| 137 | +#define V4L2_FIELD_IS_SEQUENTIAL(field) \ |
---|
| 138 | + ((field) == V4L2_FIELD_SEQ_TB ||\ |
---|
| 139 | + (field) == V4L2_FIELD_SEQ_BT) |
---|
133 | 140 | |
---|
134 | 141 | enum v4l2_buf_type { |
---|
135 | 142 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, |
---|
.. | .. |
---|
163 | 170 | || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT \ |
---|
164 | 171 | || (type) == V4L2_BUF_TYPE_SDR_OUTPUT \ |
---|
165 | 172 | || (type) == V4L2_BUF_TYPE_META_OUTPUT) |
---|
| 173 | + |
---|
| 174 | +#define V4L2_TYPE_IS_CAPTURE(type) (!V4L2_TYPE_IS_OUTPUT(type)) |
---|
166 | 175 | |
---|
167 | 176 | enum v4l2_tuner_type { |
---|
168 | 177 | V4L2_TUNER_RADIO = 1, |
---|
.. | .. |
---|
414 | 423 | __u32 denominator; |
---|
415 | 424 | }; |
---|
416 | 425 | |
---|
| 426 | +struct v4l2_area { |
---|
| 427 | + __u32 width; |
---|
| 428 | + __u32 height; |
---|
| 429 | +}; |
---|
| 430 | + |
---|
417 | 431 | /** |
---|
418 | 432 | * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP |
---|
419 | 433 | * |
---|
.. | .. |
---|
474 | 488 | |
---|
475 | 489 | #define V4L2_CAP_TOUCH 0x10000000 /* Is a touch device */ |
---|
476 | 490 | |
---|
| 491 | +#define V4L2_CAP_IO_MC 0x20000000 /* Is input/output controlled by the media controller */ |
---|
| 492 | + |
---|
477 | 493 | #define V4L2_CAP_DEVICE_CAPS 0x80000000 /* sets device capabilities field */ |
---|
478 | 494 | |
---|
479 | 495 | /* |
---|
.. | .. |
---|
506 | 522 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ |
---|
507 | 523 | #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ |
---|
508 | 524 | #define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */ |
---|
| 525 | +#define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2') /* 16 rrrrgggg bbbbaaaa */ |
---|
| 526 | +#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */ |
---|
| 527 | +#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */ |
---|
| 528 | +#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */ |
---|
| 529 | + |
---|
| 530 | +/* |
---|
| 531 | + * Originally this had 'BA12' as fourcc, but this clashed with the older |
---|
| 532 | + * V4L2_PIX_FMT_SGRBG12 which inexplicably used that same fourcc. |
---|
| 533 | + * So use 'GA12' instead for V4L2_PIX_FMT_BGRA444. |
---|
| 534 | + */ |
---|
| 535 | +#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */ |
---|
| 536 | +#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */ |
---|
509 | 537 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ |
---|
510 | 538 | #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */ |
---|
511 | 539 | #define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ |
---|
| 540 | +#define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5') /* 16 RGBA-5-5-5-1 */ |
---|
| 541 | +#define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5') /* 16 RGBX-5-5-5-1 */ |
---|
| 542 | +#define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5') /* 16 ABGR-1-5-5-5 */ |
---|
| 543 | +#define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5') /* 16 XBGR-1-5-5-5 */ |
---|
| 544 | +#define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5') /* 16 BGRA-5-5-5-1 */ |
---|
| 545 | +#define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5') /* 16 BGRX-5-5-5-1 */ |
---|
512 | 546 | #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ |
---|
513 | 547 | #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */ |
---|
514 | 548 | #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ |
---|
.. | .. |
---|
520 | 554 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ |
---|
521 | 555 | #define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */ |
---|
522 | 556 | #define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */ |
---|
| 557 | +#define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4') /* 32 ABGR-8-8-8-8 */ |
---|
| 558 | +#define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4') /* 32 XBGR-8-8-8-8 */ |
---|
523 | 559 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ |
---|
| 560 | +#define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4') /* 32 RGBA-8-8-8-8 */ |
---|
| 561 | +#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */ |
---|
524 | 562 | #define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ |
---|
525 | 563 | #define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ |
---|
526 | 564 | |
---|
.. | .. |
---|
530 | 568 | #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ |
---|
531 | 569 | #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ |
---|
532 | 570 | #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ |
---|
| 571 | +#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */ |
---|
533 | 572 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ |
---|
534 | 573 | #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ |
---|
535 | 574 | |
---|
.. | .. |
---|
554 | 593 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ |
---|
555 | 594 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ |
---|
556 | 595 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ |
---|
| 596 | +#define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V') /* 32 AYUV-8-8-8-8 */ |
---|
| 597 | +#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */ |
---|
| 598 | +#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */ |
---|
| 599 | +#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */ |
---|
557 | 600 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ |
---|
558 | 601 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ |
---|
559 | 602 | #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ |
---|
.. | .. |
---|
565 | 608 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ |
---|
566 | 609 | #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ |
---|
567 | 610 | #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ |
---|
568 | | - |
---|
569 | | -/* NV12_512 8-bit Y/CbCr 4:2:0 */ |
---|
570 | | -#define V4L2_PIX_FMT_NV12_512 v4l2_fourcc('Q', '5', '1', '2') |
---|
571 | | - |
---|
572 | | -/* UBWC 8-bit Y/CbCr 4:2:0 */ |
---|
573 | | -#define V4L2_PIX_FMT_NV12_UBWC v4l2_fourcc('Q', '1', '2', '8') |
---|
574 | | -/* UBWC 10-bit Y/CbCr 4:2:0 */ |
---|
575 | | -#define V4L2_PIX_FMT_NV12_TP10_UBWC v4l2_fourcc('Q', '1', '2', 'A') |
---|
576 | 611 | |
---|
577 | 612 | /* two non contiguous planes - one Y, one Cr + Cb interleaved */ |
---|
578 | 613 | #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ |
---|
.. | .. |
---|
631 | 666 | #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') |
---|
632 | 667 | #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') |
---|
633 | 668 | #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C') |
---|
| 669 | +#define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14 BGBG.. GRGR.. */ |
---|
| 670 | +#define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') /* 14 GBGB.. RGRG.. */ |
---|
| 671 | +#define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4') /* 14 GRGR.. BGBG.. */ |
---|
| 672 | +#define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') /* 14 RGRG.. GBGB.. */ |
---|
634 | 673 | /* 14bit raw bayer packed, 7 bytes for every 4 pixels */ |
---|
635 | 674 | #define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E') |
---|
636 | 675 | #define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E') |
---|
.. | .. |
---|
657 | 696 | #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ |
---|
658 | 697 | #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ |
---|
659 | 698 | #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ |
---|
| 699 | +#define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice data */ |
---|
660 | 700 | #define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */ |
---|
661 | 701 | #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ |
---|
662 | 702 | #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ |
---|
.. | .. |
---|
665 | 705 | #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */ |
---|
666 | 706 | #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */ |
---|
667 | 707 | #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */ |
---|
| 708 | +#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */ |
---|
668 | 709 | |
---|
669 | 710 | /* Vendor-specific formats */ |
---|
670 | 711 | #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ |
---|
.. | .. |
---|
698 | 739 | #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ |
---|
699 | 740 | #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ |
---|
700 | 741 | #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ |
---|
701 | | -#define V4L2_PIX_FMT_FBC2 v4l2_fourcc('F', 'B', 'C', '2') /* Rockchip yuv422sp frame buffer compression encoder */ |
---|
702 | | -#define V4L2_PIX_FMT_FBC0 v4l2_fourcc('F', 'B', 'C', '0') /* Rockchip yuv420sp frame buffer compression encoder */ |
---|
703 | | -#define V4L2_PIX_FMT_FBCG v4l2_fourcc('F', 'B', 'C', 'G') |
---|
704 | | -#define V4l2_PIX_FMT_EBD8 v4l2_fourcc('E', 'B', 'D', '8') /* embedded data 8-bit */ |
---|
705 | | -#define V4l2_PIX_FMT_SPD16 v4l2_fourcc('S', 'P', 'D', '6') /* shield pix data 16-bit */ |
---|
| 742 | +#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */ |
---|
| 743 | +#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */ |
---|
706 | 744 | |
---|
707 | 745 | /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ |
---|
708 | 746 | #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ |
---|
709 | 747 | #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g') /* IPU3 packed 10-bit GBRG bayer */ |
---|
710 | 748 | #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */ |
---|
711 | 749 | #define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r') /* IPU3 packed 10-bit RGGB bayer */ |
---|
712 | | -#define V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010_VENUS \ |
---|
713 | | - v4l2_fourcc('Q', 'P', '1', '0') /* Y/CbCr 4:2:0 P10 Venus*/ |
---|
714 | 750 | |
---|
715 | 751 | /* SDR formats - used only for Software Defined Radio devices */ |
---|
716 | 752 | #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ |
---|
.. | .. |
---|
732 | 768 | #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */ |
---|
733 | 769 | #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ |
---|
734 | 770 | #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ |
---|
735 | | - |
---|
736 | | -/* Vendor specific - used for Rockchip ISP1 camera sub-system */ |
---|
737 | | -#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 params */ |
---|
738 | | -#define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A statistics */ |
---|
739 | | -#define V4L2_META_FMT_RK_ISP1_STAT_LUMA v4l2_fourcc('R', 'K', '1', 'L') /* Rockchip ISP1 luma statistics */ |
---|
740 | | - |
---|
741 | | -#define V4L2_META_FMT_RK_ISPP_PARAMS v4l2_fourcc('R', 'K', 'P', 'P') /* Rockchip ISPP params */ |
---|
742 | | -#define V4L2_META_FMT_RK_ISPP_STAT v4l2_fourcc('R', 'K', 'P', 'S') /* Rockchip ISPP statistics */ |
---|
| 771 | +#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ |
---|
| 772 | +#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */ |
---|
743 | 773 | |
---|
744 | 774 | /* priv field value to indicates that subsequent fields are valid. */ |
---|
745 | 775 | #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe |
---|
746 | 776 | |
---|
747 | 777 | /* Flags */ |
---|
748 | 778 | #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001 |
---|
| 779 | +#define V4L2_PIX_FMT_FLAG_SET_CSC 0x00000002 |
---|
749 | 780 | |
---|
750 | 781 | /* |
---|
751 | 782 | * F O R M A T E N U M E R A T I O N |
---|
.. | .. |
---|
756 | 787 | __u32 flags; |
---|
757 | 788 | __u8 description[32]; /* Description string */ |
---|
758 | 789 | __u32 pixelformat; /* Format fourcc */ |
---|
759 | | - __u32 reserved[4]; |
---|
| 790 | + __u32 mbus_code; /* Media bus code */ |
---|
| 791 | + __u32 reserved[3]; |
---|
760 | 792 | }; |
---|
761 | 793 | |
---|
762 | | -#define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
---|
763 | | -#define V4L2_FMT_FLAG_EMULATED 0x0002 |
---|
| 794 | +#define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
---|
| 795 | +#define V4L2_FMT_FLAG_EMULATED 0x0002 |
---|
| 796 | +#define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM 0x0004 |
---|
| 797 | +#define V4L2_FMT_FLAG_DYN_RESOLUTION 0x0008 |
---|
| 798 | +#define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL 0x0010 |
---|
| 799 | +#define V4L2_FMT_FLAG_CSC_COLORSPACE 0x0020 |
---|
| 800 | +#define V4L2_FMT_FLAG_CSC_XFER_FUNC 0x0040 |
---|
| 801 | +#define V4L2_FMT_FLAG_CSC_YCBCR_ENC 0x0080 |
---|
| 802 | +#define V4L2_FMT_FLAG_CSC_HSV_ENC V4L2_FMT_FLAG_CSC_YCBCR_ENC |
---|
| 803 | +#define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100 |
---|
764 | 804 | |
---|
765 | 805 | /* Frame Size and frame rate enumeration */ |
---|
766 | 806 | /* |
---|
.. | .. |
---|
889 | 929 | /* |
---|
890 | 930 | * M E M O R Y - M A P P I N G B U F F E R S |
---|
891 | 931 | */ |
---|
| 932 | + |
---|
| 933 | +#ifdef __KERNEL__ |
---|
| 934 | +/* |
---|
| 935 | + * This corresponds to the user space version of timeval |
---|
| 936 | + * for 64-bit time_t. sparc64 is different from everyone |
---|
| 937 | + * else, using the microseconds in the wrong half of the |
---|
| 938 | + * second 64-bit word. |
---|
| 939 | + */ |
---|
| 940 | +struct __kernel_v4l2_timeval { |
---|
| 941 | + long long tv_sec; |
---|
| 942 | +#if defined(__sparc__) && defined(__arch64__) |
---|
| 943 | + int tv_usec; |
---|
| 944 | + int __pad; |
---|
| 945 | +#else |
---|
| 946 | + long long tv_usec; |
---|
| 947 | +#endif |
---|
| 948 | +}; |
---|
| 949 | +#endif |
---|
| 950 | + |
---|
892 | 951 | struct v4l2_requestbuffers { |
---|
893 | 952 | __u32 count; |
---|
894 | 953 | __u32 type; /* enum v4l2_buf_type */ |
---|
895 | 954 | __u32 memory; /* enum v4l2_memory */ |
---|
896 | | - __u32 reserved[2]; |
---|
| 955 | + __u32 capabilities; |
---|
| 956 | + __u32 reserved[1]; |
---|
897 | 957 | }; |
---|
| 958 | + |
---|
| 959 | +/* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */ |
---|
| 960 | +#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0) |
---|
| 961 | +#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1) |
---|
| 962 | +#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2) |
---|
| 963 | +#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3) |
---|
| 964 | +#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) |
---|
| 965 | +#define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) |
---|
| 966 | +#define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6) |
---|
898 | 967 | |
---|
899 | 968 | /** |
---|
900 | 969 | * struct v4l2_plane - plane info for multi-planar buffers |
---|
.. | .. |
---|
910 | 979 | * descriptor associated with this plane |
---|
911 | 980 | * @data_offset: offset in the plane to the start of data; usually 0, |
---|
912 | 981 | * unless there is a header in front of the data |
---|
913 | | - * |
---|
| 982 | + * @reserved: few userspace clients and drivers use reserved fields |
---|
| 983 | + * and it is up to them how these fields are used. v4l2 |
---|
| 984 | + * simply copy reserved fields between them. |
---|
914 | 985 | * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer |
---|
915 | 986 | * with two planes can have one plane for Y, and another for interleaved CbCr |
---|
916 | 987 | * components. Each plane can reside in a separate memory buffer, or even in |
---|
.. | .. |
---|
925 | 996 | __s32 fd; |
---|
926 | 997 | } m; |
---|
927 | 998 | __u32 data_offset; |
---|
| 999 | + /* reserved fields used by few userspace clients and drivers */ |
---|
928 | 1000 | __u32 reserved[11]; |
---|
929 | 1001 | }; |
---|
930 | 1002 | |
---|
.. | .. |
---|
954 | 1026 | * @length: size in bytes of the buffer (NOT its payload) for single-plane |
---|
955 | 1027 | * buffers (when type != *_MPLANE); number of elements in the |
---|
956 | 1028 | * planes array for multi-plane buffers |
---|
| 1029 | + * @request_fd: fd of the request that this buffer should use |
---|
957 | 1030 | * |
---|
958 | 1031 | * Contains data exchanged by application and driver using one of the Streaming |
---|
959 | 1032 | * I/O methods. |
---|
.. | .. |
---|
964 | 1037 | __u32 bytesused; |
---|
965 | 1038 | __u32 flags; |
---|
966 | 1039 | __u32 field; |
---|
| 1040 | +#ifdef __KERNEL__ |
---|
| 1041 | + struct __kernel_v4l2_timeval timestamp; |
---|
| 1042 | +#else |
---|
967 | 1043 | struct timeval timestamp; |
---|
| 1044 | +#endif |
---|
968 | 1045 | struct v4l2_timecode timecode; |
---|
969 | 1046 | __u32 sequence; |
---|
970 | 1047 | |
---|
.. | .. |
---|
978 | 1055 | } m; |
---|
979 | 1056 | __u32 length; |
---|
980 | 1057 | __u32 reserved2; |
---|
981 | | - __u32 reserved; |
---|
| 1058 | + union { |
---|
| 1059 | + __s32 request_fd; |
---|
| 1060 | + __u32 reserved; |
---|
| 1061 | + }; |
---|
982 | 1062 | }; |
---|
| 1063 | + |
---|
| 1064 | +#ifndef __KERNEL__ |
---|
| 1065 | +/** |
---|
| 1066 | + * v4l2_timeval_to_ns - Convert timeval to nanoseconds |
---|
| 1067 | + * @ts: pointer to the timeval variable to be converted |
---|
| 1068 | + * |
---|
| 1069 | + * Returns the scalar nanosecond representation of the timeval |
---|
| 1070 | + * parameter. |
---|
| 1071 | + */ |
---|
| 1072 | +static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv) |
---|
| 1073 | +{ |
---|
| 1074 | + return (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000; |
---|
| 1075 | +} |
---|
| 1076 | +#endif |
---|
983 | 1077 | |
---|
984 | 1078 | /* Flags for 'flags' field */ |
---|
985 | 1079 | /* Buffer is mapped (flag) */ |
---|
.. | .. |
---|
996 | 1090 | #define V4L2_BUF_FLAG_BFRAME 0x00000020 |
---|
997 | 1091 | /* Buffer is ready, but the data contained within is corrupted. */ |
---|
998 | 1092 | #define V4L2_BUF_FLAG_ERROR 0x00000040 |
---|
| 1093 | +/* Buffer is added to an unqueued request */ |
---|
| 1094 | +#define V4L2_BUF_FLAG_IN_REQUEST 0x00000080 |
---|
999 | 1095 | /* timecode field is valid */ |
---|
1000 | 1096 | #define V4L2_BUF_FLAG_TIMECODE 0x00000100 |
---|
| 1097 | +/* Don't return the capture buffer until OUTPUT timestamp changes */ |
---|
| 1098 | +#define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200 |
---|
1001 | 1099 | /* Buffer is prepared for queuing */ |
---|
1002 | 1100 | #define V4L2_BUF_FLAG_PREPARED 0x00000400 |
---|
1003 | 1101 | /* Cache handling flags */ |
---|
.. | .. |
---|
1014 | 1112 | #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000 |
---|
1015 | 1113 | /* mem2mem encoder/decoder */ |
---|
1016 | 1114 | #define V4L2_BUF_FLAG_LAST 0x00100000 |
---|
| 1115 | +/* request_fd is valid */ |
---|
| 1116 | +#define V4L2_BUF_FLAG_REQUEST_FD 0x00800000 |
---|
1017 | 1117 | |
---|
1018 | 1118 | /** |
---|
1019 | 1119 | * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor |
---|
.. | .. |
---|
1163 | 1263 | |
---|
1164 | 1264 | typedef __u64 v4l2_std_id; |
---|
1165 | 1265 | |
---|
| 1266 | +/* |
---|
| 1267 | + * Attention: Keep the V4L2_STD_* bit definitions in sync with |
---|
| 1268 | + * include/dt-bindings/display/sdtv-standards.h SDTV_STD_* bit definitions. |
---|
| 1269 | + */ |
---|
1166 | 1270 | /* one bit for each */ |
---|
1167 | 1271 | #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001) |
---|
1168 | 1272 | #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002) |
---|
.. | .. |
---|
1437 | 1541 | * InfoFrame). |
---|
1438 | 1542 | */ |
---|
1439 | 1543 | #define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8) |
---|
| 1544 | +/* |
---|
| 1545 | + * CEA-861 specific: only valid for video receivers. |
---|
| 1546 | + * If set, then HW can detect the difference between regular FPS and |
---|
| 1547 | + * 1000/1001 FPS. Note: This flag is only valid for HDMI VIC codes with |
---|
| 1548 | + * the V4L2_DV_FL_CAN_REDUCE_FPS flag set. |
---|
| 1549 | + */ |
---|
| 1550 | +#define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9) |
---|
1440 | 1551 | |
---|
1441 | 1552 | /* A few useful defines to calculate the total blanking and frame sizes */ |
---|
1442 | 1553 | #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ |
---|
.. | .. |
---|
1445 | 1556 | ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) |
---|
1446 | 1557 | #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ |
---|
1447 | 1558 | ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ |
---|
1448 | | - (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) |
---|
| 1559 | + ((bt)->interlaced ? \ |
---|
| 1560 | + ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0)) |
---|
1449 | 1561 | #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ |
---|
1450 | 1562 | ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) |
---|
1451 | 1563 | |
---|
.. | .. |
---|
1623 | 1735 | __u8 __user *p_u8; |
---|
1624 | 1736 | __u16 __user *p_u16; |
---|
1625 | 1737 | __u32 __user *p_u32; |
---|
| 1738 | + struct v4l2_area __user *p_area; |
---|
1626 | 1739 | void __user *ptr; |
---|
1627 | 1740 | }; |
---|
1628 | 1741 | } __attribute__ ((packed)); |
---|
.. | .. |
---|
1636 | 1749 | }; |
---|
1637 | 1750 | __u32 count; |
---|
1638 | 1751 | __u32 error_idx; |
---|
1639 | | - __u32 reserved[2]; |
---|
| 1752 | + __s32 request_fd; |
---|
| 1753 | + __u32 reserved[1]; |
---|
1640 | 1754 | struct v4l2_ext_control *controls; |
---|
1641 | 1755 | }; |
---|
1642 | 1756 | |
---|
.. | .. |
---|
1649 | 1763 | #define V4L2_CTRL_MAX_DIMS (4) |
---|
1650 | 1764 | #define V4L2_CTRL_WHICH_CUR_VAL 0 |
---|
1651 | 1765 | #define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000 |
---|
| 1766 | +#define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000 |
---|
1652 | 1767 | |
---|
1653 | 1768 | enum v4l2_ctrl_type { |
---|
1654 | 1769 | V4L2_CTRL_TYPE_INTEGER = 1, |
---|
.. | .. |
---|
1666 | 1781 | V4L2_CTRL_TYPE_U8 = 0x0100, |
---|
1667 | 1782 | V4L2_CTRL_TYPE_U16 = 0x0101, |
---|
1668 | 1783 | V4L2_CTRL_TYPE_U32 = 0x0102, |
---|
| 1784 | + V4L2_CTRL_TYPE_AREA = 0x0106, |
---|
| 1785 | + |
---|
| 1786 | + V4L2_CTRL_TYPE_HDR10_CLL_INFO = 0x0110, |
---|
| 1787 | + V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 0x0111, |
---|
| 1788 | + |
---|
| 1789 | + V4L2_CTRL_TYPE_H264_SPS = 0x0200, |
---|
| 1790 | + V4L2_CTRL_TYPE_H264_PPS = 0x0201, |
---|
| 1791 | + V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202, |
---|
| 1792 | + V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 0x0203, |
---|
| 1793 | + V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 0x0204, |
---|
| 1794 | + V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205, |
---|
1669 | 1795 | }; |
---|
1670 | 1796 | |
---|
1671 | 1797 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ |
---|
.. | .. |
---|
1921 | 2047 | #define V4L2_DEC_CMD_STOP (1) |
---|
1922 | 2048 | #define V4L2_DEC_CMD_PAUSE (2) |
---|
1923 | 2049 | #define V4L2_DEC_CMD_RESUME (3) |
---|
| 2050 | +#define V4L2_DEC_CMD_FLUSH (4) |
---|
1924 | 2051 | |
---|
1925 | 2052 | /* Flags for V4L2_DEC_CMD_START */ |
---|
1926 | 2053 | #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0) |
---|
.. | .. |
---|
2273 | 2400 | } u; |
---|
2274 | 2401 | __u32 pending; |
---|
2275 | 2402 | __u32 sequence; |
---|
| 2403 | +#ifdef __KERNEL__ |
---|
| 2404 | + struct __kernel_timespec timestamp; |
---|
| 2405 | +#else |
---|
2276 | 2406 | struct timespec timestamp; |
---|
| 2407 | +#endif |
---|
2277 | 2408 | __u32 id; |
---|
2278 | 2409 | __u32 reserved[8]; |
---|
2279 | 2410 | }; |
---|
.. | .. |
---|
2339 | 2470 | * return: number of created buffers |
---|
2340 | 2471 | * @memory: enum v4l2_memory; buffer memory type |
---|
2341 | 2472 | * @format: frame format, for which buffers are requested |
---|
| 2473 | + * @capabilities: capabilities of this buffer type. |
---|
2342 | 2474 | * @reserved: future extensions |
---|
2343 | 2475 | */ |
---|
2344 | 2476 | struct v4l2_create_buffers { |
---|
.. | .. |
---|
2346 | 2478 | __u32 count; |
---|
2347 | 2479 | __u32 memory; |
---|
2348 | 2480 | struct v4l2_format format; |
---|
2349 | | - __u32 reserved[8]; |
---|
| 2481 | + __u32 capabilities; |
---|
| 2482 | + __u32 reserved[7]; |
---|
2350 | 2483 | }; |
---|
2351 | 2484 | |
---|
2352 | 2485 | /* |
---|