diff options
Diffstat (limited to 'Documentation/video4linux')
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 8 | ||||
-rw-r--r-- | Documentation/video4linux/CARDLIST.saa7134 | 7 | ||||
-rw-r--r-- | Documentation/video4linux/bttv/Insmod-options | 6 | ||||
-rw-r--r-- | Documentation/video4linux/cx2341x/README.hm12 | 116 | ||||
-rw-r--r-- | Documentation/video4linux/cx2341x/README.vbi | 45 |
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 @@ | |||
1 | The cx23416 can produce (and the cx23415 can also read) raw YUV output. The | ||
2 | format of a YUV frame is specific to this chip and is called HM12. 'HM' stands | ||
3 | for 'Hauppauge Macroblock', which is a misnomer as 'Conexant Macroblock' would | ||
4 | be more accurate. | ||
5 | |||
6 | The format is YUV 4:2:0 which uses 1 Y byte per pixel and 1 U and V byte per | ||
7 | four pixels. | ||
8 | |||
9 | The data is encoded as two macroblock planes, the first containing the Y | ||
10 | values, the second containing UV macroblocks. | ||
11 | |||
12 | The Y plane is divided into blocks of 16x16 pixels from left to right | ||
13 | and from top to bottom. Each block is transmitted in turn, line-by-line. | ||
14 | |||
15 | So the first 16 bytes are the first line of the top-left block, the | ||
16 | second 16 bytes are the second line of the top-left block, etc. After | ||
17 | transmitting this block the first line of the block on the right to the | ||
18 | first block is transmitted, etc. | ||
19 | |||
20 | The UV plane is divided into blocks of 16x8 UV values going from left | ||
21 | to right, top to bottom. Each block is transmitted in turn, line-by-line. | ||
22 | |||
23 | So the first 16 bytes are the first line of the top-left block and | ||
24 | contain 8 UV value pairs (16 bytes in total). The second 16 bytes are the | ||
25 | second line of 8 UV pairs of the top-left block, etc. After transmitting | ||
26 | this block the first line of the block on the right to the first block is | ||
27 | transmitted, etc. | ||
28 | |||
29 | The code below is given as an example on how to convert HM12 to separate | ||
30 | Y, U and V planes. This code assumes frames of 720x576 (PAL) pixels. | ||
31 | |||
32 | The width of a frame is always 720 pixels, regardless of the actual specified | ||
33 | width. | ||
34 | |||
35 | -------------------------------------------------------------------------- | ||
36 | |||
37 | #include <stdio.h> | ||
38 | #include <stdlib.h> | ||
39 | #include <string.h> | ||
40 | |||
41 | static unsigned char frame[576*720*3/2]; | ||
42 | static unsigned char framey[576*720]; | ||
43 | static unsigned char frameu[576*720 / 4]; | ||
44 | static unsigned char framev[576*720 / 4]; | ||
45 | |||
46 | static 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 | |||
64 | static 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 | /*************************************************************************/ | ||
93 | int 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 | |||
2 | Format of embedded V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data | ||
3 | ========================================================= | ||
4 | |||
5 | This document describes the V4L2_MPEG_STREAM_VBI_FMT_IVTV format of the VBI data | ||
6 | embedded in an MPEG-2 program stream. This format is in part dictated by some | ||
7 | hardware limitations of the ivtv driver (the driver for the Conexant cx23415/6 | ||
8 | chips), in particular a maximum size for the VBI data. Anything longer is cut | ||
9 | off when the MPEG stream is played back through the cx23415. | ||
10 | |||
11 | The advantage of this format is it is very compact and that all VBI data for | ||
12 | all lines can be stored while still fitting within the maximum allowed size. | ||
13 | |||
14 | The stream ID of the VBI data is 0xBD. The maximum size of the embedded data is | ||
15 | 4 + 43 * 36, which is 4 bytes for a header and 2 * 18 VBI lines with a 1 byte | ||
16 | header and a 42 bytes payload each. Anything beyond this limit is cut off by | ||
17 | the cx23415/6 firmware. Besides the data for the VBI lines we also need 36 bits | ||
18 | for a bitmask determining which lines are captured and 4 bytes for a magic cookie, | ||
19 | signifying that this data package contains V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data. | ||
20 | If all lines are used, then there is no longer room for the bitmask. To solve this | ||
21 | two different magic numbers were introduced: | ||
22 | |||
23 | 'itv0': After this magic number two unsigned longs follow. Bits 0-17 of the first | ||
24 | unsigned long denote which lines of the first field are captured. Bits 18-31 of | ||
25 | the first unsigned long and bits 0-3 of the second unsigned long are used for the | ||
26 | second field. | ||
27 | |||
28 | 'ITV0': This magic number assumes all VBI lines are captured, i.e. it implicitly | ||
29 | implies that the bitmasks are 0xffffffff and 0xf. | ||
30 | |||
31 | After these magic cookies (and the 8 byte bitmask in case of cookie 'itv0') the | ||
32 | captured VBI lines start: | ||
33 | |||
34 | For each line the least significant 4 bits of the first byte contain the data type. | ||
35 | Possible values are shown in the table below. The payload is in the following 42 | ||
36 | bytes. | ||
37 | |||
38 | Here 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 | |||
45 | Hans Verkuil <hverkuil@xs4all.nl> | ||