aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/video4linux
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/video4linux')
-rw-r--r--Documentation/video4linux/CARDLIST.cx888
-rw-r--r--Documentation/video4linux/CARDLIST.saa71347
-rw-r--r--Documentation/video4linux/bttv/Insmod-options6
-rw-r--r--Documentation/video4linux/cx2341x/README.hm12116
-rw-r--r--Documentation/video4linux/cx2341x/README.vbi45
5 files changed, 178 insertions, 4 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88
index 00d9a1f2a54c..669a09aa5bb4 100644
--- a/Documentation/video4linux/CARDLIST.cx88
+++ b/Documentation/video4linux/CARDLIST.cx88
@@ -7,10 +7,10 @@
7 6 -> AverTV Studio 303 (M126) [1461:000b] 7 6 -> AverTV Studio 303 (M126) [1461:000b]
8 7 -> MSI TV-@nywhere Master [1462:8606] 8 7 -> MSI TV-@nywhere Master [1462:8606]
9 8 -> Leadtek Winfast DV2000 [107d:6620] 9 8 -> Leadtek Winfast DV2000 [107d:6620]
10 9 -> Leadtek PVR 2000 [107d:663b,107d:663C] 10 9 -> Leadtek PVR 2000 [107d:663b,107d:663c,107d:6632]
11 10 -> IODATA GV-VCP3/PCI [10fc:d003] 11 10 -> IODATA GV-VCP3/PCI [10fc:d003]
12 11 -> Prolink PlayTV PVR 12 11 -> Prolink PlayTV PVR
13 12 -> ASUS PVR-416 [1043:4823] 13 12 -> ASUS PVR-416 [1043:4823,1461:c111]
14 13 -> MSI TV-@nywhere 14 13 -> MSI TV-@nywhere
15 14 -> KWorld/VStream XPert DVB-T [17de:08a6] 15 14 -> KWorld/VStream XPert DVB-T [17de:08a6]
16 15 -> DViCO FusionHDTV DVB-T1 [18ac:db00] 16 15 -> DViCO FusionHDTV DVB-T1 [18ac:db00]
@@ -51,3 +51,7 @@
51 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] 51 50 -> NPG Tech Real TV FM Top 10 [14f1:0842]
52 51 -> WinFast DTV2000 H [107d:665e] 52 51 -> WinFast DTV2000 H [107d:665e]
53 52 -> Geniatech DVB-S [14f1:0084] 53 52 -> Geniatech DVB-S [14f1:0084]
54 53 -> Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T [0070:1404]
55 54 -> Norwood Micro TV Tuner
56 55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980]
57 56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602]
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134
index 9068b669f5ee..94cf695b1378 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -58,7 +58,7 @@
58 57 -> Avermedia AVerTV GO 007 FM [1461:f31f] 58 57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
59 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370] 59 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370]
60 59 -> Kworld/Tevion V-Stream Xpert TV PVR7134 60 59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
61 60 -> LifeView/Typhoon FlyDVB-T Duo Cardbus [5168:0502,4e42:0502] 61 60 -> LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus [5168:0502,4e42:0502,1489:0502]
62 61 -> Philips TOUGH DVB-T reference design [1131:2004] 62 61 -> Philips TOUGH DVB-T reference design [1131:2004]
63 62 -> Compro VideoMate TV Gold+II 63 62 -> Compro VideoMate TV Gold+II
64 63 -> Kworld Xpert TV PVR7134 64 63 -> Kworld Xpert TV PVR7134
@@ -83,7 +83,7 @@
83 82 -> MSI TV@Anywhere plus [1462:6231] 83 82 -> MSI TV@Anywhere plus [1462:6231]
84 83 -> Terratec Cinergy 250 PCI TV [153b:1160] 84 83 -> Terratec Cinergy 250 PCI TV [153b:1160]
85 84 -> LifeView FlyDVB Trio [5168:0319] 85 84 -> LifeView FlyDVB Trio [5168:0319]
86 85 -> AverTV DVB-T 777 [1461:2c05] 86 85 -> AverTV DVB-T 777 [1461:2c05,1461:2c05]
87 86 -> LifeView FlyDVB-T / Genius VideoWonder DVB-T [5168:0301,1489:0301] 87 86 -> LifeView FlyDVB-T / Genius VideoWonder DVB-T [5168:0301,1489:0301]
88 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421] 88 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421]
89 88 -> Tevion/KWorld DVB-T 220RF [17de:7201] 89 88 -> Tevion/KWorld DVB-T 220RF [17de:7201]
@@ -94,3 +94,6 @@
94 93 -> Medion 7134 Bridge #2 [16be:0005] 94 93 -> Medion 7134 Bridge #2 [16be:0005]
95 94 -> LifeView FlyDVB-T Hybrid Cardbus [5168:3306,5168:3502] 95 94 -> LifeView FlyDVB-T Hybrid Cardbus [5168:3306,5168:3502]
96 95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138] 96 95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138]
97 96 -> Medion Md8800 Quadro [16be:0007,16be:0008]
98 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300]
99 98 -> Proteus Pro 2309 [0919:2003]
diff --git a/Documentation/video4linux/bttv/Insmod-options b/Documentation/video4linux/bttv/Insmod-options
index fc94ff235ffa..bb7c2cac7917 100644
--- a/Documentation/video4linux/bttv/Insmod-options
+++ b/Documentation/video4linux/bttv/Insmod-options
@@ -54,6 +54,12 @@ bttv.o
54 dropouts. 54 dropouts.
55 chroma_agc=0/1 AGC of chroma signal, off by default. 55 chroma_agc=0/1 AGC of chroma signal, off by default.
56 adc_crush=0/1 Luminance ADC crush, on by default. 56 adc_crush=0/1 Luminance ADC crush, on by default.
57 i2c_udelay= Allow reduce I2C speed. Default is 5 usecs
58 (meaning 66,67 Kbps). The default is the
59 maximum supported speed by kernel bitbang
60 algoritm. You may use lower numbers, if I2C
61 messages are lost (16 is known to work on
62 all supported cards).
57 63
58 bttv_gpio=0/1 64 bttv_gpio=0/1
59 gpiomask= 65 gpiomask=
diff --git a/Documentation/video4linux/cx2341x/README.hm12 b/Documentation/video4linux/cx2341x/README.hm12
new file mode 100644
index 000000000000..0e213ed095e6
--- /dev/null
+++ b/Documentation/video4linux/cx2341x/README.hm12
@@ -0,0 +1,116 @@
1The cx23416 can produce (and the cx23415 can also read) raw YUV output. The
2format of a YUV frame is specific to this chip and is called HM12. 'HM' stands
3for 'Hauppauge Macroblock', which is a misnomer as 'Conexant Macroblock' would
4be more accurate.
5
6The format is YUV 4:2:0 which uses 1 Y byte per pixel and 1 U and V byte per
7four pixels.
8
9The data is encoded as two macroblock planes, the first containing the Y
10values, the second containing UV macroblocks.
11
12The Y plane is divided into blocks of 16x16 pixels from left to right
13and from top to bottom. Each block is transmitted in turn, line-by-line.
14
15So the first 16 bytes are the first line of the top-left block, the
16second 16 bytes are the second line of the top-left block, etc. After
17transmitting this block the first line of the block on the right to the
18first block is transmitted, etc.
19
20The UV plane is divided into blocks of 16x8 UV values going from left
21to right, top to bottom. Each block is transmitted in turn, line-by-line.
22
23So the first 16 bytes are the first line of the top-left block and
24contain 8 UV value pairs (16 bytes in total). The second 16 bytes are the
25second line of 8 UV pairs of the top-left block, etc. After transmitting
26this block the first line of the block on the right to the first block is
27transmitted, etc.
28
29The code below is given as an example on how to convert HM12 to separate
30Y, U and V planes. This code assumes frames of 720x576 (PAL) pixels.
31
32The width of a frame is always 720 pixels, regardless of the actual specified
33width.
34
35--------------------------------------------------------------------------
36
37#include <stdio.h>
38#include <stdlib.h>
39#include <string.h>
40
41static unsigned char frame[576*720*3/2];
42static unsigned char framey[576*720];
43static unsigned char frameu[576*720 / 4];
44static unsigned char framev[576*720 / 4];
45
46static void de_macro_y(unsigned char* dst, unsigned char *src, int dstride, int w, int h)
47{
48 unsigned int y, x, i;
49
50 // descramble Y plane
51 // dstride = 720 = w
52 // The Y plane is divided into blocks of 16x16 pixels
53 // Each block in transmitted in turn, line-by-line.
54 for (y = 0; y < h; y += 16) {
55 for (x = 0; x < w; x += 16) {
56 for (i = 0; i < 16; i++) {
57 memcpy(dst + x + (y + i) * dstride, src, 16);
58 src += 16;
59 }
60 }
61 }
62}
63
64static void de_macro_uv(unsigned char *dstu, unsigned char *dstv, unsigned char *src, int dstride, int w, int h)
65{
66 unsigned int y, x, i;
67
68 // descramble U/V plane
69 // dstride = 720 / 2 = w
70 // The U/V values are interlaced (UVUV...).
71 // Again, the UV plane is divided into blocks of 16x16 UV values.
72 // Each block in transmitted in turn, line-by-line.
73 for (y = 0; y < h; y += 16) {
74 for (x = 0; x < w; x += 8) {
75 for (i = 0; i < 16; i++) {
76 int idx = x + (y + i) * dstride;
77
78 dstu[idx+0] = src[0]; dstv[idx+0] = src[1];
79 dstu[idx+1] = src[2]; dstv[idx+1] = src[3];
80 dstu[idx+2] = src[4]; dstv[idx+2] = src[5];
81 dstu[idx+3] = src[6]; dstv[idx+3] = src[7];
82 dstu[idx+4] = src[8]; dstv[idx+4] = src[9];
83 dstu[idx+5] = src[10]; dstv[idx+5] = src[11];
84 dstu[idx+6] = src[12]; dstv[idx+6] = src[13];
85 dstu[idx+7] = src[14]; dstv[idx+7] = src[15];
86 src += 16;
87 }
88 }
89 }
90}
91
92/*************************************************************************/
93int main(int argc, char **argv)
94{
95 FILE *fin;
96 int i;
97
98 if (argc == 1) fin = stdin;
99 else fin = fopen(argv[1], "r");
100
101 if (fin == NULL) {
102 fprintf(stderr, "cannot open input\n");
103 exit(-1);
104 }
105 while (fread(frame, sizeof(frame), 1, fin) == 1) {
106 de_macro_y(framey, frame, 720, 720, 576);
107 de_macro_uv(frameu, framev, frame + 720 * 576, 720 / 2, 720 / 2, 576 / 2);
108 fwrite(framey, sizeof(framey), 1, stdout);
109 fwrite(framev, sizeof(framev), 1, stdout);
110 fwrite(frameu, sizeof(frameu), 1, stdout);
111 }
112 fclose(fin);
113 return 0;
114}
115
116--------------------------------------------------------------------------
diff --git a/Documentation/video4linux/cx2341x/README.vbi b/Documentation/video4linux/cx2341x/README.vbi
new file mode 100644
index 000000000000..5807cf156173
--- /dev/null
+++ b/Documentation/video4linux/cx2341x/README.vbi
@@ -0,0 +1,45 @@
1
2Format of embedded V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data
3=========================================================
4
5This document describes the V4L2_MPEG_STREAM_VBI_FMT_IVTV format of the VBI data
6embedded in an MPEG-2 program stream. This format is in part dictated by some
7hardware limitations of the ivtv driver (the driver for the Conexant cx23415/6
8chips), in particular a maximum size for the VBI data. Anything longer is cut
9off when the MPEG stream is played back through the cx23415.
10
11The advantage of this format is it is very compact and that all VBI data for
12all lines can be stored while still fitting within the maximum allowed size.
13
14The stream ID of the VBI data is 0xBD. The maximum size of the embedded data is
154 + 43 * 36, which is 4 bytes for a header and 2 * 18 VBI lines with a 1 byte
16header and a 42 bytes payload each. Anything beyond this limit is cut off by
17the cx23415/6 firmware. Besides the data for the VBI lines we also need 36 bits
18for a bitmask determining which lines are captured and 4 bytes for a magic cookie,
19signifying that this data package contains V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data.
20If all lines are used, then there is no longer room for the bitmask. To solve this
21two different magic numbers were introduced:
22
23'itv0': After this magic number two unsigned longs follow. Bits 0-17 of the first
24unsigned long denote which lines of the first field are captured. Bits 18-31 of
25the first unsigned long and bits 0-3 of the second unsigned long are used for the
26second field.
27
28'ITV0': This magic number assumes all VBI lines are captured, i.e. it implicitly
29implies that the bitmasks are 0xffffffff and 0xf.
30
31After these magic cookies (and the 8 byte bitmask in case of cookie 'itv0') the
32captured VBI lines start:
33
34For each line the least significant 4 bits of the first byte contain the data type.
35Possible values are shown in the table below. The payload is in the following 42
36bytes.
37
38Here is the list of possible data types:
39
40#define IVTV_SLICED_TYPE_TELETEXT 0x1 // Teletext (uses lines 6-22 for PAL)
41#define IVTV_SLICED_TYPE_CC 0x4 // Closed Captions (line 21 NTSC)
42#define IVTV_SLICED_TYPE_WSS 0x5 // Wide Screen Signal (line 23 PAL)
43#define IVTV_SLICED_TYPE_VPS 0x7 // Video Programming System (PAL) (line 16)
44
45Hans Verkuil <hverkuil@xs4all.nl>