summaryrefslogtreecommitdiff
path: root/docs/sourcesink.html
blob: f611245beea4c09d1a5db28cd1d73cb73bf9d195 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>AudioManager: The relation of sources &amp; sinks with the AudioManager</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">AudioManager
   &#160;<span id="projectnumber">7.6.6</span>
   </div>
   <div id="projectbrief">Native Application Runtime Environment</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('sourcesink.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">The relation of sources &amp; sinks with the AudioManager </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="claDi"></a>
Class diagramm of the relation between sources, sinks and the AudioManager</h1>
<p>In general, the relationship is defined as well as the interfaces that are used to communicate the informations back and forth. But since the exchange of these informations is abstracted by the RoutingPlugins, the architecture cannot define explicit mechanisms here.<br />
A lot of attributes that are part of sources and sinks belong logical to them and might be implemented by the RoutingPlugin. The relation between sources, sinks and the AudioManagerDaemon is shown in this <a class="el" href="elementspage.html#cDiag">Overview Class Diagram</a> .</p>
<h1><a class="anchor" id="boil"></a>
The REAL interaction</h1>
<p>A lot of information is related to sources and sinks as can be seen here: <a class="el" href="elementspage.html#cDiag">Overview Class Diagram</a> . But not all informations are actually communicated to the sources and sinks since the routing adaptor will take care of handling some of these informations.<br />
Here are some informations that is believed to be actually communicated to the sources and sinks:</p>
<h1><a class="anchor" id="conFormats"></a>
Connection Formats</h1>
<p>The <a class="el" href="namespaceam.html#ad3bc2cbb9daa87acf51c56c803620046" title="This type gives the information about reason for reason for Source/Sink change. ">am::am_CustomAvailabilityReason_t</a> formats for a connection are chosen when the connection is build up. So if there are more than one possbilities that can be used for a connection (<a class="el" href="structam_1_1am__Sink__s.html#af5692eedaf4886be06f92293cd474d3e" title="This list holds information about the formats that the Source is capable of supporting when deliverin...">am::am_Sink_s::listConnectionFormats</a> and <a class="el" href="structam_1_1am__Source__s.html#a161ce36395faa9faea7db1699c62c700" title="This list holds information about the formats that the Source is capable of supporting when deliverin...">am::am_Source_s::listConnectionFormats</a>) the correct one is chosen upon a connect. If this is relevant to the sources and sinks, the routingAdaptor must communicate to the sources and sinks accordingly. </p><div class="image">
<img src="SettingConnectionFormats.png" alt="SettingConnectionFormats.png"/>
</div>
<h1><a class="anchor" id="sstates"></a>
Source States</h1>
<p>This diagrams shows the sequence that is used to set the sources states <a class="el" href="namespaceam.html#af966cbbc3b1d6e637d81a46eaa7dd358" title="The source state reflects the state of the source. ">am::am_SourceState_e</a>. Since the source states are set by the AudioManagerController, the exact behavior is product specific. </p><div class="image">
<img src="SourceStates.png" alt="SourceStates.png"/>
</div>
<h1><a class="anchor" id="avail"></a>
Availability</h1>
<p>This diagram shows the sequence that is used to communicate the availability <a class="el" href="structam_1_1am__Availability__s.html" title="this describes the availability of a sink or a source together with the latest change ...">am::am_Availability_s</a>. from the sources. Please note that the availability reasons <a class="el" href="namespaceam.html#ad3bc2cbb9daa87acf51c56c803620046" title="This type gives the information about reason for reason for Source/Sink change. ">am::am_CustomAvailabilityReason_t</a> are product specific. </p><div class="image">
<img src="AvailabilityofSources.png" alt="AvailabilityofSources.png"/>
</div>
<p> Here is the same for the sinks: </p><div class="image">
<img src="AvailabilityofSinks.png" alt="AvailabilityofSinks.png"/>
</div>
<h1><a class="anchor" id="vol"></a>
Volumes</h1>
<p>Volumes <a class="el" href="namespaceam.html#a0ba72fdbafaa9e886e77aa4099c281ec" title="The unit is 0.1 db steps,The smallest value -3000 (=AM_MUTE). ">am::am_volume_t</a> are set to the sinks, mainly, but depending on the used audio routing system it might be that they can be set on the source level as well. If this is not the case, proper measures must be taken to do this. Changes of a source: </p><div class="image">
<img src="VolumeChangesofSources.png" alt="VolumeChangesofSources.png"/>
</div>
<p> Changes of a sink: </p><div class="image">
<img src="VolumeChangesofSinks.png" alt="VolumeChangesofSinks.png"/>
</div>
<h1><a class="anchor" id="SoundProperties"></a>
SoundProperties</h1>
<p>The <a class="el" href="structam_1_1am__SoundProperty__s.html" title="struct describing the sound property ">am::am_SoundProperty_s</a> are set to the sources and sinks. More information about SoundProperties can be found here: <a class="el" href="prop.html">Properties</a>. Changes of a sink: </p><div class="image">
<img src="SoundPropertyChangeofSink.png" alt="SoundPropertyChangeofSink.png"/>
</div>
<p> Changes of a source: </p><div class="image">
<img src="SoundPropertyChangeofSource.png" alt="SoundPropertyChangeofSource.png"/>
</div>
<h1><a class="anchor" id="in"></a>
Interrupt States</h1>
<p>The <a class="el" href="namespaceam.html#a9bce055a917900b33c7fa5666ec00e22">am::am_InterruptState_e</a> are reported by low level interrupts from the sources to the AudioManagement. More details here: <a class="el" href="interrupts.html">Interrups &amp; Low Level Interrupts</a> . </p><div class="image">
<img src="InterruptStatusChange.png" alt="InterruptStatusChange.png"/>
</div>
 </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Fri Feb 9 2018 14:50:30 for AudioManager by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>