162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThe ivtv driver
462306a36Sopenharmony_ci===============
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciAuthor: Hans Verkuil <hverkuil@xs4all.nl>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciThis is a v4l2 device driver for the Conexant cx23415/6 MPEG encoder/decoder.
962306a36Sopenharmony_ciThe cx23415 can do both encoding and decoding, the cx23416 can only do MPEG
1062306a36Sopenharmony_ciencoding. Currently the only card featuring full decoding support is the
1162306a36Sopenharmony_ciHauppauge PVR-350.
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci.. note::
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci   #) This driver requires the latest encoder firmware (version 2.06.039, size
1662306a36Sopenharmony_ci      376836 bytes). Get the firmware from here:
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci      https://linuxtv.org/downloads/firmware/#conexant
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci   #) 'normal' TV applications do not work with this driver, you need
2162306a36Sopenharmony_ci      an application that can handle MPEG input such as mplayer, xine, MythTV,
2262306a36Sopenharmony_ci      etc.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciThe primary goal of the IVTV project is to provide a "clean room" Linux
2562306a36Sopenharmony_ciOpen Source driver implementation for video capture cards based on the
2662306a36Sopenharmony_ciiCompression iTVC15 or Conexant CX23415/CX23416 MPEG Codec.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciFeatures
2962306a36Sopenharmony_ci--------
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci * Hardware mpeg2 capture of broadcast video (and sound) via the tuner or
3262306a36Sopenharmony_ci   S-Video/Composite and audio line-in.
3362306a36Sopenharmony_ci * Hardware mpeg2 capture of FM radio where hardware support exists
3462306a36Sopenharmony_ci * Supports NTSC, PAL, SECAM with stereo sound
3562306a36Sopenharmony_ci * Supports SAP and bilingual transmissions.
3662306a36Sopenharmony_ci * Supports raw VBI (closed captions and teletext).
3762306a36Sopenharmony_ci * Supports sliced VBI (closed captions and teletext) and is able to insert
3862306a36Sopenharmony_ci   this into the captured MPEG stream.
3962306a36Sopenharmony_ci * Supports raw YUV and PCM input.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciAdditional features for the PVR-350 (CX23415 based)
4262306a36Sopenharmony_ci---------------------------------------------------
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci * Provides hardware mpeg2 playback
4562306a36Sopenharmony_ci * Provides comprehensive OSD (On Screen Display: ie. graphics overlaying the
4662306a36Sopenharmony_ci   video signal)
4762306a36Sopenharmony_ci * Provides a framebuffer (allowing X applications to appear on the video
4862306a36Sopenharmony_ci   device)
4962306a36Sopenharmony_ci * Supports raw YUV output.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciIMPORTANT: In case of problems first read this page:
5262306a36Sopenharmony_ci	https://help.ubuntu.com/community/Install_IVTV_Troubleshooting
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciSee also
5562306a36Sopenharmony_ci--------
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cihttps://linuxtv.org
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciIRC
6062306a36Sopenharmony_ci---
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciirc://irc.freenode.net/#v4l
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci----------------------------------------------------------
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciDevices
6762306a36Sopenharmony_ci-------
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciA maximum of 12 ivtv boards are allowed at the moment.
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciCards that don't have a video output capability (i.e. non PVR350 cards)
7262306a36Sopenharmony_cilack the vbi8, vbi16, video16 and video48 devices. They also do not
7362306a36Sopenharmony_cisupport the framebuffer device /dev/fbx for OSD.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciThe radio0 device may or may not be present, depending on whether the
7662306a36Sopenharmony_cicard has a radio tuner or not.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciHere is a list of the base v4l devices:
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci.. code-block:: none
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	crw-rw----    1 root     video     81,   0 Jun 19 22:22 /dev/video0
8362306a36Sopenharmony_ci	crw-rw----    1 root     video     81,  16 Jun 19 22:22 /dev/video16
8462306a36Sopenharmony_ci	crw-rw----    1 root     video     81,  24 Jun 19 22:22 /dev/video24
8562306a36Sopenharmony_ci	crw-rw----    1 root     video     81,  32 Jun 19 22:22 /dev/video32
8662306a36Sopenharmony_ci	crw-rw----    1 root     video     81,  48 Jun 19 22:22 /dev/video48
8762306a36Sopenharmony_ci	crw-rw----    1 root     video     81,  64 Jun 19 22:22 /dev/radio0
8862306a36Sopenharmony_ci	crw-rw----    1 root     video     81, 224 Jun 19 22:22 /dev/vbi0
8962306a36Sopenharmony_ci	crw-rw----    1 root     video     81, 228 Jun 19 22:22 /dev/vbi8
9062306a36Sopenharmony_ci	crw-rw----    1 root     video     81, 232 Jun 19 22:22 /dev/vbi16
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciBase devices
9362306a36Sopenharmony_ci------------
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciFor every extra card you have the numbers increased by one. For example,
9662306a36Sopenharmony_ci/dev/video0 is listed as the 'base' encoding capture device so we have:
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci- /dev/video0  is the encoding capture device for the first card (card 0)
9962306a36Sopenharmony_ci- /dev/video1  is the encoding capture device for the second card (card 1)
10062306a36Sopenharmony_ci- /dev/video2  is the encoding capture device for the third card (card 2)
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciNote that if the first card doesn't have a feature (eg no decoder, so no
10362306a36Sopenharmony_civideo16, the second card will still use video17. The simple rule is 'add
10462306a36Sopenharmony_cithe card number to the base device number'. If you have other capture
10562306a36Sopenharmony_cicards (e.g. WinTV PCI) that are detected first, then you have to tell
10662306a36Sopenharmony_cithe ivtv module about it so that it will start counting at 1 (or 2, or
10762306a36Sopenharmony_ciwhatever). Otherwise the device numbers can get confusing. The ivtv
10862306a36Sopenharmony_ci'ivtv_first_minor' module option can be used for that.
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci- /dev/video0
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci  The encoding capture device(s).
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci  Read-only.
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci  Reading from this device gets you the MPEG1/2 program stream.
11862306a36Sopenharmony_ci  Example:
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci  .. code-block:: none
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	cat /dev/video0 > my.mpg (you need to hit ctrl-c to exit)
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci- /dev/video16
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci  The decoder output device(s)
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci  An mpeg2 stream sent to this device will appear on the selected video
13262306a36Sopenharmony_ci  display, audio will appear on the line-out/audio out.  It is only
13362306a36Sopenharmony_ci  available for cards that support video out. Example:
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci  .. code-block:: none
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci	cat my.mpg >/dev/video16
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci- /dev/video24
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci  The raw audio capture device(s).
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci  Read-only
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci  The raw audio PCM stereo stream from the currently selected
14762306a36Sopenharmony_ci  tuner or audio line-in.  Reading from this device results in a raw
14862306a36Sopenharmony_ci  (signed 16 bit Little Endian, 48000 Hz, stereo pcm) capture.
14962306a36Sopenharmony_ci  This device only captures audio. This should be replaced by an ALSA
15062306a36Sopenharmony_ci  device in the future.
15162306a36Sopenharmony_ci  Note that there is no corresponding raw audio output device, this is
15262306a36Sopenharmony_ci  not supported in the decoder firmware.
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci- /dev/video32
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci  The raw video capture device(s)
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci  Read-only
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci  The raw YUV video output from the current video input. The YUV format
16262306a36Sopenharmony_ci  is a 16x16 linear tiled NV12 format (V4L2_PIX_FMT_NV12_16L16)
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ci  Note that the YUV and PCM streams are not synchronized, so they are of
16562306a36Sopenharmony_ci  limited use.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci- /dev/video48
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci  The raw video display device(s)
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci  Writes a YUV stream to the decoder of the card.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci- /dev/radio0
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci  The radio tuner device(s)
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci  Cannot be read or written.
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci  Used to enable the radio tuner and tune to a frequency. You cannot
18462306a36Sopenharmony_ci  read or write audio streams with this device.  Once you use this
18562306a36Sopenharmony_ci  device to tune the radio, use /dev/video24 to read the raw pcm stream
18662306a36Sopenharmony_ci  or /dev/video0 to get an mpeg2 stream with black video.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci- /dev/vbi0
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci  The 'vertical blank interval' (Teletext, CC, WSS etc) capture device(s)
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci  Read-only
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci  Captures the raw (or sliced) video data sent during the Vertical Blank
19662306a36Sopenharmony_ci  Interval. This data is used to encode teletext, closed captions, VPS,
19762306a36Sopenharmony_ci  widescreen signalling, electronic program guide information, and other
19862306a36Sopenharmony_ci  services.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci- /dev/vbi8
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci  Processed vbi feedback device(s)
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci  Read-only. Only present if the MPEG decoder (i.e. CX23415) exists.
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci  The sliced VBI data embedded in an MPEG stream is reproduced on this
20862306a36Sopenharmony_ci  device. So while playing back a recording on /dev/video16, you can
20962306a36Sopenharmony_ci  read the embedded VBI data from /dev/vbi8.
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci- /dev/vbi16
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci  The vbi 'display' device(s)
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci  Write-only. Only present if the MPEG decoder (i.e. CX23415) exists.
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci  Can be used to send sliced VBI data to the video-out connector.
219