diff options
Diffstat (limited to 'include/linux/videodev2.h')
| -rw-r--r-- | include/linux/videodev2.h | 400 |
1 files changed, 253 insertions, 147 deletions
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index ad7fa9c86c10..e3715d774197 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -1,35 +1,31 @@ | |||
| 1 | #ifndef __LINUX_VIDEODEV2_H | ||
| 2 | #define __LINUX_VIDEODEV2_H | ||
| 3 | /* | 1 | /* |
| 4 | * Video for Linux Two | 2 | * Video for Linux Two |
| 5 | * | 3 | * |
| 6 | * Header file for v4l or V4L2 drivers and applications, for | 4 | * Header file for v4l or V4L2 drivers and applications |
| 7 | * Linux kernels 2.2.x or 2.4.x. | 5 | * with public API. |
| 6 | * All kernel-specific stuff were moved to media/v4l2-dev.h, so | ||
| 7 | * no #if __KERNEL tests are allowed here | ||
| 8 | * | 8 | * |
| 9 | * See http://bytesex.org/v4l/ for API specs and other | 9 | * See http://linuxtv.org for more info |
| 10 | * v4l2 documentation. | ||
| 11 | * | 10 | * |
| 12 | * Author: Bill Dirks <bdirks@pacbell.net> | 11 | * Author: Bill Dirks <bdirks@pacbell.net> |
| 13 | * Justin Schoeman | 12 | * Justin Schoeman |
| 14 | * et al. | 13 | * et al. |
| 15 | */ | 14 | */ |
| 15 | #ifndef __LINUX_VIDEODEV2_H | ||
| 16 | #define __LINUX_VIDEODEV2_H | ||
| 16 | #ifdef __KERNEL__ | 17 | #ifdef __KERNEL__ |
| 17 | #include <linux/time.h> /* need struct timeval */ | 18 | #include <linux/time.h> /* need struct timeval */ |
| 18 | #include <linux/poll.h> | ||
| 19 | #include <linux/device.h> | ||
| 20 | #include <linux/mutex.h> | ||
| 21 | #endif | ||
| 22 | #include <linux/compiler.h> /* need __user */ | 19 | #include <linux/compiler.h> /* need __user */ |
| 23 | 20 | #else | |
| 24 | 21 | #define __user | |
| 25 | #define OBSOLETE_OWNER 1 /* It will be removed for 2.6.17 */ | 22 | #endif |
| 26 | #define HAVE_V4L2 1 | 23 | #include <linux/types.h> |
| 27 | 24 | ||
| 28 | /* | 25 | /* |
| 29 | * Common stuff for both V4L1 and V4L2 | 26 | * Common stuff for both V4L1 and V4L2 |
| 30 | * Moved from videodev.h | 27 | * Moved from videodev.h |
| 31 | */ | 28 | */ |
| 32 | |||
| 33 | #define VIDEO_MAX_FRAME 32 | 29 | #define VIDEO_MAX_FRAME 32 |
| 34 | 30 | ||
| 35 | #define VID_TYPE_CAPTURE 1 /* Can capture */ | 31 | #define VID_TYPE_CAPTURE 1 /* Can capture */ |
| @@ -47,71 +43,6 @@ | |||
| 47 | #define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */ | 43 | #define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */ |
| 48 | #define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */ | 44 | #define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */ |
| 49 | 45 | ||
| 50 | #ifdef __KERNEL__ | ||
| 51 | |||
| 52 | /* Minor device allocation */ | ||
| 53 | #define MINOR_VFL_TYPE_GRABBER_MIN 0 | ||
| 54 | #define MINOR_VFL_TYPE_GRABBER_MAX 63 | ||
| 55 | #define MINOR_VFL_TYPE_RADIO_MIN 64 | ||
| 56 | #define MINOR_VFL_TYPE_RADIO_MAX 127 | ||
| 57 | #define MINOR_VFL_TYPE_VTX_MIN 192 | ||
| 58 | #define MINOR_VFL_TYPE_VTX_MAX 223 | ||
| 59 | #define MINOR_VFL_TYPE_VBI_MIN 224 | ||
| 60 | #define MINOR_VFL_TYPE_VBI_MAX 255 | ||
| 61 | |||
| 62 | #define VFL_TYPE_GRABBER 0 | ||
| 63 | #define VFL_TYPE_VBI 1 | ||
| 64 | #define VFL_TYPE_RADIO 2 | ||
| 65 | #define VFL_TYPE_VTX 3 | ||
| 66 | |||
| 67 | struct video_device | ||
| 68 | { | ||
| 69 | /* device info */ | ||
| 70 | struct device *dev; | ||
| 71 | char name[32]; | ||
| 72 | int type; /* v4l1 */ | ||
| 73 | int type2; /* v4l2 */ | ||
| 74 | int hardware; | ||
| 75 | int minor; | ||
| 76 | |||
| 77 | /* device ops + callbacks */ | ||
| 78 | const struct file_operations *fops; | ||
| 79 | void (*release)(struct video_device *vfd); | ||
| 80 | |||
| 81 | |||
| 82 | #if OBSOLETE_OWNER /* to be removed in 2.6.15 */ | ||
| 83 | /* obsolete -- fops->owner is used instead */ | ||
| 84 | struct module *owner; | ||
| 85 | /* dev->driver_data will be used instead some day. | ||
| 86 | * Use the video_{get|set}_drvdata() helper functions, | ||
| 87 | * so the switch over will be transparent for you. | ||
| 88 | * Or use {pci|usb}_{get|set}_drvdata() directly. */ | ||
| 89 | void *priv; | ||
| 90 | #endif | ||
| 91 | |||
| 92 | /* for videodev.c intenal usage -- please don't touch */ | ||
| 93 | int users; /* video_exclusive_{open|close} ... */ | ||
| 94 | struct mutex lock; /* ... helper function uses these */ | ||
| 95 | char devfs_name[64]; /* devfs */ | ||
| 96 | struct class_device class_dev; /* sysfs */ | ||
| 97 | }; | ||
| 98 | |||
| 99 | #define VIDEO_MAJOR 81 | ||
| 100 | |||
| 101 | extern int video_register_device(struct video_device *, int type, int nr); | ||
| 102 | extern void video_unregister_device(struct video_device *); | ||
| 103 | extern int video_usercopy(struct inode *inode, struct file *file, | ||
| 104 | unsigned int cmd, unsigned long arg, | ||
| 105 | int (*func)(struct inode *inode, struct file *file, | ||
| 106 | unsigned int cmd, void *arg)); | ||
| 107 | |||
| 108 | /* helper functions to alloc / release struct video_device, the | ||
| 109 | later can be used for video_device->release() */ | ||
| 110 | struct video_device *video_device_alloc(void); | ||
| 111 | void video_device_release(struct video_device *vfd); | ||
| 112 | |||
| 113 | #endif | ||
| 114 | |||
| 115 | /* | 46 | /* |
| 116 | * M I S C E L L A N E O U S | 47 | * M I S C E L L A N E O U S |
| 117 | */ | 48 | */ |
| @@ -172,6 +103,8 @@ enum v4l2_ctrl_type { | |||
| 172 | V4L2_CTRL_TYPE_BOOLEAN = 2, | 103 | V4L2_CTRL_TYPE_BOOLEAN = 2, |
| 173 | V4L2_CTRL_TYPE_MENU = 3, | 104 | V4L2_CTRL_TYPE_MENU = 3, |
| 174 | V4L2_CTRL_TYPE_BUTTON = 4, | 105 | V4L2_CTRL_TYPE_BUTTON = 4, |
| 106 | V4L2_CTRL_TYPE_INTEGER64 = 5, | ||
| 107 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | ||
| 175 | }; | 108 | }; |
| 176 | 109 | ||
| 177 | enum v4l2_tuner_type { | 110 | enum v4l2_tuner_type { |
| @@ -270,7 +203,6 @@ struct v4l2_capability | |||
| 270 | /* | 203 | /* |
| 271 | * V I D E O I M A G E F O R M A T | 204 | * V I D E O I M A G E F O R M A T |
| 272 | */ | 205 | */ |
| 273 | |||
| 274 | struct v4l2_pix_format | 206 | struct v4l2_pix_format |
| 275 | { | 207 | { |
| 276 | __u32 width; | 208 | __u32 width; |
| @@ -283,7 +215,7 @@ struct v4l2_pix_format | |||
| 283 | __u32 priv; /* private data, depends on pixelformat */ | 215 | __u32 priv; /* private data, depends on pixelformat */ |
| 284 | }; | 216 | }; |
| 285 | 217 | ||
| 286 | /* Pixel format FOURCC depth Description */ | 218 | /* Pixel format FOURCC depth Description */ |
| 287 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R','G','B','1') /* 8 RGB-3-3-2 */ | 219 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R','G','B','1') /* 8 RGB-3-3-2 */ |
| 288 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R','G','B','O') /* 16 RGB-5-5-5 */ | 220 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R','G','B','O') /* 16 RGB-5-5-5 */ |
| 289 | #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R','G','B','P') /* 16 RGB-5-6-5 */ | 221 | #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R','G','B','P') /* 16 RGB-5-6-5 */ |
| @@ -311,6 +243,7 @@ struct v4l2_pix_format | |||
| 311 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y','U','1','2') /* 12 YUV 4:2:0 */ | 243 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y','U','1','2') /* 12 YUV 4:2:0 */ |
| 312 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y','Y','U','V') /* 16 YUV 4:2:2 */ | 244 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y','Y','U','V') /* 16 YUV 4:2:2 */ |
| 313 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H','I','2','4') /* 8 8-bit color */ | 245 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H','I','2','4') /* 8 8-bit color */ |
| 246 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H','M','1','2') /* 8 YUV 4:1:1 16x16 macroblocks */ | ||
| 314 | 247 | ||
| 315 | /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ | 248 | /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ |
| 316 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') /* 8 BGBG.. GRGR.. */ | 249 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') /* 8 BGBG.. GRGR.. */ |
| @@ -319,7 +252,7 @@ struct v4l2_pix_format | |||
| 319 | #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */ | 252 | #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */ |
| 320 | #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G') /* JFIF JPEG */ | 253 | #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G') /* JFIF JPEG */ |
| 321 | #define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d') /* 1394 */ | 254 | #define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d') /* 1394 */ |
| 322 | #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG */ | 255 | #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG-1/2/4 */ |
| 323 | 256 | ||
| 324 | /* Vendor-specific formats */ | 257 | /* Vendor-specific formats */ |
| 325 | #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */ | 258 | #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */ |
| @@ -343,7 +276,6 @@ struct v4l2_fmtdesc | |||
| 343 | 276 | ||
| 344 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | 277 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
| 345 | 278 | ||
| 346 | |||
| 347 | /* | 279 | /* |
| 348 | * T I M E C O D E | 280 | * T I M E C O D E |
| 349 | */ | 281 | */ |
| @@ -373,16 +305,15 @@ struct v4l2_timecode | |||
| 373 | #define V4L2_TC_USERBITS_8BITCHARS 0x0008 | 305 | #define V4L2_TC_USERBITS_8BITCHARS 0x0008 |
| 374 | /* The above is based on SMPTE timecodes */ | 306 | /* The above is based on SMPTE timecodes */ |
| 375 | 307 | ||
| 376 | 308 | #ifdef __KERNEL__ | |
| 377 | /* | 309 | /* |
| 378 | * M P E G C O M P R E S S I O N P A R A M E T E R S | 310 | * M P E G C O M P R E S S I O N P A R A M E T E R S |
| 379 | * | 311 | * |
| 380 | * ### WARNING: this is still work-in-progress right now, most likely | 312 | * ### WARNING: This experimental MPEG compression API is obsolete. |
| 381 | * ### there will be some incompatible changes. | 313 | * ### It is replaced by the MPEG controls API. |
| 314 | * ### This old API will disappear in the near future! | ||
| 382 | * | 315 | * |
| 383 | */ | 316 | */ |
| 384 | |||
| 385 | |||
| 386 | enum v4l2_bitrate_mode { | 317 | enum v4l2_bitrate_mode { |
| 387 | V4L2_BITRATE_NONE = 0, /* not specified */ | 318 | V4L2_BITRATE_NONE = 0, /* not specified */ |
| 388 | V4L2_BITRATE_CBR, /* constant bitrate */ | 319 | V4L2_BITRATE_CBR, /* constant bitrate */ |
| @@ -460,6 +391,7 @@ struct v4l2_mpeg_compression { | |||
| 460 | /* I don't expect the above being perfect yet ;) */ | 391 | /* I don't expect the above being perfect yet ;) */ |
| 461 | __u32 reserved_5[8]; | 392 | __u32 reserved_5[8]; |
| 462 | }; | 393 | }; |
| 394 | #endif | ||
| 463 | 395 | ||
| 464 | struct v4l2_jpegcompression | 396 | struct v4l2_jpegcompression |
| 465 | { | 397 | { |
| @@ -491,7 +423,6 @@ struct v4l2_jpegcompression | |||
| 491 | * allways use APP0 */ | 423 | * allways use APP0 */ |
| 492 | }; | 424 | }; |
| 493 | 425 | ||
| 494 | |||
| 495 | /* | 426 | /* |
| 496 | * M E M O R Y - M A P P I N G B U F F E R S | 427 | * M E M O R Y - M A P P I N G B U F F E R S |
| 497 | */ | 428 | */ |
| @@ -573,7 +504,6 @@ struct v4l2_window | |||
| 573 | void __user *bitmap; | 504 | void __user *bitmap; |
| 574 | }; | 505 | }; |
| 575 | 506 | ||
| 576 | |||
| 577 | /* | 507 | /* |
| 578 | * C A P T U R E P A R A M E T E R S | 508 | * C A P T U R E P A R A M E T E R S |
| 579 | */ | 509 | */ |
| @@ -586,6 +516,7 @@ struct v4l2_captureparm | |||
| 586 | __u32 readbuffers; /* # of buffers for read */ | 516 | __u32 readbuffers; /* # of buffers for read */ |
| 587 | __u32 reserved[4]; | 517 | __u32 reserved[4]; |
| 588 | }; | 518 | }; |
| 519 | |||
| 589 | /* Flags for 'capability' and 'capturemode' fields */ | 520 | /* Flags for 'capability' and 'capturemode' fields */ |
| 590 | #define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */ | 521 | #define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */ |
| 591 | #define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */ | 522 | #define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */ |
| @@ -603,7 +534,6 @@ struct v4l2_outputparm | |||
| 603 | /* | 534 | /* |
| 604 | * I N P U T I M A G E C R O P P I N G | 535 | * I N P U T I M A G E C R O P P I N G |
| 605 | */ | 536 | */ |
| 606 | |||
| 607 | struct v4l2_cropcap { | 537 | struct v4l2_cropcap { |
| 608 | enum v4l2_buf_type type; | 538 | enum v4l2_buf_type type; |
| 609 | struct v4l2_rect bounds; | 539 | struct v4l2_rect bounds; |
| @@ -710,7 +640,6 @@ struct v4l2_standard | |||
| 710 | __u32 reserved[4]; | 640 | __u32 reserved[4]; |
| 711 | }; | 641 | }; |
| 712 | 642 | ||
| 713 | |||
| 714 | /* | 643 | /* |
| 715 | * V I D E O I N P U T S | 644 | * V I D E O I N P U T S |
| 716 | */ | 645 | */ |
| @@ -725,6 +654,7 @@ struct v4l2_input | |||
| 725 | __u32 status; | 654 | __u32 status; |
| 726 | __u32 reserved[4]; | 655 | __u32 reserved[4]; |
| 727 | }; | 656 | }; |
| 657 | |||
| 728 | /* Values for the 'type' field */ | 658 | /* Values for the 'type' field */ |
| 729 | #define V4L2_INPUT_TYPE_TUNER 1 | 659 | #define V4L2_INPUT_TYPE_TUNER 1 |
| 730 | #define V4L2_INPUT_TYPE_CAMERA 2 | 660 | #define V4L2_INPUT_TYPE_CAMERA 2 |
| @@ -775,6 +705,34 @@ struct v4l2_control | |||
| 775 | __s32 value; | 705 | __s32 value; |
| 776 | }; | 706 | }; |
| 777 | 707 | ||
| 708 | struct v4l2_ext_control | ||
| 709 | { | ||
| 710 | __u32 id; | ||
| 711 | __u32 reserved2[2]; | ||
| 712 | union { | ||
| 713 | __s32 value; | ||
| 714 | __s64 value64; | ||
| 715 | void *reserved; | ||
| 716 | }; | ||
| 717 | } __attribute__ ((packed)); | ||
| 718 | |||
| 719 | struct v4l2_ext_controls | ||
| 720 | { | ||
| 721 | __u32 ctrl_class; | ||
| 722 | __u32 count; | ||
| 723 | __u32 error_idx; | ||
| 724 | __u32 reserved[2]; | ||
| 725 | struct v4l2_ext_control *controls; | ||
| 726 | }; | ||
| 727 | |||
| 728 | /* Values for ctrl_class field */ | ||
| 729 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ | ||
| 730 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ | ||
| 731 | |||
| 732 | #define V4L2_CTRL_ID_MASK (0x0fffffff) | ||
| 733 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | ||
| 734 | #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) | ||
| 735 | |||
| 778 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ | 736 | /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ |
| 779 | struct v4l2_queryctrl | 737 | struct v4l2_queryctrl |
| 780 | { | 738 | { |
| @@ -801,12 +759,21 @@ struct v4l2_querymenu | |||
| 801 | /* Control flags */ | 759 | /* Control flags */ |
| 802 | #define V4L2_CTRL_FLAG_DISABLED 0x0001 | 760 | #define V4L2_CTRL_FLAG_DISABLED 0x0001 |
| 803 | #define V4L2_CTRL_FLAG_GRABBED 0x0002 | 761 | #define V4L2_CTRL_FLAG_GRABBED 0x0002 |
| 762 | #define V4L2_CTRL_FLAG_READ_ONLY 0x0004 | ||
| 763 | #define V4L2_CTRL_FLAG_UPDATE 0x0008 | ||
| 764 | #define V4L2_CTRL_FLAG_INACTIVE 0x0010 | ||
| 765 | #define V4L2_CTRL_FLAG_SLIDER 0x0020 | ||
| 766 | |||
| 767 | /* Query flag, to be ORed with the control ID */ | ||
| 768 | #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000 | ||
| 804 | 769 | ||
| 805 | /* Control IDs defined by V4L2 */ | 770 | /* User-class control IDs defined by V4L2 */ |
| 806 | #define V4L2_CID_BASE 0x00980900 | 771 | #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900) |
| 772 | #define V4L2_CID_USER_BASE V4L2_CID_BASE | ||
| 807 | /* IDs reserved for driver specific controls */ | 773 | /* IDs reserved for driver specific controls */ |
| 808 | #define V4L2_CID_PRIVATE_BASE 0x08000000 | 774 | #define V4L2_CID_PRIVATE_BASE 0x08000000 |
| 809 | 775 | ||
| 776 | #define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1) | ||
| 810 | #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0) | 777 | #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0) |
| 811 | #define V4L2_CID_CONTRAST (V4L2_CID_BASE+1) | 778 | #define V4L2_CID_CONTRAST (V4L2_CID_BASE+1) |
| 812 | #define V4L2_CID_SATURATION (V4L2_CID_BASE+2) | 779 | #define V4L2_CID_SATURATION (V4L2_CID_BASE+2) |
| @@ -833,6 +800,188 @@ struct v4l2_querymenu | |||
| 833 | #define V4L2_CID_VCENTER (V4L2_CID_BASE+23) | 800 | #define V4L2_CID_VCENTER (V4L2_CID_BASE+23) |
| 834 | #define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */ | 801 | #define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */ |
| 835 | 802 | ||
| 803 | /* MPEG-class control IDs defined by V4L2 */ | ||
| 804 | #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900) | ||
| 805 | #define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1) | ||
| 806 | |||
| 807 | /* MPEG streams */ | ||
| 808 | #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0) | ||
| 809 | enum v4l2_mpeg_stream_type { | ||
| 810 | V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */ | ||
| 811 | V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */ | ||
| 812 | V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */ | ||
| 813 | V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */ | ||
| 814 | V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */ | ||
| 815 | V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */ | ||
| 816 | }; | ||
| 817 | #define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1) | ||
| 818 | #define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2) | ||
| 819 | #define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3) | ||
| 820 | #define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4) | ||
| 821 | #define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5) | ||
| 822 | #define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6) | ||
| 823 | #define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7) | ||
| 824 | enum v4l2_mpeg_stream_vbi_fmt { | ||
| 825 | V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */ | ||
| 826 | V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */ | ||
| 827 | }; | ||
| 828 | |||
| 829 | /* MPEG audio */ | ||
| 830 | #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100) | ||
| 831 | enum v4l2_mpeg_audio_sampling_freq { | ||
| 832 | V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0, | ||
| 833 | V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1, | ||
| 834 | V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2, | ||
| 835 | }; | ||
| 836 | #define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101) | ||
| 837 | enum v4l2_mpeg_audio_encoding { | ||
| 838 | V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0, | ||
| 839 | V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1, | ||
| 840 | V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2, | ||
| 841 | }; | ||
| 842 | #define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102) | ||
| 843 | enum v4l2_mpeg_audio_l1_bitrate { | ||
| 844 | V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0, | ||
| 845 | V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1, | ||
| 846 | V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2, | ||
| 847 | V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3, | ||
| 848 | V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4, | ||
| 849 | V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5, | ||
| 850 | V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6, | ||
| 851 | V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7, | ||
| 852 | V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8, | ||
| 853 | V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9, | ||
| 854 | V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10, | ||
| 855 | V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11, | ||
| 856 | V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12, | ||
| 857 | V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13, | ||
| 858 | }; | ||
| 859 | #define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103) | ||
| 860 | enum v4l2_mpeg_audio_l2_bitrate { | ||
| 861 | V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0, | ||
| 862 | V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1, | ||
| 863 | V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2, | ||
| 864 | V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3, | ||
| 865 | V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4, | ||
| 866 | V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5, | ||
| 867 | V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6, | ||
| 868 | V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7, | ||
| 869 | V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8, | ||
| 870 | V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9, | ||
| 871 | V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10, | ||
| 872 | V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11, | ||
| 873 | V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12, | ||
| 874 | V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13, | ||
| 875 | }; | ||
| 876 | #define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104) | ||
| 877 | enum v4l2_mpeg_audio_l3_bitrate { | ||
| 878 | V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0, | ||
| 879 | V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1, | ||
| 880 | V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2, | ||
| 881 | V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3, | ||
| 882 | V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4, | ||
| 883 | V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5, | ||
| 884 | V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6, | ||
| 885 | V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7, | ||
| 886 | V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8, | ||
| 887 | V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9, | ||
| 888 | V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10, | ||
| 889 | V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11, | ||
| 890 | V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12, | ||
| 891 | V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13, | ||
| 892 | }; | ||
| 893 | #define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105) | ||
| 894 | enum v4l2_mpeg_audio_mode { | ||
| 895 | V4L2_MPEG_AUDIO_MODE_STEREO = 0, | ||
| 896 | V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1, | ||
| 897 | V4L2_MPEG_AUDIO_MODE_DUAL = 2, | ||
| 898 | V4L2_MPEG_AUDIO_MODE_MONO = 3, | ||
| 899 | }; | ||
| 900 | #define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106) | ||
| 901 | enum v4l2_mpeg_audio_mode_extension { | ||
| 902 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0, | ||
| 903 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1, | ||
| 904 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2, | ||
| 905 | V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3, | ||
| 906 | }; | ||
| 907 | #define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107) | ||
| 908 | enum v4l2_mpeg_audio_emphasis { | ||
| 909 | V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0, | ||
| 910 | V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1, | ||
| 911 | V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2, | ||
| 912 | }; | ||
| 913 | #define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108) | ||
| 914 | enum v4l2_mpeg_audio_crc { | ||
| 915 | V4L2_MPEG_AUDIO_CRC_NONE = 0, | ||
| 916 | V4L2_MPEG_AUDIO_CRC_CRC16 = 1, | ||
| 917 | }; | ||
| 918 | |||
| 919 | /* MPEG video */ | ||
| 920 | #define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200) | ||
| 921 | enum v4l2_mpeg_video_encoding { | ||
| 922 | V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0, | ||
| 923 | V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1, | ||
| 924 | }; | ||
| 925 | #define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201) | ||
| 926 | enum v4l2_mpeg_video_aspect { | ||
| 927 | V4L2_MPEG_VIDEO_ASPECT_1x1 = 0, | ||
| 928 | V4L2_MPEG_VIDEO_ASPECT_4x3 = 1, | ||
| 929 | V4L2_MPEG_VIDEO_ASPECT_16x9 = 2, | ||
| 930 | V4L2_MPEG_VIDEO_ASPECT_221x100 = 3, | ||
| 931 | }; | ||
| 932 | #define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202) | ||
| 933 | #define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203) | ||
| 934 | #define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204) | ||
| 935 | #define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205) | ||
| 936 | #define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206) | ||
| 937 | enum v4l2_mpeg_video_bitrate_mode { | ||
| 938 | V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0, | ||
| 939 | V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1, | ||
| 940 | }; | ||
| 941 | #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207) | ||
| 942 | #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208) | ||
| 943 | #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209) | ||
| 944 | |||
| 945 | /* MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */ | ||
| 946 | #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) | ||
| 947 | #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0) | ||
| 948 | enum v4l2_mpeg_cx2341x_video_spatial_filter_mode { | ||
| 949 | V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0, | ||
| 950 | V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1, | ||
| 951 | }; | ||
| 952 | #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1) | ||
| 953 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2) | ||
| 954 | enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type { | ||
| 955 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0, | ||
| 956 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, | ||
| 957 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2, | ||
| 958 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3, | ||
| 959 | V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4, | ||
| 960 | }; | ||
| 961 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3) | ||
| 962 | enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type { | ||
| 963 | V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0, | ||
| 964 | V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1, | ||
| 965 | }; | ||
| 966 | #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4) | ||
| 967 | enum v4l2_mpeg_cx2341x_video_temporal_filter_mode { | ||
| 968 | V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0, | ||
| 969 | V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1, | ||
| 970 | }; | ||
| 971 | #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5) | ||
| 972 | #define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6) | ||
| 973 | enum v4l2_mpeg_cx2341x_video_median_filter_type { | ||
| 974 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0, | ||
| 975 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1, | ||
| 976 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2, | ||
| 977 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3, | ||
| 978 | V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4, | ||
| 979 | }; | ||
| 980 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7) | ||
| 981 | #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8) | ||
| 982 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9) | ||
| 983 | #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10) | ||
| 984 | |||
| 836 | /* | 985 | /* |
| 837 | * T U N I N G | 986 | * T U N I N G |
| 838 | */ | 987 | */ |
| @@ -904,6 +1053,7 @@ struct v4l2_audio | |||
| 904 | __u32 mode; | 1053 | __u32 mode; |
| 905 | __u32 reserved[2]; | 1054 | __u32 reserved[2]; |
| 906 | }; | 1055 | }; |
| 1056 | |||
| 907 | /* Flags for the 'capability' field */ | 1057 | /* Flags for the 'capability' field */ |
| 908 | #define V4L2_AUDCAP_STEREO 0x00001 | 1058 | #define V4L2_AUDCAP_STEREO 0x00001 |
| 909 | #define V4L2_AUDCAP_AVL 0x00002 | 1059 | #define V4L2_AUDCAP_AVL 0x00002 |
| @@ -927,7 +1077,6 @@ struct v4l2_audioout | |||
| 927 | */ | 1077 | */ |
| 928 | 1078 | ||
| 929 | /* Raw VBI */ | 1079 | /* Raw VBI */ |
| 930 | |||
| 931 | struct v4l2_vbi_format | 1080 | struct v4l2_vbi_format |
| 932 | { | 1081 | { |
| 933 | __u32 sampling_rate; /* in 1 Hz */ | 1082 | __u32 sampling_rate; /* in 1 Hz */ |
| @@ -1034,8 +1183,6 @@ struct v4l2_streamparm | |||
| 1034 | } parm; | 1183 | } parm; |
| 1035 | }; | 1184 | }; |
| 1036 | 1185 | ||
| 1037 | |||
| 1038 | |||
| 1039 | /* | 1186 | /* |
| 1040 | * 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 | 1187 | * 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 |
| 1041 | * | 1188 | * |
| @@ -1045,8 +1192,10 @@ struct v4l2_streamparm | |||
| 1045 | #define VIDIOC_ENUM_FMT _IOWR ('V', 2, struct v4l2_fmtdesc) | 1192 | #define VIDIOC_ENUM_FMT _IOWR ('V', 2, struct v4l2_fmtdesc) |
| 1046 | #define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format) | 1193 | #define VIDIOC_G_FMT _IOWR ('V', 4, struct v4l2_format) |
| 1047 | #define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format) | 1194 | #define VIDIOC_S_FMT _IOWR ('V', 5, struct v4l2_format) |
| 1195 | #ifdef __KERNEL__ | ||
| 1048 | #define VIDIOC_G_MPEGCOMP _IOR ('V', 6, struct v4l2_mpeg_compression) | 1196 | #define VIDIOC_G_MPEGCOMP _IOR ('V', 6, struct v4l2_mpeg_compression) |
| 1049 | #define VIDIOC_S_MPEGCOMP _IOW ('V', 7, struct v4l2_mpeg_compression) | 1197 | #define VIDIOC_S_MPEGCOMP _IOW ('V', 7, struct v4l2_mpeg_compression) |
| 1198 | #endif | ||
| 1050 | #define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers) | 1199 | #define VIDIOC_REQBUFS _IOWR ('V', 8, struct v4l2_requestbuffers) |
| 1051 | #define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer) | 1200 | #define VIDIOC_QUERYBUF _IOWR ('V', 9, struct v4l2_buffer) |
| 1052 | #define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer) | 1201 | #define VIDIOC_G_FBUF _IOR ('V', 10, struct v4l2_framebuffer) |
| @@ -1096,7 +1245,11 @@ struct v4l2_streamparm | |||
| 1096 | #define VIDIOC_G_SLICED_VBI_CAP _IOR ('V', 69, struct v4l2_sliced_vbi_cap) | 1245 | #define VIDIOC_G_SLICED_VBI_CAP _IOR ('V', 69, struct v4l2_sliced_vbi_cap) |
| 1097 | #endif | 1246 | #endif |
| 1098 | #define VIDIOC_LOG_STATUS _IO ('V', 70) | 1247 | #define VIDIOC_LOG_STATUS _IO ('V', 70) |
| 1248 | #define VIDIOC_G_EXT_CTRLS _IOWR ('V', 71, struct v4l2_ext_controls) | ||
| 1249 | #define VIDIOC_S_EXT_CTRLS _IOWR ('V', 72, struct v4l2_ext_controls) | ||
| 1250 | #define VIDIOC_TRY_EXT_CTRLS _IOWR ('V', 73, struct v4l2_ext_controls) | ||
| 1099 | 1251 | ||
| 1252 | #ifdef __OLD_VIDIOC_ | ||
| 1100 | /* for compatibility, will go away some day */ | 1253 | /* for compatibility, will go away some day */ |
| 1101 | #define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int) | 1254 | #define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int) |
| 1102 | #define VIDIOC_S_PARM_OLD _IOW ('V', 22, struct v4l2_streamparm) | 1255 | #define VIDIOC_S_PARM_OLD _IOW ('V', 22, struct v4l2_streamparm) |
| @@ -1104,57 +1257,10 @@ struct v4l2_streamparm | |||
| 1104 | #define VIDIOC_G_AUDIO_OLD _IOWR ('V', 33, struct v4l2_audio) | 1257 | #define VIDIOC_G_AUDIO_OLD _IOWR ('V', 33, struct v4l2_audio) |
| 1105 | #define VIDIOC_G_AUDOUT_OLD _IOWR ('V', 49, struct v4l2_audioout) | 1258 | #define VIDIOC_G_AUDOUT_OLD _IOWR ('V', 49, struct v4l2_audioout) |
| 1106 | #define VIDIOC_CROPCAP_OLD _IOR ('V', 58, struct v4l2_cropcap) | 1259 | #define VIDIOC_CROPCAP_OLD _IOR ('V', 58, struct v4l2_cropcap) |
| 1107 | |||
| 1108 | #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ | ||
| 1109 | |||
| 1110 | |||
| 1111 | #ifdef __KERNEL__ | ||
| 1112 | /* | ||
| 1113 | * | ||
| 1114 | * V 4 L 2 D R I V E R H E L P E R A P I | ||
| 1115 | * | ||
| 1116 | * Some commonly needed functions for drivers (v4l2-common.o module) | ||
| 1117 | */ | ||
| 1118 | #include <linux/fs.h> | ||
| 1119 | |||
| 1120 | /* Video standard functions */ | ||
| 1121 | extern unsigned int v4l2_video_std_fps(struct v4l2_standard *vs); | ||
| 1122 | extern int v4l2_video_std_construct(struct v4l2_standard *vs, | ||
| 1123 | int id, char *name); | ||
| 1124 | |||
| 1125 | /* prority handling */ | ||
| 1126 | struct v4l2_prio_state { | ||
| 1127 | atomic_t prios[4]; | ||
| 1128 | }; | ||
| 1129 | int v4l2_prio_init(struct v4l2_prio_state *global); | ||
| 1130 | int v4l2_prio_change(struct v4l2_prio_state *global, enum v4l2_priority *local, | ||
| 1131 | enum v4l2_priority new); | ||
| 1132 | int v4l2_prio_open(struct v4l2_prio_state *global, enum v4l2_priority *local); | ||
| 1133 | int v4l2_prio_close(struct v4l2_prio_state *global, enum v4l2_priority *local); | ||
| 1134 | enum v4l2_priority v4l2_prio_max(struct v4l2_prio_state *global); | ||
| 1135 | int v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority *local); | ||
| 1136 | |||
| 1137 | /* names for fancy debug output */ | ||
| 1138 | extern char *v4l2_field_names[]; | ||
| 1139 | extern char *v4l2_type_names[]; | ||
| 1140 | |||
| 1141 | /* Compatibility layer interface -- v4l1-compat module */ | ||
| 1142 | typedef int (*v4l2_kioctl)(struct inode *inode, struct file *file, | ||
| 1143 | unsigned int cmd, void *arg); | ||
| 1144 | |||
| 1145 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
| 1146 | int v4l_compat_translate_ioctl(struct inode *inode, struct file *file, | ||
| 1147 | int cmd, void *arg, v4l2_kioctl driver_ioctl); | ||
| 1148 | #else | ||
| 1149 | #define v4l_compat_translate_ioctl(inode,file,cmd,arg,ioctl) -EINVAL | ||
| 1150 | #endif | 1260 | #endif |
| 1151 | 1261 | ||
| 1152 | /* 32 Bits compatibility layer for 64 bits processors */ | 1262 | #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ |
| 1153 | extern long v4l_compat_ioctl32(struct file *file, unsigned int cmd, | ||
| 1154 | unsigned long arg); | ||
| 1155 | |||
| 1156 | 1263 | ||
| 1157 | #endif /* __KERNEL__ */ | ||
| 1158 | #endif /* __LINUX_VIDEODEV2_H */ | 1264 | #endif /* __LINUX_VIDEODEV2_H */ |
| 1159 | 1265 | ||
| 1160 | /* | 1266 | /* |
