diff options
Diffstat (limited to 'Documentation/video4linux/cx2341x/README.vbi')
-rw-r--r-- | Documentation/video4linux/cx2341x/README.vbi | 45 |
1 files changed, 45 insertions, 0 deletions
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> | ||