📄 videodev2.h
字号:
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_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)/* ATSC/HDTV */#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)/* 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)#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ V4L2_STD_SECAM_D |\ V4L2_STD_SECAM_G |\ V4L2_STD_SECAM_H |\ V4L2_STD_SECAM_K |\ V4L2_STD_SECAM_K1 |\ V4L2_STD_SECAM_L)#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ V4L2_STD_PAL_60 |\ V4L2_STD_NTSC)#define V4L2_STD_625_50 (V4L2_STD_PAL |\ V4L2_STD_PAL_N |\ V4L2_STD_PAL_Nc |\ V4L2_STD_SECAM)#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;};/* 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/* Control IDs defined by V4L2 */#define V4L2_CID_BASE 0x00980900/* IDs reserved for driver specific controls */#define V4L2_CID_PRIVATE_BASE 0x08000000#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 *//* * T U N I N G */struct v4l2_tuner{ __u32 index; __u8 name[32]; enum v4l2_tuner_type type; __u32 capability; __u32 rangelow; __u32 rangehigh; __u32 rxsubchans; __u32 audmode; __s32 signal; __s32 afc; __u32 reserved[4];};struct v4l2_modulator{ __u32 index; __u8 name[32]; __u32 capability; __u32 rangelow; __u32 rangehigh; __u32 txsubchans; __u32 reserved[4];};/* Flags for the 'capability' field */#define V4L2_TUNER_CAP_LOW 0x0001#define V4L2_TUNER_CAP_NORM 0x0002#define V4L2_TUNER_CAP_STEREO 0x0010#define V4L2_TUNER_CAP_LANG2 0x0020#define V4L2_TUNER_CAP_SAP 0x0020#define V4L2_TUNER_CAP_LANG1 0x0040/* Flags for the 'rxsubchans' field */#define V4L2_TUNER_SUB_MONO 0x0001#define V4L2_TUNER_SUB_STEREO 0x0002#define V4L2_TUNER_SUB_LANG2 0x0004#define V4L2_TUNER_SUB_SAP 0x0004#define V4L2_TUNER_SUB_LANG1 0x0008/* Values for the 'audmode' field */#define V4L2_TUNER_MODE_MONO 0x0000#define V4L2_TUNER_MODE_STEREO 0x0001#define V4L2_TUNER_MODE_LANG2 0x0002#define V4L2_TUNER_MODE_SAP 0x0002#define V4L2_TUNER_MODE_LANG1 0x0003struct v4l2_frequency{ __u32 tuner; enum v4l2_tuner_type type; __u32 frequency; __u32 reserved[8];};/* * A U D I O */struct v4l2_audio{ __u32 index; __u8 name[32]; __u32 capability; __u32 mode; __u32 reserved[2];};/* Flags for the 'capability' field */#define V4L2_AUDCAP_STEREO 0x00001#define V4L2_AUDCAP_AVL 0x00002/* Flags for the 'mode' field */#define V4L2_AUDMODE_AVL 0x00001struct v4l2_audioout{ __u32 index; __u8 name[32]; __u32 capability; __u32 mode; __u32 reserved[2];};/* * D A T A S E R V I C E S ( V B I ) * * Data services API by Michael Schimek */struct v4l2_vbi_format{ __u32 sampling_rate; /* in 1 Hz */ __u32 offset; __u32 samples_per_line; __u32 sample_format; /* V4L2_PIX_FMT_* */ __s32 start[2]; __u32 count[2]; __u32 flags; /* V4L2_VBI_* */ __u32 reserved[2]; /* must be zero */};/* VBI flags */#define V4L2_VBI_UNSYNC (1<< 0)#define V4L2_VBI_INTERLACED (1<< 1)/* * A G G R E G A T E S T R U C T U R E S *//* Stream data format */struct v4l2_format{ enum v4l2_buf_type type; union { struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE __u8 raw_data[200]; // user-defined } fmt;};/* Stream type-dependent parameters */struct v4l2_streamparm{ enum v4l2_buf_type type; union { struct v4l2_captureparm capture; struct v4l2_outputparm output; __u8 raw_data[200]; /* user-defined */ } parm;};/* * I O C T L C O D E S F O R V I D E O D E V I C E S * */#define VIDIOC_QUERYCAP _IOR ('V', 0, struct v4l2_capability)#define VIDIOC_RESERVED _IO ('V', 1)#define VIDIOC_ENUM_FMT _IOWR ('V', 2, struct v4l2_fmtdesc)#define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format)#define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format)#if 0#define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression)#define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression)#endif#define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers)#define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer)#define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer)#define VIDIOC_S_FBUF _IOW ('V', 11, struct v4l2_framebuffer)#define VIDIOC_OVERLAY _IOW ('V', 14, int)#define VIDIOC_QBUF _IOWR ('V', 15, struct v4l2_buffer)#define VIDIOC_DQBUF _IOWR ('V', 17, struct v4l2_buffer)#define VIDIOC_STREAMON _IOW ('V', 18, int)#define VIDIOC_STREAMOFF _IOW ('V', 19, int)#define VIDIOC_G_PARM _IOWR ('V', 21, struct v4l2_streamparm)#define VIDIOC_S_PARM _IOWR ('V', 22, struct v4l2_streamparm)#define VIDIOC_G_STD _IOR ('V', 23, v4l2_std_id)#define VIDIOC_S_STD _IOW ('V', 24, v4l2_std_id)#define VIDIOC_ENUMSTD _IOWR ('V', 25, struct v4l2_standard)#define VIDIOC_ENUMINPUT _IOWR ('V', 26, struct v4l2_input)#define VIDIOC_G_CTRL _IOWR ('V', 27, struct v4l2_control)#define VIDIOC_S_CTRL _IOWR ('V', 28, struct v4l2_control)#define VIDIOC_G_TUNER _IOWR ('V', 29, struct v4l2_tuner)#define VIDIOC_S_TUNER _IOW ('V', 30, struct v4l2_tuner)#define VIDIOC_G_AUDIO _IOR ('V', 33, struct v4l2_audio)#define VIDIOC_S_AUDIO _IOW ('V', 34, struct v4l2_audio)#define VIDIOC_QUERYCTRL _IOWR ('V', 36, struct v4l2_queryctrl)#define VIDIOC_QUERYMENU _IOWR ('V', 37, struct v4l2_querymenu)#define VIDIOC_G_INPUT _IOR ('V', 38, int)#define VIDIOC_S_INPUT _IOWR ('V', 39, int)#define VIDIOC_G_OUTPUT _IOR ('V', 46, int)#define VIDIOC_S_OUTPUT _IOWR ('V', 47, int)#define VIDIOC_ENUMOUTPUT _IOWR ('V', 48, struct v4l2_output)#define VIDIOC_G_AUDOUT _IOR ('V', 49, struct v4l2_audioout)#define VIDIOC_S_AUDOUT _IOW ('V', 50, struct v4l2_audioout)#define VIDIOC_G_MODULATOR _IOWR ('V', 54, struct v4l2_modulator)#define VIDIOC_S_MODULATOR _IOW ('V', 55, struct v4l2_modulator)#define VIDIOC_G_FREQUENCY _IOWR ('V', 56, struct v4l2_frequency)#define VIDIOC_S_FREQUENCY _IOW ('V', 57, struct v4l2_frequency)#define VIDIOC_CROPCAP _IOWR ('V', 58, struct v4l2_cropcap)#define VIDIOC_G_CROP _IOWR ('V', 59, struct v4l2_crop)#define VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop)#define VIDIOC_G_JPEGCOMP _IOR ('V', 61, struct v4l2_jpegcompression)#define VIDIOC_S_JPEGCOMP _IOW ('V', 62, struct v4l2_jpegcompression)#define VIDIOC_QUERYSTD _IOR ('V', 63, v4l2_std_id)#define VIDIOC_TRY_FMT _IOWR ('V', 64, struct v4l2_format)#define VIDIOC_ENUMAUDIO _IOWR ('V', 65, struct v4l2_audio)#define VIDIOC_ENUMAUDOUT _IOWR ('V', 66, struct v4l2_audioout)#define VIDIOC_G_PRIORITY _IOR ('V', 67, enum v4l2_priority)#define VIDIOC_S_PRIORITY _IOW ('V', 68, enum v4l2_priority)/* for compatibility, will go away some day */#define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int)#define VIDIOC_S_PARM_OLD _IOW ('V', 22, struct v4l2_streamparm)#define VIDIOC_S_CTRL_OLD _IOW ('V', 28, struct v4l2_control)#define VIDIOC_G_AUDIO_OLD _IOWR ('V', 33, struct v4l2_audio)#define VIDIOC_G_AUDOUT_OLD _IOWR ('V', 49, struct v4l2_audioout)#define VIDIOC_CROPCAP_OLD _IOR ('V', 58, struct v4l2_cropcap)#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */#ifdef __KERNEL__/* * * V 4 L 2 D R I V E R H E L P E R A P I * * Some commonly needed functions for drivers (v4l2-common.o module) */#include <linux/fs.h>/* Video standard functions */extern unsigned int v4l2_video_std_fps(struct v4l2_standard *vs);extern int v4l2_video_std_construct(struct v4l2_standard *vs, int id, char *name);/* prority handling */struct v4l2_prio_state { atomic_t prios[4];};int v4l2_prio_init(struct v4l2_prio_state *global);int v4l2_prio_change(struct v4l2_prio_state *global, enum v4l2_priority *local, enum v4l2_priority new);int v4l2_prio_open(struct v4l2_prio_state *global, enum v4l2_priority *local);int v4l2_prio_close(struct v4l2_prio_state *global, enum v4l2_priority *local);enum v4l2_priority v4l2_prio_max(struct v4l2_prio_state *global);int v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority *local);/* names for fancy debug output */extern char *v4l2_field_names[];extern char *v4l2_type_names[];extern char *v4l2_ioctl_names[];/* Compatibility layer interface -- v4l1-compat module */typedef int (*v4l2_kioctl)(struct inode *inode, struct file *file, unsigned int cmd, void *arg);int v4l_compat_translate_ioctl(struct inode *inode, struct file *file, int cmd, void *arg, v4l2_kioctl driver_ioctl);#endif /* __KERNEL__ */#endif /* __LINUX_VIDEODEV2_H *//* * Local variables: * c-basic-offset: 8 * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -