OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [videodev2.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 *  Video for Linux Two header file
3
 *
4
 *  Copyright (C) 1999-2007 the contributors
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU General Public License for more details.
15
 *
16
 *  Alternatively you can redistribute this file under the terms of the
17
 *  BSD license as stated below:
18
 *
19
 *  Redistribution and use in source and binary forms, with or without
20
 *  modification, are permitted provided that the following conditions
21
 *  are met:
22
 *  1. Redistributions of source code must retain the above copyright
23
 *     notice, this list of conditions and the following disclaimer.
24
 *  2. Redistributions in binary form must reproduce the above copyright
25
 *     notice, this list of conditions and the following disclaimer in
26
 *     the documentation and/or other materials provided with the
27
 *     distribution.
28
 *  3. The names of its contributors may not be used to endorse or promote
29
 *     products derived from this software without specific prior written
30
 *     permission.
31
 *
32
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
35
 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36
 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
38
 *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
39
 *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
40
 *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
41
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
42
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43
 *
44
 *      Header file for v4l or V4L2 drivers and applications
45
 * with public API.
46
 * All kernel-specific stuff were moved to media/v4l2-dev.h, so
47
 * no #if __KERNEL tests are allowed here
48
 *
49
 *      See http://linuxtv.org for more info
50
 *
51
 *      Author: Bill Dirks <bill@thedirks.org>
52
 *              Justin Schoeman
53
 *              Hans Verkuil <hverkuil@xs4all.nl>
54
 *              et al.
55
 */
56
#ifndef __LINUX_VIDEODEV2_H
57
#define __LINUX_VIDEODEV2_H
58
#ifdef __KERNEL__
59
#include <linux/time.h>     /* need struct timeval */
60
#include <linux/compiler.h> /* need __user */
61
#else
62
#define __user
63
#include <sys/time.h>
64
#endif
65
#include <linux/types.h>
66
 
67
/*
68
 * Common stuff for both V4L1 and V4L2
69
 * Moved from videodev.h
70
 */
71
#define VIDEO_MAX_FRAME               32
72
 
73
#define VID_TYPE_CAPTURE        1       /* Can capture */
74
#define VID_TYPE_TUNER          2       /* Can tune */
75
#define VID_TYPE_TELETEXT       4       /* Does teletext */
76
#define VID_TYPE_OVERLAY        8       /* Overlay onto frame buffer */
77
#define VID_TYPE_CHROMAKEY      16      /* Overlay by chromakey */
78
#define VID_TYPE_CLIPPING       32      /* Can clip */
79
#define VID_TYPE_FRAMERAM       64      /* Uses the frame buffer memory */
80
#define VID_TYPE_SCALES         128     /* Scalable */
81
#define VID_TYPE_MONOCHROME     256     /* Monochrome only */
82
#define VID_TYPE_SUBCAPTURE     512     /* Can capture subareas of the image */
83
#define VID_TYPE_MPEG_DECODER   1024    /* Can decode MPEG streams */
84
#define VID_TYPE_MPEG_ENCODER   2048    /* Can encode MPEG streams */
85
#define VID_TYPE_MJPEG_DECODER  4096    /* Can decode MJPEG streams */
86
#define VID_TYPE_MJPEG_ENCODER  8192    /* Can encode MJPEG streams */
87
 
88
/*
89
 *      M I S C E L L A N E O U S
90
 */
91
 
92
/*  Four-character-code (FOURCC) */
93
#define v4l2_fourcc(a,b,c,d)\
94
        (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
95
 
96
/*
97
 *      E N U M S
98
 */
99
enum v4l2_field {
100
        V4L2_FIELD_ANY           = 0, /* driver can choose from none,
101
                                         top, bottom, interlaced
102
                                         depending on whatever it thinks
103
                                         is approximate ... */
104
        V4L2_FIELD_NONE          = 1, /* this device has no fields ... */
105
        V4L2_FIELD_TOP           = 2, /* top field only */
106
        V4L2_FIELD_BOTTOM        = 3, /* bottom field only */
107
        V4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */
108
        V4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one
109
                                         buffer, top-bottom order */
110
        V4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */
111
        V4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into
112
                                         separate buffers */
113
        V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field
114
                                         first and the top field is
115
                                         transmitted first */
116
        V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field
117
                                         first and the bottom field is
118
                                         transmitted first */
119
};
120
#define V4L2_FIELD_HAS_TOP(field)       \
121
        ((field) == V4L2_FIELD_TOP      ||\
122
         (field) == V4L2_FIELD_INTERLACED ||\
123
         (field) == V4L2_FIELD_INTERLACED_TB ||\
124
         (field) == V4L2_FIELD_INTERLACED_BT ||\
125
         (field) == V4L2_FIELD_SEQ_TB   ||\
126
         (field) == V4L2_FIELD_SEQ_BT)
127
#define V4L2_FIELD_HAS_BOTTOM(field)    \
128
        ((field) == V4L2_FIELD_BOTTOM   ||\
129
         (field) == V4L2_FIELD_INTERLACED ||\
130
         (field) == V4L2_FIELD_INTERLACED_TB ||\
131
         (field) == V4L2_FIELD_INTERLACED_BT ||\
132
         (field) == V4L2_FIELD_SEQ_TB   ||\
133
         (field) == V4L2_FIELD_SEQ_BT)
134
#define V4L2_FIELD_HAS_BOTH(field)      \
135
        ((field) == V4L2_FIELD_INTERLACED ||\
136
         (field) == V4L2_FIELD_INTERLACED_TB ||\
137
         (field) == V4L2_FIELD_INTERLACED_BT ||\
138
         (field) == V4L2_FIELD_SEQ_TB ||\
139
         (field) == V4L2_FIELD_SEQ_BT)
140
 
141
enum v4l2_buf_type {
142
        V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,
143
        V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,
144
        V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,
145
        V4L2_BUF_TYPE_VBI_CAPTURE          = 4,
146
        V4L2_BUF_TYPE_VBI_OUTPUT           = 5,
147
        V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,
148
        V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,
149
#if 1
150
        /* Experimental */
151
        V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
152
#endif
153
        V4L2_BUF_TYPE_PRIVATE              = 0x80,
154
};
155
 
156
enum v4l2_ctrl_type {
157
        V4L2_CTRL_TYPE_INTEGER       = 1,
158
        V4L2_CTRL_TYPE_BOOLEAN       = 2,
159
        V4L2_CTRL_TYPE_MENU          = 3,
160
        V4L2_CTRL_TYPE_BUTTON        = 4,
161
        V4L2_CTRL_TYPE_INTEGER64     = 5,
162
        V4L2_CTRL_TYPE_CTRL_CLASS    = 6,
163
};
164
 
165
enum v4l2_tuner_type {
166
        V4L2_TUNER_RADIO             = 1,
167
        V4L2_TUNER_ANALOG_TV         = 2,
168
        V4L2_TUNER_DIGITAL_TV        = 3,
169
};
170
 
171
enum v4l2_memory {
172
        V4L2_MEMORY_MMAP             = 1,
173
        V4L2_MEMORY_USERPTR          = 2,
174
        V4L2_MEMORY_OVERLAY          = 3,
175
};
176
 
177
/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
178
enum v4l2_colorspace {
179
        /* ITU-R 601 -- broadcast NTSC/PAL */
180
        V4L2_COLORSPACE_SMPTE170M     = 1,
181
 
182
        /* 1125-Line (US) HDTV */
183
        V4L2_COLORSPACE_SMPTE240M     = 2,
184
 
185
        /* HD and modern captures. */
186
        V4L2_COLORSPACE_REC709        = 3,
187
 
188
        /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
189
        V4L2_COLORSPACE_BT878         = 4,
190
 
191
        /* These should be useful.  Assume 601 extents. */
192
        V4L2_COLORSPACE_470_SYSTEM_M  = 5,
193
        V4L2_COLORSPACE_470_SYSTEM_BG = 6,
194
 
195
        /* I know there will be cameras that send this.  So, this is
196
         * unspecified chromaticities and full 0-255 on each of the
197
         * Y'CbCr components
198
         */
199
        V4L2_COLORSPACE_JPEG          = 7,
200
 
201
        /* For RGB colourspaces, this is probably a good start. */
202
        V4L2_COLORSPACE_SRGB          = 8,
203
};
204
 
205
enum v4l2_priority {
206
        V4L2_PRIORITY_UNSET       = 0,  /* not initialized */
207
        V4L2_PRIORITY_BACKGROUND  = 1,
208
        V4L2_PRIORITY_INTERACTIVE = 2,
209
        V4L2_PRIORITY_RECORD      = 3,
210
        V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE,
211
};
212
 
213
struct v4l2_rect {
214
        __s32   left;
215
        __s32   top;
216
        __s32   width;
217
        __s32   height;
218
};
219
 
220
struct v4l2_fract {
221
        __u32   numerator;
222
        __u32   denominator;
223
};
224
 
225
/*
226
 *      D R I V E R   C A P A B I L I T I E S
227
 */
228
struct v4l2_capability
229
{
230
        __u8    driver[16];     /* i.e. "bttv" */
231
        __u8    card[32];       /* i.e. "Hauppauge WinTV" */
232
        __u8    bus_info[32];   /* "PCI:" + pci_name(pci_dev) */
233
        __u32   version;        /* should use KERNEL_VERSION() */
234
        __u32   capabilities;   /* Device capabilities */
235
        __u32   reserved[4];
236
};
237
 
238
/* Values for 'capabilities' field */
239
#define V4L2_CAP_VIDEO_CAPTURE          0x00000001  /* Is a video capture device */
240
#define V4L2_CAP_VIDEO_OUTPUT           0x00000002  /* Is a video output device */
241
#define V4L2_CAP_VIDEO_OVERLAY          0x00000004  /* Can do video overlay */
242
#define V4L2_CAP_VBI_CAPTURE            0x00000010  /* Is a raw VBI capture device */
243
#define V4L2_CAP_VBI_OUTPUT             0x00000020  /* Is a raw VBI output device */
244
#define V4L2_CAP_SLICED_VBI_CAPTURE     0x00000040  /* Is a sliced VBI capture device */
245
#define V4L2_CAP_SLICED_VBI_OUTPUT      0x00000080  /* Is a sliced VBI output device */
246
#define V4L2_CAP_RDS_CAPTURE            0x00000100  /* RDS data capture */
247
#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY   0x00000200  /* Can do video output overlay */
248
 
249
#define V4L2_CAP_TUNER                  0x00010000  /* has a tuner */
250
#define V4L2_CAP_AUDIO                  0x00020000  /* has audio support */
251
#define V4L2_CAP_RADIO                  0x00040000  /* is a radio device */
252
 
253
#define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */
254
#define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */
255
#define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */
256
 
257
/*
258
 *      V I D E O   I M A G E   F O R M A T
259
 */
260
struct v4l2_pix_format
261
{
262
        __u32                   width;
263
        __u32                   height;
264
        __u32                   pixelformat;
265
        enum v4l2_field         field;
266
        __u32                   bytesperline;   /* for padding, zero if unused */
267
        __u32                   sizeimage;
268
        enum v4l2_colorspace    colorspace;
269
        __u32                   priv;           /* private data, depends on pixelformat */
270
};
271
 
272
/*      Pixel format         FOURCC                        depth  Description  */
273
#define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R','G','B','1') /*  8  RGB-3-3-2     */
274
#define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R','4','4','4') /* 16  xxxxrrrr ggggbbbb */
275
#define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R','G','B','O') /* 16  RGB-5-5-5     */
276
#define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R','G','B','P') /* 16  RGB-5-6-5     */
277
#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R','G','B','Q') /* 16  RGB-5-5-5 BE  */
278
#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R','G','B','R') /* 16  RGB-5-6-5 BE  */
279
#define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B','G','R','3') /* 24  BGR-8-8-8     */
280
#define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R','G','B','3') /* 24  RGB-8-8-8     */
281
#define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B','G','R','4') /* 32  BGR-8-8-8-8   */
282
#define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R','G','B','4') /* 32  RGB-8-8-8-8   */
283
#define V4L2_PIX_FMT_GREY    v4l2_fourcc('G','R','E','Y') /*  8  Greyscale     */
284
#define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P','A','L','8') /*  8  8-bit palette */
285
#define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y','V','U','9') /*  9  YVU 4:1:0     */
286
#define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y','V','1','2') /* 12  YVU 4:2:0     */
287
#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y','U','Y','V') /* 16  YUV 4:2:2     */
288
#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U','Y','V','Y') /* 16  YUV 4:2:2     */
289
#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4','2','2','P') /* 16  YVU422 planar */
290
#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4','1','1','P') /* 16  YVU411 planar */
291
#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y','4','1','P') /* 12  YUV 4:1:1     */
292
#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y','4','4','4') /* 16  xxxxyyyy uuuuvvvv */
293
#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y','U','V','O') /* 16  YUV-5-5-5     */
294
#define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y','U','V','P') /* 16  YUV-5-6-5     */
295
#define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y','U','V','4') /* 32  YUV-8-8-8-8   */
296
 
297
/* two planes -- one Y, one Cr + Cb interleaved  */
298
#define V4L2_PIX_FMT_NV12    v4l2_fourcc('N','V','1','2') /* 12  Y/CbCr 4:2:0  */
299
#define V4L2_PIX_FMT_NV21    v4l2_fourcc('N','V','2','1') /* 12  Y/CrCb 4:2:0  */
300
 
301
/*  The following formats are not defined in the V4L2 specification */
302
#define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y','U','V','9') /*  9  YUV 4:1:0     */
303
#define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y','U','1','2') /* 12  YUV 4:2:0     */
304
#define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y','Y','U','V') /* 16  YUV 4:2:2     */
305
#define V4L2_PIX_FMT_HI240   v4l2_fourcc('H','I','2','4') /*  8  8-bit color   */
306
#define V4L2_PIX_FMT_HM12    v4l2_fourcc('H','M','1','2') /*  8  YUV 4:2:0 16x16 macroblocks */
307
 
308
/* see http://www.siliconimaging.com/RGB%20Bayer.htm */
309
#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B','A','8','1') /*  8  BGBG.. GRGR.. */
310
 
311
/* compressed formats */
312
#define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M','J','P','G') /* Motion-JPEG   */
313
#define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J','P','E','G') /* JFIF JPEG     */
314
#define V4L2_PIX_FMT_DV       v4l2_fourcc('d','v','s','d') /* 1394          */
315
#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M','P','E','G') /* MPEG-1/2/4    */
316
 
317
/*  Vendor-specific formats   */
318
#define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W','N','V','A') /* Winnov hw compress */
319
#define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S','9','1','0') /* SN9C10x compression */
320
#define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P','W','C','1') /* pwc older webcam */
321
#define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P','W','C','2') /* pwc newer webcam */
322
#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E','6','2','5') /* ET61X251 compression */
323
 
324
/*
325
 *      F O R M A T   E N U M E R A T I O N
326
 */
327
struct v4l2_fmtdesc
328
{
329
        __u32               index;             /* Format number      */
330
        enum v4l2_buf_type  type;              /* buffer type        */
331
        __u32               flags;
332
        __u8                description[32];   /* Description string */
333
        __u32               pixelformat;       /* Format fourcc      */
334
        __u32               reserved[4];
335
};
336
 
337
#define V4L2_FMT_FLAG_COMPRESSED 0x0001
338
 
339
#if 1
340
        /* Experimental Frame Size and frame rate enumeration */
341
/*
342
 *      F R A M E   S I Z E   E N U M E R A T I O N
343
 */
344
enum v4l2_frmsizetypes
345
{
346
        V4L2_FRMSIZE_TYPE_DISCRETE      = 1,
347
        V4L2_FRMSIZE_TYPE_CONTINUOUS    = 2,
348
        V4L2_FRMSIZE_TYPE_STEPWISE      = 3,
349
};
350
 
351
struct v4l2_frmsize_discrete
352
{
353
        __u32                   width;          /* Frame width [pixel] */
354
        __u32                   height;         /* Frame height [pixel] */
355
};
356
 
357
struct v4l2_frmsize_stepwise
358
{
359
        __u32                   min_width;      /* Minimum frame width [pixel] */
360
        __u32                   max_width;      /* Maximum frame width [pixel] */
361
        __u32                   step_width;     /* Frame width step size [pixel] */
362
        __u32                   min_height;     /* Minimum frame height [pixel] */
363
        __u32                   max_height;     /* Maximum frame height [pixel] */
364
        __u32                   step_height;    /* Frame height step size [pixel] */
365
};
366
 
367
struct v4l2_frmsizeenum
368
{
369
        __u32                   index;          /* Frame size number */
370
        __u32                   pixel_format;   /* Pixel format */
371
        __u32                   type;           /* Frame size type the device supports. */
372
 
373
        union {                                 /* Frame size */
374
                struct v4l2_frmsize_discrete    discrete;
375
                struct v4l2_frmsize_stepwise    stepwise;
376
        };
377
 
378
        __u32   reserved[2];                    /* Reserved space for future use */
379
};
380
 
381
/*
382
 *      F R A M E   R A T E   E N U M E R A T I O N
383
 */
384
enum v4l2_frmivaltypes
385
{
386
        V4L2_FRMIVAL_TYPE_DISCRETE      = 1,
387
        V4L2_FRMIVAL_TYPE_CONTINUOUS    = 2,
388
        V4L2_FRMIVAL_TYPE_STEPWISE      = 3,
389
};
390
 
391
struct v4l2_frmival_stepwise
392
{
393
        struct v4l2_fract       min;            /* Minimum frame interval [s] */
394
        struct v4l2_fract       max;            /* Maximum frame interval [s] */
395
        struct v4l2_fract       step;           /* Frame interval step size [s] */
396
};
397
 
398
struct v4l2_frmivalenum
399
{
400
        __u32                   index;          /* Frame format index */
401
        __u32                   pixel_format;   /* Pixel format */
402
        __u32                   width;          /* Frame width */
403
        __u32                   height;         /* Frame height */
404
        __u32                   type;           /* Frame interval type the device supports. */
405
 
406
        union {                                 /* Frame interval */
407
                struct v4l2_fract               discrete;
408
                struct v4l2_frmival_stepwise    stepwise;
409
        };
410
 
411
        __u32   reserved[2];                    /* Reserved space for future use */
412
};
413
#endif
414
 
415
/*
416
 *      T I M E C O D E
417
 */
418
struct v4l2_timecode
419
{
420
        __u32   type;
421
        __u32   flags;
422
        __u8    frames;
423
        __u8    seconds;
424
        __u8    minutes;
425
        __u8    hours;
426
        __u8    userbits[4];
427
};
428
 
429
/*  Type  */
430
#define V4L2_TC_TYPE_24FPS              1
431
#define V4L2_TC_TYPE_25FPS              2
432
#define V4L2_TC_TYPE_30FPS              3
433
#define V4L2_TC_TYPE_50FPS              4
434
#define V4L2_TC_TYPE_60FPS              5
435
 
436
/*  Flags  */
437
#define V4L2_TC_FLAG_DROPFRAME          0x0001 /* "drop-frame" mode */
438
#define V4L2_TC_FLAG_COLORFRAME         0x0002
439
#define V4L2_TC_USERBITS_field          0x000C
440
#define V4L2_TC_USERBITS_USERDEFINED    0x0000
441
#define V4L2_TC_USERBITS_8BITCHARS      0x0008
442
/* The above is based on SMPTE timecodes */
443
 
444
struct v4l2_jpegcompression
445
{
446
        int quality;
447
 
448
        int  APPn;              /* Number of APP segment to be written,
449
                                 * must be 0..15 */
450
        int  APP_len;           /* Length of data in JPEG APPn segment */
451
        char APP_data[60];      /* Data in the JPEG APPn segment. */
452
 
453
        int  COM_len;           /* Length of data in JPEG COM segment */
454
        char COM_data[60];      /* Data in JPEG COM segment */
455
 
456
        __u32 jpeg_markers;     /* Which markers should go into the JPEG
457
                                 * output. Unless you exactly know what
458
                                 * you do, leave them untouched.
459
                                 * Inluding less markers will make the
460
                                 * resulting code smaller, but there will
461
                                 * be fewer aplications which can read it.
462
                                 * The presence of the APP and COM marker
463
                                 * is influenced by APP_len and COM_len
464
                                 * ONLY, not by this property! */
465
 
466
#define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
467
#define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
468
#define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
469
#define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
470
#define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will
471
                                        * allways use APP0 */
472
};
473
 
474
/*
475
 *      M E M O R Y - M A P P I N G   B U F F E R S
476
 */
477
struct v4l2_requestbuffers
478
{
479
        __u32                   count;
480
        enum v4l2_buf_type      type;
481
        enum v4l2_memory        memory;
482
        __u32                   reserved[2];
483
};
484
 
485
struct v4l2_buffer
486
{
487
        __u32                   index;
488
        enum v4l2_buf_type      type;
489
        __u32                   bytesused;
490
        __u32                   flags;
491
        enum v4l2_field         field;
492
        struct timeval          timestamp;
493
        struct v4l2_timecode    timecode;
494
        __u32                   sequence;
495
 
496
        /* memory location */
497
        enum v4l2_memory        memory;
498
        union {
499
                __u32           offset;
500
                unsigned long   userptr;
501
        } m;
502
        __u32                   length;
503
        __u32                   input;
504
        __u32                   reserved;
505
};
506
 
507
/*  Flags for 'flags' field */
508
#define V4L2_BUF_FLAG_MAPPED    0x0001  /* Buffer is mapped (flag) */
509
#define V4L2_BUF_FLAG_QUEUED    0x0002  /* Buffer is queued for processing */
510
#define V4L2_BUF_FLAG_DONE      0x0004  /* Buffer is ready */
511
#define V4L2_BUF_FLAG_KEYFRAME  0x0008  /* Image is a keyframe (I-frame) */
512
#define V4L2_BUF_FLAG_PFRAME    0x0010  /* Image is a P-frame */
513
#define V4L2_BUF_FLAG_BFRAME    0x0020  /* Image is a B-frame */
514
#define V4L2_BUF_FLAG_TIMECODE  0x0100  /* timecode field is valid */
515
#define V4L2_BUF_FLAG_INPUT     0x0200  /* input field is valid */
516
 
517
/*
518
 *      O V E R L A Y   P R E V I E W
519
 */
520
struct v4l2_framebuffer
521
{
522
        __u32                   capability;
523
        __u32                   flags;
524
/* FIXME: in theory we should pass something like PCI device + memory
525
 * region + offset instead of some physical address */
526
        void*                   base;
527
        struct v4l2_pix_format  fmt;
528
};
529
/*  Flags for the 'capability' field. Read only */
530
#define V4L2_FBUF_CAP_EXTERNOVERLAY     0x0001
531
#define V4L2_FBUF_CAP_CHROMAKEY         0x0002
532
#define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004
533
#define V4L2_FBUF_CAP_BITMAP_CLIPPING   0x0008
534
#define V4L2_FBUF_CAP_LOCAL_ALPHA       0x0010
535
#define V4L2_FBUF_CAP_GLOBAL_ALPHA      0x0020
536
#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA   0x0040
537
/*  Flags for the 'flags' field. */
538
#define V4L2_FBUF_FLAG_PRIMARY          0x0001
539
#define V4L2_FBUF_FLAG_OVERLAY          0x0002
540
#define V4L2_FBUF_FLAG_CHROMAKEY        0x0004
541
#define V4L2_FBUF_FLAG_LOCAL_ALPHA      0x0008
542
#define V4L2_FBUF_FLAG_GLOBAL_ALPHA     0x0010
543
#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA  0x0020
544
 
545
struct v4l2_clip
546
{
547
        struct v4l2_rect        c;
548
        struct v4l2_clip        __user *next;
549
};
550
 
551
struct v4l2_window
552
{
553
        struct v4l2_rect        w;
554
        enum v4l2_field         field;
555
        __u32                   chromakey;
556
        struct v4l2_clip        __user *clips;
557
        __u32                   clipcount;
558
        void                    __user *bitmap;
559
        __u8                    global_alpha;
560
};
561
 
562
/*
563
 *      C A P T U R E   P A R A M E T E R S
564
 */
565
struct v4l2_captureparm
566
{
567
        __u32              capability;    /*  Supported modes */
568
        __u32              capturemode;   /*  Current mode */
569
        struct v4l2_fract  timeperframe;  /*  Time per frame in .1us units */
570
        __u32              extendedmode;  /*  Driver-specific extensions */
571
        __u32              readbuffers;   /*  # of buffers for read */
572
        __u32              reserved[4];
573
};
574
 
575
/*  Flags for 'capability' and 'capturemode' fields */
576
#define V4L2_MODE_HIGHQUALITY   0x0001  /*  High quality imaging mode */
577
#define V4L2_CAP_TIMEPERFRAME   0x1000  /*  timeperframe field is supported */
578
 
579
struct v4l2_outputparm
580
{
581
        __u32              capability;   /*  Supported modes */
582
        __u32              outputmode;   /*  Current mode */
583
        struct v4l2_fract  timeperframe; /*  Time per frame in seconds */
584
        __u32              extendedmode; /*  Driver-specific extensions */
585
        __u32              writebuffers; /*  # of buffers for write */
586
        __u32              reserved[4];
587
};
588
 
589
/*
590
 *      I N P U T   I M A G E   C R O P P I N G
591
 */
592
struct v4l2_cropcap {
593
        enum v4l2_buf_type      type;
594
        struct v4l2_rect        bounds;
595
        struct v4l2_rect        defrect;
596
        struct v4l2_fract       pixelaspect;
597
};
598
 
599
struct v4l2_crop {
600
        enum v4l2_buf_type      type;
601
        struct v4l2_rect        c;
602
};
603
 
604
/*
605
 *      A N A L O G   V I D E O   S T A N D A R D
606
 */
607
 
608
typedef __u64 v4l2_std_id;
609
 
610
/* one bit for each */
611
#define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)
612
#define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)
613
#define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)
614
#define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)
615
#define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)
616
#define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)
617
#define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)
618
#define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)
619
 
620
#define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)
621
#define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)
622
#define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)
623
#define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)
624
 
625
#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)
626
#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)
627
#define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)
628
#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)
629
 
630
#define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)
631
#define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)
632
#define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)
633
#define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)
634
#define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)
635
#define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)
636
#define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)
637
#define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)
638
 
639
/* ATSC/HDTV */
640
#define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)
641
#define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)
642
 
643
/* FIXME:
644
   Although std_id is 64 bits, there is an issue on PPC32 architecture that
645
   makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding
646
   this value to 32 bits.
647
   As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
648
   it should work fine. However, if needed to add more than two standards,
649
   v4l2-common.c should be fixed.
650
 */
651
 
652
/* some merged standards */
653
#define V4L2_STD_MN     (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)
654
#define V4L2_STD_B      (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)
655
#define V4L2_STD_GH     (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H)
656
#define V4L2_STD_DK     (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)
657
 
658
/* some common needed stuff */
659
#define V4L2_STD_PAL_BG         (V4L2_STD_PAL_B         |\
660
                                 V4L2_STD_PAL_B1        |\
661
                                 V4L2_STD_PAL_G)
662
#define V4L2_STD_PAL_DK         (V4L2_STD_PAL_D         |\
663
                                 V4L2_STD_PAL_D1        |\
664
                                 V4L2_STD_PAL_K)
665
#define V4L2_STD_PAL            (V4L2_STD_PAL_BG        |\
666
                                 V4L2_STD_PAL_DK        |\
667
                                 V4L2_STD_PAL_H         |\
668
                                 V4L2_STD_PAL_I)
669
#define V4L2_STD_NTSC           (V4L2_STD_NTSC_M        |\
670
                                 V4L2_STD_NTSC_M_JP     |\
671
                                 V4L2_STD_NTSC_M_KR)
672
#define V4L2_STD_SECAM_DK       (V4L2_STD_SECAM_D       |\
673
                                 V4L2_STD_SECAM_K       |\
674
                                 V4L2_STD_SECAM_K1)
675
#define V4L2_STD_SECAM          (V4L2_STD_SECAM_B       |\
676
                                 V4L2_STD_SECAM_G       |\
677
                                 V4L2_STD_SECAM_H       |\
678
                                 V4L2_STD_SECAM_DK      |\
679
                                 V4L2_STD_SECAM_L       |\
680
                                 V4L2_STD_SECAM_LC)
681
 
682
#define V4L2_STD_525_60         (V4L2_STD_PAL_M         |\
683
                                 V4L2_STD_PAL_60        |\
684
                                 V4L2_STD_NTSC          |\
685
                                 V4L2_STD_NTSC_443)
686
#define V4L2_STD_625_50         (V4L2_STD_PAL           |\
687
                                 V4L2_STD_PAL_N         |\
688
                                 V4L2_STD_PAL_Nc        |\
689
                                 V4L2_STD_SECAM)
690
#define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\
691
                                 V4L2_STD_ATSC_16_VSB)
692
 
693
#define V4L2_STD_UNKNOWN        0
694
#define V4L2_STD_ALL            (V4L2_STD_525_60        |\
695
                                 V4L2_STD_625_50)
696
 
697
struct v4l2_standard
698
{
699
        __u32                index;
700
        v4l2_std_id          id;
701
        __u8                 name[24];
702
        struct v4l2_fract    frameperiod; /* Frames, not fields */
703
        __u32                framelines;
704
        __u32                reserved[4];
705
};
706
 
707
/*
708
 *      V I D E O   I N P U T S
709
 */
710
struct v4l2_input
711
{
712
        __u32        index;             /*  Which input */
713
        __u8         name[32];          /*  Label */
714
        __u32        type;              /*  Type of input */
715
        __u32        audioset;          /*  Associated audios (bitfield) */
716
        __u32        tuner;             /*  Associated tuner */
717
        v4l2_std_id  std;
718
        __u32        status;
719
        __u32        reserved[4];
720
};
721
 
722
/*  Values for the 'type' field */
723
#define V4L2_INPUT_TYPE_TUNER           1
724
#define V4L2_INPUT_TYPE_CAMERA          2
725
 
726
/* field 'status' - general */
727
#define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */
728
#define V4L2_IN_ST_NO_SIGNAL   0x00000002
729
#define V4L2_IN_ST_NO_COLOR    0x00000004
730
 
731
/* field 'status' - analog */
732
#define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */
733
#define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */
734
 
735
/* field 'status' - digital */
736
#define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */
737
#define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */
738
#define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */
739
 
740
/* field 'status' - VCR and set-top box */
741
#define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */
742
#define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
743
#define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
744
 
745
/*
746
 *      V I D E O   O U T P U T S
747
 */
748
struct v4l2_output
749
{
750
        __u32        index;             /*  Which output */
751
        __u8         name[32];          /*  Label */
752
        __u32        type;              /*  Type of output */
753
        __u32        audioset;          /*  Associated audios (bitfield) */
754
        __u32        modulator;         /*  Associated modulator */
755
        v4l2_std_id  std;
756
        __u32        reserved[4];
757
};
758
/*  Values for the 'type' field */
759
#define V4L2_OUTPUT_TYPE_MODULATOR              1
760
#define V4L2_OUTPUT_TYPE_ANALOG                 2
761
#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY       3
762
 
763
/*
764
 *      C O N T R O L S
765
 */
766
struct v4l2_control
767
{
768
        __u32                id;
769
        __s32                value;
770
};
771
 
772
struct v4l2_ext_control
773
{
774
        __u32 id;
775
        __u32 reserved2[2];
776
        union {
777
                __s32 value;
778
                __s64 value64;
779
                void *reserved;
780
        };
781
} __attribute__ ((packed));
782
 
783
struct v4l2_ext_controls
784
{
785
        __u32 ctrl_class;
786
        __u32 count;
787
        __u32 error_idx;
788
        __u32 reserved[2];
789
        struct v4l2_ext_control *controls;
790
};
791
 
792
/*  Values for ctrl_class field */
793
#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
794
#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
795
 
796
#define V4L2_CTRL_ID_MASK         (0x0fffffff)
797
#define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
798
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
799
 
800
/*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
801
struct v4l2_queryctrl
802
{
803
        __u32                id;
804
        enum v4l2_ctrl_type  type;
805
        __u8                 name[32];  /* Whatever */
806
        __s32                minimum;   /* Note signedness */
807
        __s32                maximum;
808
        __s32                step;
809
        __s32                default_value;
810
        __u32                flags;
811
        __u32                reserved[2];
812
};
813
 
814
/*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
815
struct v4l2_querymenu
816
{
817
        __u32           id;
818
        __u32           index;
819
        __u8            name[32];       /* Whatever */
820
        __u32           reserved;
821
};
822
 
823
/*  Control flags  */
824
#define V4L2_CTRL_FLAG_DISABLED         0x0001
825
#define V4L2_CTRL_FLAG_GRABBED          0x0002
826
#define V4L2_CTRL_FLAG_READ_ONLY        0x0004
827
#define V4L2_CTRL_FLAG_UPDATE           0x0008
828
#define V4L2_CTRL_FLAG_INACTIVE         0x0010
829
#define V4L2_CTRL_FLAG_SLIDER           0x0020
830
 
831
/*  Query flag, to be ORed with the control ID */
832
#define V4L2_CTRL_FLAG_NEXT_CTRL        0x80000000
833
 
834
/*  User-class control IDs defined by V4L2 */
835
#define V4L2_CID_BASE                   (V4L2_CTRL_CLASS_USER | 0x900)
836
#define V4L2_CID_USER_BASE              V4L2_CID_BASE
837
/*  IDs reserved for driver specific controls */
838
#define V4L2_CID_PRIVATE_BASE           0x08000000
839
 
840
#define V4L2_CID_USER_CLASS             (V4L2_CTRL_CLASS_USER | 1)
841
#define V4L2_CID_BRIGHTNESS             (V4L2_CID_BASE+0)
842
#define V4L2_CID_CONTRAST               (V4L2_CID_BASE+1)
843
#define V4L2_CID_SATURATION             (V4L2_CID_BASE+2)
844
#define V4L2_CID_HUE                    (V4L2_CID_BASE+3)
845
#define V4L2_CID_AUDIO_VOLUME           (V4L2_CID_BASE+5)
846
#define V4L2_CID_AUDIO_BALANCE          (V4L2_CID_BASE+6)
847
#define V4L2_CID_AUDIO_BASS             (V4L2_CID_BASE+7)
848
#define V4L2_CID_AUDIO_TREBLE           (V4L2_CID_BASE+8)
849
#define V4L2_CID_AUDIO_MUTE             (V4L2_CID_BASE+9)
850
#define V4L2_CID_AUDIO_LOUDNESS         (V4L2_CID_BASE+10)
851
#define V4L2_CID_BLACK_LEVEL            (V4L2_CID_BASE+11)
852
#define V4L2_CID_AUTO_WHITE_BALANCE     (V4L2_CID_BASE+12)
853
#define V4L2_CID_DO_WHITE_BALANCE       (V4L2_CID_BASE+13)
854
#define V4L2_CID_RED_BALANCE            (V4L2_CID_BASE+14)
855
#define V4L2_CID_BLUE_BALANCE           (V4L2_CID_BASE+15)
856
#define V4L2_CID_GAMMA                  (V4L2_CID_BASE+16)
857
#define V4L2_CID_WHITENESS              (V4L2_CID_GAMMA) /* ? Not sure */
858
#define V4L2_CID_EXPOSURE               (V4L2_CID_BASE+17)
859
#define V4L2_CID_AUTOGAIN               (V4L2_CID_BASE+18)
860
#define V4L2_CID_GAIN                   (V4L2_CID_BASE+19)
861
#define V4L2_CID_HFLIP                  (V4L2_CID_BASE+20)
862
#define V4L2_CID_VFLIP                  (V4L2_CID_BASE+21)
863
#define V4L2_CID_HCENTER                (V4L2_CID_BASE+22)
864
#define V4L2_CID_VCENTER                (V4L2_CID_BASE+23)
865
#define V4L2_CID_LASTP1                 (V4L2_CID_BASE+24) /* last CID + 1 */
866
 
867
/*  MPEG-class control IDs defined by V4L2 */
868
#define V4L2_CID_MPEG_BASE                      (V4L2_CTRL_CLASS_MPEG | 0x900)
869
#define V4L2_CID_MPEG_CLASS                     (V4L2_CTRL_CLASS_MPEG | 1)
870
 
871
/*  MPEG streams */
872
#define V4L2_CID_MPEG_STREAM_TYPE               (V4L2_CID_MPEG_BASE+0)
873
enum v4l2_mpeg_stream_type {
874
        V4L2_MPEG_STREAM_TYPE_MPEG2_PS   = 0, /* MPEG-2 program stream */
875
        V4L2_MPEG_STREAM_TYPE_MPEG2_TS   = 1, /* MPEG-2 transport stream */
876
        V4L2_MPEG_STREAM_TYPE_MPEG1_SS   = 2, /* MPEG-1 system stream */
877
        V4L2_MPEG_STREAM_TYPE_MPEG2_DVD  = 3, /* MPEG-2 DVD-compatible stream */
878
        V4L2_MPEG_STREAM_TYPE_MPEG1_VCD  = 4, /* MPEG-1 VCD-compatible stream */
879
        V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
880
};
881
#define V4L2_CID_MPEG_STREAM_PID_PMT            (V4L2_CID_MPEG_BASE+1)
882
#define V4L2_CID_MPEG_STREAM_PID_AUDIO          (V4L2_CID_MPEG_BASE+2)
883
#define V4L2_CID_MPEG_STREAM_PID_VIDEO          (V4L2_CID_MPEG_BASE+3)
884
#define V4L2_CID_MPEG_STREAM_PID_PCR            (V4L2_CID_MPEG_BASE+4)
885
#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO       (V4L2_CID_MPEG_BASE+5)
886
#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO       (V4L2_CID_MPEG_BASE+6)
887
#define V4L2_CID_MPEG_STREAM_VBI_FMT            (V4L2_CID_MPEG_BASE+7)
888
enum v4l2_mpeg_stream_vbi_fmt {
889
        V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,  /* No VBI in the MPEG stream */
890
        V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,  /* VBI in private packets, IVTV format */
891
};
892
 
893
/*  MPEG audio */
894
#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ       (V4L2_CID_MPEG_BASE+100)
895
enum v4l2_mpeg_audio_sampling_freq {
896
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
897
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
898
        V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
899
};
900
#define V4L2_CID_MPEG_AUDIO_ENCODING            (V4L2_CID_MPEG_BASE+101)
901
enum v4l2_mpeg_audio_encoding {
902
        V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
903
        V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
904
        V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
905
};
906
#define V4L2_CID_MPEG_AUDIO_L1_BITRATE          (V4L2_CID_MPEG_BASE+102)
907
enum v4l2_mpeg_audio_l1_bitrate {
908
        V4L2_MPEG_AUDIO_L1_BITRATE_32K  = 0,
909
        V4L2_MPEG_AUDIO_L1_BITRATE_64K  = 1,
910
        V4L2_MPEG_AUDIO_L1_BITRATE_96K  = 2,
911
        V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
912
        V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
913
        V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
914
        V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
915
        V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
916
        V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
917
        V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
918
        V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
919
        V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
920
        V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
921
        V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
922
};
923
#define V4L2_CID_MPEG_AUDIO_L2_BITRATE          (V4L2_CID_MPEG_BASE+103)
924
enum v4l2_mpeg_audio_l2_bitrate {
925
        V4L2_MPEG_AUDIO_L2_BITRATE_32K  = 0,
926
        V4L2_MPEG_AUDIO_L2_BITRATE_48K  = 1,
927
        V4L2_MPEG_AUDIO_L2_BITRATE_56K  = 2,
928
        V4L2_MPEG_AUDIO_L2_BITRATE_64K  = 3,
929
        V4L2_MPEG_AUDIO_L2_BITRATE_80K  = 4,
930
        V4L2_MPEG_AUDIO_L2_BITRATE_96K  = 5,
931
        V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
932
        V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
933
        V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
934
        V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
935
        V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
936
        V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
937
        V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
938
        V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
939
};
940
#define V4L2_CID_MPEG_AUDIO_L3_BITRATE          (V4L2_CID_MPEG_BASE+104)
941
enum v4l2_mpeg_audio_l3_bitrate {
942
        V4L2_MPEG_AUDIO_L3_BITRATE_32K  = 0,
943
        V4L2_MPEG_AUDIO_L3_BITRATE_40K  = 1,
944
        V4L2_MPEG_AUDIO_L3_BITRATE_48K  = 2,
945
        V4L2_MPEG_AUDIO_L3_BITRATE_56K  = 3,
946
        V4L2_MPEG_AUDIO_L3_BITRATE_64K  = 4,
947
        V4L2_MPEG_AUDIO_L3_BITRATE_80K  = 5,
948
        V4L2_MPEG_AUDIO_L3_BITRATE_96K  = 6,
949
        V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
950
        V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
951
        V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
952
        V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
953
        V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
954
        V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
955
        V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
956
};
957
#define V4L2_CID_MPEG_AUDIO_MODE                (V4L2_CID_MPEG_BASE+105)
958
enum v4l2_mpeg_audio_mode {
959
        V4L2_MPEG_AUDIO_MODE_STEREO       = 0,
960
        V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
961
        V4L2_MPEG_AUDIO_MODE_DUAL         = 2,
962
        V4L2_MPEG_AUDIO_MODE_MONO         = 3,
963
};
964
#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION      (V4L2_CID_MPEG_BASE+106)
965
enum v4l2_mpeg_audio_mode_extension {
966
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4  = 0,
967
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8  = 1,
968
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
969
        V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
970
};
971
#define V4L2_CID_MPEG_AUDIO_EMPHASIS            (V4L2_CID_MPEG_BASE+107)
972
enum v4l2_mpeg_audio_emphasis {
973
        V4L2_MPEG_AUDIO_EMPHASIS_NONE         = 0,
974
        V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
975
        V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17    = 2,
976
};
977
#define V4L2_CID_MPEG_AUDIO_CRC                 (V4L2_CID_MPEG_BASE+108)
978
enum v4l2_mpeg_audio_crc {
979
        V4L2_MPEG_AUDIO_CRC_NONE  = 0,
980
        V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
981
};
982
#define V4L2_CID_MPEG_AUDIO_MUTE                (V4L2_CID_MPEG_BASE+109)
983
 
984
/*  MPEG video */
985
#define V4L2_CID_MPEG_VIDEO_ENCODING            (V4L2_CID_MPEG_BASE+200)
986
enum v4l2_mpeg_video_encoding {
987
        V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
988
        V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
989
};
990
#define V4L2_CID_MPEG_VIDEO_ASPECT              (V4L2_CID_MPEG_BASE+201)
991
enum v4l2_mpeg_video_aspect {
992
        V4L2_MPEG_VIDEO_ASPECT_1x1     = 0,
993
        V4L2_MPEG_VIDEO_ASPECT_4x3     = 1,
994
        V4L2_MPEG_VIDEO_ASPECT_16x9    = 2,
995
        V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
996
};
997
#define V4L2_CID_MPEG_VIDEO_B_FRAMES            (V4L2_CID_MPEG_BASE+202)
998
#define V4L2_CID_MPEG_VIDEO_GOP_SIZE            (V4L2_CID_MPEG_BASE+203)
999
#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE         (V4L2_CID_MPEG_BASE+204)
1000
#define V4L2_CID_MPEG_VIDEO_PULLDOWN            (V4L2_CID_MPEG_BASE+205)
1001
#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE        (V4L2_CID_MPEG_BASE+206)
1002
enum v4l2_mpeg_video_bitrate_mode {
1003
        V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
1004
        V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
1005
};
1006
#define V4L2_CID_MPEG_VIDEO_BITRATE             (V4L2_CID_MPEG_BASE+207)
1007
#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK        (V4L2_CID_MPEG_BASE+208)
1008
#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
1009
#define V4L2_CID_MPEG_VIDEO_MUTE                (V4L2_CID_MPEG_BASE+210)
1010
#define V4L2_CID_MPEG_VIDEO_MUTE_YUV            (V4L2_CID_MPEG_BASE+211)
1011
 
1012
/*  MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */
1013
#define V4L2_CID_MPEG_CX2341X_BASE                              (V4L2_CTRL_CLASS_MPEG | 0x1000)
1014
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE         (V4L2_CID_MPEG_CX2341X_BASE+0)
1015
enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
1016
        V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
1017
        V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO   = 1,
1018
};
1019
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER              (V4L2_CID_MPEG_CX2341X_BASE+1)
1020
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE    (V4L2_CID_MPEG_CX2341X_BASE+2)
1021
enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
1022
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF                  = 0,
1023
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR               = 1,
1024
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT              = 2,
1025
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE      = 3,
1026
        V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
1027
};
1028
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE  (V4L2_CID_MPEG_CX2341X_BASE+3)
1029
enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
1030
        V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF    = 0,
1031
        V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1032
};
1033
#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE        (V4L2_CID_MPEG_CX2341X_BASE+4)
1034
enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
1035
        V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
1036
        V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO   = 1,
1037
};
1038
#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER             (V4L2_CID_MPEG_CX2341X_BASE+5)
1039
#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE          (V4L2_CID_MPEG_CX2341X_BASE+6)
1040
enum v4l2_mpeg_cx2341x_video_median_filter_type {
1041
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF      = 0,
1042
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR      = 1,
1043
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT     = 2,
1044
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
1045
        V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG     = 4,
1046
};
1047
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM   (V4L2_CID_MPEG_CX2341X_BASE+7)
1048
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP      (V4L2_CID_MPEG_CX2341X_BASE+8)
1049
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
1050
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP    (V4L2_CID_MPEG_CX2341X_BASE+10)
1051
#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS         (V4L2_CID_MPEG_CX2341X_BASE+11)
1052
 
1053
/*
1054
 *      T U N I N G
1055
 */
1056
struct v4l2_tuner
1057
{
1058
        __u32                   index;
1059
        __u8                    name[32];
1060
        enum v4l2_tuner_type    type;
1061
        __u32                   capability;
1062
        __u32                   rangelow;
1063
        __u32                   rangehigh;
1064
        __u32                   rxsubchans;
1065
        __u32                   audmode;
1066
        __s32                   signal;
1067
        __s32                   afc;
1068
        __u32                   reserved[4];
1069
};
1070
 
1071
struct v4l2_modulator
1072
{
1073
        __u32                   index;
1074
        __u8                    name[32];
1075
        __u32                   capability;
1076
        __u32                   rangelow;
1077
        __u32                   rangehigh;
1078
        __u32                   txsubchans;
1079
        __u32                   reserved[4];
1080
};
1081
 
1082
/*  Flags for the 'capability' field */
1083
#define V4L2_TUNER_CAP_LOW              0x0001
1084
#define V4L2_TUNER_CAP_NORM             0x0002
1085
#define V4L2_TUNER_CAP_STEREO           0x0010
1086
#define V4L2_TUNER_CAP_LANG2            0x0020
1087
#define V4L2_TUNER_CAP_SAP              0x0020
1088
#define V4L2_TUNER_CAP_LANG1            0x0040
1089
 
1090
/*  Flags for the 'rxsubchans' field */
1091
#define V4L2_TUNER_SUB_MONO             0x0001
1092
#define V4L2_TUNER_SUB_STEREO           0x0002
1093
#define V4L2_TUNER_SUB_LANG2            0x0004
1094
#define V4L2_TUNER_SUB_SAP              0x0004
1095
#define V4L2_TUNER_SUB_LANG1            0x0008
1096
 
1097
/*  Values for the 'audmode' field */
1098
#define V4L2_TUNER_MODE_MONO            0x0000
1099
#define V4L2_TUNER_MODE_STEREO          0x0001
1100
#define V4L2_TUNER_MODE_LANG2           0x0002
1101
#define V4L2_TUNER_MODE_SAP             0x0002
1102
#define V4L2_TUNER_MODE_LANG1           0x0003
1103
#define V4L2_TUNER_MODE_LANG1_LANG2     0x0004
1104
 
1105
struct v4l2_frequency
1106
{
1107
        __u32                 tuner;
1108
        enum v4l2_tuner_type  type;
1109
        __u32                 frequency;
1110
        __u32                 reserved[8];
1111
};
1112
 
1113
/*
1114
 *      A U D I O
1115
 */
1116
struct v4l2_audio
1117
{
1118
        __u32   index;
1119
        __u8    name[32];
1120
        __u32   capability;
1121
        __u32   mode;
1122
        __u32   reserved[2];
1123
};
1124
 
1125
/*  Flags for the 'capability' field */
1126
#define V4L2_AUDCAP_STEREO              0x00001
1127
#define V4L2_AUDCAP_AVL                 0x00002
1128
 
1129
/*  Flags for the 'mode' field */
1130
#define V4L2_AUDMODE_AVL                0x00001
1131
 
1132
struct v4l2_audioout
1133
{
1134
        __u32   index;
1135
        __u8    name[32];
1136
        __u32   capability;
1137
        __u32   mode;
1138
        __u32   reserved[2];
1139
};
1140
 
1141
/*
1142
 *      M P E G   S E R V I C E S
1143
 *
1144
 *      NOTE: EXPERIMENTAL API
1145
 */
1146
#if 1
1147
#define V4L2_ENC_IDX_FRAME_I    (0)
1148
#define V4L2_ENC_IDX_FRAME_P    (1)
1149
#define V4L2_ENC_IDX_FRAME_B    (2)
1150
#define V4L2_ENC_IDX_FRAME_MASK (0xf)
1151
 
1152
struct v4l2_enc_idx_entry {
1153
        __u64 offset;
1154
        __u64 pts;
1155
        __u32 length;
1156
        __u32 flags;
1157
        __u32 reserved[2];
1158
};
1159
 
1160
#define V4L2_ENC_IDX_ENTRIES (64)
1161
struct v4l2_enc_idx {
1162
        __u32 entries;
1163
        __u32 entries_cap;
1164
        __u32 reserved[4];
1165
        struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
1166
};
1167
 
1168
 
1169
#define V4L2_ENC_CMD_START      (0)
1170
#define V4L2_ENC_CMD_STOP       (1)
1171
#define V4L2_ENC_CMD_PAUSE      (2)
1172
#define V4L2_ENC_CMD_RESUME     (3)
1173
 
1174
/* Flags for V4L2_ENC_CMD_STOP */
1175
#define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)
1176
 
1177
struct v4l2_encoder_cmd {
1178
        __u32 cmd;
1179
        __u32 flags;
1180
        union {
1181
                struct {
1182
                        __u32 data[8];
1183
                } raw;
1184
        };
1185
};
1186
 
1187
#endif
1188
 
1189
 
1190
/*
1191
 *      D A T A   S E R V I C E S   ( V B I )
1192
 *
1193
 *      Data services API by Michael Schimek
1194
 */
1195
 
1196
/* Raw VBI */
1197
struct v4l2_vbi_format
1198
{
1199
        __u32   sampling_rate;          /* in 1 Hz */
1200
        __u32   offset;
1201
        __u32   samples_per_line;
1202
        __u32   sample_format;          /* V4L2_PIX_FMT_* */
1203
        __s32   start[2];
1204
        __u32   count[2];
1205
        __u32   flags;                  /* V4L2_VBI_* */
1206
        __u32   reserved[2];            /* must be zero */
1207
};
1208
 
1209
/*  VBI flags  */
1210
#define V4L2_VBI_UNSYNC         (1<< 0)
1211
#define V4L2_VBI_INTERLACED     (1<< 1)
1212
 
1213
/* Sliced VBI
1214
 *
1215
 *    This implements is a proposal V4L2 API to allow SLICED VBI
1216
 * required for some hardware encoders. It should change without
1217
 * notice in the definitive implementation.
1218
 */
1219
 
1220
struct v4l2_sliced_vbi_format
1221
{
1222
        __u16   service_set;
1223
        /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
1224
           service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
1225
                                 (equals frame lines 313-336 for 625 line video
1226
                                  standards, 263-286 for 525 line standards) */
1227
        __u16   service_lines[2][24];
1228
        __u32   io_size;
1229
        __u32   reserved[2];            /* must be zero */
1230
};
1231
 
1232
/* Teletext World System Teletext
1233
   (WST), defined on ITU-R BT.653-2 */
1234
#define V4L2_SLICED_TELETEXT_B          (0x0001)
1235
/* Video Program System, defined on ETS 300 231*/
1236
#define V4L2_SLICED_VPS                 (0x0400)
1237
/* Closed Caption, defined on EIA-608 */
1238
#define V4L2_SLICED_CAPTION_525         (0x1000)
1239
/* Wide Screen System, defined on ITU-R BT1119.1 */
1240
#define V4L2_SLICED_WSS_625             (0x4000)
1241
 
1242
#define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525)
1243
#define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
1244
 
1245
struct v4l2_sliced_vbi_cap
1246
{
1247
        __u16   service_set;
1248
        /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
1249
           service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
1250
                                 (equals frame lines 313-336 for 625 line video
1251
                                  standards, 263-286 for 525 line standards) */
1252
        __u16   service_lines[2][24];
1253
        enum v4l2_buf_type type;
1254
        __u32   reserved[3];    /* must be 0 */
1255
};
1256
 
1257
struct v4l2_sliced_vbi_data
1258
{
1259
        __u32   id;
1260
        __u32   field;          /* 0: first field, 1: second field */
1261
        __u32   line;           /* 1-23 */
1262
        __u32   reserved;       /* must be 0 */
1263
        __u8    data[48];
1264
};
1265
 
1266
/*
1267
 *      A G G R E G A T E   S T R U C T U R E S
1268
 */
1269
 
1270
/*      Stream data format
1271
 */
1272
struct v4l2_format
1273
{
1274
        enum v4l2_buf_type type;
1275
        union
1276
        {
1277
                struct v4l2_pix_format          pix;     // V4L2_BUF_TYPE_VIDEO_CAPTURE
1278
                struct v4l2_window              win;     // V4L2_BUF_TYPE_VIDEO_OVERLAY
1279
                struct v4l2_vbi_format          vbi;     // V4L2_BUF_TYPE_VBI_CAPTURE
1280
                struct v4l2_sliced_vbi_format   sliced;  // V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
1281
                __u8    raw_data[200];                   // user-defined
1282
        } fmt;
1283
};
1284
 
1285
 
1286
/*      Stream type-dependent parameters
1287
 */
1288
struct v4l2_streamparm
1289
{
1290
        enum v4l2_buf_type type;
1291
        union
1292
        {
1293
                struct v4l2_captureparm capture;
1294
                struct v4l2_outputparm  output;
1295
                __u8    raw_data[200];  /* user-defined */
1296
        } parm;
1297
};
1298
 
1299
/*
1300
 *      A D V A N C E D   D E B U G G I N G
1301
 *
1302
 *      NOTE: EXPERIMENTAL API
1303
 */
1304
 
1305
/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
1306
 
1307
#define V4L2_CHIP_MATCH_HOST       0  /* Match against chip ID on host (0 for the host) */
1308
#define V4L2_CHIP_MATCH_I2C_DRIVER 1  /* Match against I2C driver ID */
1309
#define V4L2_CHIP_MATCH_I2C_ADDR   2  /* Match against I2C 7-bit address */
1310
 
1311
struct v4l2_register {
1312
        __u32 match_type; /* Match type */
1313
        __u32 match_chip; /* Match this chip, meaning determined by match_type */
1314
        __u64 reg;
1315
        __u64 val;
1316
};
1317
 
1318
/* VIDIOC_G_CHIP_IDENT */
1319
struct v4l2_chip_ident {
1320
        __u32 match_type;  /* Match type */
1321
        __u32 match_chip;  /* Match this chip, meaning determined by match_type */
1322
        __u32 ident;       /* chip identifier as specified in <media/v4l2-chip-ident.h> */
1323
        __u32 revision;    /* chip revision, chip specific */
1324
};
1325
 
1326
/*
1327
 *      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
1328
 *
1329
 */
1330
#define VIDIOC_QUERYCAP         _IOR  ('V',  0, struct v4l2_capability)
1331
#define VIDIOC_RESERVED         _IO   ('V',  1)
1332
#define VIDIOC_ENUM_FMT         _IOWR ('V',  2, struct v4l2_fmtdesc)
1333
#define VIDIOC_G_FMT            _IOWR ('V',  4, struct v4l2_format)
1334
#define VIDIOC_S_FMT            _IOWR ('V',  5, struct v4l2_format)
1335
#define VIDIOC_REQBUFS          _IOWR ('V',  8, struct v4l2_requestbuffers)
1336
#define VIDIOC_QUERYBUF         _IOWR ('V',  9, struct v4l2_buffer)
1337
#define VIDIOC_G_FBUF           _IOR  ('V', 10, struct v4l2_framebuffer)
1338
#define VIDIOC_S_FBUF           _IOW  ('V', 11, struct v4l2_framebuffer)
1339
#define VIDIOC_OVERLAY          _IOW  ('V', 14, int)
1340
#define VIDIOC_QBUF             _IOWR ('V', 15, struct v4l2_buffer)
1341
#define VIDIOC_DQBUF            _IOWR ('V', 17, struct v4l2_buffer)
1342
#define VIDIOC_STREAMON         _IOW  ('V', 18, int)
1343
#define VIDIOC_STREAMOFF        _IOW  ('V', 19, int)
1344
#define VIDIOC_G_PARM           _IOWR ('V', 21, struct v4l2_streamparm)
1345
#define VIDIOC_S_PARM           _IOWR ('V', 22, struct v4l2_streamparm)
1346
#define VIDIOC_G_STD            _IOR  ('V', 23, v4l2_std_id)
1347
#define VIDIOC_S_STD            _IOW  ('V', 24, v4l2_std_id)
1348
#define VIDIOC_ENUMSTD          _IOWR ('V', 25, struct v4l2_standard)
1349
#define VIDIOC_ENUMINPUT        _IOWR ('V', 26, struct v4l2_input)
1350
#define VIDIOC_G_CTRL           _IOWR ('V', 27, struct v4l2_control)
1351
#define VIDIOC_S_CTRL           _IOWR ('V', 28, struct v4l2_control)
1352
#define VIDIOC_G_TUNER          _IOWR ('V', 29, struct v4l2_tuner)
1353
#define VIDIOC_S_TUNER          _IOW  ('V', 30, struct v4l2_tuner)
1354
#define VIDIOC_G_AUDIO          _IOR  ('V', 33, struct v4l2_audio)
1355
#define VIDIOC_S_AUDIO          _IOW  ('V', 34, struct v4l2_audio)
1356
#define VIDIOC_QUERYCTRL        _IOWR ('V', 36, struct v4l2_queryctrl)
1357
#define VIDIOC_QUERYMENU        _IOWR ('V', 37, struct v4l2_querymenu)
1358
#define VIDIOC_G_INPUT          _IOR  ('V', 38, int)
1359
#define VIDIOC_S_INPUT          _IOWR ('V', 39, int)
1360
#define VIDIOC_G_OUTPUT         _IOR  ('V', 46, int)
1361
#define VIDIOC_S_OUTPUT         _IOWR ('V', 47, int)
1362
#define VIDIOC_ENUMOUTPUT       _IOWR ('V', 48, struct v4l2_output)
1363
#define VIDIOC_G_AUDOUT         _IOR  ('V', 49, struct v4l2_audioout)
1364
#define VIDIOC_S_AUDOUT         _IOW  ('V', 50, struct v4l2_audioout)
1365
#define VIDIOC_G_MODULATOR      _IOWR ('V', 54, struct v4l2_modulator)
1366
#define VIDIOC_S_MODULATOR      _IOW  ('V', 55, struct v4l2_modulator)
1367
#define VIDIOC_G_FREQUENCY      _IOWR ('V', 56, struct v4l2_frequency)
1368
#define VIDIOC_S_FREQUENCY      _IOW  ('V', 57, struct v4l2_frequency)
1369
#define VIDIOC_CROPCAP          _IOWR ('V', 58, struct v4l2_cropcap)
1370
#define VIDIOC_G_CROP           _IOWR ('V', 59, struct v4l2_crop)
1371
#define VIDIOC_S_CROP           _IOW  ('V', 60, struct v4l2_crop)
1372
#define VIDIOC_G_JPEGCOMP       _IOR  ('V', 61, struct v4l2_jpegcompression)
1373
#define VIDIOC_S_JPEGCOMP       _IOW  ('V', 62, struct v4l2_jpegcompression)
1374
#define VIDIOC_QUERYSTD         _IOR  ('V', 63, v4l2_std_id)
1375
#define VIDIOC_TRY_FMT          _IOWR ('V', 64, struct v4l2_format)
1376
#define VIDIOC_ENUMAUDIO        _IOWR ('V', 65, struct v4l2_audio)
1377
#define VIDIOC_ENUMAUDOUT       _IOWR ('V', 66, struct v4l2_audioout)
1378
#define VIDIOC_G_PRIORITY       _IOR  ('V', 67, enum v4l2_priority)
1379
#define VIDIOC_S_PRIORITY       _IOW  ('V', 68, enum v4l2_priority)
1380
#define VIDIOC_G_SLICED_VBI_CAP _IOWR ('V', 69, struct v4l2_sliced_vbi_cap)
1381
#define VIDIOC_LOG_STATUS       _IO   ('V', 70)
1382
#define VIDIOC_G_EXT_CTRLS      _IOWR ('V', 71, struct v4l2_ext_controls)
1383
#define VIDIOC_S_EXT_CTRLS      _IOWR ('V', 72, struct v4l2_ext_controls)
1384
#define VIDIOC_TRY_EXT_CTRLS    _IOWR ('V', 73, struct v4l2_ext_controls)
1385
#if 1
1386
#define VIDIOC_ENUM_FRAMESIZES  _IOWR ('V', 74, struct v4l2_frmsizeenum)
1387
#define VIDIOC_ENUM_FRAMEINTERVALS      _IOWR ('V', 75, struct v4l2_frmivalenum)
1388
#define VIDIOC_G_ENC_INDEX      _IOR  ('V', 76, struct v4l2_enc_idx)
1389
#define VIDIOC_ENCODER_CMD      _IOWR ('V', 77, struct v4l2_encoder_cmd)
1390
#define VIDIOC_TRY_ENCODER_CMD  _IOWR ('V', 78, struct v4l2_encoder_cmd)
1391
 
1392
/* Experimental, only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */
1393
#define VIDIOC_DBG_S_REGISTER   _IOW  ('V', 79, struct v4l2_register)
1394
#define VIDIOC_DBG_G_REGISTER   _IOWR ('V', 80, struct v4l2_register)
1395
 
1396
#define VIDIOC_G_CHIP_IDENT     _IOWR ('V', 81, struct v4l2_chip_ident)
1397
#endif
1398
 
1399
#ifdef __OLD_VIDIOC_
1400
/* for compatibility, will go away some day */
1401
#define VIDIOC_OVERLAY_OLD      _IOWR ('V', 14, int)
1402
#define VIDIOC_S_PARM_OLD       _IOW  ('V', 22, struct v4l2_streamparm)
1403
#define VIDIOC_S_CTRL_OLD       _IOW  ('V', 28, struct v4l2_control)
1404
#define VIDIOC_G_AUDIO_OLD      _IOWR ('V', 33, struct v4l2_audio)
1405
#define VIDIOC_G_AUDOUT_OLD     _IOWR ('V', 49, struct v4l2_audioout)
1406
#define VIDIOC_CROPCAP_OLD      _IOR  ('V', 58, struct v4l2_cropcap)
1407
#endif
1408
 
1409
#define BASE_VIDIOC_PRIVATE     192             /* 192-255 are private */
1410
 
1411
#endif /* __LINUX_VIDEODEV2_H */
1412
 
1413
/*
1414
 * Local variables:
1415
 * c-basic-offset: 8
1416
 * End:
1417
 */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.