| .. | .. |
|---|
| 50 | 50 | #ifndef __LINUX_V4L2_CONTROLS_H |
|---|
| 51 | 51 | #define __LINUX_V4L2_CONTROLS_H |
|---|
| 52 | 52 | |
|---|
| 53 | +#include <linux/types.h> |
|---|
| 54 | + |
|---|
| 53 | 55 | /* Control classes */ |
|---|
| 54 | 56 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ |
|---|
| 55 | 57 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ |
|---|
| .. | .. |
|---|
| 63 | 65 | #define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */ |
|---|
| 64 | 66 | #define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */ |
|---|
| 65 | 67 | #define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */ |
|---|
| 68 | +#define V4L2_CTRL_CLASS_COLORIMETRY 0x00a50000 /* Colorimetry controls */ |
|---|
| 66 | 69 | |
|---|
| 67 | 70 | /* User-class control IDs */ |
|---|
| 68 | 71 | |
|---|
| .. | .. |
|---|
| 186 | 189 | */ |
|---|
| 187 | 190 | #define V4L2_CID_USER_MAX217X_BASE (V4L2_CID_USER_BASE + 0x1090) |
|---|
| 188 | 191 | |
|---|
| 189 | | -/* The base for the tc35874x driver controls. |
|---|
| 192 | +/* |
|---|
| 193 | + * The base for the tc35874x driver controls. |
|---|
| 190 | 194 | * We reserve 16 controls for this driver. |
|---|
| 191 | 195 | */ |
|---|
| 192 | 196 | #define V4L2_CID_USER_TC35874X_BASE (V4L2_CID_USER_BASE + 0x10a0) |
|---|
| .. | .. |
|---|
| 194 | 198 | /* The base for the imx driver controls. |
|---|
| 195 | 199 | * We reserve 16 controls for this driver. */ |
|---|
| 196 | 200 | #define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0) |
|---|
| 201 | + |
|---|
| 202 | +/* |
|---|
| 203 | + * The base for the atmel isc driver controls. |
|---|
| 204 | + * We reserve 32 controls for this driver. |
|---|
| 205 | + */ |
|---|
| 206 | +#define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0) |
|---|
| 197 | 207 | |
|---|
| 198 | 208 | /* MPEG-class control IDs */ |
|---|
| 199 | 209 | /* The MPEG controls are applicable to all codec controls |
|---|
| .. | .. |
|---|
| 372 | 382 | enum v4l2_mpeg_video_bitrate_mode { |
|---|
| 373 | 383 | V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0, |
|---|
| 374 | 384 | V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1, |
|---|
| 385 | + V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2, |
|---|
| 375 | 386 | }; |
|---|
| 376 | 387 | #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207) |
|---|
| 377 | 388 | #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208) |
|---|
| .. | .. |
|---|
| 395 | 406 | #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221) |
|---|
| 396 | 407 | enum v4l2_mpeg_video_multi_slice_mode { |
|---|
| 397 | 408 | V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0, |
|---|
| 409 | + V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1, |
|---|
| 410 | + V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES = 2, |
|---|
| 411 | +#ifndef __KERNEL__ |
|---|
| 412 | + /* Kept for backwards compatibility reasons. Stupid typo... */ |
|---|
| 398 | 413 | V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1, |
|---|
| 399 | 414 | V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2, |
|---|
| 415 | +#endif |
|---|
| 400 | 416 | }; |
|---|
| 401 | 417 | #define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222) |
|---|
| 402 | 418 | #define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223) |
|---|
| .. | .. |
|---|
| 406 | 422 | #define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_MPEG_BASE+227) |
|---|
| 407 | 423 | #define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE+228) |
|---|
| 408 | 424 | #define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_MPEG_BASE+229) |
|---|
| 425 | +#define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (V4L2_CID_MPEG_BASE+230) |
|---|
| 426 | +#define V4L2_CID_MPEG_VIDEO_AU_DELIMITER (V4L2_CID_MPEG_BASE+231) |
|---|
| 427 | +#define V4L2_CID_MPEG_VIDEO_LTR_COUNT (V4L2_CID_MPEG_BASE+232) |
|---|
| 428 | +#define V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (V4L2_CID_MPEG_BASE+233) |
|---|
| 429 | +#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_MPEG_BASE+234) |
|---|
| 430 | +#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_MPEG_BASE+235) |
|---|
| 431 | + |
|---|
| 432 | +/* CIDs for the MPEG-2 Part 2 (H.262) codec */ |
|---|
| 433 | +#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_MPEG_BASE+270) |
|---|
| 434 | +enum v4l2_mpeg_video_mpeg2_level { |
|---|
| 435 | + V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0, |
|---|
| 436 | + V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1, |
|---|
| 437 | + V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2, |
|---|
| 438 | + V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3, |
|---|
| 439 | +}; |
|---|
| 440 | +#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_MPEG_BASE+271) |
|---|
| 441 | +enum v4l2_mpeg_video_mpeg2_profile { |
|---|
| 442 | + V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0, |
|---|
| 443 | + V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1, |
|---|
| 444 | + V4L2_MPEG_VIDEO_MPEG2_PROFILE_SNR_SCALABLE = 2, |
|---|
| 445 | + V4L2_MPEG_VIDEO_MPEG2_PROFILE_SPATIALLY_SCALABLE = 3, |
|---|
| 446 | + V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH = 4, |
|---|
| 447 | + V4L2_MPEG_VIDEO_MPEG2_PROFILE_MULTIVIEW = 5, |
|---|
| 448 | +}; |
|---|
| 449 | + |
|---|
| 450 | +/* CIDs for the FWHT codec as used by the vicodec driver. */ |
|---|
| 451 | +#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_MPEG_BASE + 290) |
|---|
| 452 | +#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_MPEG_BASE + 291) |
|---|
| 409 | 453 | |
|---|
| 410 | 454 | #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300) |
|---|
| 411 | 455 | #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301) |
|---|
| .. | .. |
|---|
| 541 | 585 | }; |
|---|
| 542 | 586 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381) |
|---|
| 543 | 587 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382) |
|---|
| 588 | +#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE+383) |
|---|
| 544 | 589 | #define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE+384) |
|---|
| 590 | +#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+385) |
|---|
| 591 | +#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+386) |
|---|
| 592 | +#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+387) |
|---|
| 593 | +#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+388) |
|---|
| 594 | +#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+389) |
|---|
| 595 | +#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+390) |
|---|
| 596 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR (V4L2_CID_MPEG_BASE+391) |
|---|
| 597 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR (V4L2_CID_MPEG_BASE+392) |
|---|
| 598 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR (V4L2_CID_MPEG_BASE+393) |
|---|
| 599 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR (V4L2_CID_MPEG_BASE+394) |
|---|
| 600 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR (V4L2_CID_MPEG_BASE+395) |
|---|
| 601 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR (V4L2_CID_MPEG_BASE+396) |
|---|
| 602 | +#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE+397) |
|---|
| 545 | 603 | #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400) |
|---|
| 546 | 604 | #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401) |
|---|
| 547 | 605 | #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402) |
|---|
| .. | .. |
|---|
| 614 | 672 | V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1, |
|---|
| 615 | 673 | V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2, |
|---|
| 616 | 674 | V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3, |
|---|
| 675 | +}; |
|---|
| 676 | +#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_MPEG_BASE+513) |
|---|
| 677 | +enum v4l2_mpeg_video_vp9_level { |
|---|
| 678 | + V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0, |
|---|
| 679 | + V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1, |
|---|
| 680 | + V4L2_MPEG_VIDEO_VP9_LEVEL_2_0 = 2, |
|---|
| 681 | + V4L2_MPEG_VIDEO_VP9_LEVEL_2_1 = 3, |
|---|
| 682 | + V4L2_MPEG_VIDEO_VP9_LEVEL_3_0 = 4, |
|---|
| 683 | + V4L2_MPEG_VIDEO_VP9_LEVEL_3_1 = 5, |
|---|
| 684 | + V4L2_MPEG_VIDEO_VP9_LEVEL_4_0 = 6, |
|---|
| 685 | + V4L2_MPEG_VIDEO_VP9_LEVEL_4_1 = 7, |
|---|
| 686 | + V4L2_MPEG_VIDEO_VP9_LEVEL_5_0 = 8, |
|---|
| 687 | + V4L2_MPEG_VIDEO_VP9_LEVEL_5_1 = 9, |
|---|
| 688 | + V4L2_MPEG_VIDEO_VP9_LEVEL_5_2 = 10, |
|---|
| 689 | + V4L2_MPEG_VIDEO_VP9_LEVEL_6_0 = 11, |
|---|
| 690 | + V4L2_MPEG_VIDEO_VP9_LEVEL_6_1 = 12, |
|---|
| 691 | + V4L2_MPEG_VIDEO_VP9_LEVEL_6_2 = 13, |
|---|
| 617 | 692 | }; |
|---|
| 618 | 693 | |
|---|
| 619 | 694 | /* CIDs for HEVC encoding. */ |
|---|
| .. | .. |
|---|
| 707 | 782 | #define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642) |
|---|
| 708 | 783 | #define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643) |
|---|
| 709 | 784 | #define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644) |
|---|
| 785 | +#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_MPEG_BASE + 645) |
|---|
| 786 | +#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 646) |
|---|
| 787 | +enum v4l2_mpeg_video_frame_skip_mode { |
|---|
| 788 | + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0, |
|---|
| 789 | + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1, |
|---|
| 790 | + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2, |
|---|
| 791 | +}; |
|---|
| 792 | + |
|---|
| 793 | +#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE + 647) |
|---|
| 794 | +#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE + 648) |
|---|
| 795 | +#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE + 649) |
|---|
| 796 | +#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE + 650) |
|---|
| 797 | +#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (V4L2_CID_MPEG_BASE + 651) |
|---|
| 798 | +#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (V4L2_CID_MPEG_BASE + 652) |
|---|
| 799 | +#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (V4L2_CID_MPEG_BASE + 653) |
|---|
| 800 | +#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_BASE + 654) |
|---|
| 710 | 801 | |
|---|
| 711 | 802 | /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ |
|---|
| 712 | 803 | #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) |
|---|
| .. | .. |
|---|
| 888 | 979 | #define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE+32) |
|---|
| 889 | 980 | #define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE+33) |
|---|
| 890 | 981 | |
|---|
| 982 | +#define V4L2_CID_CAMERA_ORIENTATION (V4L2_CID_CAMERA_CLASS_BASE+34) |
|---|
| 983 | +#define V4L2_CAMERA_ORIENTATION_FRONT 0 |
|---|
| 984 | +#define V4L2_CAMERA_ORIENTATION_BACK 1 |
|---|
| 985 | +#define V4L2_CAMERA_ORIENTATION_EXTERNAL 2 |
|---|
| 986 | + |
|---|
| 987 | +#define V4L2_CID_CAMERA_SENSOR_ROTATION (V4L2_CID_CAMERA_CLASS_BASE+35) |
|---|
| 988 | + |
|---|
| 891 | 989 | /* FM Modulator class control IDs */ |
|---|
| 892 | 990 | |
|---|
| 893 | 991 | #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) |
|---|
| .. | .. |
|---|
| 1010 | 1108 | #define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5) |
|---|
| 1011 | 1109 | #define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6) |
|---|
| 1012 | 1110 | #define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7) |
|---|
| 1111 | +#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8) |
|---|
| 1013 | 1112 | |
|---|
| 1014 | 1113 | |
|---|
| 1015 | 1114 | /* Image processing controls */ |
|---|
| .. | .. |
|---|
| 1103 | 1202 | #define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3) |
|---|
| 1104 | 1203 | #define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4) |
|---|
| 1105 | 1204 | |
|---|
| 1205 | +#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900) |
|---|
| 1206 | +#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1) |
|---|
| 1207 | + |
|---|
| 1208 | +#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0) |
|---|
| 1209 | + |
|---|
| 1210 | +struct v4l2_ctrl_hdr10_cll_info { |
|---|
| 1211 | + __u16 max_content_light_level; |
|---|
| 1212 | + __u16 max_pic_average_light_level; |
|---|
| 1213 | +}; |
|---|
| 1214 | + |
|---|
| 1215 | +#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (V4L2_CID_COLORIMETRY_CLASS_BASE + 1) |
|---|
| 1216 | + |
|---|
| 1217 | +#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW 5 |
|---|
| 1218 | +#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH 37000 |
|---|
| 1219 | +#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW 5 |
|---|
| 1220 | +#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH 42000 |
|---|
| 1221 | +#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW 5 |
|---|
| 1222 | +#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH 37000 |
|---|
| 1223 | +#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW 5 |
|---|
| 1224 | +#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH 42000 |
|---|
| 1225 | +#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW 50000 |
|---|
| 1226 | +#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH 100000000 |
|---|
| 1227 | +#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW 1 |
|---|
| 1228 | +#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH 50000 |
|---|
| 1229 | + |
|---|
| 1230 | +struct v4l2_ctrl_hdr10_mastering_display { |
|---|
| 1231 | + __u16 display_primaries_x[3]; |
|---|
| 1232 | + __u16 display_primaries_y[3]; |
|---|
| 1233 | + __u16 white_point_x; |
|---|
| 1234 | + __u16 white_point_y; |
|---|
| 1235 | + __u32 max_display_mastering_luminance; |
|---|
| 1236 | + __u32 min_display_mastering_luminance; |
|---|
| 1237 | +}; |
|---|
| 1238 | + |
|---|
| 1106 | 1239 | #endif |
|---|