diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 21:32:12 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 21:32:12 -0500 |
commit | 9e9bc9736756f25d6c47b4eba0ebf25b20a6f153 (patch) | |
tree | 647240f479c5f23910c3e6194d1c35b6ba54d75e /Documentation | |
parent | 3c0cb7c31c206aaedb967e44b98442bbeb17a6c4 (diff) | |
parent | e3c92215198cb6aa00ad38db2780faa6b72e0a3f (diff) |
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (255 commits)
[media] radio-aimslab.c: Fix gcc 4.5+ bug
[media] cx25821: Fix compilation breakage due to BKL dependency
[media] v4l2-compat-ioctl32: fix compile warning
[media] zoran: fix compiler warning
[media] tda18218: fix compile warning
[media] ngene: fix compile warning
[media] DVB: IR support for TechnoTrend CT-3650
[media] cx23885, cimax2.c: Fix case of two CAM insertion irq
[media] ir-nec-decoder: fix repeat key issue
[media] staging: se401 depends on USB
[media] staging: usbvideo/vicam depends on USB
[media] soc_camera: Add the ability to bind regulators to soc_camedra devices
[media] V4L2: Add a v4l2-subdev (soc-camera) driver for OmniVision OV2640 sensor
[media] v4l: soc-camera: switch to .unlocked_ioctl
[media] v4l: ov772x: simplify pointer dereference
[media] ov9640: fix OmniVision OV9640 sensor driver's priv data retrieving
[media] ov9640: use macro to request OmniVision OV9640 sensor private data
[media] ivtv-i2c: Fix two warnings
[media] staging/lirc: Update lirc TODO files
[media] cx88: Remove the obsolete i2c_adapter.id field
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/DocBook/v4l/func-ioctl.xml | 5 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/pixfmt.xml | 4 | ||||
-rw-r--r-- | Documentation/Makefile | 2 | ||||
-rw-r--r-- | Documentation/dvb/lmedm04.txt | 2 | ||||
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 50 | ||||
-rw-r--r-- | Documentation/ioctl/ioctl-number.txt | 6 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.em28xx | 6 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.saa7134 | 2 | ||||
-rw-r--r-- | Documentation/video4linux/Makefile | 8 | ||||
-rw-r--r-- | Documentation/video4linux/README.cpia | 191 | ||||
-rw-r--r-- | Documentation/video4linux/Zoran | 74 | ||||
-rw-r--r-- | Documentation/video4linux/bttv/Cards | 4 | ||||
-rw-r--r-- | Documentation/video4linux/gspca.txt | 1 | ||||
-rw-r--r-- | Documentation/video4linux/meye.txt | 10 | ||||
-rw-r--r-- | Documentation/video4linux/v4lgrab.c | 201 | ||||
-rw-r--r-- | Documentation/video4linux/videobuf | 7 |
16 files changed, 44 insertions, 529 deletions
diff --git a/Documentation/DocBook/v4l/func-ioctl.xml b/Documentation/DocBook/v4l/func-ioctl.xml index 00f9690e1c28..b60fd37a6295 100644 --- a/Documentation/DocBook/v4l/func-ioctl.xml +++ b/Documentation/DocBook/v4l/func-ioctl.xml | |||
@@ -34,8 +34,7 @@ | |||
34 | <varlistentry> | 34 | <varlistentry> |
35 | <term><parameter>request</parameter></term> | 35 | <term><parameter>request</parameter></term> |
36 | <listitem> | 36 | <listitem> |
37 | <para>V4L2 ioctl request code as defined in the <link | 37 | <para>V4L2 ioctl request code as defined in the <filename>videodev2.h</filename> header file, for example |
38 | linkend="videodev">videodev.h</link> header file, for example | ||
39 | VIDIOC_QUERYCAP.</para> | 38 | VIDIOC_QUERYCAP.</para> |
40 | </listitem> | 39 | </listitem> |
41 | </varlistentry> | 40 | </varlistentry> |
@@ -57,7 +56,7 @@ file descriptor. An ioctl <parameter>request</parameter> has encoded | |||
57 | in it whether the argument is an input, output or read/write | 56 | in it whether the argument is an input, output or read/write |
58 | parameter, and the size of the argument <parameter>argp</parameter> in | 57 | parameter, and the size of the argument <parameter>argp</parameter> in |
59 | bytes. Macros and defines specifying V4L2 ioctl requests are located | 58 | bytes. Macros and defines specifying V4L2 ioctl requests are located |
60 | in the <link linkend="videodev">videodev.h</link> header file. | 59 | in the <filename>videodev2.h</filename> header file. |
61 | Applications should use their own copy, not include the version in the | 60 | Applications should use their own copy, not include the version in the |
62 | kernel sources on the system they compile on. All V4L2 ioctl requests, | 61 | kernel sources on the system they compile on. All V4L2 ioctl requests, |
63 | their respective function and parameters are specified in <xref | 62 | their respective function and parameters are specified in <xref |
diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/v4l/pixfmt.xml index d7c467187095..cfffc88d7383 100644 --- a/Documentation/DocBook/v4l/pixfmt.xml +++ b/Documentation/DocBook/v4l/pixfmt.xml | |||
@@ -142,8 +142,8 @@ leftmost pixel of the second row from the top, and so on. The last row | |||
142 | has just as many pad bytes after it as the other rows.</para> | 142 | has just as many pad bytes after it as the other rows.</para> |
143 | 143 | ||
144 | <para>In V4L2 each format has an identifier which looks like | 144 | <para>In V4L2 each format has an identifier which looks like |
145 | <constant>PIX_FMT_XXX</constant>, defined in the <link | 145 | <constant>PIX_FMT_XXX</constant>, defined in the <filename>videodev2.h</filename> |
146 | linkend="videodev">videodev.h</link> header file. These identifiers | 146 | header file. These identifiers |
147 | represent <link linkend="v4l2-fourcc">four character codes</link> | 147 | represent <link linkend="v4l2-fourcc">four character codes</link> |
148 | which are also listed below, however they are not the same as those | 148 | which are also listed below, however they are not the same as those |
149 | used in the Windows world.</para> | 149 | used in the Windows world.</para> |
diff --git a/Documentation/Makefile b/Documentation/Makefile index 6fc7ea1d1f9d..9b4bc5c76f33 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile | |||
@@ -1,3 +1,3 @@ | |||
1 | obj-m := DocBook/ accounting/ auxdisplay/ connector/ \ | 1 | obj-m := DocBook/ accounting/ auxdisplay/ connector/ \ |
2 | filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \ | 2 | filesystems/ filesystems/configfs/ ia64/ laptops/ networking/ \ |
3 | pcmcia/ spi/ timers/ video4linux/ vm/ watchdog/src/ | 3 | pcmcia/ spi/ timers/ vm/ watchdog/src/ |
diff --git a/Documentation/dvb/lmedm04.txt b/Documentation/dvb/lmedm04.txt index e175784b89bf..641886504201 100644 --- a/Documentation/dvb/lmedm04.txt +++ b/Documentation/dvb/lmedm04.txt | |||
@@ -46,7 +46,7 @@ and run | |||
46 | Other LG firmware can be extracted manually from US280D.sys | 46 | Other LG firmware can be extracted manually from US280D.sys |
47 | only found in windows/system32/driver. | 47 | only found in windows/system32/driver. |
48 | 48 | ||
49 | dd if=US280D.sys ibs=1 skip=42616 count=3668 of=dvb-usb-lme2510-lg.fw | 49 | dd if=US280D.sys ibs=1 skip=42360 count=3924 of=dvb-usb-lme2510-lg.fw |
50 | 50 | ||
51 | for DM04 LME2510C (LG Tuner) | 51 | for DM04 LME2510C (LG Tuner) |
52 | --------------------------- | 52 | --------------------------- |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 6c2f55e05f13..f2742e115b09 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -97,36 +97,38 @@ Who: Pavel Machek <pavel@ucw.cz> | |||
97 | 97 | ||
98 | --------------------------- | 98 | --------------------------- |
99 | 99 | ||
100 | What: Video4Linux API 1 ioctls and from Video devices. | ||
101 | When: kernel 2.6.38 | ||
102 | Files: include/linux/videodev.h | ||
103 | Check: include/linux/videodev.h | ||
104 | Why: V4L1 AP1 was replaced by V4L2 API during migration from 2.4 to 2.6 | ||
105 | series. The old API have lots of drawbacks and don't provide enough | ||
106 | means to work with all video and audio standards. The newer API is | ||
107 | already available on the main drivers and should be used instead. | ||
108 | Newer drivers should use v4l_compat_translate_ioctl function to handle | ||
109 | old calls, replacing to newer ones. | ||
110 | Decoder iocts are using internally to allow video drivers to | ||
111 | communicate with video decoders. This should also be improved to allow | ||
112 | V4L2 calls being translated into compatible internal ioctls. | ||
113 | Compatibility ioctls will be provided, for a while, via | ||
114 | v4l1-compat module. | ||
115 | Who: Mauro Carvalho Chehab <mchehab@infradead.org> | ||
116 | |||
117 | --------------------------- | ||
118 | |||
119 | What: Video4Linux obsolete drivers using V4L1 API | 100 | What: Video4Linux obsolete drivers using V4L1 API |
120 | When: kernel 2.6.38 | 101 | When: kernel 2.6.39 |
121 | Files: drivers/staging/cpia/* drivers/staging/stradis/* | 102 | Files: drivers/staging/se401/* drivers/staging/usbvideo/* |
122 | Check: drivers/staging/cpia/cpia.c drivers/staging/stradis/stradis.c | 103 | Check: drivers/staging/se401/se401.c drivers/staging/usbvideo/usbvideo.c |
123 | Why: There are some drivers still using V4L1 API, despite all efforts we've done | 104 | Why: There are some drivers still using V4L1 API, despite all efforts we've done |
124 | to migrate. Those drivers are for obsolete hardware that the old maintainer | 105 | to migrate. Those drivers are for obsolete hardware that the old maintainer |
125 | didn't care (or not have the hardware anymore), and that no other developer | 106 | didn't care (or not have the hardware anymore), and that no other developer |
126 | could find any hardware to buy. They probably have no practical usage today, | 107 | could find any hardware to buy. They probably have no practical usage today, |
127 | and people with such old hardware could probably keep using an older version | 108 | and people with such old hardware could probably keep using an older version |
128 | of the kernel. Those drivers will be moved to staging on 2.6.37 and, if nobody | 109 | of the kernel. Those drivers will be moved to staging on 2.6.38 and, if nobody |
129 | care enough to port and test them with V4L2 API, they'll be removed on 2.6.38. | 110 | cares enough to port and test them with V4L2 API, they'll be removed on 2.6.39. |
111 | Who: Mauro Carvalho Chehab <mchehab@infradead.org> | ||
112 | |||
113 | --------------------------- | ||
114 | |||
115 | What: Video4Linux: Remove obsolete ioctl's | ||
116 | When: kernel 2.6.39 | ||
117 | Files: include/media/videodev2.h | ||
118 | Why: Some ioctl's were defined wrong on 2.6.2 and 2.6.6, using the wrong | ||
119 | type of R/W arguments. They were fixed, but the old ioctl names are | ||
120 | still there, maintained to avoid breaking binary compatibility: | ||
121 | #define VIDIOC_OVERLAY_OLD _IOWR('V', 14, int) | ||
122 | #define VIDIOC_S_PARM_OLD _IOW('V', 22, struct v4l2_streamparm) | ||
123 | #define VIDIOC_S_CTRL_OLD _IOW('V', 28, struct v4l2_control) | ||
124 | #define VIDIOC_G_AUDIO_OLD _IOWR('V', 33, struct v4l2_audio) | ||
125 | #define VIDIOC_G_AUDOUT_OLD _IOWR('V', 49, struct v4l2_audioout) | ||
126 | #define VIDIOC_CROPCAP_OLD _IOR('V', 58, struct v4l2_cropcap) | ||
127 | There's no sense on preserving those forever, as it is very doubtful | ||
128 | that someone would try to use a such old binary with a modern kernel. | ||
129 | Removing them will allow us to remove some magic done at the V4L ioctl | ||
130 | handler. | ||
131 | |||
130 | Who: Mauro Carvalho Chehab <mchehab@infradead.org> | 132 | Who: Mauro Carvalho Chehab <mchehab@infradead.org> |
131 | 133 | ||
132 | --------------------------- | 134 | --------------------------- |
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 63ffd78824d8..d6a63c7b4478 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -155,7 +155,6 @@ Code Seq#(hex) Include File Comments | |||
155 | 'Q' all linux/soundcard.h | 155 | 'Q' all linux/soundcard.h |
156 | 'R' 00-1F linux/random.h conflict! | 156 | 'R' 00-1F linux/random.h conflict! |
157 | 'R' 01 linux/rfkill.h conflict! | 157 | 'R' 01 linux/rfkill.h conflict! |
158 | 'R' 01-0F media/rds.h conflict! | ||
159 | 'R' C0-DF net/bluetooth/rfcomm.h | 158 | 'R' C0-DF net/bluetooth/rfcomm.h |
160 | 'S' all linux/cdrom.h conflict! | 159 | 'S' all linux/cdrom.h conflict! |
161 | 'S' 80-81 scsi/scsi_ioctl.h conflict! | 160 | 'S' 80-81 scsi/scsi_ioctl.h conflict! |
@@ -194,7 +193,6 @@ Code Seq#(hex) Include File Comments | |||
194 | <http://lrcwww.epfl.ch/> | 193 | <http://lrcwww.epfl.ch/> |
195 | 'b' 00-FF conflict! bit3 vme host bridge | 194 | 'b' 00-FF conflict! bit3 vme host bridge |
196 | <mailto:natalia@nikhefk.nikhef.nl> | 195 | <mailto:natalia@nikhefk.nikhef.nl> |
197 | 'b' 00-0F media/bt819.h conflict! | ||
198 | 'c' all linux/cm4000_cs.h conflict! | 196 | 'c' all linux/cm4000_cs.h conflict! |
199 | 'c' 00-7F linux/comstats.h conflict! | 197 | 'c' 00-7F linux/comstats.h conflict! |
200 | 'c' 00-7F linux/coda.h conflict! | 198 | 'c' 00-7F linux/coda.h conflict! |
@@ -260,14 +258,11 @@ Code Seq#(hex) Include File Comments | |||
260 | 't' 80-8F linux/isdn_ppp.h | 258 | 't' 80-8F linux/isdn_ppp.h |
261 | 't' 90 linux/toshiba.h | 259 | 't' 90 linux/toshiba.h |
262 | 'u' 00-1F linux/smb_fs.h gone | 260 | 'u' 00-1F linux/smb_fs.h gone |
263 | 'v' all linux/videodev.h conflict! | ||
264 | 'v' 00-1F linux/ext2_fs.h conflict! | 261 | 'v' 00-1F linux/ext2_fs.h conflict! |
265 | 'v' 00-1F linux/fs.h conflict! | 262 | 'v' 00-1F linux/fs.h conflict! |
266 | 'v' 00-0F linux/sonypi.h conflict! | 263 | 'v' 00-0F linux/sonypi.h conflict! |
267 | 'v' C0-CF drivers/media/video/ov511.h conflict! | ||
268 | 'v' C0-DF media/pwc-ioctl.h conflict! | 264 | 'v' C0-DF media/pwc-ioctl.h conflict! |
269 | 'v' C0-FF linux/meye.h conflict! | 265 | 'v' C0-FF linux/meye.h conflict! |
270 | 'v' C0-CF drivers/media/video/zoran/zoran.h conflict! | ||
271 | 'v' D0-DF drivers/media/video/cpia2/cpia2dev.h conflict! | 266 | 'v' D0-DF drivers/media/video/cpia2/cpia2dev.h conflict! |
272 | 'w' all CERN SCI driver | 267 | 'w' all CERN SCI driver |
273 | 'y' 00-1F packet based user level communications | 268 | 'y' 00-1F packet based user level communications |
@@ -278,7 +273,6 @@ Code Seq#(hex) Include File Comments | |||
278 | <mailto:oe@port.de> | 273 | <mailto:oe@port.de> |
279 | 'z' 10-4F drivers/s390/crypto/zcrypt_api.h conflict! | 274 | 'z' 10-4F drivers/s390/crypto/zcrypt_api.h conflict! |
280 | 0x80 00-1F linux/fb.h | 275 | 0x80 00-1F linux/fb.h |
281 | 0x88 00-3F media/ovcamchip.h | ||
282 | 0x89 00-06 arch/x86/include/asm/sockios.h | 276 | 0x89 00-06 arch/x86/include/asm/sockios.h |
283 | 0x89 0B-DF linux/sockios.h | 277 | 0x89 0B-DF linux/sockios.h |
284 | 0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range | 278 | 0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range |
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index ac2616a62fc3..31b485723bc5 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -1,5 +1,5 @@ | |||
1 | 0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800] | 1 | 0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800] |
2 | 1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2710,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2862,eb1a:2863,eb1a:2870,eb1a:2881,eb1a:2883,eb1a:2868] | 2 | 1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2710,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2862,eb1a:2863,eb1a:2870,eb1a:2881,eb1a:2883,eb1a:2868,eb1a:2875] |
3 | 2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036] | 3 | 2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036] |
4 | 3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208] | 4 | 3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208] |
5 | 4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201] | 5 | 4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201] |
@@ -9,7 +9,7 @@ | |||
9 | 8 -> Kworld USB2800 (em2800) | 9 | 8 -> Kworld USB2800 (em2800) |
10 | 9 -> Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker (em2820/em2840) [1b80:e302,1b80:e304,2304:0207,2304:021a] | 10 | 9 -> Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker (em2820/em2840) [1b80:e302,1b80:e304,2304:0207,2304:021a] |
11 | 10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500] | 11 | 10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500] |
12 | 11 -> Terratec Hybrid XS (em2880) [0ccd:0042] | 12 | 11 -> Terratec Hybrid XS (em2880) |
13 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) | 13 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) |
14 | 13 -> Terratec Prodigy XS (em2880) [0ccd:0047] | 14 | 13 -> Terratec Prodigy XS (em2880) [0ccd:0047] |
15 | 14 -> SIIG AVTuner-PVR / Pixelview Prolink PlayTV USB 2.0 (em2820/em2840) | 15 | 14 -> SIIG AVTuner-PVR / Pixelview Prolink PlayTV USB 2.0 (em2820/em2840) |
@@ -53,7 +53,7 @@ | |||
53 | 52 -> DNT DA2 Hybrid (em2881) | 53 | 52 -> DNT DA2 Hybrid (em2881) |
54 | 53 -> Pinnacle Hybrid Pro (em2881) | 54 | 53 -> Pinnacle Hybrid Pro (em2881) |
55 | 54 -> Kworld VS-DVB-T 323UR (em2882) [eb1a:e323] | 55 | 54 -> Kworld VS-DVB-T 323UR (em2882) [eb1a:e323] |
56 | 55 -> Terratec Hybrid XS (em2882) (em2882) [0ccd:005e] | 56 | 55 -> Terratec Cinnergy Hybrid T USB XS (em2882) (em2882) [0ccd:005e,0ccd:0042] |
57 | 56 -> Pinnacle Hybrid Pro (2) (em2882) [2304:0226] | 57 | 56 -> Pinnacle Hybrid Pro (2) (em2882) [2304:0226] |
58 | 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] | 58 | 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] |
59 | 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] | 59 | 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] |
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index 8d9afc7d8014..6b4c72d8862d 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -180,3 +180,5 @@ | |||
180 | 179 -> Beholder BeholdTV A7 [5ace:7090] | 180 | 179 -> Beholder BeholdTV A7 [5ace:7090] |
181 | 180 -> Avermedia PCI M733A [1461:4155,1461:4255] | 181 | 180 -> Avermedia PCI M733A [1461:4155,1461:4255] |
182 | 181 -> TechoTrend TT-budget T-3000 [13c2:2804] | 182 | 181 -> TechoTrend TT-budget T-3000 [13c2:2804] |
183 | 182 -> Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid [17de:b136] | ||
184 | 183 -> Compro VideoMate Vista M1F [185b:c900] | ||
diff --git a/Documentation/video4linux/Makefile b/Documentation/video4linux/Makefile deleted file mode 100644 index 1ed0e98d057d..000000000000 --- a/Documentation/video4linux/Makefile +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | # kbuild trick to avoid linker error. Can be omitted if a module is built. | ||
2 | obj- := dummy.o | ||
3 | |||
4 | # List of programs to build | ||
5 | hostprogs-y := v4lgrab | ||
6 | |||
7 | # Tell kbuild to always build the programs | ||
8 | always := $(hostprogs-y) | ||
diff --git a/Documentation/video4linux/README.cpia b/Documentation/video4linux/README.cpia deleted file mode 100644 index 8a747fee661f..000000000000 --- a/Documentation/video4linux/README.cpia +++ /dev/null | |||
@@ -1,191 +0,0 @@ | |||
1 | This is a driver for the CPiA PPC2 driven parallel connected | ||
2 | Camera. For example the Creative WebcamII is CPiA driven. | ||
3 | |||
4 | ) [1]Peter Pregler, Linz 2000, published under the [2]GNU GPL | ||
5 | |||
6 | --------------------------------------------------------------------------- | ||
7 | |||
8 | USAGE: | ||
9 | |||
10 | General: | ||
11 | ======== | ||
12 | |||
13 | 1) Make sure you have created the video devices (/dev/video*): | ||
14 | |||
15 | - if you have a recent MAKEDEV do a 'cd /dev;./MAKEDEV video' | ||
16 | - otherwise do a: | ||
17 | |||
18 | cd /dev | ||
19 | mknod video0 c 81 0 | ||
20 | ln -s video0 video | ||
21 | |||
22 | 2) Compile the kernel (see below for the list of options to use), | ||
23 | configure your parport and reboot. | ||
24 | |||
25 | 3) If all worked well you should get messages similar | ||
26 | to the following (your versions may be different) on the console: | ||
27 | |||
28 | V4L-Driver for Vision CPiA based cameras v0.7.4 | ||
29 | parport0: read2 timeout. | ||
30 | parport0: Multimedia device, VLSI Vision Ltd PPC2 | ||
31 | Parallel port driver for Vision CPiA based camera | ||
32 | CPIA Version: 1.20 (2.0) | ||
33 | CPIA PnP-ID: 0553:0002:0100 | ||
34 | VP-Version: 1.0 0100 | ||
35 | 1 camera(s) found | ||
36 | |||
37 | |||
38 | As modules: | ||
39 | =========== | ||
40 | |||
41 | Make sure you have selected the following kernel options (you can | ||
42 | select all stuff as modules): | ||
43 | |||
44 | The cpia-stuff is in the section 'Character devices -> Video For Linux'. | ||
45 | |||
46 | CONFIG_PARPORT=m | ||
47 | CONFIG_PARPORT_PC=m | ||
48 | CONFIG_PARPORT_PC_FIFO=y | ||
49 | CONFIG_PARPORT_1284=y | ||
50 | CONFIG_VIDEO_DEV=m | ||
51 | CONFIG_VIDEO_CPIA=m | ||
52 | CONFIG_VIDEO_CPIA_PP=m | ||
53 | |||
54 | For autoloading of all those modules you need to tell module-init-tools | ||
55 | some stuff. Add the following line to your module-init-tools config-file | ||
56 | (e.g. /etc/modprobe.conf or wherever your distribution does store that | ||
57 | stuff): | ||
58 | |||
59 | options parport_pc io=0x378 irq=7 dma=3 | ||
60 | alias char-major-81 cpia_pp | ||
61 | |||
62 | The first line tells the dma/irq channels to use. Those _must_ match | ||
63 | the settings of your BIOS. Do NOT simply use the values above. See | ||
64 | Documentation/parport.txt for more information about this. The second | ||
65 | line associates the video-device file with the driver. Of cause you | ||
66 | can also load the modules once upon boot (usually done in /etc/modules). | ||
67 | |||
68 | Linked into the kernel: | ||
69 | ======================= | ||
70 | |||
71 | Make sure you have selected the following kernel options. Note that | ||
72 | you cannot compile the parport-stuff as modules and the cpia-driver | ||
73 | statically (the other way round is okay though). | ||
74 | |||
75 | The cpia-stuff is in the section 'Character devices -> Video For Linux'. | ||
76 | |||
77 | CONFIG_PARPORT=y | ||
78 | CONFIG_PARPORT_PC=y | ||
79 | CONFIG_PARPORT_PC_FIFO=y | ||
80 | CONFIG_PARPORT_1284=y | ||
81 | CONFIG_VIDEO_DEV=y | ||
82 | CONFIG_VIDEO_CPIA=y | ||
83 | CONFIG_VIDEO_CPIA_PP=y | ||
84 | |||
85 | To use DMA/irq you will need to tell the kernel upon boot time the | ||
86 | hardware configuration of the parport. You can give the boot-parameter | ||
87 | at the LILO-prompt or specify it in lilo.conf. I use the following | ||
88 | append-line in lilo.conf: | ||
89 | |||
90 | append="parport=0x378,7,3" | ||
91 | |||
92 | See Documentation/parport.txt for more information about the | ||
93 | configuration of the parport and the values given above. Do not simply | ||
94 | use the values given above. | ||
95 | |||
96 | --------------------------------------------------------------------------- | ||
97 | FEATURES: | ||
98 | |||
99 | - mmap/read v4l-interface (but no overlay) | ||
100 | - image formats: CIF/QCIF, SIF/QSIF, various others used by isabel; | ||
101 | note: all sizes except CIF/QCIF are implemented by clipping, i.e. | ||
102 | pixels are not uploaded from the camera | ||
103 | - palettes: VIDEO_PALETTE_GRAY, VIDEO_PALETTE_RGB565, VIDEO_PALETTE_RGB555, | ||
104 | VIDEO_PALETTE_RGB24, VIDEO_PALETTE_RGB32, VIDEO_PALETTE_YUYV, | ||
105 | VIDEO_PALETTE_UYVY, VIDEO_PALETTE_YUV422 | ||
106 | - state information (color balance, exposure, ...) is preserved between | ||
107 | device opens | ||
108 | - complete control over camera via proc-interface (_all_ camera settings are | ||
109 | supported), there is also a python-gtk application available for this [3] | ||
110 | - works under SMP (but the driver is completely serialized and synchronous) | ||
111 | so you get no benefit from SMP, but at least it does not crash your box | ||
112 | - might work for non-Intel architecture, let us know about this | ||
113 | |||
114 | --------------------------------------------------------------------------- | ||
115 | TESTED APPLICATIONS: | ||
116 | |||
117 | - a simple test application based on Xt is available at [3] | ||
118 | - another test-application based on gqcam-0.4 (uses GTK) | ||
119 | - gqcam-0.6 should work | ||
120 | - xawtv-3.x (also the webcam software) | ||
121 | - xawtv-2.46 | ||
122 | - w3cam (cgi-interface and vidcat, e.g. you may try out 'vidcat |xv | ||
123 | -maxpect -root -quit +noresetroot -rmode 5 -') | ||
124 | - vic, the MBONE video conferencing tool (version 2.8ucl4-1) | ||
125 | - isabel 3R4beta (barely working, but AFAICT all the problems are on | ||
126 | their side) | ||
127 | - camserv-0.40 | ||
128 | |||
129 | See [3] for pointers to v4l-applications. | ||
130 | |||
131 | --------------------------------------------------------------------------- | ||
132 | KNOWN PROBLEMS: | ||
133 | |||
134 | - some applications do not handle the image format correctly, you will | ||
135 | see strange horizontal stripes instead of a nice picture -> make sure | ||
136 | your application does use a supported image size or queries the driver | ||
137 | for the actually used size (reason behind this: the camera cannot | ||
138 | provide any image format, so if size NxM is requested the driver will | ||
139 | use a format to the closest fitting N1xM1, the application should now | ||
140 | query for this granted size, most applications do not). | ||
141 | - all the todo ;) | ||
142 | - if there is not enough light and the picture is too dark try to | ||
143 | adjust the SetSensorFPS setting, automatic frame rate adjustment | ||
144 | has its price | ||
145 | - do not try out isabel 3R4beta (built 135), you will be disappointed | ||
146 | |||
147 | --------------------------------------------------------------------------- | ||
148 | TODO: | ||
149 | |||
150 | - multiple camera support (struct camera or something) - This should work, | ||
151 | but hasn't been tested yet. | ||
152 | - architecture independence? | ||
153 | - SMP-safe asynchronous mmap interface | ||
154 | - nibble mode for old parport interfaces | ||
155 | - streaming capture, this should give a performance gain | ||
156 | |||
157 | --------------------------------------------------------------------------- | ||
158 | IMPLEMENTATION NOTES: | ||
159 | |||
160 | The camera can act in two modes, streaming or grabbing. Right now a | ||
161 | polling grab-scheme is used. Maybe interrupt driven streaming will be | ||
162 | used for a asynchronous mmap interface in the next major release of the | ||
163 | driver. This might give a better frame rate. | ||
164 | |||
165 | --------------------------------------------------------------------------- | ||
166 | THANKS (in no particular order): | ||
167 | |||
168 | - Scott J. Bertin <sbertin@mindspring.com> for cleanups, the proc-filesystem | ||
169 | and much more | ||
170 | - Henry Bruce <whb@vvl.co.uk> for providing developers information about | ||
171 | the CPiA chip, I wish all companies would treat Linux as seriously | ||
172 | - Karoly Erdei <Karoly.Erdei@risc.uni-linz.ac.at> and RISC-Linz for being | ||
173 | my boss ;) resp. my employer and for providing me the hardware and | ||
174 | allow me to devote some working time to this project | ||
175 | - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help | ||
176 | with Isabel (http://isabel.dit.upm.es/) | ||
177 | - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code | ||
178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list | ||
179 | and maintaining the web-server[3] | ||
180 | - Chris Whiteford <Chris@informinteractive.com> for fixes related to the | ||
181 | 1.02 firmware | ||
182 | - special kudos to all the tester whose machines crashed and/or | ||
183 | will crash. :) | ||
184 | |||
185 | --------------------------------------------------------------------------- | ||
186 | REFERENCES | ||
187 | |||
188 | 1. http://www.risc.uni-linz.ac.at/ | ||
189 | mailto:Peter_Pregler@email.com | ||
190 | 2. see the file COPYING in the top directory of the kernel tree | ||
191 | 3. http://webcam.sourceforge.net/ | ||
diff --git a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran index 00e3f9267814..699b60e070d2 100644 --- a/Documentation/video4linux/Zoran +++ b/Documentation/video4linux/Zoran | |||
@@ -322,76 +322,11 @@ your IRQs and make sure the card has its own interrupts. | |||
322 | 322 | ||
323 | 4. Programming interface | 323 | 4. Programming interface |
324 | 324 | ||
325 | This driver conforms to video4linux and video4linux2, both can be used to | 325 | This driver conforms to video4linux2. Support for V4L1 and for the custom |
326 | use the driver. Since video4linux didn't provide adequate calls to fully | 326 | zoran ioctls has been removed in kernel 2.6.38. |
327 | use the cards' features, we've introduced several programming extensions, | ||
328 | which are currently officially accepted in the 2.4.x branch of the kernel. | ||
329 | These extensions are known as the v4l/mjpeg extensions. See zoran.h for | ||
330 | details (structs/ioctls). | ||
331 | |||
332 | Information - video4linux: | ||
333 | http://linux.bytesex.org/v4l2/API.html | ||
334 | Documentation/video4linux/API.html | ||
335 | /usr/include/linux/videodev.h | ||
336 | |||
337 | Information - video4linux/mjpeg extensions: | ||
338 | ./zoran.h | ||
339 | (also see below) | ||
340 | |||
341 | Information - video4linux2: | ||
342 | http://linuxtv.org | ||
343 | http://v4l2spec.bytesex.org/ | ||
344 | /usr/include/linux/videodev2.h | ||
345 | |||
346 | More information on the video4linux/mjpeg extensions, by Serguei | ||
347 | Miridonovi and Rainer Johanni: | ||
348 | -- | ||
349 | The ioctls for that interface are as follows: | ||
350 | |||
351 | BUZIOC_G_PARAMS | ||
352 | BUZIOC_S_PARAMS | ||
353 | |||
354 | Get and set the parameters of the buz. The user should always do a | ||
355 | BUZIOC_G_PARAMS (with a struct buz_params) to obtain the default | ||
356 | settings, change what he likes and then make a BUZIOC_S_PARAMS call. | ||
357 | |||
358 | BUZIOC_REQBUFS | ||
359 | |||
360 | Before being able to capture/playback, the user has to request | ||
361 | the buffers he is wanting to use. Fill the structure | ||
362 | zoran_requestbuffers with the size (recommended: 256*1024) and | ||
363 | the number (recommended 32 up to 256). There are no such restrictions | ||
364 | as for the Video for Linux buffers, you should LEAVE SUFFICIENT | ||
365 | MEMORY for your system however, else strange things will happen .... | ||
366 | On return, the zoran_requestbuffers structure contains number and | ||
367 | size of the actually allocated buffers. | ||
368 | You should use these numbers for doing a mmap of the buffers | ||
369 | into the user space. | ||
370 | The BUZIOC_REQBUFS ioctl also makes it happen, that the next mmap | ||
371 | maps the MJPEG buffer instead of the V4L buffers. | ||
372 | |||
373 | BUZIOC_QBUF_CAPT | ||
374 | BUZIOC_QBUF_PLAY | ||
375 | |||
376 | Queue a buffer for capture or playback. The first call also starts | ||
377 | streaming capture. When streaming capture is going on, you may | ||
378 | only queue further buffers or issue syncs until streaming | ||
379 | capture is switched off again with a argument of -1 to | ||
380 | a BUZIOC_QBUF_CAPT/BUZIOC_QBUF_PLAY ioctl. | ||
381 | |||
382 | BUZIOC_SYNC | ||
383 | |||
384 | Issue this ioctl when all buffers are queued. This ioctl will | ||
385 | block until the first buffer becomes free for saving its | ||
386 | data to disk (after BUZIOC_QBUF_CAPT) or for reuse (after BUZIOC_QBUF_PLAY). | ||
387 | |||
388 | BUZIOC_G_STATUS | ||
389 | |||
390 | Get the status of the input lines (video source connected/norm). | ||
391 | 327 | ||
392 | For programming example, please, look at lavrec.c and lavplay.c code in | 328 | For programming example, please, look at lavrec.c and lavplay.c code in |
393 | lavtools-1.2p2 package (URL: http://www.cicese.mx/) | 329 | the MJPEG-tools (http://mjpeg.sf.net/). |
394 | and the 'examples' directory in the original Buz driver distribution. | ||
395 | 330 | ||
396 | Additional notes for software developers: | 331 | Additional notes for software developers: |
397 | 332 | ||
@@ -402,9 +337,6 @@ Additional notes for software developers: | |||
402 | standard is "more constant" for current country than geometry | 337 | standard is "more constant" for current country than geometry |
403 | settings of a variety of TV capture cards which may work in ITU or | 338 | settings of a variety of TV capture cards which may work in ITU or |
404 | square pixel format. | 339 | square pixel format. |
405 | -- | ||
406 | Please note that lavplay/lavrec are also included in the MJPEG-tools | ||
407 | (http://mjpeg.sf.net/). | ||
408 | 340 | ||
409 | =========================== | 341 | =========================== |
410 | 342 | ||
diff --git a/Documentation/video4linux/bttv/Cards b/Documentation/video4linux/bttv/Cards index 12217fc49725..db833ced2cb8 100644 --- a/Documentation/video4linux/bttv/Cards +++ b/Documentation/video4linux/bttv/Cards | |||
@@ -464,10 +464,6 @@ Siemens | |||
464 | ------- | 464 | ------- |
465 | Multimedia eXtension Board (MXB) (SAA7146, SAA7111) | 465 | Multimedia eXtension Board (MXB) (SAA7146, SAA7111) |
466 | 466 | ||
467 | Stradis | ||
468 | ------- | ||
469 | SDM275,SDM250,SDM026,SDM025 (SAA7146, IBMMPEG2): MPEG2 decoder only | ||
470 | |||
471 | Powercolor | 467 | Powercolor |
472 | ---------- | 468 | ---------- |
473 | MTV878 | 469 | MTV878 |
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index 6a562eeeb4cd..261776e0c5e1 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -366,6 +366,7 @@ t613 17a1:0128 TASCORP JPEG Webcam, NGS Cyclops | |||
366 | vc032x 17ef:4802 Lenovo Vc0323+MI1310_SOC | 366 | vc032x 17ef:4802 Lenovo Vc0323+MI1310_SOC |
367 | pac207 2001:f115 D-Link DSB-C120 | 367 | pac207 2001:f115 D-Link DSB-C120 |
368 | sq905c 2770:9050 Disney pix micro (CIF) | 368 | sq905c 2770:9050 Disney pix micro (CIF) |
369 | sq905c 2770:9051 Lego Bionicle | ||
369 | sq905c 2770:9052 Disney pix micro 2 (VGA) | 370 | sq905c 2770:9052 Disney pix micro 2 (VGA) |
370 | sq905c 2770:905c All 11 known cameras with this ID | 371 | sq905c 2770:905c All 11 known cameras with this ID |
371 | sq905 2770:9120 All 24 known cameras with this ID | 372 | sq905 2770:9120 All 24 known cameras with this ID |
diff --git a/Documentation/video4linux/meye.txt b/Documentation/video4linux/meye.txt index bf3af5fe558f..34e2842c70ae 100644 --- a/Documentation/video4linux/meye.txt +++ b/Documentation/video4linux/meye.txt | |||
@@ -45,8 +45,6 @@ module argument syntax (<param>=<value> when passing the option to the | |||
45 | module or meye.<param>=<value> on the kernel boot line when meye is | 45 | module or meye.<param>=<value> on the kernel boot line when meye is |
46 | statically linked into the kernel). Those options are: | 46 | statically linked into the kernel). Those options are: |
47 | 47 | ||
48 | forcev4l1: force use of V4L1 API instead of V4L2 | ||
49 | |||
50 | gbuffers: number of capture buffers, default is 2 (32 max) | 48 | gbuffers: number of capture buffers, default is 2 (32 max) |
51 | 49 | ||
52 | gbufsize: size of each capture buffer, default is 614400 | 50 | gbufsize: size of each capture buffer, default is 614400 |
@@ -79,9 +77,8 @@ Usage: | |||
79 | Private API: | 77 | Private API: |
80 | ------------ | 78 | ------------ |
81 | 79 | ||
82 | The driver supports frame grabbing with the video4linux API | 80 | The driver supports frame grabbing with the video4linux API, |
83 | (either v4l1 or v4l2), so all video4linux tools (like xawtv) | 81 | so all video4linux tools (like xawtv) should work with this driver. |
84 | should work with this driver. | ||
85 | 82 | ||
86 | Besides the video4linux interface, the driver has a private interface | 83 | Besides the video4linux interface, the driver has a private interface |
87 | for accessing the Motion Eye extended parameters (camera sharpness, | 84 | for accessing the Motion Eye extended parameters (camera sharpness, |
@@ -123,7 +120,4 @@ Private API: | |||
123 | Bugs / Todo: | 120 | Bugs / Todo: |
124 | ------------ | 121 | ------------ |
125 | 122 | ||
126 | - the driver could be much cleaned up by removing the v4l1 support. | ||
127 | However, this means all v4l1-only applications will stop working. | ||
128 | |||
129 | - 'motioneye' still uses the meye private v4l1 API extensions. | 123 | - 'motioneye' still uses the meye private v4l1 API extensions. |
diff --git a/Documentation/video4linux/v4lgrab.c b/Documentation/video4linux/v4lgrab.c deleted file mode 100644 index c8ded175796e..000000000000 --- a/Documentation/video4linux/v4lgrab.c +++ /dev/null | |||
@@ -1,201 +0,0 @@ | |||
1 | /* Simple Video4Linux image grabber. */ | ||
2 | /* | ||
3 | * Video4Linux Driver Test/Example Framegrabbing Program | ||
4 | * | ||
5 | * Compile with: | ||
6 | * gcc -s -Wall -Wstrict-prototypes v4lgrab.c -o v4lgrab | ||
7 | * Use as: | ||
8 | * v4lgrab >image.ppm | ||
9 | * | ||
10 | * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org> | ||
11 | * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c | ||
12 | * with minor modifications (Dave Forrest, drf5n@virginia.edu). | ||
13 | * | ||
14 | * | ||
15 | * For some cameras you may need to pre-load libv4l to perform | ||
16 | * the necessary decompression, e.g.: | ||
17 | * | ||
18 | * export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so | ||
19 | * ./v4lgrab >image.ppm | ||
20 | * | ||
21 | * see http://hansdegoede.livejournal.com/3636.html for details. | ||
22 | * | ||
23 | */ | ||
24 | |||
25 | #include <unistd.h> | ||
26 | #include <sys/types.h> | ||
27 | #include <sys/stat.h> | ||
28 | #include <fcntl.h> | ||
29 | #include <stdio.h> | ||
30 | #include <sys/ioctl.h> | ||
31 | #include <stdlib.h> | ||
32 | |||
33 | #include <linux/types.h> | ||
34 | #include <linux/videodev.h> | ||
35 | |||
36 | #define VIDEO_DEV "/dev/video0" | ||
37 | |||
38 | /* Stole this from tvset.c */ | ||
39 | |||
40 | #define READ_VIDEO_PIXEL(buf, format, depth, r, g, b) \ | ||
41 | { \ | ||
42 | switch (format) \ | ||
43 | { \ | ||
44 | case VIDEO_PALETTE_GREY: \ | ||
45 | switch (depth) \ | ||
46 | { \ | ||
47 | case 4: \ | ||
48 | case 6: \ | ||
49 | case 8: \ | ||
50 | (r) = (g) = (b) = (*buf++ << 8);\ | ||
51 | break; \ | ||
52 | \ | ||
53 | case 16: \ | ||
54 | (r) = (g) = (b) = \ | ||
55 | *((unsigned short *) buf); \ | ||
56 | buf += 2; \ | ||
57 | break; \ | ||
58 | } \ | ||
59 | break; \ | ||
60 | \ | ||
61 | \ | ||
62 | case VIDEO_PALETTE_RGB565: \ | ||
63 | { \ | ||
64 | unsigned short tmp = *(unsigned short *)buf; \ | ||
65 | (r) = tmp&0xF800; \ | ||
66 | (g) = (tmp<<5)&0xFC00; \ | ||
67 | (b) = (tmp<<11)&0xF800; \ | ||
68 | buf += 2; \ | ||
69 | } \ | ||
70 | break; \ | ||
71 | \ | ||
72 | case VIDEO_PALETTE_RGB555: \ | ||
73 | (r) = (buf[0]&0xF8)<<8; \ | ||
74 | (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8; \ | ||
75 | (b) = ((buf[1] << 2 ) & 0xF8)<<8; \ | ||
76 | buf += 2; \ | ||
77 | break; \ | ||
78 | \ | ||
79 | case VIDEO_PALETTE_RGB24: \ | ||
80 | (r) = buf[0] << 8; (g) = buf[1] << 8; \ | ||
81 | (b) = buf[2] << 8; \ | ||
82 | buf += 3; \ | ||
83 | break; \ | ||
84 | \ | ||
85 | default: \ | ||
86 | fprintf(stderr, \ | ||
87 | "Format %d not yet supported\n", \ | ||
88 | format); \ | ||
89 | } \ | ||
90 | } | ||
91 | |||
92 | static int get_brightness_adj(unsigned char *image, long size, int *brightness) { | ||
93 | long i, tot = 0; | ||
94 | for (i=0;i<size*3;i++) | ||
95 | tot += image[i]; | ||
96 | *brightness = (128 - tot/(size*3))/3; | ||
97 | return !((tot/(size*3)) >= 126 && (tot/(size*3)) <= 130); | ||
98 | } | ||
99 | |||
100 | int main(int argc, char ** argv) | ||
101 | { | ||
102 | int fd = open(VIDEO_DEV, O_RDONLY), f; | ||
103 | struct video_capability cap; | ||
104 | struct video_window win; | ||
105 | struct video_picture vpic; | ||
106 | |||
107 | unsigned char *buffer, *src; | ||
108 | int bpp = 24, r = 0, g = 0, b = 0; | ||
109 | unsigned int i, src_depth = 16; | ||
110 | |||
111 | if (fd < 0) { | ||
112 | perror(VIDEO_DEV); | ||
113 | exit(1); | ||
114 | } | ||
115 | |||
116 | if (ioctl(fd, VIDIOCGCAP, &cap) < 0) { | ||
117 | perror("VIDIOGCAP"); | ||
118 | fprintf(stderr, "(" VIDEO_DEV " not a video4linux device?)\n"); | ||
119 | close(fd); | ||
120 | exit(1); | ||
121 | } | ||
122 | |||
123 | if (ioctl(fd, VIDIOCGWIN, &win) < 0) { | ||
124 | perror("VIDIOCGWIN"); | ||
125 | close(fd); | ||
126 | exit(1); | ||
127 | } | ||
128 | |||
129 | if (ioctl(fd, VIDIOCGPICT, &vpic) < 0) { | ||
130 | perror("VIDIOCGPICT"); | ||
131 | close(fd); | ||
132 | exit(1); | ||
133 | } | ||
134 | |||
135 | if (cap.type & VID_TYPE_MONOCHROME) { | ||
136 | vpic.depth=8; | ||
137 | vpic.palette=VIDEO_PALETTE_GREY; /* 8bit grey */ | ||
138 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | ||
139 | vpic.depth=6; | ||
140 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | ||
141 | vpic.depth=4; | ||
142 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | ||
143 | fprintf(stderr, "Unable to find a supported capture format.\n"); | ||
144 | close(fd); | ||
145 | exit(1); | ||
146 | } | ||
147 | } | ||
148 | } | ||
149 | } else { | ||
150 | vpic.depth=24; | ||
151 | vpic.palette=VIDEO_PALETTE_RGB24; | ||
152 | |||
153 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | ||
154 | vpic.palette=VIDEO_PALETTE_RGB565; | ||
155 | vpic.depth=16; | ||
156 | |||
157 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | ||
158 | vpic.palette=VIDEO_PALETTE_RGB555; | ||
159 | vpic.depth=15; | ||
160 | |||
161 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | ||
162 | fprintf(stderr, "Unable to find a supported capture format.\n"); | ||
163 | return -1; | ||
164 | } | ||
165 | } | ||
166 | } | ||
167 | } | ||
168 | |||
169 | buffer = malloc(win.width * win.height * bpp); | ||
170 | if (!buffer) { | ||
171 | fprintf(stderr, "Out of memory.\n"); | ||
172 | exit(1); | ||
173 | } | ||
174 | |||
175 | do { | ||
176 | int newbright; | ||
177 | read(fd, buffer, win.width * win.height * bpp); | ||
178 | f = get_brightness_adj(buffer, win.width * win.height, &newbright); | ||
179 | if (f) { | ||
180 | vpic.brightness += (newbright << 8); | ||
181 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | ||
182 | perror("VIDIOSPICT"); | ||
183 | break; | ||
184 | } | ||
185 | } | ||
186 | } while (f); | ||
187 | |||
188 | fprintf(stdout, "P6\n%d %d 255\n", win.width, win.height); | ||
189 | |||
190 | src = buffer; | ||
191 | |||
192 | for (i = 0; i < win.width * win.height; i++) { | ||
193 | READ_VIDEO_PIXEL(src, vpic.palette, src_depth, r, g, b); | ||
194 | fputc(r>>8, stdout); | ||
195 | fputc(g>>8, stdout); | ||
196 | fputc(b>>8, stdout); | ||
197 | } | ||
198 | |||
199 | close(fd); | ||
200 | return 0; | ||
201 | } | ||
diff --git a/Documentation/video4linux/videobuf b/Documentation/video4linux/videobuf index 17a1f9abf260..1d00d7f15b8f 100644 --- a/Documentation/video4linux/videobuf +++ b/Documentation/video4linux/videobuf | |||
@@ -247,8 +247,6 @@ calls. The relevant helper functions are: | |||
247 | int nonblocking); | 247 | int nonblocking); |
248 | int videobuf_streamon(struct videobuf_queue *q); | 248 | int videobuf_streamon(struct videobuf_queue *q); |
249 | int videobuf_streamoff(struct videobuf_queue *q); | 249 | int videobuf_streamoff(struct videobuf_queue *q); |
250 | int videobuf_cgmbuf(struct videobuf_queue *q, struct video_mbuf *mbuf, | ||
251 | int count); | ||
252 | 250 | ||
253 | So, for example, a VIDIOC_REQBUFS call turns into a call to the driver's | 251 | So, for example, a VIDIOC_REQBUFS call turns into a call to the driver's |
254 | vidioc_reqbufs() callback which, in turn, usually only needs to locate the | 252 | vidioc_reqbufs() callback which, in turn, usually only needs to locate the |
@@ -258,10 +256,7 @@ boilerplate in a lot of V4L2 drivers. | |||
258 | 256 | ||
259 | The vidioc_streamon() and vidioc_streamoff() functions will be a bit more | 257 | The vidioc_streamon() and vidioc_streamoff() functions will be a bit more |
260 | complex, of course, since they will also need to deal with starting and | 258 | complex, of course, since they will also need to deal with starting and |
261 | stopping the capture engine. videobuf_cgmbuf(), called from the driver's | 259 | stopping the capture engine. |
262 | vidiocgmbuf() function, only exists if the V4L1 compatibility module has | ||
263 | been selected with CONFIG_VIDEO_V4L1_COMPAT, so its use must be surrounded | ||
264 | with #ifdef directives. | ||
265 | 260 | ||
266 | Buffer allocation | 261 | Buffer allocation |
267 | 262 | ||