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