blob: 7b77e0f7b87d25a024fce19ccace4f347833ee6d [file] [log] [blame]
Mauro Carvalho Chehabeda6bc22015-06-02 07:40:53 -03001<?xml version="1.0" encoding="UTF-8"?>
Mauro Carvalho Chehab96048dc2015-06-02 08:36:36 -03002<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
Mauro Carvalho Chehabd80bd702009-09-15 15:27:57 -03004<!ENTITY % media-entities SYSTEM "./media-entities.tmpl"> %media-entities;
5<!ENTITY media-indices SYSTEM "./media-indices.tmpl">
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -03006
7<!ENTITY eg "e.&nbsp;g.">
8<!ENTITY ie "i.&nbsp;e.">
9<!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>.">
Mauro Carvalho Chehabc130d882015-05-26 09:03:55 -030010<!ENTITY fe_fd "File descriptor returned by <link linkend='frontend_f_open'><function>open()</function></link>.">
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030011<!ENTITY i2c "I<superscript>2</superscript>C">
Mauro Carvalho Chehab6d172492011-07-05 10:07:37 -030012<!ENTITY return-value "<title>Return Value</title><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately. The generic error codes are described at the <link linkend='gen-errors'>Generic Error Codes</link> chapter.</para>">
Mauro Carvalho Chehab3de530f2011-07-05 12:36:01 -030013<!ENTITY return-value-dvb "<para>RETURN VALUE</para><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately. The generic error codes are described at the <link linkend='gen-errors'>Generic Error Codes</link> chapter.</para>">
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030014<!ENTITY manvol "<manvolnum>2</manvolnum>">
15
16<!-- Table templates: structs, structs w/union, defines. -->
17<!ENTITY cs-str "<colspec colname='c1' colwidth='1*' /><colspec colname='c2' colwidth='1*' /><colspec colname='c3' colwidth='2*' /><spanspec spanname='hspan' namest='c1' nameend='c3' />">
18<!ENTITY cs-ustr "<colspec colname='c1' colwidth='1*' /><colspec colname='c2' colwidth='1*' /><colspec colname='c3' colwidth='1*' /><colspec colname='c4' colwidth='2*' /><spanspec spanname='hspan' namest='c1' nameend='c4' />">
19<!ENTITY cs-def "<colspec colname='c1' colwidth='3*' /><colspec colname='c2' colwidth='1*' /><colspec colname='c3' colwidth='4*' /><spanspec spanname='hspan' namest='c1' nameend='c3' />">
20
21<!-- Video for Linux mailing list address. -->
Mauro Carvalho Chehab991ce922015-12-04 10:38:59 -020022<!ENTITY v4l-ml "<ulink url='https://linuxtv.org/lists.php'>https://linuxtv.org/lists.php</ulink>">
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030023
24<!-- LinuxTV v4l-dvb repository. -->
Mauro Carvalho Chehab991ce922015-12-04 10:38:59 -020025<!ENTITY v4l-dvb "<ulink url='https://linuxtv.org/repo/'>https://linuxtv.org/repo/</ulink>">
Laurent Pinchartf57fa212013-06-05 04:19:53 -030026<!ENTITY dash-ent-8 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
Sylwester Nawrockib01189b2012-11-28 14:40:32 -030027<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
Laurent Pinchartf57fa212013-06-05 04:19:53 -030028<!ENTITY dash-ent-12 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
29<!ENTITY dash-ent-14 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
Phil Edworthy7b88fc02013-03-18 08:47:59 -030030<!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
Laurent Pinchartf57fa212013-06-05 04:19:53 -030031<!ENTITY dash-ent-20 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
32<!ENTITY dash-ent-22 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
33<!ENTITY dash-ent-24 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030034]>
35
Mauro Carvalho Chehabeda6bc22015-06-02 07:40:53 -030036<book id="media_api" lang="en">
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030037<bookinfo>
Mauro Carvalho Chehab90f745c2014-02-06 10:55:28 -020038 <title>LINUX MEDIA INFRASTRUCTURE API</title>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030039
Mauro Carvalho Chehab90f745c2014-02-06 10:55:28 -020040 <copyright>
Hans Verkuileab2b762015-10-16 06:13:01 -030041 <year>2009-2015</year>
Mauro Carvalho Chehab90f745c2014-02-06 10:55:28 -020042 <holder>LinuxTV Developers</holder>
43 </copyright>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030044
Mauro Carvalho Chehab90f745c2014-02-06 10:55:28 -020045 <legalnotice>
46 <para>Permission is granted to copy, distribute and/or modify
47 this document under the terms of the GNU Free Documentation License,
48 Version 1.1 or any later version published by the Free Software
49 Foundation. A copy of the license is included in the chapter entitled
50 "GNU Free Documentation License"</para>
51 </legalnotice>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030052</bookinfo>
53
54<toc></toc> <!-- autogenerated -->
55
56<preface>
57 <title>Introduction</title>
58
59 <para>This document covers the Linux Kernel to Userspace API's used by
Hans Verkuil1b962082014-01-07 06:46:37 -030060 video and radio streaming devices, including video cameras,
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030061 analog and digital TV receiver cards, AM/FM receiver cards,
Hans Verkuil1b962082014-01-07 06:46:37 -030062 streaming capture and output devices, codec devices and remote
63 controllers.</para>
Mauro Carvalho Chehaba1ef3ee2015-05-25 13:40:28 -030064 <para>A typical media device hardware is shown at
65 <xref linkend="typical_media_device" />.</para>
66 <figure id="typical_media_device">
67 <title>Typical Media Device</title>
68 <mediaobject>
69 <imageobject>
70 <imagedata fileref="typical_media_device.svg" format="SVG" />
71 </imageobject>
72 <textobject>
73 <phrase>Typical Media Device Block Diagram</phrase>
74 </textobject>
75 </mediaobject>
76 </figure>
77 <para>The media infrastructure API was designed to control such
78 devices. It is divided into four parts.</para>
Hans Verkuil1b962082014-01-07 06:46:37 -030079 <para>The first part covers radio, video capture and output,
80 cameras, analog TV devices and codecs.</para>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030081 <para>The second part covers the
82 API used for digital TV and Internet reception via one of the
83 several digital tv standards. While it is called as DVB API,
84 in fact it covers several different video standards including
Mauro Carvalho Chehab39b9ce22015-05-25 13:38:01 -030085 DVB-T/T2, DVB-S/S2, DVB-C, ATSC, ISDB-T, ISDB-S,etc. The complete
86 list of supported standards can be found at
87 <xref linkend="fe-delivery-system-t" />.</para>
Hans Verkuil571d19c2012-08-09 06:04:43 -030088 <para>The third part covers the Remote Controller API.</para>
89 <para>The fourth part covers the Media Controller API.</para>
Mauro Carvalho Chehab7832a912015-06-02 14:59:07 -030090 <para>It should also be noted that a media device may also have audio
91 components, like mixers, PCM capture, PCM playback, etc, which
Mauro Carvalho Chehab9f67bc52015-05-25 13:39:48 -030092 are controlled via ALSA API.</para>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030093 <para>For additional information and for the latest development code,
Mauro Carvalho Chehab991ce922015-12-04 10:38:59 -020094 see: <ulink url="https://linuxtv.org">https://linuxtv.org</ulink>.</para>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030095 <para>For discussing improvements, reporting troubles, sending new drivers, etc, please mail to: <ulink url="http://vger.kernel.org/vger-lists.html#linux-media">Linux Media Mailing List (LMML).</ulink>.</para>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -030096</preface>
97
Mauro Carvalho Chehab315d27a2015-06-01 08:56:49 -030098<part id="v4l2spec">
99&sub-v4l2;
100</part>
101<part id="dvbapi">
102&sub-dvbapi;
103</part>
104<part id="remotes">
105&sub-remote_controllers;
106</part>
107<part id="media_common">
108&sub-media-controller;
109</part>
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -0300110
Mauro Carvalho Chehab315d27a2015-06-01 08:56:49 -0300111<chapter id="gen_errors">
112&sub-gen-errors;
113</chapter>
Mauro Carvalho Chehab6d172492011-07-05 10:07:37 -0300114
Mauro Carvalho Chehab8e080c22009-09-13 22:16:04 -0300115&sub-fdl-appendix;
116
117</book>