nvme-rdma: Remove unused includes
[deliverable/linux.git] / Documentation / DocBook / media / dvb / intro.xml
CommitLineData
8e080c2e
MCC
1<title>Introduction</title>
2
3<section id="requisites">
4<title>What you need to know</title>
5
6<para>The reader of this document is required to have some knowledge in
7the area of digital video broadcasting (DVB) and should be familiar with
8part I of the MPEG2 specification ISO/IEC 13818 (aka ITU-T H.222), i.e
9you should know what a program/transport stream (PS/TS) is and what is
10meant by a packetized elementary stream (PES) or an I-frame.</para>
11
12<para>Various DVB standards documents are available from
62b122ab
MCC
13<ulink url="http://www.dvb.org" /> and/or
14<ulink url="http://www.etsi.org" />.</para>
8e080c2e
MCC
15
16<para>It is also necessary to know how to access unix/linux devices and
17how to use ioctl calls. This also includes the knowledge of C or C++.
18</para>
19</section>
20
21<section id="history">
22<title>History</title>
23
24<para>The first API for DVB cards we used at Convergence in late 1999
25was an extension of the Video4Linux API which was primarily developed
26for frame grabber cards. As such it was not really well suited to be
27used for DVB cards and their new features like recording MPEG streams
28and filtering several section and PES data streams at the same time.
29</para>
30
31<para>In early 2000, we were approached by Nokia with a proposal for a
32new standard Linux DVB API. As a commitment to the development of
33terminals based on open standards, Nokia and Convergence made it
62b122ab 34available to all Linux developers and published it on
991ce92f 35<ulink url="https://linuxtv.org" /> in September 2000.
8e080c2e
MCC
36Convergence is the maintainer of the Linux DVB API. Together with the
37LinuxTV community (i.e. you, the reader of this document), the Linux DVB
38API will be constantly reviewed and improved. With the Linux driver for
39the Siemens/Hauppauge DVB PCI card Convergence provides a first
40implementation of the Linux DVB API.</para>
41</section>
42
43<section id="overview">
44<title>Overview</title>
45
46<figure id="stb_components">
47<title>Components of a DVB card/STB</title>
48<mediaobject>
49<imageobject>
50<imagedata fileref="dvbstb.pdf" format="PS" />
51</imageobject>
52<imageobject>
53<imagedata fileref="dvbstb.png" format="PNG" />
54</imageobject>
55</mediaobject>
56</figure>
57
58<para>A DVB PCI card or DVB set-top-box (STB) usually consists of the
59following main hardware components: </para>
60
61<itemizedlist>
62 <listitem>
63
64<para>Frontend consisting of tuner and DVB demodulator</para>
65
66<para>Here the raw signal reaches the DVB hardware from a satellite dish
67or antenna or directly from cable. The frontend down-converts and
68demodulates this signal into an MPEG transport stream (TS). In case of a
69satellite frontend, this includes a facility for satellite equipment
70control (SEC), which allows control of LNB polarization, multi feed
71switches or dish rotors.</para>
72
73</listitem>
74 <listitem>
75
76<para>Conditional Access (CA) hardware like CI adapters and smartcard slots
77</para>
78
79<para>The complete TS is passed through the CA hardware. Programs to
80which the user has access (controlled by the smart card) are decoded in
81real time and re-inserted into the TS.</para>
82
83</listitem>
84 <listitem>
85 <para>Demultiplexer which filters the incoming DVB stream</para>
86
87<para>The demultiplexer splits the TS into its components like audio and
88video streams. Besides usually several of such audio and video streams
89it also contains data streams with information about the programs
90offered in this or other streams of the same provider.</para>
91
92</listitem>
93<listitem>
94
95<para>MPEG2 audio and video decoder</para>
96
97<para>The main targets of the demultiplexer are the MPEG2 audio and
98video decoders. After decoding they pass on the uncompressed audio and
99video to the computer screen or (through a PAL/NTSC encoder) to a TV
100set.</para>
101
102
103</listitem>
104</itemizedlist>
105
106<para><xref linkend="stb_components" /> shows a crude schematic of the control and data flow
107between those components.</para>
108
109<para>On a DVB PCI card not all of these have to be present since some
110functionality can be provided by the main CPU of the PC (e.g. MPEG
111picture and sound decoding) or is not needed (e.g. for data-only uses
112like &#8220;internet over satellite&#8221;). Also not every card or STB
113provides conditional access hardware.</para>
114
115</section>
116
117<section id="dvb_devices">
118<title>Linux DVB Devices</title>
119
120<para>The Linux DVB API lets you control these hardware components
121through currently six Unix-style character devices for video, audio,
122frontend, demux, CA and IP-over-DVB networking. The video and audio
123devices control the MPEG2 decoder hardware, the frontend device the
124tuner and the DVB demodulator. The demux device gives you control over
125the PES and section filters of the hardware. If the hardware does not
126support filtering these filters can be implemented in software. Finally,
127the CA device controls all the conditional access capabilities of the
128hardware. It can depend on the individual security requirements of the
129platform, if and how many of the CA functions are made available to the
130application through this device.</para>
131
ec8f3386
MCC
132<para>All devices can be found in the <constant>/dev</constant>
133tree under <constant>/dev/dvb</constant>. The individual devices
8e080c2e
MCC
134are called:</para>
135
136<itemizedlist>
137<listitem>
138
ec8f3386 139<para><constant>/dev/dvb/adapterN/audioM</constant>,</para>
8e080c2e
MCC
140</listitem>
141<listitem>
ec8f3386 142<para><constant>/dev/dvb/adapterN/videoM</constant>,</para>
8e080c2e
MCC
143</listitem>
144<listitem>
ec8f3386 145<para><constant>/dev/dvb/adapterN/frontendM</constant>,</para>
8e080c2e
MCC
146</listitem>
147 <listitem>
148
ec8f3386 149<para><constant>/dev/dvb/adapterN/netM</constant>,</para>
8e080c2e
MCC
150</listitem>
151 <listitem>
152
ec8f3386 153<para><constant>/dev/dvb/adapterN/demuxM</constant>,</para>
8e080c2e
MCC
154</listitem>
155 <listitem>
156
ec8f3386 157<para><constant>/dev/dvb/adapterN/dvrM</constant>,</para>
3e1a4c1f
BM
158</listitem>
159 <listitem>
160
ec8f3386 161<para><constant>/dev/dvb/adapterN/caM</constant>,</para></listitem></itemizedlist>
8e080c2e
MCC
162
163<para>where N enumerates the DVB PCI cards in a system starting
164from&#x00A0;0, and M enumerates the devices of each type within each
ec8f3386 165adapter, starting from&#x00A0;0, too. We will omit the &#8220;
ed099f66 166<constant>/dev/dvb/adapterN/</constant>&#8221; in the further discussion
88c25dcb 167of these devices.</para>
8e080c2e
MCC
168
169<para>More details about the data structures and function calls of all
170the devices are described in the following chapters.</para>
171
172</section>
173
174<section id="include_files">
175<title>API include files</title>
176
177<para>For each of the DVB devices a corresponding include file exists.
178The DVB API include files should be included in application sources with
179a partial path like:</para>
180
d9d73416
MCC
181<programlisting>
182 #include &#x003C;linux/dvb/audio.h&#x003E;
183</programlisting>
184<programlisting>
185 #include &#x003C;linux/dvb/ca.h&#x003E;
186</programlisting>
187<programlisting>
188 #include &#x003C;linux/dvb/dmx.h&#x003E;
189</programlisting>
8e080c2e
MCC
190<programlisting>
191 #include &#x003C;linux/dvb/frontend.h&#x003E;
192</programlisting>
d9d73416
MCC
193<programlisting>
194 #include &#x003C;linux/dvb/net.h&#x003E;
195</programlisting>
196<programlisting>
197 #include &#x003C;linux/dvb/osd.h&#x003E;
198</programlisting>
199<programlisting>
200 #include &#x003C;linux/dvb/video.h&#x003E;
201</programlisting>
8e080c2e
MCC
202
203<para>To enable applications to support different API version, an
ec8f3386
MCC
204additional include file
205<constant>linux/dvb/version.h</constant> exists, which defines the
206constant <constant>DVB_API_VERSION</constant>. This document
207describes <constant>DVB_API_VERSION 5.10</constant>.
8e080c2e
MCC
208</para>
209
210</section>
211
This page took 0.463144 seconds and 5 git commands to generate.