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