Import of pkgsrc-2013Q2

This commit is contained in:
2013-09-26 17:14:40 +02:00
commit 785076ae39
74991 changed files with 4380255 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
libv4l is a collection of libraries which adds a thin abstraction layer on
top of video4linux2 devices. The purpose of this (thin) layer is to make it
easy for application writers to support a wide variety of devices without
having to write seperate code for different devices in the same class.
+38
View File
@@ -0,0 +1,38 @@
# $NetBSD: Makefile,v 1.8 2012/10/06 14:11:06 asau Exp $
DISTNAME= libv4l-0.4.3
PKGREVISION= 2
CATEGORIES= graphics
MASTER_SITES= http://people.atrpms.net/~hdegoede/
MAINTAINER= tech-multimedia@NetBSD.org
HOMEPAGE= http://people.atrpms.net/~hdegoede/
COMMENT= Video4Linux userspace library
USE_TOOLS+= gmake
.include "../../mk/bsd.prefs.mk"
.if (${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly") \
&& !exists(/usr/include/sys/videoio.h)
PLIST.needs_videoio= yes
INSTALLATION_DIRS+= include/sys
pre-configure:
${MKDIR} ${BUILDLINK_DIR}/include/sys
cp ${FILESDIR}/videoio.h ${BUILDLINK_DIR}/include/sys
cp ${FILESDIR}/videodev.h ${BUILDLINK_DIR}/include
post-install:
${INSTALL_DATA} ${FILESDIR}/videoio.h ${DESTDIR}${PREFIX}/include/sys
.elif !exists(/usr/include/linux/videodev.h)
pre-configure:
${MKDIR} ${BUILDLINK_DIR}/include
cp ${FILESDIR}/videodev.h ${BUILDLINK_DIR}/include/videodev.h
.endif
PLIST_VARS= needs_videoio
CPPFLAGS.SunOS+= -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1
.include "../../mk/bsd.pkg.mk"
+16
View File
@@ -0,0 +1,16 @@
@comment $NetBSD: PLIST,v 1.4 2009/06/14 17:59:22 joerg Exp $
include/libv4l1.h
include/libv4l2.h
include/libv4lconvert.h
${PLIST.needs_videoio}include/sys/videoio.h
lib/libv4l/v4l1compat.so
lib/libv4l/v4l2convert.so
lib/libv4l1.so
lib/libv4l1.so.0
lib/libv4l2.so
lib/libv4l2.so.0
lib/libv4lconvert.so
lib/libv4lconvert.so.0
lib/pkgconfig/libv4l1.pc
lib/pkgconfig/libv4l2.pc
lib/pkgconfig/libv4lconvert.pc
+13
View File
@@ -0,0 +1,13 @@
# $NetBSD: buildlink3.mk,v 1.3 2009/03/20 19:24:43 joerg Exp $
BUILDLINK_TREE+= libv4l
.if !defined(LIBV4L_BUILDLINK3_MK)
LIBV4L_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.libv4l+= libv4l>=0.4.3nb2
BUILDLINK_ABI_DEPENDS.libv4l+= libv4l>=0.4.3nb2
BUILDLINK_PKGSRCDIR.libv4l?= ../../graphics/libv4l
.endif # LIBV4L_BUILDLINK3_MK
BUILDLINK_TREE+= -libv4l
+17
View File
@@ -0,0 +1,17 @@
$NetBSD: distinfo,v 1.11 2013/06/24 15:57:21 jperkin Exp $
SHA1 (libv4l-0.4.3.tar.gz) = 2539aa6b04650b97c9fc7ba95721f1e362a73031
RMD160 (libv4l-0.4.3.tar.gz) = 4f0435d955f15602ac093385607417fab71deb17
Size (libv4l-0.4.3.tar.gz) = 83022 bytes
SHA1 (patch-aa) = ab28c6400bbf8cf4e4e5ae6b258841574ec95ee3
SHA1 (patch-ab) = 5ade487d6d64d280f3fdae8afad99fbd0b6e5eda
SHA1 (patch-ac) = 5457af836909f1c9f759c6a780daeb13968ec91f
SHA1 (patch-ad) = 1d2568e49182efcbde47c14911b6a04e088b2578
SHA1 (patch-ae) = 1bdefe4897c6edbe4049c52d963f1769bd916750
SHA1 (patch-af) = b536fba33678e9b44ed22846344e523f92cd23ce
SHA1 (patch-ah) = d32f2e6aa694d4f0d04e8afbf462b3e61a31bbcc
SHA1 (patch-ai) = 8f22e4050d5e20981bfdd1fc51e572e42347c2b5
SHA1 (patch-aj) = 521abdfba83a34716ce0909f75d784fe0b6ecc8a
SHA1 (patch-ak) = 0465c3cc368609a3108f8d1aafcacf0ab3c61858
SHA1 (patch-al) = 8d020ef01f9956b37f718a529306e5f13aaa03a3
SHA1 (patch-am) = 23d75eb7e9d1959d2be87dd9aa961e55cfc58c52
+356
View File
@@ -0,0 +1,356 @@
/* This is the header file for video4linux ABI taken from kernel
* source 2.4.21. There was no copyright notice in this file, but the
* copyright for the kernel (and hence this file) is GNU GPL version 2
* only. This file is included here as COPYING, and applies to
* frameworks itself as well as this file. See
* http://bytesex.org/v4l/ for video4linux information. -pat */
#ifndef __LINUX_VIDEODEV_H
#define __LINUX_VIDEODEV_H
#include <sys/types.h>
#include <stdint.h>
typedef uint8_t __u8;
typedef int8_t __s8;
typedef uint16_t __u16;
typedef int16_t __s16;
typedef uint32_t __u32;
typedef int32_t __s32;
#define VID_TYPE_CAPTURE 1 /* Can capture */
#define VID_TYPE_TUNER 2 /* Can tune */
#define VID_TYPE_TELETEXT 4 /* Does teletext */
#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */
#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */
#define VID_TYPE_CLIPPING 32 /* Can clip */
#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */
#define VID_TYPE_SCALES 128 /* Scalable */
#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */
#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */
#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */
#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */
struct video_capability
{
char name[32];
int type;
int channels; /* Num channels */
int audios; /* Num audio devices */
int maxwidth; /* Supported width */
int maxheight; /* And height */
int minwidth; /* Supported width */
int minheight; /* And height */
};
struct video_channel
{
int channel;
char name[32];
int tuners;
__u32 flags;
#define VIDEO_VC_TUNER 1 /* Channel has a tuner */
#define VIDEO_VC_AUDIO 2 /* Channel has audio */
__u16 type;
#define VIDEO_TYPE_TV 1
#define VIDEO_TYPE_CAMERA 2
__u16 norm; /* Norm set by channel */
};
struct video_tuner
{
int tuner;
char name[32];
unsigned long rangelow, rangehigh; /* Tuner range */
__u32 flags;
#define VIDEO_TUNER_PAL 1
#define VIDEO_TUNER_NTSC 2
#define VIDEO_TUNER_SECAM 4
#define VIDEO_TUNER_LOW 8 /* Uses KHz not MHz */
#define VIDEO_TUNER_NORM 16 /* Tuner can set norm */
#define VIDEO_TUNER_STEREO_ON 128 /* Tuner is seeing stereo */
#define VIDEO_TUNER_RDS_ON 256 /* Tuner is seeing an RDS datastream */
#define VIDEO_TUNER_MBS_ON 512 /* Tuner is seeing an MBS datastream */
__u16 mode; /* PAL/NTSC/SECAM/OTHER */
#define VIDEO_MODE_PAL 0
#define VIDEO_MODE_NTSC 1
#define VIDEO_MODE_SECAM 2
#define VIDEO_MODE_AUTO 3
__u16 signal; /* Signal strength 16bit scale */
};
struct video_picture
{
__u16 brightness;
__u16 hue;
__u16 colour;
__u16 contrast;
__u16 whiteness; /* Black and white only */
__u16 depth; /* Capture depth */
__u16 palette; /* Palette in use */
#define VIDEO_PALETTE_GREY 1 /* Linear greyscale */
#define VIDEO_PALETTE_HI240 2 /* High 240 cube (BT848) */
#define VIDEO_PALETTE_RGB565 3 /* 565 16 bit RGB */
#define VIDEO_PALETTE_RGB24 4 /* 24bit RGB */
#define VIDEO_PALETTE_RGB32 5 /* 32bit RGB */
#define VIDEO_PALETTE_RGB555 6 /* 555 15bit RGB */
#define VIDEO_PALETTE_YUV422 7 /* YUV422 capture */
#define VIDEO_PALETTE_YUYV 8
#define VIDEO_PALETTE_UYVY 9 /* The great thing about standards is ... */
#define VIDEO_PALETTE_YUV420 10
#define VIDEO_PALETTE_YUV411 11 /* YUV411 capture */
#define VIDEO_PALETTE_RAW 12 /* RAW capture (BT848) */
#define VIDEO_PALETTE_YUV422P 13 /* YUV 4:2:2 Planar */
#define VIDEO_PALETTE_YUV411P 14 /* YUV 4:1:1 Planar */
#define VIDEO_PALETTE_YUV420P 15 /* YUV 4:2:0 Planar */
#define VIDEO_PALETTE_YUV410P 16 /* YUV 4:1:0 Planar */
#define VIDEO_PALETTE_PLANAR 13 /* start of planar entries */
#define VIDEO_PALETTE_COMPONENT 7 /* start of component entries */
};
struct video_audio
{
int audio; /* Audio channel */
__u16 volume; /* If settable */
__u16 bass, treble;
__u32 flags;
#define VIDEO_AUDIO_MUTE 1
#define VIDEO_AUDIO_MUTABLE 2
#define VIDEO_AUDIO_VOLUME 4
#define VIDEO_AUDIO_BASS 8
#define VIDEO_AUDIO_TREBLE 16
#define VIDEO_AUDIO_BALANCE 32
char name[16];
#define VIDEO_SOUND_MONO 1
#define VIDEO_SOUND_STEREO 2
#define VIDEO_SOUND_LANG1 4
#define VIDEO_SOUND_LANG2 8
__u16 mode;
__u16 balance; /* Stereo balance */
__u16 step; /* Step actual volume uses */
};
struct video_clip
{
__s32 x,y;
__s32 width, height;
struct video_clip *next; /* For user use/driver use only */
};
struct video_window
{
__u32 x,y; /* Position of window */
__u32 width,height; /* Its size */
__u32 chromakey;
__u32 flags;
struct video_clip *clips; /* Set only */
int clipcount;
#define VIDEO_WINDOW_INTERLACE 1
#define VIDEO_WINDOW_CHROMAKEY 16 /* Overlay by chromakey */
#define VIDEO_CLIP_BITMAP -1
/* bitmap is 1024x625, a '1' bit represents a clipped pixel */
#define VIDEO_CLIPMAP_SIZE (128 * 625)
};
struct video_capture
{
__u32 x,y; /* Offsets into image */
__u32 width, height; /* Area to capture */
__u16 decimation; /* Decimation divider */
__u16 flags; /* Flags for capture */
#define VIDEO_CAPTURE_ODD 0 /* Temporal */
#define VIDEO_CAPTURE_EVEN 1
};
struct video_buffer
{
void *base;
int height,width;
int depth;
int bytesperline;
};
struct video_mmap
{
unsigned int frame; /* Frame (0 - n) for double buffer */
int height,width;
unsigned int format; /* should be VIDEO_PALETTE_* */
};
struct video_key
{
__u8 key[8];
__u32 flags;
};
#define VIDEO_MAX_FRAME 32
struct video_mbuf
{
int size; /* Total memory to map */
int frames; /* Frames */
int offsets[VIDEO_MAX_FRAME];
};
#define VIDEO_NO_UNIT (-1)
struct video_unit
{
int video; /* Video minor */
int vbi; /* VBI minor */
int radio; /* Radio minor */
int audio; /* Audio minor */
int teletext; /* Teletext minor */
};
struct vbi_format {
__u32 sampling_rate; /* in Hz */
__u32 samples_per_line;
__u32 sample_format; /* VIDEO_PALETTE_RAW only (1 byte) */
__s32 start[2]; /* starting line for each frame */
__u32 count[2]; /* count of lines for each frame */
__u32 flags;
#define VBI_UNSYNC 1 /* can distingues between top/bottom field */
#define VBI_INTERLACED 2 /* lines are interlaced */
};
/* video_info is biased towards hardware mpeg encode/decode */
/* but it could apply generically to any hardware compressor/decompressor */
struct video_info
{
__u32 frame_count; /* frames output since decode/encode began */
__u32 h_size; /* current unscaled horizontal size */
__u32 v_size; /* current unscaled veritcal size */
__u32 smpte_timecode; /* current SMPTE timecode (for current GOP) */
__u32 picture_type; /* current picture type */
__u32 temporal_reference; /* current temporal reference */
__u8 user_data[256]; /* user data last found in compressed stream */
/* user_data[0] contains user data flags, user_data[1] has count */
};
/* generic structure for setting playback modes */
struct video_play_mode
{
int mode;
int p1;
int p2;
};
/* for loading microcode / fpga programming */
struct video_code
{
char loadwhat[16]; /* name or tag of file being passed */
int datasize;
__u8 *data;
};
#define VIDIOCGCAP _IOR('v',1,struct video_capability) /* Get capabilities */
#define VIDIOCGCHAN _IOWR('v',2,struct video_channel) /* Get channel info (sources) */
#define VIDIOCSCHAN _IOW('v',3,struct video_channel) /* Set channel */
#define VIDIOCGTUNER _IOWR('v',4,struct video_tuner) /* Get tuner abilities */
#define VIDIOCSTUNER _IOW('v',5,struct video_tuner) /* Tune the tuner for the current channel */
#define VIDIOCGPICT _IOR('v',6,struct video_picture) /* Get picture properties */
#define VIDIOCSPICT _IOW('v',7,struct video_picture) /* Set picture properties */
#define VIDIOCCAPTURE _IOW('v',8,int) /* Start, end capture */
#define VIDIOCGWIN _IOR('v',9, struct video_window) /* Get the video overlay window */
#define VIDIOCSWIN _IOW('v',10, struct video_window) /* Set the video overlay window - passes clip list for hardware smarts , chromakey etc */
#define VIDIOCGFBUF _IOR('v',11, struct video_buffer) /* Get frame buffer */
#define VIDIOCSFBUF _IOW('v',12, struct video_buffer) /* Set frame buffer - root only */
#define VIDIOCKEY _IOR('v',13, struct video_key) /* Video key event - to dev 255 is to all - cuts capture on all DMA windows with this key (0xFFFFFFFF == all) */
#define VIDIOCGFREQ _IOR('v',14, unsigned long) /* Set tuner */
#define VIDIOCSFREQ _IOW('v',15, unsigned long) /* Set tuner */
#define VIDIOCGAUDIO _IOR('v',16, struct video_audio) /* Get audio info */
#define VIDIOCSAUDIO _IOW('v',17, struct video_audio) /* Audio source, mute etc */
#define VIDIOCSYNC _IOW('v',18, int) /* Sync with mmap grabbing */
#define VIDIOCMCAPTURE _IOW('v',19, struct video_mmap) /* Grab frames */
#define VIDIOCGMBUF _IOR('v',20, struct video_mbuf) /* Memory map buffer info */
#define VIDIOCGUNIT _IOR('v',21, struct video_unit) /* Get attached units */
#define VIDIOCGCAPTURE _IOR('v',22, struct video_capture) /* Get subcapture */
#define VIDIOCSCAPTURE _IOW('v',23, struct video_capture) /* Set subcapture */
#define VIDIOCSPLAYMODE _IOW('v',24, struct video_play_mode) /* Set output video mode/feature */
#define VIDIOCSWRITEMODE _IOW('v',25, int) /* Set write mode */
#define VIDIOCGPLAYINFO _IOR('v',26, struct video_info) /* Get current playback info from hardware */
#define VIDIOCSMICROCODE _IOW('v',27, struct video_code) /* Load microcode into hardware */
#define VIDIOCGVBIFMT _IOR('v',28, struct vbi_format) /* Get VBI information */
#define VIDIOCSVBIFMT _IOW('v',29, struct vbi_format) /* Set VBI information */
#define BASE_VIDIOCPRIVATE 192 /* 192-255 are private */
/* VIDIOCSWRITEMODE */
#define VID_WRITE_MPEG_AUD 0
#define VID_WRITE_MPEG_VID 1
#define VID_WRITE_OSD 2
#define VID_WRITE_TTX 3
#define VID_WRITE_CC 4
#define VID_WRITE_MJPEG 5
/* VIDIOCSPLAYMODE */
#define VID_PLAY_VID_OUT_MODE 0
/* p1: = VIDEO_MODE_PAL, VIDEO_MODE_NTSC, etc ... */
#define VID_PLAY_GENLOCK 1
/* p1: 0 = OFF, 1 = ON */
/* p2: GENLOCK FINE DELAY value */
#define VID_PLAY_NORMAL 2
#define VID_PLAY_PAUSE 3
#define VID_PLAY_SINGLE_FRAME 4
#define VID_PLAY_FAST_FORWARD 5
#define VID_PLAY_SLOW_MOTION 6
#define VID_PLAY_IMMEDIATE_NORMAL 7
#define VID_PLAY_SWITCH_CHANNELS 8
#define VID_PLAY_FREEZE_FRAME 9
#define VID_PLAY_STILL_MODE 10
#define VID_PLAY_MASTER_MODE 11
/* p1: see below */
#define VID_PLAY_MASTER_NONE 1
#define VID_PLAY_MASTER_VIDEO 2
#define VID_PLAY_MASTER_AUDIO 3
#define VID_PLAY_ACTIVE_SCANLINES 12
/* p1 = first active; p2 = last active */
#define VID_PLAY_RESET 13
#define VID_PLAY_END_MARK 14
#define VID_HARDWARE_BT848 1
#define VID_HARDWARE_QCAM_BW 2
#define VID_HARDWARE_PMS 3
#define VID_HARDWARE_QCAM_C 4
#define VID_HARDWARE_PSEUDO 5
#define VID_HARDWARE_SAA5249 6
#define VID_HARDWARE_AZTECH 7
#define VID_HARDWARE_SF16MI 8
#define VID_HARDWARE_RTRACK 9
#define VID_HARDWARE_ZOLTRIX 10
#define VID_HARDWARE_SAA7146 11
#define VID_HARDWARE_VIDEUM 12 /* Reserved for Winnov videum */
#define VID_HARDWARE_RTRACK2 13
#define VID_HARDWARE_PERMEDIA2 14 /* Reserved for Permedia2 */
#define VID_HARDWARE_RIVA128 15 /* Reserved for RIVA 128 */
#define VID_HARDWARE_PLANB 16 /* PowerMac motherboard video-in */
#define VID_HARDWARE_BROADWAY 17 /* Broadway project */
#define VID_HARDWARE_GEMTEK 18
#define VID_HARDWARE_TYPHOON 19
#define VID_HARDWARE_VINO 20 /* SGI Indy Vino */
#define VID_HARDWARE_CADET 21 /* Cadet radio */
#define VID_HARDWARE_TRUST 22 /* Trust FM Radio */
#define VID_HARDWARE_TERRATEC 23 /* TerraTec ActiveRadio */
#define VID_HARDWARE_CPIA 24
#define VID_HARDWARE_ZR36120 25 /* Zoran ZR36120/ZR36125 */
#define VID_HARDWARE_ZR36067 26 /* Zoran ZR36067/36060 */
#define VID_HARDWARE_OV511 27
#define VID_HARDWARE_ZR356700 28 /* Zoran 36700 series */
#define VID_HARDWARE_W9966 29
#define VID_HARDWARE_SE401 30 /* SE401 USB webcams */
#define VID_HARDWARE_PWC 31 /* Philips webcams */
#define VID_HARDWARE_MEYE 32 /* Sony Vaio MotionEye cameras */
#define VID_HARDWARE_CPIA2 33
#define VID_HARDWARE_VICAM 34 /* ViCam, 3Com Homeconnect */
#define VID_HARDWARE_SF16FMR2 35
#endif /* __LINUX_VIDEODEV_H */
+721
View File
@@ -0,0 +1,721 @@
/* $NetBSD: videoio.h,v 1.1 2008/09/17 14:04:54 joerg Exp $ */
/*-
* Copyright (c) 2005, 2008 Jared D. McNeill <jmcneill@invisible.ca>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/* See http://v4l2spec.bytesex.org/ for Video4Linux 2 specifications */
#ifndef _HAVE_SYS_VIDEOIO_H
#define _HAVE_SYS_VIDEOIO_H
#include <sys/types.h>
#include <sys/time.h>
#ifndef _KERNEL
#define __u64 uint64_t
#define __u32 uint32_t
#define __u16 uint16_t
#define __u8 uint8_t
#define __s64 int64_t
#define __s32 int32_t
#define __s16 int16_t
#define __s8 int8_t
#endif
typedef uint64_t v4l2_std_id;
#define v4l2_fourcc(a,b,c,d) (((uint32_t)(a) << 0) | \
((uint32_t)(b) << 8) | \
((uint32_t)(c) << 16) | \
((uint32_t)(d) << 24))
#if 0
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
#endif
#define V4L2_CTRL_ID2CLASS(id) ((id >> 16) & 0xfff)
#define V4L2_CTRL_ID2CID(id) (id & 0xffff)
enum v4l2_colorspace {
V4L2_COLORSPACE_SMPTE170M = 1,
V4L2_COLORSPACE_SMPTE240M,
V4L2_COLORSPACE_REC709,
V4L2_COLORSPACE_BT878,
V4L2_COLORSPACE_470_SYSTEM_M,
V4L2_COLORSPACE_470_SYSTEM_BG,
V4L2_COLORSPACE_JPEG,
V4L2_COLORSPACE_SRGB
};
enum v4l2_field {
V4L2_FIELD_ANY = 0,
V4L2_FIELD_NONE,
V4L2_FIELD_TOP,
V4L2_FIELD_BOTTOM,
V4L2_FIELD_INTERLACED,
V4L2_FIELD_SEQ_TB,
V4L2_FIELD_SEQ_BT,
V4L2_FIELD_ALTERNATE
};
enum v4l2_buf_type {
V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
V4L2_BUF_TYPE_VIDEO_OUTPUT,
V4L2_BUF_TYPE_VIDEO_OVERLAY,
V4L2_BUF_TYPE_VBI_CAPTURE,
V4L2_BUF_TYPE_VBI_OUTPUT,
V4L2_BUF_TYPE_PRIVATE = 0x80
};
enum v4l2_memory {
V4L2_MEMORY_MMAP = 1,
V4L2_MEMORY_USERPTR,
V4L2_MEMORY_OVERLAY
};
enum v4l2_priority {
V4L2_PRIORITY_UNSET = 0,
V4L2_PRIORITY_BACKGROUND,
V4L2_PRIORITY_INTERACTIVE,
V4L2_PRIORITY_RECORD,
V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE
};
enum v4l2_tuner_type {
V4L2_TUNER_RADIO = 1,
V4L2_TUNER_ANALOG_TV
};
enum v4l2_ctrl_type {
V4L2_CTRL_TYPE_INTEGER = 1,
V4L2_CTRL_TYPE_BOOLEAN,
V4L2_CTRL_TYPE_MENU,
V4L2_CTRL_TYPE_BUTTON
};
struct v4l2_timecode {
uint32_t type;
uint32_t flags;
uint8_t frames;
uint8_t seconds;
uint8_t minutes;
uint8_t hours;
uint8_t userbits[4];
};
struct v4l2_pix_format {
uint32_t width;
uint32_t height;
uint32_t pixelformat;
enum v4l2_field field;
uint32_t bytesperline;
uint32_t sizeimage;
enum v4l2_colorspace colorspace;
uint32_t priv;
};
struct v4l2_buffer {
uint32_t index;
enum v4l2_buf_type type;
uint32_t bytesused;
uint32_t flags;
enum v4l2_field field;
struct timeval timestamp;
struct v4l2_timecode timecode;
uint32_t sequence;
enum v4l2_memory memory;
union {
uint32_t offset;
unsigned long userptr;
} m;
uint32_t length;
uint32_t input;
uint32_t reserved;
};
struct v4l2_rect {
int32_t left;
int32_t top;
int32_t width;
int32_t height;
};
struct v4l2_fract {
uint32_t numerator;
uint32_t denominator;
};
struct v4l2_fmtdesc {
uint32_t index;
enum v4l2_buf_type type;
uint32_t flags;
uint8_t description[32];
uint32_t pixelformat;
uint32_t reserved[4];
};
struct v4l2_clip {
struct v4l2_rect c;
struct v4l2_clip *next;
};
struct v4l2_window {
struct v4l2_rect w;
enum v4l2_field field;
uint32_t chromakey;
struct v4l2_clip *clips;
uint32_t clipcount;
void *bitmap;
};
struct v4l2_vbi_format {
uint32_t sampling_rate;
uint32_t offset;
uint32_t samples_per_line;
uint32_t sample_format;
uint32_t start[2];
uint32_t count[2];
uint32_t flags;
uint32_t reserved[2];
};
/* In the API docs, but not the Linux implementation
*
* struct v4l2_sliced_vbi_format {
* uint32_t service_set;
* uint32_t packet_size;
* uint32_t io_size;
* uint32_t reserved;
* };
*
*
* struct v4l2_sliced_data {
* uint32_t id;
* uint32_t line;
* uint8_t data[];
* };
*/
struct v4l2_cropcap {
enum v4l2_buf_type type;
struct v4l2_rect bounds;
struct v4l2_rect defrect;
struct v4l2_fract pixelaspect;
};
struct v4l2_input {
uint32_t index;
uint8_t name[32];
uint32_t type;
uint32_t audioset;
uint32_t tuner;
v4l2_std_id std;
uint32_t status;
uint32_t reserved[4];
};
struct v4l2_output {
uint32_t index;
uint8_t name[32];
uint32_t type;
uint32_t audioset;
uint32_t modulator;
v4l2_std_id std;
uint32_t reserved[4];
};
struct v4l2_audio {
uint32_t index;
uint8_t name[32];
uint32_t capability;
uint32_t mode;
uint32_t reserved[2];
};
struct v4l2_audioout {
uint32_t index;
uint8_t name[32];
uint32_t capability;
uint32_t mode;
uint32_t reserved[2];
};
struct v4l2_compression {
uint32_t quality;
uint32_t keyframerate;
uint32_t pframerate;
uint32_t reserved[5];
};
struct v4l2_crop {
enum v4l2_buf_type type;
struct v4l2_rect c;
};
struct v4l2_control {
uint32_t id;
int32_t value;
};
struct v4l2_framebuffer {
uint32_t capability;
uint32_t flags;
void *base;
struct v4l2_pix_format fmt;
};
struct v4l2_standard {
uint32_t index;
v4l2_std_id id;
uint8_t name[24];
struct v4l2_fract frameperiod;
uint32_t framelines;
uint32_t reserved[4];
};
struct v4l2_format {
enum v4l2_buf_type type;
union {
struct v4l2_pix_format pix;
struct v4l2_window win;
struct v4l2_vbi_format vbi;
uint8_t raw_data[200];
} fmt;
};
struct v4l2_frequency {
uint32_t tuner;
enum v4l2_tuner_type type;
uint32_t frequency;
uint32_t reserved[8];
};
struct v4l2_jpegcompression {
int quality;
int APPn;
int APP_len;
char APP_data[60];
int COM_len;
char COM_data[60];
uint32_t jpeg_markers;
};
struct v4l2_modulator {
uint32_t index;
uint8_t name[32];
uint32_t capability;
uint32_t rangelow;
uint32_t rangehigh;
uint32_t txsubchans;
uint32_t reserved[4];
};
struct v4l2_captureparm {
uint32_t capability;
uint32_t capturemode;
struct v4l2_fract timeperframe;
uint32_t extendedmode;
uint32_t readbuffers;
uint32_t reserved[4];
};
struct v4l2_outputparm {
uint32_t capability;
uint32_t outputmode;
struct v4l2_fract timeperframe;
uint32_t extendedmode;
uint32_t writebuffers;
uint32_t reserved[4];
};
struct v4l2_streamparm {
enum v4l2_buf_type type;
union {
struct v4l2_captureparm capture;
struct v4l2_outputparm output;
uint8_t raw_data[200];
} parm;
};
struct v4l2_tuner {
uint32_t index;
uint8_t name[32];
enum v4l2_tuner_type type;
uint32_t capability;
uint32_t rangelow;
uint32_t rangehigh;
uint32_t rxsubchans;
uint32_t audmode;
uint32_t signal;
int32_t afc;
uint32_t reserved[4];
};
struct v4l2_capability {
uint8_t driver[16];
uint8_t card[32];
uint8_t bus_info[32];
uint32_t version;
uint32_t capabilities;
uint32_t reserved[4];
};
struct v4l2_queryctrl {
uint32_t id;
enum v4l2_ctrl_type type;
uint8_t name[32];
int32_t minimum;
int32_t maximum;
int32_t step;
int32_t default_value;
uint32_t flags;
uint32_t reserved[2];
};
struct v4l2_querymenu {
uint32_t id;
uint32_t index;
uint8_t name[32];
uint32_t reserved;
};
struct v4l2_requestbuffers {
uint32_t count;
enum v4l2_buf_type type;
enum v4l2_memory memory;
uint32_t reserved[2];
};
/* Timecode types */
#define V4L2_TC_TYPE_24FPS 1
#define V4L2_TC_TYPE_25FPS 2
#define V4L2_TC_TYPE_30FPS 3
#define V4L2_TC_TYPE_50FPS 4
#define V4L2_TC_TYPE_60FPS 5
/* Timecode flags */
#define V4L2_TC_FLAG_DROPFRAME 0x0001
#define V4L2_TC_FLAG_COLORFRAME 0x0002
#define V4L2_TC_USERBITS_field 0x000c
#define V4L2_TC_USERBITS_USERDEFINED 0x0000
#define V4L2_TC_USERBITS_8BITCHARS 0x0008
/* Buffer flags */
#define V4L2_BUF_FLAG_MAPPED 0x0001
#define V4L2_BUF_FLAG_QUEUED 0x0002
#define V4L2_BUF_FLAG_DONE 0x0004
#define V4L2_BUF_FLAG_KEYFRAME 0x0008
#define V4L2_BUF_FLAG_PFRAME 0x0010
#define V4L2_BUF_FLAG_BFRAME 0x0020
#define V4L2_BUF_FLAG_TIMECODE 0x0100
#define V4L2_BUF_FLAG_INPUT 0x0200
/* Image format description flags */
#define V4L2_FMT_FLAG_COMPRESSED 0x0001
/* Input types */
#define V4L2_INPUT_TYPE_TUNER 1
#define V4L2_INPUT_TYPE_CAMERA 2
/* Input status flags */
#define V4L2_IN_ST_NO_POWER 0x00000001
#define V4L2_IN_ST_NO_SIGNAL 0x00000002
#define V4L2_IN_ST_NO_COLOR 0x00000004
#define V4L2_IN_ST_NO_H_LOCK 0x00000100
#define V4L2_IN_ST_COLOR_KILL 0x00000200
#define V4L2_IN_ST_NO_SYNC 0x00010000
#define V4L2_IN_ST_NO_EQU 0x00020000
#define V4L2_IN_ST_NO_CARRIER 0x00040000
#define V4L2_IN_ST_MACROVISION 0x01000000
#define V4L2_IN_ST_NO_ACCESS 0x02000000
#define V4L2_IN_ST_VTR 0x04000000
/* Output types */
#define V4L2_OUTPUT_TYPE_MODULATOR 1
#define V4L2_OUTPUT_TYPE_ANALOG 2
#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
/* Audio capability flags */
#define V4L2_AUDCAP_STEREO 0x00001
#define V4L2_AUDCAP_AVL 0x00002
/* Audio modes */
#define V4L2_AUDMODE_AVL 0x00001
/* Frame buffer capability flags */
#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
/* Frame buffer flags */
#define V4L2_FBUF_FLAG_PRIMARY 0x0001
#define V4L2_FBUF_FLAG_OVERLAY 0x0002
#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
/* JPEG markers flags */
#define V4L2_JPEG_MARKER_DHT (1 << 3)
#define V4L2_JPEG_MARKER_DQT (1 << 4)
#define V4L2_JPEG_MARKER_DRI (1 << 5)
#define V4L2_JPEG_MARKER_COM (1 << 6)
#define V4L2_JPEG_MARKER_APP (1 << 7)
/* Streaming parameters capabilities */
#define V4L2_CAP_TIMEPERFRAME 0x1000
/* Capture parameters flags */
#define V4L2_MODE_HIGHQUALITY 0x0001
/* Tuner and modulator capability flags */
#define V4L2_TUNER_CAP_LOW 0x0001
#define V4L2_TUNER_CAP_NORM 0x0002
#define V4L2_TUNER_CAP_STEREO 0x0010
#define V4L2_TUNER_CAP_LANG2 0x0020
#define V4L2_TUNER_CAP_SAP 0x0020
#define V4L2_TUNER_CAP_LANG1 0x0040
/* Tuner and modulation audio transmission flags */
#define V4L2_TUNER_SUB_MONO 0x0001
#define V4L2_TUNER_SUB_STEREO 0x0002
#define V4L2_TUNER_SUB_LANG2 0x0004
#define V4L2_TUNER_SUB_SAP 0x0004
#define V4L2_TUNER_SUB_LANG1 0x0008
/* Tuner audio modes */
#define V4L2_TUNER_MODE_MONO 0
#define V4L2_TUNER_MODE_STEREO 1
#define V4L2_TUNER_MODE_LANG2 2
#define V4L2_TUNER_MODE_SAP 2
#define V4L2_TUNER_MODE_LANG1 3
/* Control flags */
#define V4L2_CTRL_FLAG_DISABLED 0x0001
#define V4L2_CTRL_FLAG_GRABBED 0x0002
#define V4L2_CTRL_FLAG_READ_ONLY 0x0004
#define V4L2_CTRL_FLAG_UPDATE 0x0008
#define V4L2_CTRL_FLAG_INACTIVE 0x0010
#define V4L2_CTRL_FLAG_SLIDER 0x0020
/* Control IDs defined by V4L2 */
#define V4L2_CID_BASE 0x00980900
#define V4L2_CID_PRIVATE_BASE 0x08000000
#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE + 0)
#define V4L2_CID_CONTRAST (V4L2_CID_BASE + 1)
#define V4L2_CID_SATURATION (V4L2_CID_BASE + 2)
#define V4L2_CID_HUE (V4L2_CID_BASE + 3)
#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE + 5)
#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE + 6)
#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE + 7)
#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE + 8)
#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE + 9)
#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE + 10)
#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE + 11)
#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE + 12)
#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE + 13)
#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE + 14)
#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE + 15)
#define V4L2_CID_GAMMA (V4L2_CID_BASE + 16)
#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)
#define V4L2_CID_EXPOSURE (V4L2_CID_BASE + 17)
#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE + 18)
#define V4L2_CID_GAIN (V4L2_CID_BASE + 19)
#define V4L2_CID_HFLIP (V4L2_CID_BASE + 20)
#define V4L2_CID_VFLIP (V4L2_CID_BASE + 21)
#define V4L2_CID_HCENTER_DEPRECATED (V4L2_CID_BASE + 22)
#define V4L2_CID_VCENTER_DEPRECATED (V4L2_CID_BASE + 23)
#define V4L2_CID_HCENTER V4L2_CID_HCENTER_DEPRECATED
#define V4L2_CID_VCENTER V4L2_CID_VCENTER_DEPRECATED
#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE + 24)
#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE + 25)
#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE + 26)
#define V4L2_CID_SHARPNESS (V4L2_CID_BASE + 27)
#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE + 28)
#define V4L2_CID_LASTP1 (V4L2_CID_BASE + 29)
/* Pixel formats */
#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
#define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
#define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
#define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
#define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
#define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
#define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
#define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('Y', '1', '1', 'P')
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
#define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
/* http://www.siliconimaging.com/RGB%20Bayer.htm */
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
/* Reserved pixel formats */
#define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
#define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
#define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
/* Video standards */
#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B | \
V4L2_STD_PAL_B1 | \
V4L2_STD_PAL_G)
#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D | \
V4L2_STD_PAL_D1 | \
V4L2_STD_PAL_K)
#define V4L2_STD_PAL (V4L2_STD_PAL_BG | \
V4L2_STD_PAL_DK | \
V4L2_STD_PAL_H | \
V4L2_STD_PAL_I)
#define V4L2_STD_NTSC (V4L2_STD_NTSC_M | \
V4L2_STD_NTSC_M_JP)
#define V4L2_STD_SECAM (V4L2_STD_SECAM_B | \
V4L2_STD_SECAM_D | \
V4L2_STD_SECAM_G | \
V4L2_STD_SECAM_H | \
V4L2_STD_SECAM_K | \
V4L2_STD_SECAM_K1 | \
V4L2_STD_SECAM_L)
#define V4L2_STD_525_60 (V4L2_STD_PAL_M | \
V4L2_STD_PAL_60 | \
V4L2_STD_NTSC)
#define V4L2_STD_625_50 (V4L2_STD_PAL | \
V4L2_STD_PAL_N | \
V4L2_STD_PAL_Nc | \
V4L2_STD_SECAM)
#define V4L2_STD_UNKNOWN 0
#define V4L2_STD_ALL (V4L2_STD_525_60 | \
V4L2_STD_625_50)
/* Raw VBI format flags */
#define V4L2_VBI_UNSYNC 0x0001
#define V4L2_VBI_INTERLACED 0x0002
/* Device capabilities */
#define V4L2_CAP_VIDEO_CAPTURE 0x00000001
#define V4L2_CAP_VIDEO_OUTPUT 0x00000002
#define V4L2_CAP_VIDEO_OVERLAY 0x00000004
#define V4L2_CAP_VBI_CAPTURE 0x00000010
#define V4L2_CAP_VBI_OUTPUT 0x00000020
#define V4L2_CAP_RDS_CAPTURE 0x00000100
#define V4L2_CAP_TUNER 0x00010000
#define V4L2_CAP_AUDIO 0x00020000
#define V4L2_CAP_READWRITE 0x01000000
#define V4L2_CAP_ASYNCIO 0x02000000
#define V4L2_CAP_STREAMING 0x04000000
#define V4L2_CAP_BITMASK \
"\20\1VIDEO_CAPTURE\2VIDEO_OUTPUT\3VIDEO_OVERLAY"
#if 0
"\5VBI_CAPTURE\6VBI_OUTPUT\9RDS_CAPTURE" \
"\17TUNER\18AUDIO\25READWRITE" \
"\26ASYNCIO\27STREAMING"
#endif
/* Device ioctls -- try to keep them the same as Linux for compat_linux */
#define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
#define VIDIOC_RESERVED _IO('V', 1)
#define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
#define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
#define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
/* 6 and 7 are VIDIOC_[SG]_COMP, which are unsupported */
#define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
#define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
#define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
#define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
#define VIDIOC_OVERLAY _IOW('V', 14, int)
#define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
#define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
#define VIDIOC_STREAMON _IOW('V', 18, int)
#define VIDIOC_STREAMOFF _IOW('V', 19, int)
#define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
#define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
#define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
#define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
#define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
#define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
#define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
#define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
#define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
#define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
#define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
#define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
#define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
#define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
#define VIDIOC_G_INPUT _IOR('V', 38, int)
#define VIDIOC_S_INPUT _IOWR('V', 39, int)
#define VIDIOC_G_OUTPUT _IOR('V', 46, int)
#define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
#define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
#define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
#define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
#define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
#define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
#define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
#define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
#define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
#define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
#define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
#define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
#define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
#define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
#define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
#define VIDIOC_G_PRIORITY _IOR('V', 67, enum v4l2_priority)
#define VIDIOC_S_PRIORITY _IOW('V', 68, enum v4l2_priority)
#endif /* !_HAVE_SYS_VIDEOIO_H */
+25
View File
@@ -0,0 +1,25 @@
$NetBSD: patch-aa,v 1.4 2012/04/18 17:47:22 hans Exp $
--- include/libv4lconvert.h.orig 2008-09-08 14:33:17.000000000 -0400
+++ include/libv4lconvert.h 2008-09-08 14:34:03.000000000 -0400
@@ -22,10 +22,20 @@
/* These headers are not needed by us, but by linux/videodev2.h,
which is broken on some systems and doesn't include them itself :( */
#include <sys/time.h>
+#ifdef __linux__
#include <linux/types.h>
#include <linux/ioctl.h>
/* end broken header workaround includes */
#include <linux/videodev2.h>
+#elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun)
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#if defined(__sun)
+#include <sys/videodev2.h>
+#else
+#include <sys/videoio.h>
+#endif
+#endif
#ifdef __cplusplus
extern "C" {
+19
View File
@@ -0,0 +1,19 @@
$NetBSD: patch-ab,v 1.3 2012/04/18 17:47:22 hans Exp $
--- libv4lconvert/libv4lconvert.c.orig 2008-09-08 14:34:57.000000000 -0400
+++ libv4lconvert/libv4lconvert.c 2008-09-08 14:38:17.000000000 -0400
@@ -19,7 +19,14 @@
#include <errno.h>
#include <string.h>
#include <stdlib.h>
+#ifdef __linux__
#include <syscall.h>
+#else
+#include <sys/syscall.h>
+#endif
+#ifdef __sun
+#include <alloca.h>
+#endif
#include <unistd.h>
#include "libv4lconvert.h"
#include "libv4lconvert-priv.h"
+23
View File
@@ -0,0 +1,23 @@
$NetBSD: patch-ac,v 1.4 2012/04/18 17:47:22 hans Exp $
--- include/libv4l2.h.orig 2008-09-08 14:42:22.000000000 -0400
+++ include/libv4l2.h 2008-09-08 14:43:43.000000000 -0400
@@ -22,6 +22,18 @@
#include <stdio.h>
#include <unistd.h>
+#if defined(__NetBSD__) || defined(__DragonFly__)
+#include <sys/types.h>
+typedef off_t __off64_t;
+#elif defined(__sun)
+#ifdef _LARGEFILE64_SOURCE
+typedef off64_t __off64_t;
+#else
+typedef off_t __off64_t;
+#endif
+typedef off_t __off_t;
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+91
View File
@@ -0,0 +1,91 @@
$NetBSD: patch-ad,v 1.5 2012/04/18 17:47:22 hans Exp $
* XXX
* `mode_t' is promoted to `int' when passwd through `...'.
--- libv4l2/libv4l2.c.orig 2008-09-03 10:23:46.000000000 +0000
+++ libv4l2/libv4l2.c
@@ -59,7 +59,11 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+#ifdef __linux__
#include <syscall.h>
+#else
+#include <sys/syscall.h>
+#endif
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
@@ -69,6 +73,14 @@
#include "libv4l2.h"
#include "libv4l2-priv.h"
+#ifdef __sun
+#define __off_t off_t
+#endif
+
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
/* Note these flags are stored together with the flags passed to v4l2_fd_open()
in v4l2_dev_info's flags member, so care should be taken that the do not
use the same bits! */
@@ -154,7 +166,7 @@ static int v4l2_map_buffers(int index)
break;
}
- devices[index].frame_pointers[i] = (void *)syscall(SYS_mmap2, NULL,
+ devices[index].frame_pointers[i] = mmap(NULL,
(size_t)buf.length, PROT_READ|PROT_WRITE, MAP_SHARED, devices[index].fd,
(__off_t)(buf.m.offset >> MMAP2_PAGE_SHIFT));
if (devices[index].frame_pointers[i] == MAP_FAILED) {
@@ -408,7 +420,7 @@ int v4l2_open (const char *file, int ofl
mode_t mode;
va_start (ap, oflag);
- mode = va_arg (ap, mode_t);
+ mode = (mode_t)va_arg (ap, int);
fd = syscall(SYS_open, file, oflag, mode);
@@ -584,7 +596,11 @@ int v4l2_dup(int fd)
int index;
if ((index = v4l2_get_index(fd)) == -1)
+#ifdef __sun
+ return syscall(SYS_fcntl, fd, F_DUPFD, 0);
+#else
return syscall(SYS_dup, fd);
+#endif
devices[index].open_count++;
@@ -871,7 +887,7 @@ int v4l2_ioctl (int fd, unsigned long in
but we need the buffer _now_ to write our converted data
to it! */
if (devices[index].convert_mmap_buf == MAP_FAILED) {
- devices[index].convert_mmap_buf = (void *)syscall(SYS_mmap2,
+ devices[index].convert_mmap_buf = mmap(NULL,
(size_t)(
devices[index].no_frames *
V4L2_FRAME_BUF_SIZE),
@@ -995,7 +1011,7 @@ void *v4l2_mmap(void *start, size_t leng
return MAP_FAILED;
}
- return (void *)syscall(SYS_mmap2, start, length, prot, flags, fd,
+ return mmap(start, length, prot, flags, fd,
(__off_t)(offset >> MMAP2_PAGE_SHIFT));
}
@@ -1012,7 +1028,7 @@ void *v4l2_mmap(void *start, size_t leng
}
if (devices[index].convert_mmap_buf == MAP_FAILED) {
- devices[index].convert_mmap_buf = (void *)syscall(SYS_mmap2, NULL,
+ devices[index].convert_mmap_buf = mmap(NULL,
(size_t)(
devices[index].no_frames *
V4L2_FRAME_BUF_SIZE),
+55
View File
@@ -0,0 +1,55 @@
$NetBSD: patch-ae,v 1.4 2012/04/18 17:47:22 hans Exp $
--- libv4l2/log.c.orig 2008-09-08 14:45:43.000000000 -0400
+++ libv4l2/log.c 2008-09-08 14:47:53.000000000 -0400
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <stdlib.h>
+#ifdef __linux__
#include <linux/ioctl.h>
/* These headers are not needed by us, but by linux/videodev2.h,
which is broken on some systems and doesn't include them itself :( */
@@ -25,9 +26,28 @@
#include <asm/types.h>
/* end broken header workaround includes */
#include <linux/videodev2.h>
+#else
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/time.h>
+#ifdef __sun
+#include <sys/videodev2.h>
+#else
+#include <sys/videoio.h>
+#endif
+#endif
#include "libv4l2.h"
#include "libv4l2-priv.h"
+#if defined(__sun)
+#define IOCGROUP(x) (((x) >> 8) & 0xff)
+#endif
+
+#if defined(__NetBSD__) || defined(__DragonFly__) || defined(__sun)
+#define _IOC_NR(x) ((x) & 0xff)
+#define _IOC_TYPE IOCGROUP
+#endif
+
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
FILE *v4l2_log_file = NULL;
@@ -84,11 +104,13 @@ static const char *v4l2_ioctls[] = {
[_IOC_NR(VIDIOC_ENUMAUDOUT)] = "VIDIOC_ENUMAUDOUT",
[_IOC_NR(VIDIOC_G_PRIORITY)] = "VIDIOC_G_PRIORITY",
[_IOC_NR(VIDIOC_S_PRIORITY)] = "VIDIOC_S_PRIORITY",
+#ifdef VIDIOC_G_SLICED_VBI_CAP
[_IOC_NR(VIDIOC_G_SLICED_VBI_CAP)] = "VIDIOC_G_SLICED_VBI_CAP",
[_IOC_NR(VIDIOC_LOG_STATUS)] = "VIDIOC_LOG_STATUS",
[_IOC_NR(VIDIOC_G_EXT_CTRLS)] = "VIDIOC_G_EXT_CTRLS",
[_IOC_NR(VIDIOC_S_EXT_CTRLS)] = "VIDIOC_S_EXT_CTRLS",
[_IOC_NR(VIDIOC_TRY_EXT_CTRLS)] = "VIDIOC_TRY_EXT_CTRLS",
+#endif
};
void v4l2_log_ioctl(unsigned long int request, void *arg, int result)
+87
View File
@@ -0,0 +1,87 @@
$NetBSD: patch-af,v 1.5 2013/06/24 15:57:21 jperkin Exp $
* XXXX
* `mode_t' is promoted to `int' when passed through `...'.
* Fix SunOS 64-bit.
--- libv4l2/v4l2convert.c.orig 2008-08-26 12:32:39.000000000 +0000
+++ libv4l2/v4l2convert.c
@@ -24,11 +24,16 @@
#include <stdarg.h>
#include <stdlib.h>
+#ifdef __linux__
#include <syscall.h>
+#else
+#include <sys/syscall.h>
+#endif
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+#ifdef __linux__
/* These headers are not needed by us, but by linux/videodev2.h,
which is broken on some systems and doesn't include them itself :( */
#include <sys/time.h>
@@ -36,8 +41,22 @@
#include <linux/ioctl.h>
/* end broken header workaround includes */
#include <linux/videodev2.h>
+#else
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#ifdef __sun
+#include <sys/videodev2.h>
+#else
+#include <sys/videoio.h>
+#endif
+#endif
#include <libv4l2.h>
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+
/* Check that open/read/mmap is not a define */
#if defined open || defined read || defined mmap
#error open/read/mmap is a prepocessor macro !!
@@ -61,7 +80,7 @@ LIBV4L_PUBLIC int open (const char *file
mode_t mode;
va_start (ap, oflag);
- mode = va_arg (ap, mode_t);
+ mode = (sizeof (mode_t) < sizeof (int) ? (mode_t)va_arg (ap, int) : va_arg (ap, mode_t));
fd = syscall(SYS_open, file, oflag, mode);
@@ -92,6 +111,7 @@ LIBV4L_PUBLIC int open (const char *file
return fd;
}
+#if !(defined(__sun) && defined(_LP64))
LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
{
int fd;
@@ -114,6 +134,7 @@ LIBV4L_PUBLIC int open64(const char *fil
return fd;
}
+#endif
LIBV4L_PUBLIC int close(int fd)
{
@@ -148,11 +169,13 @@ LIBV4L_PUBLIC void *mmap(void *start, si
return v4l2_mmap(start, length, prot, flags, fd, offset);
}
+#if !(defined(__sun) && defined(_LP64))
LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
__off64_t offset)
{
return v4l2_mmap(start, length, prot, flags, fd, offset);
}
+#endif
LIBV4L_PUBLIC int munmap(void *start, size_t length)
{
+23
View File
@@ -0,0 +1,23 @@
$NetBSD: patch-ah,v 1.2 2008/09/17 14:04:54 joerg Exp $
--- libv4l2/Makefile.orig 2008-08-26 14:32:39.000000000 +0200
+++ libv4l2/Makefile
@@ -1,8 +1,6 @@
override CPPFLAGS += -I../include -I../../../../linux/include -fvisibility=hidden
-CFLAGS := -g -O1
-CFLAGS += -Wall -Wno-unused -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
-
+LDFLAGS = -Wl,-R$(LIBDIR)
LIBS = -lpthread
V4L2_OBJS = libv4l2.o log.o
@@ -46,7 +44,7 @@ libv4l2.pc:
@echo 'Description: v4l2 device access library' >> libv4l2.pc
@echo 'Version: '$(V4L2_LIB_VERSION) >> libv4l2.pc
@echo 'Requires: libv4lconvert' >> libv4l2.pc
- @echo 'Libs: -L$${libdir} -lv4l2' >> libv4l2.pc
+ @echo 'Libs: -L$${libdir} -Wl,-R$${libdir} -lv4l2' >> libv4l2.pc
@echo 'Libs.private: -lpthread' >> libv4l2.pc
@echo 'Cflags: -I$${prefix}/include' >> libv4l2.pc
+13
View File
@@ -0,0 +1,13 @@
$NetBSD: patch-ai,v 1.1 2008/09/17 14:04:54 joerg Exp $
--- libv4lconvert/Makefile.orig 2008-08-26 14:32:39.000000000 +0200
+++ libv4lconvert/Makefile
@@ -1,8 +1,5 @@
override CPPFLAGS += -I../include -I../../../../linux/include -fvisibility=hidden
-CFLAGS := -g -O1
-CFLAGS += -Wall -Wno-unused -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
-
ifeq ($(LINKTYPE),static)
CONVERT_LIB = libv4lconvert.a
else
+23
View File
@@ -0,0 +1,23 @@
$NetBSD: patch-aj,v 1.4 2012/04/18 21:16:44 hans Exp $
--- include/libv4l1.h.orig 2009-01-10 15:36:53.000000000 -0500
+++ include/libv4l1.h 2009-01-10 15:37:29.000000000 -0500
@@ -57,6 +57,18 @@ LIBV4L_PUBLIC extern FILE *v4l1_log_file
capture formats, like hw specific bayer compression methods).
*/
+#if defined(__sun)
+#ifdef _LARGEFILE64_SOURCE
+typedef off64_t __off64_t;
+#else
+typedef off_t __off64_t;
+#endif
+typedef off_t __off_t;
+#include <sys/ioccom.h>
+#elif !defined(__off64_t)
+#define __off64_t off_t
+#endif
+
LIBV4L_PUBLIC int v4l1_open (const char *file, int oflag, ...);
LIBV4L_PUBLIC int v4l1_close(int fd);
LIBV4L_PUBLIC int v4l1_dup(int fd);
+68
View File
@@ -0,0 +1,68 @@
$NetBSD: patch-ak,v 1.4 2012/04/18 17:47:22 hans Exp $
* XXX
* 'mode_t' is promoted to `int' when passwd through `...'.
--- libv4l1/libv4l1.c.orig 2008-08-06 08:46:06.000000000 +0000
+++ libv4l1/libv4l1.c
@@ -44,12 +44,13 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
-#include <syscall.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>
+#ifdef __linux__
+#include <syscall.h>
/* These headers are not needed by us, but by linux/videodev2.h,
which is broken on some systems and doesn't include them itself :( */
#include <sys/time.h>
@@ -58,10 +59,24 @@
/* end broken header workaround includes */
#include <linux/videodev.h>
#include <linux/videodev2.h>
+#else
+#include <sys/syscall.h>
+#include <sys/ioctl.h>
+#include "videodev.h"
+#ifdef __sun
+#include <sys/videodev2.h>
+#else
+#include <sys/videoio.h>
+#endif
+#endif
#include <libv4l2.h>
#include "libv4l1.h"
#include "libv4l1-priv.h"
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
#define V4L1_SUPPORTS_ENUMINPUT 0x01
#define V4L1_SUPPORTS_ENUMSTD 0x02
#define V4L1_PIX_FMT_TOUCHED 0x04
@@ -267,7 +278,7 @@ int v4l1_open (const char *file, int ofl
mode_t mode;
va_start (ap, oflag);
- mode = va_arg (ap, mode_t);
+ mode = (sizeof (mode_t) < sizeof (int) ? (mode_t)va_arg (ap, int) : va_arg (ap, mode_t));
fd = syscall(SYS_open, file, oflag, mode);
@@ -434,7 +449,11 @@ int v4l1_dup(int fd)
int index;
if ((index = v4l1_get_index(fd)) == -1)
+#ifdef __sun
+ return syscall(SYS_fcntl, fd, F_DUPFD, 0);
+#else
return syscall(SYS_dup, fd);
+#endif
devices[index].open_count++;
+39
View File
@@ -0,0 +1,39 @@
$NetBSD: patch-al,v 1.2 2012/04/18 17:47:22 hans Exp $
--- libv4l1/log.c.orig 2008-08-06 04:46:13.000000000 -0400
+++ libv4l1/log.c 2009-01-10 15:56:48.000000000 -0500
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <stdlib.h>
+#ifdef __linux__
#include <linux/ioctl.h>
/* These headers are not needed by us, but by linux/videodev2.h,
which is broken on some systems and doesn't include them itself :( */
@@ -25,8 +26,26 @@
#include <asm/types.h>
/* end broken header workaround includes */
#include <linux/videodev.h>
+#else
+#ifdef __sun
+#include <sys/ioccom.h>
+#endif
+#include <sys/ioctl.h>
+#include "videodev.h"
+#endif
#include "libv4l1-priv.h"
+#if defined(__sun)
+#define IOCGROUP(x) (((x) >> 8) & 0xff)
+#endif
+
+#ifndef _IOC_NR
+#define _IOC_NR(x) ((x) & 0xff)
+#endif
+#ifndef _IOC_TYPE
+#define _IOC_TYPE IOCGROUP
+#endif
+
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
FILE *v4l1_log_file = NULL;
+67
View File
@@ -0,0 +1,67 @@
$NetBSD: patch-am,v 1.4 2013/06/24 15:57:21 jperkin Exp $
* XXXX
* `mode_t' is promoted to `int' when passed through `...'.
* Fix SunOS 64-bit
--- libv4l1/v4l1compat.c.orig 2008-08-26 12:32:39.000000000 +0000
+++ libv4l1/v4l1compat.c
@@ -40,6 +40,10 @@
#define LIBV4L_PUBLIC
#endif
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+
LIBV4L_PUBLIC int open (const char *file, int oflag, ...)
{
int fd;
@@ -50,7 +54,7 @@ LIBV4L_PUBLIC int open (const char *file
mode_t mode;
va_start (ap, oflag);
- mode = va_arg (ap, mode_t);
+ mode = (sizeof (mode_t) < sizeof (int) ? (mode_t)va_arg (ap, int) : va_arg (ap, mode_t));
fd = v4l1_open(file, oflag, mode);
@@ -61,6 +65,7 @@ LIBV4L_PUBLIC int open (const char *file
return fd;
}
+#if !(defined(__sun) && defined(_LP64))
LIBV4L_PUBLIC int open64 (const char *file, int oflag, ...)
{
int fd;
@@ -71,7 +76,7 @@ LIBV4L_PUBLIC int open64 (const char *fi
mode_t mode;
va_start (ap, oflag);
- mode = va_arg (ap, mode_t);
+ mode = (mode_t)va_arg (ap, int);
fd = v4l1_open(file, oflag | O_LARGEFILE, mode);
@@ -81,6 +86,7 @@ LIBV4L_PUBLIC int open64 (const char *fi
return fd;
}
+#endif
LIBV4L_PUBLIC int close(int fd) {
return v4l1_close(fd);
@@ -114,11 +120,13 @@ LIBV4L_PUBLIC void *mmap(void *start, si
return v4l1_mmap(start, length, prot, flags, fd, offset);
}
+#if !(defined(__sun) && defined(_LP64))
LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
__off64_t offset)
{
return v4l1_mmap(start, length, prot, flags, fd, offset);
}
+#endif
LIBV4L_PUBLIC int munmap(void *start, size_t length)
{