.. -*- coding: utf-8; mode: rst -*-

.. _dvb_introdution:

************
Introduction
************


.. _requisites:

What you need to know
=====================

The reader of this document is required to have some knowledge in the
area of digital video broadcasting (DVB) and should be familiar with
part I of the MPEG2 specification ISO/IEC 13818 (aka ITU-T H.222), i.e
you should know what a program/transport stream (PS/TS) is and what is
meant by a packetized elementary stream (PES) or an I-frame.

Various DVB standards documents are available from http://www.dvb.org
and/or http://www.etsi.org.

It is also necessary to know how to access unix/linux devices and how to
use ioctl calls. This also includes the knowledge of C or C++.


.. _history:

History
=======

The first API for DVB cards we used at Convergence in late 1999 was an
extension of the Video4Linux API which was primarily developed for frame
grabber cards. As such it was not really well suited to be used for DVB
cards and their new features like recording MPEG streams and filtering
several section and PES data streams at the same time.

In early 2000, we were approached by Nokia with a proposal for a new
standard Linux DVB API. As a commitment to the development of terminals
based on open standards, Nokia and Convergence made it available to all
Linux developers and published it on https://linuxtv.org in September
2000. Convergence is the maintainer of the Linux DVB API. Together with
the LinuxTV community (i.e. you, the reader of this document), the Linux
DVB API will be constantly reviewed and improved. With the Linux driver
for the Siemens/Hauppauge DVB PCI card Convergence provides a first
implementation of the Linux DVB API.


.. _overview:

Overview
========


.. _stb_components:

.. kernel-figure:: dvbstb.svg
    :alt:   dvbstb.svg
    :align: center

    Components of a DVB card/STB

A DVB PCI card or DVB set-top-box (STB) usually consists of the
following main hardware components:

-  Frontend consisting of tuner and DVB demodulator

   Here the raw signal reaches the DVB hardware from a satellite dish or
   antenna or directly from cable. The frontend down-converts and
   demodulates this signal into an MPEG transport stream (TS). In case
   of a satellite frontend, this includes a facility for satellite
   equipment control (SEC), which allows control of LNB polarization,
   multi feed switches or dish rotors.

-  Conditional Access (CA) hardware like CI adapters and smartcard slots

   The complete TS is passed through the CA hardware. Programs to which
   the user has access (controlled by the smart card) are decoded in
   real time and re-inserted into the TS.

-  Demultiplexer which filters the incoming DVB stream

   The demultiplexer splits the TS into its components like audio and
   video streams. Besides usually several of such audio and video
   streams it also contains data streams with information about the
   programs offered in this or other streams of the same provider.

-  MPEG2 audio and video decoder

   The main targets of the demultiplexer are the MPEG2 audio and video
   decoders. After decoding they pass on the uncompressed audio and
   video to the computer screen or (through a PAL/NTSC encoder) to a TV
   set.

:ref:`stb_components` shows a crude schematic of the control and data
flow between those components.

On a DVB PCI card not all of these have to be present since some
functionality can be provided by the main CPU of the PC (e.g. MPEG
picture and sound decoding) or is not needed (e.g. for data-only uses
like “internet over satellite”). Also not every card or STB provides
conditional access hardware.


.. _dvb_devices:

Linux DVB Devices
=================

The Linux DVB API lets you control these hardware components through
currently six Unix-style character devices for video, audio, frontend,
demux, CA and IP-over-DVB networking. The video and audio devices
control the MPEG2 decoder hardware, the frontend device the tuner and
the DVB demodulator. The demux device gives you control over the PES and
section filters of the hardware. If the hardware does not support
filtering these filters can be implemented in software. Finally, the CA
device controls all the conditional access capabilities of the hardware.
It can depend on the individual security requirements of the platform,
if and how many of the CA functions are made available to the
application through this device.

All devices can be found in the ``/dev`` tree under ``/dev/dvb``. The
individual devices are called:

-  ``/dev/dvb/adapterN/audioM``,

-  ``/dev/dvb/adapterN/videoM``,

-  ``/dev/dvb/adapterN/frontendM``,

-  ``/dev/dvb/adapterN/netM``,

-  ``/dev/dvb/adapterN/demuxM``,

-  ``/dev/dvb/adapterN/dvrM``,

-  ``/dev/dvb/adapterN/caM``,

where N enumerates the DVB PCI cards in a system starting from 0, and M
enumerates the devices of each type within each adapter, starting
from 0, too. We will omit the “ ``/dev/dvb/adapterN/``\ ” in the further
discussion of these devices.

More details about the data structures and function calls of all the
devices are described in the following chapters.


.. _include_files:

API include files
=================

For each of the DVB devices a corresponding include file exists. The DVB
API include files should be included in application sources with a
partial path like:


.. code-block:: c

	#include <linux/dvb/ca.h>

	#include <linux/dvb/dmx.h>

	#include <linux/dvb/frontend.h>

	#include <linux/dvb/net.h>


To enable applications to support different API version, an additional
include file ``linux/dvb/version.h`` exists, which defines the constant
``DVB_API_VERSION``. This document describes ``DVB_API_VERSION 5.10``.
