📄 videodev.h
字号:
#define V4L2_COLOR_SUBC_PAL_M 3575611 /* PAL M (Brazil) */#define V4L2_COLOR_SUBC_PAL_N 3582056 /* PAL N */#define V4L2_COLOR_SUBC_NTSC 3579545 /* NTSC M, NTSC-Japan */#define V4L2_COLOR_SUBC_SECAMB 4250000 /* SECAM B - Y carrier */#define V4L2_COLOR_SUBC_SECAMR 4406250 /* SECAM R - Y carrier *//* Flags for the 'transmission' field */#define V4L2_TRANSM_STD_B (1<<1)#define V4L2_TRANSM_STD_D (1<<3)#define V4L2_TRANSM_STD_G (1<<6)#define V4L2_TRANSM_STD_H (1<<7)#define V4L2_TRANSM_STD_I (1<<8)#define V4L2_TRANSM_STD_K (1<<10)#define V4L2_TRANSM_STD_K1 (1<<11)#define V4L2_TRANSM_STD_L (1<<12)#define V4L2_TRANSM_STD_M (1<<13)#define V4L2_TRANSM_STD_N (1<<14)/* Used in the VIDIOC_ENUMSTD ioctl for querying supported standards */struct v4l2_enumstd{ int index; struct v4l2_standard std; __u32 inputs; /* set of inputs that */ /* support this standard */ __u32 outputs; /* set of outputs that */ /* support this standard */ __u32 reserved[2];};/* * V I D E O I N P U T S */struct v4l2_input{ int index; /* Which input */ char name[32]; /* Label */ int type; /* Type of input */ __u32 capability; /* Capability flags */ int assoc_audio; /* Associated audio input */ __u32 reserved[4];};/* Values for the 'type' field */#define V4L2_INPUT_TYPE_TUNER 1#define V4L2_INPUT_TYPE_CAMERA 2/* Flags for the 'capability' field */#define V4L2_INPUT_CAP_AUDIO 0x0001 /* assoc_audio *//* * V I D E O O U T P U T S */struct v4l2_output{ int index; /* Which output */ char name[32]; /* Label */ int type; /* Type of output */ __u32 capability; /* Capability flags */ int assoc_audio; /* Associated audio */ __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/* Flags for the 'capability' field */#define V4L2_OUTPUT_CAP_AUDIO 0x0001 /* assoc_audio *//* * C O N T R O L S */struct v4l2_control{ __u32 id; int value;};/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */struct v4l2_queryctrl{ __u32 id; __u8 name[32]; /* Whatever */ int minimum; /* Note signedness */ int maximum; unsigned int step; int default_value; __u32 type; __u32 flags; __u32 category; /* Automatically filled in by V4L2 */ __u8 group[32]; /* for pre-defined controls */ __u32 reserved[2];};/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */struct v4l2_querymenu{ __u32 id; int index; __u8 name[32]; /* Whatever */ int reserved;};/* Used in V4L2_BUF_TYPE_FXCONTROL buffers */struct v4l2_fxcontrol{ __u32 id; __u32 value;};/* Control types */#define V4L2_CTRL_TYPE_INTEGER 0#define V4L2_CTRL_TYPE_BOOLEAN 1#define V4L2_CTRL_TYPE_MENU 2#define V4L2_CTRL_TYPE_BUTTON 3/* Control flags */#define V4L2_CTRL_FLAG_DISABLED 0x0001#define V4L2_CTRL_FLAG_GRABBED 0x0002/* Control categories */#define V4L2_CTRL_CAT_VIDEO 1 /* "Video" */#define V4L2_CTRL_CAT_AUDIO 2 /* "Audio" */#define V4L2_CTRL_CAT_EFFECT 3 /* "Effect" *//* Control IDs defined by V4L2 */#define V4L2_CID_BASE 0x00980900/* IDs reserved for driver specific controls */#define V4L2_CID_PRIVATE_BASE 0x08000000/* IDs reserved for effect-specific controls on effects devices */#define V4L2_CID_EFFECT_BASE 0x0A00B000#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 *//* Remember to change fill_ctrl_category() in videodev.c *//* * T U N I N G */struct v4l2_tuner{ int input; char name[32]; struct v4l2_standard std; __u32 capability; __u32 rangelow; __u32 rangehigh; __u32 rxsubchans; __u32 audmode; int signal; int afc; __u32 reserved[4];};struct v4l2_modulator{ int output; char name[32]; struct v4l2_standard std; __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{ int input; __u32 frequency; __u32 reserved[2];};/* * A U D I O */struct v4l2_audio{ int audio; char name[32]; __u32 capability; __u32 mode; __u32 reserved[2];};/* Flags for the 'capability' field */#define V4L2_AUDCAP_EFFECTS 0x0020#define V4L2_AUDCAP_LOUDNESS 0x0040#define V4L2_AUDCAP_AVL 0x0080/* Flags for the 'mode' field */#define V4L2_AUDMODE_LOUDNESS 0x00002#define V4L2_AUDMODE_AVL 0x00004#define V4L2_AUDMODE_STEREO_field 0x0FF00#define V4L2_AUDMODE_STEREO_LINEAR 0x00100#define V4L2_AUDMODE_STEREO_PSEUDO 0x00200#define V4L2_AUDMODE_STEREO_SPATIAL30 0x00300#define V4L2_AUDMODE_STEREO_SPATIAL50 0x00400struct v4l2_audioout{ int audio; char 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_VBI_SF_* */ __s32 start[2]; __u32 count[2]; __u32 flags; /* V4L2_VBI_* */ __u32 reserved2; /* must be zero */};/* VBI sampling formats */#define V4L2_VBI_SF_UBYTE 1/* 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{ __u32 type; union { struct v4l2_pix_format pix; /* image format */ struct v4l2_vbi_format vbi; /* VBI data */ /* add more */ __u8 raw_data[200]; /* user-defined */ } fmt;};/* Stream type-dependent parameters */struct v4l2_streamparm{ __u32 type; union { struct v4l2_captureparm capture; struct v4l2_outputparm output; /* add more */ __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_PIXFMT _IOWR ('V', 2, struct v4l2_fmtdesc)#define VIDIOC_ENUM_FBUFFMT _IOWR ('V', 3, struct v4l2_fmtdesc)#define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format)#define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format)#define VIDIOC_G_COMP _IOR ('V', 6, struct v4l2_compression)#define VIDIOC_S_COMP _IOW ('V', 7, struct v4l2_compression)#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_G_WIN _IOR ('V', 12, struct v4l2_window)#define VIDIOC_S_WIN _IOW ('V', 13, struct v4l2_window)#define VIDIOC_PREVIEW _IOWR ('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_PERF _IOR ('V', 20, struct v4l2_performance)#define VIDIOC_G_PARM _IOWR ('V', 21, struct v4l2_streamparm)#define VIDIOC_S_PARM _IOW ('V', 22, struct v4l2_streamparm)#define VIDIOC_G_STD _IOR ('V', 23, struct v4l2_standard)#define VIDIOC_S_STD _IOW ('V', 24, struct v4l2_standard)#define VIDIOC_ENUMSTD _IOWR ('V', 25, struct v4l2_enumstd)#define VIDIOC_ENUMINPUT _IOWR ('V', 26, struct v4l2_input)#define VIDIOC_G_CTRL _IOWR ('V', 27, struct v4l2_control)#define VIDIOC_S_CTRL _IOW ('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_FREQ _IOR ('V', 31, int) /* depricated */#define VIDIOC_S_FREQ _IOWR ('V', 32, int) /* depricated */#define VIDIOC_G_AUDIO _IOWR ('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_ENUMCVT _IOWR ('V', 40, struct v4l2_cvtdesc)#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 _IOWR ('V', 49, struct v4l2_audioout)#define VIDIOC_S_AUDOUT _IOW ('V', 50, struct v4l2_audioout)#define VIDIOC_ENUMFX _IOWR ('V', 51, struct v4l2_fxdesc)#define VIDIOC_G_EFFECT _IOR ('V', 52, int)#define VIDIOC_S_EFFECT _IOWR ('V', 53, int)#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_ENUM_CAPFMT VIDIOC_ENUM_PIXFMT#define VIDIOC_ENUM_OUTFMT VIDIOC_ENUM_PIXFMT#define VIDIOC_ENUM_SRCFMT VIDIOC_ENUM_PIXFMT#define VIDIOC_ENUMFMT VIDIOC_ENUM_PIXFMT#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */#ifdef __KERNEL__/* * These things are used only by drivers. */extern int videodev_init(void);/* * * 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. */extern void v4l2_version(int *major, int *minor);extern int v4l2_major_number(void);/* Memory management */extern unsigned long v4l2_vmalloc_to_bus(void *virt);#if LINUX_VERSION_CODE >= 0x020300extern struct page *v4l2_vmalloc_to_page(void *virt);#elseextern unsigned long v4l2_vmalloc_to_page(void *virt);#endif/* Simple queue management */struct v4l2_q_node{ struct v4l2_q_node *forw, *back;};struct v4l2_queue{ struct v4l2_q_node *forw, *back; rwlock_t qlock;};extern void v4l2_q_init(struct v4l2_queue *q);extern void v4l2_q_add_head(struct v4l2_queue *q, struct v4l2_q_node *node);extern void v4l2_q_add_tail(struct v4l2_queue *q, struct v4l2_q_node *node);extern void *v4l2_q_del_head(struct v4l2_queue *q);extern void *v4l2_q_del_tail(struct v4l2_queue *q);extern void *v4l2_q_peek_head(struct v4l2_queue *q);extern void *v4l2_q_peek_tail(struct v4l2_queue *q);extern void *v4l2_q_yank_node(struct v4l2_queue *q, struct v4l2_q_node *node);extern int v4l2_q_last(struct v4l2_queue *q);/* Math functions */extern u32 v4l2_math_div6432(u64 a, u32 d, u32 *r);/* Time functions */extern unsigned long v4l2_timestamp_divide(stamp_t t, unsigned long p_100ns);extern unsigned long v4l2_timestamp_correct(stamp_t *t, unsigned long p_100ns);/* Master Clock functions */struct v4l2_clock{ void (*gettime)(stamp_t *);};extern int v4l2_masterclock_register(struct v4l2_clock *clock);extern void v4l2_masterclock_unregister(struct v4l2_clock *clock);extern void v4l2_masterclock_gettime(stamp_t *curr);/* Video standard functions */extern unsigned int v4l2_video_std_fps(struct v4l2_standard *vs);extern unsigned long v4l2_video_std_tpf(struct v4l2_standard *vs);extern int v4l2_video_std_confirm(struct v4l2_standard *vs);extern int v4l2_video_std_construct(struct v4l2_standard *vs, int id, __u32 transmission);#define V4L2_STD_PAL 1 /* PAL B, G, H, I (...) */#define V4L2_STD_PAL_M 5 /* (Brazil) */#define V4L2_STD_PAL_N 6 /* (Argentina, Paraguay, Uruguay) */#define V4L2_STD_PAL_60 10 /* PAL/NTSC hybrid */#define V4L2_STD_NTSC 11 /* NTSC M (USA, ...) */#define V4L2_STD_NTSC_N 12 /* (Barbados, Bolivia, Colombia, S. Korea) */#define V4L2_STD_NTSC_44 15 /* PAL/NTSC hybrid */#define V4L2_STD_SECAM 21 /* SECAM B, D, G, K, K1 (...) *///#define V4L2_STD_SECAM_H 27 /* (Greece, Iran, Morocco) */ //#define V4L2_STD_SECAM_L 28 /* (France, Luxembourg, Monaco) *///#define V4L2_STD_SECAM_M 29 /* (Jamaica) *//* * D E V I C E D R I V E R R E G I S T R A T I O N * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -