| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" | |
| "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ | |
| <!ENTITY % media-entities SYSTEM "./media-entities.tmpl"> %media-entities; | |
| <!ENTITY media-indices SYSTEM "./media-indices.tmpl"> | |
| <!ENTITY eg "e. g."> | |
| <!ENTITY ie "i. e."> | |
| <!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>."> | |
| <!ENTITY fe_fd "File descriptor returned by <link linkend='frontend_f_open'><function>open()</function></link>."> | |
| <!ENTITY i2c "I<superscript>2</superscript>C"> | |
| <!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>"> | |
| <!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>"> | |
| <!ENTITY manvol "<manvolnum>2</manvolnum>"> | |
| <!-- Table templates: structs, structs w/union, defines. --> | |
| <!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' />"> | |
| <!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' />"> | |
| <!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' />"> | |
| <!-- Video for Linux mailing list address. --> | |
| <!ENTITY v4l-ml "<ulink url='https://linuxtv.org/lists.php'>https://linuxtv.org/lists.php</ulink>"> | |
| <!-- LinuxTV v4l-dvb repository. --> | |
| <!ENTITY v4l-dvb "<ulink url='https://linuxtv.org/repo/'>https://linuxtv.org/repo/</ulink>"> | |
| <!ENTITY dash-ent-8 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | |
| <!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | |
| <!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>"> | |
| <!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>"> | |
| <!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>"> | |
| <!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>"> | |
| <!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>"> | |
| <!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>"> | |
| ]> | |
| <book id="media_api" lang="en"> | |
| <bookinfo> | |
| <title>LINUX MEDIA INFRASTRUCTURE API</title> | |
| <copyright> | |
| <year>2009-2015</year> | |
| <holder>LinuxTV Developers</holder> | |
| </copyright> | |
| <legalnotice> | |
| <para>Permission is granted to copy, distribute and/or modify | |
| this document under the terms of the GNU Free Documentation License, | |
| Version 1.1 or any later version published by the Free Software | |
| Foundation. A copy of the license is included in the chapter entitled | |
| "GNU Free Documentation License"</para> | |
| </legalnotice> | |
| </bookinfo> | |
| <toc></toc> <!-- autogenerated --> | |
| <preface> | |
| <title>Introduction</title> | |
| <para>This document covers the Linux Kernel to Userspace API's used by | |
| video and radio streaming devices, including video cameras, | |
| analog and digital TV receiver cards, AM/FM receiver cards, | |
| streaming capture and output devices, codec devices and remote | |
| controllers.</para> | |
| <para>A typical media device hardware is shown at | |
| <xref linkend="typical_media_device" />.</para> | |
| <figure id="typical_media_device"> | |
| <title>Typical Media Device</title> | |
| <mediaobject> | |
| <imageobject> | |
| <imagedata fileref="typical_media_device.svg" format="SVG" /> | |
| </imageobject> | |
| <textobject> | |
| <phrase>Typical Media Device Block Diagram</phrase> | |
| </textobject> | |
| </mediaobject> | |
| </figure> | |
| <para>The media infrastructure API was designed to control such | |
| devices. It is divided into five parts.</para> | |
| <para>The first part covers radio, video capture and output, | |
| cameras, analog TV devices and codecs.</para> | |
| <para>The second part covers the | |
| API used for digital TV and Internet reception via one of the | |
| several digital tv standards. While it is called as DVB API, | |
| in fact it covers several different video standards including | |
| DVB-T/T2, DVB-S/S2, DVB-C, ATSC, ISDB-T, ISDB-S,etc. The complete | |
| list of supported standards can be found at | |
| <xref linkend="fe-delivery-system-t" />.</para> | |
| <para>The third part covers the Remote Controller API.</para> | |
| <para>The fourth part covers the Media Controller API.</para> | |
| <para>The fifth part covers the CEC (Consumer Electronics Control) API.</para> | |
| <para>It should also be noted that a media device may also have audio | |
| components, like mixers, PCM capture, PCM playback, etc, which | |
| are controlled via ALSA API.</para> | |
| <para>For additional information and for the latest development code, | |
| see: <ulink url="https://linuxtv.org">https://linuxtv.org</ulink>.</para> | |
| <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> | |
| </preface> | |
| <part id="v4l2spec"> | |
| &sub-v4l2; | |
| </part> | |
| <part id="dvbapi"> | |
| &sub-dvbapi; | |
| </part> | |
| <part id="remotes"> | |
| &sub-remote_controllers; | |
| </part> | |
| <part id="media_common"> | |
| &sub-media-controller; | |
| </part> | |
| <part id="cec"> | |
| &sub-cec-api; | |
| </part> | |
| <chapter id="gen_errors"> | |
| &sub-gen-errors; | |
| </chapter> | |
| &sub-fdl-appendix; | |
| </book> |