xref: /OK3568_Linux_fs/kernel/Documentation/admin-guide/media/ivtv.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThe ivtv driver
4*4882a593Smuzhiyun===============
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunAuthor: Hans Verkuil <hverkuil@xs4all.nl>
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunThis is a v4l2 device driver for the Conexant cx23415/6 MPEG encoder/decoder.
9*4882a593SmuzhiyunThe cx23415 can do both encoding and decoding, the cx23416 can only do MPEG
10*4882a593Smuzhiyunencoding. Currently the only card featuring full decoding support is the
11*4882a593SmuzhiyunHauppauge PVR-350.
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun.. note::
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun   #) This driver requires the latest encoder firmware (version 2.06.039, size
16*4882a593Smuzhiyun      376836 bytes). Get the firmware from here:
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun      https://linuxtv.org/downloads/firmware/#conexant
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun   #) 'normal' TV applications do not work with this driver, you need
21*4882a593Smuzhiyun      an application that can handle MPEG input such as mplayer, xine, MythTV,
22*4882a593Smuzhiyun      etc.
23*4882a593Smuzhiyun
24*4882a593SmuzhiyunThe primary goal of the IVTV project is to provide a "clean room" Linux
25*4882a593SmuzhiyunOpen Source driver implementation for video capture cards based on the
26*4882a593SmuzhiyuniCompression iTVC15 or Conexant CX23415/CX23416 MPEG Codec.
27*4882a593Smuzhiyun
28*4882a593SmuzhiyunFeatures
29*4882a593Smuzhiyun--------
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun * Hardware mpeg2 capture of broadcast video (and sound) via the tuner or
32*4882a593Smuzhiyun   S-Video/Composite and audio line-in.
33*4882a593Smuzhiyun * Hardware mpeg2 capture of FM radio where hardware support exists
34*4882a593Smuzhiyun * Supports NTSC, PAL, SECAM with stereo sound
35*4882a593Smuzhiyun * Supports SAP and bilingual transmissions.
36*4882a593Smuzhiyun * Supports raw VBI (closed captions and teletext).
37*4882a593Smuzhiyun * Supports sliced VBI (closed captions and teletext) and is able to insert
38*4882a593Smuzhiyun   this into the captured MPEG stream.
39*4882a593Smuzhiyun * Supports raw YUV and PCM input.
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunAdditional features for the PVR-350 (CX23415 based)
42*4882a593Smuzhiyun---------------------------------------------------
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun * Provides hardware mpeg2 playback
45*4882a593Smuzhiyun * Provides comprehensive OSD (On Screen Display: ie. graphics overlaying the
46*4882a593Smuzhiyun   video signal)
47*4882a593Smuzhiyun * Provides a framebuffer (allowing X applications to appear on the video
48*4882a593Smuzhiyun   device)
49*4882a593Smuzhiyun * Supports raw YUV output.
50*4882a593Smuzhiyun
51*4882a593SmuzhiyunIMPORTANT: In case of problems first read this page:
52*4882a593Smuzhiyun	https://help.ubuntu.com/community/Install_IVTV_Troubleshooting
53*4882a593Smuzhiyun
54*4882a593SmuzhiyunSee also
55*4882a593Smuzhiyun--------
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunhttps://linuxtv.org
58*4882a593Smuzhiyun
59*4882a593SmuzhiyunIRC
60*4882a593Smuzhiyun---
61*4882a593Smuzhiyun
62*4882a593Smuzhiyunirc://irc.freenode.net/#v4l
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun----------------------------------------------------------
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunDevices
67*4882a593Smuzhiyun-------
68*4882a593Smuzhiyun
69*4882a593SmuzhiyunA maximum of 12 ivtv boards are allowed at the moment.
70*4882a593Smuzhiyun
71*4882a593SmuzhiyunCards that don't have a video output capability (i.e. non PVR350 cards)
72*4882a593Smuzhiyunlack the vbi8, vbi16, video16 and video48 devices. They also do not
73*4882a593Smuzhiyunsupport the framebuffer device /dev/fbx for OSD.
74*4882a593Smuzhiyun
75*4882a593SmuzhiyunThe radio0 device may or may not be present, depending on whether the
76*4882a593Smuzhiyuncard has a radio tuner or not.
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunHere is a list of the base v4l devices:
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun.. code-block:: none
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun	crw-rw----    1 root     video     81,   0 Jun 19 22:22 /dev/video0
83*4882a593Smuzhiyun	crw-rw----    1 root     video     81,  16 Jun 19 22:22 /dev/video16
84*4882a593Smuzhiyun	crw-rw----    1 root     video     81,  24 Jun 19 22:22 /dev/video24
85*4882a593Smuzhiyun	crw-rw----    1 root     video     81,  32 Jun 19 22:22 /dev/video32
86*4882a593Smuzhiyun	crw-rw----    1 root     video     81,  48 Jun 19 22:22 /dev/video48
87*4882a593Smuzhiyun	crw-rw----    1 root     video     81,  64 Jun 19 22:22 /dev/radio0
88*4882a593Smuzhiyun	crw-rw----    1 root     video     81, 224 Jun 19 22:22 /dev/vbi0
89*4882a593Smuzhiyun	crw-rw----    1 root     video     81, 228 Jun 19 22:22 /dev/vbi8
90*4882a593Smuzhiyun	crw-rw----    1 root     video     81, 232 Jun 19 22:22 /dev/vbi16
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunBase devices
93*4882a593Smuzhiyun------------
94*4882a593Smuzhiyun
95*4882a593SmuzhiyunFor every extra card you have the numbers increased by one. For example,
96*4882a593Smuzhiyun/dev/video0 is listed as the 'base' encoding capture device so we have:
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun- /dev/video0  is the encoding capture device for the first card (card 0)
99*4882a593Smuzhiyun- /dev/video1  is the encoding capture device for the second card (card 1)
100*4882a593Smuzhiyun- /dev/video2  is the encoding capture device for the third card (card 2)
101*4882a593Smuzhiyun
102*4882a593SmuzhiyunNote that if the first card doesn't have a feature (eg no decoder, so no
103*4882a593Smuzhiyunvideo16, the second card will still use video17. The simple rule is 'add
104*4882a593Smuzhiyunthe card number to the base device number'. If you have other capture
105*4882a593Smuzhiyuncards (e.g. WinTV PCI) that are detected first, then you have to tell
106*4882a593Smuzhiyunthe ivtv module about it so that it will start counting at 1 (or 2, or
107*4882a593Smuzhiyunwhatever). Otherwise the device numbers can get confusing. The ivtv
108*4882a593Smuzhiyun'ivtv_first_minor' module option can be used for that.
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun- /dev/video0
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun  The encoding capture device(s).
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun  Read-only.
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun  Reading from this device gets you the MPEG1/2 program stream.
118*4882a593Smuzhiyun  Example:
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun  .. code-block:: none
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun	cat /dev/video0 > my.mpg (you need to hit ctrl-c to exit)
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun- /dev/video16
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun  The decoder output device(s)
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun  An mpeg2 stream sent to this device will appear on the selected video
132*4882a593Smuzhiyun  display, audio will appear on the line-out/audio out.  It is only
133*4882a593Smuzhiyun  available for cards that support video out. Example:
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun  .. code-block:: none
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun	cat my.mpg >/dev/video16
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun- /dev/video24
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun  The raw audio capture device(s).
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun  Read-only
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun  The raw audio PCM stereo stream from the currently selected
147*4882a593Smuzhiyun  tuner or audio line-in.  Reading from this device results in a raw
148*4882a593Smuzhiyun  (signed 16 bit Little Endian, 48000 Hz, stereo pcm) capture.
149*4882a593Smuzhiyun  This device only captures audio. This should be replaced by an ALSA
150*4882a593Smuzhiyun  device in the future.
151*4882a593Smuzhiyun  Note that there is no corresponding raw audio output device, this is
152*4882a593Smuzhiyun  not supported in the decoder firmware.
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun- /dev/video32
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun  The raw video capture device(s)
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun  Read-only
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun  The raw YUV video output from the current video input. The YUV format
162*4882a593Smuzhiyun  is non-standard (V4L2_PIX_FMT_HM12).
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun  Note that the YUV and PCM streams are not synchronized, so they are of
165*4882a593Smuzhiyun  limited use.
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun- /dev/video48
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun  The raw video display device(s)
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun  Writes a YUV stream to the decoder of the card.
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun- /dev/radio0
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun  The radio tuner device(s)
180*4882a593Smuzhiyun
181*4882a593Smuzhiyun  Cannot be read or written.
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun  Used to enable the radio tuner and tune to a frequency. You cannot
184*4882a593Smuzhiyun  read or write audio streams with this device.  Once you use this
185*4882a593Smuzhiyun  device to tune the radio, use /dev/video24 to read the raw pcm stream
186*4882a593Smuzhiyun  or /dev/video0 to get an mpeg2 stream with black video.
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun- /dev/vbi0
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun  The 'vertical blank interval' (Teletext, CC, WSS etc) capture device(s)
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun  Read-only
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun  Captures the raw (or sliced) video data sent during the Vertical Blank
196*4882a593Smuzhiyun  Interval. This data is used to encode teletext, closed captions, VPS,
197*4882a593Smuzhiyun  widescreen signalling, electronic program guide information, and other
198*4882a593Smuzhiyun  services.
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun- /dev/vbi8
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun  Processed vbi feedback device(s)
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun  Read-only. Only present if the MPEG decoder (i.e. CX23415) exists.
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun  The sliced VBI data embedded in an MPEG stream is reproduced on this
208*4882a593Smuzhiyun  device. So while playing back a recording on /dev/video16, you can
209*4882a593Smuzhiyun  read the embedded VBI data from /dev/vbi8.
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun- /dev/vbi16
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun  The vbi 'display' device(s)
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun  Can be used to send sliced VBI data to the video-out connector.
219