📄 videodev2.h
字号:
{ __u32 index; enum v4l2_buf_type type; __u32 bytesused; __u32 flags; enum v4l2_field field; struct timeval timestamp; struct v4l2_timecode timecode; __u32 sequence; /* memory location */ enum v4l2_memory memory; union { __u32 offset; unsigned long userptr; } m; __u32 length; __u32 input; __u32 reserved;};/* Flags for 'flags' field */#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */#define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid *//* * O V E R L A Y P R E V I E W */struct v4l2_framebuffer{ __u32 capability; __u32 flags;/* FIXME: in theory we should pass something like PCI device + memory * region + offset instead of some physical address */ void* base; struct v4l2_pix_format fmt;};/* Flags for the 'capability' field. Read only */#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001#define V4L2_FBUF_CAP_CHROMAKEY 0x0002#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008/* Flags for the 'flags' field. */#define V4L2_FBUF_FLAG_PRIMARY 0x0001#define V4L2_FBUF_FLAG_OVERLAY 0x0002#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004struct v4l2_clip{ struct v4l2_rect c; struct v4l2_clip *next;};struct v4l2_window{ struct v4l2_rect w; enum v4l2_field field; __u32 chromakey; struct v4l2_clip *clips; __u32 clipcount; void *bitmap;};/* * C A P T U R E P A R A M E T E R S */struct v4l2_captureparm{ __u32 capability; /* Supported modes */ __u32 capturemode; /* Current mode */ struct v4l2_fract timeperframe; /* Time per frame in .1us units */ __u32 extendedmode; /* Driver-specific extensions */ __u32 readbuffers; /* # of buffers for read */ __u32 reserved[4];};/* Flags for 'capability' and 'capturemode' fields */#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */struct v4l2_outputparm{ __u32 capability; /* Supported modes */ __u32 outputmode; /* Current mode */ struct v4l2_fract timeperframe; /* Time per frame in seconds */ __u32 extendedmode; /* Driver-specific extensions */ __u32 writebuffers; /* # of buffers for write */ __u32 reserved[4];};/* * I N P U T I M A G E C R O P P I N G */struct v4l2_cropcap { enum v4l2_buf_type type; struct v4l2_rect bounds; struct v4l2_rect defrect; struct v4l2_fract pixelaspect;};struct v4l2_crop { enum v4l2_buf_type type; struct v4l2_rect c;};/* * A N A L O G V I D E O S T A N D A R D */typedef __u64 v4l2_std_id;/* one bit for each */#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)/* ATSC/HDTV */#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)/* FIXME: Although std_id is 64 bits, there is an issue on PPC32 architecture that makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding this value to 32 bits. As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide), it should work fine. However, if needed to add more than two standards, v4l2-common.c should be fixed. *//* some merged standards */#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)#define V4L2_STD_GH (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H)#define V4L2_STD_DK (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)/* some common needed stuff */#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\ V4L2_STD_PAL_B1 |\ V4L2_STD_PAL_G)#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\ V4L2_STD_PAL_D1 |\ V4L2_STD_PAL_K)#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\ V4L2_STD_PAL_DK |\ V4L2_STD_PAL_H |\ V4L2_STD_PAL_I)#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ V4L2_STD_NTSC_M_JP |\ V4L2_STD_NTSC_M_KR)#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ V4L2_STD_SECAM_K |\ V4L2_STD_SECAM_K1)#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ V4L2_STD_SECAM_G |\ V4L2_STD_SECAM_H |\ V4L2_STD_SECAM_DK |\ V4L2_STD_SECAM_L |\ V4L2_STD_SECAM_LC)#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ V4L2_STD_PAL_60 |\ V4L2_STD_NTSC |\ V4L2_STD_NTSC_443)#define V4L2_STD_625_50 (V4L2_STD_PAL |\ V4L2_STD_PAL_N |\ V4L2_STD_PAL_Nc |\ V4L2_STD_SECAM)#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\ V4L2_STD_ATSC_16_VSB)#define V4L2_STD_UNKNOWN 0#define V4L2_STD_ALL (V4L2_STD_525_60 |\ V4L2_STD_625_50)struct v4l2_standard{ __u32 index; v4l2_std_id id; __u8 name[24]; struct v4l2_fract frameperiod; /* Frames, not fields */ __u32 framelines; __u32 reserved[4];};/* * V I D E O I N P U T S */struct v4l2_input{ __u32 index; /* Which input */ __u8 name[32]; /* Label */ __u32 type; /* Type of input */ __u32 audioset; /* Associated audios (bitfield) */ __u32 tuner; /* Associated tuner */ v4l2_std_id std; __u32 status; __u32 reserved[4];};/* Values for the 'type' field */#define V4L2_INPUT_TYPE_TUNER 1#define V4L2_INPUT_TYPE_CAMERA 2/* field 'status' - general */#define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */#define V4L2_IN_ST_NO_SIGNAL 0x00000002#define V4L2_IN_ST_NO_COLOR 0x00000004/* field 'status' - analog */#define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */#define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active *//* field 'status' - digital */#define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */#define V4L2_IN_ST_NO_EQU 0x00020000 /* No equalizer lock */#define V4L2_IN_ST_NO_CARRIER 0x00040000 /* Carrier recovery failed *//* field 'status' - VCR and set-top box */#define V4L2_IN_ST_MACROVISION 0x01000000 /* Macrovision detected */#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant *//* * V I D E O O U T P U T S */struct v4l2_output{ __u32 index; /* Which output */ __u8 name[32]; /* Label */ __u32 type; /* Type of output */ __u32 audioset; /* Associated audios (bitfield) */ __u32 modulator; /* Associated modulator */ v4l2_std_id std; __u32 reserved[4];};/* Values for the 'type' field */#define V4L2_OUTPUT_TYPE_MODULATOR 1#define V4L2_OUTPUT_TYPE_ANALOG 2#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3/* * C O N T R O L S */struct v4l2_control{ __u32 id; __s32 value;};struct v4l2_ext_control{ __u32 id; __u32 reserved2[2]; union { __s32 value; __s64 value64; void *reserved; };} __attribute__ ((packed));struct v4l2_ext_controls{ __u32 ctrl_class; __u32 count; __u32 error_idx; __u32 reserved[2]; struct v4l2_ext_control *controls;};/* Values for ctrl_class field */#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */#define V4L2_CTRL_ID_MASK (0x0fffffff)#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */struct v4l2_queryctrl{ __u32 id; enum v4l2_ctrl_type type; __u8 name[32]; /* Whatever */ __s32 minimum; /* Note signedness */ __s32 maximum; __s32 step; __s32 default_value; __u32 flags; __u32 reserved[2];};/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */struct v4l2_querymenu{ __u32 id; __u32 index; __u8 name[32]; /* Whatever */ __u32 reserved;};/* Control flags */#define V4L2_CTRL_FLAG_DISABLED 0x0001#define V4L2_CTRL_FLAG_GRABBED 0x0002#define V4L2_CTRL_FLAG_READ_ONLY 0x0004#define V4L2_CTRL_FLAG_UPDATE 0x0008#define V4L2_CTRL_FLAG_INACTIVE 0x0010#define V4L2_CTRL_FLAG_SLIDER 0x0020/* Query flag, to be ORed with the control ID */#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000/* User-class control IDs defined by V4L2 */#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)#define V4L2_CID_USER_BASE V4L2_CID_BASE/* IDs reserved for driver specific controls */#define V4L2_CID_PRIVATE_BASE 0x08000000#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)#define V4L2_CID_HUE (V4L2_CID_BASE+3)#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* ? Not sure */#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)#define V4L2_CID_GAIN (V4L2_CID_BASE+19)#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 *//* MPEG-class control IDs defined by V4L2 */#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)/* MPEG streams */#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)enum v4l2_mpeg_stream_type { V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */ V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */ V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */ V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */ V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */ V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */};#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)enum v4l2_mpeg_stream_vbi_fmt { V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */ V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */};/* MPEG audio */#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)enum v4l2_mpeg_audio_sampling_freq { V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0, V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1, V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,};#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)enum v4l2_mpeg_audio_encoding { V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0, V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1, V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,};#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)enum v4l2_mpeg_audio_l1_bitrate { V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0, V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1, V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2, V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3, V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4, V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5, V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -