xref: /aosp_15_r20/external/speex/doc/manual.lyx (revision 28e138c64d234588b5cd2a8a403b584bd3036e4e)
1*28e138c6SAndroid Build Coastguard Worker#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
2*28e138c6SAndroid Build Coastguard Worker\lyxformat 345
3*28e138c6SAndroid Build Coastguard Worker\begin_document
4*28e138c6SAndroid Build Coastguard Worker\begin_header
5*28e138c6SAndroid Build Coastguard Worker\textclass scrbook
6*28e138c6SAndroid Build Coastguard Worker\use_default_options true
7*28e138c6SAndroid Build Coastguard Worker\language english
8*28e138c6SAndroid Build Coastguard Worker\inputencoding auto
9*28e138c6SAndroid Build Coastguard Worker\font_roman default
10*28e138c6SAndroid Build Coastguard Worker\font_sans default
11*28e138c6SAndroid Build Coastguard Worker\font_typewriter default
12*28e138c6SAndroid Build Coastguard Worker\font_default_family default
13*28e138c6SAndroid Build Coastguard Worker\font_sc false
14*28e138c6SAndroid Build Coastguard Worker\font_osf false
15*28e138c6SAndroid Build Coastguard Worker\font_sf_scale 100
16*28e138c6SAndroid Build Coastguard Worker\font_tt_scale 100
17*28e138c6SAndroid Build Coastguard Worker
18*28e138c6SAndroid Build Coastguard Worker\graphics default
19*28e138c6SAndroid Build Coastguard Worker\paperfontsize 10
20*28e138c6SAndroid Build Coastguard Worker\spacing single
21*28e138c6SAndroid Build Coastguard Worker\use_hyperref false
22*28e138c6SAndroid Build Coastguard Worker\papersize letterpaper
23*28e138c6SAndroid Build Coastguard Worker\use_geometry true
24*28e138c6SAndroid Build Coastguard Worker\use_amsmath 2
25*28e138c6SAndroid Build Coastguard Worker\use_esint 2
26*28e138c6SAndroid Build Coastguard Worker\cite_engine basic
27*28e138c6SAndroid Build Coastguard Worker\use_bibtopic false
28*28e138c6SAndroid Build Coastguard Worker\paperorientation portrait
29*28e138c6SAndroid Build Coastguard Worker\leftmargin 2cm
30*28e138c6SAndroid Build Coastguard Worker\topmargin 2cm
31*28e138c6SAndroid Build Coastguard Worker\rightmargin 2cm
32*28e138c6SAndroid Build Coastguard Worker\bottommargin 2cm
33*28e138c6SAndroid Build Coastguard Worker\secnumdepth 3
34*28e138c6SAndroid Build Coastguard Worker\tocdepth 3
35*28e138c6SAndroid Build Coastguard Worker\paragraph_separation indent
36*28e138c6SAndroid Build Coastguard Worker\defskip medskip
37*28e138c6SAndroid Build Coastguard Worker\quotes_language english
38*28e138c6SAndroid Build Coastguard Worker\papercolumns 1
39*28e138c6SAndroid Build Coastguard Worker\papersides 1
40*28e138c6SAndroid Build Coastguard Worker\paperpagestyle headings
41*28e138c6SAndroid Build Coastguard Worker\tracking_changes false
42*28e138c6SAndroid Build Coastguard Worker\output_changes false
43*28e138c6SAndroid Build Coastguard Worker\author ""
44*28e138c6SAndroid Build Coastguard Worker\author ""
45*28e138c6SAndroid Build Coastguard Worker\end_header
46*28e138c6SAndroid Build Coastguard Worker
47*28e138c6SAndroid Build Coastguard Worker\begin_body
48*28e138c6SAndroid Build Coastguard Worker
49*28e138c6SAndroid Build Coastguard Worker\begin_layout Title
50*28e138c6SAndroid Build Coastguard WorkerThe Speex Manual
51*28e138c6SAndroid Build Coastguard Worker\begin_inset Newline newline
52*28e138c6SAndroid Build Coastguard Worker\end_inset
53*28e138c6SAndroid Build Coastguard Worker
54*28e138c6SAndroid Build Coastguard WorkerVersion 1.2
55*28e138c6SAndroid Build Coastguard Worker\end_layout
56*28e138c6SAndroid Build Coastguard Worker
57*28e138c6SAndroid Build Coastguard Worker\begin_layout Author
58*28e138c6SAndroid Build Coastguard WorkerJean-Marc Valin
59*28e138c6SAndroid Build Coastguard Worker\end_layout
60*28e138c6SAndroid Build Coastguard Worker
61*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
62*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
63*28e138c6SAndroid Build Coastguard Worker\end_inset
64*28e138c6SAndroid Build Coastguard Worker
65*28e138c6SAndroid Build Coastguard Worker
66*28e138c6SAndroid Build Coastguard Worker\end_layout
67*28e138c6SAndroid Build Coastguard Worker
68*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
69*28e138c6SAndroid Build Coastguard WorkerCopyright
70*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
71*28e138c6SAndroid Build Coastguard Workerstatus collapsed
72*28e138c6SAndroid Build Coastguard Worker
73*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
74*28e138c6SAndroid Build Coastguard Worker
75*28e138c6SAndroid Build Coastguard Worker
76*28e138c6SAndroid Build Coastguard Worker\backslash
77*28e138c6SAndroid Build Coastguard Workercopyright
78*28e138c6SAndroid Build Coastguard Worker\end_layout
79*28e138c6SAndroid Build Coastguard Worker
80*28e138c6SAndroid Build Coastguard Worker\end_inset
81*28e138c6SAndroid Build Coastguard Worker
82*28e138c6SAndroid Build Coastguard Worker 2002-2008 Jean-Marc Valin/Xiph.org Foundation
83*28e138c6SAndroid Build Coastguard Worker\end_layout
84*28e138c6SAndroid Build Coastguard Worker
85*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
86*28e138c6SAndroid Build Coastguard WorkerPermission is granted to copy, distribute and/or modify this document under
87*28e138c6SAndroid Build Coastguard Worker the terms of the GNU Free Documentation License, Version 1.1 or any later
88*28e138c6SAndroid Build Coastguard Worker version published by the Free Software Foundation; with no Invariant Section,
89*28e138c6SAndroid Build Coastguard Worker with no Front-Cover Texts, and with no Back-Cover.
90*28e138c6SAndroid Build Coastguard Worker A copy of the license is included in the section entitled "GNU Free Documentati
91*28e138c6SAndroid Build Coastguard Workeron License".
92*28e138c6SAndroid Build Coastguard Worker
93*28e138c6SAndroid Build Coastguard Worker\end_layout
94*28e138c6SAndroid Build Coastguard Worker
95*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
96*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
97*28e138c6SAndroid Build Coastguard Worker\end_inset
98*28e138c6SAndroid Build Coastguard Worker
99*28e138c6SAndroid Build Coastguard Worker
100*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset toc
101*28e138c6SAndroid Build Coastguard WorkerLatexCommand tableofcontents
102*28e138c6SAndroid Build Coastguard Worker
103*28e138c6SAndroid Build Coastguard Worker\end_inset
104*28e138c6SAndroid Build Coastguard Worker
105*28e138c6SAndroid Build Coastguard Worker
106*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
107*28e138c6SAndroid Build Coastguard Worker\end_inset
108*28e138c6SAndroid Build Coastguard Worker
109*28e138c6SAndroid Build Coastguard Worker
110*28e138c6SAndroid Build Coastguard Worker\end_layout
111*28e138c6SAndroid Build Coastguard Worker
112*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
113*28e138c6SAndroid Build Coastguard Worker\begin_inset FloatList table
114*28e138c6SAndroid Build Coastguard Worker
115*28e138c6SAndroid Build Coastguard Worker\end_inset
116*28e138c6SAndroid Build Coastguard Worker
117*28e138c6SAndroid Build Coastguard Worker
118*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
119*28e138c6SAndroid Build Coastguard Worker\end_inset
120*28e138c6SAndroid Build Coastguard Worker
121*28e138c6SAndroid Build Coastguard Worker
122*28e138c6SAndroid Build Coastguard Worker\end_layout
123*28e138c6SAndroid Build Coastguard Worker
124*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
125*28e138c6SAndroid Build Coastguard WorkerIntroduction to Speex
126*28e138c6SAndroid Build Coastguard Worker\end_layout
127*28e138c6SAndroid Build Coastguard Worker
128*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
129*28e138c6SAndroid Build Coastguard WorkerThe Speex codec (
130*28e138c6SAndroid Build Coastguard Worker\family typewriter
131*28e138c6SAndroid Build Coastguard Workerhttp://www.speex.org/
132*28e138c6SAndroid Build Coastguard Worker\family default
133*28e138c6SAndroid Build Coastguard Worker) exists because there is a need for a speech codec that is open-source
134*28e138c6SAndroid Build Coastguard Worker and free from software patent royalties.
135*28e138c6SAndroid Build Coastguard Worker These are essential conditions for being usable in any open-source software.
136*28e138c6SAndroid Build Coastguard Worker In essence, Speex is to speech what Vorbis is to audio/music.
137*28e138c6SAndroid Build Coastguard Worker Unlike many other speech codecs, Speex is not designed for mobile phones
138*28e138c6SAndroid Build Coastguard Worker but rather for packet networks and voice over IP (VoIP) applications.
139*28e138c6SAndroid Build Coastguard Worker File-based compression is of course also supported.
140*28e138c6SAndroid Build Coastguard Worker
141*28e138c6SAndroid Build Coastguard Worker\end_layout
142*28e138c6SAndroid Build Coastguard Worker
143*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
144*28e138c6SAndroid Build Coastguard WorkerThe Speex codec is designed to be very flexible and support a wide range
145*28e138c6SAndroid Build Coastguard Worker of speech quality and bit-rate.
146*28e138c6SAndroid Build Coastguard Worker Support for very good quality speech also means that Speex can encode wideband
147*28e138c6SAndroid Build Coastguard Worker speech (16 kHz sampling rate) in addition to narrowband speech (telephone
148*28e138c6SAndroid Build Coastguard Worker quality, 8 kHz sampling rate).
149*28e138c6SAndroid Build Coastguard Worker\end_layout
150*28e138c6SAndroid Build Coastguard Worker
151*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
152*28e138c6SAndroid Build Coastguard WorkerDesigning for VoIP instead of mobile phones means that Speex is robust to
153*28e138c6SAndroid Build Coastguard Worker lost packets, but not to corrupted ones.
154*28e138c6SAndroid Build Coastguard Worker This is based on the assumption that in VoIP, packets either arrive unaltered
155*28e138c6SAndroid Build Coastguard Worker or don't arrive at all.
156*28e138c6SAndroid Build Coastguard Worker Because Speex is targeted at a wide range of devices, it has modest (adjustable
157*28e138c6SAndroid Build Coastguard Worker) complexity and a small memory footprint.
158*28e138c6SAndroid Build Coastguard Worker\end_layout
159*28e138c6SAndroid Build Coastguard Worker
160*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
161*28e138c6SAndroid Build Coastguard WorkerAll the design goals led to the choice of CELP
162*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
163*28e138c6SAndroid Build Coastguard Workerstatus collapsed
164*28e138c6SAndroid Build Coastguard Worker
165*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
166*28e138c6SAndroid Build Coastguard WorkerCELP
167*28e138c6SAndroid Build Coastguard Worker\end_layout
168*28e138c6SAndroid Build Coastguard Worker
169*28e138c6SAndroid Build Coastguard Worker\end_inset
170*28e138c6SAndroid Build Coastguard Worker
171*28e138c6SAndroid Build Coastguard Worker as the encoding technique.
172*28e138c6SAndroid Build Coastguard Worker One of the main reasons is that CELP has long proved that it could work
173*28e138c6SAndroid Build Coastguard Worker reliably and scale well to both low bit-rates (e.g.
174*28e138c6SAndroid Build Coastguard Worker DoD CELP @ 4.8 kbps) and high bit-rates (e.g.
175*28e138c6SAndroid Build Coastguard Worker G.728 @ 16 kbps).
176*28e138c6SAndroid Build Coastguard Worker
177*28e138c6SAndroid Build Coastguard Worker\end_layout
178*28e138c6SAndroid Build Coastguard Worker
179*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
180*28e138c6SAndroid Build Coastguard WorkerGetting help
181*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
182*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
183*28e138c6SAndroid Build Coastguard Workername "sec:Getting-help"
184*28e138c6SAndroid Build Coastguard Worker
185*28e138c6SAndroid Build Coastguard Worker\end_inset
186*28e138c6SAndroid Build Coastguard Worker
187*28e138c6SAndroid Build Coastguard Worker
188*28e138c6SAndroid Build Coastguard Worker\end_layout
189*28e138c6SAndroid Build Coastguard Worker
190*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
191*28e138c6SAndroid Build Coastguard WorkerAs for many open source projects, there are many ways to get help with Speex.
192*28e138c6SAndroid Build Coastguard Worker These include:
193*28e138c6SAndroid Build Coastguard Worker\end_layout
194*28e138c6SAndroid Build Coastguard Worker
195*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
196*28e138c6SAndroid Build Coastguard WorkerThis manual
197*28e138c6SAndroid Build Coastguard Worker\end_layout
198*28e138c6SAndroid Build Coastguard Worker
199*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
200*28e138c6SAndroid Build Coastguard WorkerOther documentation on the Speex website (http://www.speex.org/)
201*28e138c6SAndroid Build Coastguard Worker\end_layout
202*28e138c6SAndroid Build Coastguard Worker
203*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
204*28e138c6SAndroid Build Coastguard WorkerMailing list: Discuss any Speex-related topic on [email protected] (not
205*28e138c6SAndroid Build Coastguard Worker just for developers)
206*28e138c6SAndroid Build Coastguard Worker\end_layout
207*28e138c6SAndroid Build Coastguard Worker
208*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
209*28e138c6SAndroid Build Coastguard WorkerIRC: The main channel is #speex on irc.freenode.net.
210*28e138c6SAndroid Build Coastguard Worker Note that due to time differences, it may take a while to get someone,
211*28e138c6SAndroid Build Coastguard Worker so please be patient.
212*28e138c6SAndroid Build Coastguard Worker\end_layout
213*28e138c6SAndroid Build Coastguard Worker
214*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
215*28e138c6SAndroid Build Coastguard WorkerEmail the author privately at [email protected]
216*28e138c6SAndroid Build Coastguard Worker\series bold
217*28e138c6SAndroid Build Coastguard Workeronly
218*28e138c6SAndroid Build Coastguard Worker\series default
219*28e138c6SAndroid Build Coastguard Worker for private/delicate topics you do not wish to discuss publicly.
220*28e138c6SAndroid Build Coastguard Worker\end_layout
221*28e138c6SAndroid Build Coastguard Worker
222*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
223*28e138c6SAndroid Build Coastguard WorkerBefore asking for help (mailing list or IRC),
224*28e138c6SAndroid Build Coastguard Worker\series bold
225*28e138c6SAndroid Build Coastguard Workerit is important to first read this manual
226*28e138c6SAndroid Build Coastguard Worker\series default
227*28e138c6SAndroid Build Coastguard Worker (OK, so if you made it here it's already a good sign).
228*28e138c6SAndroid Build Coastguard Worker It is generally considered rude to ask on a mailing list about topics that
229*28e138c6SAndroid Build Coastguard Worker are clearly detailed in the documentation.
230*28e138c6SAndroid Build Coastguard Worker On the other hand, it's perfectly OK (and encouraged) to ask for clarifications
231*28e138c6SAndroid Build Coastguard Worker about something covered in the manual.
232*28e138c6SAndroid Build Coastguard Worker This manual does not (yet) cover everything about Speex, so everyone is
233*28e138c6SAndroid Build Coastguard Worker encouraged to ask questions, send comments, feature requests, or just let
234*28e138c6SAndroid Build Coastguard Worker us know how Speex is being used.
235*28e138c6SAndroid Build Coastguard Worker
236*28e138c6SAndroid Build Coastguard Worker\end_layout
237*28e138c6SAndroid Build Coastguard Worker
238*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
239*28e138c6SAndroid Build Coastguard WorkerHere are some additional guidelines related to the mailing list.
240*28e138c6SAndroid Build Coastguard Worker Before reporting bugs in Speex to the list, it is strongly recommended
241*28e138c6SAndroid Build Coastguard Worker (if possible) to first test whether these bugs can be reproduced using
242*28e138c6SAndroid Build Coastguard Worker the speexenc and speexdec (see Section
243*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
244*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
245*28e138c6SAndroid Build Coastguard Workerreference "sec:Command-line-encoder/decoder"
246*28e138c6SAndroid Build Coastguard Worker
247*28e138c6SAndroid Build Coastguard Worker\end_inset
248*28e138c6SAndroid Build Coastguard Worker
249*28e138c6SAndroid Build Coastguard Worker) command-line utilities.
250*28e138c6SAndroid Build Coastguard Worker Bugs reported based on 3rd party code are both harder to find and far too
251*28e138c6SAndroid Build Coastguard Worker often caused by errors that have nothing to do with Speex.
252*28e138c6SAndroid Build Coastguard Worker
253*28e138c6SAndroid Build Coastguard Worker\end_layout
254*28e138c6SAndroid Build Coastguard Worker
255*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
256*28e138c6SAndroid Build Coastguard WorkerAbout this document
257*28e138c6SAndroid Build Coastguard Worker\end_layout
258*28e138c6SAndroid Build Coastguard Worker
259*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
260*28e138c6SAndroid Build Coastguard WorkerThis document is divided in the following way.
261*28e138c6SAndroid Build Coastguard Worker Section
262*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
263*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
264*28e138c6SAndroid Build Coastguard Workerreference "sec:Feature-description"
265*28e138c6SAndroid Build Coastguard Worker
266*28e138c6SAndroid Build Coastguard Worker\end_inset
267*28e138c6SAndroid Build Coastguard Worker
268*28e138c6SAndroid Build Coastguard Worker describes the different Speex features and defines many basic terms that
269*28e138c6SAndroid Build Coastguard Worker are used throughout this manual.
270*28e138c6SAndroid Build Coastguard Worker Section
271*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
272*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
273*28e138c6SAndroid Build Coastguard Workerreference "sec:Command-line-encoder/decoder"
274*28e138c6SAndroid Build Coastguard Worker
275*28e138c6SAndroid Build Coastguard Worker\end_inset
276*28e138c6SAndroid Build Coastguard Worker
277*28e138c6SAndroid Build Coastguard Worker documents the standard command-line tools provided in the Speex distribution.
278*28e138c6SAndroid Build Coastguard Worker Section
279*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
280*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
281*28e138c6SAndroid Build Coastguard Workerreference "sec:Programming-with-Speex"
282*28e138c6SAndroid Build Coastguard Worker
283*28e138c6SAndroid Build Coastguard Worker\end_inset
284*28e138c6SAndroid Build Coastguard Worker
285*28e138c6SAndroid Build Coastguard Worker includes detailed instructions about programming using the libspeex
286*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
287*28e138c6SAndroid Build Coastguard Workerstatus collapsed
288*28e138c6SAndroid Build Coastguard Worker
289*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
290*28e138c6SAndroid Build Coastguard Workerlibspeex
291*28e138c6SAndroid Build Coastguard Worker\end_layout
292*28e138c6SAndroid Build Coastguard Worker
293*28e138c6SAndroid Build Coastguard Worker\end_inset
294*28e138c6SAndroid Build Coastguard Worker
295*28e138c6SAndroid Build Coastguard Worker API.
296*28e138c6SAndroid Build Coastguard Worker Section
297*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
298*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
299*28e138c6SAndroid Build Coastguard Workerreference "sec:Formats-and-standards"
300*28e138c6SAndroid Build Coastguard Worker
301*28e138c6SAndroid Build Coastguard Worker\end_inset
302*28e138c6SAndroid Build Coastguard Worker
303*28e138c6SAndroid Build Coastguard Worker has some information related to Speex and standards.
304*28e138c6SAndroid Build Coastguard Worker
305*28e138c6SAndroid Build Coastguard Worker\end_layout
306*28e138c6SAndroid Build Coastguard Worker
307*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
308*28e138c6SAndroid Build Coastguard WorkerThe three last sections describe the algorithms used in Speex.
309*28e138c6SAndroid Build Coastguard Worker These sections require signal processing knowledge, but are not required
310*28e138c6SAndroid Build Coastguard Worker for merely using Speex.
311*28e138c6SAndroid Build Coastguard Worker They are intended for people who want to understand how Speex really works
312*28e138c6SAndroid Build Coastguard Worker and/or want to do research based on Speex.
313*28e138c6SAndroid Build Coastguard Worker Section
314*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
315*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
316*28e138c6SAndroid Build Coastguard Workerreference "sec:Introduction-to-CELP"
317*28e138c6SAndroid Build Coastguard Worker
318*28e138c6SAndroid Build Coastguard Worker\end_inset
319*28e138c6SAndroid Build Coastguard Worker
320*28e138c6SAndroid Build Coastguard Worker explains the general idea behind CELP, while sections
321*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
322*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
323*28e138c6SAndroid Build Coastguard Workerreference "sec:Speex-narrowband-mode"
324*28e138c6SAndroid Build Coastguard Worker
325*28e138c6SAndroid Build Coastguard Worker\end_inset
326*28e138c6SAndroid Build Coastguard Worker
327*28e138c6SAndroid Build Coastguard Worker and
328*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
329*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
330*28e138c6SAndroid Build Coastguard Workerreference "sec:Speex-wideband-mode"
331*28e138c6SAndroid Build Coastguard Worker
332*28e138c6SAndroid Build Coastguard Worker\end_inset
333*28e138c6SAndroid Build Coastguard Worker
334*28e138c6SAndroid Build Coastguard Worker are specific to Speex.
335*28e138c6SAndroid Build Coastguard Worker\end_layout
336*28e138c6SAndroid Build Coastguard Worker
337*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
338*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
339*28e138c6SAndroid Build Coastguard Worker\end_inset
340*28e138c6SAndroid Build Coastguard Worker
341*28e138c6SAndroid Build Coastguard Worker
342*28e138c6SAndroid Build Coastguard Worker\end_layout
343*28e138c6SAndroid Build Coastguard Worker
344*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
345*28e138c6SAndroid Build Coastguard WorkerCodec description
346*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
347*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
348*28e138c6SAndroid Build Coastguard Workername "sec:Feature-description"
349*28e138c6SAndroid Build Coastguard Worker
350*28e138c6SAndroid Build Coastguard Worker\end_inset
351*28e138c6SAndroid Build Coastguard Worker
352*28e138c6SAndroid Build Coastguard Worker
353*28e138c6SAndroid Build Coastguard Worker\end_layout
354*28e138c6SAndroid Build Coastguard Worker
355*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
356*28e138c6SAndroid Build Coastguard WorkerThis section describes Speex and its features into more details.
357*28e138c6SAndroid Build Coastguard Worker\end_layout
358*28e138c6SAndroid Build Coastguard Worker
359*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
360*28e138c6SAndroid Build Coastguard WorkerConcepts
361*28e138c6SAndroid Build Coastguard Worker\end_layout
362*28e138c6SAndroid Build Coastguard Worker
363*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
364*28e138c6SAndroid Build Coastguard WorkerBefore introducing all the Speex features, here are some concepts in speech
365*28e138c6SAndroid Build Coastguard Worker coding that help better understand the rest of the manual.
366*28e138c6SAndroid Build Coastguard Worker Although some are general concepts in speech/audio processing, others are
367*28e138c6SAndroid Build Coastguard Worker specific to Speex.
368*28e138c6SAndroid Build Coastguard Worker\end_layout
369*28e138c6SAndroid Build Coastguard Worker
370*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
371*28e138c6SAndroid Build Coastguard WorkerSampling rate
372*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
373*28e138c6SAndroid Build Coastguard Workerstatus collapsed
374*28e138c6SAndroid Build Coastguard Worker
375*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
376*28e138c6SAndroid Build Coastguard Workersampling rate
377*28e138c6SAndroid Build Coastguard Worker\end_layout
378*28e138c6SAndroid Build Coastguard Worker
379*28e138c6SAndroid Build Coastguard Worker\end_inset
380*28e138c6SAndroid Build Coastguard Worker
381*28e138c6SAndroid Build Coastguard Worker
382*28e138c6SAndroid Build Coastguard Worker\end_layout
383*28e138c6SAndroid Build Coastguard Worker
384*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
385*28e138c6SAndroid Build Coastguard WorkerThe sampling rate expressed in Hertz (Hz) is the number of samples taken
386*28e138c6SAndroid Build Coastguard Worker from a signal per second.
387*28e138c6SAndroid Build Coastguard Worker For a sampling rate of
388*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $F_{s}$
389*28e138c6SAndroid Build Coastguard Worker\end_inset
390*28e138c6SAndroid Build Coastguard Worker
391*28e138c6SAndroid Build Coastguard Worker kHz, the highest frequency that can be represented is equal to
392*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $F_{s}/2$
393*28e138c6SAndroid Build Coastguard Worker\end_inset
394*28e138c6SAndroid Build Coastguard Worker
395*28e138c6SAndroid Build Coastguard Worker kHz (
396*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $F_{s}/2$
397*28e138c6SAndroid Build Coastguard Worker\end_inset
398*28e138c6SAndroid Build Coastguard Worker
399*28e138c6SAndroid Build Coastguard Worker is known as the Nyquist frequency).
400*28e138c6SAndroid Build Coastguard Worker This is a fundamental property in signal processing and is described by
401*28e138c6SAndroid Build Coastguard Worker the sampling theorem.
402*28e138c6SAndroid Build Coastguard Worker Speex is mainly designed for three different sampling rates: 8 kHz, 16
403*28e138c6SAndroid Build Coastguard Worker kHz, and 32 kHz.
404*28e138c6SAndroid Build Coastguard Worker These are respectively referred to as narrowband
405*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
406*28e138c6SAndroid Build Coastguard Workerstatus collapsed
407*28e138c6SAndroid Build Coastguard Worker
408*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
409*28e138c6SAndroid Build Coastguard Workernarrowband
410*28e138c6SAndroid Build Coastguard Worker\end_layout
411*28e138c6SAndroid Build Coastguard Worker
412*28e138c6SAndroid Build Coastguard Worker\end_inset
413*28e138c6SAndroid Build Coastguard Worker
414*28e138c6SAndroid Build Coastguard Worker, wideband
415*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
416*28e138c6SAndroid Build Coastguard Workerstatus collapsed
417*28e138c6SAndroid Build Coastguard Worker
418*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
419*28e138c6SAndroid Build Coastguard Workerwideband
420*28e138c6SAndroid Build Coastguard Worker\end_layout
421*28e138c6SAndroid Build Coastguard Worker
422*28e138c6SAndroid Build Coastguard Worker\end_inset
423*28e138c6SAndroid Build Coastguard Worker
424*28e138c6SAndroid Build Coastguard Worker and ultra-wideband
425*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
426*28e138c6SAndroid Build Coastguard Workerstatus collapsed
427*28e138c6SAndroid Build Coastguard Worker
428*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
429*28e138c6SAndroid Build Coastguard Workerultra-wideband
430*28e138c6SAndroid Build Coastguard Worker\end_layout
431*28e138c6SAndroid Build Coastguard Worker
432*28e138c6SAndroid Build Coastguard Worker\end_inset
433*28e138c6SAndroid Build Coastguard Worker
434*28e138c6SAndroid Build Coastguard Worker.
435*28e138c6SAndroid Build Coastguard Worker
436*28e138c6SAndroid Build Coastguard Worker\end_layout
437*28e138c6SAndroid Build Coastguard Worker
438*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
439*28e138c6SAndroid Build Coastguard WorkerBit-rate
440*28e138c6SAndroid Build Coastguard Worker\end_layout
441*28e138c6SAndroid Build Coastguard Worker
442*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
443*28e138c6SAndroid Build Coastguard WorkerWhen encoding a speech signal, the bit-rate is defined as the number of
444*28e138c6SAndroid Build Coastguard Worker bits per unit of time required to encode the speech.
445*28e138c6SAndroid Build Coastguard Worker It is measured in
446*28e138c6SAndroid Build Coastguard Worker\emph on
447*28e138c6SAndroid Build Coastguard Workerbits per second
448*28e138c6SAndroid Build Coastguard Worker\emph default
449*28e138c6SAndroid Build Coastguard Worker (bps), or generally
450*28e138c6SAndroid Build Coastguard Worker\emph on
451*28e138c6SAndroid Build Coastguard Workerkilobits per second
452*28e138c6SAndroid Build Coastguard Worker\emph default
453*28e138c6SAndroid Build Coastguard Worker.
454*28e138c6SAndroid Build Coastguard Worker It is important to make the distinction between
455*28e138c6SAndroid Build Coastguard Worker\emph on
456*28e138c6SAndroid Build Coastguard Workerkilo
457*28e138c6SAndroid Build Coastguard Worker\series bold
458*28e138c6SAndroid Build Coastguard Workerbits
459*28e138c6SAndroid Build Coastguard Worker\series default
460*28e138c6SAndroid Build Coastguard Worker\emph default
461*28e138c6SAndroid Build Coastguard Worker
462*28e138c6SAndroid Build Coastguard Worker\emph on
463*28e138c6SAndroid Build Coastguard Workerper second
464*28e138c6SAndroid Build Coastguard Worker\emph default
465*28e138c6SAndroid Build Coastguard Worker (k
466*28e138c6SAndroid Build Coastguard Worker\series bold
467*28e138c6SAndroid Build Coastguard Workerb
468*28e138c6SAndroid Build Coastguard Worker\series default
469*28e138c6SAndroid Build Coastguard Workerps) and
470*28e138c6SAndroid Build Coastguard Worker\emph on
471*28e138c6SAndroid Build Coastguard Workerkilo
472*28e138c6SAndroid Build Coastguard Worker\series bold
473*28e138c6SAndroid Build Coastguard Workerbytes
474*28e138c6SAndroid Build Coastguard Worker\series default
475*28e138c6SAndroid Build Coastguard Worker\emph default
476*28e138c6SAndroid Build Coastguard Worker
477*28e138c6SAndroid Build Coastguard Worker\emph on
478*28e138c6SAndroid Build Coastguard Workerper second
479*28e138c6SAndroid Build Coastguard Worker\emph default
480*28e138c6SAndroid Build Coastguard Worker (k
481*28e138c6SAndroid Build Coastguard Worker\series bold
482*28e138c6SAndroid Build Coastguard WorkerB
483*28e138c6SAndroid Build Coastguard Worker\series default
484*28e138c6SAndroid Build Coastguard Workerps).
485*28e138c6SAndroid Build Coastguard Worker\end_layout
486*28e138c6SAndroid Build Coastguard Worker
487*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
488*28e138c6SAndroid Build Coastguard WorkerQuality
489*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
490*28e138c6SAndroid Build Coastguard Workerstatus collapsed
491*28e138c6SAndroid Build Coastguard Worker
492*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
493*28e138c6SAndroid Build Coastguard Workerquality
494*28e138c6SAndroid Build Coastguard Worker\end_layout
495*28e138c6SAndroid Build Coastguard Worker
496*28e138c6SAndroid Build Coastguard Worker\end_inset
497*28e138c6SAndroid Build Coastguard Worker
498*28e138c6SAndroid Build Coastguard Worker (variable)
499*28e138c6SAndroid Build Coastguard Worker\end_layout
500*28e138c6SAndroid Build Coastguard Worker
501*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
502*28e138c6SAndroid Build Coastguard WorkerSpeex is a lossy codec, which means that it achieves compression at the
503*28e138c6SAndroid Build Coastguard Worker expense of fidelity of the input speech signal.
504*28e138c6SAndroid Build Coastguard Worker Unlike some other speech codecs, it is possible to control the trade-off
505*28e138c6SAndroid Build Coastguard Worker made between quality and bit-rate.
506*28e138c6SAndroid Build Coastguard Worker The Speex encoding process is controlled most of the time by a quality
507*28e138c6SAndroid Build Coastguard Worker parameter that ranges from 0 to 10.
508*28e138c6SAndroid Build Coastguard Worker In constant bit-rate
509*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
510*28e138c6SAndroid Build Coastguard Workerstatus collapsed
511*28e138c6SAndroid Build Coastguard Worker
512*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
513*28e138c6SAndroid Build Coastguard Workerconstant bit-rate
514*28e138c6SAndroid Build Coastguard Worker\end_layout
515*28e138c6SAndroid Build Coastguard Worker
516*28e138c6SAndroid Build Coastguard Worker\end_inset
517*28e138c6SAndroid Build Coastguard Worker
518*28e138c6SAndroid Build Coastguard Worker (CBR) operation, the quality parameter is an integer, while for variable
519*28e138c6SAndroid Build Coastguard Worker bit-rate (VBR), the parameter is a float.
520*28e138c6SAndroid Build Coastguard Worker
521*28e138c6SAndroid Build Coastguard Worker\end_layout
522*28e138c6SAndroid Build Coastguard Worker
523*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
524*28e138c6SAndroid Build Coastguard WorkerComplexity
525*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
526*28e138c6SAndroid Build Coastguard Workerstatus collapsed
527*28e138c6SAndroid Build Coastguard Worker
528*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
529*28e138c6SAndroid Build Coastguard Workercomplexity
530*28e138c6SAndroid Build Coastguard Worker\end_layout
531*28e138c6SAndroid Build Coastguard Worker
532*28e138c6SAndroid Build Coastguard Worker\end_inset
533*28e138c6SAndroid Build Coastguard Worker
534*28e138c6SAndroid Build Coastguard Worker (variable)
535*28e138c6SAndroid Build Coastguard Worker\end_layout
536*28e138c6SAndroid Build Coastguard Worker
537*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
538*28e138c6SAndroid Build Coastguard WorkerWith Speex, it is possible to vary the complexity allowed for the encoder.
539*28e138c6SAndroid Build Coastguard Worker This is done by controlling how the search is performed with an integer
540*28e138c6SAndroid Build Coastguard Worker ranging from 1 to 10 in a way that's similar to the -1 to -9 options to
541*28e138c6SAndroid Build Coastguard Worker
542*28e138c6SAndroid Build Coastguard Worker\emph on
543*28e138c6SAndroid Build Coastguard Workergzip
544*28e138c6SAndroid Build Coastguard Worker\emph default
545*28e138c6SAndroid Build Coastguard Worker and
546*28e138c6SAndroid Build Coastguard Worker\emph on
547*28e138c6SAndroid Build Coastguard Workerbzip2
548*28e138c6SAndroid Build Coastguard Worker\emph default
549*28e138c6SAndroid Build Coastguard Worker compression utilities.
550*28e138c6SAndroid Build Coastguard Worker For normal use, the noise level at complexity 1 is between 1 and 2 dB higher
551*28e138c6SAndroid Build Coastguard Worker than at complexity 10, but the CPU requirements for complexity 10 is about
552*28e138c6SAndroid Build Coastguard Worker 5 times higher than for complexity 1.
553*28e138c6SAndroid Build Coastguard Worker In practice, the best trade-off is between complexity 2 and 4, though higher
554*28e138c6SAndroid Build Coastguard Worker settings are often useful when encoding non-speech sounds like DTMF
555*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
556*28e138c6SAndroid Build Coastguard Workerstatus collapsed
557*28e138c6SAndroid Build Coastguard Worker
558*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
559*28e138c6SAndroid Build Coastguard WorkerDTMF
560*28e138c6SAndroid Build Coastguard Worker\end_layout
561*28e138c6SAndroid Build Coastguard Worker
562*28e138c6SAndroid Build Coastguard Worker\end_inset
563*28e138c6SAndroid Build Coastguard Worker
564*28e138c6SAndroid Build Coastguard Worker tones.
565*28e138c6SAndroid Build Coastguard Worker\end_layout
566*28e138c6SAndroid Build Coastguard Worker
567*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
568*28e138c6SAndroid Build Coastguard WorkerVariable Bit-Rate
569*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
570*28e138c6SAndroid Build Coastguard Workerstatus collapsed
571*28e138c6SAndroid Build Coastguard Worker
572*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
573*28e138c6SAndroid Build Coastguard Workervariable bit-rate
574*28e138c6SAndroid Build Coastguard Worker\end_layout
575*28e138c6SAndroid Build Coastguard Worker
576*28e138c6SAndroid Build Coastguard Worker\end_inset
577*28e138c6SAndroid Build Coastguard Worker
578*28e138c6SAndroid Build Coastguard Worker (VBR)
579*28e138c6SAndroid Build Coastguard Worker\end_layout
580*28e138c6SAndroid Build Coastguard Worker
581*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
582*28e138c6SAndroid Build Coastguard WorkerVariable bit-rate (VBR) allows a codec to change its bit-rate dynamically
583*28e138c6SAndroid Build Coastguard Worker to adapt to the
584*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
585*28e138c6SAndroid Build Coastguard Worker\end_inset
586*28e138c6SAndroid Build Coastguard Worker
587*28e138c6SAndroid Build Coastguard Workerdifficulty
588*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
589*28e138c6SAndroid Build Coastguard Worker\end_inset
590*28e138c6SAndroid Build Coastguard Worker
591*28e138c6SAndroid Build Coastguard Worker of the audio being encoded.
592*28e138c6SAndroid Build Coastguard Worker In the example of Speex, sounds like vowels and high-energy transients
593*28e138c6SAndroid Build Coastguard Worker require a higher bit-rate to achieve good quality, while fricatives (e.g.
594*28e138c6SAndroid Build Coastguard Worker s,f sounds) can be coded adequately with less bits.
595*28e138c6SAndroid Build Coastguard Worker For this reason, VBR can achieve lower bit-rate for the same quality, or
596*28e138c6SAndroid Build Coastguard Worker a better quality for a certain bit-rate.
597*28e138c6SAndroid Build Coastguard Worker Despite its advantages, VBR has two main drawbacks: first, by only specifying
598*28e138c6SAndroid Build Coastguard Worker quality, there's no guaranty about the final average bit-rate.
599*28e138c6SAndroid Build Coastguard Worker Second, for some real-time applications like voice over IP (VoIP), what
600*28e138c6SAndroid Build Coastguard Worker counts is the maximum bit-rate, which must be low enough for the communication
601*28e138c6SAndroid Build Coastguard Worker channel.
602*28e138c6SAndroid Build Coastguard Worker\end_layout
603*28e138c6SAndroid Build Coastguard Worker
604*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
605*28e138c6SAndroid Build Coastguard WorkerAverage Bit-Rate
606*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
607*28e138c6SAndroid Build Coastguard Workerstatus collapsed
608*28e138c6SAndroid Build Coastguard Worker
609*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
610*28e138c6SAndroid Build Coastguard Workeraverage bit-rate
611*28e138c6SAndroid Build Coastguard Worker\end_layout
612*28e138c6SAndroid Build Coastguard Worker
613*28e138c6SAndroid Build Coastguard Worker\end_inset
614*28e138c6SAndroid Build Coastguard Worker
615*28e138c6SAndroid Build Coastguard Worker (ABR)
616*28e138c6SAndroid Build Coastguard Worker\end_layout
617*28e138c6SAndroid Build Coastguard Worker
618*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
619*28e138c6SAndroid Build Coastguard WorkerAverage bit-rate solves one of the problems of VBR, as it dynamically adjusts
620*28e138c6SAndroid Build Coastguard Worker VBR quality in order to meet a specific target bit-rate.
621*28e138c6SAndroid Build Coastguard Worker Because the quality/bit-rate is adjusted in real-time (open-loop), the
622*28e138c6SAndroid Build Coastguard Worker global quality will be slightly lower than that obtained by encoding in
623*28e138c6SAndroid Build Coastguard Worker VBR with exactly the right quality setting to meet the target average bit-rate.
624*28e138c6SAndroid Build Coastguard Worker\end_layout
625*28e138c6SAndroid Build Coastguard Worker
626*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
627*28e138c6SAndroid Build Coastguard WorkerVoice Activity Detection
628*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
629*28e138c6SAndroid Build Coastguard Workerstatus collapsed
630*28e138c6SAndroid Build Coastguard Worker
631*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
632*28e138c6SAndroid Build Coastguard Workervoice activity detection
633*28e138c6SAndroid Build Coastguard Worker\end_layout
634*28e138c6SAndroid Build Coastguard Worker
635*28e138c6SAndroid Build Coastguard Worker\end_inset
636*28e138c6SAndroid Build Coastguard Worker
637*28e138c6SAndroid Build Coastguard Worker (VAD)
638*28e138c6SAndroid Build Coastguard Worker\end_layout
639*28e138c6SAndroid Build Coastguard Worker
640*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
641*28e138c6SAndroid Build Coastguard WorkerWhen enabled, voice activity detection detects whether the audio being encoded
642*28e138c6SAndroid Build Coastguard Worker is speech or silence/background noise.
643*28e138c6SAndroid Build Coastguard Worker VAD is always implicitly activated when encoding in VBR, so the option
644*28e138c6SAndroid Build Coastguard Worker is only useful in non-VBR operation.
645*28e138c6SAndroid Build Coastguard Worker In this case, Speex detects non-speech periods and encode them with just
646*28e138c6SAndroid Build Coastguard Worker enough bits to reproduce the background noise.
647*28e138c6SAndroid Build Coastguard Worker This is called
648*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
649*28e138c6SAndroid Build Coastguard Worker\end_inset
650*28e138c6SAndroid Build Coastguard Worker
651*28e138c6SAndroid Build Coastguard Workercomfort noise generation
652*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
653*28e138c6SAndroid Build Coastguard Worker\end_inset
654*28e138c6SAndroid Build Coastguard Worker
655*28e138c6SAndroid Build Coastguard Worker (CNG).
656*28e138c6SAndroid Build Coastguard Worker\end_layout
657*28e138c6SAndroid Build Coastguard Worker
658*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
659*28e138c6SAndroid Build Coastguard WorkerDiscontinuous Transmission
660*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
661*28e138c6SAndroid Build Coastguard Workerstatus collapsed
662*28e138c6SAndroid Build Coastguard Worker
663*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
664*28e138c6SAndroid Build Coastguard Workerdiscontinuous transmission
665*28e138c6SAndroid Build Coastguard Worker\end_layout
666*28e138c6SAndroid Build Coastguard Worker
667*28e138c6SAndroid Build Coastguard Worker\end_inset
668*28e138c6SAndroid Build Coastguard Worker
669*28e138c6SAndroid Build Coastguard Worker (DTX)
670*28e138c6SAndroid Build Coastguard Worker\end_layout
671*28e138c6SAndroid Build Coastguard Worker
672*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
673*28e138c6SAndroid Build Coastguard WorkerDiscontinuous transmission is an addition to VAD/VBR operation, that allows
674*28e138c6SAndroid Build Coastguard Worker to stop transmitting completely when the background noise is stationary.
675*28e138c6SAndroid Build Coastguard Worker In file-based operation, since we cannot just stop writing to the file,
676*28e138c6SAndroid Build Coastguard Worker only 5 bits are used for such frames (corresponding to 250 bps).
677*28e138c6SAndroid Build Coastguard Worker\end_layout
678*28e138c6SAndroid Build Coastguard Worker
679*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
680*28e138c6SAndroid Build Coastguard WorkerPerceptual enhancement
681*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
682*28e138c6SAndroid Build Coastguard Workerstatus collapsed
683*28e138c6SAndroid Build Coastguard Worker
684*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
685*28e138c6SAndroid Build Coastguard Workerperceptual enhancement
686*28e138c6SAndroid Build Coastguard Worker\end_layout
687*28e138c6SAndroid Build Coastguard Worker
688*28e138c6SAndroid Build Coastguard Worker\end_inset
689*28e138c6SAndroid Build Coastguard Worker
690*28e138c6SAndroid Build Coastguard Worker
691*28e138c6SAndroid Build Coastguard Worker\end_layout
692*28e138c6SAndroid Build Coastguard Worker
693*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
694*28e138c6SAndroid Build Coastguard WorkerPerceptual enhancement is a part of the decoder which, when turned on, attempts
695*28e138c6SAndroid Build Coastguard Worker to reduce the perception of the noise/distortion produced by the encoding/decod
696*28e138c6SAndroid Build Coastguard Workering process.
697*28e138c6SAndroid Build Coastguard Worker In most cases, perceptual enhancement brings the sound further from the
698*28e138c6SAndroid Build Coastguard Worker original
699*28e138c6SAndroid Build Coastguard Worker\emph on
700*28e138c6SAndroid Build Coastguard Workerobjectively
701*28e138c6SAndroid Build Coastguard Worker\emph default
702*28e138c6SAndroid Build Coastguard Worker (e.g.
703*28e138c6SAndroid Build Coastguard Worker considering only SNR), but in the end it still
704*28e138c6SAndroid Build Coastguard Worker\emph on
705*28e138c6SAndroid Build Coastguard Workersounds
706*28e138c6SAndroid Build Coastguard Worker\emph default
707*28e138c6SAndroid Build Coastguard Worker better (subjective improvement).
708*28e138c6SAndroid Build Coastguard Worker\end_layout
709*28e138c6SAndroid Build Coastguard Worker
710*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
711*28e138c6SAndroid Build Coastguard WorkerLatency and algorithmic delay
712*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
713*28e138c6SAndroid Build Coastguard Workerstatus collapsed
714*28e138c6SAndroid Build Coastguard Worker
715*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
716*28e138c6SAndroid Build Coastguard Workeralgorithmic delay
717*28e138c6SAndroid Build Coastguard Worker\end_layout
718*28e138c6SAndroid Build Coastguard Worker
719*28e138c6SAndroid Build Coastguard Worker\end_inset
720*28e138c6SAndroid Build Coastguard Worker
721*28e138c6SAndroid Build Coastguard Worker
722*28e138c6SAndroid Build Coastguard Worker\end_layout
723*28e138c6SAndroid Build Coastguard Worker
724*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
725*28e138c6SAndroid Build Coastguard WorkerEvery speech codec introduces a delay in the transmission.
726*28e138c6SAndroid Build Coastguard Worker For Speex, this delay is equal to the frame size, plus some amount of
727*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
728*28e138c6SAndroid Build Coastguard Worker\end_inset
729*28e138c6SAndroid Build Coastguard Worker
730*28e138c6SAndroid Build Coastguard Workerlook-ahead
731*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
732*28e138c6SAndroid Build Coastguard Worker\end_inset
733*28e138c6SAndroid Build Coastguard Worker
734*28e138c6SAndroid Build Coastguard Worker required to process each frame.
735*28e138c6SAndroid Build Coastguard Worker In narrowband operation (8 kHz), the look-ahead is 10 ms, in wideband operation
736*28e138c6SAndroid Build Coastguard Worker (16 kHz), the look-ahead is 13.9 ms and in ultra-wideband operation (32
737*28e138c6SAndroid Build Coastguard Worker kHz) look-ahead is 15.9 ms, resulting in the algorithic delays of 30 ms,
738*28e138c6SAndroid Build Coastguard Worker 33.9 ms and 35.9 ms accordingly.
739*28e138c6SAndroid Build Coastguard Worker These values don't account for the CPU time it takes to encode or decode
740*28e138c6SAndroid Build Coastguard Worker the frames.
741*28e138c6SAndroid Build Coastguard Worker\end_layout
742*28e138c6SAndroid Build Coastguard Worker
743*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
744*28e138c6SAndroid Build Coastguard WorkerCodec
745*28e138c6SAndroid Build Coastguard Worker\end_layout
746*28e138c6SAndroid Build Coastguard Worker
747*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
748*28e138c6SAndroid Build Coastguard WorkerThe main characteristics of Speex can be summarized as follows:
749*28e138c6SAndroid Build Coastguard Worker\end_layout
750*28e138c6SAndroid Build Coastguard Worker
751*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
752*28e138c6SAndroid Build Coastguard WorkerFree software/open-source
753*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
754*28e138c6SAndroid Build Coastguard Workerstatus collapsed
755*28e138c6SAndroid Build Coastguard Worker
756*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
757*28e138c6SAndroid Build Coastguard Workeropen-source
758*28e138c6SAndroid Build Coastguard Worker\end_layout
759*28e138c6SAndroid Build Coastguard Worker
760*28e138c6SAndroid Build Coastguard Worker\end_inset
761*28e138c6SAndroid Build Coastguard Worker
762*28e138c6SAndroid Build Coastguard Worker, patent
763*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
764*28e138c6SAndroid Build Coastguard Workerstatus collapsed
765*28e138c6SAndroid Build Coastguard Worker
766*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
767*28e138c6SAndroid Build Coastguard Workerpatent
768*28e138c6SAndroid Build Coastguard Worker\end_layout
769*28e138c6SAndroid Build Coastguard Worker
770*28e138c6SAndroid Build Coastguard Worker\end_inset
771*28e138c6SAndroid Build Coastguard Worker
772*28e138c6SAndroid Build Coastguard Worker and royalty-free
773*28e138c6SAndroid Build Coastguard Worker\end_layout
774*28e138c6SAndroid Build Coastguard Worker
775*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
776*28e138c6SAndroid Build Coastguard WorkerIntegration of narrowband
777*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
778*28e138c6SAndroid Build Coastguard Workerstatus collapsed
779*28e138c6SAndroid Build Coastguard Worker
780*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
781*28e138c6SAndroid Build Coastguard Workernarrowband
782*28e138c6SAndroid Build Coastguard Worker\end_layout
783*28e138c6SAndroid Build Coastguard Worker
784*28e138c6SAndroid Build Coastguard Worker\end_inset
785*28e138c6SAndroid Build Coastguard Worker
786*28e138c6SAndroid Build Coastguard Worker and wideband
787*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
788*28e138c6SAndroid Build Coastguard Workerstatus collapsed
789*28e138c6SAndroid Build Coastguard Worker
790*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
791*28e138c6SAndroid Build Coastguard Workerwideband
792*28e138c6SAndroid Build Coastguard Worker\end_layout
793*28e138c6SAndroid Build Coastguard Worker
794*28e138c6SAndroid Build Coastguard Worker\end_inset
795*28e138c6SAndroid Build Coastguard Worker
796*28e138c6SAndroid Build Coastguard Worker using an embedded bit-stream
797*28e138c6SAndroid Build Coastguard Worker\end_layout
798*28e138c6SAndroid Build Coastguard Worker
799*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
800*28e138c6SAndroid Build Coastguard WorkerWide range of bit-rates available (from 2.15 kbps to 44 kbps)
801*28e138c6SAndroid Build Coastguard Worker\end_layout
802*28e138c6SAndroid Build Coastguard Worker
803*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
804*28e138c6SAndroid Build Coastguard WorkerDynamic bit-rate switching (AMR) and Variable Bit-Rate
805*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
806*28e138c6SAndroid Build Coastguard Workerstatus collapsed
807*28e138c6SAndroid Build Coastguard Worker
808*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
809*28e138c6SAndroid Build Coastguard Workervariable bit-rate
810*28e138c6SAndroid Build Coastguard Worker\end_layout
811*28e138c6SAndroid Build Coastguard Worker
812*28e138c6SAndroid Build Coastguard Worker\end_inset
813*28e138c6SAndroid Build Coastguard Worker
814*28e138c6SAndroid Build Coastguard Worker (VBR) operation
815*28e138c6SAndroid Build Coastguard Worker\end_layout
816*28e138c6SAndroid Build Coastguard Worker
817*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
818*28e138c6SAndroid Build Coastguard WorkerVoice Activity Detection
819*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
820*28e138c6SAndroid Build Coastguard Workerstatus collapsed
821*28e138c6SAndroid Build Coastguard Worker
822*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
823*28e138c6SAndroid Build Coastguard Workervoice activity detection
824*28e138c6SAndroid Build Coastguard Worker\end_layout
825*28e138c6SAndroid Build Coastguard Worker
826*28e138c6SAndroid Build Coastguard Worker\end_inset
827*28e138c6SAndroid Build Coastguard Worker
828*28e138c6SAndroid Build Coastguard Worker (VAD, integrated with VBR) and discontinuous transmission (DTX)
829*28e138c6SAndroid Build Coastguard Worker\end_layout
830*28e138c6SAndroid Build Coastguard Worker
831*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
832*28e138c6SAndroid Build Coastguard WorkerVariable complexity
833*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
834*28e138c6SAndroid Build Coastguard Workerstatus collapsed
835*28e138c6SAndroid Build Coastguard Worker
836*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
837*28e138c6SAndroid Build Coastguard Workercomplexity
838*28e138c6SAndroid Build Coastguard Worker\end_layout
839*28e138c6SAndroid Build Coastguard Worker
840*28e138c6SAndroid Build Coastguard Worker\end_inset
841*28e138c6SAndroid Build Coastguard Worker
842*28e138c6SAndroid Build Coastguard Worker
843*28e138c6SAndroid Build Coastguard Worker\end_layout
844*28e138c6SAndroid Build Coastguard Worker
845*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
846*28e138c6SAndroid Build Coastguard WorkerEmbedded wideband structure (scalable sampling rate)
847*28e138c6SAndroid Build Coastguard Worker\end_layout
848*28e138c6SAndroid Build Coastguard Worker
849*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
850*28e138c6SAndroid Build Coastguard WorkerUltra-wideband sampling rate at 32 kHz
851*28e138c6SAndroid Build Coastguard Worker\end_layout
852*28e138c6SAndroid Build Coastguard Worker
853*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
854*28e138c6SAndroid Build Coastguard WorkerIntensity stereo encoding option
855*28e138c6SAndroid Build Coastguard Worker\end_layout
856*28e138c6SAndroid Build Coastguard Worker
857*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
858*28e138c6SAndroid Build Coastguard WorkerFixed-point implementation
859*28e138c6SAndroid Build Coastguard Worker\end_layout
860*28e138c6SAndroid Build Coastguard Worker
861*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
862*28e138c6SAndroid Build Coastguard WorkerPreprocessor
863*28e138c6SAndroid Build Coastguard Worker\end_layout
864*28e138c6SAndroid Build Coastguard Worker
865*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
866*28e138c6SAndroid Build Coastguard WorkerThis part refers to the preprocessor module introduced in the 1.1.x branch.
867*28e138c6SAndroid Build Coastguard Worker The preprocessor is designed to be used on the audio
868*28e138c6SAndroid Build Coastguard Worker\emph on
869*28e138c6SAndroid Build Coastguard Workerbefore
870*28e138c6SAndroid Build Coastguard Worker\emph default
871*28e138c6SAndroid Build Coastguard Worker running the encoder.
872*28e138c6SAndroid Build Coastguard Worker The preprocessor provides three main functionalities:
873*28e138c6SAndroid Build Coastguard Worker\end_layout
874*28e138c6SAndroid Build Coastguard Worker
875*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
876*28e138c6SAndroid Build Coastguard Workernoise suppression
877*28e138c6SAndroid Build Coastguard Worker\end_layout
878*28e138c6SAndroid Build Coastguard Worker
879*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
880*28e138c6SAndroid Build Coastguard Workerautomatic gain control (AGC)
881*28e138c6SAndroid Build Coastguard Worker\end_layout
882*28e138c6SAndroid Build Coastguard Worker
883*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
884*28e138c6SAndroid Build Coastguard Workervoice activity detection (VAD)
885*28e138c6SAndroid Build Coastguard Worker\end_layout
886*28e138c6SAndroid Build Coastguard Worker
887*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
888*28e138c6SAndroid Build Coastguard WorkerThe denoiser can be used to reduce the amount of background noise present
889*28e138c6SAndroid Build Coastguard Worker in the input signal.
890*28e138c6SAndroid Build Coastguard Worker This provides higher quality speech whether or not the denoised signal
891*28e138c6SAndroid Build Coastguard Worker is encoded with Speex (or at all).
892*28e138c6SAndroid Build Coastguard Worker However, when using the denoised signal with the codec, there is an additional
893*28e138c6SAndroid Build Coastguard Worker benefit.
894*28e138c6SAndroid Build Coastguard Worker Speech codecs in general (Speex included) tend to perform poorly on noisy
895*28e138c6SAndroid Build Coastguard Worker input, which tends to amplify the noise.
896*28e138c6SAndroid Build Coastguard Worker The denoiser greatly reduces this effect.
897*28e138c6SAndroid Build Coastguard Worker\end_layout
898*28e138c6SAndroid Build Coastguard Worker
899*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
900*28e138c6SAndroid Build Coastguard WorkerAutomatic gain control (AGC) is a feature that deals with the fact that
901*28e138c6SAndroid Build Coastguard Worker the recording volume may vary by a large amount between different setups.
902*28e138c6SAndroid Build Coastguard Worker The AGC provides a way to adjust a signal to a reference volume.
903*28e138c6SAndroid Build Coastguard Worker This is useful for voice over IP because it removes the need for manual
904*28e138c6SAndroid Build Coastguard Worker adjustment of the microphone gain.
905*28e138c6SAndroid Build Coastguard Worker A secondary advantage is that by setting the microphone gain to a conservative
906*28e138c6SAndroid Build Coastguard Worker (low) level, it is easier to avoid clipping.
907*28e138c6SAndroid Build Coastguard Worker\end_layout
908*28e138c6SAndroid Build Coastguard Worker
909*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
910*28e138c6SAndroid Build Coastguard WorkerThe voice activity detector (VAD) provided by the preprocessor is more advanced
911*28e138c6SAndroid Build Coastguard Worker than the one directly provided in the codec.
912*28e138c6SAndroid Build Coastguard Worker
913*28e138c6SAndroid Build Coastguard Worker\end_layout
914*28e138c6SAndroid Build Coastguard Worker
915*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
916*28e138c6SAndroid Build Coastguard WorkerAdaptive Jitter Buffer
917*28e138c6SAndroid Build Coastguard Worker\end_layout
918*28e138c6SAndroid Build Coastguard Worker
919*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
920*28e138c6SAndroid Build Coastguard WorkerWhen transmitting voice (or any content for that matter) over UDP or RTP,
921*28e138c6SAndroid Build Coastguard Worker packet may be lost, arrive with different delay, or even out of order.
922*28e138c6SAndroid Build Coastguard Worker The purpose of a jitter buffer is to reorder packets and buffer them long
923*28e138c6SAndroid Build Coastguard Worker enough (but no longer than necessary) so they can be sent to be decoded.
924*28e138c6SAndroid Build Coastguard Worker
925*28e138c6SAndroid Build Coastguard Worker\end_layout
926*28e138c6SAndroid Build Coastguard Worker
927*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
928*28e138c6SAndroid Build Coastguard WorkerAcoustic Echo Canceller
929*28e138c6SAndroid Build Coastguard Worker\end_layout
930*28e138c6SAndroid Build Coastguard Worker
931*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
932*28e138c6SAndroid Build Coastguard WorkerIn any hands-free communication system (Fig.
933*28e138c6SAndroid Build Coastguard Worker
934*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
935*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
936*28e138c6SAndroid Build Coastguard Workerreference "fig:Acoustic-echo-model"
937*28e138c6SAndroid Build Coastguard Worker
938*28e138c6SAndroid Build Coastguard Worker\end_inset
939*28e138c6SAndroid Build Coastguard Worker
940*28e138c6SAndroid Build Coastguard Worker), speech from the remote end is played in the local loudspeaker, propagates
941*28e138c6SAndroid Build Coastguard Worker in the room and is captured by the microphone.
942*28e138c6SAndroid Build Coastguard Worker If the audio captured from the microphone is sent directly to the remote
943*28e138c6SAndroid Build Coastguard Worker end, then the remote user hears an echo of his voice.
944*28e138c6SAndroid Build Coastguard Worker An acoustic echo canceller is designed to remove the acoustic echo before
945*28e138c6SAndroid Build Coastguard Worker it is sent to the remote end.
946*28e138c6SAndroid Build Coastguard Worker It is important to understand that the echo canceller is meant to improve
947*28e138c6SAndroid Build Coastguard Worker the quality on the
948*28e138c6SAndroid Build Coastguard Worker\series bold
949*28e138c6SAndroid Build Coastguard Workerremote
950*28e138c6SAndroid Build Coastguard Worker\series default
951*28e138c6SAndroid Build Coastguard Worker end.
952*28e138c6SAndroid Build Coastguard Worker For those who care a lot about mouth-to-ear delays it should be noted that
953*28e138c6SAndroid Build Coastguard Worker unlike Speex codec, resampler and preprocessor, this Acoustic Echo Canceller
954*28e138c6SAndroid Build Coastguard Worker does not introduce any latency.
955*28e138c6SAndroid Build Coastguard Worker\end_layout
956*28e138c6SAndroid Build Coastguard Worker
957*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
958*28e138c6SAndroid Build Coastguard Worker\begin_inset Float figure
959*28e138c6SAndroid Build Coastguard Workerwide false
960*28e138c6SAndroid Build Coastguard Workersideways false
961*28e138c6SAndroid Build Coastguard Workerstatus open
962*28e138c6SAndroid Build Coastguard Worker
963*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
964*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
965*28e138c6SAndroid Build Coastguard Workerstatus collapsed
966*28e138c6SAndroid Build Coastguard Worker
967*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
968*28e138c6SAndroid Build Coastguard Worker
969*28e138c6SAndroid Build Coastguard Worker
970*28e138c6SAndroid Build Coastguard Worker\backslash
971*28e138c6SAndroid Build Coastguard Workerbegin{center}
972*28e138c6SAndroid Build Coastguard Worker\end_layout
973*28e138c6SAndroid Build Coastguard Worker
974*28e138c6SAndroid Build Coastguard Worker\end_inset
975*28e138c6SAndroid Build Coastguard Worker
976*28e138c6SAndroid Build Coastguard Worker
977*28e138c6SAndroid Build Coastguard Worker\begin_inset Graphics
978*28e138c6SAndroid Build Coastguard Worker	filename echo_path.eps
979*28e138c6SAndroid Build Coastguard Worker	width 10cm
980*28e138c6SAndroid Build Coastguard Worker
981*28e138c6SAndroid Build Coastguard Worker\end_inset
982*28e138c6SAndroid Build Coastguard Worker
983*28e138c6SAndroid Build Coastguard Worker
984*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
985*28e138c6SAndroid Build Coastguard Workerstatus collapsed
986*28e138c6SAndroid Build Coastguard Worker
987*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
988*28e138c6SAndroid Build Coastguard Worker
989*28e138c6SAndroid Build Coastguard Worker
990*28e138c6SAndroid Build Coastguard Worker\backslash
991*28e138c6SAndroid Build Coastguard Workerend{center}
992*28e138c6SAndroid Build Coastguard Worker\end_layout
993*28e138c6SAndroid Build Coastguard Worker
994*28e138c6SAndroid Build Coastguard Worker\end_inset
995*28e138c6SAndroid Build Coastguard Worker
996*28e138c6SAndroid Build Coastguard Worker
997*28e138c6SAndroid Build Coastguard Worker\end_layout
998*28e138c6SAndroid Build Coastguard Worker
999*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1000*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
1001*28e138c6SAndroid Build Coastguard Worker
1002*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1003*28e138c6SAndroid Build Coastguard WorkerAcoustic echo model
1004*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
1005*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
1006*28e138c6SAndroid Build Coastguard Workername "fig:Acoustic-echo-model"
1007*28e138c6SAndroid Build Coastguard Worker
1008*28e138c6SAndroid Build Coastguard Worker\end_inset
1009*28e138c6SAndroid Build Coastguard Worker
1010*28e138c6SAndroid Build Coastguard Worker
1011*28e138c6SAndroid Build Coastguard Worker\end_layout
1012*28e138c6SAndroid Build Coastguard Worker
1013*28e138c6SAndroid Build Coastguard Worker\end_inset
1014*28e138c6SAndroid Build Coastguard Worker
1015*28e138c6SAndroid Build Coastguard Worker
1016*28e138c6SAndroid Build Coastguard Worker\end_layout
1017*28e138c6SAndroid Build Coastguard Worker
1018*28e138c6SAndroid Build Coastguard Worker\end_inset
1019*28e138c6SAndroid Build Coastguard Worker
1020*28e138c6SAndroid Build Coastguard Worker
1021*28e138c6SAndroid Build Coastguard Worker\end_layout
1022*28e138c6SAndroid Build Coastguard Worker
1023*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1024*28e138c6SAndroid Build Coastguard WorkerResampler
1025*28e138c6SAndroid Build Coastguard Worker\end_layout
1026*28e138c6SAndroid Build Coastguard Worker
1027*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1028*28e138c6SAndroid Build Coastguard WorkerIn some cases, it may be useful to convert audio from one sampling rate
1029*28e138c6SAndroid Build Coastguard Worker to another.
1030*28e138c6SAndroid Build Coastguard Worker There are many reasons for that.
1031*28e138c6SAndroid Build Coastguard Worker It can be for mixing streams that have different sampling rates, for supporting
1032*28e138c6SAndroid Build Coastguard Worker sampling rates that the soundcard doesn't support, for transcoding, etc.
1033*28e138c6SAndroid Build Coastguard Worker That's why there is now a resampler that is part of the Speex project.
1034*28e138c6SAndroid Build Coastguard Worker This resampler can be used to convert between any two arbitrary rates (the
1035*28e138c6SAndroid Build Coastguard Worker ratio must only be a rational number) and there is control over the quality/com
1036*28e138c6SAndroid Build Coastguard Workerplexity tradeoff.
1037*28e138c6SAndroid Build Coastguard Worker Keep in mind, that resampler introduce some delay in audio stream, which
1038*28e138c6SAndroid Build Coastguard Worker size depends on resampler quality setting.
1039*28e138c6SAndroid Build Coastguard Worker Refer to resampler API documentation to know how to get exact delay values.
1040*28e138c6SAndroid Build Coastguard Worker\end_layout
1041*28e138c6SAndroid Build Coastguard Worker
1042*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1043*28e138c6SAndroid Build Coastguard WorkerIntegration
1044*28e138c6SAndroid Build Coastguard Worker\end_layout
1045*28e138c6SAndroid Build Coastguard Worker
1046*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1047*28e138c6SAndroid Build Coastguard WorkerKnowing
1048*28e138c6SAndroid Build Coastguard Worker\emph on
1049*28e138c6SAndroid Build Coastguard Workerhow
1050*28e138c6SAndroid Build Coastguard Worker\emph default
1051*28e138c6SAndroid Build Coastguard Worker to use each of the components is not that useful unless we know
1052*28e138c6SAndroid Build Coastguard Worker\emph on
1053*28e138c6SAndroid Build Coastguard Workerwhere
1054*28e138c6SAndroid Build Coastguard Worker\emph default
1055*28e138c6SAndroid Build Coastguard Worker to use them.
1056*28e138c6SAndroid Build Coastguard Worker Figure
1057*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
1058*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
1059*28e138c6SAndroid Build Coastguard Workerreference "fig:Integration-VoIP"
1060*28e138c6SAndroid Build Coastguard Worker
1061*28e138c6SAndroid Build Coastguard Worker\end_inset
1062*28e138c6SAndroid Build Coastguard Worker
1063*28e138c6SAndroid Build Coastguard Worker shows where each of the components would be used in a typical VoIP client.
1064*28e138c6SAndroid Build Coastguard Worker Components in dotted lines are optional, though they may be very useful
1065*28e138c6SAndroid Build Coastguard Worker in some circumstances.
1066*28e138c6SAndroid Build Coastguard Worker There are several important things to note from there.
1067*28e138c6SAndroid Build Coastguard Worker The AEC must be placed as close as possible to the playback and capture.
1068*28e138c6SAndroid Build Coastguard Worker Only the resampling may be closer.
1069*28e138c6SAndroid Build Coastguard Worker Also, it is very important to use the same clock for both mic capture and
1070*28e138c6SAndroid Build Coastguard Worker speaker/headphones playback.
1071*28e138c6SAndroid Build Coastguard Worker\end_layout
1072*28e138c6SAndroid Build Coastguard Worker
1073*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1074*28e138c6SAndroid Build Coastguard Worker\begin_inset Float figure
1075*28e138c6SAndroid Build Coastguard Workerwide false
1076*28e138c6SAndroid Build Coastguard Workersideways false
1077*28e138c6SAndroid Build Coastguard Workerstatus open
1078*28e138c6SAndroid Build Coastguard Worker
1079*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1080*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
1081*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1082*28e138c6SAndroid Build Coastguard Worker
1083*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1084*28e138c6SAndroid Build Coastguard Worker
1085*28e138c6SAndroid Build Coastguard Worker
1086*28e138c6SAndroid Build Coastguard Worker\backslash
1087*28e138c6SAndroid Build Coastguard Workerbegin{center}
1088*28e138c6SAndroid Build Coastguard Worker\end_layout
1089*28e138c6SAndroid Build Coastguard Worker
1090*28e138c6SAndroid Build Coastguard Worker\end_inset
1091*28e138c6SAndroid Build Coastguard Worker
1092*28e138c6SAndroid Build Coastguard Worker
1093*28e138c6SAndroid Build Coastguard Worker\begin_inset Graphics
1094*28e138c6SAndroid Build Coastguard Worker	filename components.eps
1095*28e138c6SAndroid Build Coastguard Worker	width 80text%
1096*28e138c6SAndroid Build Coastguard Worker
1097*28e138c6SAndroid Build Coastguard Worker\end_inset
1098*28e138c6SAndroid Build Coastguard Worker
1099*28e138c6SAndroid Build Coastguard Worker
1100*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
1101*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1102*28e138c6SAndroid Build Coastguard Worker
1103*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1104*28e138c6SAndroid Build Coastguard Worker
1105*28e138c6SAndroid Build Coastguard Worker
1106*28e138c6SAndroid Build Coastguard Worker\backslash
1107*28e138c6SAndroid Build Coastguard Workerend{center}
1108*28e138c6SAndroid Build Coastguard Worker\end_layout
1109*28e138c6SAndroid Build Coastguard Worker
1110*28e138c6SAndroid Build Coastguard Worker\end_inset
1111*28e138c6SAndroid Build Coastguard Worker
1112*28e138c6SAndroid Build Coastguard Worker
1113*28e138c6SAndroid Build Coastguard Worker\end_layout
1114*28e138c6SAndroid Build Coastguard Worker
1115*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1116*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
1117*28e138c6SAndroid Build Coastguard Worker
1118*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1119*28e138c6SAndroid Build Coastguard WorkerIntegration of all the components in a VoIP client.
1120*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
1121*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
1122*28e138c6SAndroid Build Coastguard Workername "fig:Integration-VoIP"
1123*28e138c6SAndroid Build Coastguard Worker
1124*28e138c6SAndroid Build Coastguard Worker\end_inset
1125*28e138c6SAndroid Build Coastguard Worker
1126*28e138c6SAndroid Build Coastguard Worker
1127*28e138c6SAndroid Build Coastguard Worker\end_layout
1128*28e138c6SAndroid Build Coastguard Worker
1129*28e138c6SAndroid Build Coastguard Worker\end_inset
1130*28e138c6SAndroid Build Coastguard Worker
1131*28e138c6SAndroid Build Coastguard Worker
1132*28e138c6SAndroid Build Coastguard Worker\end_layout
1133*28e138c6SAndroid Build Coastguard Worker
1134*28e138c6SAndroid Build Coastguard Worker\end_inset
1135*28e138c6SAndroid Build Coastguard Worker
1136*28e138c6SAndroid Build Coastguard Worker
1137*28e138c6SAndroid Build Coastguard Worker\end_layout
1138*28e138c6SAndroid Build Coastguard Worker
1139*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1140*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
1141*28e138c6SAndroid Build Coastguard Worker\end_inset
1142*28e138c6SAndroid Build Coastguard Worker
1143*28e138c6SAndroid Build Coastguard Worker
1144*28e138c6SAndroid Build Coastguard Worker\end_layout
1145*28e138c6SAndroid Build Coastguard Worker
1146*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
1147*28e138c6SAndroid Build Coastguard WorkerCompiling and Porting
1148*28e138c6SAndroid Build Coastguard Worker\end_layout
1149*28e138c6SAndroid Build Coastguard Worker
1150*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1151*28e138c6SAndroid Build Coastguard WorkerCompiling Speex under UNIX/Linux or any other platform supported by autoconf
1152*28e138c6SAndroid Build Coastguard Worker (e.g.
1153*28e138c6SAndroid Build Coastguard Worker Win32/cygwin) is as easy as typing:
1154*28e138c6SAndroid Build Coastguard Worker\end_layout
1155*28e138c6SAndroid Build Coastguard Worker
1156*28e138c6SAndroid Build Coastguard Worker\begin_layout LyX-Code
1157*28e138c6SAndroid Build Coastguard Worker% ./configure [options]
1158*28e138c6SAndroid Build Coastguard Worker\end_layout
1159*28e138c6SAndroid Build Coastguard Worker
1160*28e138c6SAndroid Build Coastguard Worker\begin_layout LyX-Code
1161*28e138c6SAndroid Build Coastguard Worker% make
1162*28e138c6SAndroid Build Coastguard Worker\end_layout
1163*28e138c6SAndroid Build Coastguard Worker
1164*28e138c6SAndroid Build Coastguard Worker\begin_layout LyX-Code
1165*28e138c6SAndroid Build Coastguard Worker% make install
1166*28e138c6SAndroid Build Coastguard Worker\end_layout
1167*28e138c6SAndroid Build Coastguard Worker
1168*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1169*28e138c6SAndroid Build Coastguard WorkerThe options supported by the Speex configure script are:
1170*28e138c6SAndroid Build Coastguard Worker\end_layout
1171*28e138c6SAndroid Build Coastguard Worker
1172*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1173*28e138c6SAndroid Build Coastguard Worker--prefix=<path> Specifies the base path for installing Speex (e.g.
1174*28e138c6SAndroid Build Coastguard Worker /usr)
1175*28e138c6SAndroid Build Coastguard Worker\end_layout
1176*28e138c6SAndroid Build Coastguard Worker
1177*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1178*28e138c6SAndroid Build Coastguard Worker--enable-shared/--disable-shared Whether to compile shared libraries
1179*28e138c6SAndroid Build Coastguard Worker\end_layout
1180*28e138c6SAndroid Build Coastguard Worker
1181*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1182*28e138c6SAndroid Build Coastguard Worker--enable-static/--disable-static Whether to compile static libraries
1183*28e138c6SAndroid Build Coastguard Worker\end_layout
1184*28e138c6SAndroid Build Coastguard Worker
1185*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1186*28e138c6SAndroid Build Coastguard Worker--disable-wideband Disable the wideband part of Speex (typically to save
1187*28e138c6SAndroid Build Coastguard Worker space)
1188*28e138c6SAndroid Build Coastguard Worker\end_layout
1189*28e138c6SAndroid Build Coastguard Worker
1190*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1191*28e138c6SAndroid Build Coastguard Worker--enable-valgrind Enable extra hits for valgrind for debugging purposes
1192*28e138c6SAndroid Build Coastguard Worker (do not use by default)
1193*28e138c6SAndroid Build Coastguard Worker\end_layout
1194*28e138c6SAndroid Build Coastguard Worker
1195*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1196*28e138c6SAndroid Build Coastguard Worker--enable-sse Enable use of SSE instructions (x86/float only)
1197*28e138c6SAndroid Build Coastguard Worker\end_layout
1198*28e138c6SAndroid Build Coastguard Worker
1199*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1200*28e138c6SAndroid Build Coastguard Worker--enable-fixed-point
1201*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
1202*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1203*28e138c6SAndroid Build Coastguard Worker
1204*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1205*28e138c6SAndroid Build Coastguard Workerfixed-point
1206*28e138c6SAndroid Build Coastguard Worker\end_layout
1207*28e138c6SAndroid Build Coastguard Worker
1208*28e138c6SAndroid Build Coastguard Worker\end_inset
1209*28e138c6SAndroid Build Coastguard Worker
1210*28e138c6SAndroid Build Coastguard Worker Compile Speex for a processor that does not have a floating point unit
1211*28e138c6SAndroid Build Coastguard Worker (FPU)
1212*28e138c6SAndroid Build Coastguard Worker\end_layout
1213*28e138c6SAndroid Build Coastguard Worker
1214*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1215*28e138c6SAndroid Build Coastguard Worker--enable-arm4-asm Enable assembly specific to the ARMv4 architecture (gcc
1216*28e138c6SAndroid Build Coastguard Worker only)
1217*28e138c6SAndroid Build Coastguard Worker\end_layout
1218*28e138c6SAndroid Build Coastguard Worker
1219*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1220*28e138c6SAndroid Build Coastguard Worker--enable-arm5e-asm Enable assembly specific to the ARMv5E architecture (gcc
1221*28e138c6SAndroid Build Coastguard Worker only)
1222*28e138c6SAndroid Build Coastguard Worker\end_layout
1223*28e138c6SAndroid Build Coastguard Worker
1224*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1225*28e138c6SAndroid Build Coastguard Worker--enable-fixed-point-debug Use only for debugging the fixed-point
1226*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
1227*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1228*28e138c6SAndroid Build Coastguard Worker
1229*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1230*28e138c6SAndroid Build Coastguard Workerfixed-point
1231*28e138c6SAndroid Build Coastguard Worker\end_layout
1232*28e138c6SAndroid Build Coastguard Worker
1233*28e138c6SAndroid Build Coastguard Worker\end_inset
1234*28e138c6SAndroid Build Coastguard Worker
1235*28e138c6SAndroid Build Coastguard Worker code (very slow)
1236*28e138c6SAndroid Build Coastguard Worker\end_layout
1237*28e138c6SAndroid Build Coastguard Worker
1238*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1239*28e138c6SAndroid Build Coastguard Worker--enable-ti-c55x Enable support for the TI C5x family
1240*28e138c6SAndroid Build Coastguard Worker\end_layout
1241*28e138c6SAndroid Build Coastguard Worker
1242*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1243*28e138c6SAndroid Build Coastguard Worker--enable-blackfin-asm Enable assembly specific to the Blackfin DSP architecture
1244*28e138c6SAndroid Build Coastguard Worker (gcc only)
1245*28e138c6SAndroid Build Coastguard Worker\end_layout
1246*28e138c6SAndroid Build Coastguard Worker
1247*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1248*28e138c6SAndroid Build Coastguard WorkerPlatforms
1249*28e138c6SAndroid Build Coastguard Worker\end_layout
1250*28e138c6SAndroid Build Coastguard Worker
1251*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1252*28e138c6SAndroid Build Coastguard WorkerSpeex is known to compile and work on a large number of architectures, both
1253*28e138c6SAndroid Build Coastguard Worker floating-point and fixed-point.
1254*28e138c6SAndroid Build Coastguard Worker In general, any architecture that can natively compute the multiplication
1255*28e138c6SAndroid Build Coastguard Worker of two signed 16-bit numbers (32-bit result) and runs at a sufficient clock
1256*28e138c6SAndroid Build Coastguard Worker rate (architecture-dependent) is capable of running Speex.
1257*28e138c6SAndroid Build Coastguard Worker Architectures on which Speex is
1258*28e138c6SAndroid Build Coastguard Worker\series bold
1259*28e138c6SAndroid Build Coastguard Workerknown
1260*28e138c6SAndroid Build Coastguard Worker\series default
1261*28e138c6SAndroid Build Coastguard Worker to work (it probably works on many others) are:
1262*28e138c6SAndroid Build Coastguard Worker\end_layout
1263*28e138c6SAndroid Build Coastguard Worker
1264*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1265*28e138c6SAndroid Build Coastguard Workerx86 & x86-64
1266*28e138c6SAndroid Build Coastguard Worker\end_layout
1267*28e138c6SAndroid Build Coastguard Worker
1268*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1269*28e138c6SAndroid Build Coastguard WorkerPower
1270*28e138c6SAndroid Build Coastguard Worker\end_layout
1271*28e138c6SAndroid Build Coastguard Worker
1272*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1273*28e138c6SAndroid Build Coastguard WorkerSPARC
1274*28e138c6SAndroid Build Coastguard Worker\end_layout
1275*28e138c6SAndroid Build Coastguard Worker
1276*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1277*28e138c6SAndroid Build Coastguard WorkerARM
1278*28e138c6SAndroid Build Coastguard Worker\end_layout
1279*28e138c6SAndroid Build Coastguard Worker
1280*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1281*28e138c6SAndroid Build Coastguard WorkerBlackfin
1282*28e138c6SAndroid Build Coastguard Worker\end_layout
1283*28e138c6SAndroid Build Coastguard Worker
1284*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1285*28e138c6SAndroid Build Coastguard WorkerColdfire (68k family)
1286*28e138c6SAndroid Build Coastguard Worker\end_layout
1287*28e138c6SAndroid Build Coastguard Worker
1288*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1289*28e138c6SAndroid Build Coastguard WorkerTI C54xx & C55xx
1290*28e138c6SAndroid Build Coastguard Worker\end_layout
1291*28e138c6SAndroid Build Coastguard Worker
1292*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1293*28e138c6SAndroid Build Coastguard WorkerTI C6xxx
1294*28e138c6SAndroid Build Coastguard Worker\end_layout
1295*28e138c6SAndroid Build Coastguard Worker
1296*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1297*28e138c6SAndroid Build Coastguard WorkerTriMedia (experimental)
1298*28e138c6SAndroid Build Coastguard Worker\end_layout
1299*28e138c6SAndroid Build Coastguard Worker
1300*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1301*28e138c6SAndroid Build Coastguard WorkerOperating systems on top of which Speex is known to work include (it probably
1302*28e138c6SAndroid Build Coastguard Worker works on many others):
1303*28e138c6SAndroid Build Coastguard Worker\end_layout
1304*28e138c6SAndroid Build Coastguard Worker
1305*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1306*28e138c6SAndroid Build Coastguard WorkerLinux
1307*28e138c6SAndroid Build Coastguard Worker\end_layout
1308*28e138c6SAndroid Build Coastguard Worker
1309*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1310*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\mu$
1311*28e138c6SAndroid Build Coastguard Worker\end_inset
1312*28e138c6SAndroid Build Coastguard Worker
1313*28e138c6SAndroid Build Coastguard WorkerClinux
1314*28e138c6SAndroid Build Coastguard Worker\end_layout
1315*28e138c6SAndroid Build Coastguard Worker
1316*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1317*28e138c6SAndroid Build Coastguard WorkerMacOS X
1318*28e138c6SAndroid Build Coastguard Worker\end_layout
1319*28e138c6SAndroid Build Coastguard Worker
1320*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1321*28e138c6SAndroid Build Coastguard WorkerBSD
1322*28e138c6SAndroid Build Coastguard Worker\end_layout
1323*28e138c6SAndroid Build Coastguard Worker
1324*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1325*28e138c6SAndroid Build Coastguard WorkerOther UNIX/POSIX variants
1326*28e138c6SAndroid Build Coastguard Worker\end_layout
1327*28e138c6SAndroid Build Coastguard Worker
1328*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1329*28e138c6SAndroid Build Coastguard WorkerSymbian
1330*28e138c6SAndroid Build Coastguard Worker\end_layout
1331*28e138c6SAndroid Build Coastguard Worker
1332*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1333*28e138c6SAndroid Build Coastguard WorkerThe source code directory include additional information for compiling on
1334*28e138c6SAndroid Build Coastguard Worker certain architectures or operating systems in README.xxx files.
1335*28e138c6SAndroid Build Coastguard Worker\end_layout
1336*28e138c6SAndroid Build Coastguard Worker
1337*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1338*28e138c6SAndroid Build Coastguard WorkerPorting and Optimising
1339*28e138c6SAndroid Build Coastguard Worker\end_layout
1340*28e138c6SAndroid Build Coastguard Worker
1341*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1342*28e138c6SAndroid Build Coastguard WorkerHere are a few things to consider when porting or optimising Speex for a
1343*28e138c6SAndroid Build Coastguard Worker new platform or an existing one.
1344*28e138c6SAndroid Build Coastguard Worker\end_layout
1345*28e138c6SAndroid Build Coastguard Worker
1346*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
1347*28e138c6SAndroid Build Coastguard WorkerCPU optimisation
1348*28e138c6SAndroid Build Coastguard Worker\end_layout
1349*28e138c6SAndroid Build Coastguard Worker
1350*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1351*28e138c6SAndroid Build Coastguard WorkerThe single factor that will affect the CPU usage of Speex the most is whether
1352*28e138c6SAndroid Build Coastguard Worker it is compiled for floating point or fixed-point.
1353*28e138c6SAndroid Build Coastguard Worker If your CPU/DSP does not have a floating-point unit FPU, then compiling
1354*28e138c6SAndroid Build Coastguard Worker as fixed-point will be orders of magnitudes faster.
1355*28e138c6SAndroid Build Coastguard Worker If there is an FPU present, then it is important to test which version
1356*28e138c6SAndroid Build Coastguard Worker is faster.
1357*28e138c6SAndroid Build Coastguard Worker On the x86 architecture, floating-point is
1358*28e138c6SAndroid Build Coastguard Worker\series bold
1359*28e138c6SAndroid Build Coastguard Workergenerally
1360*28e138c6SAndroid Build Coastguard Worker\series default
1361*28e138c6SAndroid Build Coastguard Worker faster, but not always.
1362*28e138c6SAndroid Build Coastguard Worker To compile Speex as fixed-point, you need to pass --fixed-point to the
1363*28e138c6SAndroid Build Coastguard Worker configure script or define the FIXED_POINT macro for the compiler.
1364*28e138c6SAndroid Build Coastguard Worker As of 1.2beta3, it is now possible to disable the floating-point compatibility
1365*28e138c6SAndroid Build Coastguard Worker API, which means that your code can link without a float emulation library.
1366*28e138c6SAndroid Build Coastguard Worker To do that configure with --disable-float-api or define the DISABLE_FLOAT_API
1367*28e138c6SAndroid Build Coastguard Worker macro.
1368*28e138c6SAndroid Build Coastguard Worker Until the VBR feature is ported to fixed-point, you will also need to configure
1369*28e138c6SAndroid Build Coastguard Worker with --disable-vbr or define DISABLE_VBR.
1370*28e138c6SAndroid Build Coastguard Worker\end_layout
1371*28e138c6SAndroid Build Coastguard Worker
1372*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1373*28e138c6SAndroid Build Coastguard WorkerOther important things to check on some DSP architectures are:
1374*28e138c6SAndroid Build Coastguard Worker\end_layout
1375*28e138c6SAndroid Build Coastguard Worker
1376*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1377*28e138c6SAndroid Build Coastguard WorkerMake sure the cache is set to write-back mode
1378*28e138c6SAndroid Build Coastguard Worker\end_layout
1379*28e138c6SAndroid Build Coastguard Worker
1380*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1381*28e138c6SAndroid Build Coastguard WorkerIf the chip has SRAM instead of cache, make sure as much code and data are
1382*28e138c6SAndroid Build Coastguard Worker in SRAM, rather than in RAM
1383*28e138c6SAndroid Build Coastguard Worker\end_layout
1384*28e138c6SAndroid Build Coastguard Worker
1385*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1386*28e138c6SAndroid Build Coastguard WorkerIf you are going to be writing assembly, then the following functions are
1387*28e138c6SAndroid Build Coastguard Worker
1388*28e138c6SAndroid Build Coastguard Worker\series bold
1389*28e138c6SAndroid Build Coastguard Workerusually
1390*28e138c6SAndroid Build Coastguard Worker\series default
1391*28e138c6SAndroid Build Coastguard Worker the first ones you should consider optimising:
1392*28e138c6SAndroid Build Coastguard Worker\end_layout
1393*28e138c6SAndroid Build Coastguard Worker
1394*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1395*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1396*28e138c6SAndroid Build Coastguard Workerinline true
1397*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1398*28e138c6SAndroid Build Coastguard Worker
1399*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1400*28e138c6SAndroid Build Coastguard Worker
1401*28e138c6SAndroid Build Coastguard Workerfilter_mem16()
1402*28e138c6SAndroid Build Coastguard Worker\end_layout
1403*28e138c6SAndroid Build Coastguard Worker
1404*28e138c6SAndroid Build Coastguard Worker\end_inset
1405*28e138c6SAndroid Build Coastguard Worker
1406*28e138c6SAndroid Build Coastguard Worker
1407*28e138c6SAndroid Build Coastguard Worker\end_layout
1408*28e138c6SAndroid Build Coastguard Worker
1409*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1410*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1411*28e138c6SAndroid Build Coastguard Workerinline true
1412*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1413*28e138c6SAndroid Build Coastguard Worker
1414*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1415*28e138c6SAndroid Build Coastguard Worker
1416*28e138c6SAndroid Build Coastguard Workeriir_mem16()
1417*28e138c6SAndroid Build Coastguard Worker\end_layout
1418*28e138c6SAndroid Build Coastguard Worker
1419*28e138c6SAndroid Build Coastguard Worker\end_inset
1420*28e138c6SAndroid Build Coastguard Worker
1421*28e138c6SAndroid Build Coastguard Worker
1422*28e138c6SAndroid Build Coastguard Worker\end_layout
1423*28e138c6SAndroid Build Coastguard Worker
1424*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1425*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1426*28e138c6SAndroid Build Coastguard Workerinline true
1427*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1428*28e138c6SAndroid Build Coastguard Worker
1429*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1430*28e138c6SAndroid Build Coastguard Worker
1431*28e138c6SAndroid Build Coastguard Workervq_nbest()
1432*28e138c6SAndroid Build Coastguard Worker\end_layout
1433*28e138c6SAndroid Build Coastguard Worker
1434*28e138c6SAndroid Build Coastguard Worker\end_inset
1435*28e138c6SAndroid Build Coastguard Worker
1436*28e138c6SAndroid Build Coastguard Worker
1437*28e138c6SAndroid Build Coastguard Worker\end_layout
1438*28e138c6SAndroid Build Coastguard Worker
1439*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1440*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1441*28e138c6SAndroid Build Coastguard Workerinline true
1442*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1443*28e138c6SAndroid Build Coastguard Worker
1444*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1445*28e138c6SAndroid Build Coastguard Worker
1446*28e138c6SAndroid Build Coastguard Workerpitch_xcorr()
1447*28e138c6SAndroid Build Coastguard Worker\end_layout
1448*28e138c6SAndroid Build Coastguard Worker
1449*28e138c6SAndroid Build Coastguard Worker\end_inset
1450*28e138c6SAndroid Build Coastguard Worker
1451*28e138c6SAndroid Build Coastguard Worker
1452*28e138c6SAndroid Build Coastguard Worker\end_layout
1453*28e138c6SAndroid Build Coastguard Worker
1454*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1455*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1456*28e138c6SAndroid Build Coastguard Workerinline true
1457*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1458*28e138c6SAndroid Build Coastguard Worker
1459*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1460*28e138c6SAndroid Build Coastguard Worker
1461*28e138c6SAndroid Build Coastguard Workerinterp_pitch()
1462*28e138c6SAndroid Build Coastguard Worker\end_layout
1463*28e138c6SAndroid Build Coastguard Worker
1464*28e138c6SAndroid Build Coastguard Worker\end_inset
1465*28e138c6SAndroid Build Coastguard Worker
1466*28e138c6SAndroid Build Coastguard Worker
1467*28e138c6SAndroid Build Coastguard Worker\end_layout
1468*28e138c6SAndroid Build Coastguard Worker
1469*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1470*28e138c6SAndroid Build Coastguard WorkerThe filtering functions
1471*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1472*28e138c6SAndroid Build Coastguard Workerinline true
1473*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1474*28e138c6SAndroid Build Coastguard Worker
1475*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1476*28e138c6SAndroid Build Coastguard Worker
1477*28e138c6SAndroid Build Coastguard Workerfilter_mem16()
1478*28e138c6SAndroid Build Coastguard Worker\end_layout
1479*28e138c6SAndroid Build Coastguard Worker
1480*28e138c6SAndroid Build Coastguard Worker\end_inset
1481*28e138c6SAndroid Build Coastguard Worker
1482*28e138c6SAndroid Build Coastguard Worker and
1483*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
1484*28e138c6SAndroid Build Coastguard Workerinline true
1485*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1486*28e138c6SAndroid Build Coastguard Worker
1487*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1488*28e138c6SAndroid Build Coastguard Worker
1489*28e138c6SAndroid Build Coastguard Workeriir_mem16()
1490*28e138c6SAndroid Build Coastguard Worker\end_layout
1491*28e138c6SAndroid Build Coastguard Worker
1492*28e138c6SAndroid Build Coastguard Worker\end_inset
1493*28e138c6SAndroid Build Coastguard Worker
1494*28e138c6SAndroid Build Coastguard Worker are implemented in the direct form II transposed (DF2T).
1495*28e138c6SAndroid Build Coastguard Worker However, for architectures based on multiply-accumulate (MAC), DF2T requires
1496*28e138c6SAndroid Build Coastguard Worker frequent reload of the accumulator, which can make the code very slow.
1497*28e138c6SAndroid Build Coastguard Worker For these architectures (e.g.
1498*28e138c6SAndroid Build Coastguard Worker Blackfin and Coldfire), a better approach is to implement those functions
1499*28e138c6SAndroid Build Coastguard Worker as direct form I (DF1), which is easier to express in terms of MAC.
1500*28e138c6SAndroid Build Coastguard Worker When doing that however,
1501*28e138c6SAndroid Build Coastguard Worker\series bold
1502*28e138c6SAndroid Build Coastguard Workerit is important to make sure that the DF1 implementation still behaves like
1503*28e138c6SAndroid Build Coastguard Worker the original DF2T behaviour when it comes to memory values
1504*28e138c6SAndroid Build Coastguard Worker\series default
1505*28e138c6SAndroid Build Coastguard Worker.
1506*28e138c6SAndroid Build Coastguard Worker This is necessary because the filter is time-varying and must compute exactly
1507*28e138c6SAndroid Build Coastguard Worker the same value (not counting machine rounding) on any encoder or decoder.
1508*28e138c6SAndroid Build Coastguard Worker\end_layout
1509*28e138c6SAndroid Build Coastguard Worker
1510*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
1511*28e138c6SAndroid Build Coastguard WorkerMemory optimisation
1512*28e138c6SAndroid Build Coastguard Worker\end_layout
1513*28e138c6SAndroid Build Coastguard Worker
1514*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1515*28e138c6SAndroid Build Coastguard WorkerMemory optimisation is mainly something that should be considered for small
1516*28e138c6SAndroid Build Coastguard Worker embedded platforms.
1517*28e138c6SAndroid Build Coastguard Worker For PCs, Speex is already so tiny that it's just not worth doing any of
1518*28e138c6SAndroid Build Coastguard Worker the things suggested here.
1519*28e138c6SAndroid Build Coastguard Worker There are several ways to reduce the memory usage of Speex, both in terms
1520*28e138c6SAndroid Build Coastguard Worker of code size and data size.
1521*28e138c6SAndroid Build Coastguard Worker For optimising code size, the trick is to first remove features you do
1522*28e138c6SAndroid Build Coastguard Worker not need.
1523*28e138c6SAndroid Build Coastguard Worker Some examples of things that can easily be disabled
1524*28e138c6SAndroid Build Coastguard Worker\series bold
1525*28e138c6SAndroid Build Coastguard Workerif you don't need them
1526*28e138c6SAndroid Build Coastguard Worker\series default
1527*28e138c6SAndroid Build Coastguard Worker are:
1528*28e138c6SAndroid Build Coastguard Worker\end_layout
1529*28e138c6SAndroid Build Coastguard Worker
1530*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1531*28e138c6SAndroid Build Coastguard WorkerWideband support (--disable-wideband)
1532*28e138c6SAndroid Build Coastguard Worker\end_layout
1533*28e138c6SAndroid Build Coastguard Worker
1534*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1535*28e138c6SAndroid Build Coastguard WorkerSupport for stereo (removing stereo.c)
1536*28e138c6SAndroid Build Coastguard Worker\end_layout
1537*28e138c6SAndroid Build Coastguard Worker
1538*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1539*28e138c6SAndroid Build Coastguard WorkerVBR support (--disable-vbr or DISABLE_VBR)
1540*28e138c6SAndroid Build Coastguard Worker\end_layout
1541*28e138c6SAndroid Build Coastguard Worker
1542*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
1543*28e138c6SAndroid Build Coastguard WorkerStatic codebooks that are not needed for the bit-rates you are using (*_table.c
1544*28e138c6SAndroid Build Coastguard Worker files)
1545*28e138c6SAndroid Build Coastguard Worker\end_layout
1546*28e138c6SAndroid Build Coastguard Worker
1547*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1548*28e138c6SAndroid Build Coastguard WorkerSpeex also has several methods for allocating temporary arrays.
1549*28e138c6SAndroid Build Coastguard Worker When using a compiler that supports C99 properly (as of 2007, Microsoft
1550*28e138c6SAndroid Build Coastguard Worker compilers don't, but gcc does), it is best to define VAR_ARRAYS.
1551*28e138c6SAndroid Build Coastguard Worker That makes use of the variable-size array feature of C99.
1552*28e138c6SAndroid Build Coastguard Worker The next best is to define USE_ALLOCA so that Speex can use alloca() to
1553*28e138c6SAndroid Build Coastguard Worker allocate the temporary arrays.
1554*28e138c6SAndroid Build Coastguard Worker Note that on many systems, alloca() is buggy so it may not work.
1555*28e138c6SAndroid Build Coastguard Worker If none of VAR_ARRAYS and USE_ALLOCA are defined, then Speex falls back
1556*28e138c6SAndroid Build Coastguard Worker to allocating a large
1557*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
1558*28e138c6SAndroid Build Coastguard Worker\end_inset
1559*28e138c6SAndroid Build Coastguard Worker
1560*28e138c6SAndroid Build Coastguard Workerscratch space
1561*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
1562*28e138c6SAndroid Build Coastguard Worker\end_inset
1563*28e138c6SAndroid Build Coastguard Worker
1564*28e138c6SAndroid Build Coastguard Worker and doing its own internal allocation.
1565*28e138c6SAndroid Build Coastguard Worker The main disadvantage of this solution is that it is wasteful.
1566*28e138c6SAndroid Build Coastguard Worker It needs to allocate enough stack for the worst case scenario (worst bit-rate,
1567*28e138c6SAndroid Build Coastguard Worker highest complexity setting, ...) and by default, the memory isn't shared between
1568*28e138c6SAndroid Build Coastguard Worker multiple encoder/decoder states.
1569*28e138c6SAndroid Build Coastguard Worker Still, if the
1570*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
1571*28e138c6SAndroid Build Coastguard Worker\end_inset
1572*28e138c6SAndroid Build Coastguard Worker
1573*28e138c6SAndroid Build Coastguard Workermanual
1574*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
1575*28e138c6SAndroid Build Coastguard Worker\end_inset
1576*28e138c6SAndroid Build Coastguard Worker
1577*28e138c6SAndroid Build Coastguard Worker allocation is the only option left, there are a few things that can be
1578*28e138c6SAndroid Build Coastguard Worker improved.
1579*28e138c6SAndroid Build Coastguard Worker By overriding the speex_alloc_scratch() call in os_support.h, it is possible
1580*28e138c6SAndroid Build Coastguard Worker to always return the same memory area for all states
1581*28e138c6SAndroid Build Coastguard Worker\begin_inset Foot
1582*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1583*28e138c6SAndroid Build Coastguard Worker
1584*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1585*28e138c6SAndroid Build Coastguard WorkerIn this case, one must be careful with threads
1586*28e138c6SAndroid Build Coastguard Worker\end_layout
1587*28e138c6SAndroid Build Coastguard Worker
1588*28e138c6SAndroid Build Coastguard Worker\end_inset
1589*28e138c6SAndroid Build Coastguard Worker
1590*28e138c6SAndroid Build Coastguard Worker.
1591*28e138c6SAndroid Build Coastguard Worker In addition to that, by redefining the NB_ENC_STACK and NB_DEC_STACK (or
1592*28e138c6SAndroid Build Coastguard Worker similar for wideband), it is possible to only allocate memory for a scenario
1593*28e138c6SAndroid Build Coastguard Worker that is known in advance.
1594*28e138c6SAndroid Build Coastguard Worker In this case, it is important to measure the amount of memory required
1595*28e138c6SAndroid Build Coastguard Worker for the specific sampling rate, bit-rate and complexity level being used.
1596*28e138c6SAndroid Build Coastguard Worker\end_layout
1597*28e138c6SAndroid Build Coastguard Worker
1598*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1599*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
1600*28e138c6SAndroid Build Coastguard Worker\end_inset
1601*28e138c6SAndroid Build Coastguard Worker
1602*28e138c6SAndroid Build Coastguard Worker
1603*28e138c6SAndroid Build Coastguard Worker\end_layout
1604*28e138c6SAndroid Build Coastguard Worker
1605*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
1606*28e138c6SAndroid Build Coastguard WorkerCommand-line encoder/decoder
1607*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
1608*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
1609*28e138c6SAndroid Build Coastguard Workername "sec:Command-line-encoder/decoder"
1610*28e138c6SAndroid Build Coastguard Worker
1611*28e138c6SAndroid Build Coastguard Worker\end_inset
1612*28e138c6SAndroid Build Coastguard Worker
1613*28e138c6SAndroid Build Coastguard Worker
1614*28e138c6SAndroid Build Coastguard Worker\end_layout
1615*28e138c6SAndroid Build Coastguard Worker
1616*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1617*28e138c6SAndroid Build Coastguard WorkerThe base Speex distribution includes a command-line encoder (
1618*28e138c6SAndroid Build Coastguard Worker\emph on
1619*28e138c6SAndroid Build Coastguard Workerspeexenc
1620*28e138c6SAndroid Build Coastguard Worker\emph default
1621*28e138c6SAndroid Build Coastguard Worker) and decoder (
1622*28e138c6SAndroid Build Coastguard Worker\emph on
1623*28e138c6SAndroid Build Coastguard Workerspeexdec
1624*28e138c6SAndroid Build Coastguard Worker\emph default
1625*28e138c6SAndroid Build Coastguard Worker).
1626*28e138c6SAndroid Build Coastguard Worker Those tools produce and read Speex files encapsulated in the Ogg container.
1627*28e138c6SAndroid Build Coastguard Worker Although it is possible to encapsulate Speex in any container, Ogg is the
1628*28e138c6SAndroid Build Coastguard Worker recommended container for files.
1629*28e138c6SAndroid Build Coastguard Worker This section describes how to use the command line tools for Speex files
1630*28e138c6SAndroid Build Coastguard Worker in Ogg.
1631*28e138c6SAndroid Build Coastguard Worker\end_layout
1632*28e138c6SAndroid Build Coastguard Worker
1633*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1634*28e138c6SAndroid Build Coastguard Worker
1635*28e138c6SAndroid Build Coastguard Worker\emph on
1636*28e138c6SAndroid Build Coastguard Workerspeexenc
1637*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
1638*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1639*28e138c6SAndroid Build Coastguard Worker
1640*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1641*28e138c6SAndroid Build Coastguard Workerspeexenc
1642*28e138c6SAndroid Build Coastguard Worker\end_layout
1643*28e138c6SAndroid Build Coastguard Worker
1644*28e138c6SAndroid Build Coastguard Worker\end_inset
1645*28e138c6SAndroid Build Coastguard Worker
1646*28e138c6SAndroid Build Coastguard Worker
1647*28e138c6SAndroid Build Coastguard Worker\end_layout
1648*28e138c6SAndroid Build Coastguard Worker
1649*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1650*28e138c6SAndroid Build Coastguard WorkerThe
1651*28e138c6SAndroid Build Coastguard Worker\emph on
1652*28e138c6SAndroid Build Coastguard Workerspeexenc
1653*28e138c6SAndroid Build Coastguard Worker\emph default
1654*28e138c6SAndroid Build Coastguard Worker utility is used to create Speex files from raw PCM or wave files.
1655*28e138c6SAndroid Build Coastguard Worker It can be used by calling:
1656*28e138c6SAndroid Build Coastguard Worker\end_layout
1657*28e138c6SAndroid Build Coastguard Worker
1658*28e138c6SAndroid Build Coastguard Worker\begin_layout LyX-Code
1659*28e138c6SAndroid Build Coastguard Workerspeexenc [options] input_file output_file
1660*28e138c6SAndroid Build Coastguard Worker\end_layout
1661*28e138c6SAndroid Build Coastguard Worker
1662*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1663*28e138c6SAndroid Build Coastguard WorkerThe value '-' for input_file or output_file corresponds respectively to
1664*28e138c6SAndroid Build Coastguard Worker stdin and stdout.
1665*28e138c6SAndroid Build Coastguard Worker The valid options are:
1666*28e138c6SAndroid Build Coastguard Worker\end_layout
1667*28e138c6SAndroid Build Coastguard Worker
1668*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1669*28e138c6SAndroid Build Coastguard Worker--narrowband
1670*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1671*28e138c6SAndroid Build Coastguard Worker\end_inset
1672*28e138c6SAndroid Build Coastguard Worker
1673*28e138c6SAndroid Build Coastguard Worker(-n) Tell Speex to treat the input as narrowband (8 kHz).
1674*28e138c6SAndroid Build Coastguard Worker This is the default
1675*28e138c6SAndroid Build Coastguard Worker\end_layout
1676*28e138c6SAndroid Build Coastguard Worker
1677*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1678*28e138c6SAndroid Build Coastguard Worker--wideband
1679*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1680*28e138c6SAndroid Build Coastguard Worker\end_inset
1681*28e138c6SAndroid Build Coastguard Worker
1682*28e138c6SAndroid Build Coastguard Worker(-w) Tell Speex to treat the input as wideband (16 kHz)
1683*28e138c6SAndroid Build Coastguard Worker\end_layout
1684*28e138c6SAndroid Build Coastguard Worker
1685*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1686*28e138c6SAndroid Build Coastguard Worker--ultra-wideband
1687*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1688*28e138c6SAndroid Build Coastguard Worker\end_inset
1689*28e138c6SAndroid Build Coastguard Worker
1690*28e138c6SAndroid Build Coastguard Worker(-u) Tell Speex to treat the input as
1691*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
1692*28e138c6SAndroid Build Coastguard Worker\end_inset
1693*28e138c6SAndroid Build Coastguard Worker
1694*28e138c6SAndroid Build Coastguard Workerultra-wideband
1695*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
1696*28e138c6SAndroid Build Coastguard Worker\end_inset
1697*28e138c6SAndroid Build Coastguard Worker
1698*28e138c6SAndroid Build Coastguard Worker (32 kHz)
1699*28e138c6SAndroid Build Coastguard Worker\end_layout
1700*28e138c6SAndroid Build Coastguard Worker
1701*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1702*28e138c6SAndroid Build Coastguard Worker--quality
1703*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1704*28e138c6SAndroid Build Coastguard Worker\end_inset
1705*28e138c6SAndroid Build Coastguard Worker
1706*28e138c6SAndroid Build Coastguard Workern Set the encoding quality (0-10), default is 8
1707*28e138c6SAndroid Build Coastguard Worker\end_layout
1708*28e138c6SAndroid Build Coastguard Worker
1709*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1710*28e138c6SAndroid Build Coastguard Worker--bitrate
1711*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1712*28e138c6SAndroid Build Coastguard Worker\end_inset
1713*28e138c6SAndroid Build Coastguard Worker
1714*28e138c6SAndroid Build Coastguard Workern Encoding bit-rate (use bit-rate n or lower)
1715*28e138c6SAndroid Build Coastguard Worker\end_layout
1716*28e138c6SAndroid Build Coastguard Worker
1717*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1718*28e138c6SAndroid Build Coastguard Worker--vbr Enable VBR (Variable Bit-Rate), disabled by default
1719*28e138c6SAndroid Build Coastguard Worker\end_layout
1720*28e138c6SAndroid Build Coastguard Worker
1721*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1722*28e138c6SAndroid Build Coastguard Worker--abr
1723*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1724*28e138c6SAndroid Build Coastguard Worker\end_inset
1725*28e138c6SAndroid Build Coastguard Worker
1726*28e138c6SAndroid Build Coastguard Workern Enable ABR (Average Bit-Rate) at n kbps, disabled by default
1727*28e138c6SAndroid Build Coastguard Worker\end_layout
1728*28e138c6SAndroid Build Coastguard Worker
1729*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1730*28e138c6SAndroid Build Coastguard Worker--vad Enable VAD (Voice Activity Detection), disabled by default
1731*28e138c6SAndroid Build Coastguard Worker\end_layout
1732*28e138c6SAndroid Build Coastguard Worker
1733*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1734*28e138c6SAndroid Build Coastguard Worker--dtx Enable DTX (Discontinuous Transmission), disabled by default
1735*28e138c6SAndroid Build Coastguard Worker\end_layout
1736*28e138c6SAndroid Build Coastguard Worker
1737*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1738*28e138c6SAndroid Build Coastguard Worker--nframes
1739*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1740*28e138c6SAndroid Build Coastguard Worker\end_inset
1741*28e138c6SAndroid Build Coastguard Worker
1742*28e138c6SAndroid Build Coastguard Workern Pack n frames in each Ogg packet (this saves space at low bit-rates)
1743*28e138c6SAndroid Build Coastguard Worker\end_layout
1744*28e138c6SAndroid Build Coastguard Worker
1745*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1746*28e138c6SAndroid Build Coastguard Worker--comp
1747*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1748*28e138c6SAndroid Build Coastguard Worker\end_inset
1749*28e138c6SAndroid Build Coastguard Worker
1750*28e138c6SAndroid Build Coastguard Workern Set encoding speed/quality tradeoff.
1751*28e138c6SAndroid Build Coastguard Worker The higher the value of n, the slower the encoding (default is 3)
1752*28e138c6SAndroid Build Coastguard Worker\end_layout
1753*28e138c6SAndroid Build Coastguard Worker
1754*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1755*28e138c6SAndroid Build Coastguard Worker-V Verbose operation, print bit-rate currently in use
1756*28e138c6SAndroid Build Coastguard Worker\end_layout
1757*28e138c6SAndroid Build Coastguard Worker
1758*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1759*28e138c6SAndroid Build Coastguard Worker--help
1760*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1761*28e138c6SAndroid Build Coastguard Worker\end_inset
1762*28e138c6SAndroid Build Coastguard Worker
1763*28e138c6SAndroid Build Coastguard Worker(-h) Print the help
1764*28e138c6SAndroid Build Coastguard Worker\end_layout
1765*28e138c6SAndroid Build Coastguard Worker
1766*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1767*28e138c6SAndroid Build Coastguard Worker--version
1768*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1769*28e138c6SAndroid Build Coastguard Worker\end_inset
1770*28e138c6SAndroid Build Coastguard Worker
1771*28e138c6SAndroid Build Coastguard Worker(-v) Print version information
1772*28e138c6SAndroid Build Coastguard Worker\end_layout
1773*28e138c6SAndroid Build Coastguard Worker
1774*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
1775*28e138c6SAndroid Build Coastguard WorkerSpeex comments
1776*28e138c6SAndroid Build Coastguard Worker\end_layout
1777*28e138c6SAndroid Build Coastguard Worker
1778*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1779*28e138c6SAndroid Build Coastguard Worker--comment Add the given string as an extra comment.
1780*28e138c6SAndroid Build Coastguard Worker This may be used multiple times.
1781*28e138c6SAndroid Build Coastguard Worker
1782*28e138c6SAndroid Build Coastguard Worker\end_layout
1783*28e138c6SAndroid Build Coastguard Worker
1784*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1785*28e138c6SAndroid Build Coastguard Worker--author Author of this track.
1786*28e138c6SAndroid Build Coastguard Worker
1787*28e138c6SAndroid Build Coastguard Worker\end_layout
1788*28e138c6SAndroid Build Coastguard Worker
1789*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1790*28e138c6SAndroid Build Coastguard Worker--title Title for this track.
1791*28e138c6SAndroid Build Coastguard Worker
1792*28e138c6SAndroid Build Coastguard Worker\end_layout
1793*28e138c6SAndroid Build Coastguard Worker
1794*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection*
1795*28e138c6SAndroid Build Coastguard WorkerRaw input options
1796*28e138c6SAndroid Build Coastguard Worker\end_layout
1797*28e138c6SAndroid Build Coastguard Worker
1798*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1799*28e138c6SAndroid Build Coastguard Worker--rate
1800*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1801*28e138c6SAndroid Build Coastguard Worker\end_inset
1802*28e138c6SAndroid Build Coastguard Worker
1803*28e138c6SAndroid Build Coastguard Workern Sampling rate for raw input
1804*28e138c6SAndroid Build Coastguard Worker\end_layout
1805*28e138c6SAndroid Build Coastguard Worker
1806*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1807*28e138c6SAndroid Build Coastguard Worker--stereo Consider raw input as stereo
1808*28e138c6SAndroid Build Coastguard Worker\end_layout
1809*28e138c6SAndroid Build Coastguard Worker
1810*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1811*28e138c6SAndroid Build Coastguard Worker--le Raw input is little-endian
1812*28e138c6SAndroid Build Coastguard Worker\end_layout
1813*28e138c6SAndroid Build Coastguard Worker
1814*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1815*28e138c6SAndroid Build Coastguard Worker--be Raw input is big-endian
1816*28e138c6SAndroid Build Coastguard Worker\end_layout
1817*28e138c6SAndroid Build Coastguard Worker
1818*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1819*28e138c6SAndroid Build Coastguard Worker--8bit Raw input is 8-bit unsigned
1820*28e138c6SAndroid Build Coastguard Worker\end_layout
1821*28e138c6SAndroid Build Coastguard Worker
1822*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1823*28e138c6SAndroid Build Coastguard Worker--16bit Raw input is 16-bit signed
1824*28e138c6SAndroid Build Coastguard Worker\end_layout
1825*28e138c6SAndroid Build Coastguard Worker
1826*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1827*28e138c6SAndroid Build Coastguard Worker
1828*28e138c6SAndroid Build Coastguard Worker\emph on
1829*28e138c6SAndroid Build Coastguard Workerspeexdec
1830*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
1831*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1832*28e138c6SAndroid Build Coastguard Worker
1833*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1834*28e138c6SAndroid Build Coastguard Workerspeexdec
1835*28e138c6SAndroid Build Coastguard Worker\end_layout
1836*28e138c6SAndroid Build Coastguard Worker
1837*28e138c6SAndroid Build Coastguard Worker\end_inset
1838*28e138c6SAndroid Build Coastguard Worker
1839*28e138c6SAndroid Build Coastguard Worker
1840*28e138c6SAndroid Build Coastguard Worker\end_layout
1841*28e138c6SAndroid Build Coastguard Worker
1842*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1843*28e138c6SAndroid Build Coastguard WorkerThe
1844*28e138c6SAndroid Build Coastguard Worker\emph on
1845*28e138c6SAndroid Build Coastguard Workerspeexdec
1846*28e138c6SAndroid Build Coastguard Worker\emph default
1847*28e138c6SAndroid Build Coastguard Worker utility is used to decode Speex files and can be used by calling:
1848*28e138c6SAndroid Build Coastguard Worker\end_layout
1849*28e138c6SAndroid Build Coastguard Worker
1850*28e138c6SAndroid Build Coastguard Worker\begin_layout LyX-Code
1851*28e138c6SAndroid Build Coastguard Workerspeexdec [options] speex_file [output_file]
1852*28e138c6SAndroid Build Coastguard Worker\end_layout
1853*28e138c6SAndroid Build Coastguard Worker
1854*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1855*28e138c6SAndroid Build Coastguard WorkerThe value '-' for input_file or output_file corresponds respectively to
1856*28e138c6SAndroid Build Coastguard Worker stdin and stdout.
1857*28e138c6SAndroid Build Coastguard Worker Also, when no output_file is specified, the file is played to the soundcard.
1858*28e138c6SAndroid Build Coastguard Worker The valid options are:
1859*28e138c6SAndroid Build Coastguard Worker\end_layout
1860*28e138c6SAndroid Build Coastguard Worker
1861*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1862*28e138c6SAndroid Build Coastguard Worker--enh enable post-filter (default)
1863*28e138c6SAndroid Build Coastguard Worker\end_layout
1864*28e138c6SAndroid Build Coastguard Worker
1865*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1866*28e138c6SAndroid Build Coastguard Worker--no-enh disable post-filter
1867*28e138c6SAndroid Build Coastguard Worker\end_layout
1868*28e138c6SAndroid Build Coastguard Worker
1869*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1870*28e138c6SAndroid Build Coastguard Worker--force-nb Force decoding in narrowband
1871*28e138c6SAndroid Build Coastguard Worker\end_layout
1872*28e138c6SAndroid Build Coastguard Worker
1873*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1874*28e138c6SAndroid Build Coastguard Worker--force-wb Force decoding in wideband
1875*28e138c6SAndroid Build Coastguard Worker\end_layout
1876*28e138c6SAndroid Build Coastguard Worker
1877*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1878*28e138c6SAndroid Build Coastguard Worker--force-uwb Force decoding in ultra-wideband
1879*28e138c6SAndroid Build Coastguard Worker\end_layout
1880*28e138c6SAndroid Build Coastguard Worker
1881*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1882*28e138c6SAndroid Build Coastguard Worker--mono Force decoding in mono
1883*28e138c6SAndroid Build Coastguard Worker\end_layout
1884*28e138c6SAndroid Build Coastguard Worker
1885*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1886*28e138c6SAndroid Build Coastguard Worker--stereo Force decoding in stereo
1887*28e138c6SAndroid Build Coastguard Worker\end_layout
1888*28e138c6SAndroid Build Coastguard Worker
1889*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1890*28e138c6SAndroid Build Coastguard Worker--rate
1891*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1892*28e138c6SAndroid Build Coastguard Worker\end_inset
1893*28e138c6SAndroid Build Coastguard Worker
1894*28e138c6SAndroid Build Coastguard Workern Force decoding at n Hz sampling rate
1895*28e138c6SAndroid Build Coastguard Worker\end_layout
1896*28e138c6SAndroid Build Coastguard Worker
1897*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1898*28e138c6SAndroid Build Coastguard Worker--packet-loss
1899*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1900*28e138c6SAndroid Build Coastguard Worker\end_inset
1901*28e138c6SAndroid Build Coastguard Worker
1902*28e138c6SAndroid Build Coastguard Workern Simulate n % random packet loss
1903*28e138c6SAndroid Build Coastguard Worker\end_layout
1904*28e138c6SAndroid Build Coastguard Worker
1905*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1906*28e138c6SAndroid Build Coastguard Worker-V Verbose operation, print bit-rate currently in use
1907*28e138c6SAndroid Build Coastguard Worker\end_layout
1908*28e138c6SAndroid Build Coastguard Worker
1909*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1910*28e138c6SAndroid Build Coastguard Worker--help
1911*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1912*28e138c6SAndroid Build Coastguard Worker\end_inset
1913*28e138c6SAndroid Build Coastguard Worker
1914*28e138c6SAndroid Build Coastguard Worker(-h) Print the help
1915*28e138c6SAndroid Build Coastguard Worker\end_layout
1916*28e138c6SAndroid Build Coastguard Worker
1917*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
1918*28e138c6SAndroid Build Coastguard Worker--version
1919*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
1920*28e138c6SAndroid Build Coastguard Worker\end_inset
1921*28e138c6SAndroid Build Coastguard Worker
1922*28e138c6SAndroid Build Coastguard Worker(-v) Print version information
1923*28e138c6SAndroid Build Coastguard Worker\end_layout
1924*28e138c6SAndroid Build Coastguard Worker
1925*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1926*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
1927*28e138c6SAndroid Build Coastguard Worker\end_inset
1928*28e138c6SAndroid Build Coastguard Worker
1929*28e138c6SAndroid Build Coastguard Worker
1930*28e138c6SAndroid Build Coastguard Worker\end_layout
1931*28e138c6SAndroid Build Coastguard Worker
1932*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
1933*28e138c6SAndroid Build Coastguard WorkerUsing the Speex Codec API (
1934*28e138c6SAndroid Build Coastguard Worker\emph on
1935*28e138c6SAndroid Build Coastguard Workerlibspeex
1936*28e138c6SAndroid Build Coastguard Worker\emph default
1937*28e138c6SAndroid Build Coastguard Worker
1938*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
1939*28e138c6SAndroid Build Coastguard Workerstatus collapsed
1940*28e138c6SAndroid Build Coastguard Worker
1941*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
1942*28e138c6SAndroid Build Coastguard Workerlibspeex
1943*28e138c6SAndroid Build Coastguard Worker\end_layout
1944*28e138c6SAndroid Build Coastguard Worker
1945*28e138c6SAndroid Build Coastguard Worker\end_inset
1946*28e138c6SAndroid Build Coastguard Worker
1947*28e138c6SAndroid Build Coastguard Worker)
1948*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
1949*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
1950*28e138c6SAndroid Build Coastguard Workername "sec:Programming-with-Speex"
1951*28e138c6SAndroid Build Coastguard Worker
1952*28e138c6SAndroid Build Coastguard Worker\end_inset
1953*28e138c6SAndroid Build Coastguard Worker
1954*28e138c6SAndroid Build Coastguard Worker
1955*28e138c6SAndroid Build Coastguard Worker\end_layout
1956*28e138c6SAndroid Build Coastguard Worker
1957*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
1958*28e138c6SAndroid Build Coastguard WorkerThe
1959*28e138c6SAndroid Build Coastguard Worker\emph on
1960*28e138c6SAndroid Build Coastguard Workerlibspeex
1961*28e138c6SAndroid Build Coastguard Worker\emph default
1962*28e138c6SAndroid Build Coastguard Worker library contains all the functions for encoding and decoding speech with
1963*28e138c6SAndroid Build Coastguard Worker the Speex codec.
1964*28e138c6SAndroid Build Coastguard Worker When linking on a UNIX system, one must add
1965*28e138c6SAndroid Build Coastguard Worker\emph on
1966*28e138c6SAndroid Build Coastguard Worker-lspeex -lm
1967*28e138c6SAndroid Build Coastguard Worker\emph default
1968*28e138c6SAndroid Build Coastguard Worker to the compiler command line.
1969*28e138c6SAndroid Build Coastguard Worker One important thing to know is that
1970*28e138c6SAndroid Build Coastguard Worker\series bold
1971*28e138c6SAndroid Build Coastguard Workerlibspeex calls are reentrant, but not thread-safe
1972*28e138c6SAndroid Build Coastguard Worker\series default
1973*28e138c6SAndroid Build Coastguard Worker.
1974*28e138c6SAndroid Build Coastguard Worker That means that it is fine to use calls from many threads, but
1975*28e138c6SAndroid Build Coastguard Worker\series bold
1976*28e138c6SAndroid Build Coastguard Workercalls using the same state from multiple threads must be protected by mutexes
1977*28e138c6SAndroid Build Coastguard Worker\series default
1978*28e138c6SAndroid Build Coastguard Worker.
1979*28e138c6SAndroid Build Coastguard Worker Examples of code can also be found in Appendix
1980*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
1981*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
1982*28e138c6SAndroid Build Coastguard Workerreference "sec:Sample-code"
1983*28e138c6SAndroid Build Coastguard Worker
1984*28e138c6SAndroid Build Coastguard Worker\end_inset
1985*28e138c6SAndroid Build Coastguard Worker
1986*28e138c6SAndroid Build Coastguard Worker and the complete API documentation is included in the Documentation section
1987*28e138c6SAndroid Build Coastguard Worker of the Speex website (http://www.speex.org/).
1988*28e138c6SAndroid Build Coastguard Worker\end_layout
1989*28e138c6SAndroid Build Coastguard Worker
1990*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
1991*28e138c6SAndroid Build Coastguard WorkerEncoding
1992*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
1993*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
1994*28e138c6SAndroid Build Coastguard Workername "sub:Encoding"
1995*28e138c6SAndroid Build Coastguard Worker
1996*28e138c6SAndroid Build Coastguard Worker\end_inset
1997*28e138c6SAndroid Build Coastguard Worker
1998*28e138c6SAndroid Build Coastguard Worker
1999*28e138c6SAndroid Build Coastguard Worker\end_layout
2000*28e138c6SAndroid Build Coastguard Worker
2001*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2002*28e138c6SAndroid Build Coastguard WorkerIn order to encode speech using Speex, one first needs to:
2003*28e138c6SAndroid Build Coastguard Worker\end_layout
2004*28e138c6SAndroid Build Coastguard Worker
2005*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2006*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2007*28e138c6SAndroid Build Coastguard Workerinline false
2008*28e138c6SAndroid Build Coastguard Workerstatus open
2009*28e138c6SAndroid Build Coastguard Worker
2010*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2011*28e138c6SAndroid Build Coastguard Worker
2012*28e138c6SAndroid Build Coastguard Worker#include <speex/speex.h>
2013*28e138c6SAndroid Build Coastguard Worker\end_layout
2014*28e138c6SAndroid Build Coastguard Worker
2015*28e138c6SAndroid Build Coastguard Worker\end_inset
2016*28e138c6SAndroid Build Coastguard Worker
2017*28e138c6SAndroid Build Coastguard WorkerThen in the code, a Speex bit-packing struct must be declared, along with
2018*28e138c6SAndroid Build Coastguard Worker a Speex encoder state:
2019*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2020*28e138c6SAndroid Build Coastguard Workerinline false
2021*28e138c6SAndroid Build Coastguard Workerstatus open
2022*28e138c6SAndroid Build Coastguard Worker
2023*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2024*28e138c6SAndroid Build Coastguard Worker
2025*28e138c6SAndroid Build Coastguard WorkerSpeexBits bits;
2026*28e138c6SAndroid Build Coastguard Worker\end_layout
2027*28e138c6SAndroid Build Coastguard Worker
2028*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2029*28e138c6SAndroid Build Coastguard Worker
2030*28e138c6SAndroid Build Coastguard Workervoid *enc_state;
2031*28e138c6SAndroid Build Coastguard Worker\end_layout
2032*28e138c6SAndroid Build Coastguard Worker
2033*28e138c6SAndroid Build Coastguard Worker\end_inset
2034*28e138c6SAndroid Build Coastguard Worker
2035*28e138c6SAndroid Build Coastguard WorkerThe two are initialized by:
2036*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2037*28e138c6SAndroid Build Coastguard Workerinline false
2038*28e138c6SAndroid Build Coastguard Workerstatus open
2039*28e138c6SAndroid Build Coastguard Worker
2040*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2041*28e138c6SAndroid Build Coastguard Worker
2042*28e138c6SAndroid Build Coastguard Workerspeex_bits_init(&bits);
2043*28e138c6SAndroid Build Coastguard Worker\end_layout
2044*28e138c6SAndroid Build Coastguard Worker
2045*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2046*28e138c6SAndroid Build Coastguard Worker
2047*28e138c6SAndroid Build Coastguard Workerenc_state = speex_encoder_init(&speex_nb_mode);
2048*28e138c6SAndroid Build Coastguard Worker\end_layout
2049*28e138c6SAndroid Build Coastguard Worker
2050*28e138c6SAndroid Build Coastguard Worker\end_inset
2051*28e138c6SAndroid Build Coastguard Worker
2052*28e138c6SAndroid Build Coastguard Worker
2053*28e138c6SAndroid Build Coastguard Worker\end_layout
2054*28e138c6SAndroid Build Coastguard Worker
2055*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2056*28e138c6SAndroid Build Coastguard WorkerFor wideband coding,
2057*28e138c6SAndroid Build Coastguard Worker\emph on
2058*28e138c6SAndroid Build Coastguard Workerspeex_nb_mode
2059*28e138c6SAndroid Build Coastguard Worker\emph default
2060*28e138c6SAndroid Build Coastguard Worker will be replaced by
2061*28e138c6SAndroid Build Coastguard Worker\emph on
2062*28e138c6SAndroid Build Coastguard Workerspeex_wb_mode
2063*28e138c6SAndroid Build Coastguard Worker\emph default
2064*28e138c6SAndroid Build Coastguard Worker.
2065*28e138c6SAndroid Build Coastguard Worker In most cases, you will need to know the frame size used at the sampling
2066*28e138c6SAndroid Build Coastguard Worker rate you are using.
2067*28e138c6SAndroid Build Coastguard Worker You can get that value in the
2068*28e138c6SAndroid Build Coastguard Worker\emph on
2069*28e138c6SAndroid Build Coastguard Workerframe_size
2070*28e138c6SAndroid Build Coastguard Worker\emph default
2071*28e138c6SAndroid Build Coastguard Worker variable (expressed in
2072*28e138c6SAndroid Build Coastguard Worker\series bold
2073*28e138c6SAndroid Build Coastguard Workersamples
2074*28e138c6SAndroid Build Coastguard Worker\series default
2075*28e138c6SAndroid Build Coastguard Worker, not bytes) with:
2076*28e138c6SAndroid Build Coastguard Worker\end_layout
2077*28e138c6SAndroid Build Coastguard Worker
2078*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2079*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2080*28e138c6SAndroid Build Coastguard Workerinline false
2081*28e138c6SAndroid Build Coastguard Workerstatus open
2082*28e138c6SAndroid Build Coastguard Worker
2083*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2084*28e138c6SAndroid Build Coastguard Worker
2085*28e138c6SAndroid Build Coastguard Workerspeex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
2086*28e138c6SAndroid Build Coastguard Worker\end_layout
2087*28e138c6SAndroid Build Coastguard Worker
2088*28e138c6SAndroid Build Coastguard Worker\end_inset
2089*28e138c6SAndroid Build Coastguard Worker
2090*28e138c6SAndroid Build Coastguard Worker
2091*28e138c6SAndroid Build Coastguard Worker\end_layout
2092*28e138c6SAndroid Build Coastguard Worker
2093*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2094*28e138c6SAndroid Build Coastguard WorkerIn practice,
2095*28e138c6SAndroid Build Coastguard Worker\emph on
2096*28e138c6SAndroid Build Coastguard Workerframe_size
2097*28e138c6SAndroid Build Coastguard Worker\emph default
2098*28e138c6SAndroid Build Coastguard Worker will correspond to 20 ms when using 8, 16, or 32 kHz sampling rate.
2099*28e138c6SAndroid Build Coastguard Worker There are many parameters that can be set for the Speex encoder, but the
2100*28e138c6SAndroid Build Coastguard Worker most useful one is the quality parameter that controls the quality vs bit-rate
2101*28e138c6SAndroid Build Coastguard Worker tradeoff.
2102*28e138c6SAndroid Build Coastguard Worker This is set by:
2103*28e138c6SAndroid Build Coastguard Worker\end_layout
2104*28e138c6SAndroid Build Coastguard Worker
2105*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2106*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2107*28e138c6SAndroid Build Coastguard Workerinline false
2108*28e138c6SAndroid Build Coastguard Workerstatus open
2109*28e138c6SAndroid Build Coastguard Worker
2110*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2111*28e138c6SAndroid Build Coastguard Worker
2112*28e138c6SAndroid Build Coastguard Workerspeex_encoder_ctl(enc_state,SPEEX_SET_QUALITY,&quality);
2113*28e138c6SAndroid Build Coastguard Worker\end_layout
2114*28e138c6SAndroid Build Coastguard Worker
2115*28e138c6SAndroid Build Coastguard Worker\end_inset
2116*28e138c6SAndroid Build Coastguard Worker
2117*28e138c6SAndroid Build Coastguard Workerwhere
2118*28e138c6SAndroid Build Coastguard Worker\emph on
2119*28e138c6SAndroid Build Coastguard Workerquality
2120*28e138c6SAndroid Build Coastguard Worker\emph default
2121*28e138c6SAndroid Build Coastguard Worker is an integer value ranging from 0 to 10 (inclusively).
2122*28e138c6SAndroid Build Coastguard Worker The mapping between quality and bit-rate is described in Fig.
2123*28e138c6SAndroid Build Coastguard Worker
2124*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
2125*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
2126*28e138c6SAndroid Build Coastguard Workerreference "cap:quality_vs_bps"
2127*28e138c6SAndroid Build Coastguard Worker
2128*28e138c6SAndroid Build Coastguard Worker\end_inset
2129*28e138c6SAndroid Build Coastguard Worker
2130*28e138c6SAndroid Build Coastguard Worker for narrowband.
2131*28e138c6SAndroid Build Coastguard Worker\end_layout
2132*28e138c6SAndroid Build Coastguard Worker
2133*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2134*28e138c6SAndroid Build Coastguard WorkerOnce the initialization is done, for every input frame:
2135*28e138c6SAndroid Build Coastguard Worker\end_layout
2136*28e138c6SAndroid Build Coastguard Worker
2137*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2138*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2139*28e138c6SAndroid Build Coastguard Workerinline false
2140*28e138c6SAndroid Build Coastguard Workerstatus open
2141*28e138c6SAndroid Build Coastguard Worker
2142*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2143*28e138c6SAndroid Build Coastguard Worker
2144*28e138c6SAndroid Build Coastguard Workerspeex_bits_reset(&bits);
2145*28e138c6SAndroid Build Coastguard Worker\end_layout
2146*28e138c6SAndroid Build Coastguard Worker
2147*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2148*28e138c6SAndroid Build Coastguard Worker
2149*28e138c6SAndroid Build Coastguard Workerspeex_encode_int(enc_state, input_frame, &bits);
2150*28e138c6SAndroid Build Coastguard Worker\end_layout
2151*28e138c6SAndroid Build Coastguard Worker
2152*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2153*28e138c6SAndroid Build Coastguard Worker
2154*28e138c6SAndroid Build Coastguard WorkernbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);
2155*28e138c6SAndroid Build Coastguard Worker\end_layout
2156*28e138c6SAndroid Build Coastguard Worker
2157*28e138c6SAndroid Build Coastguard Worker\end_inset
2158*28e138c6SAndroid Build Coastguard Worker
2159*28e138c6SAndroid Build Coastguard Worker
2160*28e138c6SAndroid Build Coastguard Worker\end_layout
2161*28e138c6SAndroid Build Coastguard Worker
2162*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2163*28e138c6SAndroid Build Coastguard Workerwhere
2164*28e138c6SAndroid Build Coastguard Worker\emph on
2165*28e138c6SAndroid Build Coastguard Workerinput_frame
2166*28e138c6SAndroid Build Coastguard Worker\emph default
2167*28e138c6SAndroid Build Coastguard Worker is a
2168*28e138c6SAndroid Build Coastguard Worker\emph on
2169*28e138c6SAndroid Build Coastguard Worker(
2170*28e138c6SAndroid Build Coastguard Worker\emph default
2171*28e138c6SAndroid Build Coastguard Workershort
2172*28e138c6SAndroid Build Coastguard Worker\emph on
2173*28e138c6SAndroid Build Coastguard Worker*)
2174*28e138c6SAndroid Build Coastguard Worker\emph default
2175*28e138c6SAndroid Build Coastguard Worker pointing to the beginning of a speech frame,
2176*28e138c6SAndroid Build Coastguard Worker\emph on
2177*28e138c6SAndroid Build Coastguard Workerbyte_ptr
2178*28e138c6SAndroid Build Coastguard Worker\emph default
2179*28e138c6SAndroid Build Coastguard Worker is a
2180*28e138c6SAndroid Build Coastguard Worker\emph on
2181*28e138c6SAndroid Build Coastguard Worker(char *)
2182*28e138c6SAndroid Build Coastguard Worker\emph default
2183*28e138c6SAndroid Build Coastguard Worker where the encoded frame will be written,
2184*28e138c6SAndroid Build Coastguard Worker\emph on
2185*28e138c6SAndroid Build Coastguard WorkerMAX_NB_BYTES
2186*28e138c6SAndroid Build Coastguard Worker\emph default
2187*28e138c6SAndroid Build Coastguard Worker is the maximum number of bytes that can be written to
2188*28e138c6SAndroid Build Coastguard Worker\emph on
2189*28e138c6SAndroid Build Coastguard Workerbyte_ptr
2190*28e138c6SAndroid Build Coastguard Worker\emph default
2191*28e138c6SAndroid Build Coastguard Worker without causing an overflow and
2192*28e138c6SAndroid Build Coastguard Worker\emph on
2193*28e138c6SAndroid Build Coastguard WorkernbBytes
2194*28e138c6SAndroid Build Coastguard Worker\emph default
2195*28e138c6SAndroid Build Coastguard Worker is the number of bytes actually written to
2196*28e138c6SAndroid Build Coastguard Worker\emph on
2197*28e138c6SAndroid Build Coastguard Workerbyte_ptr
2198*28e138c6SAndroid Build Coastguard Worker\emph default
2199*28e138c6SAndroid Build Coastguard Worker (the encoded size in bytes).
2200*28e138c6SAndroid Build Coastguard Worker Before calling speex_bits_write, it is possible to find the number of bytes
2201*28e138c6SAndroid Build Coastguard Worker that need to be written by calling
2202*28e138c6SAndroid Build Coastguard Worker\family typewriter
2203*28e138c6SAndroid Build Coastguard Workerspeex_bits_nbytes(&bits)
2204*28e138c6SAndroid Build Coastguard Worker\family default
2205*28e138c6SAndroid Build Coastguard Worker, which returns a number of bytes.
2206*28e138c6SAndroid Build Coastguard Worker\end_layout
2207*28e138c6SAndroid Build Coastguard Worker
2208*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2209*28e138c6SAndroid Build Coastguard WorkerIt is still possible to use the
2210*28e138c6SAndroid Build Coastguard Worker\emph on
2211*28e138c6SAndroid Build Coastguard Workerspeex_encode()
2212*28e138c6SAndroid Build Coastguard Worker\emph default
2213*28e138c6SAndroid Build Coastguard Worker function, which takes a
2214*28e138c6SAndroid Build Coastguard Worker\emph on
2215*28e138c6SAndroid Build Coastguard Worker(float *)
2216*28e138c6SAndroid Build Coastguard Worker\emph default
2217*28e138c6SAndroid Build Coastguard Worker for the audio.
2218*28e138c6SAndroid Build Coastguard Worker However, this would make an eventual port to an FPU-less platform (like
2219*28e138c6SAndroid Build Coastguard Worker ARM) more complicated.
2220*28e138c6SAndroid Build Coastguard Worker Internally,
2221*28e138c6SAndroid Build Coastguard Worker\emph on
2222*28e138c6SAndroid Build Coastguard Workerspeex_encode()
2223*28e138c6SAndroid Build Coastguard Worker\emph default
2224*28e138c6SAndroid Build Coastguard Worker and
2225*28e138c6SAndroid Build Coastguard Worker\emph on
2226*28e138c6SAndroid Build Coastguard Workerspeex_encode_int()
2227*28e138c6SAndroid Build Coastguard Worker\emph default
2228*28e138c6SAndroid Build Coastguard Worker are processed in the same way.
2229*28e138c6SAndroid Build Coastguard Worker Whether the encoder uses the fixed-point version is only decided by the
2230*28e138c6SAndroid Build Coastguard Worker compile-time flags, not at the API level.
2231*28e138c6SAndroid Build Coastguard Worker\end_layout
2232*28e138c6SAndroid Build Coastguard Worker
2233*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2234*28e138c6SAndroid Build Coastguard WorkerAfter you're done with the encoding, free all resources with:
2235*28e138c6SAndroid Build Coastguard Worker\end_layout
2236*28e138c6SAndroid Build Coastguard Worker
2237*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2238*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2239*28e138c6SAndroid Build Coastguard Workerinline false
2240*28e138c6SAndroid Build Coastguard Workerstatus open
2241*28e138c6SAndroid Build Coastguard Worker
2242*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2243*28e138c6SAndroid Build Coastguard Worker
2244*28e138c6SAndroid Build Coastguard Workerspeex_bits_destroy(&bits);
2245*28e138c6SAndroid Build Coastguard Worker\end_layout
2246*28e138c6SAndroid Build Coastguard Worker
2247*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2248*28e138c6SAndroid Build Coastguard Worker
2249*28e138c6SAndroid Build Coastguard Workerspeex_encoder_destroy(enc_state);
2250*28e138c6SAndroid Build Coastguard Worker\end_layout
2251*28e138c6SAndroid Build Coastguard Worker
2252*28e138c6SAndroid Build Coastguard Worker\end_inset
2253*28e138c6SAndroid Build Coastguard Worker
2254*28e138c6SAndroid Build Coastguard Worker
2255*28e138c6SAndroid Build Coastguard Worker\end_layout
2256*28e138c6SAndroid Build Coastguard Worker
2257*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2258*28e138c6SAndroid Build Coastguard WorkerThat's about it for the encoder.
2259*28e138c6SAndroid Build Coastguard Worker
2260*28e138c6SAndroid Build Coastguard Worker\end_layout
2261*28e138c6SAndroid Build Coastguard Worker
2262*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
2263*28e138c6SAndroid Build Coastguard WorkerDecoding
2264*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
2265*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
2266*28e138c6SAndroid Build Coastguard Workername "sub:Decoding"
2267*28e138c6SAndroid Build Coastguard Worker
2268*28e138c6SAndroid Build Coastguard Worker\end_inset
2269*28e138c6SAndroid Build Coastguard Worker
2270*28e138c6SAndroid Build Coastguard Worker
2271*28e138c6SAndroid Build Coastguard Worker\end_layout
2272*28e138c6SAndroid Build Coastguard Worker
2273*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2274*28e138c6SAndroid Build Coastguard WorkerIn order to decode speech using Speex, you first need to:
2275*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2276*28e138c6SAndroid Build Coastguard Workerinline false
2277*28e138c6SAndroid Build Coastguard Workerstatus open
2278*28e138c6SAndroid Build Coastguard Worker
2279*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2280*28e138c6SAndroid Build Coastguard Worker
2281*28e138c6SAndroid Build Coastguard Worker#include <speex/speex.h>
2282*28e138c6SAndroid Build Coastguard Worker\end_layout
2283*28e138c6SAndroid Build Coastguard Worker
2284*28e138c6SAndroid Build Coastguard Worker\end_inset
2285*28e138c6SAndroid Build Coastguard Worker
2286*28e138c6SAndroid Build Coastguard WorkerYou also need to declare a Speex bit-packing struct
2287*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2288*28e138c6SAndroid Build Coastguard Workerinline false
2289*28e138c6SAndroid Build Coastguard Workerstatus open
2290*28e138c6SAndroid Build Coastguard Worker
2291*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2292*28e138c6SAndroid Build Coastguard Worker
2293*28e138c6SAndroid Build Coastguard WorkerSpeexBits bits;
2294*28e138c6SAndroid Build Coastguard Worker\end_layout
2295*28e138c6SAndroid Build Coastguard Worker
2296*28e138c6SAndroid Build Coastguard Worker\end_inset
2297*28e138c6SAndroid Build Coastguard Worker
2298*28e138c6SAndroid Build Coastguard Workerand a Speex decoder state
2299*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2300*28e138c6SAndroid Build Coastguard Workerinline false
2301*28e138c6SAndroid Build Coastguard Workerstatus open
2302*28e138c6SAndroid Build Coastguard Worker
2303*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2304*28e138c6SAndroid Build Coastguard Worker
2305*28e138c6SAndroid Build Coastguard Workervoid *dec_state;
2306*28e138c6SAndroid Build Coastguard Worker\end_layout
2307*28e138c6SAndroid Build Coastguard Worker
2308*28e138c6SAndroid Build Coastguard Worker\end_inset
2309*28e138c6SAndroid Build Coastguard Worker
2310*28e138c6SAndroid Build Coastguard WorkerThe two are initialized by:
2311*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2312*28e138c6SAndroid Build Coastguard Workerinline false
2313*28e138c6SAndroid Build Coastguard Workerstatus open
2314*28e138c6SAndroid Build Coastguard Worker
2315*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2316*28e138c6SAndroid Build Coastguard Worker
2317*28e138c6SAndroid Build Coastguard Workerspeex_bits_init(&bits);
2318*28e138c6SAndroid Build Coastguard Worker\end_layout
2319*28e138c6SAndroid Build Coastguard Worker
2320*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2321*28e138c6SAndroid Build Coastguard Worker
2322*28e138c6SAndroid Build Coastguard Workerdec_state = speex_decoder_init(&speex_nb_mode);
2323*28e138c6SAndroid Build Coastguard Worker\end_layout
2324*28e138c6SAndroid Build Coastguard Worker
2325*28e138c6SAndroid Build Coastguard Worker\end_inset
2326*28e138c6SAndroid Build Coastguard Worker
2327*28e138c6SAndroid Build Coastguard Worker
2328*28e138c6SAndroid Build Coastguard Worker\end_layout
2329*28e138c6SAndroid Build Coastguard Worker
2330*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2331*28e138c6SAndroid Build Coastguard WorkerFor wideband decoding,
2332*28e138c6SAndroid Build Coastguard Worker\emph on
2333*28e138c6SAndroid Build Coastguard Workerspeex_nb_mode
2334*28e138c6SAndroid Build Coastguard Worker\emph default
2335*28e138c6SAndroid Build Coastguard Worker will be replaced by
2336*28e138c6SAndroid Build Coastguard Worker\emph on
2337*28e138c6SAndroid Build Coastguard Workerspeex_wb_mode
2338*28e138c6SAndroid Build Coastguard Worker\emph default
2339*28e138c6SAndroid Build Coastguard Worker.
2340*28e138c6SAndroid Build Coastguard Worker If you need to obtain the size of the frames that will be used by the decoder,
2341*28e138c6SAndroid Build Coastguard Worker you can get that value in the
2342*28e138c6SAndroid Build Coastguard Worker\emph on
2343*28e138c6SAndroid Build Coastguard Workerframe_size
2344*28e138c6SAndroid Build Coastguard Worker\emph default
2345*28e138c6SAndroid Build Coastguard Worker variable (expressed in
2346*28e138c6SAndroid Build Coastguard Worker\series bold
2347*28e138c6SAndroid Build Coastguard Workersamples
2348*28e138c6SAndroid Build Coastguard Worker\series default
2349*28e138c6SAndroid Build Coastguard Worker, not bytes) with:
2350*28e138c6SAndroid Build Coastguard Worker\end_layout
2351*28e138c6SAndroid Build Coastguard Worker
2352*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2353*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2354*28e138c6SAndroid Build Coastguard Workerinline false
2355*28e138c6SAndroid Build Coastguard Workerstatus open
2356*28e138c6SAndroid Build Coastguard Worker
2357*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2358*28e138c6SAndroid Build Coastguard Worker
2359*28e138c6SAndroid Build Coastguard Workerspeex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size);
2360*28e138c6SAndroid Build Coastguard Worker\end_layout
2361*28e138c6SAndroid Build Coastguard Worker
2362*28e138c6SAndroid Build Coastguard Worker\end_inset
2363*28e138c6SAndroid Build Coastguard Worker
2364*28e138c6SAndroid Build Coastguard Worker
2365*28e138c6SAndroid Build Coastguard Worker\end_layout
2366*28e138c6SAndroid Build Coastguard Worker
2367*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2368*28e138c6SAndroid Build Coastguard WorkerThere is also a parameter that can be set for the decoder: whether or not
2369*28e138c6SAndroid Build Coastguard Worker to use a perceptual enhancer.
2370*28e138c6SAndroid Build Coastguard Worker This can be set by:
2371*28e138c6SAndroid Build Coastguard Worker\end_layout
2372*28e138c6SAndroid Build Coastguard Worker
2373*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2374*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2375*28e138c6SAndroid Build Coastguard Workerinline false
2376*28e138c6SAndroid Build Coastguard Workerstatus open
2377*28e138c6SAndroid Build Coastguard Worker
2378*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2379*28e138c6SAndroid Build Coastguard Worker
2380*28e138c6SAndroid Build Coastguard Workerspeex_decoder_ctl(dec_state, SPEEX_SET_ENH, &enh);
2381*28e138c6SAndroid Build Coastguard Worker\end_layout
2382*28e138c6SAndroid Build Coastguard Worker
2383*28e138c6SAndroid Build Coastguard Worker\end_inset
2384*28e138c6SAndroid Build Coastguard Worker
2385*28e138c6SAndroid Build Coastguard Worker
2386*28e138c6SAndroid Build Coastguard Worker\end_layout
2387*28e138c6SAndroid Build Coastguard Worker
2388*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2389*28e138c6SAndroid Build Coastguard Workerwhere
2390*28e138c6SAndroid Build Coastguard Worker\emph on
2391*28e138c6SAndroid Build Coastguard Workerenh
2392*28e138c6SAndroid Build Coastguard Worker\emph default
2393*28e138c6SAndroid Build Coastguard Worker is an int with value 0 to have the enhancer disabled and 1 to have it enabled.
2394*28e138c6SAndroid Build Coastguard Worker As of 1.2-beta1, the default is now to enable the enhancer.
2395*28e138c6SAndroid Build Coastguard Worker\end_layout
2396*28e138c6SAndroid Build Coastguard Worker
2397*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2398*28e138c6SAndroid Build Coastguard WorkerAgain, once the decoder initialization is done, for every input frame:
2399*28e138c6SAndroid Build Coastguard Worker\end_layout
2400*28e138c6SAndroid Build Coastguard Worker
2401*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2402*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2403*28e138c6SAndroid Build Coastguard Workerinline false
2404*28e138c6SAndroid Build Coastguard Workerstatus open
2405*28e138c6SAndroid Build Coastguard Worker
2406*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2407*28e138c6SAndroid Build Coastguard Worker
2408*28e138c6SAndroid Build Coastguard Workerspeex_bits_read_from(&bits, input_bytes, nbBytes);
2409*28e138c6SAndroid Build Coastguard Worker\end_layout
2410*28e138c6SAndroid Build Coastguard Worker
2411*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2412*28e138c6SAndroid Build Coastguard Worker
2413*28e138c6SAndroid Build Coastguard Workerspeex_decode_int(dec_state, &bits, output_frame);
2414*28e138c6SAndroid Build Coastguard Worker\end_layout
2415*28e138c6SAndroid Build Coastguard Worker
2416*28e138c6SAndroid Build Coastguard Worker\end_inset
2417*28e138c6SAndroid Build Coastguard Worker
2418*28e138c6SAndroid Build Coastguard Workerwhere input_bytes is a
2419*28e138c6SAndroid Build Coastguard Worker\emph on
2420*28e138c6SAndroid Build Coastguard Worker(char *)
2421*28e138c6SAndroid Build Coastguard Worker\emph default
2422*28e138c6SAndroid Build Coastguard Worker containing the bit-stream data received for a frame,
2423*28e138c6SAndroid Build Coastguard Worker\emph on
2424*28e138c6SAndroid Build Coastguard WorkernbBytes
2425*28e138c6SAndroid Build Coastguard Worker\emph default
2426*28e138c6SAndroid Build Coastguard Worker is the size (in bytes) of that bit-stream, and
2427*28e138c6SAndroid Build Coastguard Worker\emph on
2428*28e138c6SAndroid Build Coastguard Workeroutput_frame
2429*28e138c6SAndroid Build Coastguard Worker\emph default
2430*28e138c6SAndroid Build Coastguard Worker is a
2431*28e138c6SAndroid Build Coastguard Worker\emph on
2432*28e138c6SAndroid Build Coastguard Worker(short *)
2433*28e138c6SAndroid Build Coastguard Worker\emph default
2434*28e138c6SAndroid Build Coastguard Worker and points to the area where the decoded speech frame will be written.
2435*28e138c6SAndroid Build Coastguard Worker A NULL value as the second argument indicates that we don't have the bits
2436*28e138c6SAndroid Build Coastguard Worker for the current frame.
2437*28e138c6SAndroid Build Coastguard Worker When a frame is lost, the Speex decoder will do its best to "guess" the
2438*28e138c6SAndroid Build Coastguard Worker correct signal.
2439*28e138c6SAndroid Build Coastguard Worker\end_layout
2440*28e138c6SAndroid Build Coastguard Worker
2441*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2442*28e138c6SAndroid Build Coastguard WorkerAs for the encoder, the
2443*28e138c6SAndroid Build Coastguard Worker\emph on
2444*28e138c6SAndroid Build Coastguard Workerspeex_decode()
2445*28e138c6SAndroid Build Coastguard Worker\emph default
2446*28e138c6SAndroid Build Coastguard Worker function can still be used, with a
2447*28e138c6SAndroid Build Coastguard Worker\emph on
2448*28e138c6SAndroid Build Coastguard Worker(float *)
2449*28e138c6SAndroid Build Coastguard Worker\emph default
2450*28e138c6SAndroid Build Coastguard Worker as the output for the audio.
2451*28e138c6SAndroid Build Coastguard Worker After you're done with the decoding, free all resources with:
2452*28e138c6SAndroid Build Coastguard Worker\end_layout
2453*28e138c6SAndroid Build Coastguard Worker
2454*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2455*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2456*28e138c6SAndroid Build Coastguard Workerinline false
2457*28e138c6SAndroid Build Coastguard Workerstatus open
2458*28e138c6SAndroid Build Coastguard Worker
2459*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2460*28e138c6SAndroid Build Coastguard Worker
2461*28e138c6SAndroid Build Coastguard Workerspeex_bits_destroy(&bits);
2462*28e138c6SAndroid Build Coastguard Worker\end_layout
2463*28e138c6SAndroid Build Coastguard Worker
2464*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2465*28e138c6SAndroid Build Coastguard Worker
2466*28e138c6SAndroid Build Coastguard Workerspeex_decoder_destroy(dec_state);
2467*28e138c6SAndroid Build Coastguard Worker\end_layout
2468*28e138c6SAndroid Build Coastguard Worker
2469*28e138c6SAndroid Build Coastguard Worker\end_inset
2470*28e138c6SAndroid Build Coastguard Worker
2471*28e138c6SAndroid Build Coastguard Worker
2472*28e138c6SAndroid Build Coastguard Worker\end_layout
2473*28e138c6SAndroid Build Coastguard Worker
2474*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
2475*28e138c6SAndroid Build Coastguard WorkerCodec Options (speex_*_ctl)
2476*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
2477*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
2478*28e138c6SAndroid Build Coastguard Workername "sub:Codec-Options"
2479*28e138c6SAndroid Build Coastguard Worker
2480*28e138c6SAndroid Build Coastguard Worker\end_inset
2481*28e138c6SAndroid Build Coastguard Worker
2482*28e138c6SAndroid Build Coastguard Worker
2483*28e138c6SAndroid Build Coastguard Worker\end_layout
2484*28e138c6SAndroid Build Coastguard Worker
2485*28e138c6SAndroid Build Coastguard Worker\begin_layout Quote
2486*28e138c6SAndroid Build Coastguard Worker\align center
2487*28e138c6SAndroid Build Coastguard Worker
2488*28e138c6SAndroid Build Coastguard Worker\emph on
2489*28e138c6SAndroid Build Coastguard WorkerEntities should not be multiplied beyond necessity -- William of Ockham.
2490*28e138c6SAndroid Build Coastguard Worker\end_layout
2491*28e138c6SAndroid Build Coastguard Worker
2492*28e138c6SAndroid Build Coastguard Worker\begin_layout Quote
2493*28e138c6SAndroid Build Coastguard Worker\align center
2494*28e138c6SAndroid Build Coastguard Worker
2495*28e138c6SAndroid Build Coastguard Worker\emph on
2496*28e138c6SAndroid Build Coastguard WorkerJust because there's an option for it doesn't mean you have to turn it on
2497*28e138c6SAndroid Build Coastguard Worker -- me.
2498*28e138c6SAndroid Build Coastguard Worker\end_layout
2499*28e138c6SAndroid Build Coastguard Worker
2500*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2501*28e138c6SAndroid Build Coastguard WorkerThe Speex encoder and decoder support many options and requests that can
2502*28e138c6SAndroid Build Coastguard Worker be accessed through the
2503*28e138c6SAndroid Build Coastguard Worker\emph on
2504*28e138c6SAndroid Build Coastguard Workerspeex_encoder_ctl
2505*28e138c6SAndroid Build Coastguard Worker\emph default
2506*28e138c6SAndroid Build Coastguard Worker and
2507*28e138c6SAndroid Build Coastguard Worker\emph on
2508*28e138c6SAndroid Build Coastguard Workerspeex_decoder_ctl
2509*28e138c6SAndroid Build Coastguard Worker\emph default
2510*28e138c6SAndroid Build Coastguard Worker functions.
2511*28e138c6SAndroid Build Coastguard Worker These functions are similar to the
2512*28e138c6SAndroid Build Coastguard Worker\emph on
2513*28e138c6SAndroid Build Coastguard Workerioctl
2514*28e138c6SAndroid Build Coastguard Worker\emph default
2515*28e138c6SAndroid Build Coastguard Worker system call and their prototypes are:
2516*28e138c6SAndroid Build Coastguard Worker\end_layout
2517*28e138c6SAndroid Build Coastguard Worker
2518*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2519*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2520*28e138c6SAndroid Build Coastguard Workerinline false
2521*28e138c6SAndroid Build Coastguard Workerstatus open
2522*28e138c6SAndroid Build Coastguard Worker
2523*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2524*28e138c6SAndroid Build Coastguard Worker
2525*28e138c6SAndroid Build Coastguard Workervoid speex_encoder_ctl(void *encoder, int request, void *ptr);
2526*28e138c6SAndroid Build Coastguard Worker\end_layout
2527*28e138c6SAndroid Build Coastguard Worker
2528*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2529*28e138c6SAndroid Build Coastguard Worker
2530*28e138c6SAndroid Build Coastguard Workervoid speex_decoder_ctl(void *encoder, int request, void *ptr);
2531*28e138c6SAndroid Build Coastguard Worker\end_layout
2532*28e138c6SAndroid Build Coastguard Worker
2533*28e138c6SAndroid Build Coastguard Worker\end_inset
2534*28e138c6SAndroid Build Coastguard Worker
2535*28e138c6SAndroid Build Coastguard Worker
2536*28e138c6SAndroid Build Coastguard Worker\end_layout
2537*28e138c6SAndroid Build Coastguard Worker
2538*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2539*28e138c6SAndroid Build Coastguard WorkerDespite those functions, the defaults are usually good for many applications
2540*28e138c6SAndroid Build Coastguard Worker and
2541*28e138c6SAndroid Build Coastguard Worker\series bold
2542*28e138c6SAndroid Build Coastguard Workeroptional settings should only be used when one understands them and knows
2543*28e138c6SAndroid Build Coastguard Worker that they are needed
2544*28e138c6SAndroid Build Coastguard Worker\series default
2545*28e138c6SAndroid Build Coastguard Worker.
2546*28e138c6SAndroid Build Coastguard Worker A common error is to attempt to set many unnecessary settings.
2547*28e138c6SAndroid Build Coastguard Worker
2548*28e138c6SAndroid Build Coastguard Worker\end_layout
2549*28e138c6SAndroid Build Coastguard Worker
2550*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
2551*28e138c6SAndroid Build Coastguard WorkerHere is a list of the values allowed for the requests.
2552*28e138c6SAndroid Build Coastguard Worker Some only apply to the encoder or the decoder.
2553*28e138c6SAndroid Build Coastguard Worker Because the last argument is of type
2554*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2555*28e138c6SAndroid Build Coastguard Workerinline true
2556*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2557*28e138c6SAndroid Build Coastguard Worker
2558*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2559*28e138c6SAndroid Build Coastguard Worker
2560*28e138c6SAndroid Build Coastguard Workervoid *
2561*28e138c6SAndroid Build Coastguard Worker\end_layout
2562*28e138c6SAndroid Build Coastguard Worker
2563*28e138c6SAndroid Build Coastguard Worker\end_inset
2564*28e138c6SAndroid Build Coastguard Worker
2565*28e138c6SAndroid Build Coastguard Worker, the
2566*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2567*28e138c6SAndroid Build Coastguard Workerinline true
2568*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2569*28e138c6SAndroid Build Coastguard Worker
2570*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2571*28e138c6SAndroid Build Coastguard Worker
2572*28e138c6SAndroid Build Coastguard Worker_ctl()
2573*28e138c6SAndroid Build Coastguard Worker\end_layout
2574*28e138c6SAndroid Build Coastguard Worker
2575*28e138c6SAndroid Build Coastguard Worker\end_inset
2576*28e138c6SAndroid Build Coastguard Worker
2577*28e138c6SAndroid Build Coastguard Worker functions are
2578*28e138c6SAndroid Build Coastguard Worker\series bold
2579*28e138c6SAndroid Build Coastguard Workernot type safe
2580*28e138c6SAndroid Build Coastguard Worker\series default
2581*28e138c6SAndroid Build Coastguard Worker, and should thus be used with care.
2582*28e138c6SAndroid Build Coastguard Worker The type
2583*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2584*28e138c6SAndroid Build Coastguard Workerinline true
2585*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2586*28e138c6SAndroid Build Coastguard Worker
2587*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2588*28e138c6SAndroid Build Coastguard Worker
2589*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2590*28e138c6SAndroid Build Coastguard Worker\end_layout
2591*28e138c6SAndroid Build Coastguard Worker
2592*28e138c6SAndroid Build Coastguard Worker\end_inset
2593*28e138c6SAndroid Build Coastguard Worker
2594*28e138c6SAndroid Build Coastguard Worker is the same as the C99
2595*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2596*28e138c6SAndroid Build Coastguard Workerinline true
2597*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2598*28e138c6SAndroid Build Coastguard Worker
2599*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2600*28e138c6SAndroid Build Coastguard Worker
2601*28e138c6SAndroid Build Coastguard Workerint32_t
2602*28e138c6SAndroid Build Coastguard Worker\end_layout
2603*28e138c6SAndroid Build Coastguard Worker
2604*28e138c6SAndroid Build Coastguard Worker\end_inset
2605*28e138c6SAndroid Build Coastguard Worker
2606*28e138c6SAndroid Build Coastguard Worker type.
2607*28e138c6SAndroid Build Coastguard Worker\end_layout
2608*28e138c6SAndroid Build Coastguard Worker
2609*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2610*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_ENH
2611*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\ddagger$
2612*28e138c6SAndroid Build Coastguard Worker\end_inset
2613*28e138c6SAndroid Build Coastguard Worker
2614*28e138c6SAndroid Build Coastguard Worker Set perceptual enhancer
2615*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
2616*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2617*28e138c6SAndroid Build Coastguard Worker
2618*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2619*28e138c6SAndroid Build Coastguard Workerperceptual enhancement
2620*28e138c6SAndroid Build Coastguard Worker\end_layout
2621*28e138c6SAndroid Build Coastguard Worker
2622*28e138c6SAndroid Build Coastguard Worker\end_inset
2623*28e138c6SAndroid Build Coastguard Worker
2624*28e138c6SAndroid Build Coastguard Worker to on (1) or off (0) (
2625*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2626*28e138c6SAndroid Build Coastguard Workerinline true
2627*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2628*28e138c6SAndroid Build Coastguard Worker
2629*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2630*28e138c6SAndroid Build Coastguard Worker
2631*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2632*28e138c6SAndroid Build Coastguard Worker\end_layout
2633*28e138c6SAndroid Build Coastguard Worker
2634*28e138c6SAndroid Build Coastguard Worker\end_inset
2635*28e138c6SAndroid Build Coastguard Worker
2636*28e138c6SAndroid Build Coastguard Worker, default is on)
2637*28e138c6SAndroid Build Coastguard Worker\end_layout
2638*28e138c6SAndroid Build Coastguard Worker
2639*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2640*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_ENH
2641*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\ddagger$
2642*28e138c6SAndroid Build Coastguard Worker\end_inset
2643*28e138c6SAndroid Build Coastguard Worker
2644*28e138c6SAndroid Build Coastguard Worker Get perceptual enhancer status (
2645*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2646*28e138c6SAndroid Build Coastguard Workerinline true
2647*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2648*28e138c6SAndroid Build Coastguard Worker
2649*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2650*28e138c6SAndroid Build Coastguard Worker
2651*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2652*28e138c6SAndroid Build Coastguard Worker\end_layout
2653*28e138c6SAndroid Build Coastguard Worker
2654*28e138c6SAndroid Build Coastguard Worker\end_inset
2655*28e138c6SAndroid Build Coastguard Worker
2656*28e138c6SAndroid Build Coastguard Worker)
2657*28e138c6SAndroid Build Coastguard Worker\end_layout
2658*28e138c6SAndroid Build Coastguard Worker
2659*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2660*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_FRAME_SIZE Get the number of samples per frame for the current
2661*28e138c6SAndroid Build Coastguard Worker mode (
2662*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2663*28e138c6SAndroid Build Coastguard Workerinline true
2664*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2665*28e138c6SAndroid Build Coastguard Worker
2666*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2667*28e138c6SAndroid Build Coastguard Worker
2668*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2669*28e138c6SAndroid Build Coastguard Worker\end_layout
2670*28e138c6SAndroid Build Coastguard Worker
2671*28e138c6SAndroid Build Coastguard Worker\end_inset
2672*28e138c6SAndroid Build Coastguard Worker
2673*28e138c6SAndroid Build Coastguard Worker)
2674*28e138c6SAndroid Build Coastguard Worker\end_layout
2675*28e138c6SAndroid Build Coastguard Worker
2676*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2677*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_QUALITY
2678*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2679*28e138c6SAndroid Build Coastguard Worker\end_inset
2680*28e138c6SAndroid Build Coastguard Worker
2681*28e138c6SAndroid Build Coastguard Worker Set the encoder speech quality (
2682*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2683*28e138c6SAndroid Build Coastguard Workerinline true
2684*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2685*28e138c6SAndroid Build Coastguard Worker
2686*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2687*28e138c6SAndroid Build Coastguard Worker
2688*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2689*28e138c6SAndroid Build Coastguard Worker\end_layout
2690*28e138c6SAndroid Build Coastguard Worker
2691*28e138c6SAndroid Build Coastguard Worker\end_inset
2692*28e138c6SAndroid Build Coastguard Worker
2693*28e138c6SAndroid Build Coastguard Worker from 0 to 10, default is 8)
2694*28e138c6SAndroid Build Coastguard Worker\end_layout
2695*28e138c6SAndroid Build Coastguard Worker
2696*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2697*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_QUALITY
2698*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2699*28e138c6SAndroid Build Coastguard Worker\end_inset
2700*28e138c6SAndroid Build Coastguard Worker
2701*28e138c6SAndroid Build Coastguard Worker Get the current encoder speech quality (
2702*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2703*28e138c6SAndroid Build Coastguard Workerinline true
2704*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2705*28e138c6SAndroid Build Coastguard Worker
2706*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2707*28e138c6SAndroid Build Coastguard Worker
2708*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2709*28e138c6SAndroid Build Coastguard Worker\end_layout
2710*28e138c6SAndroid Build Coastguard Worker
2711*28e138c6SAndroid Build Coastguard Worker\end_inset
2712*28e138c6SAndroid Build Coastguard Worker
2713*28e138c6SAndroid Build Coastguard Worker from 0 to 10)
2714*28e138c6SAndroid Build Coastguard Worker\end_layout
2715*28e138c6SAndroid Build Coastguard Worker
2716*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2717*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_MODE
2718*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2719*28e138c6SAndroid Build Coastguard Worker\end_inset
2720*28e138c6SAndroid Build Coastguard Worker
2721*28e138c6SAndroid Build Coastguard Worker Set the mode number, as specified in the RTP spec (
2722*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2723*28e138c6SAndroid Build Coastguard Workerinline true
2724*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2725*28e138c6SAndroid Build Coastguard Worker
2726*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2727*28e138c6SAndroid Build Coastguard Worker
2728*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2729*28e138c6SAndroid Build Coastguard Worker\end_layout
2730*28e138c6SAndroid Build Coastguard Worker
2731*28e138c6SAndroid Build Coastguard Worker\end_inset
2732*28e138c6SAndroid Build Coastguard Worker
2733*28e138c6SAndroid Build Coastguard Worker)
2734*28e138c6SAndroid Build Coastguard Worker\end_layout
2735*28e138c6SAndroid Build Coastguard Worker
2736*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2737*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_MODE
2738*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2739*28e138c6SAndroid Build Coastguard Worker\end_inset
2740*28e138c6SAndroid Build Coastguard Worker
2741*28e138c6SAndroid Build Coastguard Worker Get the current mode number, as specified in the RTP spec (
2742*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2743*28e138c6SAndroid Build Coastguard Workerinline true
2744*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2745*28e138c6SAndroid Build Coastguard Worker
2746*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2747*28e138c6SAndroid Build Coastguard Worker
2748*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2749*28e138c6SAndroid Build Coastguard Worker\end_layout
2750*28e138c6SAndroid Build Coastguard Worker
2751*28e138c6SAndroid Build Coastguard Worker\end_inset
2752*28e138c6SAndroid Build Coastguard Worker
2753*28e138c6SAndroid Build Coastguard Worker)
2754*28e138c6SAndroid Build Coastguard Worker\end_layout
2755*28e138c6SAndroid Build Coastguard Worker
2756*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2757*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_VBR
2758*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2759*28e138c6SAndroid Build Coastguard Worker\end_inset
2760*28e138c6SAndroid Build Coastguard Worker
2761*28e138c6SAndroid Build Coastguard Worker Set variable bit-rate (VBR) to on (1) or off (0) (
2762*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2763*28e138c6SAndroid Build Coastguard Workerinline true
2764*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2765*28e138c6SAndroid Build Coastguard Worker
2766*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2767*28e138c6SAndroid Build Coastguard Worker
2768*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2769*28e138c6SAndroid Build Coastguard Worker\end_layout
2770*28e138c6SAndroid Build Coastguard Worker
2771*28e138c6SAndroid Build Coastguard Worker\end_inset
2772*28e138c6SAndroid Build Coastguard Worker
2773*28e138c6SAndroid Build Coastguard Worker, default is off)
2774*28e138c6SAndroid Build Coastguard Worker\end_layout
2775*28e138c6SAndroid Build Coastguard Worker
2776*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2777*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_VBR
2778*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2779*28e138c6SAndroid Build Coastguard Worker\end_inset
2780*28e138c6SAndroid Build Coastguard Worker
2781*28e138c6SAndroid Build Coastguard Worker Get variable bit-rate
2782*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
2783*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2784*28e138c6SAndroid Build Coastguard Worker
2785*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2786*28e138c6SAndroid Build Coastguard Workervariable bit-rate
2787*28e138c6SAndroid Build Coastguard Worker\end_layout
2788*28e138c6SAndroid Build Coastguard Worker
2789*28e138c6SAndroid Build Coastguard Worker\end_inset
2790*28e138c6SAndroid Build Coastguard Worker
2791*28e138c6SAndroid Build Coastguard Worker (VBR) status (
2792*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2793*28e138c6SAndroid Build Coastguard Workerinline true
2794*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2795*28e138c6SAndroid Build Coastguard Worker
2796*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2797*28e138c6SAndroid Build Coastguard Worker
2798*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2799*28e138c6SAndroid Build Coastguard Worker\end_layout
2800*28e138c6SAndroid Build Coastguard Worker
2801*28e138c6SAndroid Build Coastguard Worker\end_inset
2802*28e138c6SAndroid Build Coastguard Worker
2803*28e138c6SAndroid Build Coastguard Worker)
2804*28e138c6SAndroid Build Coastguard Worker\end_layout
2805*28e138c6SAndroid Build Coastguard Worker
2806*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2807*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_VBR_QUALITY
2808*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2809*28e138c6SAndroid Build Coastguard Worker\end_inset
2810*28e138c6SAndroid Build Coastguard Worker
2811*28e138c6SAndroid Build Coastguard Worker Set the encoder VBR speech quality (float 0.0 to 10.0, default is 8.0)
2812*28e138c6SAndroid Build Coastguard Worker\end_layout
2813*28e138c6SAndroid Build Coastguard Worker
2814*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2815*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_VBR_QUALITY
2816*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2817*28e138c6SAndroid Build Coastguard Worker\end_inset
2818*28e138c6SAndroid Build Coastguard Worker
2819*28e138c6SAndroid Build Coastguard Worker Get the current encoder VBR speech quality (float 0 to 10)
2820*28e138c6SAndroid Build Coastguard Worker\end_layout
2821*28e138c6SAndroid Build Coastguard Worker
2822*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2823*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_COMPLEXITY
2824*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2825*28e138c6SAndroid Build Coastguard Worker\end_inset
2826*28e138c6SAndroid Build Coastguard Worker
2827*28e138c6SAndroid Build Coastguard Worker Set the CPU resources allowed for the encoder (
2828*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2829*28e138c6SAndroid Build Coastguard Workerinline true
2830*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2831*28e138c6SAndroid Build Coastguard Worker
2832*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2833*28e138c6SAndroid Build Coastguard Worker
2834*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2835*28e138c6SAndroid Build Coastguard Worker\end_layout
2836*28e138c6SAndroid Build Coastguard Worker
2837*28e138c6SAndroid Build Coastguard Worker\end_inset
2838*28e138c6SAndroid Build Coastguard Worker
2839*28e138c6SAndroid Build Coastguard Worker from 1 to 10, default is 2)
2840*28e138c6SAndroid Build Coastguard Worker\end_layout
2841*28e138c6SAndroid Build Coastguard Worker
2842*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2843*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_COMPLEXITY
2844*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2845*28e138c6SAndroid Build Coastguard Worker\end_inset
2846*28e138c6SAndroid Build Coastguard Worker
2847*28e138c6SAndroid Build Coastguard Worker Get the CPU resources allowed for the encoder (
2848*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2849*28e138c6SAndroid Build Coastguard Workerinline true
2850*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2851*28e138c6SAndroid Build Coastguard Worker
2852*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2853*28e138c6SAndroid Build Coastguard Worker
2854*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2855*28e138c6SAndroid Build Coastguard Worker\end_layout
2856*28e138c6SAndroid Build Coastguard Worker
2857*28e138c6SAndroid Build Coastguard Worker\end_inset
2858*28e138c6SAndroid Build Coastguard Worker
2859*28e138c6SAndroid Build Coastguard Worker from 1 to 10, default is 2)
2860*28e138c6SAndroid Build Coastguard Worker\end_layout
2861*28e138c6SAndroid Build Coastguard Worker
2862*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2863*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_BITRATE
2864*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2865*28e138c6SAndroid Build Coastguard Worker\end_inset
2866*28e138c6SAndroid Build Coastguard Worker
2867*28e138c6SAndroid Build Coastguard Worker Set the bit-rate to use the closest value not exceeding the parameter (
2868*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2869*28e138c6SAndroid Build Coastguard Workerinline true
2870*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2871*28e138c6SAndroid Build Coastguard Worker
2872*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2873*28e138c6SAndroid Build Coastguard Worker
2874*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2875*28e138c6SAndroid Build Coastguard Worker\end_layout
2876*28e138c6SAndroid Build Coastguard Worker
2877*28e138c6SAndroid Build Coastguard Worker\end_inset
2878*28e138c6SAndroid Build Coastguard Worker
2879*28e138c6SAndroid Build Coastguard Worker in bits per second)
2880*28e138c6SAndroid Build Coastguard Worker\end_layout
2881*28e138c6SAndroid Build Coastguard Worker
2882*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2883*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_BITRATE Get the current bit-rate in use (
2884*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2885*28e138c6SAndroid Build Coastguard Workerinline true
2886*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2887*28e138c6SAndroid Build Coastguard Worker
2888*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2889*28e138c6SAndroid Build Coastguard Worker
2890*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2891*28e138c6SAndroid Build Coastguard Worker\end_layout
2892*28e138c6SAndroid Build Coastguard Worker
2893*28e138c6SAndroid Build Coastguard Worker\end_inset
2894*28e138c6SAndroid Build Coastguard Worker
2895*28e138c6SAndroid Build Coastguard Worker in bits per second)
2896*28e138c6SAndroid Build Coastguard Worker\end_layout
2897*28e138c6SAndroid Build Coastguard Worker
2898*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2899*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_SAMPLING_RATE Set real sampling rate (
2900*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2901*28e138c6SAndroid Build Coastguard Workerinline true
2902*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2903*28e138c6SAndroid Build Coastguard Worker
2904*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2905*28e138c6SAndroid Build Coastguard Worker
2906*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2907*28e138c6SAndroid Build Coastguard Worker\end_layout
2908*28e138c6SAndroid Build Coastguard Worker
2909*28e138c6SAndroid Build Coastguard Worker\end_inset
2910*28e138c6SAndroid Build Coastguard Worker
2911*28e138c6SAndroid Build Coastguard Worker in Hz)
2912*28e138c6SAndroid Build Coastguard Worker\end_layout
2913*28e138c6SAndroid Build Coastguard Worker
2914*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2915*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_SAMPLING_RATE Get real sampling rate (
2916*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2917*28e138c6SAndroid Build Coastguard Workerinline true
2918*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2919*28e138c6SAndroid Build Coastguard Worker
2920*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2921*28e138c6SAndroid Build Coastguard Worker
2922*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2923*28e138c6SAndroid Build Coastguard Worker\end_layout
2924*28e138c6SAndroid Build Coastguard Worker
2925*28e138c6SAndroid Build Coastguard Worker\end_inset
2926*28e138c6SAndroid Build Coastguard Worker
2927*28e138c6SAndroid Build Coastguard Worker in Hz)
2928*28e138c6SAndroid Build Coastguard Worker\end_layout
2929*28e138c6SAndroid Build Coastguard Worker
2930*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2931*28e138c6SAndroid Build Coastguard WorkerSPEEX_RESET_STATE Reset the encoder/decoder state to its original state,
2932*28e138c6SAndroid Build Coastguard Worker clearing all memories (no argument)
2933*28e138c6SAndroid Build Coastguard Worker\end_layout
2934*28e138c6SAndroid Build Coastguard Worker
2935*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2936*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_VAD
2937*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2938*28e138c6SAndroid Build Coastguard Worker\end_inset
2939*28e138c6SAndroid Build Coastguard Worker
2940*28e138c6SAndroid Build Coastguard Worker Set voice activity detection
2941*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
2942*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2943*28e138c6SAndroid Build Coastguard Worker
2944*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2945*28e138c6SAndroid Build Coastguard Workervoice activity detection
2946*28e138c6SAndroid Build Coastguard Worker\end_layout
2947*28e138c6SAndroid Build Coastguard Worker
2948*28e138c6SAndroid Build Coastguard Worker\end_inset
2949*28e138c6SAndroid Build Coastguard Worker
2950*28e138c6SAndroid Build Coastguard Worker (VAD) to on (1) or off (0) (
2951*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2952*28e138c6SAndroid Build Coastguard Workerinline true
2953*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2954*28e138c6SAndroid Build Coastguard Worker
2955*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2956*28e138c6SAndroid Build Coastguard Worker
2957*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2958*28e138c6SAndroid Build Coastguard Worker\end_layout
2959*28e138c6SAndroid Build Coastguard Worker
2960*28e138c6SAndroid Build Coastguard Worker\end_inset
2961*28e138c6SAndroid Build Coastguard Worker
2962*28e138c6SAndroid Build Coastguard Worker, default is off)
2963*28e138c6SAndroid Build Coastguard Worker\end_layout
2964*28e138c6SAndroid Build Coastguard Worker
2965*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2966*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_VAD
2967*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2968*28e138c6SAndroid Build Coastguard Worker\end_inset
2969*28e138c6SAndroid Build Coastguard Worker
2970*28e138c6SAndroid Build Coastguard Worker Get voice activity detection (VAD) status (
2971*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
2972*28e138c6SAndroid Build Coastguard Workerinline true
2973*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2974*28e138c6SAndroid Build Coastguard Worker
2975*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2976*28e138c6SAndroid Build Coastguard Worker
2977*28e138c6SAndroid Build Coastguard Workerspx_int32_t
2978*28e138c6SAndroid Build Coastguard Worker\end_layout
2979*28e138c6SAndroid Build Coastguard Worker
2980*28e138c6SAndroid Build Coastguard Worker\end_inset
2981*28e138c6SAndroid Build Coastguard Worker
2982*28e138c6SAndroid Build Coastguard Worker)
2983*28e138c6SAndroid Build Coastguard Worker\end_layout
2984*28e138c6SAndroid Build Coastguard Worker
2985*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
2986*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_DTX
2987*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
2988*28e138c6SAndroid Build Coastguard Worker\end_inset
2989*28e138c6SAndroid Build Coastguard Worker
2990*28e138c6SAndroid Build Coastguard Worker Set discontinuous transmission
2991*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
2992*28e138c6SAndroid Build Coastguard Workerstatus collapsed
2993*28e138c6SAndroid Build Coastguard Worker
2994*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
2995*28e138c6SAndroid Build Coastguard Workerdiscontinuous transmission
2996*28e138c6SAndroid Build Coastguard Worker\end_layout
2997*28e138c6SAndroid Build Coastguard Worker
2998*28e138c6SAndroid Build Coastguard Worker\end_inset
2999*28e138c6SAndroid Build Coastguard Worker
3000*28e138c6SAndroid Build Coastguard Worker (DTX) to on (1) or off (0) (
3001*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3002*28e138c6SAndroid Build Coastguard Workerinline true
3003*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3004*28e138c6SAndroid Build Coastguard Worker
3005*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3006*28e138c6SAndroid Build Coastguard Worker
3007*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3008*28e138c6SAndroid Build Coastguard Worker\end_layout
3009*28e138c6SAndroid Build Coastguard Worker
3010*28e138c6SAndroid Build Coastguard Worker\end_inset
3011*28e138c6SAndroid Build Coastguard Worker
3012*28e138c6SAndroid Build Coastguard Worker, default is off)
3013*28e138c6SAndroid Build Coastguard Worker\end_layout
3014*28e138c6SAndroid Build Coastguard Worker
3015*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3016*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_DTX
3017*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3018*28e138c6SAndroid Build Coastguard Worker\end_inset
3019*28e138c6SAndroid Build Coastguard Worker
3020*28e138c6SAndroid Build Coastguard Worker Get discontinuous transmission (DTX) status (
3021*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3022*28e138c6SAndroid Build Coastguard Workerinline true
3023*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3024*28e138c6SAndroid Build Coastguard Worker
3025*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3026*28e138c6SAndroid Build Coastguard Worker
3027*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3028*28e138c6SAndroid Build Coastguard Worker\end_layout
3029*28e138c6SAndroid Build Coastguard Worker
3030*28e138c6SAndroid Build Coastguard Worker\end_inset
3031*28e138c6SAndroid Build Coastguard Worker
3032*28e138c6SAndroid Build Coastguard Worker)
3033*28e138c6SAndroid Build Coastguard Worker\end_layout
3034*28e138c6SAndroid Build Coastguard Worker
3035*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3036*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_ABR
3037*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3038*28e138c6SAndroid Build Coastguard Worker\end_inset
3039*28e138c6SAndroid Build Coastguard Worker
3040*28e138c6SAndroid Build Coastguard Worker Set average bit-rate
3041*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
3042*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3043*28e138c6SAndroid Build Coastguard Worker
3044*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3045*28e138c6SAndroid Build Coastguard Workeraverage bit-rate
3046*28e138c6SAndroid Build Coastguard Worker\end_layout
3047*28e138c6SAndroid Build Coastguard Worker
3048*28e138c6SAndroid Build Coastguard Worker\end_inset
3049*28e138c6SAndroid Build Coastguard Worker
3050*28e138c6SAndroid Build Coastguard Worker (ABR) to a value n in bits per second (
3051*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3052*28e138c6SAndroid Build Coastguard Workerinline true
3053*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3054*28e138c6SAndroid Build Coastguard Worker
3055*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3056*28e138c6SAndroid Build Coastguard Worker
3057*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3058*28e138c6SAndroid Build Coastguard Worker\end_layout
3059*28e138c6SAndroid Build Coastguard Worker
3060*28e138c6SAndroid Build Coastguard Worker\end_inset
3061*28e138c6SAndroid Build Coastguard Worker
3062*28e138c6SAndroid Build Coastguard Worker in bits per second)
3063*28e138c6SAndroid Build Coastguard Worker\end_layout
3064*28e138c6SAndroid Build Coastguard Worker
3065*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3066*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_ABR
3067*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3068*28e138c6SAndroid Build Coastguard Worker\end_inset
3069*28e138c6SAndroid Build Coastguard Worker
3070*28e138c6SAndroid Build Coastguard Worker Get average bit-rate (ABR) setting (
3071*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3072*28e138c6SAndroid Build Coastguard Workerinline true
3073*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3074*28e138c6SAndroid Build Coastguard Worker
3075*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3076*28e138c6SAndroid Build Coastguard Worker
3077*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3078*28e138c6SAndroid Build Coastguard Worker\end_layout
3079*28e138c6SAndroid Build Coastguard Worker
3080*28e138c6SAndroid Build Coastguard Worker\end_inset
3081*28e138c6SAndroid Build Coastguard Worker
3082*28e138c6SAndroid Build Coastguard Worker in bits per second)
3083*28e138c6SAndroid Build Coastguard Worker\end_layout
3084*28e138c6SAndroid Build Coastguard Worker
3085*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3086*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_PLC_TUNING
3087*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3088*28e138c6SAndroid Build Coastguard Worker\end_inset
3089*28e138c6SAndroid Build Coastguard Worker
3090*28e138c6SAndroid Build Coastguard Worker Tell the encoder to optimize encoding for a certain percentage of packet
3091*28e138c6SAndroid Build Coastguard Worker loss (
3092*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3093*28e138c6SAndroid Build Coastguard Workerinline true
3094*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3095*28e138c6SAndroid Build Coastguard Worker
3096*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3097*28e138c6SAndroid Build Coastguard Worker
3098*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3099*28e138c6SAndroid Build Coastguard Worker\end_layout
3100*28e138c6SAndroid Build Coastguard Worker
3101*28e138c6SAndroid Build Coastguard Worker\end_inset
3102*28e138c6SAndroid Build Coastguard Worker
3103*28e138c6SAndroid Build Coastguard Worker in percent)
3104*28e138c6SAndroid Build Coastguard Worker\end_layout
3105*28e138c6SAndroid Build Coastguard Worker
3106*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3107*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_PLC_TUNING
3108*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3109*28e138c6SAndroid Build Coastguard Worker\end_inset
3110*28e138c6SAndroid Build Coastguard Worker
3111*28e138c6SAndroid Build Coastguard Worker Get the current tuning of the encoder for PLC (
3112*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3113*28e138c6SAndroid Build Coastguard Workerinline true
3114*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3115*28e138c6SAndroid Build Coastguard Worker
3116*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3117*28e138c6SAndroid Build Coastguard Worker
3118*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3119*28e138c6SAndroid Build Coastguard Worker\end_layout
3120*28e138c6SAndroid Build Coastguard Worker
3121*28e138c6SAndroid Build Coastguard Worker\end_inset
3122*28e138c6SAndroid Build Coastguard Worker
3123*28e138c6SAndroid Build Coastguard Worker in percent)
3124*28e138c6SAndroid Build Coastguard Worker\end_layout
3125*28e138c6SAndroid Build Coastguard Worker
3126*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3127*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_LOOKAHEAD Returns the lookahead used by Speex separately for an
3128*28e138c6SAndroid Build Coastguard Worker encoder and a decoder.
3129*28e138c6SAndroid Build Coastguard Worker Sum encoder and decoder lookahead values to get the total codec lookahead.
3130*28e138c6SAndroid Build Coastguard Worker\end_layout
3131*28e138c6SAndroid Build Coastguard Worker
3132*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3133*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_VBR_MAX_BITRATE
3134*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3135*28e138c6SAndroid Build Coastguard Worker\end_inset
3136*28e138c6SAndroid Build Coastguard Worker
3137*28e138c6SAndroid Build Coastguard Worker Set the maximum bit-rate allowed in VBR operation (
3138*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3139*28e138c6SAndroid Build Coastguard Workerinline true
3140*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3141*28e138c6SAndroid Build Coastguard Worker
3142*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3143*28e138c6SAndroid Build Coastguard Worker
3144*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3145*28e138c6SAndroid Build Coastguard Worker\end_layout
3146*28e138c6SAndroid Build Coastguard Worker
3147*28e138c6SAndroid Build Coastguard Worker\end_inset
3148*28e138c6SAndroid Build Coastguard Worker
3149*28e138c6SAndroid Build Coastguard Worker in bits per second)
3150*28e138c6SAndroid Build Coastguard Worker\end_layout
3151*28e138c6SAndroid Build Coastguard Worker
3152*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3153*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_VBR_MAX_BITRATE
3154*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3155*28e138c6SAndroid Build Coastguard Worker\end_inset
3156*28e138c6SAndroid Build Coastguard Worker
3157*28e138c6SAndroid Build Coastguard Worker Get the current maximum bit-rate allowed in VBR operation (
3158*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3159*28e138c6SAndroid Build Coastguard Workerinline true
3160*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3161*28e138c6SAndroid Build Coastguard Worker
3162*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3163*28e138c6SAndroid Build Coastguard Worker
3164*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3165*28e138c6SAndroid Build Coastguard Worker\end_layout
3166*28e138c6SAndroid Build Coastguard Worker
3167*28e138c6SAndroid Build Coastguard Worker\end_inset
3168*28e138c6SAndroid Build Coastguard Worker
3169*28e138c6SAndroid Build Coastguard Worker in bits per second)
3170*28e138c6SAndroid Build Coastguard Worker\end_layout
3171*28e138c6SAndroid Build Coastguard Worker
3172*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3173*28e138c6SAndroid Build Coastguard WorkerSPEEX_SET_HIGHPASS Set the high-pass filter on (1) or off (0) (
3174*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3175*28e138c6SAndroid Build Coastguard Workerinline true
3176*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3177*28e138c6SAndroid Build Coastguard Worker
3178*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3179*28e138c6SAndroid Build Coastguard Worker
3180*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3181*28e138c6SAndroid Build Coastguard Worker\end_layout
3182*28e138c6SAndroid Build Coastguard Worker
3183*28e138c6SAndroid Build Coastguard Worker\end_inset
3184*28e138c6SAndroid Build Coastguard Worker
3185*28e138c6SAndroid Build Coastguard Worker, default is on)
3186*28e138c6SAndroid Build Coastguard Worker\end_layout
3187*28e138c6SAndroid Build Coastguard Worker
3188*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3189*28e138c6SAndroid Build Coastguard WorkerSPEEX_GET_HIGHPASS Get the current high-pass filter status (
3190*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3191*28e138c6SAndroid Build Coastguard Workerinline true
3192*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3193*28e138c6SAndroid Build Coastguard Worker
3194*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3195*28e138c6SAndroid Build Coastguard Worker
3196*28e138c6SAndroid Build Coastguard Workerspx_int32_t
3197*28e138c6SAndroid Build Coastguard Worker\end_layout
3198*28e138c6SAndroid Build Coastguard Worker
3199*28e138c6SAndroid Build Coastguard Worker\end_inset
3200*28e138c6SAndroid Build Coastguard Worker
3201*28e138c6SAndroid Build Coastguard Worker)
3202*28e138c6SAndroid Build Coastguard Worker\end_layout
3203*28e138c6SAndroid Build Coastguard Worker
3204*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3205*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\dagger$
3206*28e138c6SAndroid Build Coastguard Worker\end_inset
3207*28e138c6SAndroid Build Coastguard Worker
3208*28e138c6SAndroid Build Coastguard Worker applies only to the encoder
3209*28e138c6SAndroid Build Coastguard Worker\end_layout
3210*28e138c6SAndroid Build Coastguard Worker
3211*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3212*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\ddagger$
3213*28e138c6SAndroid Build Coastguard Worker\end_inset
3214*28e138c6SAndroid Build Coastguard Worker
3215*28e138c6SAndroid Build Coastguard Worker applies only to the decoder
3216*28e138c6SAndroid Build Coastguard Worker\end_layout
3217*28e138c6SAndroid Build Coastguard Worker
3218*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
3219*28e138c6SAndroid Build Coastguard WorkerMode queries
3220*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
3221*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
3222*28e138c6SAndroid Build Coastguard Workername "sub:Mode-queries"
3223*28e138c6SAndroid Build Coastguard Worker
3224*28e138c6SAndroid Build Coastguard Worker\end_inset
3225*28e138c6SAndroid Build Coastguard Worker
3226*28e138c6SAndroid Build Coastguard Worker
3227*28e138c6SAndroid Build Coastguard Worker\end_layout
3228*28e138c6SAndroid Build Coastguard Worker
3229*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3230*28e138c6SAndroid Build Coastguard WorkerSpeex modes have a query system similar to the speex_encoder_ctl and speex_decod
3231*28e138c6SAndroid Build Coastguard Workerer_ctl calls.
3232*28e138c6SAndroid Build Coastguard Worker Since modes are read-only, it is only possible to get information about
3233*28e138c6SAndroid Build Coastguard Worker a particular mode.
3234*28e138c6SAndroid Build Coastguard Worker The function used to do that is:
3235*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3236*28e138c6SAndroid Build Coastguard Workerinline false
3237*28e138c6SAndroid Build Coastguard Workerstatus open
3238*28e138c6SAndroid Build Coastguard Worker
3239*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3240*28e138c6SAndroid Build Coastguard Worker
3241*28e138c6SAndroid Build Coastguard Workervoid speex_mode_query(SpeexMode *mode, int request, void *ptr);
3242*28e138c6SAndroid Build Coastguard Worker\end_layout
3243*28e138c6SAndroid Build Coastguard Worker
3244*28e138c6SAndroid Build Coastguard Worker\end_inset
3245*28e138c6SAndroid Build Coastguard Worker
3246*28e138c6SAndroid Build Coastguard WorkerThe admissible values for request are (unless otherwise note, the values
3247*28e138c6SAndroid Build Coastguard Worker are returned through
3248*28e138c6SAndroid Build Coastguard Worker\emph on
3249*28e138c6SAndroid Build Coastguard Workerptr
3250*28e138c6SAndroid Build Coastguard Worker\emph default
3251*28e138c6SAndroid Build Coastguard Worker):
3252*28e138c6SAndroid Build Coastguard Worker\end_layout
3253*28e138c6SAndroid Build Coastguard Worker
3254*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3255*28e138c6SAndroid Build Coastguard WorkerSPEEX_MODE_FRAME_SIZE Get the frame size (in samples) for the mode
3256*28e138c6SAndroid Build Coastguard Worker\end_layout
3257*28e138c6SAndroid Build Coastguard Worker
3258*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
3259*28e138c6SAndroid Build Coastguard WorkerSPEEX_SUBMODE_BITRATE Get the bit-rate for a submode number specified through
3260*28e138c6SAndroid Build Coastguard Worker
3261*28e138c6SAndroid Build Coastguard Worker\emph on
3262*28e138c6SAndroid Build Coastguard Workerptr
3263*28e138c6SAndroid Build Coastguard Worker\emph default
3264*28e138c6SAndroid Build Coastguard Worker (integer in bps).
3265*28e138c6SAndroid Build Coastguard Worker
3266*28e138c6SAndroid Build Coastguard Worker\end_layout
3267*28e138c6SAndroid Build Coastguard Worker
3268*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
3269*28e138c6SAndroid Build Coastguard WorkerPacking and in-band signalling
3270*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
3271*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3272*28e138c6SAndroid Build Coastguard Worker
3273*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3274*28e138c6SAndroid Build Coastguard Workerin-band signalling
3275*28e138c6SAndroid Build Coastguard Worker\end_layout
3276*28e138c6SAndroid Build Coastguard Worker
3277*28e138c6SAndroid Build Coastguard Worker\end_inset
3278*28e138c6SAndroid Build Coastguard Worker
3279*28e138c6SAndroid Build Coastguard Worker
3280*28e138c6SAndroid Build Coastguard Worker\end_layout
3281*28e138c6SAndroid Build Coastguard Worker
3282*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3283*28e138c6SAndroid Build Coastguard WorkerSometimes it is desirable to pack more than one frame per packet (or other
3284*28e138c6SAndroid Build Coastguard Worker basic unit of storage).
3285*28e138c6SAndroid Build Coastguard Worker The proper way to do it is to call speex_encode
3286*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $N$
3287*28e138c6SAndroid Build Coastguard Worker\end_inset
3288*28e138c6SAndroid Build Coastguard Worker
3289*28e138c6SAndroid Build Coastguard Worker times before writing the stream with speex_bits_write.
3290*28e138c6SAndroid Build Coastguard Worker In cases where the number of frames is not determined by an out-of-band
3291*28e138c6SAndroid Build Coastguard Worker mechanism, it is possible to include a terminator code.
3292*28e138c6SAndroid Build Coastguard Worker That terminator consists of the code 15 (decimal) encoded with 5 bits,
3293*28e138c6SAndroid Build Coastguard Worker as shown in Table
3294*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
3295*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
3296*28e138c6SAndroid Build Coastguard Workerreference "cap:quality_vs_bps"
3297*28e138c6SAndroid Build Coastguard Worker
3298*28e138c6SAndroid Build Coastguard Worker\end_inset
3299*28e138c6SAndroid Build Coastguard Worker
3300*28e138c6SAndroid Build Coastguard Worker.
3301*28e138c6SAndroid Build Coastguard Worker Note that as of version 1.0.2, calling speex_bits_write automatically inserts
3302*28e138c6SAndroid Build Coastguard Worker the terminator so as to fill the last byte.
3303*28e138c6SAndroid Build Coastguard Worker This doesn't involves any overhead and makes sure Speex can always detect
3304*28e138c6SAndroid Build Coastguard Worker when there is no more frame in a packet.
3305*28e138c6SAndroid Build Coastguard Worker\end_layout
3306*28e138c6SAndroid Build Coastguard Worker
3307*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3308*28e138c6SAndroid Build Coastguard WorkerIt is also possible to send in-band
3309*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
3310*28e138c6SAndroid Build Coastguard Worker\end_inset
3311*28e138c6SAndroid Build Coastguard Worker
3312*28e138c6SAndroid Build Coastguard Workermessages
3313*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
3314*28e138c6SAndroid Build Coastguard Worker\end_inset
3315*28e138c6SAndroid Build Coastguard Worker
3316*28e138c6SAndroid Build Coastguard Worker to the other side.
3317*28e138c6SAndroid Build Coastguard Worker All these messages are encoded as
3318*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
3319*28e138c6SAndroid Build Coastguard Worker\end_inset
3320*28e138c6SAndroid Build Coastguard Worker
3321*28e138c6SAndroid Build Coastguard Workerpseudo-frames
3322*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
3323*28e138c6SAndroid Build Coastguard Worker\end_inset
3324*28e138c6SAndroid Build Coastguard Worker
3325*28e138c6SAndroid Build Coastguard Worker of mode 14 which contain a 4-bit message type code, followed by the message.
3326*28e138c6SAndroid Build Coastguard Worker Table
3327*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
3328*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
3329*28e138c6SAndroid Build Coastguard Workerreference "cap:In-band-signalling-codes"
3330*28e138c6SAndroid Build Coastguard Worker
3331*28e138c6SAndroid Build Coastguard Worker\end_inset
3332*28e138c6SAndroid Build Coastguard Worker
3333*28e138c6SAndroid Build Coastguard Worker lists the available codes, their meaning and the size of the message that
3334*28e138c6SAndroid Build Coastguard Worker follows.
3335*28e138c6SAndroid Build Coastguard Worker Most of these messages are requests that are sent to the encoder or decoder
3336*28e138c6SAndroid Build Coastguard Worker on the other end, which is free to comply or ignore them.
3337*28e138c6SAndroid Build Coastguard Worker By default, all in-band messages are ignored.
3338*28e138c6SAndroid Build Coastguard Worker\end_layout
3339*28e138c6SAndroid Build Coastguard Worker
3340*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3341*28e138c6SAndroid Build Coastguard Worker\begin_inset Float table
3342*28e138c6SAndroid Build Coastguard Workerplacement htbp
3343*28e138c6SAndroid Build Coastguard Workerwide false
3344*28e138c6SAndroid Build Coastguard Workersideways false
3345*28e138c6SAndroid Build Coastguard Workerstatus open
3346*28e138c6SAndroid Build Coastguard Worker
3347*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3348*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
3349*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3350*28e138c6SAndroid Build Coastguard Worker
3351*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3352*28e138c6SAndroid Build Coastguard Worker
3353*28e138c6SAndroid Build Coastguard Worker
3354*28e138c6SAndroid Build Coastguard Worker\backslash
3355*28e138c6SAndroid Build Coastguard Workerbegin{center}
3356*28e138c6SAndroid Build Coastguard Worker\end_layout
3357*28e138c6SAndroid Build Coastguard Worker
3358*28e138c6SAndroid Build Coastguard Worker\end_inset
3359*28e138c6SAndroid Build Coastguard Worker
3360*28e138c6SAndroid Build Coastguard Worker
3361*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
3362*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="17" columns="3">
3363*28e138c6SAndroid Build Coastguard Worker<features>
3364*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
3365*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
3366*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
3367*28e138c6SAndroid Build Coastguard Worker<row>
3368*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3369*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3370*28e138c6SAndroid Build Coastguard Worker
3371*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3372*28e138c6SAndroid Build Coastguard WorkerCode
3373*28e138c6SAndroid Build Coastguard Worker\end_layout
3374*28e138c6SAndroid Build Coastguard Worker
3375*28e138c6SAndroid Build Coastguard Worker\end_inset
3376*28e138c6SAndroid Build Coastguard Worker</cell>
3377*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3378*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3379*28e138c6SAndroid Build Coastguard Worker
3380*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3381*28e138c6SAndroid Build Coastguard WorkerSize (bits)
3382*28e138c6SAndroid Build Coastguard Worker\end_layout
3383*28e138c6SAndroid Build Coastguard Worker
3384*28e138c6SAndroid Build Coastguard Worker\end_inset
3385*28e138c6SAndroid Build Coastguard Worker</cell>
3386*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3387*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3388*28e138c6SAndroid Build Coastguard Worker
3389*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3390*28e138c6SAndroid Build Coastguard WorkerContent
3391*28e138c6SAndroid Build Coastguard Worker\end_layout
3392*28e138c6SAndroid Build Coastguard Worker
3393*28e138c6SAndroid Build Coastguard Worker\end_inset
3394*28e138c6SAndroid Build Coastguard Worker</cell>
3395*28e138c6SAndroid Build Coastguard Worker</row>
3396*28e138c6SAndroid Build Coastguard Worker<row>
3397*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3398*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3399*28e138c6SAndroid Build Coastguard Worker
3400*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3401*28e138c6SAndroid Build Coastguard Worker0
3402*28e138c6SAndroid Build Coastguard Worker\end_layout
3403*28e138c6SAndroid Build Coastguard Worker
3404*28e138c6SAndroid Build Coastguard Worker\end_inset
3405*28e138c6SAndroid Build Coastguard Worker</cell>
3406*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3407*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3408*28e138c6SAndroid Build Coastguard Worker
3409*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3410*28e138c6SAndroid Build Coastguard Worker1
3411*28e138c6SAndroid Build Coastguard Worker\end_layout
3412*28e138c6SAndroid Build Coastguard Worker
3413*28e138c6SAndroid Build Coastguard Worker\end_inset
3414*28e138c6SAndroid Build Coastguard Worker</cell>
3415*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3416*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3417*28e138c6SAndroid Build Coastguard Worker
3418*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3419*28e138c6SAndroid Build Coastguard WorkerAsks decoder to set perceptual enhancement off (0) or on(1)
3420*28e138c6SAndroid Build Coastguard Worker\end_layout
3421*28e138c6SAndroid Build Coastguard Worker
3422*28e138c6SAndroid Build Coastguard Worker\end_inset
3423*28e138c6SAndroid Build Coastguard Worker</cell>
3424*28e138c6SAndroid Build Coastguard Worker</row>
3425*28e138c6SAndroid Build Coastguard Worker<row>
3426*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3427*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3428*28e138c6SAndroid Build Coastguard Worker
3429*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3430*28e138c6SAndroid Build Coastguard Worker1
3431*28e138c6SAndroid Build Coastguard Worker\end_layout
3432*28e138c6SAndroid Build Coastguard Worker
3433*28e138c6SAndroid Build Coastguard Worker\end_inset
3434*28e138c6SAndroid Build Coastguard Worker</cell>
3435*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3436*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3437*28e138c6SAndroid Build Coastguard Worker
3438*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3439*28e138c6SAndroid Build Coastguard Worker1
3440*28e138c6SAndroid Build Coastguard Worker\end_layout
3441*28e138c6SAndroid Build Coastguard Worker
3442*28e138c6SAndroid Build Coastguard Worker\end_inset
3443*28e138c6SAndroid Build Coastguard Worker</cell>
3444*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3445*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3446*28e138c6SAndroid Build Coastguard Worker
3447*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3448*28e138c6SAndroid Build Coastguard WorkerAsks (if 1) the encoder to be less
3449*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
3450*28e138c6SAndroid Build Coastguard Worker\end_inset
3451*28e138c6SAndroid Build Coastguard Worker
3452*28e138c6SAndroid Build Coastguard Workeraggressive
3453*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
3454*28e138c6SAndroid Build Coastguard Worker\end_inset
3455*28e138c6SAndroid Build Coastguard Worker
3456*28e138c6SAndroid Build Coastguard Worker due to high packet loss
3457*28e138c6SAndroid Build Coastguard Worker\end_layout
3458*28e138c6SAndroid Build Coastguard Worker
3459*28e138c6SAndroid Build Coastguard Worker\end_inset
3460*28e138c6SAndroid Build Coastguard Worker</cell>
3461*28e138c6SAndroid Build Coastguard Worker</row>
3462*28e138c6SAndroid Build Coastguard Worker<row>
3463*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3464*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3465*28e138c6SAndroid Build Coastguard Worker
3466*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3467*28e138c6SAndroid Build Coastguard Worker2
3468*28e138c6SAndroid Build Coastguard Worker\end_layout
3469*28e138c6SAndroid Build Coastguard Worker
3470*28e138c6SAndroid Build Coastguard Worker\end_inset
3471*28e138c6SAndroid Build Coastguard Worker</cell>
3472*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3473*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3474*28e138c6SAndroid Build Coastguard Worker
3475*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3476*28e138c6SAndroid Build Coastguard Worker4
3477*28e138c6SAndroid Build Coastguard Worker\end_layout
3478*28e138c6SAndroid Build Coastguard Worker
3479*28e138c6SAndroid Build Coastguard Worker\end_inset
3480*28e138c6SAndroid Build Coastguard Worker</cell>
3481*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3482*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3483*28e138c6SAndroid Build Coastguard Worker
3484*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3485*28e138c6SAndroid Build Coastguard WorkerAsks encoder to switch to mode N
3486*28e138c6SAndroid Build Coastguard Worker\end_layout
3487*28e138c6SAndroid Build Coastguard Worker
3488*28e138c6SAndroid Build Coastguard Worker\end_inset
3489*28e138c6SAndroid Build Coastguard Worker</cell>
3490*28e138c6SAndroid Build Coastguard Worker</row>
3491*28e138c6SAndroid Build Coastguard Worker<row>
3492*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3493*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3494*28e138c6SAndroid Build Coastguard Worker
3495*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3496*28e138c6SAndroid Build Coastguard Worker3
3497*28e138c6SAndroid Build Coastguard Worker\end_layout
3498*28e138c6SAndroid Build Coastguard Worker
3499*28e138c6SAndroid Build Coastguard Worker\end_inset
3500*28e138c6SAndroid Build Coastguard Worker</cell>
3501*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3502*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3503*28e138c6SAndroid Build Coastguard Worker
3504*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3505*28e138c6SAndroid Build Coastguard Worker4
3506*28e138c6SAndroid Build Coastguard Worker\end_layout
3507*28e138c6SAndroid Build Coastguard Worker
3508*28e138c6SAndroid Build Coastguard Worker\end_inset
3509*28e138c6SAndroid Build Coastguard Worker</cell>
3510*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3511*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3512*28e138c6SAndroid Build Coastguard Worker
3513*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3514*28e138c6SAndroid Build Coastguard WorkerAsks encoder to switch to mode N for low-band
3515*28e138c6SAndroid Build Coastguard Worker\end_layout
3516*28e138c6SAndroid Build Coastguard Worker
3517*28e138c6SAndroid Build Coastguard Worker\end_inset
3518*28e138c6SAndroid Build Coastguard Worker</cell>
3519*28e138c6SAndroid Build Coastguard Worker</row>
3520*28e138c6SAndroid Build Coastguard Worker<row>
3521*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3522*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3523*28e138c6SAndroid Build Coastguard Worker
3524*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3525*28e138c6SAndroid Build Coastguard Worker4
3526*28e138c6SAndroid Build Coastguard Worker\end_layout
3527*28e138c6SAndroid Build Coastguard Worker
3528*28e138c6SAndroid Build Coastguard Worker\end_inset
3529*28e138c6SAndroid Build Coastguard Worker</cell>
3530*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3531*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3532*28e138c6SAndroid Build Coastguard Worker
3533*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3534*28e138c6SAndroid Build Coastguard Worker4
3535*28e138c6SAndroid Build Coastguard Worker\end_layout
3536*28e138c6SAndroid Build Coastguard Worker
3537*28e138c6SAndroid Build Coastguard Worker\end_inset
3538*28e138c6SAndroid Build Coastguard Worker</cell>
3539*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3540*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3541*28e138c6SAndroid Build Coastguard Worker
3542*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3543*28e138c6SAndroid Build Coastguard WorkerAsks encoder to switch to mode N for high-band
3544*28e138c6SAndroid Build Coastguard Worker\end_layout
3545*28e138c6SAndroid Build Coastguard Worker
3546*28e138c6SAndroid Build Coastguard Worker\end_inset
3547*28e138c6SAndroid Build Coastguard Worker</cell>
3548*28e138c6SAndroid Build Coastguard Worker</row>
3549*28e138c6SAndroid Build Coastguard Worker<row>
3550*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3551*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3552*28e138c6SAndroid Build Coastguard Worker
3553*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3554*28e138c6SAndroid Build Coastguard Worker5
3555*28e138c6SAndroid Build Coastguard Worker\end_layout
3556*28e138c6SAndroid Build Coastguard Worker
3557*28e138c6SAndroid Build Coastguard Worker\end_inset
3558*28e138c6SAndroid Build Coastguard Worker</cell>
3559*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3560*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3561*28e138c6SAndroid Build Coastguard Worker
3562*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3563*28e138c6SAndroid Build Coastguard Worker4
3564*28e138c6SAndroid Build Coastguard Worker\end_layout
3565*28e138c6SAndroid Build Coastguard Worker
3566*28e138c6SAndroid Build Coastguard Worker\end_inset
3567*28e138c6SAndroid Build Coastguard Worker</cell>
3568*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3569*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3570*28e138c6SAndroid Build Coastguard Worker
3571*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3572*28e138c6SAndroid Build Coastguard WorkerAsks encoder to switch to quality N for VBR
3573*28e138c6SAndroid Build Coastguard Worker\end_layout
3574*28e138c6SAndroid Build Coastguard Worker
3575*28e138c6SAndroid Build Coastguard Worker\end_inset
3576*28e138c6SAndroid Build Coastguard Worker</cell>
3577*28e138c6SAndroid Build Coastguard Worker</row>
3578*28e138c6SAndroid Build Coastguard Worker<row>
3579*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3580*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3581*28e138c6SAndroid Build Coastguard Worker
3582*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3583*28e138c6SAndroid Build Coastguard Worker6
3584*28e138c6SAndroid Build Coastguard Worker\end_layout
3585*28e138c6SAndroid Build Coastguard Worker
3586*28e138c6SAndroid Build Coastguard Worker\end_inset
3587*28e138c6SAndroid Build Coastguard Worker</cell>
3588*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3589*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3590*28e138c6SAndroid Build Coastguard Worker
3591*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3592*28e138c6SAndroid Build Coastguard Worker4
3593*28e138c6SAndroid Build Coastguard Worker\end_layout
3594*28e138c6SAndroid Build Coastguard Worker
3595*28e138c6SAndroid Build Coastguard Worker\end_inset
3596*28e138c6SAndroid Build Coastguard Worker</cell>
3597*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3598*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3599*28e138c6SAndroid Build Coastguard Worker
3600*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3601*28e138c6SAndroid Build Coastguard WorkerRequest acknowledge (0=no, 1=all, 2=only for in-band data)
3602*28e138c6SAndroid Build Coastguard Worker\end_layout
3603*28e138c6SAndroid Build Coastguard Worker
3604*28e138c6SAndroid Build Coastguard Worker\end_inset
3605*28e138c6SAndroid Build Coastguard Worker</cell>
3606*28e138c6SAndroid Build Coastguard Worker</row>
3607*28e138c6SAndroid Build Coastguard Worker<row>
3608*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3609*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3610*28e138c6SAndroid Build Coastguard Worker
3611*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3612*28e138c6SAndroid Build Coastguard Worker7
3613*28e138c6SAndroid Build Coastguard Worker\end_layout
3614*28e138c6SAndroid Build Coastguard Worker
3615*28e138c6SAndroid Build Coastguard Worker\end_inset
3616*28e138c6SAndroid Build Coastguard Worker</cell>
3617*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3618*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3619*28e138c6SAndroid Build Coastguard Worker
3620*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3621*28e138c6SAndroid Build Coastguard Worker4
3622*28e138c6SAndroid Build Coastguard Worker\end_layout
3623*28e138c6SAndroid Build Coastguard Worker
3624*28e138c6SAndroid Build Coastguard Worker\end_inset
3625*28e138c6SAndroid Build Coastguard Worker</cell>
3626*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3627*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3628*28e138c6SAndroid Build Coastguard Worker
3629*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3630*28e138c6SAndroid Build Coastguard WorkerAsks encoder to set CBR (0), VAD(1), DTX(3), VBR(5), VBR+DTX(7)
3631*28e138c6SAndroid Build Coastguard Worker\end_layout
3632*28e138c6SAndroid Build Coastguard Worker
3633*28e138c6SAndroid Build Coastguard Worker\end_inset
3634*28e138c6SAndroid Build Coastguard Worker</cell>
3635*28e138c6SAndroid Build Coastguard Worker</row>
3636*28e138c6SAndroid Build Coastguard Worker<row>
3637*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3638*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3639*28e138c6SAndroid Build Coastguard Worker
3640*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3641*28e138c6SAndroid Build Coastguard Worker8
3642*28e138c6SAndroid Build Coastguard Worker\end_layout
3643*28e138c6SAndroid Build Coastguard Worker
3644*28e138c6SAndroid Build Coastguard Worker\end_inset
3645*28e138c6SAndroid Build Coastguard Worker</cell>
3646*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3647*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3648*28e138c6SAndroid Build Coastguard Worker
3649*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3650*28e138c6SAndroid Build Coastguard Worker8
3651*28e138c6SAndroid Build Coastguard Worker\end_layout
3652*28e138c6SAndroid Build Coastguard Worker
3653*28e138c6SAndroid Build Coastguard Worker\end_inset
3654*28e138c6SAndroid Build Coastguard Worker</cell>
3655*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3656*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3657*28e138c6SAndroid Build Coastguard Worker
3658*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3659*28e138c6SAndroid Build Coastguard WorkerTransmit (8-bit) character to the other end
3660*28e138c6SAndroid Build Coastguard Worker\end_layout
3661*28e138c6SAndroid Build Coastguard Worker
3662*28e138c6SAndroid Build Coastguard Worker\end_inset
3663*28e138c6SAndroid Build Coastguard Worker</cell>
3664*28e138c6SAndroid Build Coastguard Worker</row>
3665*28e138c6SAndroid Build Coastguard Worker<row>
3666*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3667*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3668*28e138c6SAndroid Build Coastguard Worker
3669*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3670*28e138c6SAndroid Build Coastguard Worker9
3671*28e138c6SAndroid Build Coastguard Worker\end_layout
3672*28e138c6SAndroid Build Coastguard Worker
3673*28e138c6SAndroid Build Coastguard Worker\end_inset
3674*28e138c6SAndroid Build Coastguard Worker</cell>
3675*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3676*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3677*28e138c6SAndroid Build Coastguard Worker
3678*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3679*28e138c6SAndroid Build Coastguard Worker8
3680*28e138c6SAndroid Build Coastguard Worker\end_layout
3681*28e138c6SAndroid Build Coastguard Worker
3682*28e138c6SAndroid Build Coastguard Worker\end_inset
3683*28e138c6SAndroid Build Coastguard Worker</cell>
3684*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3685*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3686*28e138c6SAndroid Build Coastguard Worker
3687*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3688*28e138c6SAndroid Build Coastguard WorkerIntensity stereo information
3689*28e138c6SAndroid Build Coastguard Worker\end_layout
3690*28e138c6SAndroid Build Coastguard Worker
3691*28e138c6SAndroid Build Coastguard Worker\end_inset
3692*28e138c6SAndroid Build Coastguard Worker</cell>
3693*28e138c6SAndroid Build Coastguard Worker</row>
3694*28e138c6SAndroid Build Coastguard Worker<row>
3695*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3696*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3697*28e138c6SAndroid Build Coastguard Worker
3698*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3699*28e138c6SAndroid Build Coastguard Worker10
3700*28e138c6SAndroid Build Coastguard Worker\end_layout
3701*28e138c6SAndroid Build Coastguard Worker
3702*28e138c6SAndroid Build Coastguard Worker\end_inset
3703*28e138c6SAndroid Build Coastguard Worker</cell>
3704*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3705*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3706*28e138c6SAndroid Build Coastguard Worker
3707*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3708*28e138c6SAndroid Build Coastguard Worker16
3709*28e138c6SAndroid Build Coastguard Worker\end_layout
3710*28e138c6SAndroid Build Coastguard Worker
3711*28e138c6SAndroid Build Coastguard Worker\end_inset
3712*28e138c6SAndroid Build Coastguard Worker</cell>
3713*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3714*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3715*28e138c6SAndroid Build Coastguard Worker
3716*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3717*28e138c6SAndroid Build Coastguard WorkerAnnounce maximum bit-rate acceptable (N in bytes/second)
3718*28e138c6SAndroid Build Coastguard Worker\end_layout
3719*28e138c6SAndroid Build Coastguard Worker
3720*28e138c6SAndroid Build Coastguard Worker\end_inset
3721*28e138c6SAndroid Build Coastguard Worker</cell>
3722*28e138c6SAndroid Build Coastguard Worker</row>
3723*28e138c6SAndroid Build Coastguard Worker<row>
3724*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3725*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3726*28e138c6SAndroid Build Coastguard Worker
3727*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3728*28e138c6SAndroid Build Coastguard Worker11
3729*28e138c6SAndroid Build Coastguard Worker\end_layout
3730*28e138c6SAndroid Build Coastguard Worker
3731*28e138c6SAndroid Build Coastguard Worker\end_inset
3732*28e138c6SAndroid Build Coastguard Worker</cell>
3733*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3734*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3735*28e138c6SAndroid Build Coastguard Worker
3736*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3737*28e138c6SAndroid Build Coastguard Worker16
3738*28e138c6SAndroid Build Coastguard Worker\end_layout
3739*28e138c6SAndroid Build Coastguard Worker
3740*28e138c6SAndroid Build Coastguard Worker\end_inset
3741*28e138c6SAndroid Build Coastguard Worker</cell>
3742*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3743*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3744*28e138c6SAndroid Build Coastguard Worker
3745*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3746*28e138c6SAndroid Build Coastguard Workerreserved
3747*28e138c6SAndroid Build Coastguard Worker\end_layout
3748*28e138c6SAndroid Build Coastguard Worker
3749*28e138c6SAndroid Build Coastguard Worker\end_inset
3750*28e138c6SAndroid Build Coastguard Worker</cell>
3751*28e138c6SAndroid Build Coastguard Worker</row>
3752*28e138c6SAndroid Build Coastguard Worker<row>
3753*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3754*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3755*28e138c6SAndroid Build Coastguard Worker
3756*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3757*28e138c6SAndroid Build Coastguard Worker12
3758*28e138c6SAndroid Build Coastguard Worker\end_layout
3759*28e138c6SAndroid Build Coastguard Worker
3760*28e138c6SAndroid Build Coastguard Worker\end_inset
3761*28e138c6SAndroid Build Coastguard Worker</cell>
3762*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3763*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3764*28e138c6SAndroid Build Coastguard Worker
3765*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3766*28e138c6SAndroid Build Coastguard Worker32
3767*28e138c6SAndroid Build Coastguard Worker\end_layout
3768*28e138c6SAndroid Build Coastguard Worker
3769*28e138c6SAndroid Build Coastguard Worker\end_inset
3770*28e138c6SAndroid Build Coastguard Worker</cell>
3771*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3772*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3773*28e138c6SAndroid Build Coastguard Worker
3774*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3775*28e138c6SAndroid Build Coastguard WorkerAcknowledge receiving packet N
3776*28e138c6SAndroid Build Coastguard Worker\end_layout
3777*28e138c6SAndroid Build Coastguard Worker
3778*28e138c6SAndroid Build Coastguard Worker\end_inset
3779*28e138c6SAndroid Build Coastguard Worker</cell>
3780*28e138c6SAndroid Build Coastguard Worker</row>
3781*28e138c6SAndroid Build Coastguard Worker<row>
3782*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3783*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3784*28e138c6SAndroid Build Coastguard Worker
3785*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3786*28e138c6SAndroid Build Coastguard Worker13
3787*28e138c6SAndroid Build Coastguard Worker\end_layout
3788*28e138c6SAndroid Build Coastguard Worker
3789*28e138c6SAndroid Build Coastguard Worker\end_inset
3790*28e138c6SAndroid Build Coastguard Worker</cell>
3791*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3792*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3793*28e138c6SAndroid Build Coastguard Worker
3794*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3795*28e138c6SAndroid Build Coastguard Worker32
3796*28e138c6SAndroid Build Coastguard Worker\end_layout
3797*28e138c6SAndroid Build Coastguard Worker
3798*28e138c6SAndroid Build Coastguard Worker\end_inset
3799*28e138c6SAndroid Build Coastguard Worker</cell>
3800*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3801*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3802*28e138c6SAndroid Build Coastguard Worker
3803*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3804*28e138c6SAndroid Build Coastguard Workerreserved
3805*28e138c6SAndroid Build Coastguard Worker\end_layout
3806*28e138c6SAndroid Build Coastguard Worker
3807*28e138c6SAndroid Build Coastguard Worker\end_inset
3808*28e138c6SAndroid Build Coastguard Worker</cell>
3809*28e138c6SAndroid Build Coastguard Worker</row>
3810*28e138c6SAndroid Build Coastguard Worker<row>
3811*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3812*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3813*28e138c6SAndroid Build Coastguard Worker
3814*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3815*28e138c6SAndroid Build Coastguard Worker14
3816*28e138c6SAndroid Build Coastguard Worker\end_layout
3817*28e138c6SAndroid Build Coastguard Worker
3818*28e138c6SAndroid Build Coastguard Worker\end_inset
3819*28e138c6SAndroid Build Coastguard Worker</cell>
3820*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3821*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3822*28e138c6SAndroid Build Coastguard Worker
3823*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3824*28e138c6SAndroid Build Coastguard Worker64
3825*28e138c6SAndroid Build Coastguard Worker\end_layout
3826*28e138c6SAndroid Build Coastguard Worker
3827*28e138c6SAndroid Build Coastguard Worker\end_inset
3828*28e138c6SAndroid Build Coastguard Worker</cell>
3829*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3830*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3831*28e138c6SAndroid Build Coastguard Worker
3832*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3833*28e138c6SAndroid Build Coastguard Workerreserved
3834*28e138c6SAndroid Build Coastguard Worker\end_layout
3835*28e138c6SAndroid Build Coastguard Worker
3836*28e138c6SAndroid Build Coastguard Worker\end_inset
3837*28e138c6SAndroid Build Coastguard Worker</cell>
3838*28e138c6SAndroid Build Coastguard Worker</row>
3839*28e138c6SAndroid Build Coastguard Worker<row>
3840*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3841*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3842*28e138c6SAndroid Build Coastguard Worker
3843*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3844*28e138c6SAndroid Build Coastguard Worker15
3845*28e138c6SAndroid Build Coastguard Worker\end_layout
3846*28e138c6SAndroid Build Coastguard Worker
3847*28e138c6SAndroid Build Coastguard Worker\end_inset
3848*28e138c6SAndroid Build Coastguard Worker</cell>
3849*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
3850*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3851*28e138c6SAndroid Build Coastguard Worker
3852*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3853*28e138c6SAndroid Build Coastguard Worker64
3854*28e138c6SAndroid Build Coastguard Worker\end_layout
3855*28e138c6SAndroid Build Coastguard Worker
3856*28e138c6SAndroid Build Coastguard Worker\end_inset
3857*28e138c6SAndroid Build Coastguard Worker</cell>
3858*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3859*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
3860*28e138c6SAndroid Build Coastguard Worker
3861*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3862*28e138c6SAndroid Build Coastguard Workerreserved
3863*28e138c6SAndroid Build Coastguard Worker\end_layout
3864*28e138c6SAndroid Build Coastguard Worker
3865*28e138c6SAndroid Build Coastguard Worker\end_inset
3866*28e138c6SAndroid Build Coastguard Worker</cell>
3867*28e138c6SAndroid Build Coastguard Worker</row>
3868*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
3869*28e138c6SAndroid Build Coastguard Worker
3870*28e138c6SAndroid Build Coastguard Worker\end_inset
3871*28e138c6SAndroid Build Coastguard Worker
3872*28e138c6SAndroid Build Coastguard Worker
3873*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
3874*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3875*28e138c6SAndroid Build Coastguard Worker
3876*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3877*28e138c6SAndroid Build Coastguard Worker
3878*28e138c6SAndroid Build Coastguard Worker
3879*28e138c6SAndroid Build Coastguard Worker\backslash
3880*28e138c6SAndroid Build Coastguard Workerend{center}
3881*28e138c6SAndroid Build Coastguard Worker\end_layout
3882*28e138c6SAndroid Build Coastguard Worker
3883*28e138c6SAndroid Build Coastguard Worker\end_inset
3884*28e138c6SAndroid Build Coastguard Worker
3885*28e138c6SAndroid Build Coastguard Worker
3886*28e138c6SAndroid Build Coastguard Worker\end_layout
3887*28e138c6SAndroid Build Coastguard Worker
3888*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3889*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
3890*28e138c6SAndroid Build Coastguard Worker
3891*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3892*28e138c6SAndroid Build Coastguard WorkerIn-band signalling codes
3893*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
3894*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
3895*28e138c6SAndroid Build Coastguard Workername "cap:In-band-signalling-codes"
3896*28e138c6SAndroid Build Coastguard Worker
3897*28e138c6SAndroid Build Coastguard Worker\end_inset
3898*28e138c6SAndroid Build Coastguard Worker
3899*28e138c6SAndroid Build Coastguard Worker
3900*28e138c6SAndroid Build Coastguard Worker\end_layout
3901*28e138c6SAndroid Build Coastguard Worker
3902*28e138c6SAndroid Build Coastguard Worker\end_inset
3903*28e138c6SAndroid Build Coastguard Worker
3904*28e138c6SAndroid Build Coastguard Worker
3905*28e138c6SAndroid Build Coastguard Worker\end_layout
3906*28e138c6SAndroid Build Coastguard Worker
3907*28e138c6SAndroid Build Coastguard Worker\end_inset
3908*28e138c6SAndroid Build Coastguard Worker
3909*28e138c6SAndroid Build Coastguard Worker
3910*28e138c6SAndroid Build Coastguard Worker\end_layout
3911*28e138c6SAndroid Build Coastguard Worker
3912*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3913*28e138c6SAndroid Build Coastguard WorkerFinally, applications may define custom in-band messages using mode 13.
3914*28e138c6SAndroid Build Coastguard Worker The size of the message in bytes is encoded with 5 bits, so that the decoder
3915*28e138c6SAndroid Build Coastguard Worker can skip it if it doesn't know how to interpret it.
3916*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
3917*28e138c6SAndroid Build Coastguard Worker\end_inset
3918*28e138c6SAndroid Build Coastguard Worker
3919*28e138c6SAndroid Build Coastguard Worker
3920*28e138c6SAndroid Build Coastguard Worker\end_layout
3921*28e138c6SAndroid Build Coastguard Worker
3922*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
3923*28e138c6SAndroid Build Coastguard WorkerSpeech Processing API (
3924*28e138c6SAndroid Build Coastguard Worker\emph on
3925*28e138c6SAndroid Build Coastguard Workerlibspeexdsp
3926*28e138c6SAndroid Build Coastguard Worker\emph default
3927*28e138c6SAndroid Build Coastguard Worker)
3928*28e138c6SAndroid Build Coastguard Worker\end_layout
3929*28e138c6SAndroid Build Coastguard Worker
3930*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3931*28e138c6SAndroid Build Coastguard WorkerAs of version 1.2beta3, the non-codec parts of the Speex package are now
3932*28e138c6SAndroid Build Coastguard Worker in a separate library called
3933*28e138c6SAndroid Build Coastguard Worker\emph on
3934*28e138c6SAndroid Build Coastguard Workerlibspeexdsp
3935*28e138c6SAndroid Build Coastguard Worker\emph default
3936*28e138c6SAndroid Build Coastguard Worker.
3937*28e138c6SAndroid Build Coastguard Worker This library includes the preprocessor, the acoustic echo canceller, the
3938*28e138c6SAndroid Build Coastguard Worker jitter buffer, and the resampler.
3939*28e138c6SAndroid Build Coastguard Worker In a UNIX environment, it can be linked into a program by adding
3940*28e138c6SAndroid Build Coastguard Worker\emph on
3941*28e138c6SAndroid Build Coastguard Worker-lspeexdsp -lm
3942*28e138c6SAndroid Build Coastguard Worker\emph default
3943*28e138c6SAndroid Build Coastguard Worker to the compiler command line.
3944*28e138c6SAndroid Build Coastguard Worker Just like for libspeex,
3945*28e138c6SAndroid Build Coastguard Worker\series bold
3946*28e138c6SAndroid Build Coastguard Workerlibspeexdsp calls are reentrant, but not thread-safe
3947*28e138c6SAndroid Build Coastguard Worker\series default
3948*28e138c6SAndroid Build Coastguard Worker.
3949*28e138c6SAndroid Build Coastguard Worker That means that it is fine to use calls from many threads, but
3950*28e138c6SAndroid Build Coastguard Worker\series bold
3951*28e138c6SAndroid Build Coastguard Workercalls using the same state from multiple threads must be protected by mutexes
3952*28e138c6SAndroid Build Coastguard Worker\series default
3953*28e138c6SAndroid Build Coastguard Worker.
3954*28e138c6SAndroid Build Coastguard Worker\end_layout
3955*28e138c6SAndroid Build Coastguard Worker
3956*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
3957*28e138c6SAndroid Build Coastguard WorkerPreprocessor
3958*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
3959*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
3960*28e138c6SAndroid Build Coastguard Workername "sub:Preprocessor"
3961*28e138c6SAndroid Build Coastguard Worker
3962*28e138c6SAndroid Build Coastguard Worker\end_inset
3963*28e138c6SAndroid Build Coastguard Worker
3964*28e138c6SAndroid Build Coastguard Worker
3965*28e138c6SAndroid Build Coastguard Worker\end_layout
3966*28e138c6SAndroid Build Coastguard Worker
3967*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3968*28e138c6SAndroid Build Coastguard Worker\noindent
3969*28e138c6SAndroid Build Coastguard WorkerIn order to use the Speex preprocessor
3970*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
3971*28e138c6SAndroid Build Coastguard Workerstatus collapsed
3972*28e138c6SAndroid Build Coastguard Worker
3973*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3974*28e138c6SAndroid Build Coastguard Workerpreprocessor
3975*28e138c6SAndroid Build Coastguard Worker\end_layout
3976*28e138c6SAndroid Build Coastguard Worker
3977*28e138c6SAndroid Build Coastguard Worker\end_inset
3978*28e138c6SAndroid Build Coastguard Worker
3979*28e138c6SAndroid Build Coastguard Worker, you first need to:
3980*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3981*28e138c6SAndroid Build Coastguard Workerinline false
3982*28e138c6SAndroid Build Coastguard Workerstatus open
3983*28e138c6SAndroid Build Coastguard Worker
3984*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
3985*28e138c6SAndroid Build Coastguard Worker
3986*28e138c6SAndroid Build Coastguard Worker#include <speex/speex_preprocess.h>
3987*28e138c6SAndroid Build Coastguard Worker\end_layout
3988*28e138c6SAndroid Build Coastguard Worker
3989*28e138c6SAndroid Build Coastguard Worker\end_inset
3990*28e138c6SAndroid Build Coastguard Worker
3991*28e138c6SAndroid Build Coastguard Worker
3992*28e138c6SAndroid Build Coastguard Worker\end_layout
3993*28e138c6SAndroid Build Coastguard Worker
3994*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
3995*28e138c6SAndroid Build Coastguard Worker\noindent
3996*28e138c6SAndroid Build Coastguard WorkerThen, a preprocessor state can be created as:
3997*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
3998*28e138c6SAndroid Build Coastguard Workerinline false
3999*28e138c6SAndroid Build Coastguard Workerstatus open
4000*28e138c6SAndroid Build Coastguard Worker
4001*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4002*28e138c6SAndroid Build Coastguard Worker
4003*28e138c6SAndroid Build Coastguard WorkerSpeexPreprocessState *preprocess_state = speex_preprocess_state_init(frame_size,
4004*28e138c6SAndroid Build Coastguard Worker sampling_rate);
4005*28e138c6SAndroid Build Coastguard Worker\end_layout
4006*28e138c6SAndroid Build Coastguard Worker
4007*28e138c6SAndroid Build Coastguard Worker\end_inset
4008*28e138c6SAndroid Build Coastguard Worker
4009*28e138c6SAndroid Build Coastguard Worker
4010*28e138c6SAndroid Build Coastguard Worker\end_layout
4011*28e138c6SAndroid Build Coastguard Worker
4012*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4013*28e138c6SAndroid Build Coastguard Worker\noindent
4014*28e138c6SAndroid Build Coastguard Workerand it is recommended to use the same value for
4015*28e138c6SAndroid Build Coastguard Worker\family typewriter
4016*28e138c6SAndroid Build Coastguard Workerframe_size
4017*28e138c6SAndroid Build Coastguard Worker\family default
4018*28e138c6SAndroid Build Coastguard Worker as is used by the encoder (20
4019*28e138c6SAndroid Build Coastguard Worker\emph on
4020*28e138c6SAndroid Build Coastguard Workerms
4021*28e138c6SAndroid Build Coastguard Worker\emph default
4022*28e138c6SAndroid Build Coastguard Worker).
4023*28e138c6SAndroid Build Coastguard Worker\end_layout
4024*28e138c6SAndroid Build Coastguard Worker
4025*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4026*28e138c6SAndroid Build Coastguard WorkerFor each input frame, you need to call:
4027*28e138c6SAndroid Build Coastguard Worker\end_layout
4028*28e138c6SAndroid Build Coastguard Worker
4029*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4030*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4031*28e138c6SAndroid Build Coastguard Workerinline false
4032*28e138c6SAndroid Build Coastguard Workerstatus open
4033*28e138c6SAndroid Build Coastguard Worker
4034*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4035*28e138c6SAndroid Build Coastguard Worker
4036*28e138c6SAndroid Build Coastguard Workerspeex_preprocess_run(preprocess_state, audio_frame);
4037*28e138c6SAndroid Build Coastguard Worker\end_layout
4038*28e138c6SAndroid Build Coastguard Worker
4039*28e138c6SAndroid Build Coastguard Worker\end_inset
4040*28e138c6SAndroid Build Coastguard Worker
4041*28e138c6SAndroid Build Coastguard Worker
4042*28e138c6SAndroid Build Coastguard Worker\end_layout
4043*28e138c6SAndroid Build Coastguard Worker
4044*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4045*28e138c6SAndroid Build Coastguard Worker\noindent
4046*28e138c6SAndroid Build Coastguard Workerwhere
4047*28e138c6SAndroid Build Coastguard Worker\family typewriter
4048*28e138c6SAndroid Build Coastguard Workeraudio_frame
4049*28e138c6SAndroid Build Coastguard Worker\family default
4050*28e138c6SAndroid Build Coastguard Worker is used both as input and output.
4051*28e138c6SAndroid Build Coastguard Worker In cases where the output audio is not useful for a certain frame, it is
4052*28e138c6SAndroid Build Coastguard Worker possible to use instead:
4053*28e138c6SAndroid Build Coastguard Worker\end_layout
4054*28e138c6SAndroid Build Coastguard Worker
4055*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4056*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4057*28e138c6SAndroid Build Coastguard Workerinline false
4058*28e138c6SAndroid Build Coastguard Workerstatus open
4059*28e138c6SAndroid Build Coastguard Worker
4060*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4061*28e138c6SAndroid Build Coastguard Worker
4062*28e138c6SAndroid Build Coastguard Workerspeex_preprocess_estimate_update(preprocess_state, audio_frame);
4063*28e138c6SAndroid Build Coastguard Worker\end_layout
4064*28e138c6SAndroid Build Coastguard Worker
4065*28e138c6SAndroid Build Coastguard Worker\end_inset
4066*28e138c6SAndroid Build Coastguard Worker
4067*28e138c6SAndroid Build Coastguard Worker
4068*28e138c6SAndroid Build Coastguard Worker\end_layout
4069*28e138c6SAndroid Build Coastguard Worker
4070*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4071*28e138c6SAndroid Build Coastguard Worker\noindent
4072*28e138c6SAndroid Build Coastguard WorkerThis call will update all the preprocessor internal state variables without
4073*28e138c6SAndroid Build Coastguard Worker computing the output audio, thus saving some CPU cycles.
4074*28e138c6SAndroid Build Coastguard Worker\end_layout
4075*28e138c6SAndroid Build Coastguard Worker
4076*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4077*28e138c6SAndroid Build Coastguard WorkerThe behaviour of the preprocessor can be changed using:
4078*28e138c6SAndroid Build Coastguard Worker\end_layout
4079*28e138c6SAndroid Build Coastguard Worker
4080*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4081*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4082*28e138c6SAndroid Build Coastguard Workerinline false
4083*28e138c6SAndroid Build Coastguard Workerstatus open
4084*28e138c6SAndroid Build Coastguard Worker
4085*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4086*28e138c6SAndroid Build Coastguard Worker
4087*28e138c6SAndroid Build Coastguard Workerspeex_preprocess_ctl(preprocess_state, request, ptr);
4088*28e138c6SAndroid Build Coastguard Worker\end_layout
4089*28e138c6SAndroid Build Coastguard Worker
4090*28e138c6SAndroid Build Coastguard Worker\end_inset
4091*28e138c6SAndroid Build Coastguard Worker
4092*28e138c6SAndroid Build Coastguard Worker
4093*28e138c6SAndroid Build Coastguard Worker\end_layout
4094*28e138c6SAndroid Build Coastguard Worker
4095*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4096*28e138c6SAndroid Build Coastguard Worker\noindent
4097*28e138c6SAndroid Build Coastguard Workerwhich is used in the same way as the encoder and decoder equivalent.
4098*28e138c6SAndroid Build Coastguard Worker Options are listed in Section
4099*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
4100*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
4101*28e138c6SAndroid Build Coastguard Workerreference "sub:Preprocessor-options"
4102*28e138c6SAndroid Build Coastguard Worker
4103*28e138c6SAndroid Build Coastguard Worker\end_inset
4104*28e138c6SAndroid Build Coastguard Worker
4105*28e138c6SAndroid Build Coastguard Worker.
4106*28e138c6SAndroid Build Coastguard Worker\end_layout
4107*28e138c6SAndroid Build Coastguard Worker
4108*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4109*28e138c6SAndroid Build Coastguard WorkerThe preprocessor state can be destroyed using:
4110*28e138c6SAndroid Build Coastguard Worker\end_layout
4111*28e138c6SAndroid Build Coastguard Worker
4112*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4113*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4114*28e138c6SAndroid Build Coastguard Workerinline false
4115*28e138c6SAndroid Build Coastguard Workerstatus open
4116*28e138c6SAndroid Build Coastguard Worker
4117*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4118*28e138c6SAndroid Build Coastguard Worker
4119*28e138c6SAndroid Build Coastguard Workerspeex_preprocess_state_destroy(preprocess_state);
4120*28e138c6SAndroid Build Coastguard Worker\end_layout
4121*28e138c6SAndroid Build Coastguard Worker
4122*28e138c6SAndroid Build Coastguard Worker\end_inset
4123*28e138c6SAndroid Build Coastguard Worker
4124*28e138c6SAndroid Build Coastguard Worker
4125*28e138c6SAndroid Build Coastguard Worker\end_layout
4126*28e138c6SAndroid Build Coastguard Worker
4127*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
4128*28e138c6SAndroid Build Coastguard WorkerPreprocessor options
4129*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
4130*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
4131*28e138c6SAndroid Build Coastguard Workername "sub:Preprocessor-options"
4132*28e138c6SAndroid Build Coastguard Worker
4133*28e138c6SAndroid Build Coastguard Worker\end_inset
4134*28e138c6SAndroid Build Coastguard Worker
4135*28e138c6SAndroid Build Coastguard Worker
4136*28e138c6SAndroid Build Coastguard Worker\end_layout
4137*28e138c6SAndroid Build Coastguard Worker
4138*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4139*28e138c6SAndroid Build Coastguard WorkerAs with the codec, the preprocessor also has options that can be controlled
4140*28e138c6SAndroid Build Coastguard Worker using an ioctl()-like call.
4141*28e138c6SAndroid Build Coastguard Worker The available options are:
4142*28e138c6SAndroid Build Coastguard Worker\end_layout
4143*28e138c6SAndroid Build Coastguard Worker
4144*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4145*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_DENOISE Turns denoising on(1) or off(0) (
4146*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4147*28e138c6SAndroid Build Coastguard Workerinline true
4148*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4149*28e138c6SAndroid Build Coastguard Worker
4150*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4151*28e138c6SAndroid Build Coastguard Worker
4152*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4153*28e138c6SAndroid Build Coastguard Worker\end_layout
4154*28e138c6SAndroid Build Coastguard Worker
4155*28e138c6SAndroid Build Coastguard Worker\end_inset
4156*28e138c6SAndroid Build Coastguard Worker
4157*28e138c6SAndroid Build Coastguard Worker)
4158*28e138c6SAndroid Build Coastguard Worker\end_layout
4159*28e138c6SAndroid Build Coastguard Worker
4160*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4161*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_DENOISE Get denoising status (
4162*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4163*28e138c6SAndroid Build Coastguard Workerinline true
4164*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4165*28e138c6SAndroid Build Coastguard Worker
4166*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4167*28e138c6SAndroid Build Coastguard Worker
4168*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4169*28e138c6SAndroid Build Coastguard Worker\end_layout
4170*28e138c6SAndroid Build Coastguard Worker
4171*28e138c6SAndroid Build Coastguard Worker\end_inset
4172*28e138c6SAndroid Build Coastguard Worker
4173*28e138c6SAndroid Build Coastguard Worker)
4174*28e138c6SAndroid Build Coastguard Worker\end_layout
4175*28e138c6SAndroid Build Coastguard Worker
4176*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4177*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_AGC Turns automatic gain control (AGC) on(1) or off(0)
4178*28e138c6SAndroid Build Coastguard Worker (
4179*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4180*28e138c6SAndroid Build Coastguard Workerinline true
4181*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4182*28e138c6SAndroid Build Coastguard Worker
4183*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4184*28e138c6SAndroid Build Coastguard Worker
4185*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4186*28e138c6SAndroid Build Coastguard Worker\end_layout
4187*28e138c6SAndroid Build Coastguard Worker
4188*28e138c6SAndroid Build Coastguard Worker\end_inset
4189*28e138c6SAndroid Build Coastguard Worker
4190*28e138c6SAndroid Build Coastguard Worker)
4191*28e138c6SAndroid Build Coastguard Worker\end_layout
4192*28e138c6SAndroid Build Coastguard Worker
4193*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4194*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_AGC Get AGC status (
4195*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4196*28e138c6SAndroid Build Coastguard Workerinline true
4197*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4198*28e138c6SAndroid Build Coastguard Worker
4199*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4200*28e138c6SAndroid Build Coastguard Worker
4201*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4202*28e138c6SAndroid Build Coastguard Worker\end_layout
4203*28e138c6SAndroid Build Coastguard Worker
4204*28e138c6SAndroid Build Coastguard Worker\end_inset
4205*28e138c6SAndroid Build Coastguard Worker
4206*28e138c6SAndroid Build Coastguard Worker)
4207*28e138c6SAndroid Build Coastguard Worker\end_layout
4208*28e138c6SAndroid Build Coastguard Worker
4209*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4210*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_VAD Turns voice activity detector (VAD) on(1) or off(0)
4211*28e138c6SAndroid Build Coastguard Worker (
4212*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4213*28e138c6SAndroid Build Coastguard Workerinline true
4214*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4215*28e138c6SAndroid Build Coastguard Worker
4216*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4217*28e138c6SAndroid Build Coastguard Worker
4218*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4219*28e138c6SAndroid Build Coastguard Worker\end_layout
4220*28e138c6SAndroid Build Coastguard Worker
4221*28e138c6SAndroid Build Coastguard Worker\end_inset
4222*28e138c6SAndroid Build Coastguard Worker
4223*28e138c6SAndroid Build Coastguard Worker)
4224*28e138c6SAndroid Build Coastguard Worker\end_layout
4225*28e138c6SAndroid Build Coastguard Worker
4226*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4227*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_VAD Get VAD status (
4228*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4229*28e138c6SAndroid Build Coastguard Workerinline true
4230*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4231*28e138c6SAndroid Build Coastguard Worker
4232*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4233*28e138c6SAndroid Build Coastguard Worker
4234*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4235*28e138c6SAndroid Build Coastguard Worker\end_layout
4236*28e138c6SAndroid Build Coastguard Worker
4237*28e138c6SAndroid Build Coastguard Worker\end_inset
4238*28e138c6SAndroid Build Coastguard Worker
4239*28e138c6SAndroid Build Coastguard Worker)
4240*28e138c6SAndroid Build Coastguard Worker\end_layout
4241*28e138c6SAndroid Build Coastguard Worker
4242*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4243*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_AGC_LEVEL
4244*28e138c6SAndroid Build Coastguard Worker\end_layout
4245*28e138c6SAndroid Build Coastguard Worker
4246*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4247*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_AGC_LEVEL
4248*28e138c6SAndroid Build Coastguard Worker\end_layout
4249*28e138c6SAndroid Build Coastguard Worker
4250*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4251*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_DEREVERB Turns reverberation removal on(1) or off(0)
4252*28e138c6SAndroid Build Coastguard Worker (
4253*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4254*28e138c6SAndroid Build Coastguard Workerinline true
4255*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4256*28e138c6SAndroid Build Coastguard Worker
4257*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4258*28e138c6SAndroid Build Coastguard Worker
4259*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4260*28e138c6SAndroid Build Coastguard Worker\end_layout
4261*28e138c6SAndroid Build Coastguard Worker
4262*28e138c6SAndroid Build Coastguard Worker\end_inset
4263*28e138c6SAndroid Build Coastguard Worker
4264*28e138c6SAndroid Build Coastguard Worker)
4265*28e138c6SAndroid Build Coastguard Worker\end_layout
4266*28e138c6SAndroid Build Coastguard Worker
4267*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4268*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_DEREVERB Get reverberation removal status (
4269*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4270*28e138c6SAndroid Build Coastguard Workerinline true
4271*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4272*28e138c6SAndroid Build Coastguard Worker
4273*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4274*28e138c6SAndroid Build Coastguard Worker
4275*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4276*28e138c6SAndroid Build Coastguard Worker\end_layout
4277*28e138c6SAndroid Build Coastguard Worker
4278*28e138c6SAndroid Build Coastguard Worker\end_inset
4279*28e138c6SAndroid Build Coastguard Worker
4280*28e138c6SAndroid Build Coastguard Worker)
4281*28e138c6SAndroid Build Coastguard Worker\end_layout
4282*28e138c6SAndroid Build Coastguard Worker
4283*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4284*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_DEREVERB_LEVEL Not working yet, do not use
4285*28e138c6SAndroid Build Coastguard Worker\end_layout
4286*28e138c6SAndroid Build Coastguard Worker
4287*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4288*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_DEREVERB_LEVEL Not working yet, do not use
4289*28e138c6SAndroid Build Coastguard Worker\end_layout
4290*28e138c6SAndroid Build Coastguard Worker
4291*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4292*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_DEREVERB_DECAY Not working yet, do not use
4293*28e138c6SAndroid Build Coastguard Worker\end_layout
4294*28e138c6SAndroid Build Coastguard Worker
4295*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4296*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_DEREVERB_DECAY Not working yet, do not use
4297*28e138c6SAndroid Build Coastguard Worker\end_layout
4298*28e138c6SAndroid Build Coastguard Worker
4299*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4300*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_PROB_START
4301*28e138c6SAndroid Build Coastguard Worker\end_layout
4302*28e138c6SAndroid Build Coastguard Worker
4303*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4304*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_PROB_START
4305*28e138c6SAndroid Build Coastguard Worker\end_layout
4306*28e138c6SAndroid Build Coastguard Worker
4307*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4308*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_PROB_CONTINUE
4309*28e138c6SAndroid Build Coastguard Worker\end_layout
4310*28e138c6SAndroid Build Coastguard Worker
4311*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4312*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_PROB_CONTINUE
4313*28e138c6SAndroid Build Coastguard Worker\end_layout
4314*28e138c6SAndroid Build Coastguard Worker
4315*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4316*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_NOISE_SUPPRESS Set maximum attenuation of the noise
4317*28e138c6SAndroid Build Coastguard Worker in dB (negative
4318*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4319*28e138c6SAndroid Build Coastguard Workerinline true
4320*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4321*28e138c6SAndroid Build Coastguard Worker
4322*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4323*28e138c6SAndroid Build Coastguard Worker
4324*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4325*28e138c6SAndroid Build Coastguard Worker\end_layout
4326*28e138c6SAndroid Build Coastguard Worker
4327*28e138c6SAndroid Build Coastguard Worker\end_inset
4328*28e138c6SAndroid Build Coastguard Worker
4329*28e138c6SAndroid Build Coastguard Worker)
4330*28e138c6SAndroid Build Coastguard Worker\end_layout
4331*28e138c6SAndroid Build Coastguard Worker
4332*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4333*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_NOISE_SUPPRESS Get maximum attenuation of the noise
4334*28e138c6SAndroid Build Coastguard Worker in dB (negative
4335*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4336*28e138c6SAndroid Build Coastguard Workerinline true
4337*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4338*28e138c6SAndroid Build Coastguard Worker
4339*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4340*28e138c6SAndroid Build Coastguard Worker
4341*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4342*28e138c6SAndroid Build Coastguard Worker\end_layout
4343*28e138c6SAndroid Build Coastguard Worker
4344*28e138c6SAndroid Build Coastguard Worker\end_inset
4345*28e138c6SAndroid Build Coastguard Worker
4346*28e138c6SAndroid Build Coastguard Worker)
4347*28e138c6SAndroid Build Coastguard Worker\end_layout
4348*28e138c6SAndroid Build Coastguard Worker
4349*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4350*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_ECHO_SUPPRESS Set maximum attenuation of the residual
4351*28e138c6SAndroid Build Coastguard Worker echo in dB (negative
4352*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4353*28e138c6SAndroid Build Coastguard Workerinline true
4354*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4355*28e138c6SAndroid Build Coastguard Worker
4356*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4357*28e138c6SAndroid Build Coastguard Worker
4358*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4359*28e138c6SAndroid Build Coastguard Worker\end_layout
4360*28e138c6SAndroid Build Coastguard Worker
4361*28e138c6SAndroid Build Coastguard Worker\end_inset
4362*28e138c6SAndroid Build Coastguard Worker
4363*28e138c6SAndroid Build Coastguard Worker)
4364*28e138c6SAndroid Build Coastguard Worker\end_layout
4365*28e138c6SAndroid Build Coastguard Worker
4366*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4367*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_ECHO_SUPPRESS Get maximum attenuation of the residual
4368*28e138c6SAndroid Build Coastguard Worker echo in dB (negative
4369*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4370*28e138c6SAndroid Build Coastguard Workerinline true
4371*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4372*28e138c6SAndroid Build Coastguard Worker
4373*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4374*28e138c6SAndroid Build Coastguard Worker
4375*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4376*28e138c6SAndroid Build Coastguard Worker\end_layout
4377*28e138c6SAndroid Build Coastguard Worker
4378*28e138c6SAndroid Build Coastguard Worker\end_inset
4379*28e138c6SAndroid Build Coastguard Worker
4380*28e138c6SAndroid Build Coastguard Worker)
4381*28e138c6SAndroid Build Coastguard Worker\end_layout
4382*28e138c6SAndroid Build Coastguard Worker
4383*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4384*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE Set maximum attenuation of the
4385*28e138c6SAndroid Build Coastguard Worker echo in dB when near end is active (negative
4386*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4387*28e138c6SAndroid Build Coastguard Workerinline true
4388*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4389*28e138c6SAndroid Build Coastguard Worker
4390*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4391*28e138c6SAndroid Build Coastguard Worker
4392*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4393*28e138c6SAndroid Build Coastguard Worker\end_layout
4394*28e138c6SAndroid Build Coastguard Worker
4395*28e138c6SAndroid Build Coastguard Worker\end_inset
4396*28e138c6SAndroid Build Coastguard Worker
4397*28e138c6SAndroid Build Coastguard Worker)
4398*28e138c6SAndroid Build Coastguard Worker\end_layout
4399*28e138c6SAndroid Build Coastguard Worker
4400*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4401*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE Get maximum attenuation of the
4402*28e138c6SAndroid Build Coastguard Worker echo in dB when near end is active (negative
4403*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4404*28e138c6SAndroid Build Coastguard Workerinline true
4405*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4406*28e138c6SAndroid Build Coastguard Worker
4407*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4408*28e138c6SAndroid Build Coastguard Worker
4409*28e138c6SAndroid Build Coastguard Workerspx_int32_t
4410*28e138c6SAndroid Build Coastguard Worker\end_layout
4411*28e138c6SAndroid Build Coastguard Worker
4412*28e138c6SAndroid Build Coastguard Worker\end_inset
4413*28e138c6SAndroid Build Coastguard Worker
4414*28e138c6SAndroid Build Coastguard Worker)
4415*28e138c6SAndroid Build Coastguard Worker\end_layout
4416*28e138c6SAndroid Build Coastguard Worker
4417*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4418*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_SET_ECHO_STATE Set the associated echo canceller for residual
4419*28e138c6SAndroid Build Coastguard Worker echo suppression (pointer or NULL for no residual echo suppression)
4420*28e138c6SAndroid Build Coastguard Worker\end_layout
4421*28e138c6SAndroid Build Coastguard Worker
4422*28e138c6SAndroid Build Coastguard Worker\begin_layout Description
4423*28e138c6SAndroid Build Coastguard WorkerSPEEX_PREPROCESS_GET_ECHO_STATE Get the associated echo canceller (pointer)
4424*28e138c6SAndroid Build Coastguard Worker\end_layout
4425*28e138c6SAndroid Build Coastguard Worker
4426*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
4427*28e138c6SAndroid Build Coastguard WorkerEcho Cancellation
4428*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
4429*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
4430*28e138c6SAndroid Build Coastguard Workername "sub:Echo-Cancellation"
4431*28e138c6SAndroid Build Coastguard Worker
4432*28e138c6SAndroid Build Coastguard Worker\end_inset
4433*28e138c6SAndroid Build Coastguard Worker
4434*28e138c6SAndroid Build Coastguard Worker
4435*28e138c6SAndroid Build Coastguard Worker\end_layout
4436*28e138c6SAndroid Build Coastguard Worker
4437*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4438*28e138c6SAndroid Build Coastguard WorkerThe Speex library now includes an echo cancellation
4439*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
4440*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4441*28e138c6SAndroid Build Coastguard Worker
4442*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4443*28e138c6SAndroid Build Coastguard Workerecho cancellation
4444*28e138c6SAndroid Build Coastguard Worker\end_layout
4445*28e138c6SAndroid Build Coastguard Worker
4446*28e138c6SAndroid Build Coastguard Worker\end_inset
4447*28e138c6SAndroid Build Coastguard Worker
4448*28e138c6SAndroid Build Coastguard Worker algorithm suitable for Acoustic Echo Cancellation
4449*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
4450*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4451*28e138c6SAndroid Build Coastguard Worker
4452*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4453*28e138c6SAndroid Build Coastguard Workeracoustic echo cancellation
4454*28e138c6SAndroid Build Coastguard Worker\end_layout
4455*28e138c6SAndroid Build Coastguard Worker
4456*28e138c6SAndroid Build Coastguard Worker\end_inset
4457*28e138c6SAndroid Build Coastguard Worker
4458*28e138c6SAndroid Build Coastguard Worker (AEC).
4459*28e138c6SAndroid Build Coastguard Worker In order to use the echo canceller, you first need to
4460*28e138c6SAndroid Build Coastguard Worker\end_layout
4461*28e138c6SAndroid Build Coastguard Worker
4462*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4463*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4464*28e138c6SAndroid Build Coastguard Workerinline false
4465*28e138c6SAndroid Build Coastguard Workerstatus open
4466*28e138c6SAndroid Build Coastguard Worker
4467*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4468*28e138c6SAndroid Build Coastguard Worker
4469*28e138c6SAndroid Build Coastguard Worker#include <speex/speex_echo.h>
4470*28e138c6SAndroid Build Coastguard Worker\end_layout
4471*28e138c6SAndroid Build Coastguard Worker
4472*28e138c6SAndroid Build Coastguard Worker\end_inset
4473*28e138c6SAndroid Build Coastguard Worker
4474*28e138c6SAndroid Build Coastguard Worker
4475*28e138c6SAndroid Build Coastguard Worker\end_layout
4476*28e138c6SAndroid Build Coastguard Worker
4477*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4478*28e138c6SAndroid Build Coastguard WorkerThen, an echo canceller state can be created by:
4479*28e138c6SAndroid Build Coastguard Worker\end_layout
4480*28e138c6SAndroid Build Coastguard Worker
4481*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4482*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4483*28e138c6SAndroid Build Coastguard Workerinline false
4484*28e138c6SAndroid Build Coastguard Workerstatus open
4485*28e138c6SAndroid Build Coastguard Worker
4486*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4487*28e138c6SAndroid Build Coastguard Worker
4488*28e138c6SAndroid Build Coastguard WorkerSpeexEchoState *echo_state = speex_echo_state_init(frame_size, filter_length);
4489*28e138c6SAndroid Build Coastguard Worker\end_layout
4490*28e138c6SAndroid Build Coastguard Worker
4491*28e138c6SAndroid Build Coastguard Worker\end_inset
4492*28e138c6SAndroid Build Coastguard Worker
4493*28e138c6SAndroid Build Coastguard Worker
4494*28e138c6SAndroid Build Coastguard Worker\end_layout
4495*28e138c6SAndroid Build Coastguard Worker
4496*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4497*28e138c6SAndroid Build Coastguard Workerwhere
4498*28e138c6SAndroid Build Coastguard Worker\family typewriter
4499*28e138c6SAndroid Build Coastguard Workerframe_size
4500*28e138c6SAndroid Build Coastguard Worker\family default
4501*28e138c6SAndroid Build Coastguard Worker is the amount of data (in samples) you want to process at once and
4502*28e138c6SAndroid Build Coastguard Worker\family typewriter
4503*28e138c6SAndroid Build Coastguard Workerfilter_length
4504*28e138c6SAndroid Build Coastguard Worker\family default
4505*28e138c6SAndroid Build Coastguard Worker is the length (in samples) of the echo cancelling filter you want to use
4506*28e138c6SAndroid Build Coastguard Worker (also known as
4507*28e138c6SAndroid Build Coastguard Worker\shape italic
4508*28e138c6SAndroid Build Coastguard Workertail length
4509*28e138c6SAndroid Build Coastguard Worker\shape default
4510*28e138c6SAndroid Build Coastguard Worker
4511*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
4512*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4513*28e138c6SAndroid Build Coastguard Worker
4514*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4515*28e138c6SAndroid Build Coastguard Workertail length
4516*28e138c6SAndroid Build Coastguard Worker\end_layout
4517*28e138c6SAndroid Build Coastguard Worker
4518*28e138c6SAndroid Build Coastguard Worker\end_inset
4519*28e138c6SAndroid Build Coastguard Worker
4520*28e138c6SAndroid Build Coastguard Worker).
4521*28e138c6SAndroid Build Coastguard Worker It is recommended to use a frame size in the order of 20 ms (or equal to
4522*28e138c6SAndroid Build Coastguard Worker the codec frame size) and make sure it is easy to perform an FFT of that
4523*28e138c6SAndroid Build Coastguard Worker size (powers of two are better than prime sizes).
4524*28e138c6SAndroid Build Coastguard Worker The recommended tail length is approximately the third of the room reverberatio
4525*28e138c6SAndroid Build Coastguard Workern time.
4526*28e138c6SAndroid Build Coastguard Worker For example, in a small room, reverberation time is in the order of 300
4527*28e138c6SAndroid Build Coastguard Worker ms, so a tail length of 100 ms is a good choice (800 samples at 8000 Hz
4528*28e138c6SAndroid Build Coastguard Worker sampling rate).
4529*28e138c6SAndroid Build Coastguard Worker\end_layout
4530*28e138c6SAndroid Build Coastguard Worker
4531*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4532*28e138c6SAndroid Build Coastguard WorkerOnce the echo canceller state is created, audio can be processed by:
4533*28e138c6SAndroid Build Coastguard Worker\end_layout
4534*28e138c6SAndroid Build Coastguard Worker
4535*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4536*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4537*28e138c6SAndroid Build Coastguard Workerinline false
4538*28e138c6SAndroid Build Coastguard Workerstatus open
4539*28e138c6SAndroid Build Coastguard Worker
4540*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4541*28e138c6SAndroid Build Coastguard Worker
4542*28e138c6SAndroid Build Coastguard Workerspeex_echo_cancellation(echo_state, input_frame, echo_frame, output_frame);
4543*28e138c6SAndroid Build Coastguard Worker\end_layout
4544*28e138c6SAndroid Build Coastguard Worker
4545*28e138c6SAndroid Build Coastguard Worker\end_inset
4546*28e138c6SAndroid Build Coastguard Worker
4547*28e138c6SAndroid Build Coastguard Worker
4548*28e138c6SAndroid Build Coastguard Worker\end_layout
4549*28e138c6SAndroid Build Coastguard Worker
4550*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4551*28e138c6SAndroid Build Coastguard Workerwhere
4552*28e138c6SAndroid Build Coastguard Worker\family typewriter
4553*28e138c6SAndroid Build Coastguard Workerinput_frame
4554*28e138c6SAndroid Build Coastguard Worker\family default
4555*28e138c6SAndroid Build Coastguard Worker is the audio as captured by the microphone,
4556*28e138c6SAndroid Build Coastguard Worker\family typewriter
4557*28e138c6SAndroid Build Coastguard Workerecho_frame
4558*28e138c6SAndroid Build Coastguard Worker\family default
4559*28e138c6SAndroid Build Coastguard Worker is the signal that was played in the speaker (and needs to be removed)
4560*28e138c6SAndroid Build Coastguard Worker and
4561*28e138c6SAndroid Build Coastguard Worker\family typewriter
4562*28e138c6SAndroid Build Coastguard Workeroutput_frame
4563*28e138c6SAndroid Build Coastguard Worker\family default
4564*28e138c6SAndroid Build Coastguard Worker is the signal with echo removed.
4565*28e138c6SAndroid Build Coastguard Worker
4566*28e138c6SAndroid Build Coastguard Worker\end_layout
4567*28e138c6SAndroid Build Coastguard Worker
4568*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4569*28e138c6SAndroid Build Coastguard WorkerOne important thing to keep in mind is the relationship between
4570*28e138c6SAndroid Build Coastguard Worker\family typewriter
4571*28e138c6SAndroid Build Coastguard Workerinput_frame
4572*28e138c6SAndroid Build Coastguard Worker\family default
4573*28e138c6SAndroid Build Coastguard Worker and
4574*28e138c6SAndroid Build Coastguard Worker\family typewriter
4575*28e138c6SAndroid Build Coastguard Workerecho_frame
4576*28e138c6SAndroid Build Coastguard Worker\family default
4577*28e138c6SAndroid Build Coastguard Worker.
4578*28e138c6SAndroid Build Coastguard Worker It is important that, at any time, any echo that is present in the input
4579*28e138c6SAndroid Build Coastguard Worker has already been sent to the echo canceller as
4580*28e138c6SAndroid Build Coastguard Worker\family typewriter
4581*28e138c6SAndroid Build Coastguard Workerecho_frame
4582*28e138c6SAndroid Build Coastguard Worker\family default
4583*28e138c6SAndroid Build Coastguard Worker.
4584*28e138c6SAndroid Build Coastguard Worker In other words, the echo canceller cannot remove a signal that it hasn't
4585*28e138c6SAndroid Build Coastguard Worker yet received.
4586*28e138c6SAndroid Build Coastguard Worker On the other hand, the delay between the input signal and the echo signal
4587*28e138c6SAndroid Build Coastguard Worker must be small enough because otherwise part of the echo cancellation filter
4588*28e138c6SAndroid Build Coastguard Worker is inefficient.
4589*28e138c6SAndroid Build Coastguard Worker In the ideal case, you code would look like:
4590*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4591*28e138c6SAndroid Build Coastguard Workerlstparams "breaklines=true"
4592*28e138c6SAndroid Build Coastguard Workerinline false
4593*28e138c6SAndroid Build Coastguard Workerstatus open
4594*28e138c6SAndroid Build Coastguard Worker
4595*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4596*28e138c6SAndroid Build Coastguard Worker
4597*28e138c6SAndroid Build Coastguard Workerwrite_to_soundcard(echo_frame, frame_size);
4598*28e138c6SAndroid Build Coastguard Worker\end_layout
4599*28e138c6SAndroid Build Coastguard Worker
4600*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4601*28e138c6SAndroid Build Coastguard Worker
4602*28e138c6SAndroid Build Coastguard Workerread_from_soundcard(input_frame, frame_size);
4603*28e138c6SAndroid Build Coastguard Worker\end_layout
4604*28e138c6SAndroid Build Coastguard Worker
4605*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4606*28e138c6SAndroid Build Coastguard Worker
4607*28e138c6SAndroid Build Coastguard Workerspeex_echo_cancellation(echo_state, input_frame, echo_frame, output_frame);
4608*28e138c6SAndroid Build Coastguard Worker\end_layout
4609*28e138c6SAndroid Build Coastguard Worker
4610*28e138c6SAndroid Build Coastguard Worker\end_inset
4611*28e138c6SAndroid Build Coastguard Worker
4612*28e138c6SAndroid Build Coastguard Worker
4613*28e138c6SAndroid Build Coastguard Worker\end_layout
4614*28e138c6SAndroid Build Coastguard Worker
4615*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4616*28e138c6SAndroid Build Coastguard WorkerIf you wish to further reduce the echo present in the signal, you can do
4617*28e138c6SAndroid Build Coastguard Worker so by associating the echo canceller to the preprocessor (see Section
4618*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
4619*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
4620*28e138c6SAndroid Build Coastguard Workerreference "sub:Preprocessor"
4621*28e138c6SAndroid Build Coastguard Worker
4622*28e138c6SAndroid Build Coastguard Worker\end_inset
4623*28e138c6SAndroid Build Coastguard Worker
4624*28e138c6SAndroid Build Coastguard Worker).
4625*28e138c6SAndroid Build Coastguard Worker This is done by calling:
4626*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4627*28e138c6SAndroid Build Coastguard Workerlstparams "breaklines=true"
4628*28e138c6SAndroid Build Coastguard Workerinline false
4629*28e138c6SAndroid Build Coastguard Workerstatus open
4630*28e138c6SAndroid Build Coastguard Worker
4631*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4632*28e138c6SAndroid Build Coastguard Worker
4633*28e138c6SAndroid Build Coastguard Workerspeex_preprocess_ctl(preprocess_state, SPEEX_PREPROCESS_SET_ECHO_STATE,echo_stat
4634*28e138c6SAndroid Build Coastguard Workere);
4635*28e138c6SAndroid Build Coastguard Worker\end_layout
4636*28e138c6SAndroid Build Coastguard Worker
4637*28e138c6SAndroid Build Coastguard Worker\end_inset
4638*28e138c6SAndroid Build Coastguard Worker
4639*28e138c6SAndroid Build Coastguard Workerin the initialisation.
4640*28e138c6SAndroid Build Coastguard Worker\end_layout
4641*28e138c6SAndroid Build Coastguard Worker
4642*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4643*28e138c6SAndroid Build Coastguard WorkerAs of version 1.2-beta2, there is an alternative, simpler API that can be
4644*28e138c6SAndroid Build Coastguard Worker used instead of
4645*28e138c6SAndroid Build Coastguard Worker\emph on
4646*28e138c6SAndroid Build Coastguard Workerspeex_echo_cancellation()
4647*28e138c6SAndroid Build Coastguard Worker\emph default
4648*28e138c6SAndroid Build Coastguard Worker.
4649*28e138c6SAndroid Build Coastguard Worker When audio capture and playback are handled asynchronously (e.g.
4650*28e138c6SAndroid Build Coastguard Worker in different threads or using the
4651*28e138c6SAndroid Build Coastguard Worker\emph on
4652*28e138c6SAndroid Build Coastguard Workerpoll()
4653*28e138c6SAndroid Build Coastguard Worker\emph default
4654*28e138c6SAndroid Build Coastguard Worker or
4655*28e138c6SAndroid Build Coastguard Worker\emph on
4656*28e138c6SAndroid Build Coastguard Workerselect()
4657*28e138c6SAndroid Build Coastguard Worker\emph default
4658*28e138c6SAndroid Build Coastguard Worker system call), it can be difficult to keep track of what input_frame comes
4659*28e138c6SAndroid Build Coastguard Worker with what echo_frame.
4660*28e138c6SAndroid Build Coastguard Worker Instead, the playback context/thread can simply call:
4661*28e138c6SAndroid Build Coastguard Worker\end_layout
4662*28e138c6SAndroid Build Coastguard Worker
4663*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4664*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4665*28e138c6SAndroid Build Coastguard Workerinline false
4666*28e138c6SAndroid Build Coastguard Workerstatus open
4667*28e138c6SAndroid Build Coastguard Worker
4668*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4669*28e138c6SAndroid Build Coastguard Worker
4670*28e138c6SAndroid Build Coastguard Workerspeex_echo_playback(echo_state, echo_frame);
4671*28e138c6SAndroid Build Coastguard Worker\end_layout
4672*28e138c6SAndroid Build Coastguard Worker
4673*28e138c6SAndroid Build Coastguard Worker\end_inset
4674*28e138c6SAndroid Build Coastguard Worker
4675*28e138c6SAndroid Build Coastguard Worker
4676*28e138c6SAndroid Build Coastguard Worker\end_layout
4677*28e138c6SAndroid Build Coastguard Worker
4678*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4679*28e138c6SAndroid Build Coastguard Workerevery time an audio frame is played.
4680*28e138c6SAndroid Build Coastguard Worker Then, the capture context/thread calls:
4681*28e138c6SAndroid Build Coastguard Worker\end_layout
4682*28e138c6SAndroid Build Coastguard Worker
4683*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4684*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4685*28e138c6SAndroid Build Coastguard Workerinline false
4686*28e138c6SAndroid Build Coastguard Workerstatus open
4687*28e138c6SAndroid Build Coastguard Worker
4688*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4689*28e138c6SAndroid Build Coastguard Worker
4690*28e138c6SAndroid Build Coastguard Workerspeex_echo_capture(echo_state, input_frame, output_frame);
4691*28e138c6SAndroid Build Coastguard Worker\end_layout
4692*28e138c6SAndroid Build Coastguard Worker
4693*28e138c6SAndroid Build Coastguard Worker\end_inset
4694*28e138c6SAndroid Build Coastguard Worker
4695*28e138c6SAndroid Build Coastguard Worker
4696*28e138c6SAndroid Build Coastguard Worker\end_layout
4697*28e138c6SAndroid Build Coastguard Worker
4698*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4699*28e138c6SAndroid Build Coastguard Workerfor every frame captured.
4700*28e138c6SAndroid Build Coastguard Worker Internally,
4701*28e138c6SAndroid Build Coastguard Worker\emph on
4702*28e138c6SAndroid Build Coastguard Workerspeex_echo_playback()
4703*28e138c6SAndroid Build Coastguard Worker\emph default
4704*28e138c6SAndroid Build Coastguard Worker simply buffers the playback frame so it can be used by
4705*28e138c6SAndroid Build Coastguard Worker\emph on
4706*28e138c6SAndroid Build Coastguard Workerspeex_echo_capture()
4707*28e138c6SAndroid Build Coastguard Worker\emph default
4708*28e138c6SAndroid Build Coastguard Worker to call
4709*28e138c6SAndroid Build Coastguard Worker\emph on
4710*28e138c6SAndroid Build Coastguard Workerspeex_echo_cancel()
4711*28e138c6SAndroid Build Coastguard Worker\emph default
4712*28e138c6SAndroid Build Coastguard Worker.
4713*28e138c6SAndroid Build Coastguard Worker A side effect of using this alternate API is that the playback audio is
4714*28e138c6SAndroid Build Coastguard Worker delayed by two frames, which is the normal delay caused by the soundcard.
4715*28e138c6SAndroid Build Coastguard Worker When capture and playback are already synchronised,
4716*28e138c6SAndroid Build Coastguard Worker\emph on
4717*28e138c6SAndroid Build Coastguard Workerspeex_echo_cancellation()
4718*28e138c6SAndroid Build Coastguard Worker\emph default
4719*28e138c6SAndroid Build Coastguard Worker is preferable since it gives better control on the exact input/echo timing.
4720*28e138c6SAndroid Build Coastguard Worker\end_layout
4721*28e138c6SAndroid Build Coastguard Worker
4722*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4723*28e138c6SAndroid Build Coastguard WorkerThe echo cancellation state can be destroyed with:
4724*28e138c6SAndroid Build Coastguard Worker\end_layout
4725*28e138c6SAndroid Build Coastguard Worker
4726*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4727*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4728*28e138c6SAndroid Build Coastguard Workerinline false
4729*28e138c6SAndroid Build Coastguard Workerstatus open
4730*28e138c6SAndroid Build Coastguard Worker
4731*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4732*28e138c6SAndroid Build Coastguard Worker
4733*28e138c6SAndroid Build Coastguard Workerspeex_echo_state_destroy(echo_state);
4734*28e138c6SAndroid Build Coastguard Worker\end_layout
4735*28e138c6SAndroid Build Coastguard Worker
4736*28e138c6SAndroid Build Coastguard Worker\end_inset
4737*28e138c6SAndroid Build Coastguard Worker
4738*28e138c6SAndroid Build Coastguard Worker
4739*28e138c6SAndroid Build Coastguard Worker\end_layout
4740*28e138c6SAndroid Build Coastguard Worker
4741*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4742*28e138c6SAndroid Build Coastguard WorkerIt is also possible to reset the state of the echo canceller so it can be
4743*28e138c6SAndroid Build Coastguard Worker reused without the need to create another state with:
4744*28e138c6SAndroid Build Coastguard Worker\end_layout
4745*28e138c6SAndroid Build Coastguard Worker
4746*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4747*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4748*28e138c6SAndroid Build Coastguard Workerinline false
4749*28e138c6SAndroid Build Coastguard Workerstatus open
4750*28e138c6SAndroid Build Coastguard Worker
4751*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4752*28e138c6SAndroid Build Coastguard Worker
4753*28e138c6SAndroid Build Coastguard Workerspeex_echo_state_reset(echo_state);
4754*28e138c6SAndroid Build Coastguard Worker\end_layout
4755*28e138c6SAndroid Build Coastguard Worker
4756*28e138c6SAndroid Build Coastguard Worker\end_inset
4757*28e138c6SAndroid Build Coastguard Worker
4758*28e138c6SAndroid Build Coastguard Worker
4759*28e138c6SAndroid Build Coastguard Worker\end_layout
4760*28e138c6SAndroid Build Coastguard Worker
4761*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
4762*28e138c6SAndroid Build Coastguard WorkerTroubleshooting
4763*28e138c6SAndroid Build Coastguard Worker\end_layout
4764*28e138c6SAndroid Build Coastguard Worker
4765*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4766*28e138c6SAndroid Build Coastguard WorkerThere are several things that may prevent the echo canceller from working
4767*28e138c6SAndroid Build Coastguard Worker properly.
4768*28e138c6SAndroid Build Coastguard Worker One of them is a bug (or something suboptimal) in the code, but there are
4769*28e138c6SAndroid Build Coastguard Worker many others you should consider first
4770*28e138c6SAndroid Build Coastguard Worker\end_layout
4771*28e138c6SAndroid Build Coastguard Worker
4772*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
4773*28e138c6SAndroid Build Coastguard WorkerUsing a different soundcard to do the capture and plaback will
4774*28e138c6SAndroid Build Coastguard Worker\series bold
4775*28e138c6SAndroid Build Coastguard Workernot
4776*28e138c6SAndroid Build Coastguard Worker\series default
4777*28e138c6SAndroid Build Coastguard Worker work, regardless of what you may think.
4778*28e138c6SAndroid Build Coastguard Worker The only exception to that is if the two cards can be made to have their
4779*28e138c6SAndroid Build Coastguard Worker sampling clock
4780*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
4781*28e138c6SAndroid Build Coastguard Worker\end_inset
4782*28e138c6SAndroid Build Coastguard Worker
4783*28e138c6SAndroid Build Coastguard Workerlocked
4784*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
4785*28e138c6SAndroid Build Coastguard Worker\end_inset
4786*28e138c6SAndroid Build Coastguard Worker
4787*28e138c6SAndroid Build Coastguard Worker on the same clock source.
4788*28e138c6SAndroid Build Coastguard Worker If not, the clocks will always have a small amount of drift, which will
4789*28e138c6SAndroid Build Coastguard Worker prevent the echo canceller from adapting.
4790*28e138c6SAndroid Build Coastguard Worker\end_layout
4791*28e138c6SAndroid Build Coastguard Worker
4792*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
4793*28e138c6SAndroid Build Coastguard WorkerThe delay between the record and playback signals must be minimal.
4794*28e138c6SAndroid Build Coastguard Worker Any signal played has to
4795*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
4796*28e138c6SAndroid Build Coastguard Worker\end_inset
4797*28e138c6SAndroid Build Coastguard Worker
4798*28e138c6SAndroid Build Coastguard Workerappear
4799*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
4800*28e138c6SAndroid Build Coastguard Worker\end_inset
4801*28e138c6SAndroid Build Coastguard Worker
4802*28e138c6SAndroid Build Coastguard Worker on the playback (far end) signal slightly before the echo canceller
4803*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
4804*28e138c6SAndroid Build Coastguard Worker\end_inset
4805*28e138c6SAndroid Build Coastguard Worker
4806*28e138c6SAndroid Build Coastguard Workersees
4807*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
4808*28e138c6SAndroid Build Coastguard Worker\end_inset
4809*28e138c6SAndroid Build Coastguard Worker
4810*28e138c6SAndroid Build Coastguard Worker it in the near end signal, but excessive delay means that part of the filter
4811*28e138c6SAndroid Build Coastguard Worker length is wasted.
4812*28e138c6SAndroid Build Coastguard Worker In the worst situations, the delay is such that it is longer than the filter
4813*28e138c6SAndroid Build Coastguard Worker length, in which case, no echo can be cancelled.
4814*28e138c6SAndroid Build Coastguard Worker\end_layout
4815*28e138c6SAndroid Build Coastguard Worker
4816*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
4817*28e138c6SAndroid Build Coastguard WorkerWhen it comes to echo tail length (filter length), longer is
4818*28e138c6SAndroid Build Coastguard Worker\series bold
4819*28e138c6SAndroid Build Coastguard Workernot
4820*28e138c6SAndroid Build Coastguard Worker\series default
4821*28e138c6SAndroid Build Coastguard Worker better.
4822*28e138c6SAndroid Build Coastguard Worker Actually, the longer the tail length, the longer it takes for the filter
4823*28e138c6SAndroid Build Coastguard Worker to adapt.
4824*28e138c6SAndroid Build Coastguard Worker Of course, a tail length that is too short will not cancel enough echo,
4825*28e138c6SAndroid Build Coastguard Worker but the most common problem seen is that people set a very long tail length
4826*28e138c6SAndroid Build Coastguard Worker and then wonder why no echo is being cancelled.
4827*28e138c6SAndroid Build Coastguard Worker\end_layout
4828*28e138c6SAndroid Build Coastguard Worker
4829*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
4830*28e138c6SAndroid Build Coastguard WorkerNon-linear distortion cannot (by definition) be modeled by the linear adaptive
4831*28e138c6SAndroid Build Coastguard Worker filter used in the echo canceller and thus cannot be cancelled.
4832*28e138c6SAndroid Build Coastguard Worker Use good audio gear and avoid saturation/clipping.
4833*28e138c6SAndroid Build Coastguard Worker\end_layout
4834*28e138c6SAndroid Build Coastguard Worker
4835*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4836*28e138c6SAndroid Build Coastguard WorkerAlso useful is reading
4837*28e138c6SAndroid Build Coastguard Worker\emph on
4838*28e138c6SAndroid Build Coastguard WorkerEcho Cancellation Demystified
4839*28e138c6SAndroid Build Coastguard Worker\emph default
4840*28e138c6SAndroid Build Coastguard Worker by Alexey Frunze
4841*28e138c6SAndroid Build Coastguard Worker\begin_inset Foot
4842*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4843*28e138c6SAndroid Build Coastguard Worker
4844*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4845*28e138c6SAndroid Build Coastguard Workerhttp://www.embeddedstar.com/articles/2003/7/article20030720-1.html
4846*28e138c6SAndroid Build Coastguard Worker\end_layout
4847*28e138c6SAndroid Build Coastguard Worker
4848*28e138c6SAndroid Build Coastguard Worker\end_inset
4849*28e138c6SAndroid Build Coastguard Worker
4850*28e138c6SAndroid Build Coastguard Worker, which explains the fundamental principles of echo cancellation.
4851*28e138c6SAndroid Build Coastguard Worker The details of the algorithm described in the article are different, but
4852*28e138c6SAndroid Build Coastguard Worker the general ideas of echo cancellation through adaptive filters are the
4853*28e138c6SAndroid Build Coastguard Worker same.
4854*28e138c6SAndroid Build Coastguard Worker\end_layout
4855*28e138c6SAndroid Build Coastguard Worker
4856*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4857*28e138c6SAndroid Build Coastguard WorkerAs of version 1.2beta2, a new
4858*28e138c6SAndroid Build Coastguard Worker\family typewriter
4859*28e138c6SAndroid Build Coastguard Workerecho_diagnostic.m
4860*28e138c6SAndroid Build Coastguard Worker\family default
4861*28e138c6SAndroid Build Coastguard Worker tool is included in the source distribution.
4862*28e138c6SAndroid Build Coastguard Worker The first step is to define DUMP_ECHO_CANCEL_DATA during the build.
4863*28e138c6SAndroid Build Coastguard Worker This causes the echo canceller to automatically save the near-end, far-end
4864*28e138c6SAndroid Build Coastguard Worker and output signals to files (aec_rec.sw aec_play.sw and aec_out.sw).
4865*28e138c6SAndroid Build Coastguard Worker These are exactly what the AEC receives and outputs.
4866*28e138c6SAndroid Build Coastguard Worker From there, it is necessary to start Octave and type:
4867*28e138c6SAndroid Build Coastguard Worker\end_layout
4868*28e138c6SAndroid Build Coastguard Worker
4869*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4870*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4871*28e138c6SAndroid Build Coastguard Workerlstparams "language=Matlab"
4872*28e138c6SAndroid Build Coastguard Workerinline false
4873*28e138c6SAndroid Build Coastguard Workerstatus open
4874*28e138c6SAndroid Build Coastguard Worker
4875*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4876*28e138c6SAndroid Build Coastguard Worker
4877*28e138c6SAndroid Build Coastguard Workerecho_diagnostic('aec_rec.sw', 'aec_play.sw', 'aec_diagnostic.sw', 1024);
4878*28e138c6SAndroid Build Coastguard Worker\end_layout
4879*28e138c6SAndroid Build Coastguard Worker
4880*28e138c6SAndroid Build Coastguard Worker\end_inset
4881*28e138c6SAndroid Build Coastguard Worker
4882*28e138c6SAndroid Build Coastguard Worker
4883*28e138c6SAndroid Build Coastguard Worker\end_layout
4884*28e138c6SAndroid Build Coastguard Worker
4885*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4886*28e138c6SAndroid Build Coastguard WorkerThe value of 1024 is the filter length and can be changed.
4887*28e138c6SAndroid Build Coastguard Worker There will be some (hopefully) useful messages printed and echo cancelled
4888*28e138c6SAndroid Build Coastguard Worker audio will be saved to aec_diagnostic.sw .
4889*28e138c6SAndroid Build Coastguard Worker If even that output is bad (almost no cancellation) then there is  probably
4890*28e138c6SAndroid Build Coastguard Worker problem with the playback or recording process.
4891*28e138c6SAndroid Build Coastguard Worker\end_layout
4892*28e138c6SAndroid Build Coastguard Worker
4893*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
4894*28e138c6SAndroid Build Coastguard WorkerJitter Buffer
4895*28e138c6SAndroid Build Coastguard Worker\end_layout
4896*28e138c6SAndroid Build Coastguard Worker
4897*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4898*28e138c6SAndroid Build Coastguard WorkerThe jitter buffer can be enabled by including:
4899*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4900*28e138c6SAndroid Build Coastguard Workerlstparams "breaklines=true"
4901*28e138c6SAndroid Build Coastguard Workerinline false
4902*28e138c6SAndroid Build Coastguard Workerstatus open
4903*28e138c6SAndroid Build Coastguard Worker
4904*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4905*28e138c6SAndroid Build Coastguard Worker
4906*28e138c6SAndroid Build Coastguard Worker#include <speex/speex_jitter.h>
4907*28e138c6SAndroid Build Coastguard Worker\end_layout
4908*28e138c6SAndroid Build Coastguard Worker
4909*28e138c6SAndroid Build Coastguard Worker\end_inset
4910*28e138c6SAndroid Build Coastguard Worker
4911*28e138c6SAndroid Build Coastguard Worker and a new jitter buffer state can be initialised by:
4912*28e138c6SAndroid Build Coastguard Worker\end_layout
4913*28e138c6SAndroid Build Coastguard Worker
4914*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4915*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4916*28e138c6SAndroid Build Coastguard Workerlstparams "breaklines=true"
4917*28e138c6SAndroid Build Coastguard Workerinline false
4918*28e138c6SAndroid Build Coastguard Workerstatus open
4919*28e138c6SAndroid Build Coastguard Worker
4920*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4921*28e138c6SAndroid Build Coastguard Worker
4922*28e138c6SAndroid Build Coastguard WorkerJitterBuffer *state = jitter_buffer_init(step);
4923*28e138c6SAndroid Build Coastguard Worker\end_layout
4924*28e138c6SAndroid Build Coastguard Worker
4925*28e138c6SAndroid Build Coastguard Worker\end_inset
4926*28e138c6SAndroid Build Coastguard Worker
4927*28e138c6SAndroid Build Coastguard Worker
4928*28e138c6SAndroid Build Coastguard Worker\end_layout
4929*28e138c6SAndroid Build Coastguard Worker
4930*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4931*28e138c6SAndroid Build Coastguard Workerwhere the
4932*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4933*28e138c6SAndroid Build Coastguard Workerinline true
4934*28e138c6SAndroid Build Coastguard Workerstatus collapsed
4935*28e138c6SAndroid Build Coastguard Worker
4936*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4937*28e138c6SAndroid Build Coastguard Worker
4938*28e138c6SAndroid Build Coastguard Workerstep
4939*28e138c6SAndroid Build Coastguard Worker\end_layout
4940*28e138c6SAndroid Build Coastguard Worker
4941*28e138c6SAndroid Build Coastguard Worker\end_inset
4942*28e138c6SAndroid Build Coastguard Worker
4943*28e138c6SAndroid Build Coastguard Worker argument is the default time step (in timestamp units) used for adjusting
4944*28e138c6SAndroid Build Coastguard Worker the delay and doing concealment.
4945*28e138c6SAndroid Build Coastguard Worker A value of 1 is always correct, but higher values may be more convenient
4946*28e138c6SAndroid Build Coastguard Worker sometimes.
4947*28e138c6SAndroid Build Coastguard Worker For example, if you are only able to do concealment on 20ms frames, there
4948*28e138c6SAndroid Build Coastguard Worker is no point in the jitter buffer asking you to do it on one sample.
4949*28e138c6SAndroid Build Coastguard Worker Another example is that for video, it makes no sense to adjust the delay
4950*28e138c6SAndroid Build Coastguard Worker by less than a full frame.
4951*28e138c6SAndroid Build Coastguard Worker The value provided can always be changed at a later time.
4952*28e138c6SAndroid Build Coastguard Worker\end_layout
4953*28e138c6SAndroid Build Coastguard Worker
4954*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
4955*28e138c6SAndroid Build Coastguard WorkerThe jitter buffer API is based on the
4956*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4957*28e138c6SAndroid Build Coastguard Workerinline true
4958*28e138c6SAndroid Build Coastguard Workerstatus open
4959*28e138c6SAndroid Build Coastguard Worker
4960*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4961*28e138c6SAndroid Build Coastguard Worker
4962*28e138c6SAndroid Build Coastguard WorkerJitterBufferPacket
4963*28e138c6SAndroid Build Coastguard Worker\end_layout
4964*28e138c6SAndroid Build Coastguard Worker
4965*28e138c6SAndroid Build Coastguard Worker\end_inset
4966*28e138c6SAndroid Build Coastguard Worker
4967*28e138c6SAndroid Build Coastguard Worker type, which is defined as:
4968*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
4969*28e138c6SAndroid Build Coastguard Workerinline false
4970*28e138c6SAndroid Build Coastguard Workerstatus open
4971*28e138c6SAndroid Build Coastguard Worker
4972*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4973*28e138c6SAndroid Build Coastguard Worker
4974*28e138c6SAndroid Build Coastguard Workertypedef struct {
4975*28e138c6SAndroid Build Coastguard Worker\end_layout
4976*28e138c6SAndroid Build Coastguard Worker
4977*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4978*28e138c6SAndroid Build Coastguard Worker
4979*28e138c6SAndroid Build Coastguard Worker   char        *data;       /* Data bytes contained in the packet */
4980*28e138c6SAndroid Build Coastguard Worker\end_layout
4981*28e138c6SAndroid Build Coastguard Worker
4982*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4983*28e138c6SAndroid Build Coastguard Worker
4984*28e138c6SAndroid Build Coastguard Worker   spx_uint32_t len;        /* Length of the packet in bytes */
4985*28e138c6SAndroid Build Coastguard Worker\end_layout
4986*28e138c6SAndroid Build Coastguard Worker
4987*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4988*28e138c6SAndroid Build Coastguard Worker
4989*28e138c6SAndroid Build Coastguard Worker   spx_uint32_t timestamp;  /* Timestamp for the packet */
4990*28e138c6SAndroid Build Coastguard Worker\end_layout
4991*28e138c6SAndroid Build Coastguard Worker
4992*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4993*28e138c6SAndroid Build Coastguard Worker
4994*28e138c6SAndroid Build Coastguard Worker   spx_uint32_t span;       /* Time covered by the packet (timestamp units)
4995*28e138c6SAndroid Build Coastguard Worker */
4996*28e138c6SAndroid Build Coastguard Worker\end_layout
4997*28e138c6SAndroid Build Coastguard Worker
4998*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
4999*28e138c6SAndroid Build Coastguard Worker
5000*28e138c6SAndroid Build Coastguard Worker} JitterBufferPacket;
5001*28e138c6SAndroid Build Coastguard Worker\end_layout
5002*28e138c6SAndroid Build Coastguard Worker
5003*28e138c6SAndroid Build Coastguard Worker\end_inset
5004*28e138c6SAndroid Build Coastguard Worker
5005*28e138c6SAndroid Build Coastguard Worker
5006*28e138c6SAndroid Build Coastguard Worker\end_layout
5007*28e138c6SAndroid Build Coastguard Worker
5008*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5009*28e138c6SAndroid Build Coastguard WorkerAs an example, for audio the timestamp field would be what is obtained from
5010*28e138c6SAndroid Build Coastguard Worker the RTP timestamp field and the span would be the number of samples that
5011*28e138c6SAndroid Build Coastguard Worker are encoded in the packet.
5012*28e138c6SAndroid Build Coastguard Worker For Speex narrowband, span would be 160 if only one frame is included in
5013*28e138c6SAndroid Build Coastguard Worker the packet.
5014*28e138c6SAndroid Build Coastguard Worker
5015*28e138c6SAndroid Build Coastguard Worker\end_layout
5016*28e138c6SAndroid Build Coastguard Worker
5017*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5018*28e138c6SAndroid Build Coastguard WorkerWhen a packet arrives, it need to be inserter into the jitter buffer by:
5019*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5020*28e138c6SAndroid Build Coastguard Workerinline false
5021*28e138c6SAndroid Build Coastguard Workerstatus open
5022*28e138c6SAndroid Build Coastguard Worker
5023*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5024*28e138c6SAndroid Build Coastguard Worker
5025*28e138c6SAndroid Build Coastguard WorkerJitterBufferPacket packet;
5026*28e138c6SAndroid Build Coastguard Worker\end_layout
5027*28e138c6SAndroid Build Coastguard Worker
5028*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5029*28e138c6SAndroid Build Coastguard Worker
5030*28e138c6SAndroid Build Coastguard Worker/* Fill in each field in the packet struct */
5031*28e138c6SAndroid Build Coastguard Worker\end_layout
5032*28e138c6SAndroid Build Coastguard Worker
5033*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5034*28e138c6SAndroid Build Coastguard Worker
5035*28e138c6SAndroid Build Coastguard Workerjitter_buffer_put(state, &packet);
5036*28e138c6SAndroid Build Coastguard Worker\end_layout
5037*28e138c6SAndroid Build Coastguard Worker
5038*28e138c6SAndroid Build Coastguard Worker\end_inset
5039*28e138c6SAndroid Build Coastguard Worker
5040*28e138c6SAndroid Build Coastguard Worker
5041*28e138c6SAndroid Build Coastguard Worker\end_layout
5042*28e138c6SAndroid Build Coastguard Worker
5043*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5044*28e138c6SAndroid Build Coastguard WorkerWhen the decoder is ready to decode a packet the packet to be decoded can
5045*28e138c6SAndroid Build Coastguard Worker be obtained by:
5046*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5047*28e138c6SAndroid Build Coastguard Workerinline false
5048*28e138c6SAndroid Build Coastguard Workerstatus open
5049*28e138c6SAndroid Build Coastguard Worker
5050*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5051*28e138c6SAndroid Build Coastguard Worker
5052*28e138c6SAndroid Build Coastguard Workerint start_offset;
5053*28e138c6SAndroid Build Coastguard Worker\end_layout
5054*28e138c6SAndroid Build Coastguard Worker
5055*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5056*28e138c6SAndroid Build Coastguard Worker
5057*28e138c6SAndroid Build Coastguard Workererr = jitter_buffer_get(state, &packet, desired_span, &start_offset);
5058*28e138c6SAndroid Build Coastguard Worker\end_layout
5059*28e138c6SAndroid Build Coastguard Worker
5060*28e138c6SAndroid Build Coastguard Worker\end_inset
5061*28e138c6SAndroid Build Coastguard Worker
5062*28e138c6SAndroid Build Coastguard Worker
5063*28e138c6SAndroid Build Coastguard Worker\end_layout
5064*28e138c6SAndroid Build Coastguard Worker
5065*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5066*28e138c6SAndroid Build Coastguard WorkerIf
5067*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5068*28e138c6SAndroid Build Coastguard Workerinline true
5069*28e138c6SAndroid Build Coastguard Workerstatus open
5070*28e138c6SAndroid Build Coastguard Worker
5071*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5072*28e138c6SAndroid Build Coastguard Worker
5073*28e138c6SAndroid Build Coastguard Workerjitter_buffer_put()
5074*28e138c6SAndroid Build Coastguard Worker\end_layout
5075*28e138c6SAndroid Build Coastguard Worker
5076*28e138c6SAndroid Build Coastguard Worker\end_inset
5077*28e138c6SAndroid Build Coastguard Worker
5078*28e138c6SAndroid Build Coastguard Worker and
5079*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5080*28e138c6SAndroid Build Coastguard Workerinline true
5081*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5082*28e138c6SAndroid Build Coastguard Worker
5083*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5084*28e138c6SAndroid Build Coastguard Worker
5085*28e138c6SAndroid Build Coastguard Workerjitter_buffer_get()
5086*28e138c6SAndroid Build Coastguard Worker\end_layout
5087*28e138c6SAndroid Build Coastguard Worker
5088*28e138c6SAndroid Build Coastguard Worker\end_inset
5089*28e138c6SAndroid Build Coastguard Worker
5090*28e138c6SAndroid Build Coastguard Worker are called from different threads, then
5091*28e138c6SAndroid Build Coastguard Worker\series bold
5092*28e138c6SAndroid Build Coastguard Workeryou need to protect the jitter buffer state with a mutex
5093*28e138c6SAndroid Build Coastguard Worker\series default
5094*28e138c6SAndroid Build Coastguard Worker.
5095*28e138c6SAndroid Build Coastguard Worker
5096*28e138c6SAndroid Build Coastguard Worker\end_layout
5097*28e138c6SAndroid Build Coastguard Worker
5098*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5099*28e138c6SAndroid Build Coastguard WorkerBecause the jitter buffer is designed not to use an explicit timer, it needs
5100*28e138c6SAndroid Build Coastguard Worker to be told about the time explicitly.
5101*28e138c6SAndroid Build Coastguard Worker This is done by calling:
5102*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5103*28e138c6SAndroid Build Coastguard Workerinline false
5104*28e138c6SAndroid Build Coastguard Workerstatus open
5105*28e138c6SAndroid Build Coastguard Worker
5106*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5107*28e138c6SAndroid Build Coastguard Worker
5108*28e138c6SAndroid Build Coastguard Workerjitter_buffer_tick(state);
5109*28e138c6SAndroid Build Coastguard Worker\end_layout
5110*28e138c6SAndroid Build Coastguard Worker
5111*28e138c6SAndroid Build Coastguard Worker\end_inset
5112*28e138c6SAndroid Build Coastguard Worker
5113*28e138c6SAndroid Build Coastguard Worker
5114*28e138c6SAndroid Build Coastguard Worker\end_layout
5115*28e138c6SAndroid Build Coastguard Worker
5116*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5117*28e138c6SAndroid Build Coastguard WorkerThis needs to be done periodically in the playing thread.
5118*28e138c6SAndroid Build Coastguard Worker This will be the last jitter buffer call before going to sleep (until more
5119*28e138c6SAndroid Build Coastguard Worker data is played back).
5120*28e138c6SAndroid Build Coastguard Worker In some cases, it may be preferable to use
5121*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5122*28e138c6SAndroid Build Coastguard Workerinline false
5123*28e138c6SAndroid Build Coastguard Workerstatus open
5124*28e138c6SAndroid Build Coastguard Worker
5125*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5126*28e138c6SAndroid Build Coastguard Worker
5127*28e138c6SAndroid Build Coastguard Workerjitter_buffer_remaining_span(state, remaining);
5128*28e138c6SAndroid Build Coastguard Worker\end_layout
5129*28e138c6SAndroid Build Coastguard Worker
5130*28e138c6SAndroid Build Coastguard Worker\end_inset
5131*28e138c6SAndroid Build Coastguard Worker
5132*28e138c6SAndroid Build Coastguard Worker
5133*28e138c6SAndroid Build Coastguard Worker\end_layout
5134*28e138c6SAndroid Build Coastguard Worker
5135*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5136*28e138c6SAndroid Build Coastguard WorkerThe second argument is used to specify that we are still holding data that
5137*28e138c6SAndroid Build Coastguard Worker has not been written to the playback device.
5138*28e138c6SAndroid Build Coastguard Worker For instance, if 256 samples were needed by the soundcard (specified by
5139*28e138c6SAndroid Build Coastguard Worker
5140*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5141*28e138c6SAndroid Build Coastguard Workerinline true
5142*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5143*28e138c6SAndroid Build Coastguard Worker
5144*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5145*28e138c6SAndroid Build Coastguard Worker
5146*28e138c6SAndroid Build Coastguard Workerdesired_span
5147*28e138c6SAndroid Build Coastguard Worker\end_layout
5148*28e138c6SAndroid Build Coastguard Worker
5149*28e138c6SAndroid Build Coastguard Worker\end_inset
5150*28e138c6SAndroid Build Coastguard Worker
5151*28e138c6SAndroid Build Coastguard Worker), but
5152*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5153*28e138c6SAndroid Build Coastguard Workerinline true
5154*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5155*28e138c6SAndroid Build Coastguard Worker
5156*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5157*28e138c6SAndroid Build Coastguard Worker
5158*28e138c6SAndroid Build Coastguard Workerjitter_buffer_get()
5159*28e138c6SAndroid Build Coastguard Worker\end_layout
5160*28e138c6SAndroid Build Coastguard Worker
5161*28e138c6SAndroid Build Coastguard Worker\end_inset
5162*28e138c6SAndroid Build Coastguard Worker
5163*28e138c6SAndroid Build Coastguard Worker returned 320 samples, we would have
5164*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5165*28e138c6SAndroid Build Coastguard Workerinline true
5166*28e138c6SAndroid Build Coastguard Workerstatus open
5167*28e138c6SAndroid Build Coastguard Worker
5168*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5169*28e138c6SAndroid Build Coastguard Worker
5170*28e138c6SAndroid Build Coastguard Workerremaining=64
5171*28e138c6SAndroid Build Coastguard Worker\end_layout
5172*28e138c6SAndroid Build Coastguard Worker
5173*28e138c6SAndroid Build Coastguard Worker\end_inset
5174*28e138c6SAndroid Build Coastguard Worker
5175*28e138c6SAndroid Build Coastguard Worker.
5176*28e138c6SAndroid Build Coastguard Worker\end_layout
5177*28e138c6SAndroid Build Coastguard Worker
5178*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
5179*28e138c6SAndroid Build Coastguard WorkerResampler
5180*28e138c6SAndroid Build Coastguard Worker\end_layout
5181*28e138c6SAndroid Build Coastguard Worker
5182*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5183*28e138c6SAndroid Build Coastguard WorkerSpeex includes a resampling modules.
5184*28e138c6SAndroid Build Coastguard Worker To make use of the resampler, it is necessary to include its header file:
5185*28e138c6SAndroid Build Coastguard Worker\end_layout
5186*28e138c6SAndroid Build Coastguard Worker
5187*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5188*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5189*28e138c6SAndroid Build Coastguard Workerinline false
5190*28e138c6SAndroid Build Coastguard Workerstatus open
5191*28e138c6SAndroid Build Coastguard Worker
5192*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5193*28e138c6SAndroid Build Coastguard Worker
5194*28e138c6SAndroid Build Coastguard Worker#include <speex/speex_resampler.h>
5195*28e138c6SAndroid Build Coastguard Worker\end_layout
5196*28e138c6SAndroid Build Coastguard Worker
5197*28e138c6SAndroid Build Coastguard Worker\end_inset
5198*28e138c6SAndroid Build Coastguard Worker
5199*28e138c6SAndroid Build Coastguard Worker
5200*28e138c6SAndroid Build Coastguard Worker\end_layout
5201*28e138c6SAndroid Build Coastguard Worker
5202*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5203*28e138c6SAndroid Build Coastguard WorkerFor each stream that is to be resampled, it is necessary to create a resampler
5204*28e138c6SAndroid Build Coastguard Worker state with:
5205*28e138c6SAndroid Build Coastguard Worker\end_layout
5206*28e138c6SAndroid Build Coastguard Worker
5207*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5208*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5209*28e138c6SAndroid Build Coastguard Workerinline false
5210*28e138c6SAndroid Build Coastguard Workerstatus open
5211*28e138c6SAndroid Build Coastguard Worker
5212*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5213*28e138c6SAndroid Build Coastguard Worker
5214*28e138c6SAndroid Build Coastguard WorkerSpeexResamplerState *resampler;
5215*28e138c6SAndroid Build Coastguard Worker\end_layout
5216*28e138c6SAndroid Build Coastguard Worker
5217*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5218*28e138c6SAndroid Build Coastguard Worker
5219*28e138c6SAndroid Build Coastguard Workerresampler = speex_resampler_init(nb_channels, input_rate, output_rate, quality,
5220*28e138c6SAndroid Build Coastguard Worker &err);
5221*28e138c6SAndroid Build Coastguard Worker\end_layout
5222*28e138c6SAndroid Build Coastguard Worker
5223*28e138c6SAndroid Build Coastguard Worker\end_inset
5224*28e138c6SAndroid Build Coastguard Worker
5225*28e138c6SAndroid Build Coastguard Worker
5226*28e138c6SAndroid Build Coastguard Worker\end_layout
5227*28e138c6SAndroid Build Coastguard Worker
5228*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5229*28e138c6SAndroid Build Coastguard Workerwhere
5230*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5231*28e138c6SAndroid Build Coastguard Workerinline true
5232*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5233*28e138c6SAndroid Build Coastguard Worker
5234*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5235*28e138c6SAndroid Build Coastguard Worker
5236*28e138c6SAndroid Build Coastguard Workernb_channels
5237*28e138c6SAndroid Build Coastguard Worker\end_layout
5238*28e138c6SAndroid Build Coastguard Worker
5239*28e138c6SAndroid Build Coastguard Worker\end_inset
5240*28e138c6SAndroid Build Coastguard Worker
5241*28e138c6SAndroid Build Coastguard Worker is the number of channels that will be used (either interleaved or non-interlea
5242*28e138c6SAndroid Build Coastguard Workerved),
5243*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5244*28e138c6SAndroid Build Coastguard Workerinline true
5245*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5246*28e138c6SAndroid Build Coastguard Worker
5247*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5248*28e138c6SAndroid Build Coastguard Worker
5249*28e138c6SAndroid Build Coastguard Workerinput_rate
5250*28e138c6SAndroid Build Coastguard Worker\end_layout
5251*28e138c6SAndroid Build Coastguard Worker
5252*28e138c6SAndroid Build Coastguard Worker\end_inset
5253*28e138c6SAndroid Build Coastguard Worker
5254*28e138c6SAndroid Build Coastguard Worker is the sampling rate of the input stream,
5255*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5256*28e138c6SAndroid Build Coastguard Workerinline true
5257*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5258*28e138c6SAndroid Build Coastguard Worker
5259*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5260*28e138c6SAndroid Build Coastguard Worker
5261*28e138c6SAndroid Build Coastguard Workeroutput_rate
5262*28e138c6SAndroid Build Coastguard Worker\end_layout
5263*28e138c6SAndroid Build Coastguard Worker
5264*28e138c6SAndroid Build Coastguard Worker\end_inset
5265*28e138c6SAndroid Build Coastguard Worker
5266*28e138c6SAndroid Build Coastguard Worker is the sampling rate of the output stream and
5267*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5268*28e138c6SAndroid Build Coastguard Workerinline true
5269*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5270*28e138c6SAndroid Build Coastguard Worker
5271*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5272*28e138c6SAndroid Build Coastguard Worker
5273*28e138c6SAndroid Build Coastguard Workerquality
5274*28e138c6SAndroid Build Coastguard Worker\end_layout
5275*28e138c6SAndroid Build Coastguard Worker
5276*28e138c6SAndroid Build Coastguard Worker\end_inset
5277*28e138c6SAndroid Build Coastguard Worker
5278*28e138c6SAndroid Build Coastguard Worker is the requested quality setting (0 to 10).
5279*28e138c6SAndroid Build Coastguard Worker The quality parameter is useful for controlling the quality/complexity/latency
5280*28e138c6SAndroid Build Coastguard Worker tradeoff.
5281*28e138c6SAndroid Build Coastguard Worker Using a higher quality setting means less noise/aliasing, a higher complexity
5282*28e138c6SAndroid Build Coastguard Worker and a higher latency.
5283*28e138c6SAndroid Build Coastguard Worker Usually, a quality of 3 is acceptable for most desktop uses and quality
5284*28e138c6SAndroid Build Coastguard Worker 10 is mostly recommended for pro audio work.
5285*28e138c6SAndroid Build Coastguard Worker Quality 0 usually has a decent sound (certainly better than using linear
5286*28e138c6SAndroid Build Coastguard Worker interpolation resampling), but artifacts may be heard.
5287*28e138c6SAndroid Build Coastguard Worker\end_layout
5288*28e138c6SAndroid Build Coastguard Worker
5289*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5290*28e138c6SAndroid Build Coastguard WorkerThe actual resampling is performed using
5291*28e138c6SAndroid Build Coastguard Worker\end_layout
5292*28e138c6SAndroid Build Coastguard Worker
5293*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5294*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5295*28e138c6SAndroid Build Coastguard Workerinline false
5296*28e138c6SAndroid Build Coastguard Workerstatus open
5297*28e138c6SAndroid Build Coastguard Worker
5298*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5299*28e138c6SAndroid Build Coastguard Worker
5300*28e138c6SAndroid Build Coastguard Workererr = speex_resampler_process_int(resampler, channelID, in, &in_length,
5301*28e138c6SAndroid Build Coastguard Worker out, &out_length);
5302*28e138c6SAndroid Build Coastguard Worker\end_layout
5303*28e138c6SAndroid Build Coastguard Worker
5304*28e138c6SAndroid Build Coastguard Worker\end_inset
5305*28e138c6SAndroid Build Coastguard Worker
5306*28e138c6SAndroid Build Coastguard Workerwhere
5307*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5308*28e138c6SAndroid Build Coastguard Workerinline true
5309*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5310*28e138c6SAndroid Build Coastguard Worker
5311*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5312*28e138c6SAndroid Build Coastguard Worker
5313*28e138c6SAndroid Build Coastguard WorkerchannelID
5314*28e138c6SAndroid Build Coastguard Worker\end_layout
5315*28e138c6SAndroid Build Coastguard Worker
5316*28e138c6SAndroid Build Coastguard Worker\end_inset
5317*28e138c6SAndroid Build Coastguard Worker
5318*28e138c6SAndroid Build Coastguard Worker is the ID of the channel to be processed.
5319*28e138c6SAndroid Build Coastguard Worker For a mono stream, use 0.
5320*28e138c6SAndroid Build Coastguard Worker The
5321*28e138c6SAndroid Build Coastguard Worker\emph on
5322*28e138c6SAndroid Build Coastguard Workerin
5323*28e138c6SAndroid Build Coastguard Worker\emph default
5324*28e138c6SAndroid Build Coastguard Worker pointer points to the first sample of the input buffer for the selected
5325*28e138c6SAndroid Build Coastguard Worker channel and
5326*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5327*28e138c6SAndroid Build Coastguard Workerinline true
5328*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5329*28e138c6SAndroid Build Coastguard Worker
5330*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5331*28e138c6SAndroid Build Coastguard Worker
5332*28e138c6SAndroid Build Coastguard Workerout
5333*28e138c6SAndroid Build Coastguard Worker\end_layout
5334*28e138c6SAndroid Build Coastguard Worker
5335*28e138c6SAndroid Build Coastguard Worker\end_inset
5336*28e138c6SAndroid Build Coastguard Worker
5337*28e138c6SAndroid Build Coastguard Worker points to the first sample of the output.
5338*28e138c6SAndroid Build Coastguard Worker The size of the input and output buffers are specified by
5339*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5340*28e138c6SAndroid Build Coastguard Workerinline true
5341*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5342*28e138c6SAndroid Build Coastguard Worker
5343*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5344*28e138c6SAndroid Build Coastguard Worker
5345*28e138c6SAndroid Build Coastguard Workerin_length
5346*28e138c6SAndroid Build Coastguard Worker\end_layout
5347*28e138c6SAndroid Build Coastguard Worker
5348*28e138c6SAndroid Build Coastguard Worker\end_inset
5349*28e138c6SAndroid Build Coastguard Worker
5350*28e138c6SAndroid Build Coastguard Worker and
5351*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5352*28e138c6SAndroid Build Coastguard Workerinline true
5353*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5354*28e138c6SAndroid Build Coastguard Worker
5355*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5356*28e138c6SAndroid Build Coastguard Worker
5357*28e138c6SAndroid Build Coastguard Workerout_length
5358*28e138c6SAndroid Build Coastguard Worker\end_layout
5359*28e138c6SAndroid Build Coastguard Worker
5360*28e138c6SAndroid Build Coastguard Worker\end_inset
5361*28e138c6SAndroid Build Coastguard Worker
5362*28e138c6SAndroid Build Coastguard Worker respectively.
5363*28e138c6SAndroid Build Coastguard Worker Upon completion, these values are replaced by the number of samples read
5364*28e138c6SAndroid Build Coastguard Worker and written by the resampler.
5365*28e138c6SAndroid Build Coastguard Worker Unless an error occurs, either all input samples will be read or all output
5366*28e138c6SAndroid Build Coastguard Worker samples will be written to (or both).
5367*28e138c6SAndroid Build Coastguard Worker For floating-point samples, the function
5368*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5369*28e138c6SAndroid Build Coastguard Workerinline true
5370*28e138c6SAndroid Build Coastguard Workerstatus open
5371*28e138c6SAndroid Build Coastguard Worker
5372*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5373*28e138c6SAndroid Build Coastguard Worker
5374*28e138c6SAndroid Build Coastguard Workerspeex_resampler_process_float()
5375*28e138c6SAndroid Build Coastguard Worker\end_layout
5376*28e138c6SAndroid Build Coastguard Worker
5377*28e138c6SAndroid Build Coastguard Worker\end_inset
5378*28e138c6SAndroid Build Coastguard Worker
5379*28e138c6SAndroid Build Coastguard Worker behaves similarly.
5380*28e138c6SAndroid Build Coastguard Worker\end_layout
5381*28e138c6SAndroid Build Coastguard Worker
5382*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5383*28e138c6SAndroid Build Coastguard WorkerIt is also possible to process multiple channels at once.
5384*28e138c6SAndroid Build Coastguard Worker To do that, you can use speex_resampler_process_interleaved_int() or
5385*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5386*28e138c6SAndroid Build Coastguard Workerinline true
5387*28e138c6SAndroid Build Coastguard Workerstatus open
5388*28e138c6SAndroid Build Coastguard Worker
5389*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5390*28e138c6SAndroid Build Coastguard Worker
5391*28e138c6SAndroid Build Coastguard Workerspeex_resampler_process_interleaved_float()
5392*28e138c6SAndroid Build Coastguard Worker\end_layout
5393*28e138c6SAndroid Build Coastguard Worker
5394*28e138c6SAndroid Build Coastguard Worker\end_inset
5395*28e138c6SAndroid Build Coastguard Worker
5396*28e138c6SAndroid Build Coastguard Worker.
5397*28e138c6SAndroid Build Coastguard Worker The arguments are the same except that there is no
5398*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5399*28e138c6SAndroid Build Coastguard Workerinline true
5400*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5401*28e138c6SAndroid Build Coastguard Worker
5402*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5403*28e138c6SAndroid Build Coastguard Worker
5404*28e138c6SAndroid Build Coastguard WorkerchannelID
5405*28e138c6SAndroid Build Coastguard Worker\end_layout
5406*28e138c6SAndroid Build Coastguard Worker
5407*28e138c6SAndroid Build Coastguard Worker\end_inset
5408*28e138c6SAndroid Build Coastguard Worker
5409*28e138c6SAndroid Build Coastguard Worker argument.
5410*28e138c6SAndroid Build Coastguard Worker Note that the
5411*28e138c6SAndroid Build Coastguard Worker\series bold
5412*28e138c6SAndroid Build Coastguard Workerlength parameters are per-channel
5413*28e138c6SAndroid Build Coastguard Worker\series default
5414*28e138c6SAndroid Build Coastguard Worker.
5415*28e138c6SAndroid Build Coastguard Worker So if you have 1024 samples for each of 4 channels, you pass 1024 and not
5416*28e138c6SAndroid Build Coastguard Worker 4096.
5417*28e138c6SAndroid Build Coastguard Worker\end_layout
5418*28e138c6SAndroid Build Coastguard Worker
5419*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5420*28e138c6SAndroid Build Coastguard WorkerThe resampler allows changing the quality and input/output sampling frequencies
5421*28e138c6SAndroid Build Coastguard Worker on the fly without glitches.
5422*28e138c6SAndroid Build Coastguard Worker This can be done with calls such as
5423*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5424*28e138c6SAndroid Build Coastguard Workerinline true
5425*28e138c6SAndroid Build Coastguard Workerstatus open
5426*28e138c6SAndroid Build Coastguard Worker
5427*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5428*28e138c6SAndroid Build Coastguard Worker
5429*28e138c6SAndroid Build Coastguard Workerspeex_resampler_set_quality()
5430*28e138c6SAndroid Build Coastguard Worker\end_layout
5431*28e138c6SAndroid Build Coastguard Worker
5432*28e138c6SAndroid Build Coastguard Worker\end_inset
5433*28e138c6SAndroid Build Coastguard Worker
5434*28e138c6SAndroid Build Coastguard Worker and
5435*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5436*28e138c6SAndroid Build Coastguard Workerinline true
5437*28e138c6SAndroid Build Coastguard Workerstatus open
5438*28e138c6SAndroid Build Coastguard Worker
5439*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5440*28e138c6SAndroid Build Coastguard Worker
5441*28e138c6SAndroid Build Coastguard Workerspeex_resampler_set_rate()
5442*28e138c6SAndroid Build Coastguard Worker\end_layout
5443*28e138c6SAndroid Build Coastguard Worker
5444*28e138c6SAndroid Build Coastguard Worker\end_inset
5445*28e138c6SAndroid Build Coastguard Worker
5446*28e138c6SAndroid Build Coastguard Worker.
5447*28e138c6SAndroid Build Coastguard Worker The only side effect is that a new filter will have to be recomputed, consuming
5448*28e138c6SAndroid Build Coastguard Worker many CPU cycles.
5449*28e138c6SAndroid Build Coastguard Worker
5450*28e138c6SAndroid Build Coastguard Worker\end_layout
5451*28e138c6SAndroid Build Coastguard Worker
5452*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5453*28e138c6SAndroid Build Coastguard WorkerWhen resampling a file, it is often desirable to have the output file perfectly
5454*28e138c6SAndroid Build Coastguard Worker synchronised with the input.
5455*28e138c6SAndroid Build Coastguard Worker To do that, you need to call
5456*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5457*28e138c6SAndroid Build Coastguard Workerinline true
5458*28e138c6SAndroid Build Coastguard Workerstatus open
5459*28e138c6SAndroid Build Coastguard Worker
5460*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5461*28e138c6SAndroid Build Coastguard Worker
5462*28e138c6SAndroid Build Coastguard Workerspeex_resampler_skip_zeros()
5463*28e138c6SAndroid Build Coastguard Worker\end_layout
5464*28e138c6SAndroid Build Coastguard Worker
5465*28e138c6SAndroid Build Coastguard Worker\end_inset
5466*28e138c6SAndroid Build Coastguard Worker
5467*28e138c6SAndroid Build Coastguard Worker
5468*28e138c6SAndroid Build Coastguard Worker\series bold
5469*28e138c6SAndroid Build Coastguard Workerbefore
5470*28e138c6SAndroid Build Coastguard Worker\series default
5471*28e138c6SAndroid Build Coastguard Worker you start processing any samples.
5472*28e138c6SAndroid Build Coastguard Worker For real-time applications (e.g.
5473*28e138c6SAndroid Build Coastguard Worker VoIP), it is not recommended to do that as the first process frame will
5474*28e138c6SAndroid Build Coastguard Worker be shorter to compensate for the delay (the skipped zeros).
5475*28e138c6SAndroid Build Coastguard Worker Instead, in real-time applications you may want to know how many delay
5476*28e138c6SAndroid Build Coastguard Worker is introduced by the resampler.
5477*28e138c6SAndroid Build Coastguard Worker This can be done at run-time with
5478*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5479*28e138c6SAndroid Build Coastguard Workerinline true
5480*28e138c6SAndroid Build Coastguard Workerstatus open
5481*28e138c6SAndroid Build Coastguard Worker
5482*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5483*28e138c6SAndroid Build Coastguard Worker
5484*28e138c6SAndroid Build Coastguard Workerspeex_resampler_get_input_latency()
5485*28e138c6SAndroid Build Coastguard Worker\end_layout
5486*28e138c6SAndroid Build Coastguard Worker
5487*28e138c6SAndroid Build Coastguard Worker\end_inset
5488*28e138c6SAndroid Build Coastguard Worker
5489*28e138c6SAndroid Build Coastguard Worker and
5490*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5491*28e138c6SAndroid Build Coastguard Workerinline true
5492*28e138c6SAndroid Build Coastguard Workerstatus open
5493*28e138c6SAndroid Build Coastguard Worker
5494*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5495*28e138c6SAndroid Build Coastguard Worker
5496*28e138c6SAndroid Build Coastguard Workerspeex_resampler_get_output_latency()
5497*28e138c6SAndroid Build Coastguard Worker\end_layout
5498*28e138c6SAndroid Build Coastguard Worker
5499*28e138c6SAndroid Build Coastguard Worker\end_inset
5500*28e138c6SAndroid Build Coastguard Worker
5501*28e138c6SAndroid Build Coastguard Worker functions.
5502*28e138c6SAndroid Build Coastguard Worker First function returns delay measured in samples at input samplerate, while
5503*28e138c6SAndroid Build Coastguard Worker second returns delay measured in samples at output samplerate.
5504*28e138c6SAndroid Build Coastguard Worker\end_layout
5505*28e138c6SAndroid Build Coastguard Worker
5506*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5507*28e138c6SAndroid Build Coastguard WorkerTo destroy a resampler state, just call
5508*28e138c6SAndroid Build Coastguard Worker\begin_inset listings
5509*28e138c6SAndroid Build Coastguard Workerinline true
5510*28e138c6SAndroid Build Coastguard Workerstatus open
5511*28e138c6SAndroid Build Coastguard Worker
5512*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5513*28e138c6SAndroid Build Coastguard Worker
5514*28e138c6SAndroid Build Coastguard Workerspeex_resampler_destroy()
5515*28e138c6SAndroid Build Coastguard Worker\end_layout
5516*28e138c6SAndroid Build Coastguard Worker
5517*28e138c6SAndroid Build Coastguard Worker\end_inset
5518*28e138c6SAndroid Build Coastguard Worker
5519*28e138c6SAndroid Build Coastguard Worker.
5520*28e138c6SAndroid Build Coastguard Worker\end_layout
5521*28e138c6SAndroid Build Coastguard Worker
5522*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
5523*28e138c6SAndroid Build Coastguard WorkerRing Buffer
5524*28e138c6SAndroid Build Coastguard Worker\end_layout
5525*28e138c6SAndroid Build Coastguard Worker
5526*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5527*28e138c6SAndroid Build Coastguard WorkerIn some cases, it is necessary to interface components that use different
5528*28e138c6SAndroid Build Coastguard Worker block sizes.
5529*28e138c6SAndroid Build Coastguard Worker For example, it is possible that the soundcard does not support reading/writing
5530*28e138c6SAndroid Build Coastguard Worker in blocks of 20
5531*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
5532*28e138c6SAndroid Build Coastguard Worker\end_inset
5533*28e138c6SAndroid Build Coastguard Worker
5534*28e138c6SAndroid Build Coastguard Workerms or sometimes, complicated resampling ratios mean that the blocks don't
5535*28e138c6SAndroid Build Coastguard Worker always have the same time.
5536*28e138c6SAndroid Build Coastguard Worker In thoses cases, it is often necessary to buffer a bit of audio using a
5537*28e138c6SAndroid Build Coastguard Worker ring buffer.
5538*28e138c6SAndroid Build Coastguard Worker\end_layout
5539*28e138c6SAndroid Build Coastguard Worker
5540*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5541*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
5542*28e138c6SAndroid Build Coastguard Worker\end_inset
5543*28e138c6SAndroid Build Coastguard Worker
5544*28e138c6SAndroid Build Coastguard Worker
5545*28e138c6SAndroid Build Coastguard Worker\end_layout
5546*28e138c6SAndroid Build Coastguard Worker
5547*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
5548*28e138c6SAndroid Build Coastguard WorkerFormats and standards
5549*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
5550*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5551*28e138c6SAndroid Build Coastguard Worker
5552*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5553*28e138c6SAndroid Build Coastguard Workerstandards
5554*28e138c6SAndroid Build Coastguard Worker\end_layout
5555*28e138c6SAndroid Build Coastguard Worker
5556*28e138c6SAndroid Build Coastguard Worker\end_inset
5557*28e138c6SAndroid Build Coastguard Worker
5558*28e138c6SAndroid Build Coastguard Worker
5559*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
5560*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
5561*28e138c6SAndroid Build Coastguard Workername "sec:Formats-and-standards"
5562*28e138c6SAndroid Build Coastguard Worker
5563*28e138c6SAndroid Build Coastguard Worker\end_inset
5564*28e138c6SAndroid Build Coastguard Worker
5565*28e138c6SAndroid Build Coastguard Worker
5566*28e138c6SAndroid Build Coastguard Worker\end_layout
5567*28e138c6SAndroid Build Coastguard Worker
5568*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5569*28e138c6SAndroid Build Coastguard WorkerSpeex can encode speech in both narrowband and wideband and provides different
5570*28e138c6SAndroid Build Coastguard Worker bit-rates.
5571*28e138c6SAndroid Build Coastguard Worker However, not all features need to be supported by a certain implementation
5572*28e138c6SAndroid Build Coastguard Worker or device.
5573*28e138c6SAndroid Build Coastguard Worker In order to be called
5574*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
5575*28e138c6SAndroid Build Coastguard Worker\end_inset
5576*28e138c6SAndroid Build Coastguard Worker
5577*28e138c6SAndroid Build Coastguard WorkerSpeex compatible
5578*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
5579*28e138c6SAndroid Build Coastguard Worker\end_inset
5580*28e138c6SAndroid Build Coastguard Worker
5581*28e138c6SAndroid Build Coastguard Worker (whatever that means), an implementation must implement at least a basic
5582*28e138c6SAndroid Build Coastguard Worker set of features.
5583*28e138c6SAndroid Build Coastguard Worker\end_layout
5584*28e138c6SAndroid Build Coastguard Worker
5585*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5586*28e138c6SAndroid Build Coastguard WorkerAt the minimum, all narrowband modes of operation MUST be supported at the
5587*28e138c6SAndroid Build Coastguard Worker decoder.
5588*28e138c6SAndroid Build Coastguard Worker This includes the decoding of a wideband bit-stream by the narrowband decoder
5589*28e138c6SAndroid Build Coastguard Worker\begin_inset Foot
5590*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5591*28e138c6SAndroid Build Coastguard Worker
5592*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5593*28e138c6SAndroid Build Coastguard WorkerThe wideband bit-stream contains an embedded narrowband bit-stream which
5594*28e138c6SAndroid Build Coastguard Worker can be decoded alone
5595*28e138c6SAndroid Build Coastguard Worker\end_layout
5596*28e138c6SAndroid Build Coastguard Worker
5597*28e138c6SAndroid Build Coastguard Worker\end_inset
5598*28e138c6SAndroid Build Coastguard Worker
5599*28e138c6SAndroid Build Coastguard Worker.
5600*28e138c6SAndroid Build Coastguard Worker If present, a wideband decoder MUST be able to decode a narrowband stream,
5601*28e138c6SAndroid Build Coastguard Worker and MAY either be able to decode all wideband modes or be able to decode
5602*28e138c6SAndroid Build Coastguard Worker the embedded narrowband part of all modes (which includes ignoring the
5603*28e138c6SAndroid Build Coastguard Worker high-band bits).
5604*28e138c6SAndroid Build Coastguard Worker\end_layout
5605*28e138c6SAndroid Build Coastguard Worker
5606*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5607*28e138c6SAndroid Build Coastguard WorkerFor encoders, at least one narrowband or wideband mode MUST be supported.
5608*28e138c6SAndroid Build Coastguard Worker The main reason why all encoding modes do not have to be supported is that
5609*28e138c6SAndroid Build Coastguard Worker some platforms may not be able to handle the complexity of encoding in
5610*28e138c6SAndroid Build Coastguard Worker some modes.
5611*28e138c6SAndroid Build Coastguard Worker\end_layout
5612*28e138c6SAndroid Build Coastguard Worker
5613*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
5614*28e138c6SAndroid Build Coastguard WorkerRTP
5615*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
5616*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5617*28e138c6SAndroid Build Coastguard Worker
5618*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5619*28e138c6SAndroid Build Coastguard WorkerRTP
5620*28e138c6SAndroid Build Coastguard Worker\end_layout
5621*28e138c6SAndroid Build Coastguard Worker
5622*28e138c6SAndroid Build Coastguard Worker\end_inset
5623*28e138c6SAndroid Build Coastguard Worker
5624*28e138c6SAndroid Build Coastguard Worker Payload Format
5625*28e138c6SAndroid Build Coastguard Worker\end_layout
5626*28e138c6SAndroid Build Coastguard Worker
5627*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5628*28e138c6SAndroid Build Coastguard WorkerThe RTP payload draft is included in appendix
5629*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
5630*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
5631*28e138c6SAndroid Build Coastguard Workerreference "sec:IETF-draft"
5632*28e138c6SAndroid Build Coastguard Worker
5633*28e138c6SAndroid Build Coastguard Worker\end_inset
5634*28e138c6SAndroid Build Coastguard Worker
5635*28e138c6SAndroid Build Coastguard Worker and the latest version is available at
5636*28e138c6SAndroid Build Coastguard Worker\begin_inset Flex URL
5637*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5638*28e138c6SAndroid Build Coastguard Worker
5639*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5640*28e138c6SAndroid Build Coastguard Worker
5641*28e138c6SAndroid Build Coastguard Workerhttp://www.speex.org/drafts/latest
5642*28e138c6SAndroid Build Coastguard Worker\end_layout
5643*28e138c6SAndroid Build Coastguard Worker
5644*28e138c6SAndroid Build Coastguard Worker\end_inset
5645*28e138c6SAndroid Build Coastguard Worker
5646*28e138c6SAndroid Build Coastguard Worker.
5647*28e138c6SAndroid Build Coastguard Worker This draft has been sent (2003/02/26) to the Internet Engineering Task
5648*28e138c6SAndroid Build Coastguard Worker Force (IETF) and will be discussed at the March 18th meeting in San Francisco.
5649*28e138c6SAndroid Build Coastguard Worker
5650*28e138c6SAndroid Build Coastguard Worker\end_layout
5651*28e138c6SAndroid Build Coastguard Worker
5652*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
5653*28e138c6SAndroid Build Coastguard WorkerMIME Type
5654*28e138c6SAndroid Build Coastguard Worker\end_layout
5655*28e138c6SAndroid Build Coastguard Worker
5656*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5657*28e138c6SAndroid Build Coastguard WorkerFor now, you should use the MIME type audio/x-speex for Speex-in-Ogg.
5658*28e138c6SAndroid Build Coastguard Worker We will apply for type
5659*28e138c6SAndroid Build Coastguard Worker\family typewriter
5660*28e138c6SAndroid Build Coastguard Workeraudio/speex
5661*28e138c6SAndroid Build Coastguard Worker\family default
5662*28e138c6SAndroid Build Coastguard Worker in the near future.
5663*28e138c6SAndroid Build Coastguard Worker\end_layout
5664*28e138c6SAndroid Build Coastguard Worker
5665*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
5666*28e138c6SAndroid Build Coastguard WorkerOgg
5667*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
5668*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5669*28e138c6SAndroid Build Coastguard Worker
5670*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5671*28e138c6SAndroid Build Coastguard WorkerOgg
5672*28e138c6SAndroid Build Coastguard Worker\end_layout
5673*28e138c6SAndroid Build Coastguard Worker
5674*28e138c6SAndroid Build Coastguard Worker\end_inset
5675*28e138c6SAndroid Build Coastguard Worker
5676*28e138c6SAndroid Build Coastguard Worker file format
5677*28e138c6SAndroid Build Coastguard Worker\end_layout
5678*28e138c6SAndroid Build Coastguard Worker
5679*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5680*28e138c6SAndroid Build Coastguard WorkerSpeex bit-streams can be stored in Ogg files.
5681*28e138c6SAndroid Build Coastguard Worker In this case, the first packet of the Ogg file contains the Speex header
5682*28e138c6SAndroid Build Coastguard Worker described in table
5683*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
5684*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
5685*28e138c6SAndroid Build Coastguard Workerreference "cap:ogg_speex_header"
5686*28e138c6SAndroid Build Coastguard Worker
5687*28e138c6SAndroid Build Coastguard Worker\end_inset
5688*28e138c6SAndroid Build Coastguard Worker
5689*28e138c6SAndroid Build Coastguard Worker.
5690*28e138c6SAndroid Build Coastguard Worker All integer fields in the headers are stored as little-endian.
5691*28e138c6SAndroid Build Coastguard Worker The
5692*28e138c6SAndroid Build Coastguard Worker\family typewriter
5693*28e138c6SAndroid Build Coastguard Workerspeex_string
5694*28e138c6SAndroid Build Coastguard Worker\family default
5695*28e138c6SAndroid Build Coastguard Worker field must contain the
5696*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
5697*28e138c6SAndroid Build Coastguard Worker\end_inset
5698*28e138c6SAndroid Build Coastguard Worker
5699*28e138c6SAndroid Build Coastguard Worker
5700*28e138c6SAndroid Build Coastguard Worker\family typewriter
5701*28e138c6SAndroid Build Coastguard WorkerSpeex
5702*28e138c6SAndroid Build Coastguard Worker\family default
5703*28e138c6SAndroid Build Coastguard Worker
5704*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
5705*28e138c6SAndroid Build Coastguard Worker\end_inset
5706*28e138c6SAndroid Build Coastguard Worker
5707*28e138c6SAndroid Build Coastguard Worker
5708*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
5709*28e138c6SAndroid Build Coastguard Worker\end_inset
5710*28e138c6SAndroid Build Coastguard Worker
5711*28e138c6SAndroid Build Coastguard Worker
5712*28e138c6SAndroid Build Coastguard Worker\begin_inset space ~
5713*28e138c6SAndroid Build Coastguard Worker\end_inset
5714*28e138c6SAndroid Build Coastguard Worker
5715*28e138c6SAndroid Build Coastguard Worker
5716*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
5717*28e138c6SAndroid Build Coastguard Worker\end_inset
5718*28e138c6SAndroid Build Coastguard Worker
5719*28e138c6SAndroid Build Coastguard Worker (with 3 trailing spaces), which identifies the bit-stream.
5720*28e138c6SAndroid Build Coastguard Worker The next field,
5721*28e138c6SAndroid Build Coastguard Worker\family typewriter
5722*28e138c6SAndroid Build Coastguard Workerspeex_version
5723*28e138c6SAndroid Build Coastguard Worker\family default
5724*28e138c6SAndroid Build Coastguard Worker contains the version of Speex that encoded the file.
5725*28e138c6SAndroid Build Coastguard Worker For now, refer to speex_header.[ch] for more info.
5726*28e138c6SAndroid Build Coastguard Worker The
5727*28e138c6SAndroid Build Coastguard Worker\emph on
5728*28e138c6SAndroid Build Coastguard Workerbeginning of stream
5729*28e138c6SAndroid Build Coastguard Worker\emph default
5730*28e138c6SAndroid Build Coastguard Worker (
5731*28e138c6SAndroid Build Coastguard Worker\family typewriter
5732*28e138c6SAndroid Build Coastguard Workerb_o_s
5733*28e138c6SAndroid Build Coastguard Worker\family default
5734*28e138c6SAndroid Build Coastguard Worker) flag is set to 1 for the header.
5735*28e138c6SAndroid Build Coastguard Worker The header packet has
5736*28e138c6SAndroid Build Coastguard Worker\family typewriter
5737*28e138c6SAndroid Build Coastguard Workerpacketno=0
5738*28e138c6SAndroid Build Coastguard Worker\family default
5739*28e138c6SAndroid Build Coastguard Worker and
5740*28e138c6SAndroid Build Coastguard Worker\family typewriter
5741*28e138c6SAndroid Build Coastguard Workergranulepos=0
5742*28e138c6SAndroid Build Coastguard Worker\family default
5743*28e138c6SAndroid Build Coastguard Worker.
5744*28e138c6SAndroid Build Coastguard Worker\end_layout
5745*28e138c6SAndroid Build Coastguard Worker
5746*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5747*28e138c6SAndroid Build Coastguard WorkerThe second packet contains the Speex comment header.
5748*28e138c6SAndroid Build Coastguard Worker The format used is the Vorbis comment format described here: http://www.xiph.org/
5749*28e138c6SAndroid Build Coastguard Workerogg/vorbis/doc/v-comment.html .
5750*28e138c6SAndroid Build Coastguard Worker This packet has
5751*28e138c6SAndroid Build Coastguard Worker\family typewriter
5752*28e138c6SAndroid Build Coastguard Workerpacketno=1
5753*28e138c6SAndroid Build Coastguard Worker\family default
5754*28e138c6SAndroid Build Coastguard Worker and
5755*28e138c6SAndroid Build Coastguard Worker\family typewriter
5756*28e138c6SAndroid Build Coastguard Workergranulepos=0
5757*28e138c6SAndroid Build Coastguard Worker\family default
5758*28e138c6SAndroid Build Coastguard Worker.
5759*28e138c6SAndroid Build Coastguard Worker\end_layout
5760*28e138c6SAndroid Build Coastguard Worker
5761*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5762*28e138c6SAndroid Build Coastguard WorkerThe third and subsequent packets each contain one or more (number found
5763*28e138c6SAndroid Build Coastguard Worker in header) Speex frames.
5764*28e138c6SAndroid Build Coastguard Worker These are identified with
5765*28e138c6SAndroid Build Coastguard Worker\family typewriter
5766*28e138c6SAndroid Build Coastguard Workerpacketno
5767*28e138c6SAndroid Build Coastguard Worker\family default
5768*28e138c6SAndroid Build Coastguard Worker starting from 2 and the
5769*28e138c6SAndroid Build Coastguard Worker\family typewriter
5770*28e138c6SAndroid Build Coastguard Workergranulepos
5771*28e138c6SAndroid Build Coastguard Worker\family default
5772*28e138c6SAndroid Build Coastguard Worker is the number of the last sample encoded in that packet.
5773*28e138c6SAndroid Build Coastguard Worker The last of these packets has the
5774*28e138c6SAndroid Build Coastguard Worker\emph on
5775*28e138c6SAndroid Build Coastguard Workerend of stream
5776*28e138c6SAndroid Build Coastguard Worker\emph default
5777*28e138c6SAndroid Build Coastguard Worker (
5778*28e138c6SAndroid Build Coastguard Worker\family typewriter
5779*28e138c6SAndroid Build Coastguard Workere_o_s
5780*28e138c6SAndroid Build Coastguard Worker\family default
5781*28e138c6SAndroid Build Coastguard Worker) flag is set to 1.
5782*28e138c6SAndroid Build Coastguard Worker\end_layout
5783*28e138c6SAndroid Build Coastguard Worker
5784*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
5785*28e138c6SAndroid Build Coastguard Worker\begin_inset Float table
5786*28e138c6SAndroid Build Coastguard Workerplacement htbp
5787*28e138c6SAndroid Build Coastguard Workerwide true
5788*28e138c6SAndroid Build Coastguard Workersideways false
5789*28e138c6SAndroid Build Coastguard Workerstatus open
5790*28e138c6SAndroid Build Coastguard Worker
5791*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5792*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
5793*28e138c6SAndroid Build Coastguard Workerstatus collapsed
5794*28e138c6SAndroid Build Coastguard Worker
5795*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5796*28e138c6SAndroid Build Coastguard Worker
5797*28e138c6SAndroid Build Coastguard Worker
5798*28e138c6SAndroid Build Coastguard Worker\backslash
5799*28e138c6SAndroid Build Coastguard Workerbegin{center}
5800*28e138c6SAndroid Build Coastguard Worker\end_layout
5801*28e138c6SAndroid Build Coastguard Worker
5802*28e138c6SAndroid Build Coastguard Worker\end_inset
5803*28e138c6SAndroid Build Coastguard Worker
5804*28e138c6SAndroid Build Coastguard Worker
5805*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
5806*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="16" columns="3">
5807*28e138c6SAndroid Build Coastguard Worker<features>
5808*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
5809*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
5810*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
5811*28e138c6SAndroid Build Coastguard Worker<row>
5812*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5813*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5814*28e138c6SAndroid Build Coastguard Worker
5815*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5816*28e138c6SAndroid Build Coastguard WorkerField
5817*28e138c6SAndroid Build Coastguard Worker\end_layout
5818*28e138c6SAndroid Build Coastguard Worker
5819*28e138c6SAndroid Build Coastguard Worker\end_inset
5820*28e138c6SAndroid Build Coastguard Worker</cell>
5821*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
5822*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5823*28e138c6SAndroid Build Coastguard Worker
5824*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5825*28e138c6SAndroid Build Coastguard WorkerType
5826*28e138c6SAndroid Build Coastguard Worker\end_layout
5827*28e138c6SAndroid Build Coastguard Worker
5828*28e138c6SAndroid Build Coastguard Worker\end_inset
5829*28e138c6SAndroid Build Coastguard Worker</cell>
5830*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
5831*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5832*28e138c6SAndroid Build Coastguard Worker
5833*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5834*28e138c6SAndroid Build Coastguard WorkerSize
5835*28e138c6SAndroid Build Coastguard Worker\end_layout
5836*28e138c6SAndroid Build Coastguard Worker
5837*28e138c6SAndroid Build Coastguard Worker\end_inset
5838*28e138c6SAndroid Build Coastguard Worker</cell>
5839*28e138c6SAndroid Build Coastguard Worker</row>
5840*28e138c6SAndroid Build Coastguard Worker<row>
5841*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5842*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5843*28e138c6SAndroid Build Coastguard Worker
5844*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5845*28e138c6SAndroid Build Coastguard Workerspeex_string
5846*28e138c6SAndroid Build Coastguard Worker\end_layout
5847*28e138c6SAndroid Build Coastguard Worker
5848*28e138c6SAndroid Build Coastguard Worker\end_inset
5849*28e138c6SAndroid Build Coastguard Worker</cell>
5850*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5851*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5852*28e138c6SAndroid Build Coastguard Worker
5853*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5854*28e138c6SAndroid Build Coastguard Workerchar[]
5855*28e138c6SAndroid Build Coastguard Worker\end_layout
5856*28e138c6SAndroid Build Coastguard Worker
5857*28e138c6SAndroid Build Coastguard Worker\end_inset
5858*28e138c6SAndroid Build Coastguard Worker</cell>
5859*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5860*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5861*28e138c6SAndroid Build Coastguard Worker
5862*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5863*28e138c6SAndroid Build Coastguard Worker8
5864*28e138c6SAndroid Build Coastguard Worker\end_layout
5865*28e138c6SAndroid Build Coastguard Worker
5866*28e138c6SAndroid Build Coastguard Worker\end_inset
5867*28e138c6SAndroid Build Coastguard Worker</cell>
5868*28e138c6SAndroid Build Coastguard Worker</row>
5869*28e138c6SAndroid Build Coastguard Worker<row>
5870*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5871*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5872*28e138c6SAndroid Build Coastguard Worker
5873*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5874*28e138c6SAndroid Build Coastguard Workerspeex_version
5875*28e138c6SAndroid Build Coastguard Worker\end_layout
5876*28e138c6SAndroid Build Coastguard Worker
5877*28e138c6SAndroid Build Coastguard Worker\end_inset
5878*28e138c6SAndroid Build Coastguard Worker</cell>
5879*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5880*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5881*28e138c6SAndroid Build Coastguard Worker
5882*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5883*28e138c6SAndroid Build Coastguard Workerchar[]
5884*28e138c6SAndroid Build Coastguard Worker\end_layout
5885*28e138c6SAndroid Build Coastguard Worker
5886*28e138c6SAndroid Build Coastguard Worker\end_inset
5887*28e138c6SAndroid Build Coastguard Worker</cell>
5888*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5889*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5890*28e138c6SAndroid Build Coastguard Worker
5891*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5892*28e138c6SAndroid Build Coastguard Worker20
5893*28e138c6SAndroid Build Coastguard Worker\end_layout
5894*28e138c6SAndroid Build Coastguard Worker
5895*28e138c6SAndroid Build Coastguard Worker\end_inset
5896*28e138c6SAndroid Build Coastguard Worker</cell>
5897*28e138c6SAndroid Build Coastguard Worker</row>
5898*28e138c6SAndroid Build Coastguard Worker<row>
5899*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5900*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5901*28e138c6SAndroid Build Coastguard Worker
5902*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5903*28e138c6SAndroid Build Coastguard Workerspeex_version_id
5904*28e138c6SAndroid Build Coastguard Worker\end_layout
5905*28e138c6SAndroid Build Coastguard Worker
5906*28e138c6SAndroid Build Coastguard Worker\end_inset
5907*28e138c6SAndroid Build Coastguard Worker</cell>
5908*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5909*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5910*28e138c6SAndroid Build Coastguard Worker
5911*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5912*28e138c6SAndroid Build Coastguard Workerint
5913*28e138c6SAndroid Build Coastguard Worker\end_layout
5914*28e138c6SAndroid Build Coastguard Worker
5915*28e138c6SAndroid Build Coastguard Worker\end_inset
5916*28e138c6SAndroid Build Coastguard Worker</cell>
5917*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5918*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5919*28e138c6SAndroid Build Coastguard Worker
5920*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5921*28e138c6SAndroid Build Coastguard Worker4
5922*28e138c6SAndroid Build Coastguard Worker\end_layout
5923*28e138c6SAndroid Build Coastguard Worker
5924*28e138c6SAndroid Build Coastguard Worker\end_inset
5925*28e138c6SAndroid Build Coastguard Worker</cell>
5926*28e138c6SAndroid Build Coastguard Worker</row>
5927*28e138c6SAndroid Build Coastguard Worker<row>
5928*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5929*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5930*28e138c6SAndroid Build Coastguard Worker
5931*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5932*28e138c6SAndroid Build Coastguard Workerheader_size
5933*28e138c6SAndroid Build Coastguard Worker\end_layout
5934*28e138c6SAndroid Build Coastguard Worker
5935*28e138c6SAndroid Build Coastguard Worker\end_inset
5936*28e138c6SAndroid Build Coastguard Worker</cell>
5937*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5938*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5939*28e138c6SAndroid Build Coastguard Worker
5940*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5941*28e138c6SAndroid Build Coastguard Workerint
5942*28e138c6SAndroid Build Coastguard Worker\end_layout
5943*28e138c6SAndroid Build Coastguard Worker
5944*28e138c6SAndroid Build Coastguard Worker\end_inset
5945*28e138c6SAndroid Build Coastguard Worker</cell>
5946*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5947*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5948*28e138c6SAndroid Build Coastguard Worker
5949*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5950*28e138c6SAndroid Build Coastguard Worker4
5951*28e138c6SAndroid Build Coastguard Worker\end_layout
5952*28e138c6SAndroid Build Coastguard Worker
5953*28e138c6SAndroid Build Coastguard Worker\end_inset
5954*28e138c6SAndroid Build Coastguard Worker</cell>
5955*28e138c6SAndroid Build Coastguard Worker</row>
5956*28e138c6SAndroid Build Coastguard Worker<row>
5957*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5958*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5959*28e138c6SAndroid Build Coastguard Worker
5960*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5961*28e138c6SAndroid Build Coastguard Workerrate
5962*28e138c6SAndroid Build Coastguard Worker\end_layout
5963*28e138c6SAndroid Build Coastguard Worker
5964*28e138c6SAndroid Build Coastguard Worker\end_inset
5965*28e138c6SAndroid Build Coastguard Worker</cell>
5966*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5967*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5968*28e138c6SAndroid Build Coastguard Worker
5969*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5970*28e138c6SAndroid Build Coastguard Workerint
5971*28e138c6SAndroid Build Coastguard Worker\end_layout
5972*28e138c6SAndroid Build Coastguard Worker
5973*28e138c6SAndroid Build Coastguard Worker\end_inset
5974*28e138c6SAndroid Build Coastguard Worker</cell>
5975*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5976*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5977*28e138c6SAndroid Build Coastguard Worker
5978*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5979*28e138c6SAndroid Build Coastguard Worker4
5980*28e138c6SAndroid Build Coastguard Worker\end_layout
5981*28e138c6SAndroid Build Coastguard Worker
5982*28e138c6SAndroid Build Coastguard Worker\end_inset
5983*28e138c6SAndroid Build Coastguard Worker</cell>
5984*28e138c6SAndroid Build Coastguard Worker</row>
5985*28e138c6SAndroid Build Coastguard Worker<row>
5986*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5987*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5988*28e138c6SAndroid Build Coastguard Worker
5989*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5990*28e138c6SAndroid Build Coastguard Workermode
5991*28e138c6SAndroid Build Coastguard Worker\end_layout
5992*28e138c6SAndroid Build Coastguard Worker
5993*28e138c6SAndroid Build Coastguard Worker\end_inset
5994*28e138c6SAndroid Build Coastguard Worker</cell>
5995*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5996*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
5997*28e138c6SAndroid Build Coastguard Worker
5998*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
5999*28e138c6SAndroid Build Coastguard Workerint
6000*28e138c6SAndroid Build Coastguard Worker\end_layout
6001*28e138c6SAndroid Build Coastguard Worker
6002*28e138c6SAndroid Build Coastguard Worker\end_inset
6003*28e138c6SAndroid Build Coastguard Worker</cell>
6004*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6005*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6006*28e138c6SAndroid Build Coastguard Worker
6007*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6008*28e138c6SAndroid Build Coastguard Worker4
6009*28e138c6SAndroid Build Coastguard Worker\end_layout
6010*28e138c6SAndroid Build Coastguard Worker
6011*28e138c6SAndroid Build Coastguard Worker\end_inset
6012*28e138c6SAndroid Build Coastguard Worker</cell>
6013*28e138c6SAndroid Build Coastguard Worker</row>
6014*28e138c6SAndroid Build Coastguard Worker<row>
6015*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6016*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6017*28e138c6SAndroid Build Coastguard Worker
6018*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6019*28e138c6SAndroid Build Coastguard Workermode_bitstream_version
6020*28e138c6SAndroid Build Coastguard Worker\end_layout
6021*28e138c6SAndroid Build Coastguard Worker
6022*28e138c6SAndroid Build Coastguard Worker\end_inset
6023*28e138c6SAndroid Build Coastguard Worker</cell>
6024*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6025*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6026*28e138c6SAndroid Build Coastguard Worker
6027*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6028*28e138c6SAndroid Build Coastguard Workerint
6029*28e138c6SAndroid Build Coastguard Worker\end_layout
6030*28e138c6SAndroid Build Coastguard Worker
6031*28e138c6SAndroid Build Coastguard Worker\end_inset
6032*28e138c6SAndroid Build Coastguard Worker</cell>
6033*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6034*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6035*28e138c6SAndroid Build Coastguard Worker
6036*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6037*28e138c6SAndroid Build Coastguard Worker4
6038*28e138c6SAndroid Build Coastguard Worker\end_layout
6039*28e138c6SAndroid Build Coastguard Worker
6040*28e138c6SAndroid Build Coastguard Worker\end_inset
6041*28e138c6SAndroid Build Coastguard Worker</cell>
6042*28e138c6SAndroid Build Coastguard Worker</row>
6043*28e138c6SAndroid Build Coastguard Worker<row>
6044*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6045*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6046*28e138c6SAndroid Build Coastguard Worker
6047*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6048*28e138c6SAndroid Build Coastguard Workernb_channels
6049*28e138c6SAndroid Build Coastguard Worker\end_layout
6050*28e138c6SAndroid Build Coastguard Worker
6051*28e138c6SAndroid Build Coastguard Worker\end_inset
6052*28e138c6SAndroid Build Coastguard Worker</cell>
6053*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6054*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6055*28e138c6SAndroid Build Coastguard Worker
6056*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6057*28e138c6SAndroid Build Coastguard Workerint
6058*28e138c6SAndroid Build Coastguard Worker\end_layout
6059*28e138c6SAndroid Build Coastguard Worker
6060*28e138c6SAndroid Build Coastguard Worker\end_inset
6061*28e138c6SAndroid Build Coastguard Worker</cell>
6062*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6063*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6064*28e138c6SAndroid Build Coastguard Worker
6065*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6066*28e138c6SAndroid Build Coastguard Worker4
6067*28e138c6SAndroid Build Coastguard Worker\end_layout
6068*28e138c6SAndroid Build Coastguard Worker
6069*28e138c6SAndroid Build Coastguard Worker\end_inset
6070*28e138c6SAndroid Build Coastguard Worker</cell>
6071*28e138c6SAndroid Build Coastguard Worker</row>
6072*28e138c6SAndroid Build Coastguard Worker<row>
6073*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6074*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6075*28e138c6SAndroid Build Coastguard Worker
6076*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6077*28e138c6SAndroid Build Coastguard Workerbitrate
6078*28e138c6SAndroid Build Coastguard Worker\end_layout
6079*28e138c6SAndroid Build Coastguard Worker
6080*28e138c6SAndroid Build Coastguard Worker\end_inset
6081*28e138c6SAndroid Build Coastguard Worker</cell>
6082*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6083*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6084*28e138c6SAndroid Build Coastguard Worker
6085*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6086*28e138c6SAndroid Build Coastguard Workerint
6087*28e138c6SAndroid Build Coastguard Worker\end_layout
6088*28e138c6SAndroid Build Coastguard Worker
6089*28e138c6SAndroid Build Coastguard Worker\end_inset
6090*28e138c6SAndroid Build Coastguard Worker</cell>
6091*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6092*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6093*28e138c6SAndroid Build Coastguard Worker
6094*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6095*28e138c6SAndroid Build Coastguard Worker4
6096*28e138c6SAndroid Build Coastguard Worker\end_layout
6097*28e138c6SAndroid Build Coastguard Worker
6098*28e138c6SAndroid Build Coastguard Worker\end_inset
6099*28e138c6SAndroid Build Coastguard Worker</cell>
6100*28e138c6SAndroid Build Coastguard Worker</row>
6101*28e138c6SAndroid Build Coastguard Worker<row>
6102*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6103*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6104*28e138c6SAndroid Build Coastguard Worker
6105*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6106*28e138c6SAndroid Build Coastguard Workerframe_size
6107*28e138c6SAndroid Build Coastguard Worker\end_layout
6108*28e138c6SAndroid Build Coastguard Worker
6109*28e138c6SAndroid Build Coastguard Worker\end_inset
6110*28e138c6SAndroid Build Coastguard Worker</cell>
6111*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6112*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6113*28e138c6SAndroid Build Coastguard Worker
6114*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6115*28e138c6SAndroid Build Coastguard Workerint
6116*28e138c6SAndroid Build Coastguard Worker\end_layout
6117*28e138c6SAndroid Build Coastguard Worker
6118*28e138c6SAndroid Build Coastguard Worker\end_inset
6119*28e138c6SAndroid Build Coastguard Worker</cell>
6120*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6121*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6122*28e138c6SAndroid Build Coastguard Worker
6123*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6124*28e138c6SAndroid Build Coastguard Worker4
6125*28e138c6SAndroid Build Coastguard Worker\end_layout
6126*28e138c6SAndroid Build Coastguard Worker
6127*28e138c6SAndroid Build Coastguard Worker\end_inset
6128*28e138c6SAndroid Build Coastguard Worker</cell>
6129*28e138c6SAndroid Build Coastguard Worker</row>
6130*28e138c6SAndroid Build Coastguard Worker<row>
6131*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6132*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6133*28e138c6SAndroid Build Coastguard Worker
6134*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6135*28e138c6SAndroid Build Coastguard Workervbr
6136*28e138c6SAndroid Build Coastguard Worker\end_layout
6137*28e138c6SAndroid Build Coastguard Worker
6138*28e138c6SAndroid Build Coastguard Worker\end_inset
6139*28e138c6SAndroid Build Coastguard Worker</cell>
6140*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6141*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6142*28e138c6SAndroid Build Coastguard Worker
6143*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6144*28e138c6SAndroid Build Coastguard Workerint
6145*28e138c6SAndroid Build Coastguard Worker\end_layout
6146*28e138c6SAndroid Build Coastguard Worker
6147*28e138c6SAndroid Build Coastguard Worker\end_inset
6148*28e138c6SAndroid Build Coastguard Worker</cell>
6149*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6150*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6151*28e138c6SAndroid Build Coastguard Worker
6152*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6153*28e138c6SAndroid Build Coastguard Worker4
6154*28e138c6SAndroid Build Coastguard Worker\end_layout
6155*28e138c6SAndroid Build Coastguard Worker
6156*28e138c6SAndroid Build Coastguard Worker\end_inset
6157*28e138c6SAndroid Build Coastguard Worker</cell>
6158*28e138c6SAndroid Build Coastguard Worker</row>
6159*28e138c6SAndroid Build Coastguard Worker<row>
6160*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6161*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6162*28e138c6SAndroid Build Coastguard Worker
6163*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6164*28e138c6SAndroid Build Coastguard Workerframes_per_packet
6165*28e138c6SAndroid Build Coastguard Worker\end_layout
6166*28e138c6SAndroid Build Coastguard Worker
6167*28e138c6SAndroid Build Coastguard Worker\end_inset
6168*28e138c6SAndroid Build Coastguard Worker</cell>
6169*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6170*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6171*28e138c6SAndroid Build Coastguard Worker
6172*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6173*28e138c6SAndroid Build Coastguard Workerint
6174*28e138c6SAndroid Build Coastguard Worker\end_layout
6175*28e138c6SAndroid Build Coastguard Worker
6176*28e138c6SAndroid Build Coastguard Worker\end_inset
6177*28e138c6SAndroid Build Coastguard Worker</cell>
6178*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6179*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6180*28e138c6SAndroid Build Coastguard Worker
6181*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6182*28e138c6SAndroid Build Coastguard Worker4
6183*28e138c6SAndroid Build Coastguard Worker\end_layout
6184*28e138c6SAndroid Build Coastguard Worker
6185*28e138c6SAndroid Build Coastguard Worker\end_inset
6186*28e138c6SAndroid Build Coastguard Worker</cell>
6187*28e138c6SAndroid Build Coastguard Worker</row>
6188*28e138c6SAndroid Build Coastguard Worker<row>
6189*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6190*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6191*28e138c6SAndroid Build Coastguard Worker
6192*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6193*28e138c6SAndroid Build Coastguard Workerextra_headers
6194*28e138c6SAndroid Build Coastguard Worker\end_layout
6195*28e138c6SAndroid Build Coastguard Worker
6196*28e138c6SAndroid Build Coastguard Worker\end_inset
6197*28e138c6SAndroid Build Coastguard Worker</cell>
6198*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6199*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6200*28e138c6SAndroid Build Coastguard Worker
6201*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6202*28e138c6SAndroid Build Coastguard Workerint
6203*28e138c6SAndroid Build Coastguard Worker\end_layout
6204*28e138c6SAndroid Build Coastguard Worker
6205*28e138c6SAndroid Build Coastguard Worker\end_inset
6206*28e138c6SAndroid Build Coastguard Worker</cell>
6207*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6208*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6209*28e138c6SAndroid Build Coastguard Worker
6210*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6211*28e138c6SAndroid Build Coastguard Worker4
6212*28e138c6SAndroid Build Coastguard Worker\end_layout
6213*28e138c6SAndroid Build Coastguard Worker
6214*28e138c6SAndroid Build Coastguard Worker\end_inset
6215*28e138c6SAndroid Build Coastguard Worker</cell>
6216*28e138c6SAndroid Build Coastguard Worker</row>
6217*28e138c6SAndroid Build Coastguard Worker<row>
6218*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6219*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6220*28e138c6SAndroid Build Coastguard Worker
6221*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6222*28e138c6SAndroid Build Coastguard Workerreserved1
6223*28e138c6SAndroid Build Coastguard Worker\end_layout
6224*28e138c6SAndroid Build Coastguard Worker
6225*28e138c6SAndroid Build Coastguard Worker\end_inset
6226*28e138c6SAndroid Build Coastguard Worker</cell>
6227*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
6228*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6229*28e138c6SAndroid Build Coastguard Worker
6230*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6231*28e138c6SAndroid Build Coastguard Workerint
6232*28e138c6SAndroid Build Coastguard Worker\end_layout
6233*28e138c6SAndroid Build Coastguard Worker
6234*28e138c6SAndroid Build Coastguard Worker\end_inset
6235*28e138c6SAndroid Build Coastguard Worker</cell>
6236*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
6237*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6238*28e138c6SAndroid Build Coastguard Worker
6239*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6240*28e138c6SAndroid Build Coastguard Worker4
6241*28e138c6SAndroid Build Coastguard Worker\end_layout
6242*28e138c6SAndroid Build Coastguard Worker
6243*28e138c6SAndroid Build Coastguard Worker\end_inset
6244*28e138c6SAndroid Build Coastguard Worker</cell>
6245*28e138c6SAndroid Build Coastguard Worker</row>
6246*28e138c6SAndroid Build Coastguard Worker<row>
6247*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
6248*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6249*28e138c6SAndroid Build Coastguard Worker
6250*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6251*28e138c6SAndroid Build Coastguard Workerreserved2
6252*28e138c6SAndroid Build Coastguard Worker\end_layout
6253*28e138c6SAndroid Build Coastguard Worker
6254*28e138c6SAndroid Build Coastguard Worker\end_inset
6255*28e138c6SAndroid Build Coastguard Worker</cell>
6256*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
6257*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6258*28e138c6SAndroid Build Coastguard Worker
6259*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6260*28e138c6SAndroid Build Coastguard Workerint
6261*28e138c6SAndroid Build Coastguard Worker\end_layout
6262*28e138c6SAndroid Build Coastguard Worker
6263*28e138c6SAndroid Build Coastguard Worker\end_inset
6264*28e138c6SAndroid Build Coastguard Worker</cell>
6265*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
6266*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
6267*28e138c6SAndroid Build Coastguard Worker
6268*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6269*28e138c6SAndroid Build Coastguard Worker4
6270*28e138c6SAndroid Build Coastguard Worker\end_layout
6271*28e138c6SAndroid Build Coastguard Worker
6272*28e138c6SAndroid Build Coastguard Worker\end_inset
6273*28e138c6SAndroid Build Coastguard Worker</cell>
6274*28e138c6SAndroid Build Coastguard Worker</row>
6275*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
6276*28e138c6SAndroid Build Coastguard Worker
6277*28e138c6SAndroid Build Coastguard Worker\end_inset
6278*28e138c6SAndroid Build Coastguard Worker
6279*28e138c6SAndroid Build Coastguard Worker
6280*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
6281*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6282*28e138c6SAndroid Build Coastguard Worker
6283*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6284*28e138c6SAndroid Build Coastguard Worker
6285*28e138c6SAndroid Build Coastguard Worker
6286*28e138c6SAndroid Build Coastguard Worker\backslash
6287*28e138c6SAndroid Build Coastguard Workerend{center}
6288*28e138c6SAndroid Build Coastguard Worker\end_layout
6289*28e138c6SAndroid Build Coastguard Worker
6290*28e138c6SAndroid Build Coastguard Worker\end_inset
6291*28e138c6SAndroid Build Coastguard Worker
6292*28e138c6SAndroid Build Coastguard Worker
6293*28e138c6SAndroid Build Coastguard Worker\end_layout
6294*28e138c6SAndroid Build Coastguard Worker
6295*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6296*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
6297*28e138c6SAndroid Build Coastguard Worker
6298*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6299*28e138c6SAndroid Build Coastguard WorkerOgg/Speex header packet
6300*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
6301*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
6302*28e138c6SAndroid Build Coastguard Workername "cap:ogg_speex_header"
6303*28e138c6SAndroid Build Coastguard Worker
6304*28e138c6SAndroid Build Coastguard Worker\end_inset
6305*28e138c6SAndroid Build Coastguard Worker
6306*28e138c6SAndroid Build Coastguard Worker
6307*28e138c6SAndroid Build Coastguard Worker\end_layout
6308*28e138c6SAndroid Build Coastguard Worker
6309*28e138c6SAndroid Build Coastguard Worker\end_inset
6310*28e138c6SAndroid Build Coastguard Worker
6311*28e138c6SAndroid Build Coastguard Worker
6312*28e138c6SAndroid Build Coastguard Worker\end_layout
6313*28e138c6SAndroid Build Coastguard Worker
6314*28e138c6SAndroid Build Coastguard Worker\end_inset
6315*28e138c6SAndroid Build Coastguard Worker
6316*28e138c6SAndroid Build Coastguard Worker
6317*28e138c6SAndroid Build Coastguard Worker\end_layout
6318*28e138c6SAndroid Build Coastguard Worker
6319*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6320*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
6321*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6322*28e138c6SAndroid Build Coastguard Worker
6323*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6324*28e138c6SAndroid Build Coastguard Worker
6325*28e138c6SAndroid Build Coastguard Worker
6326*28e138c6SAndroid Build Coastguard Worker\backslash
6327*28e138c6SAndroid Build Coastguard Workerclearpage
6328*28e138c6SAndroid Build Coastguard Worker\end_layout
6329*28e138c6SAndroid Build Coastguard Worker
6330*28e138c6SAndroid Build Coastguard Worker\end_inset
6331*28e138c6SAndroid Build Coastguard Worker
6332*28e138c6SAndroid Build Coastguard Worker
6333*28e138c6SAndroid Build Coastguard Worker\end_layout
6334*28e138c6SAndroid Build Coastguard Worker
6335*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
6336*28e138c6SAndroid Build Coastguard WorkerIntroduction to CELP Coding
6337*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6338*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6339*28e138c6SAndroid Build Coastguard Worker
6340*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6341*28e138c6SAndroid Build Coastguard WorkerCELP
6342*28e138c6SAndroid Build Coastguard Worker\end_layout
6343*28e138c6SAndroid Build Coastguard Worker
6344*28e138c6SAndroid Build Coastguard Worker\end_inset
6345*28e138c6SAndroid Build Coastguard Worker
6346*28e138c6SAndroid Build Coastguard Worker
6347*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
6348*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
6349*28e138c6SAndroid Build Coastguard Workername "sec:Introduction-to-CELP"
6350*28e138c6SAndroid Build Coastguard Worker
6351*28e138c6SAndroid Build Coastguard Worker\end_inset
6352*28e138c6SAndroid Build Coastguard Worker
6353*28e138c6SAndroid Build Coastguard Worker
6354*28e138c6SAndroid Build Coastguard Worker\end_layout
6355*28e138c6SAndroid Build Coastguard Worker
6356*28e138c6SAndroid Build Coastguard Worker\begin_layout Quote
6357*28e138c6SAndroid Build Coastguard Worker\align center
6358*28e138c6SAndroid Build Coastguard Worker
6359*28e138c6SAndroid Build Coastguard Worker\emph on
6360*28e138c6SAndroid Build Coastguard WorkerDo not meddle in the affairs of poles, for they are subtle and quick to
6361*28e138c6SAndroid Build Coastguard Worker leave the unit circle.
6362*28e138c6SAndroid Build Coastguard Worker\end_layout
6363*28e138c6SAndroid Build Coastguard Worker
6364*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6365*28e138c6SAndroid Build Coastguard WorkerSpeex is based on CELP, which stands for Code Excited Linear Prediction.
6366*28e138c6SAndroid Build Coastguard Worker This section attempts to introduce the principles behind CELP, so if you
6367*28e138c6SAndroid Build Coastguard Worker are already familiar with CELP, you can safely skip to section
6368*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
6369*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
6370*28e138c6SAndroid Build Coastguard Workerreference "sec:Speex-narrowband-mode"
6371*28e138c6SAndroid Build Coastguard Worker
6372*28e138c6SAndroid Build Coastguard Worker\end_inset
6373*28e138c6SAndroid Build Coastguard Worker
6374*28e138c6SAndroid Build Coastguard Worker.
6375*28e138c6SAndroid Build Coastguard Worker The CELP technique is based on three ideas:
6376*28e138c6SAndroid Build Coastguard Worker\end_layout
6377*28e138c6SAndroid Build Coastguard Worker
6378*28e138c6SAndroid Build Coastguard Worker\begin_layout Enumerate
6379*28e138c6SAndroid Build Coastguard WorkerThe use of a linear prediction (LP) model to model the vocal tract
6380*28e138c6SAndroid Build Coastguard Worker\end_layout
6381*28e138c6SAndroid Build Coastguard Worker
6382*28e138c6SAndroid Build Coastguard Worker\begin_layout Enumerate
6383*28e138c6SAndroid Build Coastguard WorkerThe use of (adaptive and fixed) codebook entries as input (excitation) of
6384*28e138c6SAndroid Build Coastguard Worker the LP model
6385*28e138c6SAndroid Build Coastguard Worker\end_layout
6386*28e138c6SAndroid Build Coastguard Worker
6387*28e138c6SAndroid Build Coastguard Worker\begin_layout Enumerate
6388*28e138c6SAndroid Build Coastguard WorkerThe search performed in closed-loop in a
6389*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
6390*28e138c6SAndroid Build Coastguard Worker\end_inset
6391*28e138c6SAndroid Build Coastguard Worker
6392*28e138c6SAndroid Build Coastguard Workerperceptually weighted domain
6393*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
6394*28e138c6SAndroid Build Coastguard Worker\end_inset
6395*28e138c6SAndroid Build Coastguard Worker
6396*28e138c6SAndroid Build Coastguard Worker
6397*28e138c6SAndroid Build Coastguard Worker\end_layout
6398*28e138c6SAndroid Build Coastguard Worker
6399*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6400*28e138c6SAndroid Build Coastguard WorkerThis section describes the basic ideas behind CELP.
6401*28e138c6SAndroid Build Coastguard Worker This is still a work in progress.
6402*28e138c6SAndroid Build Coastguard Worker\end_layout
6403*28e138c6SAndroid Build Coastguard Worker
6404*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
6405*28e138c6SAndroid Build Coastguard WorkerSource-Filter Model of Speech Prediction
6406*28e138c6SAndroid Build Coastguard Worker\end_layout
6407*28e138c6SAndroid Build Coastguard Worker
6408*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6409*28e138c6SAndroid Build Coastguard WorkerThe source-filter model of speech production assumes that the vocal cords
6410*28e138c6SAndroid Build Coastguard Worker are the source of spectrally flat sound (the excitation signal), and that
6411*28e138c6SAndroid Build Coastguard Worker the vocal tract acts as a filter to spectrally shape the various sounds
6412*28e138c6SAndroid Build Coastguard Worker of speech.
6413*28e138c6SAndroid Build Coastguard Worker While still an approximation, the model is widely used in speech coding
6414*28e138c6SAndroid Build Coastguard Worker because of its simplicity.Its use is also the reason why most speech codecs
6415*28e138c6SAndroid Build Coastguard Worker (Speex included) perform badly on music signals.
6416*28e138c6SAndroid Build Coastguard Worker The different phonemes can be distinguished by their excitation (source)
6417*28e138c6SAndroid Build Coastguard Worker and spectral shape (filter).
6418*28e138c6SAndroid Build Coastguard Worker Voiced sounds (e.g.
6419*28e138c6SAndroid Build Coastguard Worker vowels) have an excitation signal that is periodic and that can be approximated
6420*28e138c6SAndroid Build Coastguard Worker by an impulse train in the time domain or by regularly-spaced harmonics
6421*28e138c6SAndroid Build Coastguard Worker in the frequency domain.
6422*28e138c6SAndroid Build Coastguard Worker On the other hand, fricatives (such as the "s", "sh" and "f" sounds) have
6423*28e138c6SAndroid Build Coastguard Worker an excitation signal that is similar to white Gaussian noise.
6424*28e138c6SAndroid Build Coastguard Worker So called voice fricatives (such as "z" and "v") have excitation signal
6425*28e138c6SAndroid Build Coastguard Worker composed of an harmonic part and a noisy part.
6426*28e138c6SAndroid Build Coastguard Worker\end_layout
6427*28e138c6SAndroid Build Coastguard Worker
6428*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6429*28e138c6SAndroid Build Coastguard WorkerThe source-filter model is usually tied with the use of Linear prediction.
6430*28e138c6SAndroid Build Coastguard Worker The CELP model is based on source-filter model, as can be seen from the
6431*28e138c6SAndroid Build Coastguard Worker CELP decoder illustrated in Figure
6432*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
6433*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
6434*28e138c6SAndroid Build Coastguard Workerreference "fig:The-CELP-model"
6435*28e138c6SAndroid Build Coastguard Worker
6436*28e138c6SAndroid Build Coastguard Worker\end_inset
6437*28e138c6SAndroid Build Coastguard Worker
6438*28e138c6SAndroid Build Coastguard Worker.
6439*28e138c6SAndroid Build Coastguard Worker
6440*28e138c6SAndroid Build Coastguard Worker\end_layout
6441*28e138c6SAndroid Build Coastguard Worker
6442*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6443*28e138c6SAndroid Build Coastguard Worker\begin_inset Float figure
6444*28e138c6SAndroid Build Coastguard Workerwide false
6445*28e138c6SAndroid Build Coastguard Workersideways false
6446*28e138c6SAndroid Build Coastguard Workerstatus open
6447*28e138c6SAndroid Build Coastguard Worker
6448*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6449*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
6450*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6451*28e138c6SAndroid Build Coastguard Worker
6452*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6453*28e138c6SAndroid Build Coastguard Worker
6454*28e138c6SAndroid Build Coastguard Worker
6455*28e138c6SAndroid Build Coastguard Worker\backslash
6456*28e138c6SAndroid Build Coastguard Workerbegin{center}
6457*28e138c6SAndroid Build Coastguard Worker\end_layout
6458*28e138c6SAndroid Build Coastguard Worker
6459*28e138c6SAndroid Build Coastguard Worker\end_inset
6460*28e138c6SAndroid Build Coastguard Worker
6461*28e138c6SAndroid Build Coastguard Worker
6462*28e138c6SAndroid Build Coastguard Worker\begin_inset Graphics
6463*28e138c6SAndroid Build Coastguard Worker	filename celp_decoder.eps
6464*28e138c6SAndroid Build Coastguard Worker	width 45page%
6465*28e138c6SAndroid Build Coastguard Worker	keepAspectRatio
6466*28e138c6SAndroid Build Coastguard Worker
6467*28e138c6SAndroid Build Coastguard Worker\end_inset
6468*28e138c6SAndroid Build Coastguard Worker
6469*28e138c6SAndroid Build Coastguard Worker
6470*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
6471*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6472*28e138c6SAndroid Build Coastguard Worker
6473*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6474*28e138c6SAndroid Build Coastguard Worker
6475*28e138c6SAndroid Build Coastguard Worker
6476*28e138c6SAndroid Build Coastguard Worker\backslash
6477*28e138c6SAndroid Build Coastguard Workerend{center}
6478*28e138c6SAndroid Build Coastguard Worker\end_layout
6479*28e138c6SAndroid Build Coastguard Worker
6480*28e138c6SAndroid Build Coastguard Worker\end_inset
6481*28e138c6SAndroid Build Coastguard Worker
6482*28e138c6SAndroid Build Coastguard Worker
6483*28e138c6SAndroid Build Coastguard Worker\end_layout
6484*28e138c6SAndroid Build Coastguard Worker
6485*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6486*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
6487*28e138c6SAndroid Build Coastguard Worker
6488*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6489*28e138c6SAndroid Build Coastguard WorkerThe CELP model of speech synthesis (decoder)
6490*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
6491*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
6492*28e138c6SAndroid Build Coastguard Workername "fig:The-CELP-model"
6493*28e138c6SAndroid Build Coastguard Worker
6494*28e138c6SAndroid Build Coastguard Worker\end_inset
6495*28e138c6SAndroid Build Coastguard Worker
6496*28e138c6SAndroid Build Coastguard Worker
6497*28e138c6SAndroid Build Coastguard Worker\end_layout
6498*28e138c6SAndroid Build Coastguard Worker
6499*28e138c6SAndroid Build Coastguard Worker\end_inset
6500*28e138c6SAndroid Build Coastguard Worker
6501*28e138c6SAndroid Build Coastguard Worker
6502*28e138c6SAndroid Build Coastguard Worker\end_layout
6503*28e138c6SAndroid Build Coastguard Worker
6504*28e138c6SAndroid Build Coastguard Worker\end_inset
6505*28e138c6SAndroid Build Coastguard Worker
6506*28e138c6SAndroid Build Coastguard Worker
6507*28e138c6SAndroid Build Coastguard Worker\end_layout
6508*28e138c6SAndroid Build Coastguard Worker
6509*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
6510*28e138c6SAndroid Build Coastguard WorkerLinear Prediction Coefficients (LPC)
6511*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6512*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6513*28e138c6SAndroid Build Coastguard Worker
6514*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6515*28e138c6SAndroid Build Coastguard Workerlinear prediction
6516*28e138c6SAndroid Build Coastguard Worker\end_layout
6517*28e138c6SAndroid Build Coastguard Worker
6518*28e138c6SAndroid Build Coastguard Worker\end_inset
6519*28e138c6SAndroid Build Coastguard Worker
6520*28e138c6SAndroid Build Coastguard Worker
6521*28e138c6SAndroid Build Coastguard Worker\end_layout
6522*28e138c6SAndroid Build Coastguard Worker
6523*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6524*28e138c6SAndroid Build Coastguard WorkerLinear prediction is at the base of many speech coding techniques, including
6525*28e138c6SAndroid Build Coastguard Worker CELP.
6526*28e138c6SAndroid Build Coastguard Worker The idea behind it is to predict the signal
6527*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $x[n]$
6528*28e138c6SAndroid Build Coastguard Worker\end_inset
6529*28e138c6SAndroid Build Coastguard Worker
6530*28e138c6SAndroid Build Coastguard Worker using a linear combination of its past samples:
6531*28e138c6SAndroid Build Coastguard Worker\end_layout
6532*28e138c6SAndroid Build Coastguard Worker
6533*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6534*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6535*28e138c6SAndroid Build Coastguard Workery[n]=\sum_{i=1}^{N}a_{i}x[n-i]\]
6536*28e138c6SAndroid Build Coastguard Worker
6537*28e138c6SAndroid Build Coastguard Worker\end_inset
6538*28e138c6SAndroid Build Coastguard Worker
6539*28e138c6SAndroid Build Coastguard Workerwhere
6540*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $y[n]$
6541*28e138c6SAndroid Build Coastguard Worker\end_inset
6542*28e138c6SAndroid Build Coastguard Worker
6543*28e138c6SAndroid Build Coastguard Worker is the linear prediction of
6544*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $x[n]$
6545*28e138c6SAndroid Build Coastguard Worker\end_inset
6546*28e138c6SAndroid Build Coastguard Worker
6547*28e138c6SAndroid Build Coastguard Worker.
6548*28e138c6SAndroid Build Coastguard Worker The prediction error is thus given by:
6549*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6550*28e138c6SAndroid Build Coastguard Workere[n]=x[n]-y[n]=x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\]
6551*28e138c6SAndroid Build Coastguard Worker
6552*28e138c6SAndroid Build Coastguard Worker\end_inset
6553*28e138c6SAndroid Build Coastguard Worker
6554*28e138c6SAndroid Build Coastguard Worker
6555*28e138c6SAndroid Build Coastguard Worker\end_layout
6556*28e138c6SAndroid Build Coastguard Worker
6557*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6558*28e138c6SAndroid Build Coastguard WorkerThe goal of the LPC analysis is to find the best prediction coefficients
6559*28e138c6SAndroid Build Coastguard Worker
6560*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $a_{i}$
6561*28e138c6SAndroid Build Coastguard Worker\end_inset
6562*28e138c6SAndroid Build Coastguard Worker
6563*28e138c6SAndroid Build Coastguard Worker which minimize the quadratic error function:
6564*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6565*28e138c6SAndroid Build Coastguard WorkerE=\sum_{n=0}^{L-1}\left[e[n]\right]^{2}=\sum_{n=0}^{L-1}\left[x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\right]^{2}\]
6566*28e138c6SAndroid Build Coastguard Worker
6567*28e138c6SAndroid Build Coastguard Worker\end_inset
6568*28e138c6SAndroid Build Coastguard Worker
6569*28e138c6SAndroid Build Coastguard WorkerThat can be done by making all derivatives
6570*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\frac{\partial E}{\partial a_{i}}$
6571*28e138c6SAndroid Build Coastguard Worker\end_inset
6572*28e138c6SAndroid Build Coastguard Worker
6573*28e138c6SAndroid Build Coastguard Worker equal to zero:
6574*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6575*28e138c6SAndroid Build Coastguard Worker\frac{\partial E}{\partial a_{i}}=\frac{\partial}{\partial a_{i}}\sum_{n=0}^{L-1}\left[x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\right]^{2}=0\]
6576*28e138c6SAndroid Build Coastguard Worker
6577*28e138c6SAndroid Build Coastguard Worker\end_inset
6578*28e138c6SAndroid Build Coastguard Worker
6579*28e138c6SAndroid Build Coastguard Worker
6580*28e138c6SAndroid Build Coastguard Worker\end_layout
6581*28e138c6SAndroid Build Coastguard Worker
6582*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6583*28e138c6SAndroid Build Coastguard WorkerFor an order
6584*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $N$
6585*28e138c6SAndroid Build Coastguard Worker\end_inset
6586*28e138c6SAndroid Build Coastguard Worker
6587*28e138c6SAndroid Build Coastguard Worker filter, the filter coefficients
6588*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $a_{i}$
6589*28e138c6SAndroid Build Coastguard Worker\end_inset
6590*28e138c6SAndroid Build Coastguard Worker
6591*28e138c6SAndroid Build Coastguard Worker are found by solving the system
6592*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $N\times N$
6593*28e138c6SAndroid Build Coastguard Worker\end_inset
6594*28e138c6SAndroid Build Coastguard Worker
6595*28e138c6SAndroid Build Coastguard Worker linear system
6596*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\mathbf{Ra}=\mathbf{r}$
6597*28e138c6SAndroid Build Coastguard Worker\end_inset
6598*28e138c6SAndroid Build Coastguard Worker
6599*28e138c6SAndroid Build Coastguard Worker, where
6600*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6601*28e138c6SAndroid Build Coastguard Worker\mathbf{R}=\left[\begin{array}{cccc}
6602*28e138c6SAndroid Build Coastguard WorkerR(0) & R(1) & \cdots & R(N-1)\\
6603*28e138c6SAndroid Build Coastguard WorkerR(1) & R(0) & \cdots & R(N-2)\\
6604*28e138c6SAndroid Build Coastguard Worker\vdots & \vdots & \ddots & \vdots\\
6605*28e138c6SAndroid Build Coastguard WorkerR(N-1) & R(N-2) & \cdots & R(0)\end{array}\right]\]
6606*28e138c6SAndroid Build Coastguard Worker
6607*28e138c6SAndroid Build Coastguard Worker\end_inset
6608*28e138c6SAndroid Build Coastguard Worker
6609*28e138c6SAndroid Build Coastguard Worker
6610*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6611*28e138c6SAndroid Build Coastguard Worker\mathbf{r}=\left[\begin{array}{c}
6612*28e138c6SAndroid Build Coastguard WorkerR(1)\\
6613*28e138c6SAndroid Build Coastguard WorkerR(2)\\
6614*28e138c6SAndroid Build Coastguard Worker\vdots\\
6615*28e138c6SAndroid Build Coastguard WorkerR(N)\end{array}\right]\]
6616*28e138c6SAndroid Build Coastguard Worker
6617*28e138c6SAndroid Build Coastguard Worker\end_inset
6618*28e138c6SAndroid Build Coastguard Worker
6619*28e138c6SAndroid Build Coastguard Workerwith
6620*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $R(m)$
6621*28e138c6SAndroid Build Coastguard Worker\end_inset
6622*28e138c6SAndroid Build Coastguard Worker
6623*28e138c6SAndroid Build Coastguard Worker, the auto-correlation
6624*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6625*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6626*28e138c6SAndroid Build Coastguard Worker
6627*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6628*28e138c6SAndroid Build Coastguard Workerauto-correlation
6629*28e138c6SAndroid Build Coastguard Worker\end_layout
6630*28e138c6SAndroid Build Coastguard Worker
6631*28e138c6SAndroid Build Coastguard Worker\end_inset
6632*28e138c6SAndroid Build Coastguard Worker
6633*28e138c6SAndroid Build Coastguard Worker of the signal
6634*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $x[n]$
6635*28e138c6SAndroid Build Coastguard Worker\end_inset
6636*28e138c6SAndroid Build Coastguard Worker
6637*28e138c6SAndroid Build Coastguard Worker, computed as:
6638*28e138c6SAndroid Build Coastguard Worker\end_layout
6639*28e138c6SAndroid Build Coastguard Worker
6640*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6641*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6642*28e138c6SAndroid Build Coastguard WorkerR(m)=\sum_{i=0}^{N-1}x[i]x[i-m]\]
6643*28e138c6SAndroid Build Coastguard Worker
6644*28e138c6SAndroid Build Coastguard Worker\end_inset
6645*28e138c6SAndroid Build Coastguard Worker
6646*28e138c6SAndroid Build Coastguard Worker
6647*28e138c6SAndroid Build Coastguard Worker\end_layout
6648*28e138c6SAndroid Build Coastguard Worker
6649*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6650*28e138c6SAndroid Build Coastguard WorkerBecause
6651*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\mathbf{R}$
6652*28e138c6SAndroid Build Coastguard Worker\end_inset
6653*28e138c6SAndroid Build Coastguard Worker
6654*28e138c6SAndroid Build Coastguard Worker is Hermitian Toeplitz, the Levinson-Durbin
6655*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6656*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6657*28e138c6SAndroid Build Coastguard Worker
6658*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6659*28e138c6SAndroid Build Coastguard WorkerLevinson-Durbin
6660*28e138c6SAndroid Build Coastguard Worker\end_layout
6661*28e138c6SAndroid Build Coastguard Worker
6662*28e138c6SAndroid Build Coastguard Worker\end_inset
6663*28e138c6SAndroid Build Coastguard Worker
6664*28e138c6SAndroid Build Coastguard Worker algorithm can be used, making the solution to the problem
6665*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\mathcal{O}\left(N^{2}\right)$
6666*28e138c6SAndroid Build Coastguard Worker\end_inset
6667*28e138c6SAndroid Build Coastguard Worker
6668*28e138c6SAndroid Build Coastguard Worker instead of
6669*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\mathcal{O}\left(N^{3}\right)$
6670*28e138c6SAndroid Build Coastguard Worker\end_inset
6671*28e138c6SAndroid Build Coastguard Worker
6672*28e138c6SAndroid Build Coastguard Worker.
6673*28e138c6SAndroid Build Coastguard Worker Also, it can be proven that all the roots of
6674*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $A(z)$
6675*28e138c6SAndroid Build Coastguard Worker\end_inset
6676*28e138c6SAndroid Build Coastguard Worker
6677*28e138c6SAndroid Build Coastguard Worker are within the unit circle, which means that
6678*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $1/A(z)$
6679*28e138c6SAndroid Build Coastguard Worker\end_inset
6680*28e138c6SAndroid Build Coastguard Worker
6681*28e138c6SAndroid Build Coastguard Worker is always stable.
6682*28e138c6SAndroid Build Coastguard Worker This is in theory; in practice because of finite precision, there are two
6683*28e138c6SAndroid Build Coastguard Worker commonly used techniques to make sure we have a stable filter.
6684*28e138c6SAndroid Build Coastguard Worker First, we multiply
6685*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $R(0)$
6686*28e138c6SAndroid Build Coastguard Worker\end_inset
6687*28e138c6SAndroid Build Coastguard Worker
6688*28e138c6SAndroid Build Coastguard Worker by a number slightly above one (such as 1.0001), which is equivalent to
6689*28e138c6SAndroid Build Coastguard Worker adding noise to the signal.
6690*28e138c6SAndroid Build Coastguard Worker Also, we can apply a window to the auto-correlation, which is equivalent
6691*28e138c6SAndroid Build Coastguard Worker to filtering in the frequency domain, reducing sharp resonances.
6692*28e138c6SAndroid Build Coastguard Worker\end_layout
6693*28e138c6SAndroid Build Coastguard Worker
6694*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
6695*28e138c6SAndroid Build Coastguard WorkerPitch Prediction
6696*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6697*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6698*28e138c6SAndroid Build Coastguard Worker
6699*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6700*28e138c6SAndroid Build Coastguard Workerpitch
6701*28e138c6SAndroid Build Coastguard Worker\end_layout
6702*28e138c6SAndroid Build Coastguard Worker
6703*28e138c6SAndroid Build Coastguard Worker\end_inset
6704*28e138c6SAndroid Build Coastguard Worker
6705*28e138c6SAndroid Build Coastguard Worker
6706*28e138c6SAndroid Build Coastguard Worker\end_layout
6707*28e138c6SAndroid Build Coastguard Worker
6708*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6709*28e138c6SAndroid Build Coastguard WorkerDuring voiced segments, the speech signal is periodic, so it is possible
6710*28e138c6SAndroid Build Coastguard Worker to take advantage of that property by approximating the excitation signal
6711*28e138c6SAndroid Build Coastguard Worker
6712*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $e[n]$
6713*28e138c6SAndroid Build Coastguard Worker\end_inset
6714*28e138c6SAndroid Build Coastguard Worker
6715*28e138c6SAndroid Build Coastguard Worker by a gain times the past of the excitation:
6716*28e138c6SAndroid Build Coastguard Worker\end_layout
6717*28e138c6SAndroid Build Coastguard Worker
6718*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6719*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6720*28e138c6SAndroid Build Coastguard Workere[n]\simeq p[n]=\beta e[n-T]\ ,\]
6721*28e138c6SAndroid Build Coastguard Worker
6722*28e138c6SAndroid Build Coastguard Worker\end_inset
6723*28e138c6SAndroid Build Coastguard Worker
6724*28e138c6SAndroid Build Coastguard Workerwhere
6725*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $T$
6726*28e138c6SAndroid Build Coastguard Worker\end_inset
6727*28e138c6SAndroid Build Coastguard Worker
6728*28e138c6SAndroid Build Coastguard Worker is the pitch period,
6729*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\beta$
6730*28e138c6SAndroid Build Coastguard Worker\end_inset
6731*28e138c6SAndroid Build Coastguard Worker
6732*28e138c6SAndroid Build Coastguard Worker is the pitch gain.
6733*28e138c6SAndroid Build Coastguard Worker We call that long-term prediction since the excitation is predicted from
6734*28e138c6SAndroid Build Coastguard Worker
6735*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $e[n-T]$
6736*28e138c6SAndroid Build Coastguard Worker\end_inset
6737*28e138c6SAndroid Build Coastguard Worker
6738*28e138c6SAndroid Build Coastguard Worker with
6739*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $T\gg N$
6740*28e138c6SAndroid Build Coastguard Worker\end_inset
6741*28e138c6SAndroid Build Coastguard Worker
6742*28e138c6SAndroid Build Coastguard Worker.
6743*28e138c6SAndroid Build Coastguard Worker\end_layout
6744*28e138c6SAndroid Build Coastguard Worker
6745*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
6746*28e138c6SAndroid Build Coastguard WorkerInnovation Codebook
6747*28e138c6SAndroid Build Coastguard Worker\end_layout
6748*28e138c6SAndroid Build Coastguard Worker
6749*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6750*28e138c6SAndroid Build Coastguard WorkerThe final excitation
6751*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $e[n]$
6752*28e138c6SAndroid Build Coastguard Worker\end_inset
6753*28e138c6SAndroid Build Coastguard Worker
6754*28e138c6SAndroid Build Coastguard Worker will be the sum of the pitch prediction and an
6755*28e138c6SAndroid Build Coastguard Worker\emph on
6756*28e138c6SAndroid Build Coastguard Workerinnovation
6757*28e138c6SAndroid Build Coastguard Worker\emph default
6758*28e138c6SAndroid Build Coastguard Worker signal
6759*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $c[n]$
6760*28e138c6SAndroid Build Coastguard Worker\end_inset
6761*28e138c6SAndroid Build Coastguard Worker
6762*28e138c6SAndroid Build Coastguard Worker taken from a fixed codebook, hence the name
6763*28e138c6SAndroid Build Coastguard Worker\emph on
6764*28e138c6SAndroid Build Coastguard WorkerCode
6765*28e138c6SAndroid Build Coastguard Worker\emph default
6766*28e138c6SAndroid Build Coastguard Worker Excited Linear Prediction.
6767*28e138c6SAndroid Build Coastguard Worker The final excitation is given by
6768*28e138c6SAndroid Build Coastguard Worker\end_layout
6769*28e138c6SAndroid Build Coastguard Worker
6770*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6771*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6772*28e138c6SAndroid Build Coastguard Workere[n]=p[n]+c[n]=\beta e[n-T]+c[n]\ .\]
6773*28e138c6SAndroid Build Coastguard Worker
6774*28e138c6SAndroid Build Coastguard Worker\end_inset
6775*28e138c6SAndroid Build Coastguard Worker
6776*28e138c6SAndroid Build Coastguard WorkerThe quantization of
6777*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $c[n]$
6778*28e138c6SAndroid Build Coastguard Worker\end_inset
6779*28e138c6SAndroid Build Coastguard Worker
6780*28e138c6SAndroid Build Coastguard Worker is where most of the bits in a CELP codec are allocated.
6781*28e138c6SAndroid Build Coastguard Worker It represents the information that couldn't be obtained either from linear
6782*28e138c6SAndroid Build Coastguard Worker prediction or pitch prediction.
6783*28e138c6SAndroid Build Coastguard Worker In the
6784*28e138c6SAndroid Build Coastguard Worker\emph on
6785*28e138c6SAndroid Build Coastguard Workerz
6786*28e138c6SAndroid Build Coastguard Worker\emph default
6787*28e138c6SAndroid Build Coastguard Worker-domain we can represent the final signal
6788*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $X(z)$
6789*28e138c6SAndroid Build Coastguard Worker\end_inset
6790*28e138c6SAndroid Build Coastguard Worker
6791*28e138c6SAndroid Build Coastguard Worker as
6792*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
6793*28e138c6SAndroid Build Coastguard WorkerX(z)=\frac{C(z)}{A(z)\left(1-\beta z^{-T}\right)}\]
6794*28e138c6SAndroid Build Coastguard Worker
6795*28e138c6SAndroid Build Coastguard Worker\end_inset
6796*28e138c6SAndroid Build Coastguard Worker
6797*28e138c6SAndroid Build Coastguard Worker
6798*28e138c6SAndroid Build Coastguard Worker\end_layout
6799*28e138c6SAndroid Build Coastguard Worker
6800*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
6801*28e138c6SAndroid Build Coastguard WorkerNoise Weighting
6802*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6803*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6804*28e138c6SAndroid Build Coastguard Worker
6805*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6806*28e138c6SAndroid Build Coastguard Workererror weighting
6807*28e138c6SAndroid Build Coastguard Worker\end_layout
6808*28e138c6SAndroid Build Coastguard Worker
6809*28e138c6SAndroid Build Coastguard Worker\end_inset
6810*28e138c6SAndroid Build Coastguard Worker
6811*28e138c6SAndroid Build Coastguard Worker
6812*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
6813*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6814*28e138c6SAndroid Build Coastguard Worker
6815*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6816*28e138c6SAndroid Build Coastguard Workeranalysis-by-synthesis
6817*28e138c6SAndroid Build Coastguard Worker\end_layout
6818*28e138c6SAndroid Build Coastguard Worker
6819*28e138c6SAndroid Build Coastguard Worker\end_inset
6820*28e138c6SAndroid Build Coastguard Worker
6821*28e138c6SAndroid Build Coastguard Worker
6822*28e138c6SAndroid Build Coastguard Worker\end_layout
6823*28e138c6SAndroid Build Coastguard Worker
6824*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6825*28e138c6SAndroid Build Coastguard WorkerMost (if not all) modern audio codecs attempt to
6826*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
6827*28e138c6SAndroid Build Coastguard Worker\end_inset
6828*28e138c6SAndroid Build Coastguard Worker
6829*28e138c6SAndroid Build Coastguard Workershape
6830*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
6831*28e138c6SAndroid Build Coastguard Worker\end_inset
6832*28e138c6SAndroid Build Coastguard Worker
6833*28e138c6SAndroid Build Coastguard Worker the noise so that it appears mostly in the frequency regions where the
6834*28e138c6SAndroid Build Coastguard Worker ear cannot detect it.
6835*28e138c6SAndroid Build Coastguard Worker For example, the ear is more tolerant to noise in parts of the spectrum
6836*28e138c6SAndroid Build Coastguard Worker that are louder and
6837*28e138c6SAndroid Build Coastguard Worker\emph on
6838*28e138c6SAndroid Build Coastguard Workervice versa
6839*28e138c6SAndroid Build Coastguard Worker\emph default
6840*28e138c6SAndroid Build Coastguard Worker.
6841*28e138c6SAndroid Build Coastguard Worker In order to maximize speech quality, CELP codecs minimize the mean square
6842*28e138c6SAndroid Build Coastguard Worker of the error (noise) in the perceptually weighted domain.
6843*28e138c6SAndroid Build Coastguard Worker This means that a perceptual noise weighting filter
6844*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $W(z)$
6845*28e138c6SAndroid Build Coastguard Worker\end_inset
6846*28e138c6SAndroid Build Coastguard Worker
6847*28e138c6SAndroid Build Coastguard Worker is applied to the error signal in the encoder.
6848*28e138c6SAndroid Build Coastguard Worker In most CELP codecs,
6849*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $W(z)$
6850*28e138c6SAndroid Build Coastguard Worker\end_inset
6851*28e138c6SAndroid Build Coastguard Worker
6852*28e138c6SAndroid Build Coastguard Worker is a pole-zero weighting filter derived from the linear prediction coefficients
6853*28e138c6SAndroid Build Coastguard Worker (LPC), generally using bandwidth expansion.
6854*28e138c6SAndroid Build Coastguard Worker Let the spectral envelope be represented by the synthesis filter
6855*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $1/A(z)$
6856*28e138c6SAndroid Build Coastguard Worker\end_inset
6857*28e138c6SAndroid Build Coastguard Worker
6858*28e138c6SAndroid Build Coastguard Worker, CELP codecs typically derive the noise weighting filter as
6859*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \begin{equation}
6860*28e138c6SAndroid Build Coastguard WorkerW(z)=\frac{A(z/\gamma_{1})}{A(z/\gamma_{2})}\ ,\label{eq:gamma-weighting}\end{equation}
6861*28e138c6SAndroid Build Coastguard Worker
6862*28e138c6SAndroid Build Coastguard Worker\end_inset
6863*28e138c6SAndroid Build Coastguard Worker
6864*28e138c6SAndroid Build Coastguard Workerwhere
6865*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\gamma_{1}=0.9$
6866*28e138c6SAndroid Build Coastguard Worker\end_inset
6867*28e138c6SAndroid Build Coastguard Worker
6868*28e138c6SAndroid Build Coastguard Worker and
6869*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\gamma_{2}=0.6$
6870*28e138c6SAndroid Build Coastguard Worker\end_inset
6871*28e138c6SAndroid Build Coastguard Worker
6872*28e138c6SAndroid Build Coastguard Worker in the Speex reference implementation.
6873*28e138c6SAndroid Build Coastguard Worker If a filter
6874*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $A(z)$
6875*28e138c6SAndroid Build Coastguard Worker\end_inset
6876*28e138c6SAndroid Build Coastguard Worker
6877*28e138c6SAndroid Build Coastguard Worker has (complex) poles at
6878*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $p_{i}$
6879*28e138c6SAndroid Build Coastguard Worker\end_inset
6880*28e138c6SAndroid Build Coastguard Worker
6881*28e138c6SAndroid Build Coastguard Worker in the
6882*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $z$
6883*28e138c6SAndroid Build Coastguard Worker\end_inset
6884*28e138c6SAndroid Build Coastguard Worker
6885*28e138c6SAndroid Build Coastguard Worker-plane, the filter
6886*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $A(z/\gamma)$
6887*28e138c6SAndroid Build Coastguard Worker\end_inset
6888*28e138c6SAndroid Build Coastguard Worker
6889*28e138c6SAndroid Build Coastguard Worker will have its poles at
6890*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $p'_{i}=\gamma p_{i}$
6891*28e138c6SAndroid Build Coastguard Worker\end_inset
6892*28e138c6SAndroid Build Coastguard Worker
6893*28e138c6SAndroid Build Coastguard Worker, making it a flatter version of
6894*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $A(z)$
6895*28e138c6SAndroid Build Coastguard Worker\end_inset
6896*28e138c6SAndroid Build Coastguard Worker
6897*28e138c6SAndroid Build Coastguard Worker.
6898*28e138c6SAndroid Build Coastguard Worker\end_layout
6899*28e138c6SAndroid Build Coastguard Worker
6900*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6901*28e138c6SAndroid Build Coastguard WorkerThe weighting filter is applied to the error signal used to optimize the
6902*28e138c6SAndroid Build Coastguard Worker codebook search through analysis-by-synthesis (AbS).
6903*28e138c6SAndroid Build Coastguard Worker This results in a spectral shape of the noise that tends towards
6904*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $1/W(z)$
6905*28e138c6SAndroid Build Coastguard Worker\end_inset
6906*28e138c6SAndroid Build Coastguard Worker
6907*28e138c6SAndroid Build Coastguard Worker.
6908*28e138c6SAndroid Build Coastguard Worker While the simplicity of the model has been an important reason for the
6909*28e138c6SAndroid Build Coastguard Worker success of CELP, it remains that
6910*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $W(z)$
6911*28e138c6SAndroid Build Coastguard Worker\end_inset
6912*28e138c6SAndroid Build Coastguard Worker
6913*28e138c6SAndroid Build Coastguard Worker is a very rough approximation for the perceptually optimal noise weighting
6914*28e138c6SAndroid Build Coastguard Worker function.
6915*28e138c6SAndroid Build Coastguard Worker Fig.
6916*28e138c6SAndroid Build Coastguard Worker
6917*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
6918*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
6919*28e138c6SAndroid Build Coastguard Workerreference "cap:Standard-noise-shaping"
6920*28e138c6SAndroid Build Coastguard Worker
6921*28e138c6SAndroid Build Coastguard Worker\end_inset
6922*28e138c6SAndroid Build Coastguard Worker
6923*28e138c6SAndroid Build Coastguard Worker illustrates the noise shaping that results from Eq.
6924*28e138c6SAndroid Build Coastguard Worker
6925*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
6926*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
6927*28e138c6SAndroid Build Coastguard Workerreference "eq:gamma-weighting"
6928*28e138c6SAndroid Build Coastguard Worker
6929*28e138c6SAndroid Build Coastguard Worker\end_inset
6930*28e138c6SAndroid Build Coastguard Worker
6931*28e138c6SAndroid Build Coastguard Worker.
6932*28e138c6SAndroid Build Coastguard Worker Throughout this paper, we refer to
6933*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $W(z)$
6934*28e138c6SAndroid Build Coastguard Worker\end_inset
6935*28e138c6SAndroid Build Coastguard Worker
6936*28e138c6SAndroid Build Coastguard Worker as the noise weighting filter and to
6937*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $1/W(z)$
6938*28e138c6SAndroid Build Coastguard Worker\end_inset
6939*28e138c6SAndroid Build Coastguard Worker
6940*28e138c6SAndroid Build Coastguard Worker as the noise shaping filter (or curve).
6941*28e138c6SAndroid Build Coastguard Worker\end_layout
6942*28e138c6SAndroid Build Coastguard Worker
6943*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
6944*28e138c6SAndroid Build Coastguard Worker\begin_inset Float figure
6945*28e138c6SAndroid Build Coastguard Workerwide false
6946*28e138c6SAndroid Build Coastguard Workersideways false
6947*28e138c6SAndroid Build Coastguard Workerstatus open
6948*28e138c6SAndroid Build Coastguard Worker
6949*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6950*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
6951*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6952*28e138c6SAndroid Build Coastguard Worker
6953*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6954*28e138c6SAndroid Build Coastguard Worker
6955*28e138c6SAndroid Build Coastguard Worker
6956*28e138c6SAndroid Build Coastguard Worker\backslash
6957*28e138c6SAndroid Build Coastguard Workerbegin{center}
6958*28e138c6SAndroid Build Coastguard Worker\end_layout
6959*28e138c6SAndroid Build Coastguard Worker
6960*28e138c6SAndroid Build Coastguard Worker\end_inset
6961*28e138c6SAndroid Build Coastguard Worker
6962*28e138c6SAndroid Build Coastguard Worker
6963*28e138c6SAndroid Build Coastguard Worker\begin_inset Graphics
6964*28e138c6SAndroid Build Coastguard Worker	filename ref_shaping.eps
6965*28e138c6SAndroid Build Coastguard Worker	width 45page%
6966*28e138c6SAndroid Build Coastguard Worker	keepAspectRatio
6967*28e138c6SAndroid Build Coastguard Worker
6968*28e138c6SAndroid Build Coastguard Worker\end_inset
6969*28e138c6SAndroid Build Coastguard Worker
6970*28e138c6SAndroid Build Coastguard Worker
6971*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
6972*28e138c6SAndroid Build Coastguard Workerstatus collapsed
6973*28e138c6SAndroid Build Coastguard Worker
6974*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6975*28e138c6SAndroid Build Coastguard Worker
6976*28e138c6SAndroid Build Coastguard Worker
6977*28e138c6SAndroid Build Coastguard Worker\backslash
6978*28e138c6SAndroid Build Coastguard Workerend{center}
6979*28e138c6SAndroid Build Coastguard Worker\end_layout
6980*28e138c6SAndroid Build Coastguard Worker
6981*28e138c6SAndroid Build Coastguard Worker\end_inset
6982*28e138c6SAndroid Build Coastguard Worker
6983*28e138c6SAndroid Build Coastguard Worker
6984*28e138c6SAndroid Build Coastguard Worker\end_layout
6985*28e138c6SAndroid Build Coastguard Worker
6986*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6987*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
6988*28e138c6SAndroid Build Coastguard Worker
6989*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
6990*28e138c6SAndroid Build Coastguard WorkerStandard noise shaping in CELP.
6991*28e138c6SAndroid Build Coastguard Worker Arbitrary y-axis offset.
6992*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
6993*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
6994*28e138c6SAndroid Build Coastguard Workername "cap:Standard-noise-shaping"
6995*28e138c6SAndroid Build Coastguard Worker
6996*28e138c6SAndroid Build Coastguard Worker\end_inset
6997*28e138c6SAndroid Build Coastguard Worker
6998*28e138c6SAndroid Build Coastguard Worker
6999*28e138c6SAndroid Build Coastguard Worker\end_layout
7000*28e138c6SAndroid Build Coastguard Worker
7001*28e138c6SAndroid Build Coastguard Worker\end_inset
7002*28e138c6SAndroid Build Coastguard Worker
7003*28e138c6SAndroid Build Coastguard Worker
7004*28e138c6SAndroid Build Coastguard Worker\end_layout
7005*28e138c6SAndroid Build Coastguard Worker
7006*28e138c6SAndroid Build Coastguard Worker\end_inset
7007*28e138c6SAndroid Build Coastguard Worker
7008*28e138c6SAndroid Build Coastguard Worker
7009*28e138c6SAndroid Build Coastguard Worker\end_layout
7010*28e138c6SAndroid Build Coastguard Worker
7011*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
7012*28e138c6SAndroid Build Coastguard WorkerAnalysis-by-Synthesis
7013*28e138c6SAndroid Build Coastguard Worker\end_layout
7014*28e138c6SAndroid Build Coastguard Worker
7015*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
7016*28e138c6SAndroid Build Coastguard WorkerOne of the main principles behind CELP is called Analysis-by-Synthesis (AbS),
7017*28e138c6SAndroid Build Coastguard Worker meaning that the encoding (analysis) is performed by perceptually optimising
7018*28e138c6SAndroid Build Coastguard Worker the decoded (synthesis) signal in a closed loop.
7019*28e138c6SAndroid Build Coastguard Worker In theory, the best CELP stream would be produced by trying all possible
7020*28e138c6SAndroid Build Coastguard Worker bit combinations and selecting the one that produces the best-sounding
7021*28e138c6SAndroid Build Coastguard Worker decoded signal.
7022*28e138c6SAndroid Build Coastguard Worker This is obviously not possible in practice for two reasons: the required
7023*28e138c6SAndroid Build Coastguard Worker complexity is beyond any currently available hardware and the
7024*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
7025*28e138c6SAndroid Build Coastguard Worker\end_inset
7026*28e138c6SAndroid Build Coastguard Worker
7027*28e138c6SAndroid Build Coastguard Workerbest sounding
7028*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
7029*28e138c6SAndroid Build Coastguard Worker\end_inset
7030*28e138c6SAndroid Build Coastguard Worker
7031*28e138c6SAndroid Build Coastguard Worker selection criterion implies a human listener.
7032*28e138c6SAndroid Build Coastguard Worker
7033*28e138c6SAndroid Build Coastguard Worker\end_layout
7034*28e138c6SAndroid Build Coastguard Worker
7035*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
7036*28e138c6SAndroid Build Coastguard WorkerIn order to achieve real-time encoding using limited computing resources,
7037*28e138c6SAndroid Build Coastguard Worker the CELP optimisation is broken down into smaller, more manageable, sequential
7038*28e138c6SAndroid Build Coastguard Worker searches using the perceptual weighting function described earlier.
7039*28e138c6SAndroid Build Coastguard Worker\end_layout
7040*28e138c6SAndroid Build Coastguard Worker
7041*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
7042*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
7043*28e138c6SAndroid Build Coastguard Worker\end_inset
7044*28e138c6SAndroid Build Coastguard Worker
7045*28e138c6SAndroid Build Coastguard Worker
7046*28e138c6SAndroid Build Coastguard Worker\end_layout
7047*28e138c6SAndroid Build Coastguard Worker
7048*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
7049*28e138c6SAndroid Build Coastguard WorkerThe Speex Decoder Specification
7050*28e138c6SAndroid Build Coastguard Worker\end_layout
7051*28e138c6SAndroid Build Coastguard Worker
7052*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
7053*28e138c6SAndroid Build Coastguard WorkerNarrowband decoder
7054*28e138c6SAndroid Build Coastguard Worker\end_layout
7055*28e138c6SAndroid Build Coastguard Worker
7056*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
7057*28e138c6SAndroid Build Coastguard Worker<Insert decoder figure here>
7058*28e138c6SAndroid Build Coastguard Worker\end_layout
7059*28e138c6SAndroid Build Coastguard Worker
7060*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
7061*28e138c6SAndroid Build Coastguard WorkerNarrowband modes
7062*28e138c6SAndroid Build Coastguard Worker\end_layout
7063*28e138c6SAndroid Build Coastguard Worker
7064*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
7065*28e138c6SAndroid Build Coastguard WorkerThere are 7 different narrowband bit-rates defined for Speex, ranging from
7066*28e138c6SAndroid Build Coastguard Worker 250 bps to 24.6 kbps, although the modes below 5.9 kbps should not be used
7067*28e138c6SAndroid Build Coastguard Worker for speech.
7068*28e138c6SAndroid Build Coastguard Worker The bit-allocation for each mode is detailed in table
7069*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
7070*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
7071*28e138c6SAndroid Build Coastguard Workerreference "cap:bits-narrowband"
7072*28e138c6SAndroid Build Coastguard Worker
7073*28e138c6SAndroid Build Coastguard Worker\end_inset
7074*28e138c6SAndroid Build Coastguard Worker
7075*28e138c6SAndroid Build Coastguard Worker.
7076*28e138c6SAndroid Build Coastguard Worker Each frame starts with the mode ID encoded with 4 bits which allows a range
7077*28e138c6SAndroid Build Coastguard Worker from 0 to 15, though only the first 7 values are used (the others are reserved).
7078*28e138c6SAndroid Build Coastguard Worker The parameters are listed in the table in the order they are packed in
7079*28e138c6SAndroid Build Coastguard Worker the bit-stream.
7080*28e138c6SAndroid Build Coastguard Worker All frame-based parameters are packed before sub-frame parameters.
7081*28e138c6SAndroid Build Coastguard Worker The parameters for a certain sub-frame are all packed before the following
7082*28e138c6SAndroid Build Coastguard Worker sub-frame is packed.
7083*28e138c6SAndroid Build Coastguard Worker The
7084*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
7085*28e138c6SAndroid Build Coastguard Worker\end_inset
7086*28e138c6SAndroid Build Coastguard Worker
7087*28e138c6SAndroid Build Coastguard WorkerOL
7088*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
7089*28e138c6SAndroid Build Coastguard Worker\end_inset
7090*28e138c6SAndroid Build Coastguard Worker
7091*28e138c6SAndroid Build Coastguard Worker in the parameter description means that the parameter is an open loop estimatio
7092*28e138c6SAndroid Build Coastguard Workern based on the whole frame.
7093*28e138c6SAndroid Build Coastguard Worker\end_layout
7094*28e138c6SAndroid Build Coastguard Worker
7095*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
7096*28e138c6SAndroid Build Coastguard Worker\begin_inset Float table
7097*28e138c6SAndroid Build Coastguard Workerplacement h
7098*28e138c6SAndroid Build Coastguard Workerwide true
7099*28e138c6SAndroid Build Coastguard Workersideways false
7100*28e138c6SAndroid Build Coastguard Workerstatus open
7101*28e138c6SAndroid Build Coastguard Worker
7102*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7103*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
7104*28e138c6SAndroid Build Coastguard Workerstatus collapsed
7105*28e138c6SAndroid Build Coastguard Worker
7106*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7107*28e138c6SAndroid Build Coastguard Worker
7108*28e138c6SAndroid Build Coastguard Worker
7109*28e138c6SAndroid Build Coastguard Worker\backslash
7110*28e138c6SAndroid Build Coastguard Workerbegin{center}
7111*28e138c6SAndroid Build Coastguard Worker\end_layout
7112*28e138c6SAndroid Build Coastguard Worker
7113*28e138c6SAndroid Build Coastguard Worker\end_inset
7114*28e138c6SAndroid Build Coastguard Worker
7115*28e138c6SAndroid Build Coastguard Worker
7116*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
7117*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="12" columns="11">
7118*28e138c6SAndroid Build Coastguard Worker<features>
7119*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7120*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7121*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7122*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7123*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7124*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7125*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7126*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7127*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7128*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7129*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
7130*28e138c6SAndroid Build Coastguard Worker<row>
7131*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7132*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7133*28e138c6SAndroid Build Coastguard Worker
7134*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7135*28e138c6SAndroid Build Coastguard WorkerParameter
7136*28e138c6SAndroid Build Coastguard Worker\end_layout
7137*28e138c6SAndroid Build Coastguard Worker
7138*28e138c6SAndroid Build Coastguard Worker\end_inset
7139*28e138c6SAndroid Build Coastguard Worker</cell>
7140*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7141*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7142*28e138c6SAndroid Build Coastguard Worker
7143*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7144*28e138c6SAndroid Build Coastguard WorkerUpdate rate
7145*28e138c6SAndroid Build Coastguard Worker\end_layout
7146*28e138c6SAndroid Build Coastguard Worker
7147*28e138c6SAndroid Build Coastguard Worker\end_inset
7148*28e138c6SAndroid Build Coastguard Worker</cell>
7149*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7150*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7151*28e138c6SAndroid Build Coastguard Worker
7152*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7153*28e138c6SAndroid Build Coastguard Worker0
7154*28e138c6SAndroid Build Coastguard Worker\end_layout
7155*28e138c6SAndroid Build Coastguard Worker
7156*28e138c6SAndroid Build Coastguard Worker\end_inset
7157*28e138c6SAndroid Build Coastguard Worker</cell>
7158*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7159*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7160*28e138c6SAndroid Build Coastguard Worker
7161*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7162*28e138c6SAndroid Build Coastguard Worker1
7163*28e138c6SAndroid Build Coastguard Worker\end_layout
7164*28e138c6SAndroid Build Coastguard Worker
7165*28e138c6SAndroid Build Coastguard Worker\end_inset
7166*28e138c6SAndroid Build Coastguard Worker</cell>
7167*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7168*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7169*28e138c6SAndroid Build Coastguard Worker
7170*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7171*28e138c6SAndroid Build Coastguard Worker2
7172*28e138c6SAndroid Build Coastguard Worker\end_layout
7173*28e138c6SAndroid Build Coastguard Worker
7174*28e138c6SAndroid Build Coastguard Worker\end_inset
7175*28e138c6SAndroid Build Coastguard Worker</cell>
7176*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7177*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7178*28e138c6SAndroid Build Coastguard Worker
7179*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7180*28e138c6SAndroid Build Coastguard Worker3
7181*28e138c6SAndroid Build Coastguard Worker\end_layout
7182*28e138c6SAndroid Build Coastguard Worker
7183*28e138c6SAndroid Build Coastguard Worker\end_inset
7184*28e138c6SAndroid Build Coastguard Worker</cell>
7185*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7186*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7187*28e138c6SAndroid Build Coastguard Worker
7188*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7189*28e138c6SAndroid Build Coastguard Worker4
7190*28e138c6SAndroid Build Coastguard Worker\end_layout
7191*28e138c6SAndroid Build Coastguard Worker
7192*28e138c6SAndroid Build Coastguard Worker\end_inset
7193*28e138c6SAndroid Build Coastguard Worker</cell>
7194*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7195*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7196*28e138c6SAndroid Build Coastguard Worker
7197*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7198*28e138c6SAndroid Build Coastguard Worker5
7199*28e138c6SAndroid Build Coastguard Worker\end_layout
7200*28e138c6SAndroid Build Coastguard Worker
7201*28e138c6SAndroid Build Coastguard Worker\end_inset
7202*28e138c6SAndroid Build Coastguard Worker</cell>
7203*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7204*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7205*28e138c6SAndroid Build Coastguard Worker
7206*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7207*28e138c6SAndroid Build Coastguard Worker6
7208*28e138c6SAndroid Build Coastguard Worker\end_layout
7209*28e138c6SAndroid Build Coastguard Worker
7210*28e138c6SAndroid Build Coastguard Worker\end_inset
7211*28e138c6SAndroid Build Coastguard Worker</cell>
7212*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
7213*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7214*28e138c6SAndroid Build Coastguard Worker
7215*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7216*28e138c6SAndroid Build Coastguard Worker7
7217*28e138c6SAndroid Build Coastguard Worker\end_layout
7218*28e138c6SAndroid Build Coastguard Worker
7219*28e138c6SAndroid Build Coastguard Worker\end_inset
7220*28e138c6SAndroid Build Coastguard Worker</cell>
7221*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
7222*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7223*28e138c6SAndroid Build Coastguard Worker
7224*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7225*28e138c6SAndroid Build Coastguard Worker8
7226*28e138c6SAndroid Build Coastguard Worker\end_layout
7227*28e138c6SAndroid Build Coastguard Worker
7228*28e138c6SAndroid Build Coastguard Worker\end_inset
7229*28e138c6SAndroid Build Coastguard Worker</cell>
7230*28e138c6SAndroid Build Coastguard Worker</row>
7231*28e138c6SAndroid Build Coastguard Worker<row>
7232*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7233*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7234*28e138c6SAndroid Build Coastguard Worker
7235*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7236*28e138c6SAndroid Build Coastguard WorkerWideband bit
7237*28e138c6SAndroid Build Coastguard Worker\end_layout
7238*28e138c6SAndroid Build Coastguard Worker
7239*28e138c6SAndroid Build Coastguard Worker\end_inset
7240*28e138c6SAndroid Build Coastguard Worker</cell>
7241*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7242*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7243*28e138c6SAndroid Build Coastguard Worker
7244*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7245*28e138c6SAndroid Build Coastguard Workerframe
7246*28e138c6SAndroid Build Coastguard Worker\end_layout
7247*28e138c6SAndroid Build Coastguard Worker
7248*28e138c6SAndroid Build Coastguard Worker\end_inset
7249*28e138c6SAndroid Build Coastguard Worker</cell>
7250*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7251*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7252*28e138c6SAndroid Build Coastguard Worker
7253*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7254*28e138c6SAndroid Build Coastguard Worker1
7255*28e138c6SAndroid Build Coastguard Worker\end_layout
7256*28e138c6SAndroid Build Coastguard Worker
7257*28e138c6SAndroid Build Coastguard Worker\end_inset
7258*28e138c6SAndroid Build Coastguard Worker</cell>
7259*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7260*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7261*28e138c6SAndroid Build Coastguard Worker
7262*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7263*28e138c6SAndroid Build Coastguard Worker1
7264*28e138c6SAndroid Build Coastguard Worker\end_layout
7265*28e138c6SAndroid Build Coastguard Worker
7266*28e138c6SAndroid Build Coastguard Worker\end_inset
7267*28e138c6SAndroid Build Coastguard Worker</cell>
7268*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7269*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7270*28e138c6SAndroid Build Coastguard Worker
7271*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7272*28e138c6SAndroid Build Coastguard Worker1
7273*28e138c6SAndroid Build Coastguard Worker\end_layout
7274*28e138c6SAndroid Build Coastguard Worker
7275*28e138c6SAndroid Build Coastguard Worker\end_inset
7276*28e138c6SAndroid Build Coastguard Worker</cell>
7277*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7278*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7279*28e138c6SAndroid Build Coastguard Worker
7280*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7281*28e138c6SAndroid Build Coastguard Worker1
7282*28e138c6SAndroid Build Coastguard Worker\end_layout
7283*28e138c6SAndroid Build Coastguard Worker
7284*28e138c6SAndroid Build Coastguard Worker\end_inset
7285*28e138c6SAndroid Build Coastguard Worker</cell>
7286*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7287*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7288*28e138c6SAndroid Build Coastguard Worker
7289*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7290*28e138c6SAndroid Build Coastguard Worker1
7291*28e138c6SAndroid Build Coastguard Worker\end_layout
7292*28e138c6SAndroid Build Coastguard Worker
7293*28e138c6SAndroid Build Coastguard Worker\end_inset
7294*28e138c6SAndroid Build Coastguard Worker</cell>
7295*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7296*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7297*28e138c6SAndroid Build Coastguard Worker
7298*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7299*28e138c6SAndroid Build Coastguard Worker1
7300*28e138c6SAndroid Build Coastguard Worker\end_layout
7301*28e138c6SAndroid Build Coastguard Worker
7302*28e138c6SAndroid Build Coastguard Worker\end_inset
7303*28e138c6SAndroid Build Coastguard Worker</cell>
7304*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7305*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7306*28e138c6SAndroid Build Coastguard Worker
7307*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7308*28e138c6SAndroid Build Coastguard Worker1
7309*28e138c6SAndroid Build Coastguard Worker\end_layout
7310*28e138c6SAndroid Build Coastguard Worker
7311*28e138c6SAndroid Build Coastguard Worker\end_inset
7312*28e138c6SAndroid Build Coastguard Worker</cell>
7313*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7314*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7315*28e138c6SAndroid Build Coastguard Worker
7316*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7317*28e138c6SAndroid Build Coastguard Worker1
7318*28e138c6SAndroid Build Coastguard Worker\end_layout
7319*28e138c6SAndroid Build Coastguard Worker
7320*28e138c6SAndroid Build Coastguard Worker\end_inset
7321*28e138c6SAndroid Build Coastguard Worker</cell>
7322*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7323*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7324*28e138c6SAndroid Build Coastguard Worker
7325*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7326*28e138c6SAndroid Build Coastguard Worker1
7327*28e138c6SAndroid Build Coastguard Worker\end_layout
7328*28e138c6SAndroid Build Coastguard Worker
7329*28e138c6SAndroid Build Coastguard Worker\end_inset
7330*28e138c6SAndroid Build Coastguard Worker</cell>
7331*28e138c6SAndroid Build Coastguard Worker</row>
7332*28e138c6SAndroid Build Coastguard Worker<row>
7333*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7334*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7335*28e138c6SAndroid Build Coastguard Worker
7336*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7337*28e138c6SAndroid Build Coastguard WorkerMode ID
7338*28e138c6SAndroid Build Coastguard Worker\end_layout
7339*28e138c6SAndroid Build Coastguard Worker
7340*28e138c6SAndroid Build Coastguard Worker\end_inset
7341*28e138c6SAndroid Build Coastguard Worker</cell>
7342*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7343*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7344*28e138c6SAndroid Build Coastguard Worker
7345*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7346*28e138c6SAndroid Build Coastguard Workerframe
7347*28e138c6SAndroid Build Coastguard Worker\end_layout
7348*28e138c6SAndroid Build Coastguard Worker
7349*28e138c6SAndroid Build Coastguard Worker\end_inset
7350*28e138c6SAndroid Build Coastguard Worker</cell>
7351*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7352*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7353*28e138c6SAndroid Build Coastguard Worker
7354*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7355*28e138c6SAndroid Build Coastguard Worker4
7356*28e138c6SAndroid Build Coastguard Worker\end_layout
7357*28e138c6SAndroid Build Coastguard Worker
7358*28e138c6SAndroid Build Coastguard Worker\end_inset
7359*28e138c6SAndroid Build Coastguard Worker</cell>
7360*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7361*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7362*28e138c6SAndroid Build Coastguard Worker
7363*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7364*28e138c6SAndroid Build Coastguard Worker4
7365*28e138c6SAndroid Build Coastguard Worker\end_layout
7366*28e138c6SAndroid Build Coastguard Worker
7367*28e138c6SAndroid Build Coastguard Worker\end_inset
7368*28e138c6SAndroid Build Coastguard Worker</cell>
7369*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7370*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7371*28e138c6SAndroid Build Coastguard Worker
7372*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7373*28e138c6SAndroid Build Coastguard Worker4
7374*28e138c6SAndroid Build Coastguard Worker\end_layout
7375*28e138c6SAndroid Build Coastguard Worker
7376*28e138c6SAndroid Build Coastguard Worker\end_inset
7377*28e138c6SAndroid Build Coastguard Worker</cell>
7378*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7379*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7380*28e138c6SAndroid Build Coastguard Worker
7381*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7382*28e138c6SAndroid Build Coastguard Worker4
7383*28e138c6SAndroid Build Coastguard Worker\end_layout
7384*28e138c6SAndroid Build Coastguard Worker
7385*28e138c6SAndroid Build Coastguard Worker\end_inset
7386*28e138c6SAndroid Build Coastguard Worker</cell>
7387*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7388*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7389*28e138c6SAndroid Build Coastguard Worker
7390*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7391*28e138c6SAndroid Build Coastguard Worker4
7392*28e138c6SAndroid Build Coastguard Worker\end_layout
7393*28e138c6SAndroid Build Coastguard Worker
7394*28e138c6SAndroid Build Coastguard Worker\end_inset
7395*28e138c6SAndroid Build Coastguard Worker</cell>
7396*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7397*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7398*28e138c6SAndroid Build Coastguard Worker
7399*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7400*28e138c6SAndroid Build Coastguard Worker4
7401*28e138c6SAndroid Build Coastguard Worker\end_layout
7402*28e138c6SAndroid Build Coastguard Worker
7403*28e138c6SAndroid Build Coastguard Worker\end_inset
7404*28e138c6SAndroid Build Coastguard Worker</cell>
7405*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7406*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7407*28e138c6SAndroid Build Coastguard Worker
7408*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7409*28e138c6SAndroid Build Coastguard Worker4
7410*28e138c6SAndroid Build Coastguard Worker\end_layout
7411*28e138c6SAndroid Build Coastguard Worker
7412*28e138c6SAndroid Build Coastguard Worker\end_inset
7413*28e138c6SAndroid Build Coastguard Worker</cell>
7414*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7415*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7416*28e138c6SAndroid Build Coastguard Worker
7417*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7418*28e138c6SAndroid Build Coastguard Worker4
7419*28e138c6SAndroid Build Coastguard Worker\end_layout
7420*28e138c6SAndroid Build Coastguard Worker
7421*28e138c6SAndroid Build Coastguard Worker\end_inset
7422*28e138c6SAndroid Build Coastguard Worker</cell>
7423*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7424*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7425*28e138c6SAndroid Build Coastguard Worker
7426*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7427*28e138c6SAndroid Build Coastguard Worker4
7428*28e138c6SAndroid Build Coastguard Worker\end_layout
7429*28e138c6SAndroid Build Coastguard Worker
7430*28e138c6SAndroid Build Coastguard Worker\end_inset
7431*28e138c6SAndroid Build Coastguard Worker</cell>
7432*28e138c6SAndroid Build Coastguard Worker</row>
7433*28e138c6SAndroid Build Coastguard Worker<row>
7434*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7435*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7436*28e138c6SAndroid Build Coastguard Worker
7437*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7438*28e138c6SAndroid Build Coastguard WorkerLSP
7439*28e138c6SAndroid Build Coastguard Worker\end_layout
7440*28e138c6SAndroid Build Coastguard Worker
7441*28e138c6SAndroid Build Coastguard Worker\end_inset
7442*28e138c6SAndroid Build Coastguard Worker</cell>
7443*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7444*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7445*28e138c6SAndroid Build Coastguard Worker
7446*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7447*28e138c6SAndroid Build Coastguard Workerframe
7448*28e138c6SAndroid Build Coastguard Worker\end_layout
7449*28e138c6SAndroid Build Coastguard Worker
7450*28e138c6SAndroid Build Coastguard Worker\end_inset
7451*28e138c6SAndroid Build Coastguard Worker</cell>
7452*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7453*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7454*28e138c6SAndroid Build Coastguard Worker
7455*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7456*28e138c6SAndroid Build Coastguard Worker0
7457*28e138c6SAndroid Build Coastguard Worker\end_layout
7458*28e138c6SAndroid Build Coastguard Worker
7459*28e138c6SAndroid Build Coastguard Worker\end_inset
7460*28e138c6SAndroid Build Coastguard Worker</cell>
7461*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7462*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7463*28e138c6SAndroid Build Coastguard Worker
7464*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7465*28e138c6SAndroid Build Coastguard Worker18
7466*28e138c6SAndroid Build Coastguard Worker\end_layout
7467*28e138c6SAndroid Build Coastguard Worker
7468*28e138c6SAndroid Build Coastguard Worker\end_inset
7469*28e138c6SAndroid Build Coastguard Worker</cell>
7470*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7471*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7472*28e138c6SAndroid Build Coastguard Worker
7473*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7474*28e138c6SAndroid Build Coastguard Worker18
7475*28e138c6SAndroid Build Coastguard Worker\end_layout
7476*28e138c6SAndroid Build Coastguard Worker
7477*28e138c6SAndroid Build Coastguard Worker\end_inset
7478*28e138c6SAndroid Build Coastguard Worker</cell>
7479*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7480*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7481*28e138c6SAndroid Build Coastguard Worker
7482*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7483*28e138c6SAndroid Build Coastguard Worker18
7484*28e138c6SAndroid Build Coastguard Worker\end_layout
7485*28e138c6SAndroid Build Coastguard Worker
7486*28e138c6SAndroid Build Coastguard Worker\end_inset
7487*28e138c6SAndroid Build Coastguard Worker</cell>
7488*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7489*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7490*28e138c6SAndroid Build Coastguard Worker
7491*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7492*28e138c6SAndroid Build Coastguard Worker18
7493*28e138c6SAndroid Build Coastguard Worker\end_layout
7494*28e138c6SAndroid Build Coastguard Worker
7495*28e138c6SAndroid Build Coastguard Worker\end_inset
7496*28e138c6SAndroid Build Coastguard Worker</cell>
7497*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7498*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7499*28e138c6SAndroid Build Coastguard Worker
7500*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7501*28e138c6SAndroid Build Coastguard Worker30
7502*28e138c6SAndroid Build Coastguard Worker\end_layout
7503*28e138c6SAndroid Build Coastguard Worker
7504*28e138c6SAndroid Build Coastguard Worker\end_inset
7505*28e138c6SAndroid Build Coastguard Worker</cell>
7506*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7507*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7508*28e138c6SAndroid Build Coastguard Worker
7509*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7510*28e138c6SAndroid Build Coastguard Worker30
7511*28e138c6SAndroid Build Coastguard Worker\end_layout
7512*28e138c6SAndroid Build Coastguard Worker
7513*28e138c6SAndroid Build Coastguard Worker\end_inset
7514*28e138c6SAndroid Build Coastguard Worker</cell>
7515*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7516*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7517*28e138c6SAndroid Build Coastguard Worker
7518*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7519*28e138c6SAndroid Build Coastguard Worker30
7520*28e138c6SAndroid Build Coastguard Worker\end_layout
7521*28e138c6SAndroid Build Coastguard Worker
7522*28e138c6SAndroid Build Coastguard Worker\end_inset
7523*28e138c6SAndroid Build Coastguard Worker</cell>
7524*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7525*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7526*28e138c6SAndroid Build Coastguard Worker
7527*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7528*28e138c6SAndroid Build Coastguard Worker18
7529*28e138c6SAndroid Build Coastguard Worker\end_layout
7530*28e138c6SAndroid Build Coastguard Worker
7531*28e138c6SAndroid Build Coastguard Worker\end_inset
7532*28e138c6SAndroid Build Coastguard Worker</cell>
7533*28e138c6SAndroid Build Coastguard Worker</row>
7534*28e138c6SAndroid Build Coastguard Worker<row>
7535*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7536*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7537*28e138c6SAndroid Build Coastguard Worker
7538*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7539*28e138c6SAndroid Build Coastguard WorkerOL pitch
7540*28e138c6SAndroid Build Coastguard Worker\end_layout
7541*28e138c6SAndroid Build Coastguard Worker
7542*28e138c6SAndroid Build Coastguard Worker\end_inset
7543*28e138c6SAndroid Build Coastguard Worker</cell>
7544*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7545*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7546*28e138c6SAndroid Build Coastguard Worker
7547*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7548*28e138c6SAndroid Build Coastguard Workerframe
7549*28e138c6SAndroid Build Coastguard Worker\end_layout
7550*28e138c6SAndroid Build Coastguard Worker
7551*28e138c6SAndroid Build Coastguard Worker\end_inset
7552*28e138c6SAndroid Build Coastguard Worker</cell>
7553*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7554*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7555*28e138c6SAndroid Build Coastguard Worker
7556*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7557*28e138c6SAndroid Build Coastguard Worker0
7558*28e138c6SAndroid Build Coastguard Worker\end_layout
7559*28e138c6SAndroid Build Coastguard Worker
7560*28e138c6SAndroid Build Coastguard Worker\end_inset
7561*28e138c6SAndroid Build Coastguard Worker</cell>
7562*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7563*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7564*28e138c6SAndroid Build Coastguard Worker
7565*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7566*28e138c6SAndroid Build Coastguard Worker7
7567*28e138c6SAndroid Build Coastguard Worker\end_layout
7568*28e138c6SAndroid Build Coastguard Worker
7569*28e138c6SAndroid Build Coastguard Worker\end_inset
7570*28e138c6SAndroid Build Coastguard Worker</cell>
7571*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7572*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7573*28e138c6SAndroid Build Coastguard Worker
7574*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7575*28e138c6SAndroid Build Coastguard Worker7
7576*28e138c6SAndroid Build Coastguard Worker\end_layout
7577*28e138c6SAndroid Build Coastguard Worker
7578*28e138c6SAndroid Build Coastguard Worker\end_inset
7579*28e138c6SAndroid Build Coastguard Worker</cell>
7580*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7581*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7582*28e138c6SAndroid Build Coastguard Worker
7583*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7584*28e138c6SAndroid Build Coastguard Worker0
7585*28e138c6SAndroid Build Coastguard Worker\end_layout
7586*28e138c6SAndroid Build Coastguard Worker
7587*28e138c6SAndroid Build Coastguard Worker\end_inset
7588*28e138c6SAndroid Build Coastguard Worker</cell>
7589*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7590*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7591*28e138c6SAndroid Build Coastguard Worker
7592*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7593*28e138c6SAndroid Build Coastguard Worker0
7594*28e138c6SAndroid Build Coastguard Worker\end_layout
7595*28e138c6SAndroid Build Coastguard Worker
7596*28e138c6SAndroid Build Coastguard Worker\end_inset
7597*28e138c6SAndroid Build Coastguard Worker</cell>
7598*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7599*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7600*28e138c6SAndroid Build Coastguard Worker
7601*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7602*28e138c6SAndroid Build Coastguard Worker0
7603*28e138c6SAndroid Build Coastguard Worker\end_layout
7604*28e138c6SAndroid Build Coastguard Worker
7605*28e138c6SAndroid Build Coastguard Worker\end_inset
7606*28e138c6SAndroid Build Coastguard Worker</cell>
7607*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7608*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7609*28e138c6SAndroid Build Coastguard Worker
7610*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7611*28e138c6SAndroid Build Coastguard Worker0
7612*28e138c6SAndroid Build Coastguard Worker\end_layout
7613*28e138c6SAndroid Build Coastguard Worker
7614*28e138c6SAndroid Build Coastguard Worker\end_inset
7615*28e138c6SAndroid Build Coastguard Worker</cell>
7616*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7617*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7618*28e138c6SAndroid Build Coastguard Worker
7619*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7620*28e138c6SAndroid Build Coastguard Worker0
7621*28e138c6SAndroid Build Coastguard Worker\end_layout
7622*28e138c6SAndroid Build Coastguard Worker
7623*28e138c6SAndroid Build Coastguard Worker\end_inset
7624*28e138c6SAndroid Build Coastguard Worker</cell>
7625*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7626*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7627*28e138c6SAndroid Build Coastguard Worker
7628*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7629*28e138c6SAndroid Build Coastguard Worker7
7630*28e138c6SAndroid Build Coastguard Worker\end_layout
7631*28e138c6SAndroid Build Coastguard Worker
7632*28e138c6SAndroid Build Coastguard Worker\end_inset
7633*28e138c6SAndroid Build Coastguard Worker</cell>
7634*28e138c6SAndroid Build Coastguard Worker</row>
7635*28e138c6SAndroid Build Coastguard Worker<row>
7636*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7637*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7638*28e138c6SAndroid Build Coastguard Worker
7639*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7640*28e138c6SAndroid Build Coastguard WorkerOL pitch gain
7641*28e138c6SAndroid Build Coastguard Worker\end_layout
7642*28e138c6SAndroid Build Coastguard Worker
7643*28e138c6SAndroid Build Coastguard Worker\end_inset
7644*28e138c6SAndroid Build Coastguard Worker</cell>
7645*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7646*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7647*28e138c6SAndroid Build Coastguard Worker
7648*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7649*28e138c6SAndroid Build Coastguard Workerframe
7650*28e138c6SAndroid Build Coastguard Worker\end_layout
7651*28e138c6SAndroid Build Coastguard Worker
7652*28e138c6SAndroid Build Coastguard Worker\end_inset
7653*28e138c6SAndroid Build Coastguard Worker</cell>
7654*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7655*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7656*28e138c6SAndroid Build Coastguard Worker
7657*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7658*28e138c6SAndroid Build Coastguard Worker0
7659*28e138c6SAndroid Build Coastguard Worker\end_layout
7660*28e138c6SAndroid Build Coastguard Worker
7661*28e138c6SAndroid Build Coastguard Worker\end_inset
7662*28e138c6SAndroid Build Coastguard Worker</cell>
7663*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7664*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7665*28e138c6SAndroid Build Coastguard Worker
7666*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7667*28e138c6SAndroid Build Coastguard Worker4
7668*28e138c6SAndroid Build Coastguard Worker\end_layout
7669*28e138c6SAndroid Build Coastguard Worker
7670*28e138c6SAndroid Build Coastguard Worker\end_inset
7671*28e138c6SAndroid Build Coastguard Worker</cell>
7672*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7673*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7674*28e138c6SAndroid Build Coastguard Worker
7675*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7676*28e138c6SAndroid Build Coastguard Worker0
7677*28e138c6SAndroid Build Coastguard Worker\end_layout
7678*28e138c6SAndroid Build Coastguard Worker
7679*28e138c6SAndroid Build Coastguard Worker\end_inset
7680*28e138c6SAndroid Build Coastguard Worker</cell>
7681*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7682*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7683*28e138c6SAndroid Build Coastguard Worker
7684*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7685*28e138c6SAndroid Build Coastguard Worker0
7686*28e138c6SAndroid Build Coastguard Worker\end_layout
7687*28e138c6SAndroid Build Coastguard Worker
7688*28e138c6SAndroid Build Coastguard Worker\end_inset
7689*28e138c6SAndroid Build Coastguard Worker</cell>
7690*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7691*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7692*28e138c6SAndroid Build Coastguard Worker
7693*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7694*28e138c6SAndroid Build Coastguard Worker0
7695*28e138c6SAndroid Build Coastguard Worker\end_layout
7696*28e138c6SAndroid Build Coastguard Worker
7697*28e138c6SAndroid Build Coastguard Worker\end_inset
7698*28e138c6SAndroid Build Coastguard Worker</cell>
7699*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7700*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7701*28e138c6SAndroid Build Coastguard Worker
7702*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7703*28e138c6SAndroid Build Coastguard Worker0
7704*28e138c6SAndroid Build Coastguard Worker\end_layout
7705*28e138c6SAndroid Build Coastguard Worker
7706*28e138c6SAndroid Build Coastguard Worker\end_inset
7707*28e138c6SAndroid Build Coastguard Worker</cell>
7708*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7709*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7710*28e138c6SAndroid Build Coastguard Worker
7711*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7712*28e138c6SAndroid Build Coastguard Worker0
7713*28e138c6SAndroid Build Coastguard Worker\end_layout
7714*28e138c6SAndroid Build Coastguard Worker
7715*28e138c6SAndroid Build Coastguard Worker\end_inset
7716*28e138c6SAndroid Build Coastguard Worker</cell>
7717*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7718*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7719*28e138c6SAndroid Build Coastguard Worker
7720*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7721*28e138c6SAndroid Build Coastguard Worker0
7722*28e138c6SAndroid Build Coastguard Worker\end_layout
7723*28e138c6SAndroid Build Coastguard Worker
7724*28e138c6SAndroid Build Coastguard Worker\end_inset
7725*28e138c6SAndroid Build Coastguard Worker</cell>
7726*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7727*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7728*28e138c6SAndroid Build Coastguard Worker
7729*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7730*28e138c6SAndroid Build Coastguard Worker4
7731*28e138c6SAndroid Build Coastguard Worker\end_layout
7732*28e138c6SAndroid Build Coastguard Worker
7733*28e138c6SAndroid Build Coastguard Worker\end_inset
7734*28e138c6SAndroid Build Coastguard Worker</cell>
7735*28e138c6SAndroid Build Coastguard Worker</row>
7736*28e138c6SAndroid Build Coastguard Worker<row>
7737*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7738*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7739*28e138c6SAndroid Build Coastguard Worker
7740*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7741*28e138c6SAndroid Build Coastguard WorkerOL Exc gain
7742*28e138c6SAndroid Build Coastguard Worker\end_layout
7743*28e138c6SAndroid Build Coastguard Worker
7744*28e138c6SAndroid Build Coastguard Worker\end_inset
7745*28e138c6SAndroid Build Coastguard Worker</cell>
7746*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7747*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7748*28e138c6SAndroid Build Coastguard Worker
7749*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7750*28e138c6SAndroid Build Coastguard Workerframe
7751*28e138c6SAndroid Build Coastguard Worker\end_layout
7752*28e138c6SAndroid Build Coastguard Worker
7753*28e138c6SAndroid Build Coastguard Worker\end_inset
7754*28e138c6SAndroid Build Coastguard Worker</cell>
7755*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7756*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7757*28e138c6SAndroid Build Coastguard Worker
7758*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7759*28e138c6SAndroid Build Coastguard Worker0
7760*28e138c6SAndroid Build Coastguard Worker\end_layout
7761*28e138c6SAndroid Build Coastguard Worker
7762*28e138c6SAndroid Build Coastguard Worker\end_inset
7763*28e138c6SAndroid Build Coastguard Worker</cell>
7764*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7765*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7766*28e138c6SAndroid Build Coastguard Worker
7767*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7768*28e138c6SAndroid Build Coastguard Worker5
7769*28e138c6SAndroid Build Coastguard Worker\end_layout
7770*28e138c6SAndroid Build Coastguard Worker
7771*28e138c6SAndroid Build Coastguard Worker\end_inset
7772*28e138c6SAndroid Build Coastguard Worker</cell>
7773*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7774*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7775*28e138c6SAndroid Build Coastguard Worker
7776*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7777*28e138c6SAndroid Build Coastguard Worker5
7778*28e138c6SAndroid Build Coastguard Worker\end_layout
7779*28e138c6SAndroid Build Coastguard Worker
7780*28e138c6SAndroid Build Coastguard Worker\end_inset
7781*28e138c6SAndroid Build Coastguard Worker</cell>
7782*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7783*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7784*28e138c6SAndroid Build Coastguard Worker
7785*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7786*28e138c6SAndroid Build Coastguard Worker5
7787*28e138c6SAndroid Build Coastguard Worker\end_layout
7788*28e138c6SAndroid Build Coastguard Worker
7789*28e138c6SAndroid Build Coastguard Worker\end_inset
7790*28e138c6SAndroid Build Coastguard Worker</cell>
7791*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7792*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7793*28e138c6SAndroid Build Coastguard Worker
7794*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7795*28e138c6SAndroid Build Coastguard Worker5
7796*28e138c6SAndroid Build Coastguard Worker\end_layout
7797*28e138c6SAndroid Build Coastguard Worker
7798*28e138c6SAndroid Build Coastguard Worker\end_inset
7799*28e138c6SAndroid Build Coastguard Worker</cell>
7800*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7801*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7802*28e138c6SAndroid Build Coastguard Worker
7803*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7804*28e138c6SAndroid Build Coastguard Worker5
7805*28e138c6SAndroid Build Coastguard Worker\end_layout
7806*28e138c6SAndroid Build Coastguard Worker
7807*28e138c6SAndroid Build Coastguard Worker\end_inset
7808*28e138c6SAndroid Build Coastguard Worker</cell>
7809*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7810*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7811*28e138c6SAndroid Build Coastguard Worker
7812*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7813*28e138c6SAndroid Build Coastguard Worker5
7814*28e138c6SAndroid Build Coastguard Worker\end_layout
7815*28e138c6SAndroid Build Coastguard Worker
7816*28e138c6SAndroid Build Coastguard Worker\end_inset
7817*28e138c6SAndroid Build Coastguard Worker</cell>
7818*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7819*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7820*28e138c6SAndroid Build Coastguard Worker
7821*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7822*28e138c6SAndroid Build Coastguard Worker5
7823*28e138c6SAndroid Build Coastguard Worker\end_layout
7824*28e138c6SAndroid Build Coastguard Worker
7825*28e138c6SAndroid Build Coastguard Worker\end_inset
7826*28e138c6SAndroid Build Coastguard Worker</cell>
7827*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7828*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7829*28e138c6SAndroid Build Coastguard Worker
7830*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7831*28e138c6SAndroid Build Coastguard Worker5
7832*28e138c6SAndroid Build Coastguard Worker\end_layout
7833*28e138c6SAndroid Build Coastguard Worker
7834*28e138c6SAndroid Build Coastguard Worker\end_inset
7835*28e138c6SAndroid Build Coastguard Worker</cell>
7836*28e138c6SAndroid Build Coastguard Worker</row>
7837*28e138c6SAndroid Build Coastguard Worker<row>
7838*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7839*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7840*28e138c6SAndroid Build Coastguard Worker
7841*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7842*28e138c6SAndroid Build Coastguard WorkerFine pitch
7843*28e138c6SAndroid Build Coastguard Worker\end_layout
7844*28e138c6SAndroid Build Coastguard Worker
7845*28e138c6SAndroid Build Coastguard Worker\end_inset
7846*28e138c6SAndroid Build Coastguard Worker</cell>
7847*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7848*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7849*28e138c6SAndroid Build Coastguard Worker
7850*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7851*28e138c6SAndroid Build Coastguard Workersub-frame
7852*28e138c6SAndroid Build Coastguard Worker\end_layout
7853*28e138c6SAndroid Build Coastguard Worker
7854*28e138c6SAndroid Build Coastguard Worker\end_inset
7855*28e138c6SAndroid Build Coastguard Worker</cell>
7856*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7857*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7858*28e138c6SAndroid Build Coastguard Worker
7859*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7860*28e138c6SAndroid Build Coastguard Worker0
7861*28e138c6SAndroid Build Coastguard Worker\end_layout
7862*28e138c6SAndroid Build Coastguard Worker
7863*28e138c6SAndroid Build Coastguard Worker\end_inset
7864*28e138c6SAndroid Build Coastguard Worker</cell>
7865*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7866*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7867*28e138c6SAndroid Build Coastguard Worker
7868*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7869*28e138c6SAndroid Build Coastguard Worker0
7870*28e138c6SAndroid Build Coastguard Worker\end_layout
7871*28e138c6SAndroid Build Coastguard Worker
7872*28e138c6SAndroid Build Coastguard Worker\end_inset
7873*28e138c6SAndroid Build Coastguard Worker</cell>
7874*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7875*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7876*28e138c6SAndroid Build Coastguard Worker
7877*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7878*28e138c6SAndroid Build Coastguard Worker0
7879*28e138c6SAndroid Build Coastguard Worker\end_layout
7880*28e138c6SAndroid Build Coastguard Worker
7881*28e138c6SAndroid Build Coastguard Worker\end_inset
7882*28e138c6SAndroid Build Coastguard Worker</cell>
7883*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7884*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7885*28e138c6SAndroid Build Coastguard Worker
7886*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7887*28e138c6SAndroid Build Coastguard Worker7
7888*28e138c6SAndroid Build Coastguard Worker\end_layout
7889*28e138c6SAndroid Build Coastguard Worker
7890*28e138c6SAndroid Build Coastguard Worker\end_inset
7891*28e138c6SAndroid Build Coastguard Worker</cell>
7892*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7893*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7894*28e138c6SAndroid Build Coastguard Worker
7895*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7896*28e138c6SAndroid Build Coastguard Worker7
7897*28e138c6SAndroid Build Coastguard Worker\end_layout
7898*28e138c6SAndroid Build Coastguard Worker
7899*28e138c6SAndroid Build Coastguard Worker\end_inset
7900*28e138c6SAndroid Build Coastguard Worker</cell>
7901*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7902*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7903*28e138c6SAndroid Build Coastguard Worker
7904*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7905*28e138c6SAndroid Build Coastguard Worker7
7906*28e138c6SAndroid Build Coastguard Worker\end_layout
7907*28e138c6SAndroid Build Coastguard Worker
7908*28e138c6SAndroid Build Coastguard Worker\end_inset
7909*28e138c6SAndroid Build Coastguard Worker</cell>
7910*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7911*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7912*28e138c6SAndroid Build Coastguard Worker
7913*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7914*28e138c6SAndroid Build Coastguard Worker7
7915*28e138c6SAndroid Build Coastguard Worker\end_layout
7916*28e138c6SAndroid Build Coastguard Worker
7917*28e138c6SAndroid Build Coastguard Worker\end_inset
7918*28e138c6SAndroid Build Coastguard Worker</cell>
7919*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7920*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7921*28e138c6SAndroid Build Coastguard Worker
7922*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7923*28e138c6SAndroid Build Coastguard Worker7
7924*28e138c6SAndroid Build Coastguard Worker\end_layout
7925*28e138c6SAndroid Build Coastguard Worker
7926*28e138c6SAndroid Build Coastguard Worker\end_inset
7927*28e138c6SAndroid Build Coastguard Worker</cell>
7928*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
7929*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7930*28e138c6SAndroid Build Coastguard Worker
7931*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7932*28e138c6SAndroid Build Coastguard Worker0
7933*28e138c6SAndroid Build Coastguard Worker\end_layout
7934*28e138c6SAndroid Build Coastguard Worker
7935*28e138c6SAndroid Build Coastguard Worker\end_inset
7936*28e138c6SAndroid Build Coastguard Worker</cell>
7937*28e138c6SAndroid Build Coastguard Worker</row>
7938*28e138c6SAndroid Build Coastguard Worker<row>
7939*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7940*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7941*28e138c6SAndroid Build Coastguard Worker
7942*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7943*28e138c6SAndroid Build Coastguard WorkerPitch gain
7944*28e138c6SAndroid Build Coastguard Worker\end_layout
7945*28e138c6SAndroid Build Coastguard Worker
7946*28e138c6SAndroid Build Coastguard Worker\end_inset
7947*28e138c6SAndroid Build Coastguard Worker</cell>
7948*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7949*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7950*28e138c6SAndroid Build Coastguard Worker
7951*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7952*28e138c6SAndroid Build Coastguard Workersub-frame
7953*28e138c6SAndroid Build Coastguard Worker\end_layout
7954*28e138c6SAndroid Build Coastguard Worker
7955*28e138c6SAndroid Build Coastguard Worker\end_inset
7956*28e138c6SAndroid Build Coastguard Worker</cell>
7957*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7958*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7959*28e138c6SAndroid Build Coastguard Worker
7960*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7961*28e138c6SAndroid Build Coastguard Worker0
7962*28e138c6SAndroid Build Coastguard Worker\end_layout
7963*28e138c6SAndroid Build Coastguard Worker
7964*28e138c6SAndroid Build Coastguard Worker\end_inset
7965*28e138c6SAndroid Build Coastguard Worker</cell>
7966*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7967*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7968*28e138c6SAndroid Build Coastguard Worker
7969*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7970*28e138c6SAndroid Build Coastguard Worker0
7971*28e138c6SAndroid Build Coastguard Worker\end_layout
7972*28e138c6SAndroid Build Coastguard Worker
7973*28e138c6SAndroid Build Coastguard Worker\end_inset
7974*28e138c6SAndroid Build Coastguard Worker</cell>
7975*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7976*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7977*28e138c6SAndroid Build Coastguard Worker
7978*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7979*28e138c6SAndroid Build Coastguard Worker5
7980*28e138c6SAndroid Build Coastguard Worker\end_layout
7981*28e138c6SAndroid Build Coastguard Worker
7982*28e138c6SAndroid Build Coastguard Worker\end_inset
7983*28e138c6SAndroid Build Coastguard Worker</cell>
7984*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7985*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7986*28e138c6SAndroid Build Coastguard Worker
7987*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7988*28e138c6SAndroid Build Coastguard Worker5
7989*28e138c6SAndroid Build Coastguard Worker\end_layout
7990*28e138c6SAndroid Build Coastguard Worker
7991*28e138c6SAndroid Build Coastguard Worker\end_inset
7992*28e138c6SAndroid Build Coastguard Worker</cell>
7993*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
7994*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
7995*28e138c6SAndroid Build Coastguard Worker
7996*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
7997*28e138c6SAndroid Build Coastguard Worker5
7998*28e138c6SAndroid Build Coastguard Worker\end_layout
7999*28e138c6SAndroid Build Coastguard Worker
8000*28e138c6SAndroid Build Coastguard Worker\end_inset
8001*28e138c6SAndroid Build Coastguard Worker</cell>
8002*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8003*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8004*28e138c6SAndroid Build Coastguard Worker
8005*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8006*28e138c6SAndroid Build Coastguard Worker7
8007*28e138c6SAndroid Build Coastguard Worker\end_layout
8008*28e138c6SAndroid Build Coastguard Worker
8009*28e138c6SAndroid Build Coastguard Worker\end_inset
8010*28e138c6SAndroid Build Coastguard Worker</cell>
8011*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8012*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8013*28e138c6SAndroid Build Coastguard Worker
8014*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8015*28e138c6SAndroid Build Coastguard Worker7
8016*28e138c6SAndroid Build Coastguard Worker\end_layout
8017*28e138c6SAndroid Build Coastguard Worker
8018*28e138c6SAndroid Build Coastguard Worker\end_inset
8019*28e138c6SAndroid Build Coastguard Worker</cell>
8020*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8021*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8022*28e138c6SAndroid Build Coastguard Worker
8023*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8024*28e138c6SAndroid Build Coastguard Worker7
8025*28e138c6SAndroid Build Coastguard Worker\end_layout
8026*28e138c6SAndroid Build Coastguard Worker
8027*28e138c6SAndroid Build Coastguard Worker\end_inset
8028*28e138c6SAndroid Build Coastguard Worker</cell>
8029*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
8030*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8031*28e138c6SAndroid Build Coastguard Worker
8032*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8033*28e138c6SAndroid Build Coastguard Worker0
8034*28e138c6SAndroid Build Coastguard Worker\end_layout
8035*28e138c6SAndroid Build Coastguard Worker
8036*28e138c6SAndroid Build Coastguard Worker\end_inset
8037*28e138c6SAndroid Build Coastguard Worker</cell>
8038*28e138c6SAndroid Build Coastguard Worker</row>
8039*28e138c6SAndroid Build Coastguard Worker<row>
8040*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8041*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8042*28e138c6SAndroid Build Coastguard Worker
8043*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8044*28e138c6SAndroid Build Coastguard WorkerInnovation gain
8045*28e138c6SAndroid Build Coastguard Worker\end_layout
8046*28e138c6SAndroid Build Coastguard Worker
8047*28e138c6SAndroid Build Coastguard Worker\end_inset
8048*28e138c6SAndroid Build Coastguard Worker</cell>
8049*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8050*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8051*28e138c6SAndroid Build Coastguard Worker
8052*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8053*28e138c6SAndroid Build Coastguard Workersub-frame
8054*28e138c6SAndroid Build Coastguard Worker\end_layout
8055*28e138c6SAndroid Build Coastguard Worker
8056*28e138c6SAndroid Build Coastguard Worker\end_inset
8057*28e138c6SAndroid Build Coastguard Worker</cell>
8058*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8059*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8060*28e138c6SAndroid Build Coastguard Worker
8061*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8062*28e138c6SAndroid Build Coastguard Worker0
8063*28e138c6SAndroid Build Coastguard Worker\end_layout
8064*28e138c6SAndroid Build Coastguard Worker
8065*28e138c6SAndroid Build Coastguard Worker\end_inset
8066*28e138c6SAndroid Build Coastguard Worker</cell>
8067*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8068*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8069*28e138c6SAndroid Build Coastguard Worker
8070*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8071*28e138c6SAndroid Build Coastguard Worker1
8072*28e138c6SAndroid Build Coastguard Worker\end_layout
8073*28e138c6SAndroid Build Coastguard Worker
8074*28e138c6SAndroid Build Coastguard Worker\end_inset
8075*28e138c6SAndroid Build Coastguard Worker</cell>
8076*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8077*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8078*28e138c6SAndroid Build Coastguard Worker
8079*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8080*28e138c6SAndroid Build Coastguard Worker0
8081*28e138c6SAndroid Build Coastguard Worker\end_layout
8082*28e138c6SAndroid Build Coastguard Worker
8083*28e138c6SAndroid Build Coastguard Worker\end_inset
8084*28e138c6SAndroid Build Coastguard Worker</cell>
8085*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8086*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8087*28e138c6SAndroid Build Coastguard Worker
8088*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8089*28e138c6SAndroid Build Coastguard Worker1
8090*28e138c6SAndroid Build Coastguard Worker\end_layout
8091*28e138c6SAndroid Build Coastguard Worker
8092*28e138c6SAndroid Build Coastguard Worker\end_inset
8093*28e138c6SAndroid Build Coastguard Worker</cell>
8094*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8095*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8096*28e138c6SAndroid Build Coastguard Worker
8097*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8098*28e138c6SAndroid Build Coastguard Worker1
8099*28e138c6SAndroid Build Coastguard Worker\end_layout
8100*28e138c6SAndroid Build Coastguard Worker
8101*28e138c6SAndroid Build Coastguard Worker\end_inset
8102*28e138c6SAndroid Build Coastguard Worker</cell>
8103*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8104*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8105*28e138c6SAndroid Build Coastguard Worker
8106*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8107*28e138c6SAndroid Build Coastguard Worker3
8108*28e138c6SAndroid Build Coastguard Worker\end_layout
8109*28e138c6SAndroid Build Coastguard Worker
8110*28e138c6SAndroid Build Coastguard Worker\end_inset
8111*28e138c6SAndroid Build Coastguard Worker</cell>
8112*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8113*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8114*28e138c6SAndroid Build Coastguard Worker
8115*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8116*28e138c6SAndroid Build Coastguard Worker3
8117*28e138c6SAndroid Build Coastguard Worker\end_layout
8118*28e138c6SAndroid Build Coastguard Worker
8119*28e138c6SAndroid Build Coastguard Worker\end_inset
8120*28e138c6SAndroid Build Coastguard Worker</cell>
8121*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
8122*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8123*28e138c6SAndroid Build Coastguard Worker
8124*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8125*28e138c6SAndroid Build Coastguard Worker3
8126*28e138c6SAndroid Build Coastguard Worker\end_layout
8127*28e138c6SAndroid Build Coastguard Worker
8128*28e138c6SAndroid Build Coastguard Worker\end_inset
8129*28e138c6SAndroid Build Coastguard Worker</cell>
8130*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
8131*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8132*28e138c6SAndroid Build Coastguard Worker
8133*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8134*28e138c6SAndroid Build Coastguard Worker0
8135*28e138c6SAndroid Build Coastguard Worker\end_layout
8136*28e138c6SAndroid Build Coastguard Worker
8137*28e138c6SAndroid Build Coastguard Worker\end_inset
8138*28e138c6SAndroid Build Coastguard Worker</cell>
8139*28e138c6SAndroid Build Coastguard Worker</row>
8140*28e138c6SAndroid Build Coastguard Worker<row>
8141*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8142*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8143*28e138c6SAndroid Build Coastguard Worker
8144*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8145*28e138c6SAndroid Build Coastguard WorkerInnovation VQ
8146*28e138c6SAndroid Build Coastguard Worker\end_layout
8147*28e138c6SAndroid Build Coastguard Worker
8148*28e138c6SAndroid Build Coastguard Worker\end_inset
8149*28e138c6SAndroid Build Coastguard Worker</cell>
8150*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8151*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8152*28e138c6SAndroid Build Coastguard Worker
8153*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8154*28e138c6SAndroid Build Coastguard Workersub-frame
8155*28e138c6SAndroid Build Coastguard Worker\end_layout
8156*28e138c6SAndroid Build Coastguard Worker
8157*28e138c6SAndroid Build Coastguard Worker\end_inset
8158*28e138c6SAndroid Build Coastguard Worker</cell>
8159*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8160*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8161*28e138c6SAndroid Build Coastguard Worker
8162*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8163*28e138c6SAndroid Build Coastguard Worker0
8164*28e138c6SAndroid Build Coastguard Worker\end_layout
8165*28e138c6SAndroid Build Coastguard Worker
8166*28e138c6SAndroid Build Coastguard Worker\end_inset
8167*28e138c6SAndroid Build Coastguard Worker</cell>
8168*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8169*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8170*28e138c6SAndroid Build Coastguard Worker
8171*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8172*28e138c6SAndroid Build Coastguard Worker0
8173*28e138c6SAndroid Build Coastguard Worker\end_layout
8174*28e138c6SAndroid Build Coastguard Worker
8175*28e138c6SAndroid Build Coastguard Worker\end_inset
8176*28e138c6SAndroid Build Coastguard Worker</cell>
8177*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8178*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8179*28e138c6SAndroid Build Coastguard Worker
8180*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8181*28e138c6SAndroid Build Coastguard Worker16
8182*28e138c6SAndroid Build Coastguard Worker\end_layout
8183*28e138c6SAndroid Build Coastguard Worker
8184*28e138c6SAndroid Build Coastguard Worker\end_inset
8185*28e138c6SAndroid Build Coastguard Worker</cell>
8186*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8187*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8188*28e138c6SAndroid Build Coastguard Worker
8189*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8190*28e138c6SAndroid Build Coastguard Worker20
8191*28e138c6SAndroid Build Coastguard Worker\end_layout
8192*28e138c6SAndroid Build Coastguard Worker
8193*28e138c6SAndroid Build Coastguard Worker\end_inset
8194*28e138c6SAndroid Build Coastguard Worker</cell>
8195*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8196*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8197*28e138c6SAndroid Build Coastguard Worker
8198*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8199*28e138c6SAndroid Build Coastguard Worker35
8200*28e138c6SAndroid Build Coastguard Worker\end_layout
8201*28e138c6SAndroid Build Coastguard Worker
8202*28e138c6SAndroid Build Coastguard Worker\end_inset
8203*28e138c6SAndroid Build Coastguard Worker</cell>
8204*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8205*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8206*28e138c6SAndroid Build Coastguard Worker
8207*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8208*28e138c6SAndroid Build Coastguard Worker48
8209*28e138c6SAndroid Build Coastguard Worker\end_layout
8210*28e138c6SAndroid Build Coastguard Worker
8211*28e138c6SAndroid Build Coastguard Worker\end_inset
8212*28e138c6SAndroid Build Coastguard Worker</cell>
8213*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8214*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8215*28e138c6SAndroid Build Coastguard Worker
8216*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8217*28e138c6SAndroid Build Coastguard Worker64
8218*28e138c6SAndroid Build Coastguard Worker\end_layout
8219*28e138c6SAndroid Build Coastguard Worker
8220*28e138c6SAndroid Build Coastguard Worker\end_inset
8221*28e138c6SAndroid Build Coastguard Worker</cell>
8222*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8223*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8224*28e138c6SAndroid Build Coastguard Worker
8225*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8226*28e138c6SAndroid Build Coastguard Worker96
8227*28e138c6SAndroid Build Coastguard Worker\end_layout
8228*28e138c6SAndroid Build Coastguard Worker
8229*28e138c6SAndroid Build Coastguard Worker\end_inset
8230*28e138c6SAndroid Build Coastguard Worker</cell>
8231*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
8232*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8233*28e138c6SAndroid Build Coastguard Worker
8234*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8235*28e138c6SAndroid Build Coastguard Worker10
8236*28e138c6SAndroid Build Coastguard Worker\end_layout
8237*28e138c6SAndroid Build Coastguard Worker
8238*28e138c6SAndroid Build Coastguard Worker\end_inset
8239*28e138c6SAndroid Build Coastguard Worker</cell>
8240*28e138c6SAndroid Build Coastguard Worker</row>
8241*28e138c6SAndroid Build Coastguard Worker<row>
8242*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8243*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8244*28e138c6SAndroid Build Coastguard Worker
8245*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8246*28e138c6SAndroid Build Coastguard WorkerTotal
8247*28e138c6SAndroid Build Coastguard Worker\end_layout
8248*28e138c6SAndroid Build Coastguard Worker
8249*28e138c6SAndroid Build Coastguard Worker\end_inset
8250*28e138c6SAndroid Build Coastguard Worker</cell>
8251*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8252*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8253*28e138c6SAndroid Build Coastguard Worker
8254*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8255*28e138c6SAndroid Build Coastguard Workerframe
8256*28e138c6SAndroid Build Coastguard Worker\end_layout
8257*28e138c6SAndroid Build Coastguard Worker
8258*28e138c6SAndroid Build Coastguard Worker\end_inset
8259*28e138c6SAndroid Build Coastguard Worker</cell>
8260*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8261*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8262*28e138c6SAndroid Build Coastguard Worker
8263*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8264*28e138c6SAndroid Build Coastguard Worker5
8265*28e138c6SAndroid Build Coastguard Worker\end_layout
8266*28e138c6SAndroid Build Coastguard Worker
8267*28e138c6SAndroid Build Coastguard Worker\end_inset
8268*28e138c6SAndroid Build Coastguard Worker</cell>
8269*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8270*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8271*28e138c6SAndroid Build Coastguard Worker
8272*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8273*28e138c6SAndroid Build Coastguard Worker43
8274*28e138c6SAndroid Build Coastguard Worker\end_layout
8275*28e138c6SAndroid Build Coastguard Worker
8276*28e138c6SAndroid Build Coastguard Worker\end_inset
8277*28e138c6SAndroid Build Coastguard Worker</cell>
8278*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8279*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8280*28e138c6SAndroid Build Coastguard Worker
8281*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8282*28e138c6SAndroid Build Coastguard Worker119
8283*28e138c6SAndroid Build Coastguard Worker\end_layout
8284*28e138c6SAndroid Build Coastguard Worker
8285*28e138c6SAndroid Build Coastguard Worker\end_inset
8286*28e138c6SAndroid Build Coastguard Worker</cell>
8287*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8288*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8289*28e138c6SAndroid Build Coastguard Worker
8290*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8291*28e138c6SAndroid Build Coastguard Worker160
8292*28e138c6SAndroid Build Coastguard Worker\end_layout
8293*28e138c6SAndroid Build Coastguard Worker
8294*28e138c6SAndroid Build Coastguard Worker\end_inset
8295*28e138c6SAndroid Build Coastguard Worker</cell>
8296*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8297*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8298*28e138c6SAndroid Build Coastguard Worker
8299*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8300*28e138c6SAndroid Build Coastguard Worker220
8301*28e138c6SAndroid Build Coastguard Worker\end_layout
8302*28e138c6SAndroid Build Coastguard Worker
8303*28e138c6SAndroid Build Coastguard Worker\end_inset
8304*28e138c6SAndroid Build Coastguard Worker</cell>
8305*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8306*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8307*28e138c6SAndroid Build Coastguard Worker
8308*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8309*28e138c6SAndroid Build Coastguard Worker300
8310*28e138c6SAndroid Build Coastguard Worker\end_layout
8311*28e138c6SAndroid Build Coastguard Worker
8312*28e138c6SAndroid Build Coastguard Worker\end_inset
8313*28e138c6SAndroid Build Coastguard Worker</cell>
8314*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8315*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8316*28e138c6SAndroid Build Coastguard Worker
8317*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8318*28e138c6SAndroid Build Coastguard Worker364
8319*28e138c6SAndroid Build Coastguard Worker\end_layout
8320*28e138c6SAndroid Build Coastguard Worker
8321*28e138c6SAndroid Build Coastguard Worker\end_inset
8322*28e138c6SAndroid Build Coastguard Worker</cell>
8323*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8324*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8325*28e138c6SAndroid Build Coastguard Worker
8326*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8327*28e138c6SAndroid Build Coastguard Worker492
8328*28e138c6SAndroid Build Coastguard Worker\end_layout
8329*28e138c6SAndroid Build Coastguard Worker
8330*28e138c6SAndroid Build Coastguard Worker\end_inset
8331*28e138c6SAndroid Build Coastguard Worker</cell>
8332*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
8333*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8334*28e138c6SAndroid Build Coastguard Worker
8335*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8336*28e138c6SAndroid Build Coastguard Worker79
8337*28e138c6SAndroid Build Coastguard Worker\end_layout
8338*28e138c6SAndroid Build Coastguard Worker
8339*28e138c6SAndroid Build Coastguard Worker\end_inset
8340*28e138c6SAndroid Build Coastguard Worker</cell>
8341*28e138c6SAndroid Build Coastguard Worker</row>
8342*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
8343*28e138c6SAndroid Build Coastguard Worker
8344*28e138c6SAndroid Build Coastguard Worker\end_inset
8345*28e138c6SAndroid Build Coastguard Worker
8346*28e138c6SAndroid Build Coastguard Worker
8347*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
8348*28e138c6SAndroid Build Coastguard Workerstatus collapsed
8349*28e138c6SAndroid Build Coastguard Worker
8350*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8351*28e138c6SAndroid Build Coastguard Worker
8352*28e138c6SAndroid Build Coastguard Worker
8353*28e138c6SAndroid Build Coastguard Worker\backslash
8354*28e138c6SAndroid Build Coastguard Workerend{center}
8355*28e138c6SAndroid Build Coastguard Worker\end_layout
8356*28e138c6SAndroid Build Coastguard Worker
8357*28e138c6SAndroid Build Coastguard Worker\end_inset
8358*28e138c6SAndroid Build Coastguard Worker
8359*28e138c6SAndroid Build Coastguard Worker
8360*28e138c6SAndroid Build Coastguard Worker\end_layout
8361*28e138c6SAndroid Build Coastguard Worker
8362*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8363*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
8364*28e138c6SAndroid Build Coastguard Worker
8365*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8366*28e138c6SAndroid Build Coastguard WorkerBit allocation for narrowband modes
8367*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
8368*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
8369*28e138c6SAndroid Build Coastguard Workername "cap:bits-narrowband"
8370*28e138c6SAndroid Build Coastguard Worker
8371*28e138c6SAndroid Build Coastguard Worker\end_inset
8372*28e138c6SAndroid Build Coastguard Worker
8373*28e138c6SAndroid Build Coastguard Worker
8374*28e138c6SAndroid Build Coastguard Worker\end_layout
8375*28e138c6SAndroid Build Coastguard Worker
8376*28e138c6SAndroid Build Coastguard Worker\end_inset
8377*28e138c6SAndroid Build Coastguard Worker
8378*28e138c6SAndroid Build Coastguard Worker
8379*28e138c6SAndroid Build Coastguard Worker\end_layout
8380*28e138c6SAndroid Build Coastguard Worker
8381*28e138c6SAndroid Build Coastguard Worker\end_inset
8382*28e138c6SAndroid Build Coastguard Worker
8383*28e138c6SAndroid Build Coastguard Worker
8384*28e138c6SAndroid Build Coastguard Worker\end_layout
8385*28e138c6SAndroid Build Coastguard Worker
8386*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8387*28e138c6SAndroid Build Coastguard WorkerLSP decoding
8388*28e138c6SAndroid Build Coastguard Worker\end_layout
8389*28e138c6SAndroid Build Coastguard Worker
8390*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8391*28e138c6SAndroid Build Coastguard WorkerDepending on the mode, LSP parameters are encoded using either 18 bits or
8392*28e138c6SAndroid Build Coastguard Worker 30 bits.
8393*28e138c6SAndroid Build Coastguard Worker\end_layout
8394*28e138c6SAndroid Build Coastguard Worker
8395*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8396*28e138c6SAndroid Build Coastguard WorkerInterpolation
8397*28e138c6SAndroid Build Coastguard Worker\end_layout
8398*28e138c6SAndroid Build Coastguard Worker
8399*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8400*28e138c6SAndroid Build Coastguard WorkerSafe margin
8401*28e138c6SAndroid Build Coastguard Worker\end_layout
8402*28e138c6SAndroid Build Coastguard Worker
8403*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8404*28e138c6SAndroid Build Coastguard WorkerAdaptive codebook
8405*28e138c6SAndroid Build Coastguard Worker\end_layout
8406*28e138c6SAndroid Build Coastguard Worker
8407*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8408*28e138c6SAndroid Build Coastguard WorkerFor rates of 8 kbit/s and above, the pitch period is encoded for each subframe.
8409*28e138c6SAndroid Build Coastguard Worker The real period is
8410*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $T=p_{i}+17$
8411*28e138c6SAndroid Build Coastguard Worker\end_inset
8412*28e138c6SAndroid Build Coastguard Worker
8413*28e138c6SAndroid Build Coastguard Worker where
8414*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $p_{i}$
8415*28e138c6SAndroid Build Coastguard Worker\end_inset
8416*28e138c6SAndroid Build Coastguard Worker
8417*28e138c6SAndroid Build Coastguard Worker is a value encoded with 7 bits and 17 corresponds to the minimum pitch.
8418*28e138c6SAndroid Build Coastguard Worker The maximum period is 144.
8419*28e138c6SAndroid Build Coastguard Worker At 5.95 kbit/s (mode 2), the pitch period is similarly encoded, but only
8420*28e138c6SAndroid Build Coastguard Worker once for the frame.
8421*28e138c6SAndroid Build Coastguard Worker Each sub-frame then has a 2-bit offset that is added to the pitch value
8422*28e138c6SAndroid Build Coastguard Worker of the frame.
8423*28e138c6SAndroid Build Coastguard Worker In that case, the pitch for each sub-frame is equal to
8424*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $T-1+offset$
8425*28e138c6SAndroid Build Coastguard Worker\end_inset
8426*28e138c6SAndroid Build Coastguard Worker
8427*28e138c6SAndroid Build Coastguard Worker.
8428*28e138c6SAndroid Build Coastguard Worker For rates below 5.95 kbit/s, only the per-frame pitch is used and the pitch
8429*28e138c6SAndroid Build Coastguard Worker is constant for all sub-frames.
8430*28e138c6SAndroid Build Coastguard Worker\end_layout
8431*28e138c6SAndroid Build Coastguard Worker
8432*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8433*28e138c6SAndroid Build Coastguard WorkerSpeex uses a 3-tap predictor for rates of 5.95 kbit/s and above.
8434*28e138c6SAndroid Build Coastguard Worker The three gain values are obtained from a 5-bit or a 7-bit codebook, depending
8435*28e138c6SAndroid Build Coastguard Worker on the mode.
8436*28e138c6SAndroid Build Coastguard Worker
8437*28e138c6SAndroid Build Coastguard Worker\end_layout
8438*28e138c6SAndroid Build Coastguard Worker
8439*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8440*28e138c6SAndroid Build Coastguard WorkerInnovation codebook
8441*28e138c6SAndroid Build Coastguard Worker\end_layout
8442*28e138c6SAndroid Build Coastguard Worker
8443*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8444*28e138c6SAndroid Build Coastguard WorkerSplit codebook, size and entries depend on bit-rate
8445*28e138c6SAndroid Build Coastguard Worker\end_layout
8446*28e138c6SAndroid Build Coastguard Worker
8447*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8448*28e138c6SAndroid Build Coastguard Workera 5-bit gain is encoder on a per-frame basis
8449*28e138c6SAndroid Build Coastguard Worker\end_layout
8450*28e138c6SAndroid Build Coastguard Worker
8451*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8452*28e138c6SAndroid Build Coastguard WorkerDepending on the mode, higher resolution per sub-frame
8453*28e138c6SAndroid Build Coastguard Worker\end_layout
8454*28e138c6SAndroid Build Coastguard Worker
8455*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8456*28e138c6SAndroid Build Coastguard Workerinnovation sub-vectors concatenated, gain applied
8457*28e138c6SAndroid Build Coastguard Worker\end_layout
8458*28e138c6SAndroid Build Coastguard Worker
8459*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8460*28e138c6SAndroid Build Coastguard WorkerPerceptual enhancement
8461*28e138c6SAndroid Build Coastguard Worker\end_layout
8462*28e138c6SAndroid Build Coastguard Worker
8463*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8464*28e138c6SAndroid Build Coastguard WorkerOptional, implementation-defined.
8465*28e138c6SAndroid Build Coastguard Worker
8466*28e138c6SAndroid Build Coastguard Worker\end_layout
8467*28e138c6SAndroid Build Coastguard Worker
8468*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8469*28e138c6SAndroid Build Coastguard WorkerBit-stream definition
8470*28e138c6SAndroid Build Coastguard Worker\end_layout
8471*28e138c6SAndroid Build Coastguard Worker
8472*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8473*28e138c6SAndroid Build Coastguard WorkerThis section defines the bit-stream that is transmitted on the wire.
8474*28e138c6SAndroid Build Coastguard Worker One speex packet consist of 1 frame header and 4 sub-frames:
8475*28e138c6SAndroid Build Coastguard Worker\end_layout
8476*28e138c6SAndroid Build Coastguard Worker
8477*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8478*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
8479*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="1" columns="5">
8480*28e138c6SAndroid Build Coastguard Worker<features>
8481*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8482*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8483*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8484*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8485*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8486*28e138c6SAndroid Build Coastguard Worker<row>
8487*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8488*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8489*28e138c6SAndroid Build Coastguard Worker
8490*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8491*28e138c6SAndroid Build Coastguard WorkerFrame Header
8492*28e138c6SAndroid Build Coastguard Worker\end_layout
8493*28e138c6SAndroid Build Coastguard Worker
8494*28e138c6SAndroid Build Coastguard Worker\end_inset
8495*28e138c6SAndroid Build Coastguard Worker</cell>
8496*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8497*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8498*28e138c6SAndroid Build Coastguard Worker
8499*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8500*28e138c6SAndroid Build Coastguard WorkerSubframe 1
8501*28e138c6SAndroid Build Coastguard Worker\end_layout
8502*28e138c6SAndroid Build Coastguard Worker
8503*28e138c6SAndroid Build Coastguard Worker\end_inset
8504*28e138c6SAndroid Build Coastguard Worker</cell>
8505*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8506*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8507*28e138c6SAndroid Build Coastguard Worker
8508*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8509*28e138c6SAndroid Build Coastguard WorkerSubframe2
8510*28e138c6SAndroid Build Coastguard Worker\end_layout
8511*28e138c6SAndroid Build Coastguard Worker
8512*28e138c6SAndroid Build Coastguard Worker\end_inset
8513*28e138c6SAndroid Build Coastguard Worker</cell>
8514*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8515*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8516*28e138c6SAndroid Build Coastguard Worker
8517*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8518*28e138c6SAndroid Build Coastguard WorkerSubframe 3
8519*28e138c6SAndroid Build Coastguard Worker\end_layout
8520*28e138c6SAndroid Build Coastguard Worker
8521*28e138c6SAndroid Build Coastguard Worker\end_inset
8522*28e138c6SAndroid Build Coastguard Worker</cell>
8523*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
8524*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8525*28e138c6SAndroid Build Coastguard Worker
8526*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8527*28e138c6SAndroid Build Coastguard WorkerSubframe 4
8528*28e138c6SAndroid Build Coastguard Worker\end_layout
8529*28e138c6SAndroid Build Coastguard Worker
8530*28e138c6SAndroid Build Coastguard Worker\end_inset
8531*28e138c6SAndroid Build Coastguard Worker</cell>
8532*28e138c6SAndroid Build Coastguard Worker</row>
8533*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
8534*28e138c6SAndroid Build Coastguard Worker
8535*28e138c6SAndroid Build Coastguard Worker\end_inset
8536*28e138c6SAndroid Build Coastguard Worker
8537*28e138c6SAndroid Build Coastguard Worker
8538*28e138c6SAndroid Build Coastguard Worker\end_layout
8539*28e138c6SAndroid Build Coastguard Worker
8540*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8541*28e138c6SAndroid Build Coastguard WorkerThe frame header is variable length, depending on decoding mode and submode.
8542*28e138c6SAndroid Build Coastguard Worker The narrowband frame header is defined as follows:
8543*28e138c6SAndroid Build Coastguard Worker\end_layout
8544*28e138c6SAndroid Build Coastguard Worker
8545*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8546*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
8547*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="1" columns="6">
8548*28e138c6SAndroid Build Coastguard Worker<features>
8549*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8550*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8551*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8552*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8553*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8554*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8555*28e138c6SAndroid Build Coastguard Worker<row>
8556*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8557*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8558*28e138c6SAndroid Build Coastguard Worker
8559*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8560*28e138c6SAndroid Build Coastguard Workerwb bit
8561*28e138c6SAndroid Build Coastguard Worker\end_layout
8562*28e138c6SAndroid Build Coastguard Worker
8563*28e138c6SAndroid Build Coastguard Worker\end_inset
8564*28e138c6SAndroid Build Coastguard Worker</cell>
8565*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8566*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8567*28e138c6SAndroid Build Coastguard Worker
8568*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8569*28e138c6SAndroid Build Coastguard Workermodeid
8570*28e138c6SAndroid Build Coastguard Worker\end_layout
8571*28e138c6SAndroid Build Coastguard Worker
8572*28e138c6SAndroid Build Coastguard Worker\end_inset
8573*28e138c6SAndroid Build Coastguard Worker</cell>
8574*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8575*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8576*28e138c6SAndroid Build Coastguard Worker
8577*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8578*28e138c6SAndroid Build Coastguard WorkerLSP
8579*28e138c6SAndroid Build Coastguard Worker\end_layout
8580*28e138c6SAndroid Build Coastguard Worker
8581*28e138c6SAndroid Build Coastguard Worker\end_inset
8582*28e138c6SAndroid Build Coastguard Worker</cell>
8583*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8584*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8585*28e138c6SAndroid Build Coastguard Worker
8586*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8587*28e138c6SAndroid Build Coastguard WorkerOL-pitch
8588*28e138c6SAndroid Build Coastguard Worker\end_layout
8589*28e138c6SAndroid Build Coastguard Worker
8590*28e138c6SAndroid Build Coastguard Worker\end_inset
8591*28e138c6SAndroid Build Coastguard Worker</cell>
8592*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8593*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8594*28e138c6SAndroid Build Coastguard Worker
8595*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8596*28e138c6SAndroid Build Coastguard WorkerOL-pitchgain
8597*28e138c6SAndroid Build Coastguard Worker\end_layout
8598*28e138c6SAndroid Build Coastguard Worker
8599*28e138c6SAndroid Build Coastguard Worker\end_inset
8600*28e138c6SAndroid Build Coastguard Worker</cell>
8601*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
8602*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8603*28e138c6SAndroid Build Coastguard Worker
8604*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8605*28e138c6SAndroid Build Coastguard WorkerOL ExcGain
8606*28e138c6SAndroid Build Coastguard Worker\end_layout
8607*28e138c6SAndroid Build Coastguard Worker
8608*28e138c6SAndroid Build Coastguard Worker\end_inset
8609*28e138c6SAndroid Build Coastguard Worker</cell>
8610*28e138c6SAndroid Build Coastguard Worker</row>
8611*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
8612*28e138c6SAndroid Build Coastguard Worker
8613*28e138c6SAndroid Build Coastguard Worker\end_inset
8614*28e138c6SAndroid Build Coastguard Worker
8615*28e138c6SAndroid Build Coastguard Worker
8616*28e138c6SAndroid Build Coastguard Worker\end_layout
8617*28e138c6SAndroid Build Coastguard Worker
8618*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8619*28e138c6SAndroid Build Coastguard Workerwb-bit: Wideband bit (1 bit) 0=narrowband, 1=wideband
8620*28e138c6SAndroid Build Coastguard Worker\end_layout
8621*28e138c6SAndroid Build Coastguard Worker
8622*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8623*28e138c6SAndroid Build Coastguard Workermodeid: Mode identifier (4 bits)
8624*28e138c6SAndroid Build Coastguard Worker\end_layout
8625*28e138c6SAndroid Build Coastguard Worker
8626*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8627*28e138c6SAndroid Build Coastguard WorkerLSP: Line Spectral Pairs (0, 18 or 30 bits)
8628*28e138c6SAndroid Build Coastguard Worker\end_layout
8629*28e138c6SAndroid Build Coastguard Worker
8630*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8631*28e138c6SAndroid Build Coastguard WorkerOL-pitch: Open Loop Pitch (0 or 7 bits)
8632*28e138c6SAndroid Build Coastguard Worker\end_layout
8633*28e138c6SAndroid Build Coastguard Worker
8634*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8635*28e138c6SAndroid Build Coastguard WorkerOL-pitchgain: Open Loop Pitch Gain (0 or 4 bits)
8636*28e138c6SAndroid Build Coastguard Worker\end_layout
8637*28e138c6SAndroid Build Coastguard Worker
8638*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8639*28e138c6SAndroid Build Coastguard WorkerOL-ExcGain: Open Loop Excitation Gain (0 or 5 bits)
8640*28e138c6SAndroid Build Coastguard Worker\end_layout
8641*28e138c6SAndroid Build Coastguard Worker
8642*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8643*28e138c6SAndroid Build Coastguard Worker...
8644*28e138c6SAndroid Build Coastguard Worker\end_layout
8645*28e138c6SAndroid Build Coastguard Worker
8646*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8647*28e138c6SAndroid Build Coastguard WorkerEach subframe is defined as follows:
8648*28e138c6SAndroid Build Coastguard Worker\end_layout
8649*28e138c6SAndroid Build Coastguard Worker
8650*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8651*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
8652*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="1" columns="4">
8653*28e138c6SAndroid Build Coastguard Worker<features>
8654*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8655*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8656*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8657*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0">
8658*28e138c6SAndroid Build Coastguard Worker<row>
8659*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8660*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8661*28e138c6SAndroid Build Coastguard Worker
8662*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8663*28e138c6SAndroid Build Coastguard WorkerFinePitch
8664*28e138c6SAndroid Build Coastguard Worker\end_layout
8665*28e138c6SAndroid Build Coastguard Worker
8666*28e138c6SAndroid Build Coastguard Worker\end_inset
8667*28e138c6SAndroid Build Coastguard Worker</cell>
8668*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8669*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8670*28e138c6SAndroid Build Coastguard Worker
8671*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8672*28e138c6SAndroid Build Coastguard WorkerPitchGain
8673*28e138c6SAndroid Build Coastguard Worker\end_layout
8674*28e138c6SAndroid Build Coastguard Worker
8675*28e138c6SAndroid Build Coastguard Worker\end_inset
8676*28e138c6SAndroid Build Coastguard Worker</cell>
8677*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
8678*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8679*28e138c6SAndroid Build Coastguard Worker
8680*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8681*28e138c6SAndroid Build Coastguard WorkerInnovationGain
8682*28e138c6SAndroid Build Coastguard Worker\end_layout
8683*28e138c6SAndroid Build Coastguard Worker
8684*28e138c6SAndroid Build Coastguard Worker\end_inset
8685*28e138c6SAndroid Build Coastguard Worker</cell>
8686*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
8687*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
8688*28e138c6SAndroid Build Coastguard Worker
8689*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8690*28e138c6SAndroid Build Coastguard WorkerInnovation VQ
8691*28e138c6SAndroid Build Coastguard Worker\end_layout
8692*28e138c6SAndroid Build Coastguard Worker
8693*28e138c6SAndroid Build Coastguard Worker\end_inset
8694*28e138c6SAndroid Build Coastguard Worker</cell>
8695*28e138c6SAndroid Build Coastguard Worker</row>
8696*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
8697*28e138c6SAndroid Build Coastguard Worker
8698*28e138c6SAndroid Build Coastguard Worker\end_inset
8699*28e138c6SAndroid Build Coastguard Worker
8700*28e138c6SAndroid Build Coastguard Worker
8701*28e138c6SAndroid Build Coastguard Worker\end_layout
8702*28e138c6SAndroid Build Coastguard Worker
8703*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8704*28e138c6SAndroid Build Coastguard WorkerFinePitch: (0 or 7 bits)
8705*28e138c6SAndroid Build Coastguard Worker\end_layout
8706*28e138c6SAndroid Build Coastguard Worker
8707*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8708*28e138c6SAndroid Build Coastguard WorkerPitchGain: (0, 5, or 7 bits)
8709*28e138c6SAndroid Build Coastguard Worker\end_layout
8710*28e138c6SAndroid Build Coastguard Worker
8711*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8712*28e138c6SAndroid Build Coastguard WorkerInnovation Gain: (0, 1, 3 bits)
8713*28e138c6SAndroid Build Coastguard Worker\end_layout
8714*28e138c6SAndroid Build Coastguard Worker
8715*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8716*28e138c6SAndroid Build Coastguard WorkerInnovation VQ: (0-96 bits)
8717*28e138c6SAndroid Build Coastguard Worker\end_layout
8718*28e138c6SAndroid Build Coastguard Worker
8719*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8720*28e138c6SAndroid Build Coastguard Worker...
8721*28e138c6SAndroid Build Coastguard Worker\end_layout
8722*28e138c6SAndroid Build Coastguard Worker
8723*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8724*28e138c6SAndroid Build Coastguard WorkerSample decoder
8725*28e138c6SAndroid Build Coastguard Worker\end_layout
8726*28e138c6SAndroid Build Coastguard Worker
8727*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8728*28e138c6SAndroid Build Coastguard WorkerThis section contains some sample source code, showing how a basic Speex
8729*28e138c6SAndroid Build Coastguard Worker decoder can be implemented.
8730*28e138c6SAndroid Build Coastguard Worker The sample decoder is narrowband submode 3 only, and with no advanced features
8731*28e138c6SAndroid Build Coastguard Worker like enhancement, vbr etc.
8732*28e138c6SAndroid Build Coastguard Worker\end_layout
8733*28e138c6SAndroid Build Coastguard Worker
8734*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8735*28e138c6SAndroid Build Coastguard Worker...
8736*28e138c6SAndroid Build Coastguard Worker\end_layout
8737*28e138c6SAndroid Build Coastguard Worker
8738*28e138c6SAndroid Build Coastguard Worker\begin_layout Subsection
8739*28e138c6SAndroid Build Coastguard WorkerLookup tables
8740*28e138c6SAndroid Build Coastguard Worker\end_layout
8741*28e138c6SAndroid Build Coastguard Worker
8742*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8743*28e138c6SAndroid Build Coastguard WorkerThe Speex decoder includes a set of lookup tables and codebooks, which are
8744*28e138c6SAndroid Build Coastguard Worker used to convert between values of different domains.
8745*28e138c6SAndroid Build Coastguard Worker This includes:
8746*28e138c6SAndroid Build Coastguard Worker\end_layout
8747*28e138c6SAndroid Build Coastguard Worker
8748*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8749*28e138c6SAndroid Build Coastguard Worker- Excitation 10x16 (3200 bps)
8750*28e138c6SAndroid Build Coastguard Worker\end_layout
8751*28e138c6SAndroid Build Coastguard Worker
8752*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8753*28e138c6SAndroid Build Coastguard Worker- Excitation 10x32 (4000 bps)
8754*28e138c6SAndroid Build Coastguard Worker\end_layout
8755*28e138c6SAndroid Build Coastguard Worker
8756*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8757*28e138c6SAndroid Build Coastguard Worker- Excitation 20x32 (2000 bps)
8758*28e138c6SAndroid Build Coastguard Worker\end_layout
8759*28e138c6SAndroid Build Coastguard Worker
8760*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8761*28e138c6SAndroid Build Coastguard Worker- Excitation 5x256 (12800 bps)
8762*28e138c6SAndroid Build Coastguard Worker\end_layout
8763*28e138c6SAndroid Build Coastguard Worker
8764*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8765*28e138c6SAndroid Build Coastguard Worker- Excitation 5x64 (9600 bps)
8766*28e138c6SAndroid Build Coastguard Worker\end_layout
8767*28e138c6SAndroid Build Coastguard Worker
8768*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8769*28e138c6SAndroid Build Coastguard Worker- Excitation 8x128 (7000 bps)
8770*28e138c6SAndroid Build Coastguard Worker\end_layout
8771*28e138c6SAndroid Build Coastguard Worker
8772*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8773*28e138c6SAndroid Build Coastguard Worker- Codebook for 3-tap pitch prediction gain (Normal and Low Bitrate)
8774*28e138c6SAndroid Build Coastguard Worker\end_layout
8775*28e138c6SAndroid Build Coastguard Worker
8776*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8777*28e138c6SAndroid Build Coastguard Worker- Codebook for LSPs in narrowband CELP mode
8778*28e138c6SAndroid Build Coastguard Worker\end_layout
8779*28e138c6SAndroid Build Coastguard Worker
8780*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8781*28e138c6SAndroid Build Coastguard Worker...
8782*28e138c6SAndroid Build Coastguard Worker\end_layout
8783*28e138c6SAndroid Build Coastguard Worker
8784*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8785*28e138c6SAndroid Build Coastguard WorkerThe exact lookup tables are included here for reference.
8786*28e138c6SAndroid Build Coastguard Worker\end_layout
8787*28e138c6SAndroid Build Coastguard Worker
8788*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
8789*28e138c6SAndroid Build Coastguard WorkerWideband embedded decoder
8790*28e138c6SAndroid Build Coastguard Worker\end_layout
8791*28e138c6SAndroid Build Coastguard Worker
8792*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8793*28e138c6SAndroid Build Coastguard WorkerQMF filter.
8794*28e138c6SAndroid Build Coastguard Worker Narrowband signal decoded using narrowband decoder
8795*28e138c6SAndroid Build Coastguard Worker\end_layout
8796*28e138c6SAndroid Build Coastguard Worker
8797*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8798*28e138c6SAndroid Build Coastguard WorkerFor the high band, the decoder is similar to the narrowband decoder, with
8799*28e138c6SAndroid Build Coastguard Worker the main difference being that there is no adaptive codebook.
8800*28e138c6SAndroid Build Coastguard Worker\end_layout
8801*28e138c6SAndroid Build Coastguard Worker
8802*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8803*28e138c6SAndroid Build Coastguard WorkerGain is per-subframe
8804*28e138c6SAndroid Build Coastguard Worker\end_layout
8805*28e138c6SAndroid Build Coastguard Worker
8806*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
8807*28e138c6SAndroid Build Coastguard WorkerSpeex narrowband mode
8808*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
8809*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
8810*28e138c6SAndroid Build Coastguard Workername "sec:Speex-narrowband-mode"
8811*28e138c6SAndroid Build Coastguard Worker
8812*28e138c6SAndroid Build Coastguard Worker\end_inset
8813*28e138c6SAndroid Build Coastguard Worker
8814*28e138c6SAndroid Build Coastguard Worker
8815*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
8816*28e138c6SAndroid Build Coastguard Workerstatus collapsed
8817*28e138c6SAndroid Build Coastguard Worker
8818*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8819*28e138c6SAndroid Build Coastguard Workernarrowband
8820*28e138c6SAndroid Build Coastguard Worker\end_layout
8821*28e138c6SAndroid Build Coastguard Worker
8822*28e138c6SAndroid Build Coastguard Worker\end_inset
8823*28e138c6SAndroid Build Coastguard Worker
8824*28e138c6SAndroid Build Coastguard Worker
8825*28e138c6SAndroid Build Coastguard Worker\end_layout
8826*28e138c6SAndroid Build Coastguard Worker
8827*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8828*28e138c6SAndroid Build Coastguard WorkerThis section looks at how Speex works for narrowband (
8829*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $8\:\mathrm{kHz}$
8830*28e138c6SAndroid Build Coastguard Worker\end_inset
8831*28e138c6SAndroid Build Coastguard Worker
8832*28e138c6SAndroid Build Coastguard Worker sampling rate) operation.
8833*28e138c6SAndroid Build Coastguard Worker The frame size for this mode is
8834*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $20\:\mathrm{ms}$
8835*28e138c6SAndroid Build Coastguard Worker\end_inset
8836*28e138c6SAndroid Build Coastguard Worker
8837*28e138c6SAndroid Build Coastguard Worker, corresponding to 160 samples.
8838*28e138c6SAndroid Build Coastguard Worker Each frame is also subdivided into 4 sub-frames of 40 samples each.
8839*28e138c6SAndroid Build Coastguard Worker\end_layout
8840*28e138c6SAndroid Build Coastguard Worker
8841*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8842*28e138c6SAndroid Build Coastguard WorkerAlso many design decisions were based on the original goals and assumptions:
8843*28e138c6SAndroid Build Coastguard Worker\end_layout
8844*28e138c6SAndroid Build Coastguard Worker
8845*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
8846*28e138c6SAndroid Build Coastguard WorkerMinimizing the amount of information extracted from past frames (for robustness
8847*28e138c6SAndroid Build Coastguard Worker to packet loss)
8848*28e138c6SAndroid Build Coastguard Worker\end_layout
8849*28e138c6SAndroid Build Coastguard Worker
8850*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
8851*28e138c6SAndroid Build Coastguard WorkerDynamically-selectable codebooks (LSP, pitch and innovation)
8852*28e138c6SAndroid Build Coastguard Worker\end_layout
8853*28e138c6SAndroid Build Coastguard Worker
8854*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
8855*28e138c6SAndroid Build Coastguard Workersub-vector fixed (innovation) codebooks
8856*28e138c6SAndroid Build Coastguard Worker\end_layout
8857*28e138c6SAndroid Build Coastguard Worker
8858*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
8859*28e138c6SAndroid Build Coastguard WorkerWhole-Frame Analysis
8860*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
8861*28e138c6SAndroid Build Coastguard Workerstatus collapsed
8862*28e138c6SAndroid Build Coastguard Worker
8863*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8864*28e138c6SAndroid Build Coastguard Workerlinear prediction
8865*28e138c6SAndroid Build Coastguard Worker\end_layout
8866*28e138c6SAndroid Build Coastguard Worker
8867*28e138c6SAndroid Build Coastguard Worker\end_inset
8868*28e138c6SAndroid Build Coastguard Worker
8869*28e138c6SAndroid Build Coastguard Worker
8870*28e138c6SAndroid Build Coastguard Worker\end_layout
8871*28e138c6SAndroid Build Coastguard Worker
8872*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8873*28e138c6SAndroid Build Coastguard WorkerIn narrowband, Speex frames are 20 ms long (160 samples) and are subdivided
8874*28e138c6SAndroid Build Coastguard Worker in 4 sub-frames of 5 ms each (40 samples).
8875*28e138c6SAndroid Build Coastguard Worker For most narrowband bit-rates (8 kbps and above), the only parameters encoded
8876*28e138c6SAndroid Build Coastguard Worker at the frame level are the Line Spectral Pairs (LSP) and a global excitation
8877*28e138c6SAndroid Build Coastguard Worker gain
8878*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $g_{frame}$
8879*28e138c6SAndroid Build Coastguard Worker\end_inset
8880*28e138c6SAndroid Build Coastguard Worker
8881*28e138c6SAndroid Build Coastguard Worker, as shown in Fig.
8882*28e138c6SAndroid Build Coastguard Worker
8883*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
8884*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
8885*28e138c6SAndroid Build Coastguard Workerreference "cap:Frame-open-loop-analysis"
8886*28e138c6SAndroid Build Coastguard Worker
8887*28e138c6SAndroid Build Coastguard Worker\end_inset
8888*28e138c6SAndroid Build Coastguard Worker
8889*28e138c6SAndroid Build Coastguard Worker.
8890*28e138c6SAndroid Build Coastguard Worker All other parameters are encoded at the sub-frame level.
8891*28e138c6SAndroid Build Coastguard Worker\end_layout
8892*28e138c6SAndroid Build Coastguard Worker
8893*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8894*28e138c6SAndroid Build Coastguard WorkerLinear prediction analysis is performed once per frame using an asymmetric
8895*28e138c6SAndroid Build Coastguard Worker Hamming window centered on the fourth sub-frame.
8896*28e138c6SAndroid Build Coastguard Worker Because linear prediction coefficients (LPC) are not robust to quantization,
8897*28e138c6SAndroid Build Coastguard Worker they are first converted to line spectral pairs (LSP)
8898*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
8899*28e138c6SAndroid Build Coastguard Workerstatus collapsed
8900*28e138c6SAndroid Build Coastguard Worker
8901*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8902*28e138c6SAndroid Build Coastguard Workerline spectral pair
8903*28e138c6SAndroid Build Coastguard Worker\end_layout
8904*28e138c6SAndroid Build Coastguard Worker
8905*28e138c6SAndroid Build Coastguard Worker\end_inset
8906*28e138c6SAndroid Build Coastguard Worker
8907*28e138c6SAndroid Build Coastguard Worker.
8908*28e138c6SAndroid Build Coastguard Worker The LSP's are considered to be associated to the
8909*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $4^{th}$
8910*28e138c6SAndroid Build Coastguard Worker\end_inset
8911*28e138c6SAndroid Build Coastguard Worker
8912*28e138c6SAndroid Build Coastguard Worker sub-frames and the LSP's associated to the first 3 sub-frames are linearly
8913*28e138c6SAndroid Build Coastguard Worker interpolated using the current and previous LSP coefficients.
8914*28e138c6SAndroid Build Coastguard Worker The LSP coefficients and converted back to the LPC filter
8915*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\hat{A}(z)$
8916*28e138c6SAndroid Build Coastguard Worker\end_inset
8917*28e138c6SAndroid Build Coastguard Worker
8918*28e138c6SAndroid Build Coastguard Worker.
8919*28e138c6SAndroid Build Coastguard Worker The non-quantized interpolated filter is denoted
8920*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $A(z)$
8921*28e138c6SAndroid Build Coastguard Worker\end_inset
8922*28e138c6SAndroid Build Coastguard Worker
8923*28e138c6SAndroid Build Coastguard Worker and can be used for the weighting filter
8924*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $W(z)$
8925*28e138c6SAndroid Build Coastguard Worker\end_inset
8926*28e138c6SAndroid Build Coastguard Worker
8927*28e138c6SAndroid Build Coastguard Worker because it does not need to be available to the decoder.
8928*28e138c6SAndroid Build Coastguard Worker
8929*28e138c6SAndroid Build Coastguard Worker\end_layout
8930*28e138c6SAndroid Build Coastguard Worker
8931*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8932*28e138c6SAndroid Build Coastguard WorkerTo make Speex more robust to packet loss, no prediction is applied on the
8933*28e138c6SAndroid Build Coastguard Worker LSP coefficients prior to quantization.
8934*28e138c6SAndroid Build Coastguard Worker The LSPs are encoded using vector quantization (VQ) with 30 bits for higher
8935*28e138c6SAndroid Build Coastguard Worker quality modes and 18 bits for lower quality.
8936*28e138c6SAndroid Build Coastguard Worker\end_layout
8937*28e138c6SAndroid Build Coastguard Worker
8938*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
8939*28e138c6SAndroid Build Coastguard Worker\begin_inset Float figure
8940*28e138c6SAndroid Build Coastguard Workerwide false
8941*28e138c6SAndroid Build Coastguard Workersideways false
8942*28e138c6SAndroid Build Coastguard Workerstatus open
8943*28e138c6SAndroid Build Coastguard Worker
8944*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8945*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
8946*28e138c6SAndroid Build Coastguard Workerstatus collapsed
8947*28e138c6SAndroid Build Coastguard Worker
8948*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8949*28e138c6SAndroid Build Coastguard Worker
8950*28e138c6SAndroid Build Coastguard Worker
8951*28e138c6SAndroid Build Coastguard Worker\backslash
8952*28e138c6SAndroid Build Coastguard Workerbegin{center}
8953*28e138c6SAndroid Build Coastguard Worker\end_layout
8954*28e138c6SAndroid Build Coastguard Worker
8955*28e138c6SAndroid Build Coastguard Worker\end_inset
8956*28e138c6SAndroid Build Coastguard Worker
8957*28e138c6SAndroid Build Coastguard Worker
8958*28e138c6SAndroid Build Coastguard Worker\begin_inset Graphics
8959*28e138c6SAndroid Build Coastguard Worker	filename speex_analysis.eps
8960*28e138c6SAndroid Build Coastguard Worker	width 35page%
8961*28e138c6SAndroid Build Coastguard Worker
8962*28e138c6SAndroid Build Coastguard Worker\end_inset
8963*28e138c6SAndroid Build Coastguard Worker
8964*28e138c6SAndroid Build Coastguard Worker
8965*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
8966*28e138c6SAndroid Build Coastguard Workerstatus collapsed
8967*28e138c6SAndroid Build Coastguard Worker
8968*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8969*28e138c6SAndroid Build Coastguard Worker
8970*28e138c6SAndroid Build Coastguard Worker
8971*28e138c6SAndroid Build Coastguard Worker\backslash
8972*28e138c6SAndroid Build Coastguard Workerend{center}
8973*28e138c6SAndroid Build Coastguard Worker\end_layout
8974*28e138c6SAndroid Build Coastguard Worker
8975*28e138c6SAndroid Build Coastguard Worker\end_inset
8976*28e138c6SAndroid Build Coastguard Worker
8977*28e138c6SAndroid Build Coastguard Worker
8978*28e138c6SAndroid Build Coastguard Worker\end_layout
8979*28e138c6SAndroid Build Coastguard Worker
8980*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8981*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
8982*28e138c6SAndroid Build Coastguard Worker
8983*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
8984*28e138c6SAndroid Build Coastguard WorkerFrame open-loop analysis
8985*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
8986*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
8987*28e138c6SAndroid Build Coastguard Workername "cap:Frame-open-loop-analysis"
8988*28e138c6SAndroid Build Coastguard Worker
8989*28e138c6SAndroid Build Coastguard Worker\end_inset
8990*28e138c6SAndroid Build Coastguard Worker
8991*28e138c6SAndroid Build Coastguard Worker
8992*28e138c6SAndroid Build Coastguard Worker\end_layout
8993*28e138c6SAndroid Build Coastguard Worker
8994*28e138c6SAndroid Build Coastguard Worker\end_inset
8995*28e138c6SAndroid Build Coastguard Worker
8996*28e138c6SAndroid Build Coastguard Worker
8997*28e138c6SAndroid Build Coastguard Worker\end_layout
8998*28e138c6SAndroid Build Coastguard Worker
8999*28e138c6SAndroid Build Coastguard Worker\end_inset
9000*28e138c6SAndroid Build Coastguard Worker
9001*28e138c6SAndroid Build Coastguard Worker
9002*28e138c6SAndroid Build Coastguard Worker\end_layout
9003*28e138c6SAndroid Build Coastguard Worker
9004*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
9005*28e138c6SAndroid Build Coastguard WorkerSub-Frame Analysis-by-Synthesis
9006*28e138c6SAndroid Build Coastguard Worker\end_layout
9007*28e138c6SAndroid Build Coastguard Worker
9008*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
9009*28e138c6SAndroid Build Coastguard Worker\begin_inset Float figure
9010*28e138c6SAndroid Build Coastguard Workerwide false
9011*28e138c6SAndroid Build Coastguard Workersideways false
9012*28e138c6SAndroid Build Coastguard Workerstatus open
9013*28e138c6SAndroid Build Coastguard Worker
9014*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9015*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
9016*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9017*28e138c6SAndroid Build Coastguard Worker
9018*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9019*28e138c6SAndroid Build Coastguard Worker
9020*28e138c6SAndroid Build Coastguard Worker
9021*28e138c6SAndroid Build Coastguard Worker\backslash
9022*28e138c6SAndroid Build Coastguard Workerbegin{center}
9023*28e138c6SAndroid Build Coastguard Worker\end_layout
9024*28e138c6SAndroid Build Coastguard Worker
9025*28e138c6SAndroid Build Coastguard Worker\end_inset
9026*28e138c6SAndroid Build Coastguard Worker
9027*28e138c6SAndroid Build Coastguard Worker
9028*28e138c6SAndroid Build Coastguard Worker\begin_inset Graphics
9029*28e138c6SAndroid Build Coastguard Worker	filename speex_abs.eps
9030*28e138c6SAndroid Build Coastguard Worker	lyxscale 75
9031*28e138c6SAndroid Build Coastguard Worker	width 40page%
9032*28e138c6SAndroid Build Coastguard Worker
9033*28e138c6SAndroid Build Coastguard Worker\end_inset
9034*28e138c6SAndroid Build Coastguard Worker
9035*28e138c6SAndroid Build Coastguard Worker
9036*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
9037*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9038*28e138c6SAndroid Build Coastguard Worker
9039*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9040*28e138c6SAndroid Build Coastguard Worker
9041*28e138c6SAndroid Build Coastguard Worker
9042*28e138c6SAndroid Build Coastguard Worker\backslash
9043*28e138c6SAndroid Build Coastguard Workerend{center}
9044*28e138c6SAndroid Build Coastguard Worker\end_layout
9045*28e138c6SAndroid Build Coastguard Worker
9046*28e138c6SAndroid Build Coastguard Worker\end_inset
9047*28e138c6SAndroid Build Coastguard Worker
9048*28e138c6SAndroid Build Coastguard Worker
9049*28e138c6SAndroid Build Coastguard Worker\end_layout
9050*28e138c6SAndroid Build Coastguard Worker
9051*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9052*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
9053*28e138c6SAndroid Build Coastguard Worker
9054*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9055*28e138c6SAndroid Build Coastguard WorkerAnalysis-by-synthesis closed-loop optimization on a sub-frame.
9056*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
9057*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
9058*28e138c6SAndroid Build Coastguard Workername "cap:Sub-frame-AbS"
9059*28e138c6SAndroid Build Coastguard Worker
9060*28e138c6SAndroid Build Coastguard Worker\end_inset
9061*28e138c6SAndroid Build Coastguard Worker
9062*28e138c6SAndroid Build Coastguard Worker
9063*28e138c6SAndroid Build Coastguard Worker\end_layout
9064*28e138c6SAndroid Build Coastguard Worker
9065*28e138c6SAndroid Build Coastguard Worker\end_inset
9066*28e138c6SAndroid Build Coastguard Worker
9067*28e138c6SAndroid Build Coastguard Worker
9068*28e138c6SAndroid Build Coastguard Worker\end_layout
9069*28e138c6SAndroid Build Coastguard Worker
9070*28e138c6SAndroid Build Coastguard Worker\end_inset
9071*28e138c6SAndroid Build Coastguard Worker
9072*28e138c6SAndroid Build Coastguard Worker
9073*28e138c6SAndroid Build Coastguard Worker\end_layout
9074*28e138c6SAndroid Build Coastguard Worker
9075*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
9076*28e138c6SAndroid Build Coastguard WorkerThe analysis-by-synthesis (AbS) encoder loop is described in Fig.
9077*28e138c6SAndroid Build Coastguard Worker
9078*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
9079*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
9080*28e138c6SAndroid Build Coastguard Workerreference "cap:Sub-frame-AbS"
9081*28e138c6SAndroid Build Coastguard Worker
9082*28e138c6SAndroid Build Coastguard Worker\end_inset
9083*28e138c6SAndroid Build Coastguard Worker
9084*28e138c6SAndroid Build Coastguard Worker.
9085*28e138c6SAndroid Build Coastguard Worker There are three main aspects where Speex significantly differs from most
9086*28e138c6SAndroid Build Coastguard Worker other CELP codecs.
9087*28e138c6SAndroid Build Coastguard Worker First, while most recent CELP codecs make use of fractional pitch estimation
9088*28e138c6SAndroid Build Coastguard Worker with a single gain, Speex uses an integer to encode the pitch period, but
9089*28e138c6SAndroid Build Coastguard Worker uses a 3-tap predictor (3 gains).
9090*28e138c6SAndroid Build Coastguard Worker The adaptive codebook contribution
9091*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $e_{a}[n]$
9092*28e138c6SAndroid Build Coastguard Worker\end_inset
9093*28e138c6SAndroid Build Coastguard Worker
9094*28e138c6SAndroid Build Coastguard Worker can thus be expressed as:
9095*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \begin{equation}
9096*28e138c6SAndroid Build Coastguard Workere_{a}[n]=g_{0}e[n-T-1]+g_{1}e[n-T]+g_{2}e[n-T+1]\label{eq:adaptive-3tap}\end{equation}
9097*28e138c6SAndroid Build Coastguard Worker
9098*28e138c6SAndroid Build Coastguard Worker\end_inset
9099*28e138c6SAndroid Build Coastguard Worker
9100*28e138c6SAndroid Build Coastguard Workerwhere
9101*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $g_{0}$
9102*28e138c6SAndroid Build Coastguard Worker\end_inset
9103*28e138c6SAndroid Build Coastguard Worker
9104*28e138c6SAndroid Build Coastguard Worker,
9105*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $g_{1}$
9106*28e138c6SAndroid Build Coastguard Worker\end_inset
9107*28e138c6SAndroid Build Coastguard Worker
9108*28e138c6SAndroid Build Coastguard Worker and
9109*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $g_{2}$
9110*28e138c6SAndroid Build Coastguard Worker\end_inset
9111*28e138c6SAndroid Build Coastguard Worker
9112*28e138c6SAndroid Build Coastguard Worker are the jointly quantized pitch gains and
9113*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $e[n]$
9114*28e138c6SAndroid Build Coastguard Worker\end_inset
9115*28e138c6SAndroid Build Coastguard Worker
9116*28e138c6SAndroid Build Coastguard Worker is the codec excitation memory.
9117*28e138c6SAndroid Build Coastguard Worker It is worth noting that when the pitch is smaller than the sub-frame size,
9118*28e138c6SAndroid Build Coastguard Worker we repeat the excitation at a period
9119*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $T$
9120*28e138c6SAndroid Build Coastguard Worker\end_inset
9121*28e138c6SAndroid Build Coastguard Worker
9122*28e138c6SAndroid Build Coastguard Worker.
9123*28e138c6SAndroid Build Coastguard Worker For example, when
9124*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $n-T+1\geq0$
9125*28e138c6SAndroid Build Coastguard Worker\end_inset
9126*28e138c6SAndroid Build Coastguard Worker
9127*28e138c6SAndroid Build Coastguard Worker, we use
9128*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $n-2T+1$
9129*28e138c6SAndroid Build Coastguard Worker\end_inset
9130*28e138c6SAndroid Build Coastguard Worker
9131*28e138c6SAndroid Build Coastguard Worker instead.
9132*28e138c6SAndroid Build Coastguard Worker In most modes, the pitch period is encoded with 7 bits in the
9133*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\left[17,144\right]$
9134*28e138c6SAndroid Build Coastguard Worker\end_inset
9135*28e138c6SAndroid Build Coastguard Worker
9136*28e138c6SAndroid Build Coastguard Worker range and the
9137*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $\beta_{i}$
9138*28e138c6SAndroid Build Coastguard Worker\end_inset
9139*28e138c6SAndroid Build Coastguard Worker
9140*28e138c6SAndroid Build Coastguard Worker coefficients are vector-quantized using 7 bits at higher bit-rates (15
9141*28e138c6SAndroid Build Coastguard Worker kbps narrowband and above) and 5 bits at lower bit-rates (11 kbps narrowband
9142*28e138c6SAndroid Build Coastguard Worker and below).
9143*28e138c6SAndroid Build Coastguard Worker\end_layout
9144*28e138c6SAndroid Build Coastguard Worker
9145*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
9146*28e138c6SAndroid Build Coastguard WorkerMany current CELP codecs use moving average (MA) prediction to encode the
9147*28e138c6SAndroid Build Coastguard Worker fixed codebook gain.
9148*28e138c6SAndroid Build Coastguard Worker This provides slightly better coding at the expense of introducing a dependency
9149*28e138c6SAndroid Build Coastguard Worker on previously encoded frames.
9150*28e138c6SAndroid Build Coastguard Worker A second difference is that Speex encodes the fixed codebook gain as the
9151*28e138c6SAndroid Build Coastguard Worker product of the global excitation gain
9152*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $g_{frame}$
9153*28e138c6SAndroid Build Coastguard Worker\end_inset
9154*28e138c6SAndroid Build Coastguard Worker
9155*28e138c6SAndroid Build Coastguard Worker with a sub-frame gain corrections
9156*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $g_{subf}$
9157*28e138c6SAndroid Build Coastguard Worker\end_inset
9158*28e138c6SAndroid Build Coastguard Worker
9159*28e138c6SAndroid Build Coastguard Worker.
9160*28e138c6SAndroid Build Coastguard Worker This increases robustness to packet loss by eliminating the inter-frame
9161*28e138c6SAndroid Build Coastguard Worker dependency.
9162*28e138c6SAndroid Build Coastguard Worker The sub-frame gain correction is encoded before the fixed codebook is searched
9163*28e138c6SAndroid Build Coastguard Worker (not closed-loop optimized) and uses between 0 and 3 bits per sub-frame,
9164*28e138c6SAndroid Build Coastguard Worker depending on the bit-rate.
9165*28e138c6SAndroid Build Coastguard Worker\end_layout
9166*28e138c6SAndroid Build Coastguard Worker
9167*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
9168*28e138c6SAndroid Build Coastguard WorkerThe third difference is that Speex uses sub-vector quantization of the innovatio
9169*28e138c6SAndroid Build Coastguard Workern (fixed codebook) signal instead of an algebraic codebook.
9170*28e138c6SAndroid Build Coastguard Worker Each sub-frame is divided into sub-vectors of lengths ranging between 5
9171*28e138c6SAndroid Build Coastguard Worker and 20 samples.
9172*28e138c6SAndroid Build Coastguard Worker Each sub-vector is chosen from a bitrate-dependent codebook and all sub-vectors
9173*28e138c6SAndroid Build Coastguard Worker are concatenated to form a sub-frame.
9174*28e138c6SAndroid Build Coastguard Worker As an example, the 3.95 kbps mode uses a sub-vector size of 20 samples with
9175*28e138c6SAndroid Build Coastguard Worker 32 entries in the codebook (5 bits).
9176*28e138c6SAndroid Build Coastguard Worker This means that the innovation is encoded with 10 bits per sub-frame, or
9177*28e138c6SAndroid Build Coastguard Worker 2000 bps.
9178*28e138c6SAndroid Build Coastguard Worker On the other hand, the 18.2 kbps mode uses a sub-vector size of 5 samples
9179*28e138c6SAndroid Build Coastguard Worker with 256 entries in the codebook (8 bits), so the innovation uses 64 bits
9180*28e138c6SAndroid Build Coastguard Worker per sub-frame, or 12800 bps.
9181*28e138c6SAndroid Build Coastguard Worker
9182*28e138c6SAndroid Build Coastguard Worker\end_layout
9183*28e138c6SAndroid Build Coastguard Worker
9184*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
9185*28e138c6SAndroid Build Coastguard WorkerBit-rates
9186*28e138c6SAndroid Build Coastguard Worker\end_layout
9187*28e138c6SAndroid Build Coastguard Worker
9188*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
9189*28e138c6SAndroid Build Coastguard WorkerSo far, no MOS (Mean Opinion Score
9190*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
9191*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9192*28e138c6SAndroid Build Coastguard Worker
9193*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9194*28e138c6SAndroid Build Coastguard Workermean opinion score
9195*28e138c6SAndroid Build Coastguard Worker\end_layout
9196*28e138c6SAndroid Build Coastguard Worker
9197*28e138c6SAndroid Build Coastguard Worker\end_inset
9198*28e138c6SAndroid Build Coastguard Worker
9199*28e138c6SAndroid Build Coastguard Worker) subjective evaluation has been performed for Speex.
9200*28e138c6SAndroid Build Coastguard Worker In order to give an idea of the quality achievable with it, table
9201*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
9202*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
9203*28e138c6SAndroid Build Coastguard Workerreference "cap:quality_vs_bps"
9204*28e138c6SAndroid Build Coastguard Worker
9205*28e138c6SAndroid Build Coastguard Worker\end_inset
9206*28e138c6SAndroid Build Coastguard Worker
9207*28e138c6SAndroid Build Coastguard Worker presents my own subjective opinion on it.
9208*28e138c6SAndroid Build Coastguard Worker It should be noted that different people will perceive the quality differently
9209*28e138c6SAndroid Build Coastguard Worker and that the person that designed the codec often has a bias (one way or
9210*28e138c6SAndroid Build Coastguard Worker another) when it comes to subjective evaluation.
9211*28e138c6SAndroid Build Coastguard Worker Last thing, it should be noted that for most codecs (including Speex) encoding
9212*28e138c6SAndroid Build Coastguard Worker quality sometimes varies depending on the input.
9213*28e138c6SAndroid Build Coastguard Worker Note that the complexity is only approximate (within 0.5 mflops and using
9214*28e138c6SAndroid Build Coastguard Worker the lowest complexity setting).
9215*28e138c6SAndroid Build Coastguard Worker Decoding requires approximately 0.5 mflops
9216*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
9217*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9218*28e138c6SAndroid Build Coastguard Worker
9219*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9220*28e138c6SAndroid Build Coastguard Workercomplexity
9221*28e138c6SAndroid Build Coastguard Worker\end_layout
9222*28e138c6SAndroid Build Coastguard Worker
9223*28e138c6SAndroid Build Coastguard Worker\end_inset
9224*28e138c6SAndroid Build Coastguard Worker
9225*28e138c6SAndroid Build Coastguard Worker in most modes (1 mflops with perceptual enhancement).
9226*28e138c6SAndroid Build Coastguard Worker\end_layout
9227*28e138c6SAndroid Build Coastguard Worker
9228*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
9229*28e138c6SAndroid Build Coastguard Worker\begin_inset Float table
9230*28e138c6SAndroid Build Coastguard Workerplacement h
9231*28e138c6SAndroid Build Coastguard Workerwide true
9232*28e138c6SAndroid Build Coastguard Workersideways false
9233*28e138c6SAndroid Build Coastguard Workerstatus open
9234*28e138c6SAndroid Build Coastguard Worker
9235*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9236*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
9237*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9238*28e138c6SAndroid Build Coastguard Worker
9239*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9240*28e138c6SAndroid Build Coastguard Worker
9241*28e138c6SAndroid Build Coastguard Worker
9242*28e138c6SAndroid Build Coastguard Worker\backslash
9243*28e138c6SAndroid Build Coastguard Workerbegin{center}
9244*28e138c6SAndroid Build Coastguard Worker\end_layout
9245*28e138c6SAndroid Build Coastguard Worker
9246*28e138c6SAndroid Build Coastguard Worker\end_inset
9247*28e138c6SAndroid Build Coastguard Worker
9248*28e138c6SAndroid Build Coastguard Worker
9249*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
9250*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="17" columns="5">
9251*28e138c6SAndroid Build Coastguard Worker<features>
9252*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
9253*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
9254*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
9255*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
9256*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
9257*28e138c6SAndroid Build Coastguard Worker<row>
9258*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
9259*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9260*28e138c6SAndroid Build Coastguard Worker
9261*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9262*28e138c6SAndroid Build Coastguard WorkerMode
9263*28e138c6SAndroid Build Coastguard Worker\end_layout
9264*28e138c6SAndroid Build Coastguard Worker
9265*28e138c6SAndroid Build Coastguard Worker\end_inset
9266*28e138c6SAndroid Build Coastguard Worker</cell>
9267*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
9268*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9269*28e138c6SAndroid Build Coastguard Worker
9270*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9271*28e138c6SAndroid Build Coastguard WorkerQuality
9272*28e138c6SAndroid Build Coastguard Worker\end_layout
9273*28e138c6SAndroid Build Coastguard Worker
9274*28e138c6SAndroid Build Coastguard Worker\end_inset
9275*28e138c6SAndroid Build Coastguard Worker</cell>
9276*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
9277*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9278*28e138c6SAndroid Build Coastguard Worker
9279*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9280*28e138c6SAndroid Build Coastguard WorkerBit-rate
9281*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
9282*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9283*28e138c6SAndroid Build Coastguard Worker
9284*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9285*28e138c6SAndroid Build Coastguard Workerbit-rate
9286*28e138c6SAndroid Build Coastguard Worker\end_layout
9287*28e138c6SAndroid Build Coastguard Worker
9288*28e138c6SAndroid Build Coastguard Worker\end_inset
9289*28e138c6SAndroid Build Coastguard Worker
9290*28e138c6SAndroid Build Coastguard Worker (bps)
9291*28e138c6SAndroid Build Coastguard Worker\end_layout
9292*28e138c6SAndroid Build Coastguard Worker
9293*28e138c6SAndroid Build Coastguard Worker\end_inset
9294*28e138c6SAndroid Build Coastguard Worker</cell>
9295*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
9296*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9297*28e138c6SAndroid Build Coastguard Worker
9298*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9299*28e138c6SAndroid Build Coastguard Workermflops
9300*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
9301*28e138c6SAndroid Build Coastguard Workerstatus collapsed
9302*28e138c6SAndroid Build Coastguard Worker
9303*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9304*28e138c6SAndroid Build Coastguard Workercomplexity
9305*28e138c6SAndroid Build Coastguard Worker\end_layout
9306*28e138c6SAndroid Build Coastguard Worker
9307*28e138c6SAndroid Build Coastguard Worker\end_inset
9308*28e138c6SAndroid Build Coastguard Worker
9309*28e138c6SAndroid Build Coastguard Worker
9310*28e138c6SAndroid Build Coastguard Worker\end_layout
9311*28e138c6SAndroid Build Coastguard Worker
9312*28e138c6SAndroid Build Coastguard Worker\end_inset
9313*28e138c6SAndroid Build Coastguard Worker</cell>
9314*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
9315*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9316*28e138c6SAndroid Build Coastguard Worker
9317*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9318*28e138c6SAndroid Build Coastguard WorkerQuality/description
9319*28e138c6SAndroid Build Coastguard Worker\end_layout
9320*28e138c6SAndroid Build Coastguard Worker
9321*28e138c6SAndroid Build Coastguard Worker\end_inset
9322*28e138c6SAndroid Build Coastguard Worker</cell>
9323*28e138c6SAndroid Build Coastguard Worker</row>
9324*28e138c6SAndroid Build Coastguard Worker<row>
9325*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9326*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9327*28e138c6SAndroid Build Coastguard Worker
9328*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9329*28e138c6SAndroid Build Coastguard Worker0
9330*28e138c6SAndroid Build Coastguard Worker\end_layout
9331*28e138c6SAndroid Build Coastguard Worker
9332*28e138c6SAndroid Build Coastguard Worker\end_inset
9333*28e138c6SAndroid Build Coastguard Worker</cell>
9334*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9335*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9336*28e138c6SAndroid Build Coastguard Worker
9337*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9338*28e138c6SAndroid Build Coastguard Worker-
9339*28e138c6SAndroid Build Coastguard Worker\end_layout
9340*28e138c6SAndroid Build Coastguard Worker
9341*28e138c6SAndroid Build Coastguard Worker\end_inset
9342*28e138c6SAndroid Build Coastguard Worker</cell>
9343*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9344*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9345*28e138c6SAndroid Build Coastguard Worker
9346*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9347*28e138c6SAndroid Build Coastguard Worker250
9348*28e138c6SAndroid Build Coastguard Worker\end_layout
9349*28e138c6SAndroid Build Coastguard Worker
9350*28e138c6SAndroid Build Coastguard Worker\end_inset
9351*28e138c6SAndroid Build Coastguard Worker</cell>
9352*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9353*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9354*28e138c6SAndroid Build Coastguard Worker
9355*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9356*28e138c6SAndroid Build Coastguard Worker0
9357*28e138c6SAndroid Build Coastguard Worker\end_layout
9358*28e138c6SAndroid Build Coastguard Worker
9359*28e138c6SAndroid Build Coastguard Worker\end_inset
9360*28e138c6SAndroid Build Coastguard Worker</cell>
9361*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9362*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9363*28e138c6SAndroid Build Coastguard Worker
9364*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9365*28e138c6SAndroid Build Coastguard WorkerNo transmission (DTX)
9366*28e138c6SAndroid Build Coastguard Worker\end_layout
9367*28e138c6SAndroid Build Coastguard Worker
9368*28e138c6SAndroid Build Coastguard Worker\end_inset
9369*28e138c6SAndroid Build Coastguard Worker</cell>
9370*28e138c6SAndroid Build Coastguard Worker</row>
9371*28e138c6SAndroid Build Coastguard Worker<row>
9372*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9373*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9374*28e138c6SAndroid Build Coastguard Worker
9375*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9376*28e138c6SAndroid Build Coastguard Worker1
9377*28e138c6SAndroid Build Coastguard Worker\end_layout
9378*28e138c6SAndroid Build Coastguard Worker
9379*28e138c6SAndroid Build Coastguard Worker\end_inset
9380*28e138c6SAndroid Build Coastguard Worker</cell>
9381*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9382*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9383*28e138c6SAndroid Build Coastguard Worker
9384*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9385*28e138c6SAndroid Build Coastguard Worker0
9386*28e138c6SAndroid Build Coastguard Worker\end_layout
9387*28e138c6SAndroid Build Coastguard Worker
9388*28e138c6SAndroid Build Coastguard Worker\end_inset
9389*28e138c6SAndroid Build Coastguard Worker</cell>
9390*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9391*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9392*28e138c6SAndroid Build Coastguard Worker
9393*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9394*28e138c6SAndroid Build Coastguard Worker2,150
9395*28e138c6SAndroid Build Coastguard Worker\end_layout
9396*28e138c6SAndroid Build Coastguard Worker
9397*28e138c6SAndroid Build Coastguard Worker\end_inset
9398*28e138c6SAndroid Build Coastguard Worker</cell>
9399*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9400*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9401*28e138c6SAndroid Build Coastguard Worker
9402*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9403*28e138c6SAndroid Build Coastguard Worker6
9404*28e138c6SAndroid Build Coastguard Worker\end_layout
9405*28e138c6SAndroid Build Coastguard Worker
9406*28e138c6SAndroid Build Coastguard Worker\end_inset
9407*28e138c6SAndroid Build Coastguard Worker</cell>
9408*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9409*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9410*28e138c6SAndroid Build Coastguard Worker
9411*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9412*28e138c6SAndroid Build Coastguard WorkerVocoder (mostly for comfort noise)
9413*28e138c6SAndroid Build Coastguard Worker\end_layout
9414*28e138c6SAndroid Build Coastguard Worker
9415*28e138c6SAndroid Build Coastguard Worker\end_inset
9416*28e138c6SAndroid Build Coastguard Worker</cell>
9417*28e138c6SAndroid Build Coastguard Worker</row>
9418*28e138c6SAndroid Build Coastguard Worker<row>
9419*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9420*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9421*28e138c6SAndroid Build Coastguard Worker
9422*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9423*28e138c6SAndroid Build Coastguard Worker2
9424*28e138c6SAndroid Build Coastguard Worker\end_layout
9425*28e138c6SAndroid Build Coastguard Worker
9426*28e138c6SAndroid Build Coastguard Worker\end_inset
9427*28e138c6SAndroid Build Coastguard Worker</cell>
9428*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9429*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9430*28e138c6SAndroid Build Coastguard Worker
9431*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9432*28e138c6SAndroid Build Coastguard Worker2
9433*28e138c6SAndroid Build Coastguard Worker\end_layout
9434*28e138c6SAndroid Build Coastguard Worker
9435*28e138c6SAndroid Build Coastguard Worker\end_inset
9436*28e138c6SAndroid Build Coastguard Worker</cell>
9437*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9438*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9439*28e138c6SAndroid Build Coastguard Worker
9440*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9441*28e138c6SAndroid Build Coastguard Worker5,950
9442*28e138c6SAndroid Build Coastguard Worker\end_layout
9443*28e138c6SAndroid Build Coastguard Worker
9444*28e138c6SAndroid Build Coastguard Worker\end_inset
9445*28e138c6SAndroid Build Coastguard Worker</cell>
9446*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9447*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9448*28e138c6SAndroid Build Coastguard Worker
9449*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9450*28e138c6SAndroid Build Coastguard Worker9
9451*28e138c6SAndroid Build Coastguard Worker\end_layout
9452*28e138c6SAndroid Build Coastguard Worker
9453*28e138c6SAndroid Build Coastguard Worker\end_inset
9454*28e138c6SAndroid Build Coastguard Worker</cell>
9455*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9456*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9457*28e138c6SAndroid Build Coastguard Worker
9458*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9459*28e138c6SAndroid Build Coastguard WorkerVery noticeable artifacts/noise, good intelligibility
9460*28e138c6SAndroid Build Coastguard Worker\end_layout
9461*28e138c6SAndroid Build Coastguard Worker
9462*28e138c6SAndroid Build Coastguard Worker\end_inset
9463*28e138c6SAndroid Build Coastguard Worker</cell>
9464*28e138c6SAndroid Build Coastguard Worker</row>
9465*28e138c6SAndroid Build Coastguard Worker<row>
9466*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9467*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9468*28e138c6SAndroid Build Coastguard Worker
9469*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9470*28e138c6SAndroid Build Coastguard Worker3
9471*28e138c6SAndroid Build Coastguard Worker\end_layout
9472*28e138c6SAndroid Build Coastguard Worker
9473*28e138c6SAndroid Build Coastguard Worker\end_inset
9474*28e138c6SAndroid Build Coastguard Worker</cell>
9475*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9476*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9477*28e138c6SAndroid Build Coastguard Worker
9478*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9479*28e138c6SAndroid Build Coastguard Worker3-4
9480*28e138c6SAndroid Build Coastguard Worker\end_layout
9481*28e138c6SAndroid Build Coastguard Worker
9482*28e138c6SAndroid Build Coastguard Worker\end_inset
9483*28e138c6SAndroid Build Coastguard Worker</cell>
9484*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9485*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9486*28e138c6SAndroid Build Coastguard Worker
9487*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9488*28e138c6SAndroid Build Coastguard Worker8,000
9489*28e138c6SAndroid Build Coastguard Worker\end_layout
9490*28e138c6SAndroid Build Coastguard Worker
9491*28e138c6SAndroid Build Coastguard Worker\end_inset
9492*28e138c6SAndroid Build Coastguard Worker</cell>
9493*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9494*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9495*28e138c6SAndroid Build Coastguard Worker
9496*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9497*28e138c6SAndroid Build Coastguard Worker10
9498*28e138c6SAndroid Build Coastguard Worker\end_layout
9499*28e138c6SAndroid Build Coastguard Worker
9500*28e138c6SAndroid Build Coastguard Worker\end_inset
9501*28e138c6SAndroid Build Coastguard Worker</cell>
9502*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9503*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9504*28e138c6SAndroid Build Coastguard Worker
9505*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9506*28e138c6SAndroid Build Coastguard WorkerArtifacts/noise sometimes noticeable
9507*28e138c6SAndroid Build Coastguard Worker\end_layout
9508*28e138c6SAndroid Build Coastguard Worker
9509*28e138c6SAndroid Build Coastguard Worker\end_inset
9510*28e138c6SAndroid Build Coastguard Worker</cell>
9511*28e138c6SAndroid Build Coastguard Worker</row>
9512*28e138c6SAndroid Build Coastguard Worker<row>
9513*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9514*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9515*28e138c6SAndroid Build Coastguard Worker
9516*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9517*28e138c6SAndroid Build Coastguard Worker4
9518*28e138c6SAndroid Build Coastguard Worker\end_layout
9519*28e138c6SAndroid Build Coastguard Worker
9520*28e138c6SAndroid Build Coastguard Worker\end_inset
9521*28e138c6SAndroid Build Coastguard Worker</cell>
9522*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9523*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9524*28e138c6SAndroid Build Coastguard Worker
9525*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9526*28e138c6SAndroid Build Coastguard Worker5-6
9527*28e138c6SAndroid Build Coastguard Worker\end_layout
9528*28e138c6SAndroid Build Coastguard Worker
9529*28e138c6SAndroid Build Coastguard Worker\end_inset
9530*28e138c6SAndroid Build Coastguard Worker</cell>
9531*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9532*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9533*28e138c6SAndroid Build Coastguard Worker
9534*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9535*28e138c6SAndroid Build Coastguard Worker11,000
9536*28e138c6SAndroid Build Coastguard Worker\end_layout
9537*28e138c6SAndroid Build Coastguard Worker
9538*28e138c6SAndroid Build Coastguard Worker\end_inset
9539*28e138c6SAndroid Build Coastguard Worker</cell>
9540*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9541*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9542*28e138c6SAndroid Build Coastguard Worker
9543*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9544*28e138c6SAndroid Build Coastguard Worker14
9545*28e138c6SAndroid Build Coastguard Worker\end_layout
9546*28e138c6SAndroid Build Coastguard Worker
9547*28e138c6SAndroid Build Coastguard Worker\end_inset
9548*28e138c6SAndroid Build Coastguard Worker</cell>
9549*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9550*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9551*28e138c6SAndroid Build Coastguard Worker
9552*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9553*28e138c6SAndroid Build Coastguard WorkerArtifacts usually noticeable only with headphones
9554*28e138c6SAndroid Build Coastguard Worker\end_layout
9555*28e138c6SAndroid Build Coastguard Worker
9556*28e138c6SAndroid Build Coastguard Worker\end_inset
9557*28e138c6SAndroid Build Coastguard Worker</cell>
9558*28e138c6SAndroid Build Coastguard Worker</row>
9559*28e138c6SAndroid Build Coastguard Worker<row>
9560*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9561*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9562*28e138c6SAndroid Build Coastguard Worker
9563*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9564*28e138c6SAndroid Build Coastguard Worker5
9565*28e138c6SAndroid Build Coastguard Worker\end_layout
9566*28e138c6SAndroid Build Coastguard Worker
9567*28e138c6SAndroid Build Coastguard Worker\end_inset
9568*28e138c6SAndroid Build Coastguard Worker</cell>
9569*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9570*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9571*28e138c6SAndroid Build Coastguard Worker
9572*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9573*28e138c6SAndroid Build Coastguard Worker7-8
9574*28e138c6SAndroid Build Coastguard Worker\end_layout
9575*28e138c6SAndroid Build Coastguard Worker
9576*28e138c6SAndroid Build Coastguard Worker\end_inset
9577*28e138c6SAndroid Build Coastguard Worker</cell>
9578*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9579*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9580*28e138c6SAndroid Build Coastguard Worker
9581*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9582*28e138c6SAndroid Build Coastguard Worker15,000
9583*28e138c6SAndroid Build Coastguard Worker\end_layout
9584*28e138c6SAndroid Build Coastguard Worker
9585*28e138c6SAndroid Build Coastguard Worker\end_inset
9586*28e138c6SAndroid Build Coastguard Worker</cell>
9587*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9588*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9589*28e138c6SAndroid Build Coastguard Worker
9590*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9591*28e138c6SAndroid Build Coastguard Worker11
9592*28e138c6SAndroid Build Coastguard Worker\end_layout
9593*28e138c6SAndroid Build Coastguard Worker
9594*28e138c6SAndroid Build Coastguard Worker\end_inset
9595*28e138c6SAndroid Build Coastguard Worker</cell>
9596*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9597*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9598*28e138c6SAndroid Build Coastguard Worker
9599*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9600*28e138c6SAndroid Build Coastguard WorkerNeed good headphones to tell the difference
9601*28e138c6SAndroid Build Coastguard Worker\end_layout
9602*28e138c6SAndroid Build Coastguard Worker
9603*28e138c6SAndroid Build Coastguard Worker\end_inset
9604*28e138c6SAndroid Build Coastguard Worker</cell>
9605*28e138c6SAndroid Build Coastguard Worker</row>
9606*28e138c6SAndroid Build Coastguard Worker<row>
9607*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9608*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9609*28e138c6SAndroid Build Coastguard Worker
9610*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9611*28e138c6SAndroid Build Coastguard Worker6
9612*28e138c6SAndroid Build Coastguard Worker\end_layout
9613*28e138c6SAndroid Build Coastguard Worker
9614*28e138c6SAndroid Build Coastguard Worker\end_inset
9615*28e138c6SAndroid Build Coastguard Worker</cell>
9616*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9617*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9618*28e138c6SAndroid Build Coastguard Worker
9619*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9620*28e138c6SAndroid Build Coastguard Worker9
9621*28e138c6SAndroid Build Coastguard Worker\end_layout
9622*28e138c6SAndroid Build Coastguard Worker
9623*28e138c6SAndroid Build Coastguard Worker\end_inset
9624*28e138c6SAndroid Build Coastguard Worker</cell>
9625*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9626*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9627*28e138c6SAndroid Build Coastguard Worker
9628*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9629*28e138c6SAndroid Build Coastguard Worker18,200
9630*28e138c6SAndroid Build Coastguard Worker\end_layout
9631*28e138c6SAndroid Build Coastguard Worker
9632*28e138c6SAndroid Build Coastguard Worker\end_inset
9633*28e138c6SAndroid Build Coastguard Worker</cell>
9634*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9635*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9636*28e138c6SAndroid Build Coastguard Worker
9637*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9638*28e138c6SAndroid Build Coastguard Worker17.5
9639*28e138c6SAndroid Build Coastguard Worker\end_layout
9640*28e138c6SAndroid Build Coastguard Worker
9641*28e138c6SAndroid Build Coastguard Worker\end_inset
9642*28e138c6SAndroid Build Coastguard Worker</cell>
9643*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9644*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9645*28e138c6SAndroid Build Coastguard Worker
9646*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9647*28e138c6SAndroid Build Coastguard WorkerHard to tell the difference even with good headphones
9648*28e138c6SAndroid Build Coastguard Worker\end_layout
9649*28e138c6SAndroid Build Coastguard Worker
9650*28e138c6SAndroid Build Coastguard Worker\end_inset
9651*28e138c6SAndroid Build Coastguard Worker</cell>
9652*28e138c6SAndroid Build Coastguard Worker</row>
9653*28e138c6SAndroid Build Coastguard Worker<row>
9654*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9655*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9656*28e138c6SAndroid Build Coastguard Worker
9657*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9658*28e138c6SAndroid Build Coastguard Worker7
9659*28e138c6SAndroid Build Coastguard Worker\end_layout
9660*28e138c6SAndroid Build Coastguard Worker
9661*28e138c6SAndroid Build Coastguard Worker\end_inset
9662*28e138c6SAndroid Build Coastguard Worker</cell>
9663*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9664*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9665*28e138c6SAndroid Build Coastguard Worker
9666*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9667*28e138c6SAndroid Build Coastguard Worker10
9668*28e138c6SAndroid Build Coastguard Worker\end_layout
9669*28e138c6SAndroid Build Coastguard Worker
9670*28e138c6SAndroid Build Coastguard Worker\end_inset
9671*28e138c6SAndroid Build Coastguard Worker</cell>
9672*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9673*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9674*28e138c6SAndroid Build Coastguard Worker
9675*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9676*28e138c6SAndroid Build Coastguard Worker24,600
9677*28e138c6SAndroid Build Coastguard Worker\end_layout
9678*28e138c6SAndroid Build Coastguard Worker
9679*28e138c6SAndroid Build Coastguard Worker\end_inset
9680*28e138c6SAndroid Build Coastguard Worker</cell>
9681*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9682*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9683*28e138c6SAndroid Build Coastguard Worker
9684*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9685*28e138c6SAndroid Build Coastguard Worker14.5
9686*28e138c6SAndroid Build Coastguard Worker\end_layout
9687*28e138c6SAndroid Build Coastguard Worker
9688*28e138c6SAndroid Build Coastguard Worker\end_inset
9689*28e138c6SAndroid Build Coastguard Worker</cell>
9690*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9691*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9692*28e138c6SAndroid Build Coastguard Worker
9693*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9694*28e138c6SAndroid Build Coastguard WorkerCompletely transparent for voice, good quality music
9695*28e138c6SAndroid Build Coastguard Worker\end_layout
9696*28e138c6SAndroid Build Coastguard Worker
9697*28e138c6SAndroid Build Coastguard Worker\end_inset
9698*28e138c6SAndroid Build Coastguard Worker</cell>
9699*28e138c6SAndroid Build Coastguard Worker</row>
9700*28e138c6SAndroid Build Coastguard Worker<row>
9701*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9702*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9703*28e138c6SAndroid Build Coastguard Worker
9704*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9705*28e138c6SAndroid Build Coastguard Worker8
9706*28e138c6SAndroid Build Coastguard Worker\end_layout
9707*28e138c6SAndroid Build Coastguard Worker
9708*28e138c6SAndroid Build Coastguard Worker\end_inset
9709*28e138c6SAndroid Build Coastguard Worker</cell>
9710*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9711*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9712*28e138c6SAndroid Build Coastguard Worker
9713*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9714*28e138c6SAndroid Build Coastguard Worker1
9715*28e138c6SAndroid Build Coastguard Worker\end_layout
9716*28e138c6SAndroid Build Coastguard Worker
9717*28e138c6SAndroid Build Coastguard Worker\end_inset
9718*28e138c6SAndroid Build Coastguard Worker</cell>
9719*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9720*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9721*28e138c6SAndroid Build Coastguard Worker
9722*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9723*28e138c6SAndroid Build Coastguard Worker3,950
9724*28e138c6SAndroid Build Coastguard Worker\end_layout
9725*28e138c6SAndroid Build Coastguard Worker
9726*28e138c6SAndroid Build Coastguard Worker\end_inset
9727*28e138c6SAndroid Build Coastguard Worker</cell>
9728*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9729*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9730*28e138c6SAndroid Build Coastguard Worker
9731*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9732*28e138c6SAndroid Build Coastguard Worker10.5
9733*28e138c6SAndroid Build Coastguard Worker\end_layout
9734*28e138c6SAndroid Build Coastguard Worker
9735*28e138c6SAndroid Build Coastguard Worker\end_inset
9736*28e138c6SAndroid Build Coastguard Worker</cell>
9737*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9738*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9739*28e138c6SAndroid Build Coastguard Worker
9740*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9741*28e138c6SAndroid Build Coastguard WorkerVery noticeable artifacts/noise, good intelligibility
9742*28e138c6SAndroid Build Coastguard Worker\end_layout
9743*28e138c6SAndroid Build Coastguard Worker
9744*28e138c6SAndroid Build Coastguard Worker\end_inset
9745*28e138c6SAndroid Build Coastguard Worker</cell>
9746*28e138c6SAndroid Build Coastguard Worker</row>
9747*28e138c6SAndroid Build Coastguard Worker<row>
9748*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9749*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9750*28e138c6SAndroid Build Coastguard Worker
9751*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9752*28e138c6SAndroid Build Coastguard Worker9
9753*28e138c6SAndroid Build Coastguard Worker\end_layout
9754*28e138c6SAndroid Build Coastguard Worker
9755*28e138c6SAndroid Build Coastguard Worker\end_inset
9756*28e138c6SAndroid Build Coastguard Worker</cell>
9757*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9758*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9759*28e138c6SAndroid Build Coastguard Worker
9760*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9761*28e138c6SAndroid Build Coastguard Worker-
9762*28e138c6SAndroid Build Coastguard Worker\end_layout
9763*28e138c6SAndroid Build Coastguard Worker
9764*28e138c6SAndroid Build Coastguard Worker\end_inset
9765*28e138c6SAndroid Build Coastguard Worker</cell>
9766*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9767*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9768*28e138c6SAndroid Build Coastguard Worker
9769*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9770*28e138c6SAndroid Build Coastguard Worker-
9771*28e138c6SAndroid Build Coastguard Worker\end_layout
9772*28e138c6SAndroid Build Coastguard Worker
9773*28e138c6SAndroid Build Coastguard Worker\end_inset
9774*28e138c6SAndroid Build Coastguard Worker</cell>
9775*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9776*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9777*28e138c6SAndroid Build Coastguard Worker
9778*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9779*28e138c6SAndroid Build Coastguard Worker-
9780*28e138c6SAndroid Build Coastguard Worker\end_layout
9781*28e138c6SAndroid Build Coastguard Worker
9782*28e138c6SAndroid Build Coastguard Worker\end_inset
9783*28e138c6SAndroid Build Coastguard Worker</cell>
9784*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9785*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9786*28e138c6SAndroid Build Coastguard Worker
9787*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9788*28e138c6SAndroid Build Coastguard Workerreserved
9789*28e138c6SAndroid Build Coastguard Worker\end_layout
9790*28e138c6SAndroid Build Coastguard Worker
9791*28e138c6SAndroid Build Coastguard Worker\end_inset
9792*28e138c6SAndroid Build Coastguard Worker</cell>
9793*28e138c6SAndroid Build Coastguard Worker</row>
9794*28e138c6SAndroid Build Coastguard Worker<row>
9795*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9796*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9797*28e138c6SAndroid Build Coastguard Worker
9798*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9799*28e138c6SAndroid Build Coastguard Worker10
9800*28e138c6SAndroid Build Coastguard Worker\end_layout
9801*28e138c6SAndroid Build Coastguard Worker
9802*28e138c6SAndroid Build Coastguard Worker\end_inset
9803*28e138c6SAndroid Build Coastguard Worker</cell>
9804*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9805*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9806*28e138c6SAndroid Build Coastguard Worker
9807*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9808*28e138c6SAndroid Build Coastguard Worker-
9809*28e138c6SAndroid Build Coastguard Worker\end_layout
9810*28e138c6SAndroid Build Coastguard Worker
9811*28e138c6SAndroid Build Coastguard Worker\end_inset
9812*28e138c6SAndroid Build Coastguard Worker</cell>
9813*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9814*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9815*28e138c6SAndroid Build Coastguard Worker
9816*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9817*28e138c6SAndroid Build Coastguard Worker-
9818*28e138c6SAndroid Build Coastguard Worker\end_layout
9819*28e138c6SAndroid Build Coastguard Worker
9820*28e138c6SAndroid Build Coastguard Worker\end_inset
9821*28e138c6SAndroid Build Coastguard Worker</cell>
9822*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9823*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9824*28e138c6SAndroid Build Coastguard Worker
9825*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9826*28e138c6SAndroid Build Coastguard Worker-
9827*28e138c6SAndroid Build Coastguard Worker\end_layout
9828*28e138c6SAndroid Build Coastguard Worker
9829*28e138c6SAndroid Build Coastguard Worker\end_inset
9830*28e138c6SAndroid Build Coastguard Worker</cell>
9831*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9832*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9833*28e138c6SAndroid Build Coastguard Worker
9834*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9835*28e138c6SAndroid Build Coastguard Workerreserved
9836*28e138c6SAndroid Build Coastguard Worker\end_layout
9837*28e138c6SAndroid Build Coastguard Worker
9838*28e138c6SAndroid Build Coastguard Worker\end_inset
9839*28e138c6SAndroid Build Coastguard Worker</cell>
9840*28e138c6SAndroid Build Coastguard Worker</row>
9841*28e138c6SAndroid Build Coastguard Worker<row>
9842*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9843*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9844*28e138c6SAndroid Build Coastguard Worker
9845*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9846*28e138c6SAndroid Build Coastguard Worker11
9847*28e138c6SAndroid Build Coastguard Worker\end_layout
9848*28e138c6SAndroid Build Coastguard Worker
9849*28e138c6SAndroid Build Coastguard Worker\end_inset
9850*28e138c6SAndroid Build Coastguard Worker</cell>
9851*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9852*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9853*28e138c6SAndroid Build Coastguard Worker
9854*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9855*28e138c6SAndroid Build Coastguard Worker-
9856*28e138c6SAndroid Build Coastguard Worker\end_layout
9857*28e138c6SAndroid Build Coastguard Worker
9858*28e138c6SAndroid Build Coastguard Worker\end_inset
9859*28e138c6SAndroid Build Coastguard Worker</cell>
9860*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9861*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9862*28e138c6SAndroid Build Coastguard Worker
9863*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9864*28e138c6SAndroid Build Coastguard Worker-
9865*28e138c6SAndroid Build Coastguard Worker\end_layout
9866*28e138c6SAndroid Build Coastguard Worker
9867*28e138c6SAndroid Build Coastguard Worker\end_inset
9868*28e138c6SAndroid Build Coastguard Worker</cell>
9869*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9870*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9871*28e138c6SAndroid Build Coastguard Worker
9872*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9873*28e138c6SAndroid Build Coastguard Worker-
9874*28e138c6SAndroid Build Coastguard Worker\end_layout
9875*28e138c6SAndroid Build Coastguard Worker
9876*28e138c6SAndroid Build Coastguard Worker\end_inset
9877*28e138c6SAndroid Build Coastguard Worker</cell>
9878*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9879*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9880*28e138c6SAndroid Build Coastguard Worker
9881*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9882*28e138c6SAndroid Build Coastguard Workerreserved
9883*28e138c6SAndroid Build Coastguard Worker\end_layout
9884*28e138c6SAndroid Build Coastguard Worker
9885*28e138c6SAndroid Build Coastguard Worker\end_inset
9886*28e138c6SAndroid Build Coastguard Worker</cell>
9887*28e138c6SAndroid Build Coastguard Worker</row>
9888*28e138c6SAndroid Build Coastguard Worker<row>
9889*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9890*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9891*28e138c6SAndroid Build Coastguard Worker
9892*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9893*28e138c6SAndroid Build Coastguard Worker12
9894*28e138c6SAndroid Build Coastguard Worker\end_layout
9895*28e138c6SAndroid Build Coastguard Worker
9896*28e138c6SAndroid Build Coastguard Worker\end_inset
9897*28e138c6SAndroid Build Coastguard Worker</cell>
9898*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9899*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9900*28e138c6SAndroid Build Coastguard Worker
9901*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9902*28e138c6SAndroid Build Coastguard Worker-
9903*28e138c6SAndroid Build Coastguard Worker\end_layout
9904*28e138c6SAndroid Build Coastguard Worker
9905*28e138c6SAndroid Build Coastguard Worker\end_inset
9906*28e138c6SAndroid Build Coastguard Worker</cell>
9907*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9908*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9909*28e138c6SAndroid Build Coastguard Worker
9910*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9911*28e138c6SAndroid Build Coastguard Worker-
9912*28e138c6SAndroid Build Coastguard Worker\end_layout
9913*28e138c6SAndroid Build Coastguard Worker
9914*28e138c6SAndroid Build Coastguard Worker\end_inset
9915*28e138c6SAndroid Build Coastguard Worker</cell>
9916*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9917*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9918*28e138c6SAndroid Build Coastguard Worker
9919*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9920*28e138c6SAndroid Build Coastguard Worker-
9921*28e138c6SAndroid Build Coastguard Worker\end_layout
9922*28e138c6SAndroid Build Coastguard Worker
9923*28e138c6SAndroid Build Coastguard Worker\end_inset
9924*28e138c6SAndroid Build Coastguard Worker</cell>
9925*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9926*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9927*28e138c6SAndroid Build Coastguard Worker
9928*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9929*28e138c6SAndroid Build Coastguard Workerreserved
9930*28e138c6SAndroid Build Coastguard Worker\end_layout
9931*28e138c6SAndroid Build Coastguard Worker
9932*28e138c6SAndroid Build Coastguard Worker\end_inset
9933*28e138c6SAndroid Build Coastguard Worker</cell>
9934*28e138c6SAndroid Build Coastguard Worker</row>
9935*28e138c6SAndroid Build Coastguard Worker<row>
9936*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9937*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9938*28e138c6SAndroid Build Coastguard Worker
9939*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9940*28e138c6SAndroid Build Coastguard Worker13
9941*28e138c6SAndroid Build Coastguard Worker\end_layout
9942*28e138c6SAndroid Build Coastguard Worker
9943*28e138c6SAndroid Build Coastguard Worker\end_inset
9944*28e138c6SAndroid Build Coastguard Worker</cell>
9945*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9946*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9947*28e138c6SAndroid Build Coastguard Worker
9948*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9949*28e138c6SAndroid Build Coastguard Worker-
9950*28e138c6SAndroid Build Coastguard Worker\end_layout
9951*28e138c6SAndroid Build Coastguard Worker
9952*28e138c6SAndroid Build Coastguard Worker\end_inset
9953*28e138c6SAndroid Build Coastguard Worker</cell>
9954*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9955*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9956*28e138c6SAndroid Build Coastguard Worker
9957*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9958*28e138c6SAndroid Build Coastguard Worker-
9959*28e138c6SAndroid Build Coastguard Worker\end_layout
9960*28e138c6SAndroid Build Coastguard Worker
9961*28e138c6SAndroid Build Coastguard Worker\end_inset
9962*28e138c6SAndroid Build Coastguard Worker</cell>
9963*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9964*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9965*28e138c6SAndroid Build Coastguard Worker
9966*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9967*28e138c6SAndroid Build Coastguard Worker-
9968*28e138c6SAndroid Build Coastguard Worker\end_layout
9969*28e138c6SAndroid Build Coastguard Worker
9970*28e138c6SAndroid Build Coastguard Worker\end_inset
9971*28e138c6SAndroid Build Coastguard Worker</cell>
9972*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
9973*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9974*28e138c6SAndroid Build Coastguard Worker
9975*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9976*28e138c6SAndroid Build Coastguard WorkerApplication-defined, interpreted by callback or skipped
9977*28e138c6SAndroid Build Coastguard Worker\end_layout
9978*28e138c6SAndroid Build Coastguard Worker
9979*28e138c6SAndroid Build Coastguard Worker\end_inset
9980*28e138c6SAndroid Build Coastguard Worker</cell>
9981*28e138c6SAndroid Build Coastguard Worker</row>
9982*28e138c6SAndroid Build Coastguard Worker<row>
9983*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9984*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9985*28e138c6SAndroid Build Coastguard Worker
9986*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9987*28e138c6SAndroid Build Coastguard Worker14
9988*28e138c6SAndroid Build Coastguard Worker\end_layout
9989*28e138c6SAndroid Build Coastguard Worker
9990*28e138c6SAndroid Build Coastguard Worker\end_inset
9991*28e138c6SAndroid Build Coastguard Worker</cell>
9992*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
9993*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
9994*28e138c6SAndroid Build Coastguard Worker
9995*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
9996*28e138c6SAndroid Build Coastguard Worker-
9997*28e138c6SAndroid Build Coastguard Worker\end_layout
9998*28e138c6SAndroid Build Coastguard Worker
9999*28e138c6SAndroid Build Coastguard Worker\end_inset
10000*28e138c6SAndroid Build Coastguard Worker</cell>
10001*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10002*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10003*28e138c6SAndroid Build Coastguard Worker
10004*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10005*28e138c6SAndroid Build Coastguard Worker-
10006*28e138c6SAndroid Build Coastguard Worker\end_layout
10007*28e138c6SAndroid Build Coastguard Worker
10008*28e138c6SAndroid Build Coastguard Worker\end_inset
10009*28e138c6SAndroid Build Coastguard Worker</cell>
10010*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10011*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10012*28e138c6SAndroid Build Coastguard Worker
10013*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10014*28e138c6SAndroid Build Coastguard Worker-
10015*28e138c6SAndroid Build Coastguard Worker\end_layout
10016*28e138c6SAndroid Build Coastguard Worker
10017*28e138c6SAndroid Build Coastguard Worker\end_inset
10018*28e138c6SAndroid Build Coastguard Worker</cell>
10019*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10020*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10021*28e138c6SAndroid Build Coastguard Worker
10022*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10023*28e138c6SAndroid Build Coastguard WorkerSpeex in-band signaling
10024*28e138c6SAndroid Build Coastguard Worker\end_layout
10025*28e138c6SAndroid Build Coastguard Worker
10026*28e138c6SAndroid Build Coastguard Worker\end_inset
10027*28e138c6SAndroid Build Coastguard Worker</cell>
10028*28e138c6SAndroid Build Coastguard Worker</row>
10029*28e138c6SAndroid Build Coastguard Worker<row>
10030*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10031*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10032*28e138c6SAndroid Build Coastguard Worker
10033*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10034*28e138c6SAndroid Build Coastguard Worker15
10035*28e138c6SAndroid Build Coastguard Worker\end_layout
10036*28e138c6SAndroid Build Coastguard Worker
10037*28e138c6SAndroid Build Coastguard Worker\end_inset
10038*28e138c6SAndroid Build Coastguard Worker</cell>
10039*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10040*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10041*28e138c6SAndroid Build Coastguard Worker
10042*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10043*28e138c6SAndroid Build Coastguard Worker-
10044*28e138c6SAndroid Build Coastguard Worker\end_layout
10045*28e138c6SAndroid Build Coastguard Worker
10046*28e138c6SAndroid Build Coastguard Worker\end_inset
10047*28e138c6SAndroid Build Coastguard Worker</cell>
10048*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10049*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10050*28e138c6SAndroid Build Coastguard Worker
10051*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10052*28e138c6SAndroid Build Coastguard Worker-
10053*28e138c6SAndroid Build Coastguard Worker\end_layout
10054*28e138c6SAndroid Build Coastguard Worker
10055*28e138c6SAndroid Build Coastguard Worker\end_inset
10056*28e138c6SAndroid Build Coastguard Worker</cell>
10057*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10058*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10059*28e138c6SAndroid Build Coastguard Worker
10060*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10061*28e138c6SAndroid Build Coastguard Worker-
10062*28e138c6SAndroid Build Coastguard Worker\end_layout
10063*28e138c6SAndroid Build Coastguard Worker
10064*28e138c6SAndroid Build Coastguard Worker\end_inset
10065*28e138c6SAndroid Build Coastguard Worker</cell>
10066*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
10067*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10068*28e138c6SAndroid Build Coastguard Worker
10069*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10070*28e138c6SAndroid Build Coastguard WorkerTerminator code
10071*28e138c6SAndroid Build Coastguard Worker\end_layout
10072*28e138c6SAndroid Build Coastguard Worker
10073*28e138c6SAndroid Build Coastguard Worker\end_inset
10074*28e138c6SAndroid Build Coastguard Worker</cell>
10075*28e138c6SAndroid Build Coastguard Worker</row>
10076*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
10077*28e138c6SAndroid Build Coastguard Worker
10078*28e138c6SAndroid Build Coastguard Worker\end_inset
10079*28e138c6SAndroid Build Coastguard Worker
10080*28e138c6SAndroid Build Coastguard Worker
10081*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
10082*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10083*28e138c6SAndroid Build Coastguard Worker
10084*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10085*28e138c6SAndroid Build Coastguard Worker
10086*28e138c6SAndroid Build Coastguard Worker
10087*28e138c6SAndroid Build Coastguard Worker\backslash
10088*28e138c6SAndroid Build Coastguard Workerend{center}
10089*28e138c6SAndroid Build Coastguard Worker\end_layout
10090*28e138c6SAndroid Build Coastguard Worker
10091*28e138c6SAndroid Build Coastguard Worker\end_inset
10092*28e138c6SAndroid Build Coastguard Worker
10093*28e138c6SAndroid Build Coastguard Worker
10094*28e138c6SAndroid Build Coastguard Worker\end_layout
10095*28e138c6SAndroid Build Coastguard Worker
10096*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10097*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
10098*28e138c6SAndroid Build Coastguard Worker
10099*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10100*28e138c6SAndroid Build Coastguard WorkerQuality versus bit-rate
10101*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
10102*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
10103*28e138c6SAndroid Build Coastguard Workername "cap:quality_vs_bps"
10104*28e138c6SAndroid Build Coastguard Worker
10105*28e138c6SAndroid Build Coastguard Worker\end_inset
10106*28e138c6SAndroid Build Coastguard Worker
10107*28e138c6SAndroid Build Coastguard Worker
10108*28e138c6SAndroid Build Coastguard Worker\end_layout
10109*28e138c6SAndroid Build Coastguard Worker
10110*28e138c6SAndroid Build Coastguard Worker\end_inset
10111*28e138c6SAndroid Build Coastguard Worker
10112*28e138c6SAndroid Build Coastguard Worker
10113*28e138c6SAndroid Build Coastguard Worker\end_layout
10114*28e138c6SAndroid Build Coastguard Worker
10115*28e138c6SAndroid Build Coastguard Worker\end_inset
10116*28e138c6SAndroid Build Coastguard Worker
10117*28e138c6SAndroid Build Coastguard Worker
10118*28e138c6SAndroid Build Coastguard Worker\end_layout
10119*28e138c6SAndroid Build Coastguard Worker
10120*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
10121*28e138c6SAndroid Build Coastguard WorkerPerceptual enhancement
10122*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
10123*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10124*28e138c6SAndroid Build Coastguard Worker
10125*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10126*28e138c6SAndroid Build Coastguard Workerperceptual enhancement
10127*28e138c6SAndroid Build Coastguard Worker\end_layout
10128*28e138c6SAndroid Build Coastguard Worker
10129*28e138c6SAndroid Build Coastguard Worker\end_inset
10130*28e138c6SAndroid Build Coastguard Worker
10131*28e138c6SAndroid Build Coastguard Worker
10132*28e138c6SAndroid Build Coastguard Worker\end_layout
10133*28e138c6SAndroid Build Coastguard Worker
10134*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10135*28e138c6SAndroid Build Coastguard Worker
10136*28e138c6SAndroid Build Coastguard Worker\series bold
10137*28e138c6SAndroid Build Coastguard WorkerThis section was only valid for version 1.1.12 and earlier.
10138*28e138c6SAndroid Build Coastguard Worker It does not apply to version 1.2-beta1 (and later), for which the new perceptual
10139*28e138c6SAndroid Build Coastguard Worker enhancement is not yet documented.
10140*28e138c6SAndroid Build Coastguard Worker\end_layout
10141*28e138c6SAndroid Build Coastguard Worker
10142*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10143*28e138c6SAndroid Build Coastguard WorkerThis part of the codec only applies to the decoder and can even be changed
10144*28e138c6SAndroid Build Coastguard Worker without affecting inter-operability.
10145*28e138c6SAndroid Build Coastguard Worker For that reason, the implementation provided and described here should
10146*28e138c6SAndroid Build Coastguard Worker only be considered as a reference implementation.
10147*28e138c6SAndroid Build Coastguard Worker The enhancement system is divided into two parts.
10148*28e138c6SAndroid Build Coastguard Worker First, the synthesis filter
10149*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $S(z)=1/A(z)$
10150*28e138c6SAndroid Build Coastguard Worker\end_inset
10151*28e138c6SAndroid Build Coastguard Worker
10152*28e138c6SAndroid Build Coastguard Worker is replaced by an enhanced filter:
10153*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula \[
10154*28e138c6SAndroid Build Coastguard WorkerS'(z)=\frac{A\left(z/a_{2}\right)A\left(z/a_{3}\right)}{A\left(z\right)A\left(z/a_{1}\right)}\]
10155*28e138c6SAndroid Build Coastguard Worker
10156*28e138c6SAndroid Build Coastguard Worker\end_inset
10157*28e138c6SAndroid Build Coastguard Worker
10158*28e138c6SAndroid Build Coastguard Workerwhere
10159*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $a_{1}$
10160*28e138c6SAndroid Build Coastguard Worker\end_inset
10161*28e138c6SAndroid Build Coastguard Worker
10162*28e138c6SAndroid Build Coastguard Worker and
10163*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $a_{2}$
10164*28e138c6SAndroid Build Coastguard Worker\end_inset
10165*28e138c6SAndroid Build Coastguard Worker
10166*28e138c6SAndroid Build Coastguard Worker depend on the mode in use and
10167*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $a_{3}=\frac{1}{r}\left(1-\frac{1-ra_{1}}{1-ra_{2}}\right)$
10168*28e138c6SAndroid Build Coastguard Worker\end_inset
10169*28e138c6SAndroid Build Coastguard Worker
10170*28e138c6SAndroid Build Coastguard Worker with
10171*28e138c6SAndroid Build Coastguard Worker\begin_inset Formula $r=.9$
10172*28e138c6SAndroid Build Coastguard Worker\end_inset
10173*28e138c6SAndroid Build Coastguard Worker
10174*28e138c6SAndroid Build Coastguard Worker.
10175*28e138c6SAndroid Build Coastguard Worker The second part of the enhancement consists of using a comb filter to enhance
10176*28e138c6SAndroid Build Coastguard Worker the pitch in the excitation domain.
10177*28e138c6SAndroid Build Coastguard Worker
10178*28e138c6SAndroid Build Coastguard Worker\end_layout
10179*28e138c6SAndroid Build Coastguard Worker
10180*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10181*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
10182*28e138c6SAndroid Build Coastguard Worker\end_inset
10183*28e138c6SAndroid Build Coastguard Worker
10184*28e138c6SAndroid Build Coastguard Worker
10185*28e138c6SAndroid Build Coastguard Worker\end_layout
10186*28e138c6SAndroid Build Coastguard Worker
10187*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
10188*28e138c6SAndroid Build Coastguard WorkerSpeex wideband mode (sub-band CELP)
10189*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
10190*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10191*28e138c6SAndroid Build Coastguard Worker
10192*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10193*28e138c6SAndroid Build Coastguard Workerwideband
10194*28e138c6SAndroid Build Coastguard Worker\end_layout
10195*28e138c6SAndroid Build Coastguard Worker
10196*28e138c6SAndroid Build Coastguard Worker\end_inset
10197*28e138c6SAndroid Build Coastguard Worker
10198*28e138c6SAndroid Build Coastguard Worker
10199*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
10200*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
10201*28e138c6SAndroid Build Coastguard Workername "sec:Speex-wideband-mode"
10202*28e138c6SAndroid Build Coastguard Worker
10203*28e138c6SAndroid Build Coastguard Worker\end_inset
10204*28e138c6SAndroid Build Coastguard Worker
10205*28e138c6SAndroid Build Coastguard Worker
10206*28e138c6SAndroid Build Coastguard Worker\end_layout
10207*28e138c6SAndroid Build Coastguard Worker
10208*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10209*28e138c6SAndroid Build Coastguard WorkerFor wideband, the Speex approach uses a
10210*28e138c6SAndroid Build Coastguard Worker\emph on
10211*28e138c6SAndroid Build Coastguard Workerq
10212*28e138c6SAndroid Build Coastguard Worker\emph default
10213*28e138c6SAndroid Build Coastguard Workeruadrature
10214*28e138c6SAndroid Build Coastguard Worker\emph on
10215*28e138c6SAndroid Build Coastguard Workerm
10216*28e138c6SAndroid Build Coastguard Worker\emph default
10217*28e138c6SAndroid Build Coastguard Workerirror
10218*28e138c6SAndroid Build Coastguard Worker\emph on
10219*28e138c6SAndroid Build Coastguard Workerf
10220*28e138c6SAndroid Build Coastguard Worker\emph default
10221*28e138c6SAndroid Build Coastguard Workerilter
10222*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
10223*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10224*28e138c6SAndroid Build Coastguard Worker
10225*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10226*28e138c6SAndroid Build Coastguard Workerquadrature mirror filter
10227*28e138c6SAndroid Build Coastguard Worker\end_layout
10228*28e138c6SAndroid Build Coastguard Worker
10229*28e138c6SAndroid Build Coastguard Worker\end_inset
10230*28e138c6SAndroid Build Coastguard Worker
10231*28e138c6SAndroid Build Coastguard Worker (QMF) to split the band in two.
10232*28e138c6SAndroid Build Coastguard Worker The 16 kHz signal is thus divided into two 8 kHz signals, one representing
10233*28e138c6SAndroid Build Coastguard Worker the low band (0-4 kHz), the other the high band (4-8 kHz).
10234*28e138c6SAndroid Build Coastguard Worker The low band is encoded with the narrowband mode described in section
10235*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
10236*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
10237*28e138c6SAndroid Build Coastguard Workerreference "sec:Speex-narrowband-mode"
10238*28e138c6SAndroid Build Coastguard Worker
10239*28e138c6SAndroid Build Coastguard Worker\end_inset
10240*28e138c6SAndroid Build Coastguard Worker
10241*28e138c6SAndroid Build Coastguard Worker in such a way that the resulting
10242*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes eld
10243*28e138c6SAndroid Build Coastguard Worker\end_inset
10244*28e138c6SAndroid Build Coastguard Worker
10245*28e138c6SAndroid Build Coastguard Workerembedded narrowband bit-stream
10246*28e138c6SAndroid Build Coastguard Worker\begin_inset Quotes erd
10247*28e138c6SAndroid Build Coastguard Worker\end_inset
10248*28e138c6SAndroid Build Coastguard Worker
10249*28e138c6SAndroid Build Coastguard Worker can also be decoded with the narrowband decoder.
10250*28e138c6SAndroid Build Coastguard Worker Since the low band encoding has already been described, only the high band
10251*28e138c6SAndroid Build Coastguard Worker encoding is described in this section.
10252*28e138c6SAndroid Build Coastguard Worker\end_layout
10253*28e138c6SAndroid Build Coastguard Worker
10254*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
10255*28e138c6SAndroid Build Coastguard WorkerLinear Prediction
10256*28e138c6SAndroid Build Coastguard Worker\end_layout
10257*28e138c6SAndroid Build Coastguard Worker
10258*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10259*28e138c6SAndroid Build Coastguard WorkerThe linear prediction part used for the high-band is very similar to what
10260*28e138c6SAndroid Build Coastguard Worker is done for narrowband.
10261*28e138c6SAndroid Build Coastguard Worker The only difference is that we use only 12 bits to encode the high-band
10262*28e138c6SAndroid Build Coastguard Worker LSP's using a multi-stage vector quantizer (MSVQ).
10263*28e138c6SAndroid Build Coastguard Worker The first level quantizes the 10 coefficients with 6 bits and the error
10264*28e138c6SAndroid Build Coastguard Worker is then quantized using 6 bits, too.
10265*28e138c6SAndroid Build Coastguard Worker\end_layout
10266*28e138c6SAndroid Build Coastguard Worker
10267*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
10268*28e138c6SAndroid Build Coastguard WorkerPitch Prediction
10269*28e138c6SAndroid Build Coastguard Worker\end_layout
10270*28e138c6SAndroid Build Coastguard Worker
10271*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10272*28e138c6SAndroid Build Coastguard WorkerThat part is easy: there's no pitch prediction for the high-band.
10273*28e138c6SAndroid Build Coastguard Worker There are two reasons for that.
10274*28e138c6SAndroid Build Coastguard Worker First, there is usually little harmonic structure in this band (above 4
10275*28e138c6SAndroid Build Coastguard Worker kHz).
10276*28e138c6SAndroid Build Coastguard Worker Second, it would be very hard to implement since the QMF folds the 4-8
10277*28e138c6SAndroid Build Coastguard Worker kHz band into 4-0 kHz (reversing the frequency axis), which means that
10278*28e138c6SAndroid Build Coastguard Worker the location of the harmonics is no longer at multiples of the fundamental
10279*28e138c6SAndroid Build Coastguard Worker (pitch).
10280*28e138c6SAndroid Build Coastguard Worker\end_layout
10281*28e138c6SAndroid Build Coastguard Worker
10282*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
10283*28e138c6SAndroid Build Coastguard WorkerExcitation Quantization
10284*28e138c6SAndroid Build Coastguard Worker\end_layout
10285*28e138c6SAndroid Build Coastguard Worker
10286*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10287*28e138c6SAndroid Build Coastguard WorkerThe high-band excitation is coded in the same way as for narrowband.
10288*28e138c6SAndroid Build Coastguard Worker
10289*28e138c6SAndroid Build Coastguard Worker\end_layout
10290*28e138c6SAndroid Build Coastguard Worker
10291*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
10292*28e138c6SAndroid Build Coastguard WorkerBit allocation
10293*28e138c6SAndroid Build Coastguard Worker\end_layout
10294*28e138c6SAndroid Build Coastguard Worker
10295*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10296*28e138c6SAndroid Build Coastguard WorkerFor the wideband mode, the entire narrowband frame is packed before the
10297*28e138c6SAndroid Build Coastguard Worker high-band is encoded.
10298*28e138c6SAndroid Build Coastguard Worker The narrowband part of the bit-stream is as defined in table
10299*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
10300*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
10301*28e138c6SAndroid Build Coastguard Workerreference "cap:bits-narrowband"
10302*28e138c6SAndroid Build Coastguard Worker
10303*28e138c6SAndroid Build Coastguard Worker\end_inset
10304*28e138c6SAndroid Build Coastguard Worker
10305*28e138c6SAndroid Build Coastguard Worker.
10306*28e138c6SAndroid Build Coastguard Worker The high-band follows, as described in table
10307*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
10308*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
10309*28e138c6SAndroid Build Coastguard Workerreference "cap:bits-wideband"
10310*28e138c6SAndroid Build Coastguard Worker
10311*28e138c6SAndroid Build Coastguard Worker\end_inset
10312*28e138c6SAndroid Build Coastguard Worker
10313*28e138c6SAndroid Build Coastguard Worker.
10314*28e138c6SAndroid Build Coastguard Worker For wideband, the mode ID is the same as the Speex quality setting and
10315*28e138c6SAndroid Build Coastguard Worker is defined in table
10316*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset ref
10317*28e138c6SAndroid Build Coastguard WorkerLatexCommand ref
10318*28e138c6SAndroid Build Coastguard Workerreference "tab:wideband-quality"
10319*28e138c6SAndroid Build Coastguard Worker
10320*28e138c6SAndroid Build Coastguard Worker\end_inset
10321*28e138c6SAndroid Build Coastguard Worker
10322*28e138c6SAndroid Build Coastguard Worker.
10323*28e138c6SAndroid Build Coastguard Worker This also means that a wideband frame may be correctly decoded by a narrowband
10324*28e138c6SAndroid Build Coastguard Worker decoder with the only caveat that if more than one frame is packed in the
10325*28e138c6SAndroid Build Coastguard Worker same packet, the decoder will need to skip the high-band parts in order
10326*28e138c6SAndroid Build Coastguard Worker to sync with the bit-stream.
10327*28e138c6SAndroid Build Coastguard Worker\end_layout
10328*28e138c6SAndroid Build Coastguard Worker
10329*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10330*28e138c6SAndroid Build Coastguard Worker\begin_inset Float table
10331*28e138c6SAndroid Build Coastguard Workerplacement h
10332*28e138c6SAndroid Build Coastguard Workerwide true
10333*28e138c6SAndroid Build Coastguard Workersideways false
10334*28e138c6SAndroid Build Coastguard Workerstatus open
10335*28e138c6SAndroid Build Coastguard Worker
10336*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10337*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
10338*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10339*28e138c6SAndroid Build Coastguard Worker
10340*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10341*28e138c6SAndroid Build Coastguard Worker
10342*28e138c6SAndroid Build Coastguard Worker
10343*28e138c6SAndroid Build Coastguard Worker\backslash
10344*28e138c6SAndroid Build Coastguard Workerbegin{center}
10345*28e138c6SAndroid Build Coastguard Worker\end_layout
10346*28e138c6SAndroid Build Coastguard Worker
10347*28e138c6SAndroid Build Coastguard Worker\end_inset
10348*28e138c6SAndroid Build Coastguard Worker
10349*28e138c6SAndroid Build Coastguard Worker
10350*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
10351*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="7" columns="7">
10352*28e138c6SAndroid Build Coastguard Worker<features>
10353*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10354*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10355*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10356*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10357*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10358*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10359*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10360*28e138c6SAndroid Build Coastguard Worker<row>
10361*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10362*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10363*28e138c6SAndroid Build Coastguard Worker
10364*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10365*28e138c6SAndroid Build Coastguard WorkerParameter
10366*28e138c6SAndroid Build Coastguard Worker\end_layout
10367*28e138c6SAndroid Build Coastguard Worker
10368*28e138c6SAndroid Build Coastguard Worker\end_inset
10369*28e138c6SAndroid Build Coastguard Worker</cell>
10370*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10371*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10372*28e138c6SAndroid Build Coastguard Worker
10373*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10374*28e138c6SAndroid Build Coastguard WorkerUpdate rate
10375*28e138c6SAndroid Build Coastguard Worker\end_layout
10376*28e138c6SAndroid Build Coastguard Worker
10377*28e138c6SAndroid Build Coastguard Worker\end_inset
10378*28e138c6SAndroid Build Coastguard Worker</cell>
10379*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10380*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10381*28e138c6SAndroid Build Coastguard Worker
10382*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10383*28e138c6SAndroid Build Coastguard Worker0
10384*28e138c6SAndroid Build Coastguard Worker\end_layout
10385*28e138c6SAndroid Build Coastguard Worker
10386*28e138c6SAndroid Build Coastguard Worker\end_inset
10387*28e138c6SAndroid Build Coastguard Worker</cell>
10388*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10389*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10390*28e138c6SAndroid Build Coastguard Worker
10391*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10392*28e138c6SAndroid Build Coastguard Worker1
10393*28e138c6SAndroid Build Coastguard Worker\end_layout
10394*28e138c6SAndroid Build Coastguard Worker
10395*28e138c6SAndroid Build Coastguard Worker\end_inset
10396*28e138c6SAndroid Build Coastguard Worker</cell>
10397*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10398*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10399*28e138c6SAndroid Build Coastguard Worker
10400*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10401*28e138c6SAndroid Build Coastguard Worker2
10402*28e138c6SAndroid Build Coastguard Worker\end_layout
10403*28e138c6SAndroid Build Coastguard Worker
10404*28e138c6SAndroid Build Coastguard Worker\end_inset
10405*28e138c6SAndroid Build Coastguard Worker</cell>
10406*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10407*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10408*28e138c6SAndroid Build Coastguard Worker
10409*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10410*28e138c6SAndroid Build Coastguard Worker3
10411*28e138c6SAndroid Build Coastguard Worker\end_layout
10412*28e138c6SAndroid Build Coastguard Worker
10413*28e138c6SAndroid Build Coastguard Worker\end_inset
10414*28e138c6SAndroid Build Coastguard Worker</cell>
10415*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
10416*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10417*28e138c6SAndroid Build Coastguard Worker
10418*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10419*28e138c6SAndroid Build Coastguard Worker4
10420*28e138c6SAndroid Build Coastguard Worker\end_layout
10421*28e138c6SAndroid Build Coastguard Worker
10422*28e138c6SAndroid Build Coastguard Worker\end_inset
10423*28e138c6SAndroid Build Coastguard Worker</cell>
10424*28e138c6SAndroid Build Coastguard Worker</row>
10425*28e138c6SAndroid Build Coastguard Worker<row>
10426*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10427*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10428*28e138c6SAndroid Build Coastguard Worker
10429*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10430*28e138c6SAndroid Build Coastguard WorkerWideband bit
10431*28e138c6SAndroid Build Coastguard Worker\end_layout
10432*28e138c6SAndroid Build Coastguard Worker
10433*28e138c6SAndroid Build Coastguard Worker\end_inset
10434*28e138c6SAndroid Build Coastguard Worker</cell>
10435*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10436*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10437*28e138c6SAndroid Build Coastguard Worker
10438*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10439*28e138c6SAndroid Build Coastguard Workerframe
10440*28e138c6SAndroid Build Coastguard Worker\end_layout
10441*28e138c6SAndroid Build Coastguard Worker
10442*28e138c6SAndroid Build Coastguard Worker\end_inset
10443*28e138c6SAndroid Build Coastguard Worker</cell>
10444*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10445*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10446*28e138c6SAndroid Build Coastguard Worker
10447*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10448*28e138c6SAndroid Build Coastguard Worker1
10449*28e138c6SAndroid Build Coastguard Worker\end_layout
10450*28e138c6SAndroid Build Coastguard Worker
10451*28e138c6SAndroid Build Coastguard Worker\end_inset
10452*28e138c6SAndroid Build Coastguard Worker</cell>
10453*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10454*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10455*28e138c6SAndroid Build Coastguard Worker
10456*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10457*28e138c6SAndroid Build Coastguard Worker1
10458*28e138c6SAndroid Build Coastguard Worker\end_layout
10459*28e138c6SAndroid Build Coastguard Worker
10460*28e138c6SAndroid Build Coastguard Worker\end_inset
10461*28e138c6SAndroid Build Coastguard Worker</cell>
10462*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10463*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10464*28e138c6SAndroid Build Coastguard Worker
10465*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10466*28e138c6SAndroid Build Coastguard Worker1
10467*28e138c6SAndroid Build Coastguard Worker\end_layout
10468*28e138c6SAndroid Build Coastguard Worker
10469*28e138c6SAndroid Build Coastguard Worker\end_inset
10470*28e138c6SAndroid Build Coastguard Worker</cell>
10471*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10472*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10473*28e138c6SAndroid Build Coastguard Worker
10474*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10475*28e138c6SAndroid Build Coastguard Worker1
10476*28e138c6SAndroid Build Coastguard Worker\end_layout
10477*28e138c6SAndroid Build Coastguard Worker
10478*28e138c6SAndroid Build Coastguard Worker\end_inset
10479*28e138c6SAndroid Build Coastguard Worker</cell>
10480*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10481*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10482*28e138c6SAndroid Build Coastguard Worker
10483*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10484*28e138c6SAndroid Build Coastguard Worker1
10485*28e138c6SAndroid Build Coastguard Worker\end_layout
10486*28e138c6SAndroid Build Coastguard Worker
10487*28e138c6SAndroid Build Coastguard Worker\end_inset
10488*28e138c6SAndroid Build Coastguard Worker</cell>
10489*28e138c6SAndroid Build Coastguard Worker</row>
10490*28e138c6SAndroid Build Coastguard Worker<row>
10491*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10492*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10493*28e138c6SAndroid Build Coastguard Worker
10494*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10495*28e138c6SAndroid Build Coastguard WorkerMode ID
10496*28e138c6SAndroid Build Coastguard Worker\end_layout
10497*28e138c6SAndroid Build Coastguard Worker
10498*28e138c6SAndroid Build Coastguard Worker\end_inset
10499*28e138c6SAndroid Build Coastguard Worker</cell>
10500*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10501*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10502*28e138c6SAndroid Build Coastguard Worker
10503*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10504*28e138c6SAndroid Build Coastguard Workerframe
10505*28e138c6SAndroid Build Coastguard Worker\end_layout
10506*28e138c6SAndroid Build Coastguard Worker
10507*28e138c6SAndroid Build Coastguard Worker\end_inset
10508*28e138c6SAndroid Build Coastguard Worker</cell>
10509*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10510*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10511*28e138c6SAndroid Build Coastguard Worker
10512*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10513*28e138c6SAndroid Build Coastguard Worker3
10514*28e138c6SAndroid Build Coastguard Worker\end_layout
10515*28e138c6SAndroid Build Coastguard Worker
10516*28e138c6SAndroid Build Coastguard Worker\end_inset
10517*28e138c6SAndroid Build Coastguard Worker</cell>
10518*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10519*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10520*28e138c6SAndroid Build Coastguard Worker
10521*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10522*28e138c6SAndroid Build Coastguard Worker3
10523*28e138c6SAndroid Build Coastguard Worker\end_layout
10524*28e138c6SAndroid Build Coastguard Worker
10525*28e138c6SAndroid Build Coastguard Worker\end_inset
10526*28e138c6SAndroid Build Coastguard Worker</cell>
10527*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10528*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10529*28e138c6SAndroid Build Coastguard Worker
10530*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10531*28e138c6SAndroid Build Coastguard Worker3
10532*28e138c6SAndroid Build Coastguard Worker\end_layout
10533*28e138c6SAndroid Build Coastguard Worker
10534*28e138c6SAndroid Build Coastguard Worker\end_inset
10535*28e138c6SAndroid Build Coastguard Worker</cell>
10536*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10537*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10538*28e138c6SAndroid Build Coastguard Worker
10539*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10540*28e138c6SAndroid Build Coastguard Worker3
10541*28e138c6SAndroid Build Coastguard Worker\end_layout
10542*28e138c6SAndroid Build Coastguard Worker
10543*28e138c6SAndroid Build Coastguard Worker\end_inset
10544*28e138c6SAndroid Build Coastguard Worker</cell>
10545*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10546*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10547*28e138c6SAndroid Build Coastguard Worker
10548*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10549*28e138c6SAndroid Build Coastguard Worker3
10550*28e138c6SAndroid Build Coastguard Worker\end_layout
10551*28e138c6SAndroid Build Coastguard Worker
10552*28e138c6SAndroid Build Coastguard Worker\end_inset
10553*28e138c6SAndroid Build Coastguard Worker</cell>
10554*28e138c6SAndroid Build Coastguard Worker</row>
10555*28e138c6SAndroid Build Coastguard Worker<row>
10556*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10557*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10558*28e138c6SAndroid Build Coastguard Worker
10559*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10560*28e138c6SAndroid Build Coastguard WorkerLSP
10561*28e138c6SAndroid Build Coastguard Worker\end_layout
10562*28e138c6SAndroid Build Coastguard Worker
10563*28e138c6SAndroid Build Coastguard Worker\end_inset
10564*28e138c6SAndroid Build Coastguard Worker</cell>
10565*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10566*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10567*28e138c6SAndroid Build Coastguard Worker
10568*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10569*28e138c6SAndroid Build Coastguard Workerframe
10570*28e138c6SAndroid Build Coastguard Worker\end_layout
10571*28e138c6SAndroid Build Coastguard Worker
10572*28e138c6SAndroid Build Coastguard Worker\end_inset
10573*28e138c6SAndroid Build Coastguard Worker</cell>
10574*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10575*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10576*28e138c6SAndroid Build Coastguard Worker
10577*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10578*28e138c6SAndroid Build Coastguard Worker0
10579*28e138c6SAndroid Build Coastguard Worker\end_layout
10580*28e138c6SAndroid Build Coastguard Worker
10581*28e138c6SAndroid Build Coastguard Worker\end_inset
10582*28e138c6SAndroid Build Coastguard Worker</cell>
10583*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10584*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10585*28e138c6SAndroid Build Coastguard Worker
10586*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10587*28e138c6SAndroid Build Coastguard Worker12
10588*28e138c6SAndroid Build Coastguard Worker\end_layout
10589*28e138c6SAndroid Build Coastguard Worker
10590*28e138c6SAndroid Build Coastguard Worker\end_inset
10591*28e138c6SAndroid Build Coastguard Worker</cell>
10592*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10593*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10594*28e138c6SAndroid Build Coastguard Worker
10595*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10596*28e138c6SAndroid Build Coastguard Worker12
10597*28e138c6SAndroid Build Coastguard Worker\end_layout
10598*28e138c6SAndroid Build Coastguard Worker
10599*28e138c6SAndroid Build Coastguard Worker\end_inset
10600*28e138c6SAndroid Build Coastguard Worker</cell>
10601*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10602*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10603*28e138c6SAndroid Build Coastguard Worker
10604*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10605*28e138c6SAndroid Build Coastguard Worker12
10606*28e138c6SAndroid Build Coastguard Worker\end_layout
10607*28e138c6SAndroid Build Coastguard Worker
10608*28e138c6SAndroid Build Coastguard Worker\end_inset
10609*28e138c6SAndroid Build Coastguard Worker</cell>
10610*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10611*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10612*28e138c6SAndroid Build Coastguard Worker
10613*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10614*28e138c6SAndroid Build Coastguard Worker12
10615*28e138c6SAndroid Build Coastguard Worker\end_layout
10616*28e138c6SAndroid Build Coastguard Worker
10617*28e138c6SAndroid Build Coastguard Worker\end_inset
10618*28e138c6SAndroid Build Coastguard Worker</cell>
10619*28e138c6SAndroid Build Coastguard Worker</row>
10620*28e138c6SAndroid Build Coastguard Worker<row>
10621*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10622*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10623*28e138c6SAndroid Build Coastguard Worker
10624*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10625*28e138c6SAndroid Build Coastguard WorkerExcitation gain
10626*28e138c6SAndroid Build Coastguard Worker\end_layout
10627*28e138c6SAndroid Build Coastguard Worker
10628*28e138c6SAndroid Build Coastguard Worker\end_inset
10629*28e138c6SAndroid Build Coastguard Worker</cell>
10630*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10631*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10632*28e138c6SAndroid Build Coastguard Worker
10633*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10634*28e138c6SAndroid Build Coastguard Workersub-frame
10635*28e138c6SAndroid Build Coastguard Worker\end_layout
10636*28e138c6SAndroid Build Coastguard Worker
10637*28e138c6SAndroid Build Coastguard Worker\end_inset
10638*28e138c6SAndroid Build Coastguard Worker</cell>
10639*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10640*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10641*28e138c6SAndroid Build Coastguard Worker
10642*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10643*28e138c6SAndroid Build Coastguard Worker0
10644*28e138c6SAndroid Build Coastguard Worker\end_layout
10645*28e138c6SAndroid Build Coastguard Worker
10646*28e138c6SAndroid Build Coastguard Worker\end_inset
10647*28e138c6SAndroid Build Coastguard Worker</cell>
10648*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10649*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10650*28e138c6SAndroid Build Coastguard Worker
10651*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10652*28e138c6SAndroid Build Coastguard Worker5
10653*28e138c6SAndroid Build Coastguard Worker\end_layout
10654*28e138c6SAndroid Build Coastguard Worker
10655*28e138c6SAndroid Build Coastguard Worker\end_inset
10656*28e138c6SAndroid Build Coastguard Worker</cell>
10657*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10658*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10659*28e138c6SAndroid Build Coastguard Worker
10660*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10661*28e138c6SAndroid Build Coastguard Worker4
10662*28e138c6SAndroid Build Coastguard Worker\end_layout
10663*28e138c6SAndroid Build Coastguard Worker
10664*28e138c6SAndroid Build Coastguard Worker\end_inset
10665*28e138c6SAndroid Build Coastguard Worker</cell>
10666*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10667*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10668*28e138c6SAndroid Build Coastguard Worker
10669*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10670*28e138c6SAndroid Build Coastguard Worker4
10671*28e138c6SAndroid Build Coastguard Worker\end_layout
10672*28e138c6SAndroid Build Coastguard Worker
10673*28e138c6SAndroid Build Coastguard Worker\end_inset
10674*28e138c6SAndroid Build Coastguard Worker</cell>
10675*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10676*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10677*28e138c6SAndroid Build Coastguard Worker
10678*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10679*28e138c6SAndroid Build Coastguard Worker4
10680*28e138c6SAndroid Build Coastguard Worker\end_layout
10681*28e138c6SAndroid Build Coastguard Worker
10682*28e138c6SAndroid Build Coastguard Worker\end_inset
10683*28e138c6SAndroid Build Coastguard Worker</cell>
10684*28e138c6SAndroid Build Coastguard Worker</row>
10685*28e138c6SAndroid Build Coastguard Worker<row>
10686*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10687*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10688*28e138c6SAndroid Build Coastguard Worker
10689*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10690*28e138c6SAndroid Build Coastguard WorkerExcitation VQ
10691*28e138c6SAndroid Build Coastguard Worker\end_layout
10692*28e138c6SAndroid Build Coastguard Worker
10693*28e138c6SAndroid Build Coastguard Worker\end_inset
10694*28e138c6SAndroid Build Coastguard Worker</cell>
10695*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10696*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10697*28e138c6SAndroid Build Coastguard Worker
10698*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10699*28e138c6SAndroid Build Coastguard Workersub-frame
10700*28e138c6SAndroid Build Coastguard Worker\end_layout
10701*28e138c6SAndroid Build Coastguard Worker
10702*28e138c6SAndroid Build Coastguard Worker\end_inset
10703*28e138c6SAndroid Build Coastguard Worker</cell>
10704*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10705*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10706*28e138c6SAndroid Build Coastguard Worker
10707*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10708*28e138c6SAndroid Build Coastguard Worker0
10709*28e138c6SAndroid Build Coastguard Worker\end_layout
10710*28e138c6SAndroid Build Coastguard Worker
10711*28e138c6SAndroid Build Coastguard Worker\end_inset
10712*28e138c6SAndroid Build Coastguard Worker</cell>
10713*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10714*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10715*28e138c6SAndroid Build Coastguard Worker
10716*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10717*28e138c6SAndroid Build Coastguard Worker0
10718*28e138c6SAndroid Build Coastguard Worker\end_layout
10719*28e138c6SAndroid Build Coastguard Worker
10720*28e138c6SAndroid Build Coastguard Worker\end_inset
10721*28e138c6SAndroid Build Coastguard Worker</cell>
10722*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10723*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10724*28e138c6SAndroid Build Coastguard Worker
10725*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10726*28e138c6SAndroid Build Coastguard Worker20
10727*28e138c6SAndroid Build Coastguard Worker\end_layout
10728*28e138c6SAndroid Build Coastguard Worker
10729*28e138c6SAndroid Build Coastguard Worker\end_inset
10730*28e138c6SAndroid Build Coastguard Worker</cell>
10731*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10732*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10733*28e138c6SAndroid Build Coastguard Worker
10734*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10735*28e138c6SAndroid Build Coastguard Worker40
10736*28e138c6SAndroid Build Coastguard Worker\end_layout
10737*28e138c6SAndroid Build Coastguard Worker
10738*28e138c6SAndroid Build Coastguard Worker\end_inset
10739*28e138c6SAndroid Build Coastguard Worker</cell>
10740*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
10741*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10742*28e138c6SAndroid Build Coastguard Worker
10743*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10744*28e138c6SAndroid Build Coastguard Worker80
10745*28e138c6SAndroid Build Coastguard Worker\end_layout
10746*28e138c6SAndroid Build Coastguard Worker
10747*28e138c6SAndroid Build Coastguard Worker\end_inset
10748*28e138c6SAndroid Build Coastguard Worker</cell>
10749*28e138c6SAndroid Build Coastguard Worker</row>
10750*28e138c6SAndroid Build Coastguard Worker<row>
10751*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10752*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10753*28e138c6SAndroid Build Coastguard Worker
10754*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10755*28e138c6SAndroid Build Coastguard WorkerTotal
10756*28e138c6SAndroid Build Coastguard Worker\end_layout
10757*28e138c6SAndroid Build Coastguard Worker
10758*28e138c6SAndroid Build Coastguard Worker\end_inset
10759*28e138c6SAndroid Build Coastguard Worker</cell>
10760*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10761*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10762*28e138c6SAndroid Build Coastguard Worker
10763*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10764*28e138c6SAndroid Build Coastguard Workerframe
10765*28e138c6SAndroid Build Coastguard Worker\end_layout
10766*28e138c6SAndroid Build Coastguard Worker
10767*28e138c6SAndroid Build Coastguard Worker\end_inset
10768*28e138c6SAndroid Build Coastguard Worker</cell>
10769*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10770*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10771*28e138c6SAndroid Build Coastguard Worker
10772*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10773*28e138c6SAndroid Build Coastguard Worker4
10774*28e138c6SAndroid Build Coastguard Worker\end_layout
10775*28e138c6SAndroid Build Coastguard Worker
10776*28e138c6SAndroid Build Coastguard Worker\end_inset
10777*28e138c6SAndroid Build Coastguard Worker</cell>
10778*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10779*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10780*28e138c6SAndroid Build Coastguard Worker
10781*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10782*28e138c6SAndroid Build Coastguard Worker36
10783*28e138c6SAndroid Build Coastguard Worker\end_layout
10784*28e138c6SAndroid Build Coastguard Worker
10785*28e138c6SAndroid Build Coastguard Worker\end_inset
10786*28e138c6SAndroid Build Coastguard Worker</cell>
10787*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10788*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10789*28e138c6SAndroid Build Coastguard Worker
10790*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10791*28e138c6SAndroid Build Coastguard Worker112
10792*28e138c6SAndroid Build Coastguard Worker\end_layout
10793*28e138c6SAndroid Build Coastguard Worker
10794*28e138c6SAndroid Build Coastguard Worker\end_inset
10795*28e138c6SAndroid Build Coastguard Worker</cell>
10796*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10797*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10798*28e138c6SAndroid Build Coastguard Worker
10799*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10800*28e138c6SAndroid Build Coastguard Worker192
10801*28e138c6SAndroid Build Coastguard Worker\end_layout
10802*28e138c6SAndroid Build Coastguard Worker
10803*28e138c6SAndroid Build Coastguard Worker\end_inset
10804*28e138c6SAndroid Build Coastguard Worker</cell>
10805*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
10806*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10807*28e138c6SAndroid Build Coastguard Worker
10808*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10809*28e138c6SAndroid Build Coastguard Worker352
10810*28e138c6SAndroid Build Coastguard Worker\end_layout
10811*28e138c6SAndroid Build Coastguard Worker
10812*28e138c6SAndroid Build Coastguard Worker\end_inset
10813*28e138c6SAndroid Build Coastguard Worker</cell>
10814*28e138c6SAndroid Build Coastguard Worker</row>
10815*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
10816*28e138c6SAndroid Build Coastguard Worker
10817*28e138c6SAndroid Build Coastguard Worker\end_inset
10818*28e138c6SAndroid Build Coastguard Worker
10819*28e138c6SAndroid Build Coastguard Worker
10820*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
10821*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10822*28e138c6SAndroid Build Coastguard Worker
10823*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10824*28e138c6SAndroid Build Coastguard Worker
10825*28e138c6SAndroid Build Coastguard Worker
10826*28e138c6SAndroid Build Coastguard Worker\backslash
10827*28e138c6SAndroid Build Coastguard Workerend{center}
10828*28e138c6SAndroid Build Coastguard Worker\end_layout
10829*28e138c6SAndroid Build Coastguard Worker
10830*28e138c6SAndroid Build Coastguard Worker\end_inset
10831*28e138c6SAndroid Build Coastguard Worker
10832*28e138c6SAndroid Build Coastguard Worker
10833*28e138c6SAndroid Build Coastguard Worker\end_layout
10834*28e138c6SAndroid Build Coastguard Worker
10835*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10836*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
10837*28e138c6SAndroid Build Coastguard Worker
10838*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10839*28e138c6SAndroid Build Coastguard WorkerBit allocation for high-band in wideband mode
10840*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
10841*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
10842*28e138c6SAndroid Build Coastguard Workername "cap:bits-wideband"
10843*28e138c6SAndroid Build Coastguard Worker
10844*28e138c6SAndroid Build Coastguard Worker\end_inset
10845*28e138c6SAndroid Build Coastguard Worker
10846*28e138c6SAndroid Build Coastguard Worker
10847*28e138c6SAndroid Build Coastguard Worker\end_layout
10848*28e138c6SAndroid Build Coastguard Worker
10849*28e138c6SAndroid Build Coastguard Worker\end_inset
10850*28e138c6SAndroid Build Coastguard Worker
10851*28e138c6SAndroid Build Coastguard Worker
10852*28e138c6SAndroid Build Coastguard Worker\end_layout
10853*28e138c6SAndroid Build Coastguard Worker
10854*28e138c6SAndroid Build Coastguard Worker\end_inset
10855*28e138c6SAndroid Build Coastguard Worker
10856*28e138c6SAndroid Build Coastguard Worker
10857*28e138c6SAndroid Build Coastguard Worker\end_layout
10858*28e138c6SAndroid Build Coastguard Worker
10859*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
10860*28e138c6SAndroid Build Coastguard Worker\begin_inset Float table
10861*28e138c6SAndroid Build Coastguard Workerplacement h
10862*28e138c6SAndroid Build Coastguard Workerwide true
10863*28e138c6SAndroid Build Coastguard Workersideways false
10864*28e138c6SAndroid Build Coastguard Workerstatus open
10865*28e138c6SAndroid Build Coastguard Worker
10866*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10867*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
10868*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10869*28e138c6SAndroid Build Coastguard Worker
10870*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10871*28e138c6SAndroid Build Coastguard Worker
10872*28e138c6SAndroid Build Coastguard Worker
10873*28e138c6SAndroid Build Coastguard Worker\backslash
10874*28e138c6SAndroid Build Coastguard Workerbegin{center}
10875*28e138c6SAndroid Build Coastguard Worker\end_layout
10876*28e138c6SAndroid Build Coastguard Worker
10877*28e138c6SAndroid Build Coastguard Worker\end_inset
10878*28e138c6SAndroid Build Coastguard Worker
10879*28e138c6SAndroid Build Coastguard Worker
10880*28e138c6SAndroid Build Coastguard Worker\begin_inset Tabular
10881*28e138c6SAndroid Build Coastguard Worker<lyxtabular version="3" rows="12" columns="3">
10882*28e138c6SAndroid Build Coastguard Worker<features>
10883*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10884*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10885*28e138c6SAndroid Build Coastguard Worker<column alignment="center" valignment="top" width="0pt">
10886*28e138c6SAndroid Build Coastguard Worker<row>
10887*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10888*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10889*28e138c6SAndroid Build Coastguard Worker
10890*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10891*28e138c6SAndroid Build Coastguard WorkerMode/Quality
10892*28e138c6SAndroid Build Coastguard Worker\end_layout
10893*28e138c6SAndroid Build Coastguard Worker
10894*28e138c6SAndroid Build Coastguard Worker\end_inset
10895*28e138c6SAndroid Build Coastguard Worker</cell>
10896*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
10897*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10898*28e138c6SAndroid Build Coastguard Worker
10899*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10900*28e138c6SAndroid Build Coastguard WorkerBit-rate
10901*28e138c6SAndroid Build Coastguard Worker\begin_inset Index
10902*28e138c6SAndroid Build Coastguard Workerstatus collapsed
10903*28e138c6SAndroid Build Coastguard Worker
10904*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10905*28e138c6SAndroid Build Coastguard Workerbit-rate
10906*28e138c6SAndroid Build Coastguard Worker\end_layout
10907*28e138c6SAndroid Build Coastguard Worker
10908*28e138c6SAndroid Build Coastguard Worker\end_inset
10909*28e138c6SAndroid Build Coastguard Worker
10910*28e138c6SAndroid Build Coastguard Worker (bps)
10911*28e138c6SAndroid Build Coastguard Worker\end_layout
10912*28e138c6SAndroid Build Coastguard Worker
10913*28e138c6SAndroid Build Coastguard Worker\end_inset
10914*28e138c6SAndroid Build Coastguard Worker</cell>
10915*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
10916*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10917*28e138c6SAndroid Build Coastguard Worker
10918*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10919*28e138c6SAndroid Build Coastguard WorkerQuality/description
10920*28e138c6SAndroid Build Coastguard Worker\end_layout
10921*28e138c6SAndroid Build Coastguard Worker
10922*28e138c6SAndroid Build Coastguard Worker\end_inset
10923*28e138c6SAndroid Build Coastguard Worker</cell>
10924*28e138c6SAndroid Build Coastguard Worker</row>
10925*28e138c6SAndroid Build Coastguard Worker<row>
10926*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10927*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10928*28e138c6SAndroid Build Coastguard Worker
10929*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10930*28e138c6SAndroid Build Coastguard Worker0
10931*28e138c6SAndroid Build Coastguard Worker\end_layout
10932*28e138c6SAndroid Build Coastguard Worker
10933*28e138c6SAndroid Build Coastguard Worker\end_inset
10934*28e138c6SAndroid Build Coastguard Worker</cell>
10935*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10936*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10937*28e138c6SAndroid Build Coastguard Worker
10938*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10939*28e138c6SAndroid Build Coastguard Worker3,950
10940*28e138c6SAndroid Build Coastguard Worker\end_layout
10941*28e138c6SAndroid Build Coastguard Worker
10942*28e138c6SAndroid Build Coastguard Worker\end_inset
10943*28e138c6SAndroid Build Coastguard Worker</cell>
10944*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10945*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10946*28e138c6SAndroid Build Coastguard Worker
10947*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10948*28e138c6SAndroid Build Coastguard WorkerBarely intelligible (mostly for comfort noise)
10949*28e138c6SAndroid Build Coastguard Worker\end_layout
10950*28e138c6SAndroid Build Coastguard Worker
10951*28e138c6SAndroid Build Coastguard Worker\end_inset
10952*28e138c6SAndroid Build Coastguard Worker</cell>
10953*28e138c6SAndroid Build Coastguard Worker</row>
10954*28e138c6SAndroid Build Coastguard Worker<row>
10955*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10956*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10957*28e138c6SAndroid Build Coastguard Worker
10958*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10959*28e138c6SAndroid Build Coastguard Worker1
10960*28e138c6SAndroid Build Coastguard Worker\end_layout
10961*28e138c6SAndroid Build Coastguard Worker
10962*28e138c6SAndroid Build Coastguard Worker\end_inset
10963*28e138c6SAndroid Build Coastguard Worker</cell>
10964*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10965*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10966*28e138c6SAndroid Build Coastguard Worker
10967*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10968*28e138c6SAndroid Build Coastguard Worker5,750
10969*28e138c6SAndroid Build Coastguard Worker\end_layout
10970*28e138c6SAndroid Build Coastguard Worker
10971*28e138c6SAndroid Build Coastguard Worker\end_inset
10972*28e138c6SAndroid Build Coastguard Worker</cell>
10973*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
10974*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10975*28e138c6SAndroid Build Coastguard Worker
10976*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10977*28e138c6SAndroid Build Coastguard WorkerVery noticeable artifacts/noise, poor intelligibility
10978*28e138c6SAndroid Build Coastguard Worker\end_layout
10979*28e138c6SAndroid Build Coastguard Worker
10980*28e138c6SAndroid Build Coastguard Worker\end_inset
10981*28e138c6SAndroid Build Coastguard Worker</cell>
10982*28e138c6SAndroid Build Coastguard Worker</row>
10983*28e138c6SAndroid Build Coastguard Worker<row>
10984*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10985*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10986*28e138c6SAndroid Build Coastguard Worker
10987*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10988*28e138c6SAndroid Build Coastguard Worker2
10989*28e138c6SAndroid Build Coastguard Worker\end_layout
10990*28e138c6SAndroid Build Coastguard Worker
10991*28e138c6SAndroid Build Coastguard Worker\end_inset
10992*28e138c6SAndroid Build Coastguard Worker</cell>
10993*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
10994*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
10995*28e138c6SAndroid Build Coastguard Worker
10996*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
10997*28e138c6SAndroid Build Coastguard Worker7,750
10998*28e138c6SAndroid Build Coastguard Worker\end_layout
10999*28e138c6SAndroid Build Coastguard Worker
11000*28e138c6SAndroid Build Coastguard Worker\end_inset
11001*28e138c6SAndroid Build Coastguard Worker</cell>
11002*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11003*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11004*28e138c6SAndroid Build Coastguard Worker
11005*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11006*28e138c6SAndroid Build Coastguard WorkerVery noticeable artifacts/noise, good intelligibility
11007*28e138c6SAndroid Build Coastguard Worker\end_layout
11008*28e138c6SAndroid Build Coastguard Worker
11009*28e138c6SAndroid Build Coastguard Worker\end_inset
11010*28e138c6SAndroid Build Coastguard Worker</cell>
11011*28e138c6SAndroid Build Coastguard Worker</row>
11012*28e138c6SAndroid Build Coastguard Worker<row>
11013*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11014*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11015*28e138c6SAndroid Build Coastguard Worker
11016*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11017*28e138c6SAndroid Build Coastguard Worker3
11018*28e138c6SAndroid Build Coastguard Worker\end_layout
11019*28e138c6SAndroid Build Coastguard Worker
11020*28e138c6SAndroid Build Coastguard Worker\end_inset
11021*28e138c6SAndroid Build Coastguard Worker</cell>
11022*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11023*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11024*28e138c6SAndroid Build Coastguard Worker
11025*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11026*28e138c6SAndroid Build Coastguard Worker9,800
11027*28e138c6SAndroid Build Coastguard Worker\end_layout
11028*28e138c6SAndroid Build Coastguard Worker
11029*28e138c6SAndroid Build Coastguard Worker\end_inset
11030*28e138c6SAndroid Build Coastguard Worker</cell>
11031*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11032*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11033*28e138c6SAndroid Build Coastguard Worker
11034*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11035*28e138c6SAndroid Build Coastguard WorkerArtifacts/noise sometimes annoying
11036*28e138c6SAndroid Build Coastguard Worker\end_layout
11037*28e138c6SAndroid Build Coastguard Worker
11038*28e138c6SAndroid Build Coastguard Worker\end_inset
11039*28e138c6SAndroid Build Coastguard Worker</cell>
11040*28e138c6SAndroid Build Coastguard Worker</row>
11041*28e138c6SAndroid Build Coastguard Worker<row>
11042*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11043*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11044*28e138c6SAndroid Build Coastguard Worker
11045*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11046*28e138c6SAndroid Build Coastguard Worker4
11047*28e138c6SAndroid Build Coastguard Worker\end_layout
11048*28e138c6SAndroid Build Coastguard Worker
11049*28e138c6SAndroid Build Coastguard Worker\end_inset
11050*28e138c6SAndroid Build Coastguard Worker</cell>
11051*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11052*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11053*28e138c6SAndroid Build Coastguard Worker
11054*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11055*28e138c6SAndroid Build Coastguard Worker12,800
11056*28e138c6SAndroid Build Coastguard Worker\end_layout
11057*28e138c6SAndroid Build Coastguard Worker
11058*28e138c6SAndroid Build Coastguard Worker\end_inset
11059*28e138c6SAndroid Build Coastguard Worker</cell>
11060*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11061*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11062*28e138c6SAndroid Build Coastguard Worker
11063*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11064*28e138c6SAndroid Build Coastguard WorkerArtifacts/noise usually noticeable
11065*28e138c6SAndroid Build Coastguard Worker\end_layout
11066*28e138c6SAndroid Build Coastguard Worker
11067*28e138c6SAndroid Build Coastguard Worker\end_inset
11068*28e138c6SAndroid Build Coastguard Worker</cell>
11069*28e138c6SAndroid Build Coastguard Worker</row>
11070*28e138c6SAndroid Build Coastguard Worker<row>
11071*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11072*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11073*28e138c6SAndroid Build Coastguard Worker
11074*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11075*28e138c6SAndroid Build Coastguard Worker5
11076*28e138c6SAndroid Build Coastguard Worker\end_layout
11077*28e138c6SAndroid Build Coastguard Worker
11078*28e138c6SAndroid Build Coastguard Worker\end_inset
11079*28e138c6SAndroid Build Coastguard Worker</cell>
11080*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11081*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11082*28e138c6SAndroid Build Coastguard Worker
11083*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11084*28e138c6SAndroid Build Coastguard Worker16,800
11085*28e138c6SAndroid Build Coastguard Worker\end_layout
11086*28e138c6SAndroid Build Coastguard Worker
11087*28e138c6SAndroid Build Coastguard Worker\end_inset
11088*28e138c6SAndroid Build Coastguard Worker</cell>
11089*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11090*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11091*28e138c6SAndroid Build Coastguard Worker
11092*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11093*28e138c6SAndroid Build Coastguard WorkerArtifacts/noise sometimes noticeable
11094*28e138c6SAndroid Build Coastguard Worker\end_layout
11095*28e138c6SAndroid Build Coastguard Worker
11096*28e138c6SAndroid Build Coastguard Worker\end_inset
11097*28e138c6SAndroid Build Coastguard Worker</cell>
11098*28e138c6SAndroid Build Coastguard Worker</row>
11099*28e138c6SAndroid Build Coastguard Worker<row>
11100*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11101*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11102*28e138c6SAndroid Build Coastguard Worker
11103*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11104*28e138c6SAndroid Build Coastguard Worker6
11105*28e138c6SAndroid Build Coastguard Worker\end_layout
11106*28e138c6SAndroid Build Coastguard Worker
11107*28e138c6SAndroid Build Coastguard Worker\end_inset
11108*28e138c6SAndroid Build Coastguard Worker</cell>
11109*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11110*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11111*28e138c6SAndroid Build Coastguard Worker
11112*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11113*28e138c6SAndroid Build Coastguard Worker20,600
11114*28e138c6SAndroid Build Coastguard Worker\end_layout
11115*28e138c6SAndroid Build Coastguard Worker
11116*28e138c6SAndroid Build Coastguard Worker\end_inset
11117*28e138c6SAndroid Build Coastguard Worker</cell>
11118*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11119*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11120*28e138c6SAndroid Build Coastguard Worker
11121*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11122*28e138c6SAndroid Build Coastguard WorkerNeed good headphones to tell the difference
11123*28e138c6SAndroid Build Coastguard Worker\end_layout
11124*28e138c6SAndroid Build Coastguard Worker
11125*28e138c6SAndroid Build Coastguard Worker\end_inset
11126*28e138c6SAndroid Build Coastguard Worker</cell>
11127*28e138c6SAndroid Build Coastguard Worker</row>
11128*28e138c6SAndroid Build Coastguard Worker<row>
11129*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11130*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11131*28e138c6SAndroid Build Coastguard Worker
11132*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11133*28e138c6SAndroid Build Coastguard Worker7
11134*28e138c6SAndroid Build Coastguard Worker\end_layout
11135*28e138c6SAndroid Build Coastguard Worker
11136*28e138c6SAndroid Build Coastguard Worker\end_inset
11137*28e138c6SAndroid Build Coastguard Worker</cell>
11138*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11139*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11140*28e138c6SAndroid Build Coastguard Worker
11141*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11142*28e138c6SAndroid Build Coastguard Worker23,800
11143*28e138c6SAndroid Build Coastguard Worker\end_layout
11144*28e138c6SAndroid Build Coastguard Worker
11145*28e138c6SAndroid Build Coastguard Worker\end_inset
11146*28e138c6SAndroid Build Coastguard Worker</cell>
11147*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11148*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11149*28e138c6SAndroid Build Coastguard Worker
11150*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11151*28e138c6SAndroid Build Coastguard WorkerNeed good headphones to tell the difference
11152*28e138c6SAndroid Build Coastguard Worker\end_layout
11153*28e138c6SAndroid Build Coastguard Worker
11154*28e138c6SAndroid Build Coastguard Worker\end_inset
11155*28e138c6SAndroid Build Coastguard Worker</cell>
11156*28e138c6SAndroid Build Coastguard Worker</row>
11157*28e138c6SAndroid Build Coastguard Worker<row>
11158*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11159*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11160*28e138c6SAndroid Build Coastguard Worker
11161*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11162*28e138c6SAndroid Build Coastguard Worker8
11163*28e138c6SAndroid Build Coastguard Worker\end_layout
11164*28e138c6SAndroid Build Coastguard Worker
11165*28e138c6SAndroid Build Coastguard Worker\end_inset
11166*28e138c6SAndroid Build Coastguard Worker</cell>
11167*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11168*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11169*28e138c6SAndroid Build Coastguard Worker
11170*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11171*28e138c6SAndroid Build Coastguard Worker27,800
11172*28e138c6SAndroid Build Coastguard Worker\end_layout
11173*28e138c6SAndroid Build Coastguard Worker
11174*28e138c6SAndroid Build Coastguard Worker\end_inset
11175*28e138c6SAndroid Build Coastguard Worker</cell>
11176*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11177*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11178*28e138c6SAndroid Build Coastguard Worker
11179*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11180*28e138c6SAndroid Build Coastguard WorkerHard to tell the difference even with good headphones
11181*28e138c6SAndroid Build Coastguard Worker\end_layout
11182*28e138c6SAndroid Build Coastguard Worker
11183*28e138c6SAndroid Build Coastguard Worker\end_inset
11184*28e138c6SAndroid Build Coastguard Worker</cell>
11185*28e138c6SAndroid Build Coastguard Worker</row>
11186*28e138c6SAndroid Build Coastguard Worker<row>
11187*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11188*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11189*28e138c6SAndroid Build Coastguard Worker
11190*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11191*28e138c6SAndroid Build Coastguard Worker9
11192*28e138c6SAndroid Build Coastguard Worker\end_layout
11193*28e138c6SAndroid Build Coastguard Worker
11194*28e138c6SAndroid Build Coastguard Worker\end_inset
11195*28e138c6SAndroid Build Coastguard Worker</cell>
11196*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11197*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11198*28e138c6SAndroid Build Coastguard Worker
11199*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11200*28e138c6SAndroid Build Coastguard Worker34,200
11201*28e138c6SAndroid Build Coastguard Worker\end_layout
11202*28e138c6SAndroid Build Coastguard Worker
11203*28e138c6SAndroid Build Coastguard Worker\end_inset
11204*28e138c6SAndroid Build Coastguard Worker</cell>
11205*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
11206*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11207*28e138c6SAndroid Build Coastguard Worker
11208*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11209*28e138c6SAndroid Build Coastguard WorkerHard to tell the difference even with good headphones
11210*28e138c6SAndroid Build Coastguard Worker\end_layout
11211*28e138c6SAndroid Build Coastguard Worker
11212*28e138c6SAndroid Build Coastguard Worker\end_inset
11213*28e138c6SAndroid Build Coastguard Worker</cell>
11214*28e138c6SAndroid Build Coastguard Worker</row>
11215*28e138c6SAndroid Build Coastguard Worker<row>
11216*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
11217*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11218*28e138c6SAndroid Build Coastguard Worker
11219*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11220*28e138c6SAndroid Build Coastguard Worker10
11221*28e138c6SAndroid Build Coastguard Worker\end_layout
11222*28e138c6SAndroid Build Coastguard Worker
11223*28e138c6SAndroid Build Coastguard Worker\end_inset
11224*28e138c6SAndroid Build Coastguard Worker</cell>
11225*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
11226*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11227*28e138c6SAndroid Build Coastguard Worker
11228*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11229*28e138c6SAndroid Build Coastguard Worker42,200
11230*28e138c6SAndroid Build Coastguard Worker\end_layout
11231*28e138c6SAndroid Build Coastguard Worker
11232*28e138c6SAndroid Build Coastguard Worker\end_inset
11233*28e138c6SAndroid Build Coastguard Worker</cell>
11234*28e138c6SAndroid Build Coastguard Worker<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
11235*28e138c6SAndroid Build Coastguard Worker\begin_inset Text
11236*28e138c6SAndroid Build Coastguard Worker
11237*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11238*28e138c6SAndroid Build Coastguard WorkerCompletely transparent for voice, good quality music
11239*28e138c6SAndroid Build Coastguard Worker\end_layout
11240*28e138c6SAndroid Build Coastguard Worker
11241*28e138c6SAndroid Build Coastguard Worker\end_inset
11242*28e138c6SAndroid Build Coastguard Worker</cell>
11243*28e138c6SAndroid Build Coastguard Worker</row>
11244*28e138c6SAndroid Build Coastguard Worker</lyxtabular>
11245*28e138c6SAndroid Build Coastguard Worker
11246*28e138c6SAndroid Build Coastguard Worker\end_inset
11247*28e138c6SAndroid Build Coastguard Worker
11248*28e138c6SAndroid Build Coastguard Worker
11249*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
11250*28e138c6SAndroid Build Coastguard Workerstatus collapsed
11251*28e138c6SAndroid Build Coastguard Worker
11252*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11253*28e138c6SAndroid Build Coastguard Worker
11254*28e138c6SAndroid Build Coastguard Worker
11255*28e138c6SAndroid Build Coastguard Worker\backslash
11256*28e138c6SAndroid Build Coastguard Workerend{center}
11257*28e138c6SAndroid Build Coastguard Worker\end_layout
11258*28e138c6SAndroid Build Coastguard Worker
11259*28e138c6SAndroid Build Coastguard Worker\end_inset
11260*28e138c6SAndroid Build Coastguard Worker
11261*28e138c6SAndroid Build Coastguard Worker
11262*28e138c6SAndroid Build Coastguard Worker\end_layout
11263*28e138c6SAndroid Build Coastguard Worker
11264*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11265*28e138c6SAndroid Build Coastguard Worker\begin_inset Caption
11266*28e138c6SAndroid Build Coastguard Worker
11267*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11268*28e138c6SAndroid Build Coastguard WorkerQuality versus bit-rate for the wideband encoder
11269*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
11270*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
11271*28e138c6SAndroid Build Coastguard Workername "tab:wideband-quality"
11272*28e138c6SAndroid Build Coastguard Worker
11273*28e138c6SAndroid Build Coastguard Worker\end_inset
11274*28e138c6SAndroid Build Coastguard Worker
11275*28e138c6SAndroid Build Coastguard Worker
11276*28e138c6SAndroid Build Coastguard Worker\end_layout
11277*28e138c6SAndroid Build Coastguard Worker
11278*28e138c6SAndroid Build Coastguard Worker\end_inset
11279*28e138c6SAndroid Build Coastguard Worker
11280*28e138c6SAndroid Build Coastguard Worker
11281*28e138c6SAndroid Build Coastguard Worker\end_layout
11282*28e138c6SAndroid Build Coastguard Worker
11283*28e138c6SAndroid Build Coastguard Worker\end_inset
11284*28e138c6SAndroid Build Coastguard Worker
11285*28e138c6SAndroid Build Coastguard Worker
11286*28e138c6SAndroid Build Coastguard Worker\end_layout
11287*28e138c6SAndroid Build Coastguard Worker
11288*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11289*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
11290*28e138c6SAndroid Build Coastguard Workerstatus open
11291*28e138c6SAndroid Build Coastguard Worker
11292*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11293*28e138c6SAndroid Build Coastguard Worker
11294*28e138c6SAndroid Build Coastguard Worker
11295*28e138c6SAndroid Build Coastguard Worker\backslash
11296*28e138c6SAndroid Build Coastguard Workerclearpage
11297*28e138c6SAndroid Build Coastguard Worker\end_layout
11298*28e138c6SAndroid Build Coastguard Worker
11299*28e138c6SAndroid Build Coastguard Worker\end_inset
11300*28e138c6SAndroid Build Coastguard Worker
11301*28e138c6SAndroid Build Coastguard Worker
11302*28e138c6SAndroid Build Coastguard Worker\end_layout
11303*28e138c6SAndroid Build Coastguard Worker
11304*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11305*28e138c6SAndroid Build Coastguard Worker\begin_inset ERT
11306*28e138c6SAndroid Build Coastguard Workerstatus collapsed
11307*28e138c6SAndroid Build Coastguard Worker
11308*28e138c6SAndroid Build Coastguard Worker\begin_layout Plain Layout
11309*28e138c6SAndroid Build Coastguard Worker
11310*28e138c6SAndroid Build Coastguard Worker
11311*28e138c6SAndroid Build Coastguard Worker\backslash
11312*28e138c6SAndroid Build Coastguard Workerclearpage
11313*28e138c6SAndroid Build Coastguard Worker\end_layout
11314*28e138c6SAndroid Build Coastguard Worker
11315*28e138c6SAndroid Build Coastguard Worker\end_inset
11316*28e138c6SAndroid Build Coastguard Worker
11317*28e138c6SAndroid Build Coastguard Worker
11318*28e138c6SAndroid Build Coastguard Worker\end_layout
11319*28e138c6SAndroid Build Coastguard Worker
11320*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
11321*28e138c6SAndroid Build Coastguard Worker\start_of_appendix
11322*28e138c6SAndroid Build Coastguard WorkerSample code
11323*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
11324*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
11325*28e138c6SAndroid Build Coastguard Workername "sec:Sample-code"
11326*28e138c6SAndroid Build Coastguard Worker
11327*28e138c6SAndroid Build Coastguard Worker\end_inset
11328*28e138c6SAndroid Build Coastguard Worker
11329*28e138c6SAndroid Build Coastguard Worker
11330*28e138c6SAndroid Build Coastguard Worker\end_layout
11331*28e138c6SAndroid Build Coastguard Worker
11332*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11333*28e138c6SAndroid Build Coastguard WorkerThis section shows sample code for encoding and decoding speech using the
11334*28e138c6SAndroid Build Coastguard Worker Speex API.
11335*28e138c6SAndroid Build Coastguard Worker The commands can be used to encode and decode a file by calling:
11336*28e138c6SAndroid Build Coastguard Worker\family typewriter
11337*28e138c6SAndroid Build Coastguard Worker
11338*28e138c6SAndroid Build Coastguard Worker\begin_inset Newline newline
11339*28e138c6SAndroid Build Coastguard Worker\end_inset
11340*28e138c6SAndroid Build Coastguard Worker
11341*28e138c6SAndroid Build Coastguard Worker% sampleenc in_file.sw | sampledec out_file.sw
11342*28e138c6SAndroid Build Coastguard Worker\family default
11343*28e138c6SAndroid Build Coastguard Worker
11344*28e138c6SAndroid Build Coastguard Worker\begin_inset Newline newline
11345*28e138c6SAndroid Build Coastguard Worker\end_inset
11346*28e138c6SAndroid Build Coastguard Worker
11347*28e138c6SAndroid Build Coastguard Workerwhere both files are raw (no header) files encoded at 16 bits per sample
11348*28e138c6SAndroid Build Coastguard Worker (in the machine natural endianness).
11349*28e138c6SAndroid Build Coastguard Worker\end_layout
11350*28e138c6SAndroid Build Coastguard Worker
11351*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
11352*28e138c6SAndroid Build Coastguard Workersampleenc.c
11353*28e138c6SAndroid Build Coastguard Worker\end_layout
11354*28e138c6SAndroid Build Coastguard Worker
11355*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11356*28e138c6SAndroid Build Coastguard Workersampleenc takes a raw 16 bits/sample file, encodes it and outputs a Speex
11357*28e138c6SAndroid Build Coastguard Worker stream to stdout.
11358*28e138c6SAndroid Build Coastguard Worker Note that the packing used is
11359*28e138c6SAndroid Build Coastguard Worker\series bold
11360*28e138c6SAndroid Build Coastguard Workernot
11361*28e138c6SAndroid Build Coastguard Worker\series default
11362*28e138c6SAndroid Build Coastguard Worker compatible with that of speexenc/speexdec.
11363*28e138c6SAndroid Build Coastguard Worker\end_layout
11364*28e138c6SAndroid Build Coastguard Worker
11365*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11366*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset include
11367*28e138c6SAndroid Build Coastguard WorkerLatexCommand lstinputlisting
11368*28e138c6SAndroid Build Coastguard Workerfilename "sampleenc.c"
11369*28e138c6SAndroid Build Coastguard Workerlstparams "caption={Source code for sampleenc},label={sampleenc-source-code},numbers=left,numberstyle={\\footnotesize}"
11370*28e138c6SAndroid Build Coastguard Worker
11371*28e138c6SAndroid Build Coastguard Worker\end_inset
11372*28e138c6SAndroid Build Coastguard Worker
11373*28e138c6SAndroid Build Coastguard Worker
11374*28e138c6SAndroid Build Coastguard Worker\end_layout
11375*28e138c6SAndroid Build Coastguard Worker
11376*28e138c6SAndroid Build Coastguard Worker\begin_layout Section
11377*28e138c6SAndroid Build Coastguard Workersampledec.c
11378*28e138c6SAndroid Build Coastguard Worker\end_layout
11379*28e138c6SAndroid Build Coastguard Worker
11380*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11381*28e138c6SAndroid Build Coastguard Workersampledec reads a Speex stream from stdin, decodes it and outputs it to
11382*28e138c6SAndroid Build Coastguard Worker a raw 16 bits/sample file.
11383*28e138c6SAndroid Build Coastguard Worker Note that the packing used is
11384*28e138c6SAndroid Build Coastguard Worker\series bold
11385*28e138c6SAndroid Build Coastguard Workernot
11386*28e138c6SAndroid Build Coastguard Worker\series default
11387*28e138c6SAndroid Build Coastguard Worker compatible with that of speexenc/speexdec.
11388*28e138c6SAndroid Build Coastguard Worker\end_layout
11389*28e138c6SAndroid Build Coastguard Worker
11390*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11391*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset include
11392*28e138c6SAndroid Build Coastguard WorkerLatexCommand lstinputlisting
11393*28e138c6SAndroid Build Coastguard Workerfilename "sampledec.c"
11394*28e138c6SAndroid Build Coastguard Workerlstparams "caption={Source code for sampledec},label={sampledec-source-code},numbers=left,numberstyle={\\footnotesize}"
11395*28e138c6SAndroid Build Coastguard Worker
11396*28e138c6SAndroid Build Coastguard Worker\end_inset
11397*28e138c6SAndroid Build Coastguard Worker
11398*28e138c6SAndroid Build Coastguard Worker
11399*28e138c6SAndroid Build Coastguard Worker\end_layout
11400*28e138c6SAndroid Build Coastguard Worker
11401*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11402*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
11403*28e138c6SAndroid Build Coastguard Worker\end_inset
11404*28e138c6SAndroid Build Coastguard Worker
11405*28e138c6SAndroid Build Coastguard Worker
11406*28e138c6SAndroid Build Coastguard Worker\end_layout
11407*28e138c6SAndroid Build Coastguard Worker
11408*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
11409*28e138c6SAndroid Build Coastguard WorkerJitter Buffer for Speex
11410*28e138c6SAndroid Build Coastguard Worker\end_layout
11411*28e138c6SAndroid Build Coastguard Worker
11412*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11413*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset include
11414*28e138c6SAndroid Build Coastguard WorkerLatexCommand lstinputlisting
11415*28e138c6SAndroid Build Coastguard Workerfilename "../speexclient/speex_jitter_buffer.c"
11416*28e138c6SAndroid Build Coastguard Workerlstparams "caption={Example of using the jitter buffer for Speex packets},label={example-speex-jitter},numbers=left,numberstyle={\\footnotesize}"
11417*28e138c6SAndroid Build Coastguard Worker
11418*28e138c6SAndroid Build Coastguard Worker\end_inset
11419*28e138c6SAndroid Build Coastguard Worker
11420*28e138c6SAndroid Build Coastguard Worker
11421*28e138c6SAndroid Build Coastguard Worker\end_layout
11422*28e138c6SAndroid Build Coastguard Worker
11423*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11424*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
11425*28e138c6SAndroid Build Coastguard Worker\end_inset
11426*28e138c6SAndroid Build Coastguard Worker
11427*28e138c6SAndroid Build Coastguard Worker
11428*28e138c6SAndroid Build Coastguard Worker\end_layout
11429*28e138c6SAndroid Build Coastguard Worker
11430*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
11431*28e138c6SAndroid Build Coastguard WorkerIETF RTP Profile
11432*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
11433*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
11434*28e138c6SAndroid Build Coastguard Workername "sec:IETF-draft"
11435*28e138c6SAndroid Build Coastguard Worker
11436*28e138c6SAndroid Build Coastguard Worker\end_inset
11437*28e138c6SAndroid Build Coastguard Worker
11438*28e138c6SAndroid Build Coastguard Worker
11439*28e138c6SAndroid Build Coastguard Worker\end_layout
11440*28e138c6SAndroid Build Coastguard Worker
11441*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11442*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset include
11443*28e138c6SAndroid Build Coastguard WorkerLatexCommand verbatiminput
11444*28e138c6SAndroid Build Coastguard Workerfilename "draft-ietf-avt-rtp-speex-05-tmp.txt"
11445*28e138c6SAndroid Build Coastguard Worker
11446*28e138c6SAndroid Build Coastguard Worker\end_inset
11447*28e138c6SAndroid Build Coastguard Worker
11448*28e138c6SAndroid Build Coastguard Worker
11449*28e138c6SAndroid Build Coastguard Worker\end_layout
11450*28e138c6SAndroid Build Coastguard Worker
11451*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11452*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
11453*28e138c6SAndroid Build Coastguard Worker\end_inset
11454*28e138c6SAndroid Build Coastguard Worker
11455*28e138c6SAndroid Build Coastguard Worker
11456*28e138c6SAndroid Build Coastguard Worker\end_layout
11457*28e138c6SAndroid Build Coastguard Worker
11458*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
11459*28e138c6SAndroid Build Coastguard WorkerSpeex License
11460*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset label
11461*28e138c6SAndroid Build Coastguard WorkerLatexCommand label
11462*28e138c6SAndroid Build Coastguard Workername "sec:Speex-License"
11463*28e138c6SAndroid Build Coastguard Worker
11464*28e138c6SAndroid Build Coastguard Worker\end_inset
11465*28e138c6SAndroid Build Coastguard Worker
11466*28e138c6SAndroid Build Coastguard Worker
11467*28e138c6SAndroid Build Coastguard Worker\end_layout
11468*28e138c6SAndroid Build Coastguard Worker
11469*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11470*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset include
11471*28e138c6SAndroid Build Coastguard WorkerLatexCommand verbatiminput
11472*28e138c6SAndroid Build Coastguard Workerfilename "../COPYING"
11473*28e138c6SAndroid Build Coastguard Worker
11474*28e138c6SAndroid Build Coastguard Worker\end_inset
11475*28e138c6SAndroid Build Coastguard Worker
11476*28e138c6SAndroid Build Coastguard Worker
11477*28e138c6SAndroid Build Coastguard Worker\end_layout
11478*28e138c6SAndroid Build Coastguard Worker
11479*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11480*28e138c6SAndroid Build Coastguard Worker\begin_inset Newpage newpage
11481*28e138c6SAndroid Build Coastguard Worker\end_inset
11482*28e138c6SAndroid Build Coastguard Worker
11483*28e138c6SAndroid Build Coastguard Worker
11484*28e138c6SAndroid Build Coastguard Worker\end_layout
11485*28e138c6SAndroid Build Coastguard Worker
11486*28e138c6SAndroid Build Coastguard Worker\begin_layout Chapter
11487*28e138c6SAndroid Build Coastguard WorkerGNU Free Documentation License
11488*28e138c6SAndroid Build Coastguard Worker\end_layout
11489*28e138c6SAndroid Build Coastguard Worker
11490*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11491*28e138c6SAndroid Build Coastguard WorkerVersion 1.1, March 2000
11492*28e138c6SAndroid Build Coastguard Worker\end_layout
11493*28e138c6SAndroid Build Coastguard Worker
11494*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11495*28e138c6SAndroid Build Coastguard WorkerCopyright (C) 2000 Free Software Foundation, Inc.
11496*28e138c6SAndroid Build Coastguard Worker 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted
11497*28e138c6SAndroid Build Coastguard Worker to copy and distribute verbatim copies of this license document, but changing
11498*28e138c6SAndroid Build Coastguard Worker it is not allowed.
11499*28e138c6SAndroid Build Coastguard Worker
11500*28e138c6SAndroid Build Coastguard Worker\end_layout
11501*28e138c6SAndroid Build Coastguard Worker
11502*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11503*28e138c6SAndroid Build Coastguard Worker0.
11504*28e138c6SAndroid Build Coastguard Worker PREAMBLE
11505*28e138c6SAndroid Build Coastguard Worker\end_layout
11506*28e138c6SAndroid Build Coastguard Worker
11507*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11508*28e138c6SAndroid Build Coastguard WorkerThe purpose of this License is to make a manual, textbook, or other written
11509*28e138c6SAndroid Build Coastguard Worker document "free" in the sense of freedom: to assure everyone the effective
11510*28e138c6SAndroid Build Coastguard Worker freedom to copy and redistribute it, with or without modifying it, either
11511*28e138c6SAndroid Build Coastguard Worker commercially or noncommercially.
11512*28e138c6SAndroid Build Coastguard Worker Secondarily, this License preserves for the author and publisher a way
11513*28e138c6SAndroid Build Coastguard Worker to get credit for their work, while not being considered responsible for
11514*28e138c6SAndroid Build Coastguard Worker modifications made by others.
11515*28e138c6SAndroid Build Coastguard Worker\end_layout
11516*28e138c6SAndroid Build Coastguard Worker
11517*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11518*28e138c6SAndroid Build Coastguard WorkerThis License is a kind of "copyleft", which means that derivative works
11519*28e138c6SAndroid Build Coastguard Worker of the document must themselves be free in the same sense.
11520*28e138c6SAndroid Build Coastguard Worker It complements the GNU General Public License, which is a copyleft license
11521*28e138c6SAndroid Build Coastguard Worker designed for free software.
11522*28e138c6SAndroid Build Coastguard Worker\end_layout
11523*28e138c6SAndroid Build Coastguard Worker
11524*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11525*28e138c6SAndroid Build Coastguard WorkerWe have designed this License in order to use it for manuals for free software,
11526*28e138c6SAndroid Build Coastguard Worker because free software needs free documentation: a free program should come
11527*28e138c6SAndroid Build Coastguard Worker with manuals providing the same freedoms that the software does.
11528*28e138c6SAndroid Build Coastguard Worker But this License is not limited to software manuals; it can be used for
11529*28e138c6SAndroid Build Coastguard Worker any textual work, regardless of subject matter or whether it is published
11530*28e138c6SAndroid Build Coastguard Worker as a printed book.
11531*28e138c6SAndroid Build Coastguard Worker We recommend this License principally for works whose purpose is instruction
11532*28e138c6SAndroid Build Coastguard Worker or reference.
11533*28e138c6SAndroid Build Coastguard Worker
11534*28e138c6SAndroid Build Coastguard Worker\end_layout
11535*28e138c6SAndroid Build Coastguard Worker
11536*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11537*28e138c6SAndroid Build Coastguard Worker1.
11538*28e138c6SAndroid Build Coastguard Worker APPLICABILITY AND DEFINITIONS
11539*28e138c6SAndroid Build Coastguard Worker\end_layout
11540*28e138c6SAndroid Build Coastguard Worker
11541*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11542*28e138c6SAndroid Build Coastguard WorkerThis License applies to any manual or other work that contains a notice
11543*28e138c6SAndroid Build Coastguard Worker placed by the copyright holder saying it can be distributed under the terms
11544*28e138c6SAndroid Build Coastguard Worker of this License.
11545*28e138c6SAndroid Build Coastguard Worker The "Document", below, refers to any such manual or work.
11546*28e138c6SAndroid Build Coastguard Worker Any member of the public is a licensee, and is addressed as "you".
11547*28e138c6SAndroid Build Coastguard Worker\end_layout
11548*28e138c6SAndroid Build Coastguard Worker
11549*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11550*28e138c6SAndroid Build Coastguard WorkerA "Modified Version" of the Document means any work containing the Document
11551*28e138c6SAndroid Build Coastguard Worker or a portion of it, either copied verbatim, or with modifications and/or
11552*28e138c6SAndroid Build Coastguard Worker translated into another language.
11553*28e138c6SAndroid Build Coastguard Worker\end_layout
11554*28e138c6SAndroid Build Coastguard Worker
11555*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11556*28e138c6SAndroid Build Coastguard WorkerA "Secondary Section" is a named appendix or a front-matter section of the
11557*28e138c6SAndroid Build Coastguard Worker Document that deals exclusively with the relationship of the publishers
11558*28e138c6SAndroid Build Coastguard Worker or authors of the Document to the Document's overall subject (or to related
11559*28e138c6SAndroid Build Coastguard Worker matters) and contains nothing that could fall directly within that overall
11560*28e138c6SAndroid Build Coastguard Worker subject.
11561*28e138c6SAndroid Build Coastguard Worker (For example, if the Document is in part a textbook of mathematics, a Secondary
11562*28e138c6SAndroid Build Coastguard Worker Section may not explain any mathematics.) The relationship could be a matter
11563*28e138c6SAndroid Build Coastguard Worker of historical connection with the subject or with related matters, or of
11564*28e138c6SAndroid Build Coastguard Worker legal, commercial, philosophical, ethical or political position regarding
11565*28e138c6SAndroid Build Coastguard Worker them.
11566*28e138c6SAndroid Build Coastguard Worker\end_layout
11567*28e138c6SAndroid Build Coastguard Worker
11568*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11569*28e138c6SAndroid Build Coastguard WorkerThe "Invariant Sections" are certain Secondary Sections whose titles are
11570*28e138c6SAndroid Build Coastguard Worker designated, as being those of Invariant Sections, in the notice that says
11571*28e138c6SAndroid Build Coastguard Worker that the Document is released under this License.
11572*28e138c6SAndroid Build Coastguard Worker\end_layout
11573*28e138c6SAndroid Build Coastguard Worker
11574*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11575*28e138c6SAndroid Build Coastguard WorkerThe "Cover Texts" are certain short passages of text that are listed, as
11576*28e138c6SAndroid Build Coastguard Worker Front-Cover Texts or Back-Cover Texts, in the notice that says that the
11577*28e138c6SAndroid Build Coastguard Worker Document is released under this License.
11578*28e138c6SAndroid Build Coastguard Worker\end_layout
11579*28e138c6SAndroid Build Coastguard Worker
11580*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11581*28e138c6SAndroid Build Coastguard WorkerA "Transparent" copy of the Document means a machine-readable copy, represented
11582*28e138c6SAndroid Build Coastguard Worker in a format whose specification is available to the general public, whose
11583*28e138c6SAndroid Build Coastguard Worker contents can be viewed and edited directly and straightforwardly with generic
11584*28e138c6SAndroid Build Coastguard Worker text editors or (for images composed of pixels) generic paint programs
11585*28e138c6SAndroid Build Coastguard Worker or (for drawings) some widely available drawing editor, and that is suitable
11586*28e138c6SAndroid Build Coastguard Worker for input to text formatters or for automatic translation to a variety
11587*28e138c6SAndroid Build Coastguard Worker of formats suitable for input to text formatters.
11588*28e138c6SAndroid Build Coastguard Worker A copy made in an otherwise Transparent file format whose markup has been
11589*28e138c6SAndroid Build Coastguard Worker designed to thwart or discourage subsequent modification by readers is
11590*28e138c6SAndroid Build Coastguard Worker not Transparent.
11591*28e138c6SAndroid Build Coastguard Worker A copy that is not "Transparent" is called "Opaque".
11592*28e138c6SAndroid Build Coastguard Worker\end_layout
11593*28e138c6SAndroid Build Coastguard Worker
11594*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11595*28e138c6SAndroid Build Coastguard WorkerExamples of suitable formats for Transparent copies include plain ASCII
11596*28e138c6SAndroid Build Coastguard Worker without markup, Texinfo input format, LaTeX input format, SGML or XML using
11597*28e138c6SAndroid Build Coastguard Worker a publicly available DTD, and standard-conforming simple HTML designed
11598*28e138c6SAndroid Build Coastguard Worker for human modification.
11599*28e138c6SAndroid Build Coastguard Worker Opaque formats include PostScript, PDF, proprietary formats that can be
11600*28e138c6SAndroid Build Coastguard Worker read and edited only by proprietary word processors, SGML or XML for which
11601*28e138c6SAndroid Build Coastguard Worker the DTD and/or processing tools are not generally available, and the machine-ge
11602*28e138c6SAndroid Build Coastguard Workernerated HTML produced by some word processors for output purposes only.
11603*28e138c6SAndroid Build Coastguard Worker\end_layout
11604*28e138c6SAndroid Build Coastguard Worker
11605*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11606*28e138c6SAndroid Build Coastguard WorkerThe "Title Page" means, for a printed book, the title page itself, plus
11607*28e138c6SAndroid Build Coastguard Worker such following pages as are needed to hold, legibly, the material this
11608*28e138c6SAndroid Build Coastguard Worker License requires to appear in the title page.
11609*28e138c6SAndroid Build Coastguard Worker For works in formats which do not have any title page as such, "Title Page"
11610*28e138c6SAndroid Build Coastguard Worker means the text near the most prominent appearance of the work's title,
11611*28e138c6SAndroid Build Coastguard Worker preceding the beginning of the body of the text.
11612*28e138c6SAndroid Build Coastguard Worker\end_layout
11613*28e138c6SAndroid Build Coastguard Worker
11614*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11615*28e138c6SAndroid Build Coastguard Worker2.
11616*28e138c6SAndroid Build Coastguard Worker VERBATIM COPYING
11617*28e138c6SAndroid Build Coastguard Worker\end_layout
11618*28e138c6SAndroid Build Coastguard Worker
11619*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11620*28e138c6SAndroid Build Coastguard WorkerYou may copy and distribute the Document in any medium, either commercially
11621*28e138c6SAndroid Build Coastguard Worker or noncommercially, provided that this License, the copyright notices,
11622*28e138c6SAndroid Build Coastguard Worker and the license notice saying this License applies to the Document are
11623*28e138c6SAndroid Build Coastguard Worker reproduced in all copies, and that you add no other conditions whatsoever
11624*28e138c6SAndroid Build Coastguard Worker to those of this License.
11625*28e138c6SAndroid Build Coastguard Worker You may not use technical measures to obstruct or control the reading or
11626*28e138c6SAndroid Build Coastguard Worker further copying of the copies you make or distribute.
11627*28e138c6SAndroid Build Coastguard Worker However, you may accept compensation in exchange for copies.
11628*28e138c6SAndroid Build Coastguard Worker If you distribute a large enough number of copies you must also follow
11629*28e138c6SAndroid Build Coastguard Worker the conditions in section 3.
11630*28e138c6SAndroid Build Coastguard Worker\end_layout
11631*28e138c6SAndroid Build Coastguard Worker
11632*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11633*28e138c6SAndroid Build Coastguard WorkerYou may also lend copies, under the same conditions stated above, and you
11634*28e138c6SAndroid Build Coastguard Worker may publicly display copies.
11635*28e138c6SAndroid Build Coastguard Worker\end_layout
11636*28e138c6SAndroid Build Coastguard Worker
11637*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11638*28e138c6SAndroid Build Coastguard Worker3.
11639*28e138c6SAndroid Build Coastguard Worker COPYING IN QUANTITY
11640*28e138c6SAndroid Build Coastguard Worker\end_layout
11641*28e138c6SAndroid Build Coastguard Worker
11642*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11643*28e138c6SAndroid Build Coastguard WorkerIf you publish printed copies of the Document numbering more than 100, and
11644*28e138c6SAndroid Build Coastguard Worker the Document's license notice requires Cover Texts, you must enclose the
11645*28e138c6SAndroid Build Coastguard Worker copies in covers that carry, clearly and legibly, all these Cover Texts:
11646*28e138c6SAndroid Build Coastguard Worker Front-Cover Texts on the front cover, and Back-Cover Texts on the back
11647*28e138c6SAndroid Build Coastguard Worker cover.
11648*28e138c6SAndroid Build Coastguard Worker Both covers must also clearly and legibly identify you as the publisher
11649*28e138c6SAndroid Build Coastguard Worker of these copies.
11650*28e138c6SAndroid Build Coastguard Worker The front cover must present the full title with all words of the title
11651*28e138c6SAndroid Build Coastguard Worker equally prominent and visible.
11652*28e138c6SAndroid Build Coastguard Worker You may add other material on the covers in addition.
11653*28e138c6SAndroid Build Coastguard Worker Copying with changes limited to the covers, as long as they preserve the
11654*28e138c6SAndroid Build Coastguard Worker title of the Document and satisfy these conditions, can be treated as verbatim
11655*28e138c6SAndroid Build Coastguard Worker copying in other respects.
11656*28e138c6SAndroid Build Coastguard Worker\end_layout
11657*28e138c6SAndroid Build Coastguard Worker
11658*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11659*28e138c6SAndroid Build Coastguard WorkerIf the required texts for either cover are too voluminous to fit legibly,
11660*28e138c6SAndroid Build Coastguard Worker you should put the first ones listed (as many as fit reasonably) on the
11661*28e138c6SAndroid Build Coastguard Worker actual cover, and continue the rest onto adjacent pages.
11662*28e138c6SAndroid Build Coastguard Worker\end_layout
11663*28e138c6SAndroid Build Coastguard Worker
11664*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11665*28e138c6SAndroid Build Coastguard WorkerIf you publish or distribute Opaque copies of the Document numbering more
11666*28e138c6SAndroid Build Coastguard Worker than 100, you must either include a machine-readable Transparent copy along
11667*28e138c6SAndroid Build Coastguard Worker with each Opaque copy, or state in or with each Opaque copy a publicly-accessib
11668*28e138c6SAndroid Build Coastguard Workerle computer-network location containing a complete Transparent copy of the
11669*28e138c6SAndroid Build Coastguard Worker Document, free of added material, which the general network-using public
11670*28e138c6SAndroid Build Coastguard Worker has access to download anonymously at no charge using public-standard network
11671*28e138c6SAndroid Build Coastguard Worker protocols.
11672*28e138c6SAndroid Build Coastguard Worker If you use the latter option, you must take reasonably prudent steps, when
11673*28e138c6SAndroid Build Coastguard Worker you begin distribution of Opaque copies in quantity, to ensure that this
11674*28e138c6SAndroid Build Coastguard Worker Transparent copy will remain thus accessible at the stated location until
11675*28e138c6SAndroid Build Coastguard Worker at least one year after the last time you distribute an Opaque copy (directly
11676*28e138c6SAndroid Build Coastguard Worker or through your agents or retailers) of that edition to the public.
11677*28e138c6SAndroid Build Coastguard Worker\end_layout
11678*28e138c6SAndroid Build Coastguard Worker
11679*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11680*28e138c6SAndroid Build Coastguard WorkerIt is requested, but not required, that you contact the authors of the Document
11681*28e138c6SAndroid Build Coastguard Worker well before redistributing any large number of copies, to give them a chance
11682*28e138c6SAndroid Build Coastguard Worker to provide you with an updated version of the Document.
11683*28e138c6SAndroid Build Coastguard Worker
11684*28e138c6SAndroid Build Coastguard Worker\end_layout
11685*28e138c6SAndroid Build Coastguard Worker
11686*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11687*28e138c6SAndroid Build Coastguard Worker4.
11688*28e138c6SAndroid Build Coastguard Worker MODIFICATIONS
11689*28e138c6SAndroid Build Coastguard Worker\end_layout
11690*28e138c6SAndroid Build Coastguard Worker
11691*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11692*28e138c6SAndroid Build Coastguard WorkerYou may copy and distribute a Modified Version of the Document under the
11693*28e138c6SAndroid Build Coastguard Worker conditions of sections 2 and 3 above, provided that you release the Modified
11694*28e138c6SAndroid Build Coastguard Worker Version under precisely this License, with the Modified Version filling
11695*28e138c6SAndroid Build Coastguard Worker the role of the Document, thus licensing distribution and modification
11696*28e138c6SAndroid Build Coastguard Worker of the Modified Version to whoever possesses a copy of it.
11697*28e138c6SAndroid Build Coastguard Worker In addition, you must do these things in the Modified Version:
11698*28e138c6SAndroid Build Coastguard Worker\end_layout
11699*28e138c6SAndroid Build Coastguard Worker
11700*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11701*28e138c6SAndroid Build Coastguard WorkerA.
11702*28e138c6SAndroid Build Coastguard Worker Use in the Title Page (and on the covers, if any) a title distinct from
11703*28e138c6SAndroid Build Coastguard Worker that of the Document, and from those of previous versions (which should,
11704*28e138c6SAndroid Build Coastguard Worker if there were any, be listed in the History section of the Document).
11705*28e138c6SAndroid Build Coastguard Worker You may use the same title as a previous version if the original publisher
11706*28e138c6SAndroid Build Coastguard Worker of that version gives permission.
11707*28e138c6SAndroid Build Coastguard Worker\end_layout
11708*28e138c6SAndroid Build Coastguard Worker
11709*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11710*28e138c6SAndroid Build Coastguard WorkerB.
11711*28e138c6SAndroid Build Coastguard Worker List on the Title Page, as authors, one or more persons or entities responsible
11712*28e138c6SAndroid Build Coastguard Worker for authorship of the modifications in the Modified Version, together with
11713*28e138c6SAndroid Build Coastguard Worker at least five of the principal authors of the Document (all of its principal
11714*28e138c6SAndroid Build Coastguard Worker authors, if it has less than five).
11715*28e138c6SAndroid Build Coastguard Worker\end_layout
11716*28e138c6SAndroid Build Coastguard Worker
11717*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11718*28e138c6SAndroid Build Coastguard WorkerC.
11719*28e138c6SAndroid Build Coastguard Worker State on the Title page the name of the publisher of the Modified Version,
11720*28e138c6SAndroid Build Coastguard Worker as the publisher.
11721*28e138c6SAndroid Build Coastguard Worker\end_layout
11722*28e138c6SAndroid Build Coastguard Worker
11723*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11724*28e138c6SAndroid Build Coastguard WorkerD.
11725*28e138c6SAndroid Build Coastguard Worker Preserve all the copyright notices of the Document.
11726*28e138c6SAndroid Build Coastguard Worker\end_layout
11727*28e138c6SAndroid Build Coastguard Worker
11728*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11729*28e138c6SAndroid Build Coastguard WorkerE.
11730*28e138c6SAndroid Build Coastguard Worker Add an appropriate copyright notice for your modifications adjacent to
11731*28e138c6SAndroid Build Coastguard Worker the other copyright notices.
11732*28e138c6SAndroid Build Coastguard Worker\end_layout
11733*28e138c6SAndroid Build Coastguard Worker
11734*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11735*28e138c6SAndroid Build Coastguard WorkerF.
11736*28e138c6SAndroid Build Coastguard Worker Include, immediately after the copyright notices, a license notice giving
11737*28e138c6SAndroid Build Coastguard Worker the public permission to use the Modified Version under the terms of this
11738*28e138c6SAndroid Build Coastguard Worker License, in the form shown in the Addendum below.
11739*28e138c6SAndroid Build Coastguard Worker\end_layout
11740*28e138c6SAndroid Build Coastguard Worker
11741*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11742*28e138c6SAndroid Build Coastguard WorkerG.
11743*28e138c6SAndroid Build Coastguard Worker Preserve in that license notice the full lists of Invariant Sections and
11744*28e138c6SAndroid Build Coastguard Worker required Cover Texts given in the Document's license notice.
11745*28e138c6SAndroid Build Coastguard Worker\end_layout
11746*28e138c6SAndroid Build Coastguard Worker
11747*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11748*28e138c6SAndroid Build Coastguard WorkerH.
11749*28e138c6SAndroid Build Coastguard Worker Include an unaltered copy of this License.
11750*28e138c6SAndroid Build Coastguard Worker\end_layout
11751*28e138c6SAndroid Build Coastguard Worker
11752*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11753*28e138c6SAndroid Build Coastguard WorkerI.
11754*28e138c6SAndroid Build Coastguard Worker Preserve the section entitled "History", and its title, and add to it an
11755*28e138c6SAndroid Build Coastguard Worker item stating at least the title, year, new authors, and publisher of the
11756*28e138c6SAndroid Build Coastguard Worker Modified Version as given on the Title Page.
11757*28e138c6SAndroid Build Coastguard Worker If there is no section entitled "History" in the Document, create one stating
11758*28e138c6SAndroid Build Coastguard Worker the title, year, authors, and publisher of the Document as given on its
11759*28e138c6SAndroid Build Coastguard Worker Title Page, then add an item describing the Modified Version as stated
11760*28e138c6SAndroid Build Coastguard Worker in the previous sentence.
11761*28e138c6SAndroid Build Coastguard Worker\end_layout
11762*28e138c6SAndroid Build Coastguard Worker
11763*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11764*28e138c6SAndroid Build Coastguard WorkerJ.
11765*28e138c6SAndroid Build Coastguard Worker Preserve the network location, if any, given in the Document for public
11766*28e138c6SAndroid Build Coastguard Worker access to a Transparent copy of the Document, and likewise the network
11767*28e138c6SAndroid Build Coastguard Worker locations given in the Document for previous versions it was based on.
11768*28e138c6SAndroid Build Coastguard Worker These may be placed in the "History" section.
11769*28e138c6SAndroid Build Coastguard Worker You may omit a network location for a work that was published at least
11770*28e138c6SAndroid Build Coastguard Worker four years before the Document itself, or if the original publisher of
11771*28e138c6SAndroid Build Coastguard Worker the version it refers to gives permission.
11772*28e138c6SAndroid Build Coastguard Worker\end_layout
11773*28e138c6SAndroid Build Coastguard Worker
11774*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11775*28e138c6SAndroid Build Coastguard WorkerK.
11776*28e138c6SAndroid Build Coastguard Worker In any section entitled "Acknowledgements" or "Dedications", preserve the
11777*28e138c6SAndroid Build Coastguard Worker section's title, and preserve in the section all the substance and tone
11778*28e138c6SAndroid Build Coastguard Worker of each of the contributor acknowledgements and/or dedications given therein.
11779*28e138c6SAndroid Build Coastguard Worker\end_layout
11780*28e138c6SAndroid Build Coastguard Worker
11781*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11782*28e138c6SAndroid Build Coastguard WorkerL.
11783*28e138c6SAndroid Build Coastguard Worker Preserve all the Invariant Sections of the Document, unaltered in their
11784*28e138c6SAndroid Build Coastguard Worker text and in their titles.
11785*28e138c6SAndroid Build Coastguard Worker Section numbers or the equivalent are not considered part of the section
11786*28e138c6SAndroid Build Coastguard Worker titles.
11787*28e138c6SAndroid Build Coastguard Worker\end_layout
11788*28e138c6SAndroid Build Coastguard Worker
11789*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11790*28e138c6SAndroid Build Coastguard WorkerM.
11791*28e138c6SAndroid Build Coastguard Worker Delete any section entitled "Endorsements".
11792*28e138c6SAndroid Build Coastguard Worker Such a section may not be included in the Modified Version.
11793*28e138c6SAndroid Build Coastguard Worker\end_layout
11794*28e138c6SAndroid Build Coastguard Worker
11795*28e138c6SAndroid Build Coastguard Worker\begin_layout Itemize
11796*28e138c6SAndroid Build Coastguard WorkerN.
11797*28e138c6SAndroid Build Coastguard Worker Do not retitle any existing section as "Endorsements" or to conflict in
11798*28e138c6SAndroid Build Coastguard Worker title with any Invariant Section.
11799*28e138c6SAndroid Build Coastguard Worker
11800*28e138c6SAndroid Build Coastguard Worker\end_layout
11801*28e138c6SAndroid Build Coastguard Worker
11802*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11803*28e138c6SAndroid Build Coastguard WorkerIf the Modified Version includes new front-matter sections or appendices
11804*28e138c6SAndroid Build Coastguard Worker that qualify as Secondary Sections and contain no material copied from
11805*28e138c6SAndroid Build Coastguard Worker the Document, you may at your option designate some or all of these sections
11806*28e138c6SAndroid Build Coastguard Worker as invariant.
11807*28e138c6SAndroid Build Coastguard Worker To do this, add their titles to the list of Invariant Sections in the Modified
11808*28e138c6SAndroid Build Coastguard Worker Version's license notice.
11809*28e138c6SAndroid Build Coastguard Worker These titles must be distinct from any other section titles.
11810*28e138c6SAndroid Build Coastguard Worker\end_layout
11811*28e138c6SAndroid Build Coastguard Worker
11812*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11813*28e138c6SAndroid Build Coastguard WorkerYou may add a section entitled "Endorsements", provided it contains nothing
11814*28e138c6SAndroid Build Coastguard Worker but endorsements of your Modified Version by various parties--for example,
11815*28e138c6SAndroid Build Coastguard Worker statements of peer review or that the text has been approved by an organization
11816*28e138c6SAndroid Build Coastguard Worker as the authoritative definition of a standard.
11817*28e138c6SAndroid Build Coastguard Worker\end_layout
11818*28e138c6SAndroid Build Coastguard Worker
11819*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11820*28e138c6SAndroid Build Coastguard WorkerYou may add a passage of up to five words as a Front-Cover Text, and a passage
11821*28e138c6SAndroid Build Coastguard Worker of up to 25 words as a Back-Cover Text, to the end of the list of Cover
11822*28e138c6SAndroid Build Coastguard Worker Texts in the Modified Version.
11823*28e138c6SAndroid Build Coastguard Worker Only one passage of Front-Cover Text and one of Back-Cover Text may be
11824*28e138c6SAndroid Build Coastguard Worker added by (or through arrangements made by) any one entity.
11825*28e138c6SAndroid Build Coastguard Worker If the Document already includes a cover text for the same cover, previously
11826*28e138c6SAndroid Build Coastguard Worker added by you or by arrangement made by the same entity you are acting on
11827*28e138c6SAndroid Build Coastguard Worker behalf of, you may not add another; but you may replace the old one, on
11828*28e138c6SAndroid Build Coastguard Worker explicit permission from the previous publisher that added the old one.
11829*28e138c6SAndroid Build Coastguard Worker\end_layout
11830*28e138c6SAndroid Build Coastguard Worker
11831*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11832*28e138c6SAndroid Build Coastguard WorkerThe author(s) and publisher(s) of the Document do not by this License give
11833*28e138c6SAndroid Build Coastguard Worker permission to use their names for publicity for or to assert or imply endorseme
11834*28e138c6SAndroid Build Coastguard Workernt of any Modified Version.
11835*28e138c6SAndroid Build Coastguard Worker
11836*28e138c6SAndroid Build Coastguard Worker\end_layout
11837*28e138c6SAndroid Build Coastguard Worker
11838*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11839*28e138c6SAndroid Build Coastguard Worker5.
11840*28e138c6SAndroid Build Coastguard Worker COMBINING DOCUMENTS
11841*28e138c6SAndroid Build Coastguard Worker\end_layout
11842*28e138c6SAndroid Build Coastguard Worker
11843*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11844*28e138c6SAndroid Build Coastguard WorkerYou may combine the Document with other documents released under this License,
11845*28e138c6SAndroid Build Coastguard Worker under the terms defined in section 4 above for modified versions, provided
11846*28e138c6SAndroid Build Coastguard Worker that you include in the combination all of the Invariant Sections of all
11847*28e138c6SAndroid Build Coastguard Worker of the original documents, unmodified, and list them all as Invariant Sections
11848*28e138c6SAndroid Build Coastguard Worker of your combined work in its license notice.
11849*28e138c6SAndroid Build Coastguard Worker\end_layout
11850*28e138c6SAndroid Build Coastguard Worker
11851*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11852*28e138c6SAndroid Build Coastguard WorkerThe combined work need only contain one copy of this License, and multiple
11853*28e138c6SAndroid Build Coastguard Worker identical Invariant Sections may be replaced with a single copy.
11854*28e138c6SAndroid Build Coastguard Worker If there are multiple Invariant Sections with the same name but different
11855*28e138c6SAndroid Build Coastguard Worker contents, make the title of each such section unique by adding at the end
11856*28e138c6SAndroid Build Coastguard Worker of it, in parentheses, the name of the original author or publisher of
11857*28e138c6SAndroid Build Coastguard Worker that section if known, or else a unique number.
11858*28e138c6SAndroid Build Coastguard Worker Make the same adjustment to the section titles in the list of Invariant
11859*28e138c6SAndroid Build Coastguard Worker Sections in the license notice of the combined work.
11860*28e138c6SAndroid Build Coastguard Worker\end_layout
11861*28e138c6SAndroid Build Coastguard Worker
11862*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11863*28e138c6SAndroid Build Coastguard WorkerIn the combination, you must combine any sections entitled "History" in
11864*28e138c6SAndroid Build Coastguard Worker the various original documents, forming one section entitled "History";
11865*28e138c6SAndroid Build Coastguard Worker likewise combine any sections entitled "Acknowledgements", and any sections
11866*28e138c6SAndroid Build Coastguard Worker entitled "Dedications".
11867*28e138c6SAndroid Build Coastguard Worker You must delete all sections entitled "Endorsements."
11868*28e138c6SAndroid Build Coastguard Worker\end_layout
11869*28e138c6SAndroid Build Coastguard Worker
11870*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11871*28e138c6SAndroid Build Coastguard Worker6.
11872*28e138c6SAndroid Build Coastguard Worker COLLECTIONS OF DOCUMENTS
11873*28e138c6SAndroid Build Coastguard Worker\end_layout
11874*28e138c6SAndroid Build Coastguard Worker
11875*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11876*28e138c6SAndroid Build Coastguard WorkerYou may make a collection consisting of the Document and other documents
11877*28e138c6SAndroid Build Coastguard Worker released under this License, and replace the individual copies of this
11878*28e138c6SAndroid Build Coastguard Worker License in the various documents with a single copy that is included in
11879*28e138c6SAndroid Build Coastguard Worker the collection, provided that you follow the rules of this License for
11880*28e138c6SAndroid Build Coastguard Worker verbatim copying of each of the documents in all other respects.
11881*28e138c6SAndroid Build Coastguard Worker\end_layout
11882*28e138c6SAndroid Build Coastguard Worker
11883*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11884*28e138c6SAndroid Build Coastguard WorkerYou may extract a single document from such a collection, and distribute
11885*28e138c6SAndroid Build Coastguard Worker it individually under this License, provided you insert a copy of this
11886*28e138c6SAndroid Build Coastguard Worker License into the extracted document, and follow this License in all other
11887*28e138c6SAndroid Build Coastguard Worker respects regarding verbatim copying of that document.
11888*28e138c6SAndroid Build Coastguard Worker
11889*28e138c6SAndroid Build Coastguard Worker\end_layout
11890*28e138c6SAndroid Build Coastguard Worker
11891*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11892*28e138c6SAndroid Build Coastguard Worker7.
11893*28e138c6SAndroid Build Coastguard Worker AGGREGATION WITH INDEPENDENT WORKS
11894*28e138c6SAndroid Build Coastguard Worker\end_layout
11895*28e138c6SAndroid Build Coastguard Worker
11896*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11897*28e138c6SAndroid Build Coastguard WorkerA compilation of the Document or its derivatives with other separate and
11898*28e138c6SAndroid Build Coastguard Worker independent documents or works, in or on a volume of a storage or distribution
11899*28e138c6SAndroid Build Coastguard Worker medium, does not as a whole count as a Modified Version of the Document,
11900*28e138c6SAndroid Build Coastguard Worker provided no compilation copyright is claimed for the compilation.
11901*28e138c6SAndroid Build Coastguard Worker Such a compilation is called an "aggregate", and this License does not
11902*28e138c6SAndroid Build Coastguard Worker apply to the other self-contained works thus compiled with the Document,
11903*28e138c6SAndroid Build Coastguard Worker on account of their being thus compiled, if they are not themselves derivative
11904*28e138c6SAndroid Build Coastguard Worker works of the Document.
11905*28e138c6SAndroid Build Coastguard Worker\end_layout
11906*28e138c6SAndroid Build Coastguard Worker
11907*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11908*28e138c6SAndroid Build Coastguard WorkerIf the Cover Text requirement of section 3 is applicable to these copies
11909*28e138c6SAndroid Build Coastguard Worker of the Document, then if the Document is less than one quarter of the entire
11910*28e138c6SAndroid Build Coastguard Worker aggregate, the Document's Cover Texts may be placed on covers that surround
11911*28e138c6SAndroid Build Coastguard Worker only the Document within the aggregate.
11912*28e138c6SAndroid Build Coastguard Worker Otherwise they must appear on covers around the whole aggregate.
11913*28e138c6SAndroid Build Coastguard Worker\end_layout
11914*28e138c6SAndroid Build Coastguard Worker
11915*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11916*28e138c6SAndroid Build Coastguard Worker8.
11917*28e138c6SAndroid Build Coastguard Worker TRANSLATION
11918*28e138c6SAndroid Build Coastguard Worker\end_layout
11919*28e138c6SAndroid Build Coastguard Worker
11920*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11921*28e138c6SAndroid Build Coastguard WorkerTranslation is considered a kind of modification, so you may distribute
11922*28e138c6SAndroid Build Coastguard Worker translations of the Document under the terms of section 4.
11923*28e138c6SAndroid Build Coastguard Worker Replacing Invariant Sections with translations requires special permission
11924*28e138c6SAndroid Build Coastguard Worker from their copyright holders, but you may include translations of some
11925*28e138c6SAndroid Build Coastguard Worker or all Invariant Sections in addition to the original versions of these
11926*28e138c6SAndroid Build Coastguard Worker Invariant Sections.
11927*28e138c6SAndroid Build Coastguard Worker You may include a translation of this License provided that you also include
11928*28e138c6SAndroid Build Coastguard Worker the original English version of this License.
11929*28e138c6SAndroid Build Coastguard Worker In case of a disagreement between the translation and the original English
11930*28e138c6SAndroid Build Coastguard Worker version of this License, the original English version will prevail.
11931*28e138c6SAndroid Build Coastguard Worker\end_layout
11932*28e138c6SAndroid Build Coastguard Worker
11933*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11934*28e138c6SAndroid Build Coastguard Worker9.
11935*28e138c6SAndroid Build Coastguard Worker TERMINATION
11936*28e138c6SAndroid Build Coastguard Worker\end_layout
11937*28e138c6SAndroid Build Coastguard Worker
11938*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11939*28e138c6SAndroid Build Coastguard WorkerYou may not copy, modify, sublicense, or distribute the Document except
11940*28e138c6SAndroid Build Coastguard Worker as expressly provided for under this License.
11941*28e138c6SAndroid Build Coastguard Worker Any other attempt to copy, modify, sublicense or distribute the Document
11942*28e138c6SAndroid Build Coastguard Worker is void, and will automatically terminate your rights under this License.
11943*28e138c6SAndroid Build Coastguard Worker However, parties who have received copies, or rights, from you under this
11944*28e138c6SAndroid Build Coastguard Worker License will not have their licenses terminated so long as such parties
11945*28e138c6SAndroid Build Coastguard Worker remain in full compliance.
11946*28e138c6SAndroid Build Coastguard Worker
11947*28e138c6SAndroid Build Coastguard Worker\end_layout
11948*28e138c6SAndroid Build Coastguard Worker
11949*28e138c6SAndroid Build Coastguard Worker\begin_layout Section*
11950*28e138c6SAndroid Build Coastguard Worker10.
11951*28e138c6SAndroid Build Coastguard Worker FUTURE REVISIONS OF THIS LICENSE
11952*28e138c6SAndroid Build Coastguard Worker\end_layout
11953*28e138c6SAndroid Build Coastguard Worker
11954*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11955*28e138c6SAndroid Build Coastguard WorkerThe Free Software Foundation may publish new, revised versions of the GNU
11956*28e138c6SAndroid Build Coastguard Worker Free Documentation License from time to time.
11957*28e138c6SAndroid Build Coastguard Worker Such new versions will be similar in spirit to the present version, but
11958*28e138c6SAndroid Build Coastguard Worker may differ in detail to address new problems or concerns.
11959*28e138c6SAndroid Build Coastguard Worker See http://www.gnu.org/copyleft/.
11960*28e138c6SAndroid Build Coastguard Worker\end_layout
11961*28e138c6SAndroid Build Coastguard Worker
11962*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11963*28e138c6SAndroid Build Coastguard WorkerEach version of the License is given a distinguishing version number.
11964*28e138c6SAndroid Build Coastguard Worker If the Document specifies that a particular numbered version of this License
11965*28e138c6SAndroid Build Coastguard Worker "or any later version" applies to it, you have the option of following
11966*28e138c6SAndroid Build Coastguard Worker the terms and conditions either of that specified version or of any later
11967*28e138c6SAndroid Build Coastguard Worker version that has been published (not as a draft) by the Free Software Foundatio
11968*28e138c6SAndroid Build Coastguard Workern.
11969*28e138c6SAndroid Build Coastguard Worker If the Document does not specify a version number of this License, you
11970*28e138c6SAndroid Build Coastguard Worker may choose any version ever published (not as a draft) by the Free Software
11971*28e138c6SAndroid Build Coastguard Worker Foundation.
11972*28e138c6SAndroid Build Coastguard Worker\end_layout
11973*28e138c6SAndroid Build Coastguard Worker
11974*28e138c6SAndroid Build Coastguard Worker\begin_layout Standard
11975*28e138c6SAndroid Build Coastguard Worker\begin_inset CommandInset index_print
11976*28e138c6SAndroid Build Coastguard WorkerLatexCommand printindex
11977*28e138c6SAndroid Build Coastguard Worker
11978*28e138c6SAndroid Build Coastguard Worker\end_inset
11979*28e138c6SAndroid Build Coastguard Worker
11980*28e138c6SAndroid Build Coastguard Worker
11981*28e138c6SAndroid Build Coastguard Worker\end_layout
11982*28e138c6SAndroid Build Coastguard Worker
11983*28e138c6SAndroid Build Coastguard Worker\end_body
11984*28e138c6SAndroid Build Coastguard Worker\end_document
11985