1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>Chapter&#160;18.&#160;Media Controller</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="LINUX MEDIA INFRASTRUCTURE API"><link rel="up" href="media_common.html" title="Part&#160;IV.&#160;Media Controller API"><link rel="prev" href="media_common.html" title="Part&#160;IV.&#160;Media Controller API"><link rel="next" href="media-controller-model.html" title="Media device model"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&#160;18.&#160;Media Controller</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="media_common.html">Prev</a>&#160;</td><th width="60%" align="center">Part&#160;IV.&#160;Media Controller API</th><td width="20%" align="right">&#160;<a accesskey="n" href="media-controller-model.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="media_controller"></a>Chapter&#160;18.&#160;Media Controller</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="media_controller.html#media-controller-intro">Introduction</a></span></dt><dt><span class="section"><a href="media-controller-model.html">Media device model</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="media-controller-intro"></a>Introduction</h2></div></div></div><p>Media devices increasingly handle multiple related functions. Many USB
2    cameras include microphones, video capture hardware can also output video,
3    or SoC camera interfaces also perform memory-to-memory operations similar to
4    video codecs.</p><p>Independent functions, even when implemented in the same hardware, can
5    be modelled as separate devices. A USB camera with a microphone will be
6    presented to userspace applications as V4L2 and ALSA capture devices. The
7    devices' relationships (when using a webcam, end-users shouldn't have to
8    manually select the associated USB microphone), while not made available
9    directly to applications by the drivers, can usually be retrieved from
10    sysfs.</p><p>With more and more advanced SoC devices being introduced, the current
11    approach will not scale. Device topologies are getting increasingly complex
12    and can't always be represented by a tree structure. Hardware blocks are
13    shared between different functions, creating dependencies between seemingly
14    unrelated devices.</p><p>Kernel abstraction APIs such as V4L2 and ALSA provide means for
15    applications to access hardware parameters. As newer hardware expose an
16    increasingly high number of those parameters, drivers need to guess what
17    applications really require based on limited information, thereby
18    implementing policies that belong to userspace.</p><p>The media controller API aims at solving those problems.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="media_common.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="media_common.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="media-controller-model.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part&#160;IV.&#160;Media Controller API&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;Media device model</td></tr></table></div></body></html>
19