blob: 71ca0650378bf244ad94267196275de22a2d79dd (
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
|
<h1>SDLAudioStreamManager Class Reference</h1>
<h3>Section Contents</h3>
<ul>
<li><a href="#section-delegate">delegate</a></li>
<li><a href="#section-playing">playing</a></li>
<li><a href="#section-queue">queue</a></li>
<li><a href="#section--init">-init</a></li>
<li><a href="#section--initWithManager:">-initWithManager:</a></li>
<li><a href="#section--pushWithFileURL:">-pushWithFileURL:</a></li>
<li><a href="#section--pushWithData:">-pushWithData:</a></li>
<li><a href="#section--playNextWhenReady">-playNextWhenReady</a></li>
<li><a href="#section--stop">-stop</a></li>
</ul>
<h3>Overview</h3>
<p>The manager to control the audio stream</p>
<section class="section task-group-section">
<h3 id="section-delegate">
delegate
</h3>
<p>The delegate describing when files are done playing or any errors that occur</p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">weak</span><span class="p">)</span> <span class="n">id</span><span class="o"><</span><span class="n"><a href="../Protocols/SDLAudioStreamManagerDelegate.html">SDLAudioStreamManagerDelegate</a></span><span class="o">></span> <span class="n">_Nullable</span> <span class="n">delegate</span><span class="p">;</span></code></pre>
<h3 id="section-playing">
playing
</h3>
<p>Whether or not we are currently playing audio</p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">readonly</span><span class="p">,</span> <span class="n">getter</span><span class="o">=</span><span class="n">isPlaying</span><span class="p">)</span> <span class="n">BOOL</span> <span class="n">playing</span><span class="p">;</span></code></pre>
<h4>Swift</h4>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">isPlaying</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
<h3 id="section-queue">
queue
</h3>
<p>The queue of audio files that will be played in sequence</p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">@property</span> <span class="p">(</span><span class="n">nonatomic</span><span class="p">,</span> <span class="n">copy</span><span class="p">,</span> <span class="n">readonly</span><span class="p">)</span> <span class="n">NSArray</span><span class="o"><</span><span class="n"><a href="../Classes/SDLAudioFile.html">SDLAudioFile</a></span> <span class="o">*></span> <span class="o">*</span><span class="n">_Nonnull</span> <span class="n">queue</span><span class="p">;</span></code></pre>
<h4>Swift</h4>
<pre class="highlight swift"><code><span class="k">var</span> <span class="nv">queue</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SDLAudioFile.html">SDLAudioFile</a></span><span class="p">]</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
<h3 id="section--init">
-init
</h3>
<p>Init should only occur with dependencies. use <code>initWithManager:</code></p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span><span class="n">init</span><span class="p">;</span></code></pre>
<div>
<h4>Return Value</h4>
<p>A failure</p>
</div>
<h3 id="section--initWithManager:">
-initWithManager:
</h3>
<p>Create an audio stream manager with a reference to the parent stream manager.</p>
<div class="aside aside-warning">
<p class="aside-title">Warning</p>
<p>For internal use</p>
</div>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">nonnull</span> <span class="n">instancetype</span><span class="p">)</span><span class="nf">initWithManager</span><span class="p">:</span>
<span class="p">(</span><span class="n">nonnull</span> <span class="n">id</span><span class="o"><</span><span class="n"><a href="../Protocols/SDLStreamingAudioManagerType.html">SDLStreamingAudioManagerType</a></span><span class="o">></span><span class="p">)</span><span class="nv">streamManager</span><span class="p">;</span></code></pre>
<h4>Parameters</h4>
<dl>
<dt>streamManager</dt>
<dd><p>The parent stream manager</p></dd>
</dl>
<div>
<h4>Return Value</h4>
<p>The audio stream manager</p>
</div>
<h3 id="section--pushWithFileURL:">
-pushWithFileURL:
</h3>
<p>Push a new file URL onto the queue after converting it into the correct PCM format for streaming binary data. Call <code>playNextWhenReady</code> to start playing the next completed pushed file.</p>
<div class="aside aside-note">
<p class="aside-title">Note</p>
<p>This happens on a serial background thread and will provide an error callback using the delegate if the conversion fails.</p>
</div>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">pushWithFileURL</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSURL</span> <span class="o">*</span><span class="p">)</span><span class="nv">fileURL</span><span class="p">;</span></code></pre>
<h4>Swift</h4>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">withFileURL</span> <span class="nv">fileURL</span><span class="p">:</span> <span class="kt">URL</span><span class="p">)</span></code></pre>
<h4>Parameters</h4>
<dl>
<dt>fileURL</dt>
<dd><p>File URL to convert</p></dd>
</dl>
<h3 id="section--pushWithData:">
-pushWithData:
</h3>
<p>Push a new audio buffer onto the queue. Call <code>playNextWhenReady</code> to start playing the pushed audio buffer.</p>
<p>This data must be of the required PCM format. See SDLSystemCapabilityManager.pcmStreamCapability and SDLAudioPassThruCapability.h.</p>
<p>This is <em>an example</em> of a PCM format used by some head units:</p>
<ul>
<li>audioType: PCM</li>
<li>samplingRate: 16kHZ</li>
<li>bitsPerSample: 16 bits</li>
</ul>
<p>There is generally only one channel to the data.</p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">pushWithData</span><span class="p">:(</span><span class="n">nonnull</span> <span class="n">NSData</span> <span class="o">*</span><span class="p">)</span><span class="nv">data</span><span class="p">;</span></code></pre>
<h4>Swift</h4>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">with</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre>
<h4>Parameters</h4>
<dl>
<dt>data</dt>
<dd><p>The audio buffer to be pushed onto the queue</p></dd>
</dl>
<h3 id="section--playNextWhenReady">
-playNextWhenReady
</h3>
<p>Play the next item in the queue. If an item is currently playing, it will continue playing and this item will begin playing after it is completed.</p>
<p>When complete, this will callback on the delegate.</p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">playNextWhenReady</span><span class="p">;</span></code></pre>
<h4>Swift</h4>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">playNextWhenReady</span><span class="p">()</span></code></pre>
<h3 id="section--stop">
-stop
</h3>
<p>Stop playing the queue after the current item completes and clear the queue. If nothing is playing, the queue will be cleared.</p>
<h4>Objective-C</h4>
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">stop</span><span class="p">;</span></code></pre>
<h4>Swift</h4>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">stop</span><span class="p">()</span></code></pre>
</section>
|