| <?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> |