12086 lines
		
	
	
		
			233 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			12086 lines
		
	
	
		
			233 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
							 | 
						||
| 
								 | 
							
								\lyxformat 345
							 | 
						||
| 
								 | 
							
								\begin_document
							 | 
						||
| 
								 | 
							
								\begin_header
							 | 
						||
| 
								 | 
							
								\textclass scrbook
							 | 
						||
| 
								 | 
							
								\use_default_options true
							 | 
						||
| 
								 | 
							
								\language english
							 | 
						||
| 
								 | 
							
								\inputencoding auto
							 | 
						||
| 
								 | 
							
								\font_roman default
							 | 
						||
| 
								 | 
							
								\font_sans default
							 | 
						||
| 
								 | 
							
								\font_typewriter default
							 | 
						||
| 
								 | 
							
								\font_default_family default
							 | 
						||
| 
								 | 
							
								\font_sc false
							 | 
						||
| 
								 | 
							
								\font_osf false
							 | 
						||
| 
								 | 
							
								\font_sf_scale 100
							 | 
						||
| 
								 | 
							
								\font_tt_scale 100
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\graphics default
							 | 
						||
| 
								 | 
							
								\paperfontsize 10
							 | 
						||
| 
								 | 
							
								\spacing single
							 | 
						||
| 
								 | 
							
								\use_hyperref false
							 | 
						||
| 
								 | 
							
								\papersize letterpaper
							 | 
						||
| 
								 | 
							
								\use_geometry true
							 | 
						||
| 
								 | 
							
								\use_amsmath 2
							 | 
						||
| 
								 | 
							
								\use_esint 2
							 | 
						||
| 
								 | 
							
								\cite_engine basic
							 | 
						||
| 
								 | 
							
								\use_bibtopic false
							 | 
						||
| 
								 | 
							
								\paperorientation portrait
							 | 
						||
| 
								 | 
							
								\leftmargin 2cm
							 | 
						||
| 
								 | 
							
								\topmargin 2cm
							 | 
						||
| 
								 | 
							
								\rightmargin 2cm
							 | 
						||
| 
								 | 
							
								\bottommargin 2cm
							 | 
						||
| 
								 | 
							
								\secnumdepth 3
							 | 
						||
| 
								 | 
							
								\tocdepth 3
							 | 
						||
| 
								 | 
							
								\paragraph_separation indent
							 | 
						||
| 
								 | 
							
								\defskip medskip
							 | 
						||
| 
								 | 
							
								\quotes_language english
							 | 
						||
| 
								 | 
							
								\papercolumns 1
							 | 
						||
| 
								 | 
							
								\papersides 1
							 | 
						||
| 
								 | 
							
								\paperpagestyle headings
							 | 
						||
| 
								 | 
							
								\tracking_changes false
							 | 
						||
| 
								 | 
							
								\output_changes false
							 | 
						||
| 
								 | 
							
								\author "" 
							 | 
						||
| 
								 | 
							
								\author "" 
							 | 
						||
| 
								 | 
							
								\end_header
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_body
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Title
							 | 
						||
| 
								 | 
							
								The Speex Manual
							 | 
						||
| 
								 | 
							
								\begin_inset Newline newline
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Version 1.2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Author
							 | 
						||
| 
								 | 
							
								Jean-Marc Valin
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Copyright 
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								copyright
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 2002-2008 Jean-Marc Valin/Xiph.org Foundation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Permission is granted to copy, distribute and/or modify this document under
							 | 
						||
| 
								 | 
							
								 the terms of the GNU Free Documentation License, Version 1.1 or any later
							 | 
						||
| 
								 | 
							
								 version published by the Free Software Foundation; with no Invariant Section,
							 | 
						||
| 
								 | 
							
								 with no Front-Cover Texts, and with no Back-Cover.
							 | 
						||
| 
								 | 
							
								 A copy of the license is included in the section entitled "GNU Free Documentati
							 | 
						||
| 
								 | 
							
								on License".
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset toc
							 | 
						||
| 
								 | 
							
								LatexCommand tableofcontents
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset FloatList table
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Introduction to Speex
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The Speex codec (
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								http://www.speex.org/
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								) exists because there is a need for a speech codec that is open-source
							 | 
						||
| 
								 | 
							
								 and free from software patent royalties.
							 | 
						||
| 
								 | 
							
								 These are essential conditions for being usable in any open-source software.
							 | 
						||
| 
								 | 
							
								 In essence, Speex is to speech what Vorbis is to audio/music.
							 | 
						||
| 
								 | 
							
								 Unlike many other speech codecs, Speex is not designed for mobile phones
							 | 
						||
| 
								 | 
							
								 but rather for packet networks and voice over IP (VoIP) applications.
							 | 
						||
| 
								 | 
							
								 File-based compression is of course also supported.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The Speex codec is designed to be very flexible and support a wide range
							 | 
						||
| 
								 | 
							
								 of speech quality and bit-rate.
							 | 
						||
| 
								 | 
							
								 Support for very good quality speech also means that Speex can encode wideband
							 | 
						||
| 
								 | 
							
								 speech (16 kHz sampling rate) in addition to narrowband speech (telephone
							 | 
						||
| 
								 | 
							
								 quality, 8 kHz sampling rate).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Designing for VoIP instead of mobile phones means that Speex is robust to
							 | 
						||
| 
								 | 
							
								 lost packets, but not to corrupted ones.
							 | 
						||
| 
								 | 
							
								 This is based on the assumption that in VoIP, packets either arrive unaltered
							 | 
						||
| 
								 | 
							
								 or don't arrive at all.
							 | 
						||
| 
								 | 
							
								 Because Speex is targeted at a wide range of devices, it has modest (adjustable
							 | 
						||
| 
								 | 
							
								) complexity and a small memory footprint.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								All the design goals led to the choice of CELP
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								CELP
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 as the encoding technique.
							 | 
						||
| 
								 | 
							
								 One of the main reasons is that CELP has long proved that it could work
							 | 
						||
| 
								 | 
							
								 reliably and scale well to both low bit-rates (e.g.
							 | 
						||
| 
								 | 
							
								 DoD CELP @ 4.8 kbps) and high bit-rates (e.g.
							 | 
						||
| 
								 | 
							
								 G.728 @ 16 kbps).
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Getting help
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Getting-help"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As for many open source projects, there are many ways to get help with Speex.
							 | 
						||
| 
								 | 
							
								 These include:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								This manual
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Other documentation on the Speex website (http://www.speex.org/)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Mailing list: Discuss any Speex-related topic on speex-dev@xiph.org (not
							 | 
						||
| 
								 | 
							
								 just for developers)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								IRC: The main channel is #speex on irc.freenode.net.
							 | 
						||
| 
								 | 
							
								 Note that due to time differences, it may take a while to get someone,
							 | 
						||
| 
								 | 
							
								 so please be patient.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Email the author privately at jean-marc.valin@usherbrooke.ca 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								only
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 for private/delicate topics you do not wish to discuss publicly.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Before asking for help (mailing list or IRC), 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								it is important to first read this manual
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 (OK, so if you made it here it's already a good sign).
							 | 
						||
| 
								 | 
							
								 It is generally considered rude to ask on a mailing list about topics that
							 | 
						||
| 
								 | 
							
								 are clearly detailed in the documentation.
							 | 
						||
| 
								 | 
							
								 On the other hand, it's perfectly OK (and encouraged) to ask for clarifications
							 | 
						||
| 
								 | 
							
								 about something covered in the manual.
							 | 
						||
| 
								 | 
							
								 This manual does not (yet) cover everything about Speex, so everyone is
							 | 
						||
| 
								 | 
							
								 encouraged to ask questions, send comments, feature requests, or just let
							 | 
						||
| 
								 | 
							
								 us know how Speex is being used.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Here are some additional guidelines related to the mailing list.
							 | 
						||
| 
								 | 
							
								 Before reporting bugs in Speex to the list, it is strongly recommended
							 | 
						||
| 
								 | 
							
								 (if possible) to first test whether these bugs can be reproduced using
							 | 
						||
| 
								 | 
							
								 the speexenc and speexdec (see Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Command-line-encoder/decoder"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								) command-line utilities.
							 | 
						||
| 
								 | 
							
								 Bugs reported based on 3rd party code are both harder to find and far too
							 | 
						||
| 
								 | 
							
								 often caused by errors that have nothing to do with Speex.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								About this document
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This document is divided in the following way.
							 | 
						||
| 
								 | 
							
								 Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Feature-description"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 describes the different Speex features and defines many basic terms that
							 | 
						||
| 
								 | 
							
								 are used throughout this manual.
							 | 
						||
| 
								 | 
							
								 Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Command-line-encoder/decoder"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 documents the standard command-line tools provided in the Speex distribution.
							 | 
						||
| 
								 | 
							
								 Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Programming-with-Speex"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 includes detailed instructions about programming using the libspeex
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								libspeex
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 API.
							 | 
						||
| 
								 | 
							
								 Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Formats-and-standards"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 has some information related to Speex and standards.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The three last sections describe the algorithms used in Speex.
							 | 
						||
| 
								 | 
							
								 These sections require signal processing knowledge, but are not required
							 | 
						||
| 
								 | 
							
								 for merely using Speex.
							 | 
						||
| 
								 | 
							
								 They are intended for people who want to understand how Speex really works
							 | 
						||
| 
								 | 
							
								 and/or want to do research based on Speex.
							 | 
						||
| 
								 | 
							
								 Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Introduction-to-CELP"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 explains the general idea behind CELP, while sections 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Speex-narrowband-mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Speex-wideband-mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 are specific to Speex.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Codec description
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Feature-description"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This section describes Speex and its features into more details.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Concepts
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Before introducing all the Speex features, here are some concepts in speech
							 | 
						||
| 
								 | 
							
								 coding that help better understand the rest of the manual.
							 | 
						||
| 
								 | 
							
								 Although some are general concepts in speech/audio processing, others are
							 | 
						||
| 
								 | 
							
								 specific to Speex.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Sampling rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sampling rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The sampling rate expressed in Hertz (Hz) is the number of samples taken
							 | 
						||
| 
								 | 
							
								 from a signal per second.
							 | 
						||
| 
								 | 
							
								 For a sampling rate of 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $F_{s}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 kHz, the highest frequency that can be represented is equal to 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $F_{s}/2$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 kHz (
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $F_{s}/2$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is known as the Nyquist frequency).
							 | 
						||
| 
								 | 
							
								 This is a fundamental property in signal processing and is described by
							 | 
						||
| 
								 | 
							
								 the sampling theorem.
							 | 
						||
| 
								 | 
							
								 Speex is mainly designed for three different sampling rates: 8 kHz, 16
							 | 
						||
| 
								 | 
							
								 kHz, and 32 kHz.
							 | 
						||
| 
								 | 
							
								 These are respectively referred to as narrowband
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								narrowband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, wideband
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								wideband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and ultra-wideband
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								ultra-wideband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								When encoding a speech signal, the bit-rate is defined as the number of
							 | 
						||
| 
								 | 
							
								 bits per unit of time required to encode the speech.
							 | 
						||
| 
								 | 
							
								 It is measured in 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								bits per second
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (bps), or generally 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								kilobits per second
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 It is important to make the distinction between 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								kilo
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								bits
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								per second
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (k
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								b
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								ps) and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								kilo
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								bytes
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								per second
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (k
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								B
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								ps).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Quality
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								quality
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (variable)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex is a lossy codec, which means that it achieves compression at the
							 | 
						||
| 
								 | 
							
								 expense of fidelity of the input speech signal.
							 | 
						||
| 
								 | 
							
								 Unlike some other speech codecs, it is possible to control the trade-off
							 | 
						||
| 
								 | 
							
								 made between quality and bit-rate.
							 | 
						||
| 
								 | 
							
								 The Speex encoding process is controlled most of the time by a quality
							 | 
						||
| 
								 | 
							
								 parameter that ranges from 0 to 10.
							 | 
						||
| 
								 | 
							
								 In constant bit-rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								constant bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (CBR) operation, the quality parameter is an integer, while for variable
							 | 
						||
| 
								 | 
							
								 bit-rate (VBR), the parameter is a float.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Complexity
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								complexity
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (variable)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								With Speex, it is possible to vary the complexity allowed for the encoder.
							 | 
						||
| 
								 | 
							
								 This is done by controlling how the search is performed with an integer
							 | 
						||
| 
								 | 
							
								 ranging from 1 to 10 in a way that's similar to the -1 to -9 options to
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								gzip
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								bzip2
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 compression utilities.
							 | 
						||
| 
								 | 
							
								 For normal use, the noise level at complexity 1 is between 1 and 2 dB higher
							 | 
						||
| 
								 | 
							
								 than at complexity 10, but the CPU requirements for complexity 10 is about
							 | 
						||
| 
								 | 
							
								 5 times higher than for complexity 1.
							 | 
						||
| 
								 | 
							
								 In practice, the best trade-off is between complexity 2 and 4, though higher
							 | 
						||
| 
								 | 
							
								 settings are often useful when encoding non-speech sounds like DTMF
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								DTMF
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 tones.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Variable Bit-Rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								variable bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (VBR)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Variable bit-rate (VBR) allows a codec to change its bit-rate dynamically
							 | 
						||
| 
								 | 
							
								 to adapt to the 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								difficulty
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 of the audio being encoded.
							 | 
						||
| 
								 | 
							
								 In the example of Speex, sounds like vowels and high-energy transients
							 | 
						||
| 
								 | 
							
								 require a higher bit-rate to achieve good quality, while fricatives (e.g.
							 | 
						||
| 
								 | 
							
								 s,f sounds) can be coded adequately with less bits.
							 | 
						||
| 
								 | 
							
								 For this reason, VBR can achieve lower bit-rate for the same quality, or
							 | 
						||
| 
								 | 
							
								 a better quality for a certain bit-rate.
							 | 
						||
| 
								 | 
							
								 Despite its advantages, VBR has two main drawbacks: first, by only specifying
							 | 
						||
| 
								 | 
							
								 quality, there's no guaranty about the final average bit-rate.
							 | 
						||
| 
								 | 
							
								 Second, for some real-time applications like voice over IP (VoIP), what
							 | 
						||
| 
								 | 
							
								 counts is the maximum bit-rate, which must be low enough for the communication
							 | 
						||
| 
								 | 
							
								 channel.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Average Bit-Rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								average bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (ABR)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Average bit-rate solves one of the problems of VBR, as it dynamically adjusts
							 | 
						||
| 
								 | 
							
								 VBR quality in order to meet a specific target bit-rate.
							 | 
						||
| 
								 | 
							
								 Because the quality/bit-rate is adjusted in real-time (open-loop), the
							 | 
						||
| 
								 | 
							
								 global quality will be slightly lower than that obtained by encoding in
							 | 
						||
| 
								 | 
							
								 VBR with exactly the right quality setting to meet the target average bit-rate.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Voice Activity Detection
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								voice activity detection
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (VAD)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								When enabled, voice activity detection detects whether the audio being encoded
							 | 
						||
| 
								 | 
							
								 is speech or silence/background noise.
							 | 
						||
| 
								 | 
							
								 VAD is always implicitly activated when encoding in VBR, so the option
							 | 
						||
| 
								 | 
							
								 is only useful in non-VBR operation.
							 | 
						||
| 
								 | 
							
								 In this case, Speex detects non-speech periods and encode them with just
							 | 
						||
| 
								 | 
							
								 enough bits to reproduce the background noise.
							 | 
						||
| 
								 | 
							
								 This is called 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								comfort noise generation
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (CNG).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Discontinuous Transmission
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								discontinuous transmission
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (DTX)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Discontinuous transmission is an addition to VAD/VBR operation, that allows
							 | 
						||
| 
								 | 
							
								 to stop transmitting completely when the background noise is stationary.
							 | 
						||
| 
								 | 
							
								 In file-based operation, since we cannot just stop writing to the file,
							 | 
						||
| 
								 | 
							
								 only 5 bits are used for such frames (corresponding to 250 bps).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Perceptual enhancement
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								perceptual enhancement
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Perceptual enhancement is a part of the decoder which, when turned on, attempts
							 | 
						||
| 
								 | 
							
								 to reduce the perception of the noise/distortion produced by the encoding/decod
							 | 
						||
| 
								 | 
							
								ing process.
							 | 
						||
| 
								 | 
							
								 In most cases, perceptual enhancement brings the sound further from the
							 | 
						||
| 
								 | 
							
								 original 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								objectively
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (e.g.
							 | 
						||
| 
								 | 
							
								 considering only SNR), but in the end it still 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								sounds
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 better (subjective improvement).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Latency and algorithmic delay
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								algorithmic delay
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Every speech codec introduces a delay in the transmission.
							 | 
						||
| 
								 | 
							
								 For Speex, this delay is equal to the frame size, plus some amount of 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								look-ahead
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 required to process each frame.
							 | 
						||
| 
								 | 
							
								 In narrowband operation (8 kHz), the look-ahead is 10 ms, in wideband operation
							 | 
						||
| 
								 | 
							
								 (16 kHz), the look-ahead is 13.9 ms and in ultra-wideband operation (32
							 | 
						||
| 
								 | 
							
								 kHz) look-ahead is 15.9 ms, resulting in the algorithic delays of 30 ms,
							 | 
						||
| 
								 | 
							
								 33.9 ms and 35.9 ms accordingly.
							 | 
						||
| 
								 | 
							
								 These values don't account for the CPU time it takes to encode or decode
							 | 
						||
| 
								 | 
							
								 the frames.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Codec
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The main characteristics of Speex can be summarized as follows:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Free software/open-source
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								open-source
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, patent
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								patent
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and royalty-free
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Integration of narrowband
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								narrowband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and wideband
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								wideband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 using an embedded bit-stream
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Wide range of bit-rates available (from 2.15 kbps to 44 kbps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Dynamic bit-rate switching (AMR) and Variable Bit-Rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								variable bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (VBR) operation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Voice Activity Detection
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								voice activity detection
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (VAD, integrated with VBR) and discontinuous transmission (DTX)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Variable complexity
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								complexity
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Embedded wideband structure (scalable sampling rate)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Ultra-wideband sampling rate at 32 kHz
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Intensity stereo encoding option
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Fixed-point implementation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Preprocessor
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This part refers to the preprocessor module introduced in the 1.1.x branch.
							 | 
						||
| 
								 | 
							
								 The preprocessor is designed to be used on the audio 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								before
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 running the encoder.
							 | 
						||
| 
								 | 
							
								 The preprocessor provides three main functionalities:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								noise suppression
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								automatic gain control (AGC)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								voice activity detection (VAD)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The denoiser can be used to reduce the amount of background noise present
							 | 
						||
| 
								 | 
							
								 in the input signal.
							 | 
						||
| 
								 | 
							
								 This provides higher quality speech whether or not the denoised signal
							 | 
						||
| 
								 | 
							
								 is encoded with Speex (or at all).
							 | 
						||
| 
								 | 
							
								 However, when using the denoised signal with the codec, there is an additional
							 | 
						||
| 
								 | 
							
								 benefit.
							 | 
						||
| 
								 | 
							
								 Speech codecs in general (Speex included) tend to perform poorly on noisy
							 | 
						||
| 
								 | 
							
								 input, which tends to amplify the noise.
							 | 
						||
| 
								 | 
							
								 The denoiser greatly reduces this effect.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Automatic gain control (AGC) is a feature that deals with the fact that
							 | 
						||
| 
								 | 
							
								 the recording volume may vary by a large amount between different setups.
							 | 
						||
| 
								 | 
							
								 The AGC provides a way to adjust a signal to a reference volume.
							 | 
						||
| 
								 | 
							
								 This is useful for voice over IP because it removes the need for manual
							 | 
						||
| 
								 | 
							
								 adjustment of the microphone gain.
							 | 
						||
| 
								 | 
							
								 A secondary advantage is that by setting the microphone gain to a conservative
							 | 
						||
| 
								 | 
							
								 (low) level, it is easier to avoid clipping.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The voice activity detector (VAD) provided by the preprocessor is more advanced
							 | 
						||
| 
								 | 
							
								 than the one directly provided in the codec.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Adaptive Jitter Buffer
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								When transmitting voice (or any content for that matter) over UDP or RTP,
							 | 
						||
| 
								 | 
							
								 packet may be lost, arrive with different delay, or even out of order.
							 | 
						||
| 
								 | 
							
								 The purpose of a jitter buffer is to reorder packets and buffer them long
							 | 
						||
| 
								 | 
							
								 enough (but no longer than necessary) so they can be sent to be decoded.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Acoustic Echo Canceller
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In any hands-free communication system (Fig.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "fig:Acoustic-echo-model"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								), speech from the remote end is played in the local loudspeaker, propagates
							 | 
						||
| 
								 | 
							
								 in the room and is captured by the microphone.
							 | 
						||
| 
								 | 
							
								 If the audio captured from the microphone is sent directly to the remote
							 | 
						||
| 
								 | 
							
								 end, then the remote user hears an echo of his voice.
							 | 
						||
| 
								 | 
							
								 An acoustic echo canceller is designed to remove the acoustic echo before
							 | 
						||
| 
								 | 
							
								 it is sent to the remote end.
							 | 
						||
| 
								 | 
							
								 It is important to understand that the echo canceller is meant to improve
							 | 
						||
| 
								 | 
							
								 the quality on the 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								remote
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 end.
							 | 
						||
| 
								 | 
							
								 For those who care a lot about mouth-to-ear delays it should be noted that
							 | 
						||
| 
								 | 
							
								 unlike Speex codec, resampler and preprocessor, this Acoustic Echo Canceller
							 | 
						||
| 
								 | 
							
								 does not introduce any latency.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float figure
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Graphics
							 | 
						||
| 
								 | 
							
									filename echo_path.eps
							 | 
						||
| 
								 | 
							
									width 10cm
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Acoustic echo model
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "fig:Acoustic-echo-model"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Resampler
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In some cases, it may be useful to convert audio from one sampling rate
							 | 
						||
| 
								 | 
							
								 to another.
							 | 
						||
| 
								 | 
							
								 There are many reasons for that.
							 | 
						||
| 
								 | 
							
								 It can be for mixing streams that have different sampling rates, for supporting
							 | 
						||
| 
								 | 
							
								 sampling rates that the soundcard doesn't support, for transcoding, etc.
							 | 
						||
| 
								 | 
							
								 That's why there is now a resampler that is part of the Speex project.
							 | 
						||
| 
								 | 
							
								 This resampler can be used to convert between any two arbitrary rates (the
							 | 
						||
| 
								 | 
							
								 ratio must only be a rational number) and there is control over the quality/com
							 | 
						||
| 
								 | 
							
								plexity tradeoff.
							 | 
						||
| 
								 | 
							
								 Keep in mind, that resampler introduce some delay in audio stream, which
							 | 
						||
| 
								 | 
							
								 size depends on resampler quality setting.
							 | 
						||
| 
								 | 
							
								 Refer to resampler API documentation to know how to get exact delay values.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Integration
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Knowing 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								how
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 to use each of the components is not that useful unless we know 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								where
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 to use them.
							 | 
						||
| 
								 | 
							
								 Figure 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "fig:Integration-VoIP"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 shows where each of the components would be used in a typical VoIP client.
							 | 
						||
| 
								 | 
							
								 Components in dotted lines are optional, though they may be very useful
							 | 
						||
| 
								 | 
							
								 in some circumstances.
							 | 
						||
| 
								 | 
							
								 There are several important things to note from there.
							 | 
						||
| 
								 | 
							
								 The AEC must be placed as close as possible to the playback and capture.
							 | 
						||
| 
								 | 
							
								 Only the resampling may be closer.
							 | 
						||
| 
								 | 
							
								 Also, it is very important to use the same clock for both mic capture and
							 | 
						||
| 
								 | 
							
								 speaker/headphones playback.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float figure
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Graphics
							 | 
						||
| 
								 | 
							
									filename components.eps
							 | 
						||
| 
								 | 
							
									width 80text%
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Integration of all the components in a VoIP client.
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "fig:Integration-VoIP"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Compiling and Porting
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Compiling Speex under UNIX/Linux or any other platform supported by autoconf
							 | 
						||
| 
								 | 
							
								 (e.g.
							 | 
						||
| 
								 | 
							
								 Win32/cygwin) is as easy as typing:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout LyX-Code
							 | 
						||
| 
								 | 
							
								% ./configure [options]
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout LyX-Code
							 | 
						||
| 
								 | 
							
								% make
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout LyX-Code
							 | 
						||
| 
								 | 
							
								% make install
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The options supported by the Speex configure script are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--prefix=<path> Specifies the base path for installing Speex (e.g.
							 | 
						||
| 
								 | 
							
								 /usr)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-shared/--disable-shared Whether to compile shared libraries
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-static/--disable-static Whether to compile static libraries
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--disable-wideband Disable the wideband part of Speex (typically to save
							 | 
						||
| 
								 | 
							
								 space)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-valgrind Enable extra hits for valgrind for debugging purposes
							 | 
						||
| 
								 | 
							
								 (do not use by default)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-sse Enable use of SSE instructions (x86/float only)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-fixed-point
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								fixed-point
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Compile Speex for a processor that does not have a floating point unit
							 | 
						||
| 
								 | 
							
								 (FPU)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-arm4-asm Enable assembly specific to the ARMv4 architecture (gcc
							 | 
						||
| 
								 | 
							
								 only)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-arm5e-asm Enable assembly specific to the ARMv5E architecture (gcc
							 | 
						||
| 
								 | 
							
								 only)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-fixed-point-debug Use only for debugging the fixed-point
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								fixed-point
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 code (very slow)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-ti-c55x Enable support for the TI C5x family
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enable-blackfin-asm Enable assembly specific to the Blackfin DSP architecture
							 | 
						||
| 
								 | 
							
								 (gcc only)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Platforms
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex is known to compile and work on a large number of architectures, both
							 | 
						||
| 
								 | 
							
								 floating-point and fixed-point.
							 | 
						||
| 
								 | 
							
								 In general, any architecture that can natively compute the multiplication
							 | 
						||
| 
								 | 
							
								 of two signed 16-bit numbers (32-bit result) and runs at a sufficient clock
							 | 
						||
| 
								 | 
							
								 rate (architecture-dependent) is capable of running Speex.
							 | 
						||
| 
								 | 
							
								 Architectures on which Speex is 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								known
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 to work (it probably works on many others) are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								x86 & x86-64
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Power
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								SPARC
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								ARM
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Blackfin
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Coldfire (68k family)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								TI C54xx & C55xx
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								TI C6xxx
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								TriMedia (experimental)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Operating systems on top of which Speex is known to work include (it probably
							 | 
						||
| 
								 | 
							
								 works on many others):
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Linux
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\mu$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Clinux
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								MacOS X
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								BSD
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Other UNIX/POSIX variants
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Symbian
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The source code directory include additional information for compiling on
							 | 
						||
| 
								 | 
							
								 certain architectures or operating systems in README.xxx files.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Porting and Optimising
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Here are a few things to consider when porting or optimising Speex for a
							 | 
						||
| 
								 | 
							
								 new platform or an existing one.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								CPU optimisation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The single factor that will affect the CPU usage of Speex the most is whether
							 | 
						||
| 
								 | 
							
								 it is compiled for floating point or fixed-point.
							 | 
						||
| 
								 | 
							
								 If your CPU/DSP does not have a floating-point unit FPU, then compiling
							 | 
						||
| 
								 | 
							
								 as fixed-point will be orders of magnitudes faster.
							 | 
						||
| 
								 | 
							
								 If there is an FPU present, then it is important to test which version
							 | 
						||
| 
								 | 
							
								 is faster.
							 | 
						||
| 
								 | 
							
								 On the x86 architecture, floating-point is 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								generally
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 faster, but not always.
							 | 
						||
| 
								 | 
							
								 To compile Speex as fixed-point, you need to pass --fixed-point to the
							 | 
						||
| 
								 | 
							
								 configure script or define the FIXED_POINT macro for the compiler.
							 | 
						||
| 
								 | 
							
								 As of 1.2beta3, it is now possible to disable the floating-point compatibility
							 | 
						||
| 
								 | 
							
								 API, which means that your code can link without a float emulation library.
							 | 
						||
| 
								 | 
							
								 To do that configure with --disable-float-api or define the DISABLE_FLOAT_API
							 | 
						||
| 
								 | 
							
								 macro.
							 | 
						||
| 
								 | 
							
								 Until the VBR feature is ported to fixed-point, you will also need to configure
							 | 
						||
| 
								 | 
							
								 with --disable-vbr or define DISABLE_VBR.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Other important things to check on some DSP architectures are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Make sure the cache is set to write-back mode
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								If the chip has SRAM instead of cache, make sure as much code and data are
							 | 
						||
| 
								 | 
							
								 in SRAM, rather than in RAM
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If you are going to be writing assembly, then the following functions are
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								usually
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 the first ones you should consider optimising:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								filter_mem16()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								iir_mem16()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								vq_nbest()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pitch_xcorr()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interp_pitch()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The filtering functions 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								filter_mem16()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								iir_mem16()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 are implemented in the direct form II transposed (DF2T).
							 | 
						||
| 
								 | 
							
								 However, for architectures based on multiply-accumulate (MAC), DF2T requires
							 | 
						||
| 
								 | 
							
								 frequent reload of the accumulator, which can make the code very slow.
							 | 
						||
| 
								 | 
							
								 For these architectures (e.g.
							 | 
						||
| 
								 | 
							
								 Blackfin and Coldfire), a better approach is to implement those functions
							 | 
						||
| 
								 | 
							
								 as direct form I (DF1), which is easier to express in terms of MAC.
							 | 
						||
| 
								 | 
							
								 When doing that however, 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								it is important to make sure that the DF1 implementation still behaves like
							 | 
						||
| 
								 | 
							
								 the original DF2T behaviour when it comes to memory values
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 This is necessary because the filter is time-varying and must compute exactly
							 | 
						||
| 
								 | 
							
								 the same value (not counting machine rounding) on any encoder or decoder.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Memory optimisation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Memory optimisation is mainly something that should be considered for small
							 | 
						||
| 
								 | 
							
								 embedded platforms.
							 | 
						||
| 
								 | 
							
								 For PCs, Speex is already so tiny that it's just not worth doing any of
							 | 
						||
| 
								 | 
							
								 the things suggested here.
							 | 
						||
| 
								 | 
							
								 There are several ways to reduce the memory usage of Speex, both in terms
							 | 
						||
| 
								 | 
							
								 of code size and data size.
							 | 
						||
| 
								 | 
							
								 For optimising code size, the trick is to first remove features you do
							 | 
						||
| 
								 | 
							
								 not need.
							 | 
						||
| 
								 | 
							
								 Some examples of things that can easily be disabled 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								if you don't need them
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Wideband support (--disable-wideband)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Support for stereo (removing stereo.c)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								VBR support (--disable-vbr or DISABLE_VBR)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Static codebooks that are not needed for the bit-rates you are using (*_table.c
							 | 
						||
| 
								 | 
							
								 files)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex also has several methods for allocating temporary arrays.
							 | 
						||
| 
								 | 
							
								 When using a compiler that supports C99 properly (as of 2007, Microsoft
							 | 
						||
| 
								 | 
							
								 compilers don't, but gcc does), it is best to define VAR_ARRAYS.
							 | 
						||
| 
								 | 
							
								 That makes use of the variable-size array feature of C99.
							 | 
						||
| 
								 | 
							
								 The next best is to define USE_ALLOCA so that Speex can use alloca() to
							 | 
						||
| 
								 | 
							
								 allocate the temporary arrays.
							 | 
						||
| 
								 | 
							
								 Note that on many systems, alloca() is buggy so it may not work.
							 | 
						||
| 
								 | 
							
								 If none of VAR_ARRAYS and USE_ALLOCA are defined, then Speex falls back
							 | 
						||
| 
								 | 
							
								 to allocating a large 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								scratch space
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and doing its own internal allocation.
							 | 
						||
| 
								 | 
							
								 The main disadvantage of this solution is that it is wasteful.
							 | 
						||
| 
								 | 
							
								 It needs to allocate enough stack for the worst case scenario (worst bit-rate,
							 | 
						||
| 
								 | 
							
								 highest complexity setting, ...) and by default, the memory isn't shared between
							 | 
						||
| 
								 | 
							
								 multiple encoder/decoder states.
							 | 
						||
| 
								 | 
							
								 Still, if the 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								manual
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 allocation is the only option left, there are a few things that can be
							 | 
						||
| 
								 | 
							
								 improved.
							 | 
						||
| 
								 | 
							
								 By overriding the speex_alloc_scratch() call in os_support.h, it is possible
							 | 
						||
| 
								 | 
							
								 to always return the same memory area for all states
							 | 
						||
| 
								 | 
							
								\begin_inset Foot
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								In this case, one must be careful with threads
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 In addition to that, by redefining the NB_ENC_STACK and NB_DEC_STACK (or
							 | 
						||
| 
								 | 
							
								 similar for wideband), it is possible to only allocate memory for a scenario
							 | 
						||
| 
								 | 
							
								 that is known in advance.
							 | 
						||
| 
								 | 
							
								 In this case, it is important to measure the amount of memory required
							 | 
						||
| 
								 | 
							
								 for the specific sampling rate, bit-rate and complexity level being used.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Command-line encoder/decoder
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Command-line-encoder/decoder"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The base Speex distribution includes a command-line encoder (
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speexenc
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								) and decoder (
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speexdec
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								).
							 | 
						||
| 
								 | 
							
								 Those tools produce and read Speex files encapsulated in the Ogg container.
							 | 
						||
| 
								 | 
							
								 Although it is possible to encapsulate Speex in any container, Ogg is the
							 | 
						||
| 
								 | 
							
								 recommended container for files.
							 | 
						||
| 
								 | 
							
								 This section describes how to use the command line tools for Speex files
							 | 
						||
| 
								 | 
							
								 in Ogg.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speexenc
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								speexenc
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speexenc
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 utility is used to create Speex files from raw PCM or wave files.
							 | 
						||
| 
								 | 
							
								 It can be used by calling: 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout LyX-Code
							 | 
						||
| 
								 | 
							
								speexenc [options] input_file output_file
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The value '-' for input_file or output_file corresponds respectively to
							 | 
						||
| 
								 | 
							
								 stdin and stdout.
							 | 
						||
| 
								 | 
							
								 The valid options are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--narrowband
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-n) Tell Speex to treat the input as narrowband (8 kHz).
							 | 
						||
| 
								 | 
							
								 This is the default
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--wideband
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-w) Tell Speex to treat the input as wideband (16 kHz)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--ultra-wideband
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-u) Tell Speex to treat the input as 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ultra-wideband
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (32 kHz)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--quality
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Set the encoding quality (0-10), default is 8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--bitrate
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Encoding bit-rate (use bit-rate n or lower) 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--vbr Enable VBR (Variable Bit-Rate), disabled by default
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--abr
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Enable ABR (Average Bit-Rate) at n kbps, disabled by default
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--vad Enable VAD (Voice Activity Detection), disabled by default
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--dtx Enable DTX (Discontinuous Transmission), disabled by default
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--nframes
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Pack n frames in each Ogg packet (this saves space at low bit-rates)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--comp
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Set encoding speed/quality tradeoff.
							 | 
						||
| 
								 | 
							
								 The higher the value of n, the slower the encoding (default is 3)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								-V Verbose operation, print bit-rate currently in use
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--help
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-h) Print the help
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--version
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-v) Print version information
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Speex comments
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--comment Add the given string as an extra comment.
							 | 
						||
| 
								 | 
							
								 This may be used multiple times.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--author Author of this track.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--title Title for this track.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection*
							 | 
						||
| 
								 | 
							
								Raw input options
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--rate
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Sampling rate for raw input
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--stereo Consider raw input as stereo 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--le Raw input is little-endian 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--be Raw input is big-endian 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--8bit Raw input is 8-bit unsigned 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--16bit Raw input is 16-bit signed 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speexdec
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								speexdec
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speexdec
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 utility is used to decode Speex files and can be used by calling: 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout LyX-Code
							 | 
						||
| 
								 | 
							
								speexdec [options] speex_file [output_file]
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The value '-' for input_file or output_file corresponds respectively to
							 | 
						||
| 
								 | 
							
								 stdin and stdout.
							 | 
						||
| 
								 | 
							
								 Also, when no output_file is specified, the file is played to the soundcard.
							 | 
						||
| 
								 | 
							
								 The valid options are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--enh enable post-filter (default)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--no-enh disable post-filter
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--force-nb Force decoding in narrowband 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--force-wb Force decoding in wideband 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--force-uwb Force decoding in ultra-wideband 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--mono Force decoding in mono 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--stereo Force decoding in stereo 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--rate
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Force decoding at n Hz sampling rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--packet-loss
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								n Simulate n % random packet loss
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								-V Verbose operation, print bit-rate currently in use
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--help
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-h) Print the help
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								--version
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(-v) Print version information
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Using the Speex Codec API (
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								libspeex
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								libspeex
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Programming-with-Speex"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								libspeex
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 library contains all the functions for encoding and decoding speech with
							 | 
						||
| 
								 | 
							
								 the Speex codec.
							 | 
						||
| 
								 | 
							
								 When linking on a UNIX system, one must add 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								-lspeex -lm
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 to the compiler command line.
							 | 
						||
| 
								 | 
							
								 One important thing to know is that 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								libspeex calls are reentrant, but not thread-safe
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 That means that it is fine to use calls from many threads, but 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								calls using the same state from multiple threads must be protected by mutexes
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 Examples of code can also be found in Appendix 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Sample-code"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and the complete API documentation is included in the Documentation section
							 | 
						||
| 
								 | 
							
								 of the Speex website (http://www.speex.org/).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Encoding
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Encoding"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In order to encode speech using Speex, one first needs to:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <speex/speex.h>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Then in the code, a Speex bit-packing struct must be declared, along with
							 | 
						||
| 
								 | 
							
								 a Speex encoder state:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SpeexBits bits;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void *enc_state;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The two are initialized by:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_bits_init(&bits);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enc_state = speex_encoder_init(&speex_nb_mode);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For wideband coding, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_nb_mode
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 will be replaced by 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_wb_mode
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 In most cases, you will need to know the frame size used at the sampling
							 | 
						||
| 
								 | 
							
								 rate you are using.
							 | 
						||
| 
								 | 
							
								 You can get that value in the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								frame_size
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 variable (expressed in 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								samples
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								, not bytes) with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In practice, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								frame_size
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 will correspond to 20 ms when using 8, 16, or 32 kHz sampling rate.
							 | 
						||
| 
								 | 
							
								 There are many parameters that can be set for the Speex encoder, but the
							 | 
						||
| 
								 | 
							
								 most useful one is the quality parameter that controls the quality vs bit-rate
							 | 
						||
| 
								 | 
							
								 tradeoff.
							 | 
						||
| 
								 | 
							
								 This is set by:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_encoder_ctl(enc_state,SPEEX_SET_QUALITY,&quality);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								quality
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is an integer value ranging from 0 to 10 (inclusively).
							 | 
						||
| 
								 | 
							
								 The mapping between quality and bit-rate is described in Fig.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:quality_vs_bps"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 for narrowband.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Once the initialization is done, for every input frame:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_bits_reset(&bits);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_encode_int(enc_state, input_frame, &bits);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								input_frame
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								(
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								short 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								*)
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 pointing to the beginning of a speech frame, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								byte_ptr
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								(char *)
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 where the encoded frame will be written, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								MAX_NB_BYTES
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is the maximum number of bytes that can be written to 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								byte_ptr
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 without causing an overflow and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								nbBytes
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is the number of bytes actually written to 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								byte_ptr
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (the encoded size in bytes).
							 | 
						||
| 
								 | 
							
								 Before calling speex_bits_write, it is possible to find the number of bytes
							 | 
						||
| 
								 | 
							
								 that need to be written by calling 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								speex_bits_nbytes(&bits)
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								, which returns a number of bytes.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								It is still possible to use the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_encode()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 function, which takes a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								(float *)
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 for the audio.
							 | 
						||
| 
								 | 
							
								 However, this would make an eventual port to an FPU-less platform (like
							 | 
						||
| 
								 | 
							
								 ARM) more complicated.
							 | 
						||
| 
								 | 
							
								 Internally, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_encode()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_encode_int()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 are processed in the same way.
							 | 
						||
| 
								 | 
							
								 Whether the encoder uses the fixed-point version is only decided by the
							 | 
						||
| 
								 | 
							
								 compile-time flags, not at the API level.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								After you're done with the encoding, free all resources with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_bits_destroy(&bits);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_encoder_destroy(enc_state);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								That's about it for the encoder.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Decoding
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Decoding"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In order to decode speech using Speex, you first need to:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <speex/speex.h>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You also need to declare a Speex bit-packing struct
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SpeexBits bits;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								and a Speex decoder state
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void *dec_state;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The two are initialized by:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_bits_init(&bits);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								dec_state = speex_decoder_init(&speex_nb_mode);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For wideband decoding, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_nb_mode
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 will be replaced by 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_wb_mode
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 If you need to obtain the size of the frames that will be used by the decoder,
							 | 
						||
| 
								 | 
							
								 you can get that value in the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								frame_size
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 variable (expressed in 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								samples
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								, not bytes) with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								There is also a parameter that can be set for the decoder: whether or not
							 | 
						||
| 
								 | 
							
								 to use a perceptual enhancer.
							 | 
						||
| 
								 | 
							
								 This can be set by: 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_decoder_ctl(dec_state, SPEEX_SET_ENH, &enh);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								enh
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is an int with value 0 to have the enhancer disabled and 1 to have it enabled.
							 | 
						||
| 
								 | 
							
								 As of 1.2-beta1, the default is now to enable the enhancer.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Again, once the decoder initialization is done, for every input frame:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_bits_read_from(&bits, input_bytes, nbBytes);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_decode_int(dec_state, &bits, output_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where input_bytes is a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								(char *)
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 containing the bit-stream data received for a frame, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								nbBytes
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is the size (in bytes) of that bit-stream, and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								output_frame
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								(short *)
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 and points to the area where the decoded speech frame will be written.
							 | 
						||
| 
								 | 
							
								 A NULL value as the second argument indicates that we don't have the bits
							 | 
						||
| 
								 | 
							
								 for the current frame.
							 | 
						||
| 
								 | 
							
								 When a frame is lost, the Speex decoder will do its best to "guess" the
							 | 
						||
| 
								 | 
							
								 correct signal.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As for the encoder, the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_decode()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 function can still be used, with a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								(float *)
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 as the output for the audio.
							 | 
						||
| 
								 | 
							
								 After you're done with the decoding, free all resources with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_bits_destroy(&bits);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_decoder_destroy(dec_state);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Codec Options (speex_*_ctl)
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Codec-Options"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Quote
							 | 
						||
| 
								 | 
							
								\align center
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								Entities should not be multiplied beyond necessity -- William of Ockham.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Quote
							 | 
						||
| 
								 | 
							
								\align center
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								Just because there's an option for it doesn't mean you have to turn it on
							 | 
						||
| 
								 | 
							
								 -- me.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The Speex encoder and decoder support many options and requests that can
							 | 
						||
| 
								 | 
							
								 be accessed through the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_encoder_ctl
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_decoder_ctl
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 functions.
							 | 
						||
| 
								 | 
							
								 These functions are similar to the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								ioctl
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 system call and their prototypes are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void speex_encoder_ctl(void *encoder, int request, void *ptr);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void speex_decoder_ctl(void *encoder, int request, void *ptr);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Despite those functions, the defaults are usually good for many applications
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								optional settings should only be used when one understands them and knows
							 | 
						||
| 
								 | 
							
								 that they are needed
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 A common error is to attempt to set many unnecessary settings.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Here is a list of the values allowed for the requests.
							 | 
						||
| 
								 | 
							
								 Some only apply to the encoder or the decoder.
							 | 
						||
| 
								 | 
							
								 Because the last argument is of type 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void *
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, the 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_ctl()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 functions are 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								not type safe
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								, and should thus be used with care.
							 | 
						||
| 
								 | 
							
								 The type 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the same as the C99 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 type.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_ENH
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\ddagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set perceptual enhancer
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								perceptual enhancement
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 to on (1) or off (0) (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, default is on)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_ENH
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\ddagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get perceptual enhancer status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_FRAME_SIZE Get the number of samples per frame for the current
							 | 
						||
| 
								 | 
							
								 mode (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_QUALITY
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set the encoder speech quality (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 from 0 to 10, default is 8)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_QUALITY
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get the current encoder speech quality (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 from 0 to 10)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_MODE
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set the mode number, as specified in the RTP spec (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_MODE
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get the current mode number, as specified in the RTP spec (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_VBR
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set variable bit-rate (VBR) to on (1) or off (0) (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, default is off)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_VBR
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get variable bit-rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								variable bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (VBR) status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_VBR_QUALITY
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set the encoder VBR speech quality (float 0.0 to 10.0, default is 8.0)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_VBR_QUALITY
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get the current encoder VBR speech quality (float 0 to 10)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_COMPLEXITY
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set the CPU resources allowed for the encoder (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 from 1 to 10, default is 2)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_COMPLEXITY
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get the CPU resources allowed for the encoder (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 from 1 to 10, default is 2)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_BITRATE
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set the bit-rate to use the closest value not exceeding the parameter (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in bits per second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_BITRATE Get the current bit-rate in use (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in bits per second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_SAMPLING_RATE Set real sampling rate (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in Hz)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_SAMPLING_RATE Get real sampling rate (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in Hz)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_RESET_STATE Reset the encoder/decoder state to its original state,
							 | 
						||
| 
								 | 
							
								 clearing all memories (no argument)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_VAD
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set voice activity detection
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								voice activity detection
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (VAD) to on (1) or off (0) (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, default is off)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_VAD
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get voice activity detection (VAD) status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_DTX
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set discontinuous transmission
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								discontinuous transmission
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (DTX) to on (1) or off (0) (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, default is off)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_DTX
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get discontinuous transmission (DTX) status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_ABR
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set average bit-rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								average bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (ABR) to a value n in bits per second (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in bits per second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_ABR
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get average bit-rate (ABR) setting (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in bits per second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_PLC_TUNING
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Tell the encoder to optimize encoding for a certain percentage of packet
							 | 
						||
| 
								 | 
							
								 loss (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in percent)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_PLC_TUNING
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get the current tuning of the encoder for PLC (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in percent)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_LOOKAHEAD Returns the lookahead used by Speex separately for an
							 | 
						||
| 
								 | 
							
								 encoder and a decoder.
							 | 
						||
| 
								 | 
							
								 Sum encoder and decoder lookahead values to get the total codec lookahead.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_VBR_MAX_BITRATE
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Set the maximum bit-rate allowed in VBR operation (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in bits per second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_VBR_MAX_BITRATE
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Get the current maximum bit-rate allowed in VBR operation (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in bits per second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SET_HIGHPASS Set the high-pass filter on (1) or off (0) (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, default is on)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_GET_HIGHPASS Get the current high-pass filter status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\dagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 applies only to the encoder
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\ddagger$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 applies only to the decoder
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Mode queries
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Mode-queries"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex modes have a query system similar to the speex_encoder_ctl and speex_decod
							 | 
						||
| 
								 | 
							
								er_ctl calls.
							 | 
						||
| 
								 | 
							
								 Since modes are read-only, it is only possible to get information about
							 | 
						||
| 
								 | 
							
								 a particular mode.
							 | 
						||
| 
								 | 
							
								 The function used to do that is:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void speex_mode_query(SpeexMode *mode, int request, void *ptr);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The admissible values for request are (unless otherwise note, the values
							 | 
						||
| 
								 | 
							
								 are returned through 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								ptr
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								):
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_MODE_FRAME_SIZE Get the frame size (in samples) for the mode
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_SUBMODE_BITRATE Get the bit-rate for a submode number specified through
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								ptr
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (integer in bps).
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Packing and in-band signalling
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								in-band signalling
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Sometimes it is desirable to pack more than one frame per packet (or other
							 | 
						||
| 
								 | 
							
								 basic unit of storage).
							 | 
						||
| 
								 | 
							
								 The proper way to do it is to call speex_encode 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $N$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 times before writing the stream with speex_bits_write.
							 | 
						||
| 
								 | 
							
								 In cases where the number of frames is not determined by an out-of-band
							 | 
						||
| 
								 | 
							
								 mechanism, it is possible to include a terminator code.
							 | 
						||
| 
								 | 
							
								 That terminator consists of the code 15 (decimal) encoded with 5 bits,
							 | 
						||
| 
								 | 
							
								 as shown in Table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:quality_vs_bps"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 Note that as of version 1.0.2, calling speex_bits_write automatically inserts
							 | 
						||
| 
								 | 
							
								 the terminator so as to fill the last byte.
							 | 
						||
| 
								 | 
							
								 This doesn't involves any overhead and makes sure Speex can always detect
							 | 
						||
| 
								 | 
							
								 when there is no more frame in a packet.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								It is also possible to send in-band 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								messages
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 to the other side.
							 | 
						||
| 
								 | 
							
								 All these messages are encoded as 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pseudo-frames
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 of mode 14 which contain a 4-bit message type code, followed by the message.
							 | 
						||
| 
								 | 
							
								 Table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:In-band-signalling-codes"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 lists the available codes, their meaning and the size of the message that
							 | 
						||
| 
								 | 
							
								 follows.
							 | 
						||
| 
								 | 
							
								 Most of these messages are requests that are sent to the encoder or decoder
							 | 
						||
| 
								 | 
							
								 on the other end, which is free to comply or ignore them.
							 | 
						||
| 
								 | 
							
								 By default, all in-band messages are ignored.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float table
							 | 
						||
| 
								 | 
							
								placement htbp
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="17" columns="3">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Code
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Size (bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Content
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks decoder to set perceptual enhancement off (0) or on(1)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks (if 1) the encoder to be less 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								aggressive
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 due to high packet loss
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks encoder to switch to mode N
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks encoder to switch to mode N for low-band
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks encoder to switch to mode N for high-band
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks encoder to switch to quality N for VBR
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								6
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Request acknowledge (0=no, 1=all, 2=only for in-band data)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Asks encoder to set CBR (0), VAD(1), DTX(3), VBR(5), VBR+DTX(7)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Transmit (8-bit) character to the other end
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								9
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Intensity stereo information
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								16
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Announce maximum bit-rate acceptable (N in bytes/second)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								11
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								16
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								32
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Acknowledge receiving packet N
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								32
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								14
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								64
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								15
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								64
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								In-band signalling codes
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:In-band-signalling-codes"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Finally, applications may define custom in-band messages using mode 13.
							 | 
						||
| 
								 | 
							
								 The size of the message in bytes is encoded with 5 bits, so that the decoder
							 | 
						||
| 
								 | 
							
								 can skip it if it doesn't know how to interpret it.
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Speech Processing API (
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								libspeexdsp
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As of version 1.2beta3, the non-codec parts of the Speex package are now
							 | 
						||
| 
								 | 
							
								 in a separate library called 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								libspeexdsp
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 This library includes the preprocessor, the acoustic echo canceller, the
							 | 
						||
| 
								 | 
							
								 jitter buffer, and the resampler.
							 | 
						||
| 
								 | 
							
								 In a UNIX environment, it can be linked into a program by adding 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								-lspeexdsp -lm
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 to the compiler command line.
							 | 
						||
| 
								 | 
							
								 Just like for libspeex, 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								libspeexdsp calls are reentrant, but not thread-safe
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 That means that it is fine to use calls from many threads, but 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								calls using the same state from multiple threads must be protected by mutexes
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Preprocessor
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Preprocessor"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\noindent
							 | 
						||
| 
								 | 
							
								In order to use the Speex preprocessor
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								preprocessor
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, you first need to:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <speex/speex_preprocess.h>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\noindent
							 | 
						||
| 
								 | 
							
								Then, a preprocessor state can be created as:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SpeexPreprocessState *preprocess_state = speex_preprocess_state_init(frame_size,
							 | 
						||
| 
								 | 
							
								 sampling_rate);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\noindent
							 | 
						||
| 
								 | 
							
								and it is recommended to use the same value for 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								frame_size
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 as is used by the encoder (20 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								ms
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For each input frame, you need to call:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_preprocess_run(preprocess_state, audio_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\noindent
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								audio_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is used both as input and output.
							 | 
						||
| 
								 | 
							
								 In cases where the output audio is not useful for a certain frame, it is
							 | 
						||
| 
								 | 
							
								 possible to use instead:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_preprocess_estimate_update(preprocess_state, audio_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\noindent
							 | 
						||
| 
								 | 
							
								This call will update all the preprocessor internal state variables without
							 | 
						||
| 
								 | 
							
								 computing the output audio, thus saving some CPU cycles.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The behaviour of the preprocessor can be changed using:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_preprocess_ctl(preprocess_state, request, ptr);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\noindent
							 | 
						||
| 
								 | 
							
								which is used in the same way as the encoder and decoder equivalent.
							 | 
						||
| 
								 | 
							
								 Options are listed in Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sub:Preprocessor-options"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The preprocessor state can be destroyed using:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_preprocess_state_destroy(preprocess_state);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Preprocessor options
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Preprocessor-options"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As with the codec, the preprocessor also has options that can be controlled
							 | 
						||
| 
								 | 
							
								 using an ioctl()-like call.
							 | 
						||
| 
								 | 
							
								 The available options are:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_DENOISE Turns denoising on(1) or off(0) (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_DENOISE Get denoising status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_AGC Turns automatic gain control (AGC) on(1) or off(0)
							 | 
						||
| 
								 | 
							
								 (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_AGC Get AGC status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_VAD Turns voice activity detector (VAD) on(1) or off(0)
							 | 
						||
| 
								 | 
							
								 (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_VAD Get VAD status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_AGC_LEVEL
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_AGC_LEVEL
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_DEREVERB Turns reverberation removal on(1) or off(0)
							 | 
						||
| 
								 | 
							
								 (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_DEREVERB Get reverberation removal status (
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_DEREVERB_LEVEL Not working yet, do not use
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_DEREVERB_LEVEL Not working yet, do not use
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_DEREVERB_DECAY Not working yet, do not use
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_DEREVERB_DECAY Not working yet, do not use
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_PROB_START
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_PROB_START
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_PROB_CONTINUE
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_PROB_CONTINUE
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_NOISE_SUPPRESS Set maximum attenuation of the noise
							 | 
						||
| 
								 | 
							
								 in dB (negative 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_NOISE_SUPPRESS Get maximum attenuation of the noise
							 | 
						||
| 
								 | 
							
								 in dB (negative 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_ECHO_SUPPRESS Set maximum attenuation of the residual
							 | 
						||
| 
								 | 
							
								 echo in dB (negative 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_ECHO_SUPPRESS Get maximum attenuation of the residual
							 | 
						||
| 
								 | 
							
								 echo in dB (negative 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE Set maximum attenuation of the
							 | 
						||
| 
								 | 
							
								 echo in dB when near end is active (negative 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE Get maximum attenuation of the
							 | 
						||
| 
								 | 
							
								 echo in dB when near end is active (negative 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								spx_int32_t
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_SET_ECHO_STATE Set the associated echo canceller for residual
							 | 
						||
| 
								 | 
							
								 echo suppression (pointer or NULL for no residual echo suppression)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Description
							 | 
						||
| 
								 | 
							
								SPEEX_PREPROCESS_GET_ECHO_STATE Get the associated echo canceller (pointer)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Echo Cancellation
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sub:Echo-Cancellation"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The Speex library now includes an echo cancellation
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								echo cancellation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 algorithm suitable for Acoustic Echo Cancellation
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								acoustic echo cancellation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (AEC).
							 | 
						||
| 
								 | 
							
								 In order to use the echo canceller, you first need to
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <speex/speex_echo.h>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Then, an echo canceller state can be created by:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SpeexEchoState *echo_state = speex_echo_state_init(frame_size, filter_length);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								frame_size
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is the amount of data (in samples) you want to process at once and 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								filter_length
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is the length (in samples) of the echo cancelling filter you want to use
							 | 
						||
| 
								 | 
							
								 (also known as 
							 | 
						||
| 
								 | 
							
								\shape italic
							 | 
						||
| 
								 | 
							
								tail length
							 | 
						||
| 
								 | 
							
								\shape default
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								tail length
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								).
							 | 
						||
| 
								 | 
							
								 It is recommended to use a frame size in the order of 20 ms (or equal to
							 | 
						||
| 
								 | 
							
								 the codec frame size) and make sure it is easy to perform an FFT of that
							 | 
						||
| 
								 | 
							
								 size (powers of two are better than prime sizes).
							 | 
						||
| 
								 | 
							
								 The recommended tail length is approximately the third of the room reverberatio
							 | 
						||
| 
								 | 
							
								n time.
							 | 
						||
| 
								 | 
							
								 For example, in a small room, reverberation time is in the order of 300
							 | 
						||
| 
								 | 
							
								 ms, so a tail length of 100 ms is a good choice (800 samples at 8000 Hz
							 | 
						||
| 
								 | 
							
								 sampling rate).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Once the echo canceller state is created, audio can be processed by:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_echo_cancellation(echo_state, input_frame, echo_frame, output_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								input_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is the audio as captured by the microphone, 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								echo_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is the signal that was played in the speaker (and needs to be removed)
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								output_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is the signal with echo removed.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								One important thing to keep in mind is the relationship between 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								input_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								echo_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 It is important that, at any time, any echo that is present in the input
							 | 
						||
| 
								 | 
							
								 has already been sent to the echo canceller as 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								echo_frame
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 In other words, the echo canceller cannot remove a signal that it hasn't
							 | 
						||
| 
								 | 
							
								 yet received.
							 | 
						||
| 
								 | 
							
								 On the other hand, the delay between the input signal and the echo signal
							 | 
						||
| 
								 | 
							
								 must be small enough because otherwise part of the echo cancellation filter
							 | 
						||
| 
								 | 
							
								 is inefficient.
							 | 
						||
| 
								 | 
							
								 In the ideal case, you code would look like:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								lstparams "breaklines=true"
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								write_to_soundcard(echo_frame, frame_size);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								read_from_soundcard(input_frame, frame_size);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_echo_cancellation(echo_state, input_frame, echo_frame, output_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If you wish to further reduce the echo present in the signal, you can do
							 | 
						||
| 
								 | 
							
								 so by associating the echo canceller to the preprocessor (see Section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sub:Preprocessor"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								).
							 | 
						||
| 
								 | 
							
								 This is done by calling:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								lstparams "breaklines=true"
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_preprocess_ctl(preprocess_state, SPEEX_PREPROCESS_SET_ECHO_STATE,echo_stat
							 | 
						||
| 
								 | 
							
								e);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								in the initialisation.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As of version 1.2-beta2, there is an alternative, simpler API that can be
							 | 
						||
| 
								 | 
							
								 used instead of 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_echo_cancellation()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 When audio capture and playback are handled asynchronously (e.g.
							 | 
						||
| 
								 | 
							
								 in different threads or using the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								poll()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 or 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								select()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 system call), it can be difficult to keep track of what input_frame comes
							 | 
						||
| 
								 | 
							
								 with what echo_frame.
							 | 
						||
| 
								 | 
							
								 Instead, the playback context/thread can simply call:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_echo_playback(echo_state, echo_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								every time an audio frame is played.
							 | 
						||
| 
								 | 
							
								 Then, the capture context/thread calls:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_echo_capture(echo_state, input_frame, output_frame);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								for every frame captured.
							 | 
						||
| 
								 | 
							
								 Internally, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_echo_playback()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 simply buffers the playback frame so it can be used by 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_echo_capture()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 to call 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_echo_cancel()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 A side effect of using this alternate API is that the playback audio is
							 | 
						||
| 
								 | 
							
								 delayed by two frames, which is the normal delay caused by the soundcard.
							 | 
						||
| 
								 | 
							
								 When capture and playback are already synchronised, 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								speex_echo_cancellation()
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 is preferable since it gives better control on the exact input/echo timing.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The echo cancellation state can be destroyed with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_echo_state_destroy(echo_state);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								It is also possible to reset the state of the echo canceller so it can be
							 | 
						||
| 
								 | 
							
								 reused without the need to create another state with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_echo_state_reset(echo_state);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Troubleshooting
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								There are several things that may prevent the echo canceller from working
							 | 
						||
| 
								 | 
							
								 properly.
							 | 
						||
| 
								 | 
							
								 One of them is a bug (or something suboptimal) in the code, but there are
							 | 
						||
| 
								 | 
							
								 many others you should consider first
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Using a different soundcard to do the capture and plaback will 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								not
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 work, regardless of what you may think.
							 | 
						||
| 
								 | 
							
								 The only exception to that is if the two cards can be made to have their
							 | 
						||
| 
								 | 
							
								 sampling clock 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								locked
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 on the same clock source.
							 | 
						||
| 
								 | 
							
								 If not, the clocks will always have a small amount of drift, which will
							 | 
						||
| 
								 | 
							
								 prevent the echo canceller from adapting.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								The delay between the record and playback signals must be minimal.
							 | 
						||
| 
								 | 
							
								 Any signal played has to 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								appear
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 on the playback (far end) signal slightly before the echo canceller 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sees
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 it in the near end signal, but excessive delay means that part of the filter
							 | 
						||
| 
								 | 
							
								 length is wasted.
							 | 
						||
| 
								 | 
							
								 In the worst situations, the delay is such that it is longer than the filter
							 | 
						||
| 
								 | 
							
								 length, in which case, no echo can be cancelled.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								When it comes to echo tail length (filter length), longer is 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								not
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 better.
							 | 
						||
| 
								 | 
							
								 Actually, the longer the tail length, the longer it takes for the filter
							 | 
						||
| 
								 | 
							
								 to adapt.
							 | 
						||
| 
								 | 
							
								 Of course, a tail length that is too short will not cancel enough echo,
							 | 
						||
| 
								 | 
							
								 but the most common problem seen is that people set a very long tail length
							 | 
						||
| 
								 | 
							
								 and then wonder why no echo is being cancelled.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Non-linear distortion cannot (by definition) be modeled by the linear adaptive
							 | 
						||
| 
								 | 
							
								 filter used in the echo canceller and thus cannot be cancelled.
							 | 
						||
| 
								 | 
							
								 Use good audio gear and avoid saturation/clipping.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Also useful is reading 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								Echo Cancellation Demystified
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 by Alexey Frunze
							 | 
						||
| 
								 | 
							
								\begin_inset Foot
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								http://www.embeddedstar.com/articles/2003/7/article20030720-1.html
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, which explains the fundamental principles of echo cancellation.
							 | 
						||
| 
								 | 
							
								 The details of the algorithm described in the article are different, but
							 | 
						||
| 
								 | 
							
								 the general ideas of echo cancellation through adaptive filters are the
							 | 
						||
| 
								 | 
							
								 same.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As of version 1.2beta2, a new 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								echo_diagnostic.m
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 tool is included in the source distribution.
							 | 
						||
| 
								 | 
							
								 The first step is to define DUMP_ECHO_CANCEL_DATA during the build.
							 | 
						||
| 
								 | 
							
								 This causes the echo canceller to automatically save the near-end, far-end
							 | 
						||
| 
								 | 
							
								 and output signals to files (aec_rec.sw aec_play.sw and aec_out.sw).
							 | 
						||
| 
								 | 
							
								 These are exactly what the AEC receives and outputs.
							 | 
						||
| 
								 | 
							
								 From there, it is necessary to start Octave and type:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								lstparams "language=Matlab"
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo_diagnostic('aec_rec.sw', 'aec_play.sw', 'aec_diagnostic.sw', 1024);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The value of 1024 is the filter length and can be changed.
							 | 
						||
| 
								 | 
							
								 There will be some (hopefully) useful messages printed and echo cancelled
							 | 
						||
| 
								 | 
							
								 audio will be saved to aec_diagnostic.sw .
							 | 
						||
| 
								 | 
							
								 If even that output is bad (almost no cancellation) then there is  probably
							 | 
						||
| 
								 | 
							
								 problem with the playback or recording process.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Jitter Buffer
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The jitter buffer can be enabled by including:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								lstparams "breaklines=true"
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <speex/speex_jitter.h>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and a new jitter buffer state can be initialised by:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								lstparams "breaklines=true"
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								JitterBuffer *state = jitter_buffer_init(step);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								where the 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								step
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 argument is the default time step (in timestamp units) used for adjusting
							 | 
						||
| 
								 | 
							
								 the delay and doing concealment.
							 | 
						||
| 
								 | 
							
								 A value of 1 is always correct, but higher values may be more convenient
							 | 
						||
| 
								 | 
							
								 sometimes.
							 | 
						||
| 
								 | 
							
								 For example, if you are only able to do concealment on 20ms frames, there
							 | 
						||
| 
								 | 
							
								 is no point in the jitter buffer asking you to do it on one sample.
							 | 
						||
| 
								 | 
							
								 Another example is that for video, it makes no sense to adjust the delay
							 | 
						||
| 
								 | 
							
								 by less than a full frame.
							 | 
						||
| 
								 | 
							
								 The value provided can always be changed at a later time.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The jitter buffer API is based on the 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								JitterBufferPacket
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 type, which is defined as:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct {
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   char        *data;       /* Data bytes contained in the packet */
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   spx_uint32_t len;        /* Length of the packet in bytes */
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   spx_uint32_t timestamp;  /* Timestamp for the packet */
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   spx_uint32_t span;       /* Time covered by the packet (timestamp units)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} JitterBufferPacket; 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								As an example, for audio the timestamp field would be what is obtained from
							 | 
						||
| 
								 | 
							
								 the RTP timestamp field and the span would be the number of samples that
							 | 
						||
| 
								 | 
							
								 are encoded in the packet.
							 | 
						||
| 
								 | 
							
								 For Speex narrowband, span would be 160 if only one frame is included in
							 | 
						||
| 
								 | 
							
								 the packet.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								When a packet arrives, it need to be inserter into the jitter buffer by:
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								JitterBufferPacket packet;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Fill in each field in the packet struct */
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jitter_buffer_put(state, &packet);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								When the decoder is ready to decode a packet the packet to be decoded can
							 | 
						||
| 
								 | 
							
								 be obtained by: 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int start_offset;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								err = jitter_buffer_get(state, &packet, desired_span, &start_offset);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jitter_buffer_put()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jitter_buffer_get()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 are called from different threads, then 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								you need to protect the jitter buffer state with a mutex
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Because the jitter buffer is designed not to use an explicit timer, it needs
							 | 
						||
| 
								 | 
							
								 to be told about the time explicitly.
							 | 
						||
| 
								 | 
							
								 This is done by calling: 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jitter_buffer_tick(state);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This needs to be done periodically in the playing thread.
							 | 
						||
| 
								 | 
							
								 This will be the last jitter buffer call before going to sleep (until more
							 | 
						||
| 
								 | 
							
								 data is played back).
							 | 
						||
| 
								 | 
							
								 In some cases, it may be preferable to use 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jitter_buffer_remaining_span(state, remaining);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The second argument is used to specify that we are still holding data that
							 | 
						||
| 
								 | 
							
								 has not been written to the playback device.
							 | 
						||
| 
								 | 
							
								 For instance, if 256 samples were needed by the soundcard (specified by
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								desired_span
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								), but 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jitter_buffer_get()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 returned 320 samples, we would have 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								remaining=64
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Resampler
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex includes a resampling modules.
							 | 
						||
| 
								 | 
							
								 To make use of the resampler, it is necessary to include its header file:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <speex/speex_resampler.h>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For each stream that is to be resampled, it is necessary to create a resampler
							 | 
						||
| 
								 | 
							
								 state with:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SpeexResamplerState *resampler;
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								resampler = speex_resampler_init(nb_channels, input_rate, output_rate, quality,
							 | 
						||
| 
								 | 
							
								 &err);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								nb_channels
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the number of channels that will be used (either interleaved or non-interlea
							 | 
						||
| 
								 | 
							
								ved), 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								input_rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the sampling rate of the input stream, 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								output_rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the sampling rate of the output stream and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								quality
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the requested quality setting (0 to 10).
							 | 
						||
| 
								 | 
							
								 The quality parameter is useful for controlling the quality/complexity/latency
							 | 
						||
| 
								 | 
							
								 tradeoff.
							 | 
						||
| 
								 | 
							
								 Using a higher quality setting means less noise/aliasing, a higher complexity
							 | 
						||
| 
								 | 
							
								 and a higher latency.
							 | 
						||
| 
								 | 
							
								 Usually, a quality of 3 is acceptable for most desktop uses and quality
							 | 
						||
| 
								 | 
							
								 10 is mostly recommended for pro audio work.
							 | 
						||
| 
								 | 
							
								 Quality 0 usually has a decent sound (certainly better than using linear
							 | 
						||
| 
								 | 
							
								 interpolation resampling), but artifacts may be heard.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The actual resampling is performed using
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								err = speex_resampler_process_int(resampler, channelID, in, &in_length,
							 | 
						||
| 
								 | 
							
								 out, &out_length);
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								channelID
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the ID of the channel to be processed.
							 | 
						||
| 
								 | 
							
								 For a mono stream, use 0.
							 | 
						||
| 
								 | 
							
								 The 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								in
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 pointer points to the first sample of the input buffer for the selected
							 | 
						||
| 
								 | 
							
								 channel and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								out
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 points to the first sample of the output.
							 | 
						||
| 
								 | 
							
								 The size of the input and output buffers are specified by 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								in_length
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								out_length
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 respectively.
							 | 
						||
| 
								 | 
							
								 Upon completion, these values are replaced by the number of samples read
							 | 
						||
| 
								 | 
							
								 and written by the resampler.
							 | 
						||
| 
								 | 
							
								 Unless an error occurs, either all input samples will be read or all output
							 | 
						||
| 
								 | 
							
								 samples will be written to (or both).
							 | 
						||
| 
								 | 
							
								 For floating-point samples, the function 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_process_float()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 behaves similarly.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								It is also possible to process multiple channels at once.
							 | 
						||
| 
								 | 
							
								 To do that, you can use speex_resampler_process_interleaved_int() or 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_process_interleaved_float()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The arguments are the same except that there is no 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								channelID
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 argument.
							 | 
						||
| 
								 | 
							
								 Note that the 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								length parameters are per-channel
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 So if you have 1024 samples for each of 4 channels, you pass 1024 and not
							 | 
						||
| 
								 | 
							
								 4096.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The resampler allows changing the quality and input/output sampling frequencies
							 | 
						||
| 
								 | 
							
								 on the fly without glitches.
							 | 
						||
| 
								 | 
							
								 This can be done with calls such as 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_set_quality()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_set_rate()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The only side effect is that a new filter will have to be recomputed, consuming
							 | 
						||
| 
								 | 
							
								 many CPU cycles.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								When resampling a file, it is often desirable to have the output file perfectly
							 | 
						||
| 
								 | 
							
								 synchronised with the input.
							 | 
						||
| 
								 | 
							
								 To do that, you need to call 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_skip_zeros()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								before
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 you start processing any samples.
							 | 
						||
| 
								 | 
							
								 For real-time applications (e.g.
							 | 
						||
| 
								 | 
							
								 VoIP), it is not recommended to do that as the first process frame will
							 | 
						||
| 
								 | 
							
								 be shorter to compensate for the delay (the skipped zeros).
							 | 
						||
| 
								 | 
							
								 Instead, in real-time applications you may want to know how many delay
							 | 
						||
| 
								 | 
							
								 is introduced by the resampler.
							 | 
						||
| 
								 | 
							
								 This can be done at run-time with 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_get_input_latency()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_get_output_latency()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 functions.
							 | 
						||
| 
								 | 
							
								 First function returns delay measured in samples at input samplerate, while
							 | 
						||
| 
								 | 
							
								 second returns delay measured in samples at output samplerate.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								To destroy a resampler state, just call 
							 | 
						||
| 
								 | 
							
								\begin_inset listings
							 | 
						||
| 
								 | 
							
								inline true
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								speex_resampler_destroy()
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Ring Buffer
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In some cases, it is necessary to interface components that use different
							 | 
						||
| 
								 | 
							
								 block sizes.
							 | 
						||
| 
								 | 
							
								 For example, it is possible that the soundcard does not support reading/writing
							 | 
						||
| 
								 | 
							
								 in blocks of 20
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ms or sometimes, complicated resampling ratios mean that the blocks don't
							 | 
						||
| 
								 | 
							
								 always have the same time.
							 | 
						||
| 
								 | 
							
								 In thoses cases, it is often necessary to buffer a bit of audio using a
							 | 
						||
| 
								 | 
							
								 ring buffer.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Formats and standards
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								standards
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Formats-and-standards"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex can encode speech in both narrowband and wideband and provides different
							 | 
						||
| 
								 | 
							
								 bit-rates.
							 | 
						||
| 
								 | 
							
								 However, not all features need to be supported by a certain implementation
							 | 
						||
| 
								 | 
							
								 or device.
							 | 
						||
| 
								 | 
							
								 In order to be called 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Speex compatible
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (whatever that means), an implementation must implement at least a basic
							 | 
						||
| 
								 | 
							
								 set of features.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								At the minimum, all narrowband modes of operation MUST be supported at the
							 | 
						||
| 
								 | 
							
								 decoder.
							 | 
						||
| 
								 | 
							
								 This includes the decoding of a wideband bit-stream by the narrowband decoder
							 | 
						||
| 
								 | 
							
								\begin_inset Foot
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								The wideband bit-stream contains an embedded narrowband bit-stream which
							 | 
						||
| 
								 | 
							
								 can be decoded alone
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 If present, a wideband decoder MUST be able to decode a narrowband stream,
							 | 
						||
| 
								 | 
							
								 and MAY either be able to decode all wideband modes or be able to decode
							 | 
						||
| 
								 | 
							
								 the embedded narrowband part of all modes (which includes ignoring the
							 | 
						||
| 
								 | 
							
								 high-band bits).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For encoders, at least one narrowband or wideband mode MUST be supported.
							 | 
						||
| 
								 | 
							
								 The main reason why all encoding modes do not have to be supported is that
							 | 
						||
| 
								 | 
							
								 some platforms may not be able to handle the complexity of encoding in
							 | 
						||
| 
								 | 
							
								 some modes.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								RTP
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								RTP
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 Payload Format 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The RTP payload draft is included in appendix 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:IETF-draft"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and the latest version is available at 
							 | 
						||
| 
								 | 
							
								\begin_inset Flex URL
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								http://www.speex.org/drafts/latest
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 This draft has been sent (2003/02/26) to the Internet Engineering Task
							 | 
						||
| 
								 | 
							
								 Force (IETF) and will be discussed at the March 18th meeting in San Francisco.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								MIME Type
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For now, you should use the MIME type audio/x-speex for Speex-in-Ogg.
							 | 
						||
| 
								 | 
							
								 We will apply for type 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								audio/speex
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 in the near future.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Ogg
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Ogg
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 file format
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex bit-streams can be stored in Ogg files.
							 | 
						||
| 
								 | 
							
								 In this case, the first packet of the Ogg file contains the Speex header
							 | 
						||
| 
								 | 
							
								 described in table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:ogg_speex_header"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 All integer fields in the headers are stored as little-endian.
							 | 
						||
| 
								 | 
							
								 The 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								speex_string
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 field must contain the 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								Speex
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset space ~
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (with 3 trailing spaces), which identifies the bit-stream.
							 | 
						||
| 
								 | 
							
								 The next field, 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								speex_version
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 contains the version of Speex that encoded the file.
							 | 
						||
| 
								 | 
							
								 For now, refer to speex_header.[ch] for more info.
							 | 
						||
| 
								 | 
							
								 The 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								beginning of stream
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								b_o_s
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								) flag is set to 1 for the header.
							 | 
						||
| 
								 | 
							
								 The header packet has 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								packetno=0
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								granulepos=0
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The second packet contains the Speex comment header.
							 | 
						||
| 
								 | 
							
								 The format used is the Vorbis comment format described here: http://www.xiph.org/
							 | 
						||
| 
								 | 
							
								ogg/vorbis/doc/v-comment.html .
							 | 
						||
| 
								 | 
							
								 This packet has 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								packetno=1
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								granulepos=0
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The third and subsequent packets each contain one or more (number found
							 | 
						||
| 
								 | 
							
								 in header) Speex frames.
							 | 
						||
| 
								 | 
							
								 These are identified with 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								packetno
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 starting from 2 and the 
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								granulepos
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								 is the number of the last sample encoded in that packet.
							 | 
						||
| 
								 | 
							
								 The last of these packets has the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								end of stream
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 (
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								e_o_s
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								) flag is set to 1.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float table
							 | 
						||
| 
								 | 
							
								placement htbp
							 | 
						||
| 
								 | 
							
								wide true
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="16" columns="3">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Field
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Type
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Size
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								speex_string
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								char[]
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								speex_version
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								char[]
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								20
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								speex_version_id
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								header_size
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								mode
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								mode_bitstream_version
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								nb_channels
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								bitrate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame_size
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								vbr
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frames_per_packet
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								extra_headers
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Ogg/Speex header packet
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:ogg_speex_header"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								clearpage
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Introduction to CELP Coding
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								CELP
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Introduction-to-CELP"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Quote
							 | 
						||
| 
								 | 
							
								\align center
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								Do not meddle in the affairs of poles, for they are subtle and quick to
							 | 
						||
| 
								 | 
							
								 leave the unit circle.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex is based on CELP, which stands for Code Excited Linear Prediction.
							 | 
						||
| 
								 | 
							
								 This section attempts to introduce the principles behind CELP, so if you
							 | 
						||
| 
								 | 
							
								 are already familiar with CELP, you can safely skip to section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Speex-narrowband-mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The CELP technique is based on three ideas:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Enumerate
							 | 
						||
| 
								 | 
							
								The use of a linear prediction (LP) model to model the vocal tract
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Enumerate
							 | 
						||
| 
								 | 
							
								The use of (adaptive and fixed) codebook entries as input (excitation) of
							 | 
						||
| 
								 | 
							
								 the LP model
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Enumerate
							 | 
						||
| 
								 | 
							
								The search performed in closed-loop in a 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								perceptually weighted domain
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This section describes the basic ideas behind CELP.
							 | 
						||
| 
								 | 
							
								 This is still a work in progress.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Source-Filter Model of Speech Prediction
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The source-filter model of speech production assumes that the vocal cords
							 | 
						||
| 
								 | 
							
								 are the source of spectrally flat sound (the excitation signal), and that
							 | 
						||
| 
								 | 
							
								 the vocal tract acts as a filter to spectrally shape the various sounds
							 | 
						||
| 
								 | 
							
								 of speech.
							 | 
						||
| 
								 | 
							
								 While still an approximation, the model is widely used in speech coding
							 | 
						||
| 
								 | 
							
								 because of its simplicity.Its use is also the reason why most speech codecs
							 | 
						||
| 
								 | 
							
								 (Speex included) perform badly on music signals.
							 | 
						||
| 
								 | 
							
								 The different phonemes can be distinguished by their excitation (source)
							 | 
						||
| 
								 | 
							
								 and spectral shape (filter).
							 | 
						||
| 
								 | 
							
								 Voiced sounds (e.g.
							 | 
						||
| 
								 | 
							
								 vowels) have an excitation signal that is periodic and that can be approximated
							 | 
						||
| 
								 | 
							
								 by an impulse train in the time domain or by regularly-spaced harmonics
							 | 
						||
| 
								 | 
							
								 in the frequency domain.
							 | 
						||
| 
								 | 
							
								 On the other hand, fricatives (such as the "s", "sh" and "f" sounds) have
							 | 
						||
| 
								 | 
							
								 an excitation signal that is similar to white Gaussian noise.
							 | 
						||
| 
								 | 
							
								 So called voice fricatives (such as "z" and "v") have excitation signal
							 | 
						||
| 
								 | 
							
								 composed of an harmonic part and a noisy part.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The source-filter model is usually tied with the use of Linear prediction.
							 | 
						||
| 
								 | 
							
								 The CELP model is based on source-filter model, as can be seen from the
							 | 
						||
| 
								 | 
							
								 CELP decoder illustrated in Figure 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "fig:The-CELP-model"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float figure
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Graphics
							 | 
						||
| 
								 | 
							
									filename celp_decoder.eps
							 | 
						||
| 
								 | 
							
									width 45page%
							 | 
						||
| 
								 | 
							
									keepAspectRatio
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								The CELP model of speech synthesis (decoder)
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "fig:The-CELP-model"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Linear Prediction Coefficients (LPC)
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								linear prediction
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Linear prediction is at the base of many speech coding techniques, including
							 | 
						||
| 
								 | 
							
								 CELP.
							 | 
						||
| 
								 | 
							
								 The idea behind it is to predict the signal 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $x[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 using a linear combination of its past samples:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								y[n]=\sum_{i=1}^{N}a_{i}x[n-i]\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $y[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the linear prediction of 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $x[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The prediction error is thus given by:
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								e[n]=x[n]-y[n]=x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The goal of the LPC analysis is to find the best prediction coefficients
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $a_{i}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 which minimize the quadratic error function:
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								E=\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}\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								That can be done by making all derivatives 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\frac{\partial E}{\partial a_{i}}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 equal to zero:
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								\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\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For an order 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $N$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 filter, the filter coefficients 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $a_{i}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 are found by solving the system 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $N\times N$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 linear system 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\mathbf{Ra}=\mathbf{r}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, where
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								\mathbf{R}=\left[\begin{array}{cccc}
							 | 
						||
| 
								 | 
							
								R(0) & R(1) & \cdots & R(N-1)\\
							 | 
						||
| 
								 | 
							
								R(1) & R(0) & \cdots & R(N-2)\\
							 | 
						||
| 
								 | 
							
								\vdots & \vdots & \ddots & \vdots\\
							 | 
						||
| 
								 | 
							
								R(N-1) & R(N-2) & \cdots & R(0)\end{array}\right]\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								\mathbf{r}=\left[\begin{array}{c}
							 | 
						||
| 
								 | 
							
								R(1)\\
							 | 
						||
| 
								 | 
							
								R(2)\\
							 | 
						||
| 
								 | 
							
								\vdots\\
							 | 
						||
| 
								 | 
							
								R(N)\end{array}\right]\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								with 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $R(m)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, the auto-correlation
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								auto-correlation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 of the signal 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $x[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, computed as:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								R(m)=\sum_{i=0}^{N-1}x[i]x[i-m]\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Because 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\mathbf{R}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is Hermitian Toeplitz, the Levinson-Durbin
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Levinson-Durbin
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 algorithm can be used, making the solution to the problem 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\mathcal{O}\left(N^{2}\right)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 instead of 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\mathcal{O}\left(N^{3}\right)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 Also, it can be proven that all the roots of 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 are within the unit circle, which means that 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $1/A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is always stable.
							 | 
						||
| 
								 | 
							
								 This is in theory; in practice because of finite precision, there are two
							 | 
						||
| 
								 | 
							
								 commonly used techniques to make sure we have a stable filter.
							 | 
						||
| 
								 | 
							
								 First, we multiply 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $R(0)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 by a number slightly above one (such as 1.0001), which is equivalent to
							 | 
						||
| 
								 | 
							
								 adding noise to the signal.
							 | 
						||
| 
								 | 
							
								 Also, we can apply a window to the auto-correlation, which is equivalent
							 | 
						||
| 
								 | 
							
								 to filtering in the frequency domain, reducing sharp resonances.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Pitch Prediction
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								pitch
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								During voiced segments, the speech signal is periodic, so it is possible
							 | 
						||
| 
								 | 
							
								 to take advantage of that property by approximating the excitation signal
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $e[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 by a gain times the past of the excitation:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								e[n]\simeq p[n]=\beta e[n-T]\ ,\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $T$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the pitch period, 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\beta$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the pitch gain.
							 | 
						||
| 
								 | 
							
								 We call that long-term prediction since the excitation is predicted from
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $e[n-T]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 with 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $T\gg N$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Innovation Codebook
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The final excitation 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $e[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 will be the sum of the pitch prediction and an 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								innovation
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 signal 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $c[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 taken from a fixed codebook, hence the name 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								Code
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								 Excited Linear Prediction.
							 | 
						||
| 
								 | 
							
								 The final excitation is given by
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								e[n]=p[n]+c[n]=\beta e[n-T]+c[n]\ .\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The quantization of 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $c[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is where most of the bits in a CELP codec are allocated.
							 | 
						||
| 
								 | 
							
								 It represents the information that couldn't be obtained either from linear
							 | 
						||
| 
								 | 
							
								 prediction or pitch prediction.
							 | 
						||
| 
								 | 
							
								 In the 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								z
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								-domain we can represent the final signal 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $X(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 as
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								X(z)=\frac{C(z)}{A(z)\left(1-\beta z^{-T}\right)}\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Noise Weighting
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								error weighting
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								analysis-by-synthesis
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Most (if not all) modern audio codecs attempt to 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								shape
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 the noise so that it appears mostly in the frequency regions where the
							 | 
						||
| 
								 | 
							
								 ear cannot detect it.
							 | 
						||
| 
								 | 
							
								 For example, the ear is more tolerant to noise in parts of the spectrum
							 | 
						||
| 
								 | 
							
								 that are louder and 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								vice versa
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 In order to maximize speech quality, CELP codecs minimize the mean square
							 | 
						||
| 
								 | 
							
								 of the error (noise) in the perceptually weighted domain.
							 | 
						||
| 
								 | 
							
								 This means that a perceptual noise weighting filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is applied to the error signal in the encoder.
							 | 
						||
| 
								 | 
							
								 In most CELP codecs, 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is a pole-zero weighting filter derived from the linear prediction coefficients
							 | 
						||
| 
								 | 
							
								 (LPC), generally using bandwidth expansion.
							 | 
						||
| 
								 | 
							
								 Let the spectral envelope be represented by the synthesis filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $1/A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, CELP codecs typically derive the noise weighting filter as 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \begin{equation}
							 | 
						||
| 
								 | 
							
								W(z)=\frac{A(z/\gamma_{1})}{A(z/\gamma_{2})}\ ,\label{eq:gamma-weighting}\end{equation}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\gamma_{1}=0.9$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\gamma_{2}=0.6$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in the Speex reference implementation.
							 | 
						||
| 
								 | 
							
								 If a filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 has (complex) poles at 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $p_{i}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in the 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $z$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-plane, the filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $A(z/\gamma)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 will have its poles at 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $p'_{i}=\gamma p_{i}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, making it a flatter version of 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The weighting filter is applied to the error signal used to optimize the
							 | 
						||
| 
								 | 
							
								 codebook search through analysis-by-synthesis (AbS).
							 | 
						||
| 
								 | 
							
								 This results in a spectral shape of the noise that tends towards 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $1/W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 While the simplicity of the model has been an important reason for the
							 | 
						||
| 
								 | 
							
								 success of CELP, it remains that 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is a very rough approximation for the perceptually optimal noise weighting
							 | 
						||
| 
								 | 
							
								 function.
							 | 
						||
| 
								 | 
							
								 Fig.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:Standard-noise-shaping"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 illustrates the noise shaping that results from Eq.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "eq:gamma-weighting"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 Throughout this paper, we refer to 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 as the noise weighting filter and to 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $1/W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 as the noise shaping filter (or curve).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float figure
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Graphics
							 | 
						||
| 
								 | 
							
									filename ref_shaping.eps
							 | 
						||
| 
								 | 
							
									width 45page%
							 | 
						||
| 
								 | 
							
									keepAspectRatio
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Standard noise shaping in CELP.
							 | 
						||
| 
								 | 
							
								 Arbitrary y-axis offset.
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:Standard-noise-shaping"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Analysis-by-Synthesis
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								One of the main principles behind CELP is called Analysis-by-Synthesis (AbS),
							 | 
						||
| 
								 | 
							
								 meaning that the encoding (analysis) is performed by perceptually optimising
							 | 
						||
| 
								 | 
							
								 the decoded (synthesis) signal in a closed loop.
							 | 
						||
| 
								 | 
							
								 In theory, the best CELP stream would be produced by trying all possible
							 | 
						||
| 
								 | 
							
								 bit combinations and selecting the one that produces the best-sounding
							 | 
						||
| 
								 | 
							
								 decoded signal.
							 | 
						||
| 
								 | 
							
								 This is obviously not possible in practice for two reasons: the required
							 | 
						||
| 
								 | 
							
								 complexity is beyond any currently available hardware and the 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								best sounding
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 selection criterion implies a human listener.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In order to achieve real-time encoding using limited computing resources,
							 | 
						||
| 
								 | 
							
								 the CELP optimisation is broken down into smaller, more manageable, sequential
							 | 
						||
| 
								 | 
							
								 searches using the perceptual weighting function described earlier.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								The Speex Decoder Specification
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Narrowband decoder
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								<Insert decoder figure here>
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Narrowband modes
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								There are 7 different narrowband bit-rates defined for Speex, ranging from
							 | 
						||
| 
								 | 
							
								 250 bps to 24.6 kbps, although the modes below 5.9 kbps should not be used
							 | 
						||
| 
								 | 
							
								 for speech.
							 | 
						||
| 
								 | 
							
								 The bit-allocation for each mode is detailed in table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:bits-narrowband"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 Each frame starts with the mode ID encoded with 4 bits which allows a range
							 | 
						||
| 
								 | 
							
								 from 0 to 15, though only the first 7 values are used (the others are reserved).
							 | 
						||
| 
								 | 
							
								 The parameters are listed in the table in the order they are packed in
							 | 
						||
| 
								 | 
							
								 the bit-stream.
							 | 
						||
| 
								 | 
							
								 All frame-based parameters are packed before sub-frame parameters.
							 | 
						||
| 
								 | 
							
								 The parameters for a certain sub-frame are all packed before the following
							 | 
						||
| 
								 | 
							
								 sub-frame is packed.
							 | 
						||
| 
								 | 
							
								 The 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								OL
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in the parameter description means that the parameter is an open loop estimatio
							 | 
						||
| 
								 | 
							
								n based on the whole frame.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float table
							 | 
						||
| 
								 | 
							
								placement h
							 | 
						||
| 
								 | 
							
								wide true
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="12" columns="11">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Parameter
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Update rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								6
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Wideband bit
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Mode ID
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								LSP
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								18
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								18
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								18
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								18
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								30
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								30
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								30
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								18
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								OL pitch
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								OL pitch gain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								OL Exc gain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Fine pitch
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Pitch gain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Innovation gain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Innovation VQ
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								16
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								20
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								35
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								48
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								64
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								96
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Total
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								43
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								119
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								160
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								220
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								300
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								364
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								492
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								79
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Bit allocation for narrowband modes
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:bits-narrowband"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								LSP decoding
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Depending on the mode, LSP parameters are encoded using either 18 bits or
							 | 
						||
| 
								 | 
							
								 30 bits.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Interpolation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Safe margin
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Adaptive codebook
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For rates of 8 kbit/s and above, the pitch period is encoded for each subframe.
							 | 
						||
| 
								 | 
							
								 The real period is 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $T=p_{i}+17$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 where 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $p_{i}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is a value encoded with 7 bits and 17 corresponds to the minimum pitch.
							 | 
						||
| 
								 | 
							
								 The maximum period is 144.
							 | 
						||
| 
								 | 
							
								 At 5.95 kbit/s (mode 2), the pitch period is similarly encoded, but only
							 | 
						||
| 
								 | 
							
								 once for the frame.
							 | 
						||
| 
								 | 
							
								 Each sub-frame then has a 2-bit offset that is added to the pitch value
							 | 
						||
| 
								 | 
							
								 of the frame.
							 | 
						||
| 
								 | 
							
								 In that case, the pitch for each sub-frame is equal to 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $T-1+offset$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 For rates below 5.95 kbit/s, only the per-frame pitch is used and the pitch
							 | 
						||
| 
								 | 
							
								 is constant for all sub-frames.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Speex uses a 3-tap predictor for rates of 5.95 kbit/s and above.
							 | 
						||
| 
								 | 
							
								 The three gain values are obtained from a 5-bit or a 7-bit codebook, depending
							 | 
						||
| 
								 | 
							
								 on the mode.
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Innovation codebook
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Split codebook, size and entries depend on bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								a 5-bit gain is encoder on a per-frame basis
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Depending on the mode, higher resolution per sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								innovation sub-vectors concatenated, gain applied
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Perceptual enhancement
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Optional, implementation-defined.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Bit-stream definition
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This section defines the bit-stream that is transmitted on the wire.
							 | 
						||
| 
								 | 
							
								 One speex packet consist of 1 frame header and 4 sub-frames:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="1" columns="5">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Frame Header
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Subframe 1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Subframe2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Subframe 3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Subframe 4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The frame header is variable length, depending on decoding mode and submode.
							 | 
						||
| 
								 | 
							
								 The narrowband frame header is defined as follows:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="1" columns="6">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								wb bit
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								modeid
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								LSP
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								OL-pitch
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								OL-pitchgain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								OL ExcGain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								wb-bit: Wideband bit (1 bit) 0=narrowband, 1=wideband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								modeid: Mode identifier (4 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								LSP: Line Spectral Pairs (0, 18 or 30 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								OL-pitch: Open Loop Pitch (0 or 7 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								OL-pitchgain: Open Loop Pitch Gain (0 or 4 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								OL-ExcGain: Open Loop Excitation Gain (0 or 5 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								...
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Each subframe is defined as follows:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="1" columns="4">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								FinePitch
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								PitchGain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								InnovationGain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Innovation VQ
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								FinePitch: (0 or 7 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								PitchGain: (0, 5, or 7 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Innovation Gain: (0, 1, 3 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Innovation VQ: (0-96 bits)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								...
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Sample decoder
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This section contains some sample source code, showing how a basic Speex
							 | 
						||
| 
								 | 
							
								 decoder can be implemented.
							 | 
						||
| 
								 | 
							
								 The sample decoder is narrowband submode 3 only, and with no advanced features
							 | 
						||
| 
								 | 
							
								 like enhancement, vbr etc.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								...
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "nb_celp.c"
							 | 
						||
| 
								 | 
							
								lstparams "caption={Sample Decoder}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Subsection
							 | 
						||
| 
								 | 
							
								Lookup tables
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The Speex decoder includes a set of lookup tables and codebooks, which are
							 | 
						||
| 
								 | 
							
								 used to convert between values of different domains.
							 | 
						||
| 
								 | 
							
								 This includes:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Excitation 10x16 (3200 bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Excitation 10x32 (4000 bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Excitation 20x32 (2000 bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Excitation 5x256 (12800 bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Excitation 5x64 (9600 bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Excitation 8x128 (7000 bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Codebook for 3-tap pitch prediction gain (Normal and Low Bitrate)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								- Codebook for LSPs in narrowband CELP mode
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								...
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The exact lookup tables are included here for reference.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/exc_5_64_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/exc_5_256_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/exc_8_128_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/exc_10_16_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/exc_10_32_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/exc_20_32_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/gain_table.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/gain_table_lbr.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../libspeex/lsp_tables_nb.c"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Wideband embedded decoder
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								QMF filter.
							 | 
						||
| 
								 | 
							
								 Narrowband signal decoded using narrowband decoder
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For the high band, the decoder is similar to the narrowband decoder, with
							 | 
						||
| 
								 | 
							
								 the main difference being that there is no adaptive codebook.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Gain is per-subframe
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Speex narrowband mode
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Speex-narrowband-mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								narrowband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This section looks at how Speex works for narrowband (
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $8\:\mathrm{kHz}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 sampling rate) operation.
							 | 
						||
| 
								 | 
							
								 The frame size for this mode is 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $20\:\mathrm{ms}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, corresponding to 160 samples.
							 | 
						||
| 
								 | 
							
								 Each frame is also subdivided into 4 sub-frames of 40 samples each.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Also many design decisions were based on the original goals and assumptions:
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Minimizing the amount of information extracted from past frames (for robustness
							 | 
						||
| 
								 | 
							
								 to packet loss)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								Dynamically-selectable codebooks (LSP, pitch and innovation)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								sub-vector fixed (innovation) codebooks
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Whole-Frame Analysis
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								linear prediction
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In narrowband, Speex frames are 20 ms long (160 samples) and are subdivided
							 | 
						||
| 
								 | 
							
								 in 4 sub-frames of 5 ms each (40 samples).
							 | 
						||
| 
								 | 
							
								 For most narrowband bit-rates (8 kbps and above), the only parameters encoded
							 | 
						||
| 
								 | 
							
								 at the frame level are the Line Spectral Pairs (LSP) and a global excitation
							 | 
						||
| 
								 | 
							
								 gain 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $g_{frame}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, as shown in Fig.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:Frame-open-loop-analysis"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 All other parameters are encoded at the sub-frame level.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Linear prediction analysis is performed once per frame using an asymmetric
							 | 
						||
| 
								 | 
							
								 Hamming window centered on the fourth sub-frame.
							 | 
						||
| 
								 | 
							
								 Because linear prediction coefficients (LPC) are not robust to quantization,
							 | 
						||
| 
								 | 
							
								 they are first converted to line spectral pairs (LSP)
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								line spectral pair
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The LSP's are considered to be associated to the 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $4^{th}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 sub-frames and the LSP's associated to the first 3 sub-frames are linearly
							 | 
						||
| 
								 | 
							
								 interpolated using the current and previous LSP coefficients.
							 | 
						||
| 
								 | 
							
								 The LSP coefficients and converted back to the LPC filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\hat{A}(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The non-quantized interpolated filter is denoted 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and can be used for the weighting filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $W(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 because it does not need to be available to the decoder.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								To make Speex more robust to packet loss, no prediction is applied on the
							 | 
						||
| 
								 | 
							
								 LSP coefficients prior to quantization.
							 | 
						||
| 
								 | 
							
								 The LSPs are encoded using vector quantization (VQ) with 30 bits for higher
							 | 
						||
| 
								 | 
							
								 quality modes and 18 bits for lower quality.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float figure
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Graphics
							 | 
						||
| 
								 | 
							
									filename speex_analysis.eps
							 | 
						||
| 
								 | 
							
									width 35page%
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Frame open-loop analysis
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:Frame-open-loop-analysis"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Sub-Frame Analysis-by-Synthesis
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float figure
							 | 
						||
| 
								 | 
							
								wide false
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Graphics
							 | 
						||
| 
								 | 
							
									filename speex_abs.eps
							 | 
						||
| 
								 | 
							
									lyxscale 75
							 | 
						||
| 
								 | 
							
									width 40page%
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Analysis-by-synthesis closed-loop optimization on a sub-frame.
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:Sub-frame-AbS"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The analysis-by-synthesis (AbS) encoder loop is described in Fig.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:Sub-frame-AbS"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 There are three main aspects where Speex significantly differs from most
							 | 
						||
| 
								 | 
							
								 other CELP codecs.
							 | 
						||
| 
								 | 
							
								 First, while most recent CELP codecs make use of fractional pitch estimation
							 | 
						||
| 
								 | 
							
								 with a single gain, Speex uses an integer to encode the pitch period, but
							 | 
						||
| 
								 | 
							
								 uses a 3-tap predictor (3 gains).
							 | 
						||
| 
								 | 
							
								 The adaptive codebook contribution 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $e_{a}[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 can thus be expressed as:
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \begin{equation}
							 | 
						||
| 
								 | 
							
								e_{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}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $g_{0}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $g_{1}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $g_{2}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 are the jointly quantized pitch gains and 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $e[n]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is the codec excitation memory.
							 | 
						||
| 
								 | 
							
								 It is worth noting that when the pitch is smaller than the sub-frame size,
							 | 
						||
| 
								 | 
							
								 we repeat the excitation at a period 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $T$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 For example, when 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $n-T+1\geq0$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								, we use 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $n-2T+1$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 instead.
							 | 
						||
| 
								 | 
							
								 In most modes, the pitch period is encoded with 7 bits in the 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\left[17,144\right]$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 range and the 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $\beta_{i}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 coefficients are vector-quantized using 7 bits at higher bit-rates (15
							 | 
						||
| 
								 | 
							
								 kbps narrowband and above) and 5 bits at lower bit-rates (11 kbps narrowband
							 | 
						||
| 
								 | 
							
								 and below).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Many current CELP codecs use moving average (MA) prediction to encode the
							 | 
						||
| 
								 | 
							
								 fixed codebook gain.
							 | 
						||
| 
								 | 
							
								 This provides slightly better coding at the expense of introducing a dependency
							 | 
						||
| 
								 | 
							
								 on previously encoded frames.
							 | 
						||
| 
								 | 
							
								 A second difference is that Speex encodes the fixed codebook gain as the
							 | 
						||
| 
								 | 
							
								 product of the global excitation gain 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $g_{frame}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 with a sub-frame gain corrections 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $g_{subf}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 This increases robustness to packet loss by eliminating the inter-frame
							 | 
						||
| 
								 | 
							
								 dependency.
							 | 
						||
| 
								 | 
							
								 The sub-frame gain correction is encoded before the fixed codebook is searched
							 | 
						||
| 
								 | 
							
								 (not closed-loop optimized) and uses between 0 and 3 bits per sub-frame,
							 | 
						||
| 
								 | 
							
								 depending on the bit-rate.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The third difference is that Speex uses sub-vector quantization of the innovatio
							 | 
						||
| 
								 | 
							
								n (fixed codebook) signal instead of an algebraic codebook.
							 | 
						||
| 
								 | 
							
								 Each sub-frame is divided into sub-vectors of lengths ranging between 5
							 | 
						||
| 
								 | 
							
								 and 20 samples.
							 | 
						||
| 
								 | 
							
								 Each sub-vector is chosen from a bitrate-dependent codebook and all sub-vectors
							 | 
						||
| 
								 | 
							
								 are concatenated to form a sub-frame.
							 | 
						||
| 
								 | 
							
								 As an example, the 3.95 kbps mode uses a sub-vector size of 20 samples with
							 | 
						||
| 
								 | 
							
								 32 entries in the codebook (5 bits).
							 | 
						||
| 
								 | 
							
								 This means that the innovation is encoded with 10 bits per sub-frame, or
							 | 
						||
| 
								 | 
							
								 2000 bps.
							 | 
						||
| 
								 | 
							
								 On the other hand, the 18.2 kbps mode uses a sub-vector size of 5 samples
							 | 
						||
| 
								 | 
							
								 with 256 entries in the codebook (8 bits), so the innovation uses 64 bits
							 | 
						||
| 
								 | 
							
								 per sub-frame, or 12800 bps.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Bit-rates
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								So far, no MOS (Mean Opinion Score
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								mean opinion score
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								) subjective evaluation has been performed for Speex.
							 | 
						||
| 
								 | 
							
								 In order to give an idea of the quality achievable with it, table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:quality_vs_bps"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 presents my own subjective opinion on it.
							 | 
						||
| 
								 | 
							
								 It should be noted that different people will perceive the quality differently
							 | 
						||
| 
								 | 
							
								 and that the person that designed the codec often has a bias (one way or
							 | 
						||
| 
								 | 
							
								 another) when it comes to subjective evaluation.
							 | 
						||
| 
								 | 
							
								 Last thing, it should be noted that for most codecs (including Speex) encoding
							 | 
						||
| 
								 | 
							
								 quality sometimes varies depending on the input.
							 | 
						||
| 
								 | 
							
								 Note that the complexity is only approximate (within 0.5 mflops and using
							 | 
						||
| 
								 | 
							
								 the lowest complexity setting).
							 | 
						||
| 
								 | 
							
								 Decoding requires approximately 0.5 mflops
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								complexity
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in most modes (1 mflops with perceptual enhancement).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float table
							 | 
						||
| 
								 | 
							
								placement h
							 | 
						||
| 
								 | 
							
								wide true
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="17" columns="5">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Mode
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Quality
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Bit-rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								mflops
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								complexity
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Quality/description
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								250
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								No transmission (DTX)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2,150
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								6
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Vocoder (mostly for comfort noise)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5,950
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								9
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Very noticeable artifacts/noise, good intelligibility
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3-4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8,000
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Artifacts/noise sometimes noticeable
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5-6
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								11,000
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								14
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Artifacts usually noticeable only with headphones
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7-8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								15,000
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								11
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Need good headphones to tell the difference
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								6
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								9
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								18,200
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								17.5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Hard to tell the difference even with good headphones
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								24,600
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								14.5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Completely transparent for voice, good quality music
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3,950
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10.5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Very noticeable artifacts/noise, good intelligibility
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								9
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								11
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								reserved
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								13
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Application-defined, interpreted by callback or skipped
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								14
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Speex in-band signaling
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								15
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Terminator code
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Quality versus bit-rate
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:quality_vs_bps"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Perceptual enhancement
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								perceptual enhancement
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								This section was only valid for version 1.1.12 and earlier.
							 | 
						||
| 
								 | 
							
								 It does not apply to version 1.2-beta1 (and later), for which the new perceptual
							 | 
						||
| 
								 | 
							
								 enhancement is not yet documented.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This part of the codec only applies to the decoder and can even be changed
							 | 
						||
| 
								 | 
							
								 without affecting inter-operability.
							 | 
						||
| 
								 | 
							
								 For that reason, the implementation provided and described here should
							 | 
						||
| 
								 | 
							
								 only be considered as a reference implementation.
							 | 
						||
| 
								 | 
							
								 The enhancement system is divided into two parts.
							 | 
						||
| 
								 | 
							
								 First, the synthesis filter 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $S(z)=1/A(z)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 is replaced by an enhanced filter:
							 | 
						||
| 
								 | 
							
								\begin_inset Formula \[
							 | 
						||
| 
								 | 
							
								S'(z)=\frac{A\left(z/a_{2}\right)A\left(z/a_{3}\right)}{A\left(z\right)A\left(z/a_{1}\right)}\]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $a_{1}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 and 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $a_{2}$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 depend on the mode in use and 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $a_{3}=\frac{1}{r}\left(1-\frac{1-ra_{1}}{1-ra_{2}}\right)$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 with 
							 | 
						||
| 
								 | 
							
								\begin_inset Formula $r=.9$
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The second part of the enhancement consists of using a comb filter to enhance
							 | 
						||
| 
								 | 
							
								 the pitch in the excitation domain.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Speex wideband mode (sub-band CELP)
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								wideband
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Speex-wideband-mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For wideband, the Speex approach uses a 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								q
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								uadrature 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								m
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								irror 
							 | 
						||
| 
								 | 
							
								\emph on
							 | 
						||
| 
								 | 
							
								f
							 | 
						||
| 
								 | 
							
								\emph default
							 | 
						||
| 
								 | 
							
								ilter
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								quadrature mirror filter
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (QMF) to split the band in two.
							 | 
						||
| 
								 | 
							
								 The 16 kHz signal is thus divided into two 8 kHz signals, one representing
							 | 
						||
| 
								 | 
							
								 the low band (0-4 kHz), the other the high band (4-8 kHz).
							 | 
						||
| 
								 | 
							
								 The low band is encoded with the narrowband mode described in section 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "sec:Speex-narrowband-mode"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 in such a way that the resulting 
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes eld
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								embedded narrowband bit-stream
							 | 
						||
| 
								 | 
							
								\begin_inset Quotes erd
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 can also be decoded with the narrowband decoder.
							 | 
						||
| 
								 | 
							
								 Since the low band encoding has already been described, only the high band
							 | 
						||
| 
								 | 
							
								 encoding is described in this section.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Linear Prediction
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The linear prediction part used for the high-band is very similar to what
							 | 
						||
| 
								 | 
							
								 is done for narrowband.
							 | 
						||
| 
								 | 
							
								 The only difference is that we use only 12 bits to encode the high-band
							 | 
						||
| 
								 | 
							
								 LSP's using a multi-stage vector quantizer (MSVQ).
							 | 
						||
| 
								 | 
							
								 The first level quantizes the 10 coefficients with 6 bits and the error
							 | 
						||
| 
								 | 
							
								 is then quantized using 6 bits, too.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Pitch Prediction
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								That part is easy: there's no pitch prediction for the high-band.
							 | 
						||
| 
								 | 
							
								 There are two reasons for that.
							 | 
						||
| 
								 | 
							
								 First, there is usually little harmonic structure in this band (above 4
							 | 
						||
| 
								 | 
							
								 kHz).
							 | 
						||
| 
								 | 
							
								 Second, it would be very hard to implement since the QMF folds the 4-8
							 | 
						||
| 
								 | 
							
								 kHz band into 4-0 kHz (reversing the frequency axis), which means that
							 | 
						||
| 
								 | 
							
								 the location of the harmonics is no longer at multiples of the fundamental
							 | 
						||
| 
								 | 
							
								 (pitch).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Excitation Quantization
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The high-band excitation is coded in the same way as for narrowband.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								Bit allocation
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								For the wideband mode, the entire narrowband frame is packed before the
							 | 
						||
| 
								 | 
							
								 high-band is encoded.
							 | 
						||
| 
								 | 
							
								 The narrowband part of the bit-stream is as defined in table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:bits-narrowband"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 The high-band follows, as described in table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "cap:bits-wideband"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 For wideband, the mode ID is the same as the Speex quality setting and
							 | 
						||
| 
								 | 
							
								 is defined in table 
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset ref
							 | 
						||
| 
								 | 
							
								LatexCommand ref
							 | 
						||
| 
								 | 
							
								reference "tab:wideband-quality"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.
							 | 
						||
| 
								 | 
							
								 This also means that a wideband frame may be correctly decoded by a narrowband
							 | 
						||
| 
								 | 
							
								 decoder with the only caveat that if more than one frame is packed in the
							 | 
						||
| 
								 | 
							
								 same packet, the decoder will need to skip the high-band parts in order
							 | 
						||
| 
								 | 
							
								 to sync with the bit-stream.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float table
							 | 
						||
| 
								 | 
							
								placement h
							 | 
						||
| 
								 | 
							
								wide true
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="7" columns="7">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Parameter
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Update rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Wideband bit
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Mode ID
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								LSP
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Excitation gain
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Excitation VQ
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								sub-frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								20
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								40
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								80
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Total
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								frame
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								36
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								112
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								192
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								352
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Bit allocation for high-band in wideband mode
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "cap:bits-wideband"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Float table
							 | 
						||
| 
								 | 
							
								placement h
							 | 
						||
| 
								 | 
							
								wide true
							 | 
						||
| 
								 | 
							
								sideways false
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								begin{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Tabular
							 | 
						||
| 
								 | 
							
								<lyxtabular version="3" rows="12" columns="3">
							 | 
						||
| 
								 | 
							
								<features>
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<column alignment="center" valignment="top" width="0pt">
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Mode/Quality
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Bit-rate
							 | 
						||
| 
								 | 
							
								\begin_inset Index
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								bit-rate
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 (bps)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Quality/description
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								0
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3,950
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Barely intelligible (mostly for comfort noise)
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								1
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5,750
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Very noticeable artifacts/noise, poor intelligibility
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7,750
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Very noticeable artifacts/noise, good intelligibility
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								3
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								9,800
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Artifacts/noise sometimes annoying
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								4
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								12,800
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Artifacts/noise usually noticeable
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								5
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								16,800
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Artifacts/noise sometimes noticeable
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								6
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								20,600
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Need good headphones to tell the difference
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								7
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								23,800
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Need good headphones to tell the difference
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								8
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								27,800
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Hard to tell the difference even with good headphones
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								9
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								34,200
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Hard to tell the difference even with good headphones
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								<row>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								10
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								42,200
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
							 | 
						||
| 
								 | 
							
								\begin_inset Text
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Completely transparent for voice, good quality music
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								</cell>
							 | 
						||
| 
								 | 
							
								</row>
							 | 
						||
| 
								 | 
							
								</lyxtabular>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								end{center}
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								\begin_inset Caption
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								Quality versus bit-rate for the wideband encoder
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "tab:wideband-quality"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status open
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								clearpage
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset ERT
							 | 
						||
| 
								 | 
							
								status collapsed
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Plain Layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\backslash
							 | 
						||
| 
								 | 
							
								clearpage
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								\start_of_appendix
							 | 
						||
| 
								 | 
							
								Sample code
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Sample-code"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This section shows sample code for encoding and decoding speech using the
							 | 
						||
| 
								 | 
							
								 Speex API.
							 | 
						||
| 
								 | 
							
								 The commands can be used to encode and decode a file by calling:
							 | 
						||
| 
								 | 
							
								\family typewriter
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Newline newline
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% sampleenc in_file.sw | sampledec out_file.sw
							 | 
						||
| 
								 | 
							
								\family default
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_inset Newline newline
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where both files are raw (no header) files encoded at 16 bits per sample
							 | 
						||
| 
								 | 
							
								 (in the machine natural endianness).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								sampleenc.c
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								sampleenc takes a raw 16 bits/sample file, encodes it and outputs a Speex
							 | 
						||
| 
								 | 
							
								 stream to stdout.
							 | 
						||
| 
								 | 
							
								 Note that the packing used is 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								not
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 compatible with that of speexenc/speexdec.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "sampleenc.c"
							 | 
						||
| 
								 | 
							
								lstparams "caption={Source code for sampleenc},label={sampleenc-source-code},numbers=left,numberstyle={\\footnotesize}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section
							 | 
						||
| 
								 | 
							
								sampledec.c
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								sampledec reads a Speex stream from stdin, decodes it and outputs it to
							 | 
						||
| 
								 | 
							
								 a raw 16 bits/sample file.
							 | 
						||
| 
								 | 
							
								 Note that the packing used is 
							 | 
						||
| 
								 | 
							
								\series bold
							 | 
						||
| 
								 | 
							
								not
							 | 
						||
| 
								 | 
							
								\series default
							 | 
						||
| 
								 | 
							
								 compatible with that of speexenc/speexdec.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "sampledec.c"
							 | 
						||
| 
								 | 
							
								lstparams "caption={Source code for sampledec},label={sampledec-source-code},numbers=left,numberstyle={\\footnotesize}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Jitter Buffer for Speex
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand lstinputlisting
							 | 
						||
| 
								 | 
							
								filename "../speexclient/speex_jitter_buffer.c"
							 | 
						||
| 
								 | 
							
								lstparams "caption={Example of using the jitter buffer for Speex packets},label={example-speex-jitter},numbers=left,numberstyle={\\footnotesize}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								IETF RTP Profile
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:IETF-draft"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand verbatiminput
							 | 
						||
| 
								 | 
							
								filename "draft-ietf-avt-rtp-speex-05-tmp.txt"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								Speex License
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset label
							 | 
						||
| 
								 | 
							
								LatexCommand label
							 | 
						||
| 
								 | 
							
								name "sec:Speex-License"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset include
							 | 
						||
| 
								 | 
							
								LatexCommand verbatiminput
							 | 
						||
| 
								 | 
							
								filename "../COPYING"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset Newpage newpage
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Chapter
							 | 
						||
| 
								 | 
							
								GNU Free Documentation License
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Version 1.1, March 2000
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Copyright (C) 2000 Free Software Foundation, Inc.
							 | 
						||
| 
								 | 
							
								 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted
							 | 
						||
| 
								 | 
							
								 to copy and distribute verbatim copies of this license document, but changing
							 | 
						||
| 
								 | 
							
								 it is not allowed.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								0.
							 | 
						||
| 
								 | 
							
								 PREAMBLE
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The purpose of this License is to make a manual, textbook, or other written
							 | 
						||
| 
								 | 
							
								 document "free" in the sense of freedom: to assure everyone the effective
							 | 
						||
| 
								 | 
							
								 freedom to copy and redistribute it, with or without modifying it, either
							 | 
						||
| 
								 | 
							
								 commercially or noncommercially.
							 | 
						||
| 
								 | 
							
								 Secondarily, this License preserves for the author and publisher a way
							 | 
						||
| 
								 | 
							
								 to get credit for their work, while not being considered responsible for
							 | 
						||
| 
								 | 
							
								 modifications made by others.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This License is a kind of "copyleft", which means that derivative works
							 | 
						||
| 
								 | 
							
								 of the document must themselves be free in the same sense.
							 | 
						||
| 
								 | 
							
								 It complements the GNU General Public License, which is a copyleft license
							 | 
						||
| 
								 | 
							
								 designed for free software.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								We have designed this License in order to use it for manuals for free software,
							 | 
						||
| 
								 | 
							
								 because free software needs free documentation: a free program should come
							 | 
						||
| 
								 | 
							
								 with manuals providing the same freedoms that the software does.
							 | 
						||
| 
								 | 
							
								 But this License is not limited to software manuals; it can be used for
							 | 
						||
| 
								 | 
							
								 any textual work, regardless of subject matter or whether it is published
							 | 
						||
| 
								 | 
							
								 as a printed book.
							 | 
						||
| 
								 | 
							
								 We recommend this License principally for works whose purpose is instruction
							 | 
						||
| 
								 | 
							
								 or reference.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								1.
							 | 
						||
| 
								 | 
							
								 APPLICABILITY AND DEFINITIONS
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								This License applies to any manual or other work that contains a notice
							 | 
						||
| 
								 | 
							
								 placed by the copyright holder saying it can be distributed under the terms
							 | 
						||
| 
								 | 
							
								 of this License.
							 | 
						||
| 
								 | 
							
								 The "Document", below, refers to any such manual or work.
							 | 
						||
| 
								 | 
							
								 Any member of the public is a licensee, and is addressed as "you".
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								A "Modified Version" of the Document means any work containing the Document
							 | 
						||
| 
								 | 
							
								 or a portion of it, either copied verbatim, or with modifications and/or
							 | 
						||
| 
								 | 
							
								 translated into another language.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								A "Secondary Section" is a named appendix or a front-matter section of the
							 | 
						||
| 
								 | 
							
								 Document that deals exclusively with the relationship of the publishers
							 | 
						||
| 
								 | 
							
								 or authors of the Document to the Document's overall subject (or to related
							 | 
						||
| 
								 | 
							
								 matters) and contains nothing that could fall directly within that overall
							 | 
						||
| 
								 | 
							
								 subject.
							 | 
						||
| 
								 | 
							
								 (For example, if the Document is in part a textbook of mathematics, a Secondary
							 | 
						||
| 
								 | 
							
								 Section may not explain any mathematics.) The relationship could be a matter
							 | 
						||
| 
								 | 
							
								 of historical connection with the subject or with related matters, or of
							 | 
						||
| 
								 | 
							
								 legal, commercial, philosophical, ethical or political position regarding
							 | 
						||
| 
								 | 
							
								 them.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The "Invariant Sections" are certain Secondary Sections whose titles are
							 | 
						||
| 
								 | 
							
								 designated, as being those of Invariant Sections, in the notice that says
							 | 
						||
| 
								 | 
							
								 that the Document is released under this License.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The "Cover Texts" are certain short passages of text that are listed, as
							 | 
						||
| 
								 | 
							
								 Front-Cover Texts or Back-Cover Texts, in the notice that says that the
							 | 
						||
| 
								 | 
							
								 Document is released under this License.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								A "Transparent" copy of the Document means a machine-readable copy, represented
							 | 
						||
| 
								 | 
							
								 in a format whose specification is available to the general public, whose
							 | 
						||
| 
								 | 
							
								 contents can be viewed and edited directly and straightforwardly with generic
							 | 
						||
| 
								 | 
							
								 text editors or (for images composed of pixels) generic paint programs
							 | 
						||
| 
								 | 
							
								 or (for drawings) some widely available drawing editor, and that is suitable
							 | 
						||
| 
								 | 
							
								 for input to text formatters or for automatic translation to a variety
							 | 
						||
| 
								 | 
							
								 of formats suitable for input to text formatters.
							 | 
						||
| 
								 | 
							
								 A copy made in an otherwise Transparent file format whose markup has been
							 | 
						||
| 
								 | 
							
								 designed to thwart or discourage subsequent modification by readers is
							 | 
						||
| 
								 | 
							
								 not Transparent.
							 | 
						||
| 
								 | 
							
								 A copy that is not "Transparent" is called "Opaque".
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Examples of suitable formats for Transparent copies include plain ASCII
							 | 
						||
| 
								 | 
							
								 without markup, Texinfo input format, LaTeX input format, SGML or XML using
							 | 
						||
| 
								 | 
							
								 a publicly available DTD, and standard-conforming simple HTML designed
							 | 
						||
| 
								 | 
							
								 for human modification.
							 | 
						||
| 
								 | 
							
								 Opaque formats include PostScript, PDF, proprietary formats that can be
							 | 
						||
| 
								 | 
							
								 read and edited only by proprietary word processors, SGML or XML for which
							 | 
						||
| 
								 | 
							
								 the DTD and/or processing tools are not generally available, and the machine-ge
							 | 
						||
| 
								 | 
							
								nerated HTML produced by some word processors for output purposes only.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The "Title Page" means, for a printed book, the title page itself, plus
							 | 
						||
| 
								 | 
							
								 such following pages as are needed to hold, legibly, the material this
							 | 
						||
| 
								 | 
							
								 License requires to appear in the title page.
							 | 
						||
| 
								 | 
							
								 For works in formats which do not have any title page as such, "Title Page"
							 | 
						||
| 
								 | 
							
								 means the text near the most prominent appearance of the work's title,
							 | 
						||
| 
								 | 
							
								 preceding the beginning of the body of the text.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								2.
							 | 
						||
| 
								 | 
							
								 VERBATIM COPYING
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may copy and distribute the Document in any medium, either commercially
							 | 
						||
| 
								 | 
							
								 or noncommercially, provided that this License, the copyright notices,
							 | 
						||
| 
								 | 
							
								 and the license notice saying this License applies to the Document are
							 | 
						||
| 
								 | 
							
								 reproduced in all copies, and that you add no other conditions whatsoever
							 | 
						||
| 
								 | 
							
								 to those of this License.
							 | 
						||
| 
								 | 
							
								 You may not use technical measures to obstruct or control the reading or
							 | 
						||
| 
								 | 
							
								 further copying of the copies you make or distribute.
							 | 
						||
| 
								 | 
							
								 However, you may accept compensation in exchange for copies.
							 | 
						||
| 
								 | 
							
								 If you distribute a large enough number of copies you must also follow
							 | 
						||
| 
								 | 
							
								 the conditions in section 3.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may also lend copies, under the same conditions stated above, and you
							 | 
						||
| 
								 | 
							
								 may publicly display copies.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								3.
							 | 
						||
| 
								 | 
							
								 COPYING IN QUANTITY
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If you publish printed copies of the Document numbering more than 100, and
							 | 
						||
| 
								 | 
							
								 the Document's license notice requires Cover Texts, you must enclose the
							 | 
						||
| 
								 | 
							
								 copies in covers that carry, clearly and legibly, all these Cover Texts:
							 | 
						||
| 
								 | 
							
								 Front-Cover Texts on the front cover, and Back-Cover Texts on the back
							 | 
						||
| 
								 | 
							
								 cover.
							 | 
						||
| 
								 | 
							
								 Both covers must also clearly and legibly identify you as the publisher
							 | 
						||
| 
								 | 
							
								 of these copies.
							 | 
						||
| 
								 | 
							
								 The front cover must present the full title with all words of the title
							 | 
						||
| 
								 | 
							
								 equally prominent and visible.
							 | 
						||
| 
								 | 
							
								 You may add other material on the covers in addition.
							 | 
						||
| 
								 | 
							
								 Copying with changes limited to the covers, as long as they preserve the
							 | 
						||
| 
								 | 
							
								 title of the Document and satisfy these conditions, can be treated as verbatim
							 | 
						||
| 
								 | 
							
								 copying in other respects.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If the required texts for either cover are too voluminous to fit legibly,
							 | 
						||
| 
								 | 
							
								 you should put the first ones listed (as many as fit reasonably) on the
							 | 
						||
| 
								 | 
							
								 actual cover, and continue the rest onto adjacent pages.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If you publish or distribute Opaque copies of the Document numbering more
							 | 
						||
| 
								 | 
							
								 than 100, you must either include a machine-readable Transparent copy along
							 | 
						||
| 
								 | 
							
								 with each Opaque copy, or state in or with each Opaque copy a publicly-accessib
							 | 
						||
| 
								 | 
							
								le computer-network location containing a complete Transparent copy of the
							 | 
						||
| 
								 | 
							
								 Document, free of added material, which the general network-using public
							 | 
						||
| 
								 | 
							
								 has access to download anonymously at no charge using public-standard network
							 | 
						||
| 
								 | 
							
								 protocols.
							 | 
						||
| 
								 | 
							
								 If you use the latter option, you must take reasonably prudent steps, when
							 | 
						||
| 
								 | 
							
								 you begin distribution of Opaque copies in quantity, to ensure that this
							 | 
						||
| 
								 | 
							
								 Transparent copy will remain thus accessible at the stated location until
							 | 
						||
| 
								 | 
							
								 at least one year after the last time you distribute an Opaque copy (directly
							 | 
						||
| 
								 | 
							
								 or through your agents or retailers) of that edition to the public.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								It is requested, but not required, that you contact the authors of the Document
							 | 
						||
| 
								 | 
							
								 well before redistributing any large number of copies, to give them a chance
							 | 
						||
| 
								 | 
							
								 to provide you with an updated version of the Document.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								4.
							 | 
						||
| 
								 | 
							
								 MODIFICATIONS
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may copy and distribute a Modified Version of the Document under the
							 | 
						||
| 
								 | 
							
								 conditions of sections 2 and 3 above, provided that you release the Modified
							 | 
						||
| 
								 | 
							
								 Version under precisely this License, with the Modified Version filling
							 | 
						||
| 
								 | 
							
								 the role of the Document, thus licensing distribution and modification
							 | 
						||
| 
								 | 
							
								 of the Modified Version to whoever possesses a copy of it.
							 | 
						||
| 
								 | 
							
								 In addition, you must do these things in the Modified Version: 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								A.
							 | 
						||
| 
								 | 
							
								 Use in the Title Page (and on the covers, if any) a title distinct from
							 | 
						||
| 
								 | 
							
								 that of the Document, and from those of previous versions (which should,
							 | 
						||
| 
								 | 
							
								 if there were any, be listed in the History section of the Document).
							 | 
						||
| 
								 | 
							
								 You may use the same title as a previous version if the original publisher
							 | 
						||
| 
								 | 
							
								 of that version gives permission.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								B.
							 | 
						||
| 
								 | 
							
								 List on the Title Page, as authors, one or more persons or entities responsible
							 | 
						||
| 
								 | 
							
								 for authorship of the modifications in the Modified Version, together with
							 | 
						||
| 
								 | 
							
								 at least five of the principal authors of the Document (all of its principal
							 | 
						||
| 
								 | 
							
								 authors, if it has less than five).
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								C.
							 | 
						||
| 
								 | 
							
								 State on the Title page the name of the publisher of the Modified Version,
							 | 
						||
| 
								 | 
							
								 as the publisher.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								D.
							 | 
						||
| 
								 | 
							
								 Preserve all the copyright notices of the Document.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								E.
							 | 
						||
| 
								 | 
							
								 Add an appropriate copyright notice for your modifications adjacent to
							 | 
						||
| 
								 | 
							
								 the other copyright notices.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								F.
							 | 
						||
| 
								 | 
							
								 Include, immediately after the copyright notices, a license notice giving
							 | 
						||
| 
								 | 
							
								 the public permission to use the Modified Version under the terms of this
							 | 
						||
| 
								 | 
							
								 License, in the form shown in the Addendum below.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								G.
							 | 
						||
| 
								 | 
							
								 Preserve in that license notice the full lists of Invariant Sections and
							 | 
						||
| 
								 | 
							
								 required Cover Texts given in the Document's license notice.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								H.
							 | 
						||
| 
								 | 
							
								 Include an unaltered copy of this License.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								I.
							 | 
						||
| 
								 | 
							
								 Preserve the section entitled "History", and its title, and add to it an
							 | 
						||
| 
								 | 
							
								 item stating at least the title, year, new authors, and publisher of the
							 | 
						||
| 
								 | 
							
								 Modified Version as given on the Title Page.
							 | 
						||
| 
								 | 
							
								 If there is no section entitled "History" in the Document, create one stating
							 | 
						||
| 
								 | 
							
								 the title, year, authors, and publisher of the Document as given on its
							 | 
						||
| 
								 | 
							
								 Title Page, then add an item describing the Modified Version as stated
							 | 
						||
| 
								 | 
							
								 in the previous sentence.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								J.
							 | 
						||
| 
								 | 
							
								 Preserve the network location, if any, given in the Document for public
							 | 
						||
| 
								 | 
							
								 access to a Transparent copy of the Document, and likewise the network
							 | 
						||
| 
								 | 
							
								 locations given in the Document for previous versions it was based on.
							 | 
						||
| 
								 | 
							
								 These may be placed in the "History" section.
							 | 
						||
| 
								 | 
							
								 You may omit a network location for a work that was published at least
							 | 
						||
| 
								 | 
							
								 four years before the Document itself, or if the original publisher of
							 | 
						||
| 
								 | 
							
								 the version it refers to gives permission.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								K.
							 | 
						||
| 
								 | 
							
								 In any section entitled "Acknowledgements" or "Dedications", preserve the
							 | 
						||
| 
								 | 
							
								 section's title, and preserve in the section all the substance and tone
							 | 
						||
| 
								 | 
							
								 of each of the contributor acknowledgements and/or dedications given therein.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								L.
							 | 
						||
| 
								 | 
							
								 Preserve all the Invariant Sections of the Document, unaltered in their
							 | 
						||
| 
								 | 
							
								 text and in their titles.
							 | 
						||
| 
								 | 
							
								 Section numbers or the equivalent are not considered part of the section
							 | 
						||
| 
								 | 
							
								 titles.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								M.
							 | 
						||
| 
								 | 
							
								 Delete any section entitled "Endorsements".
							 | 
						||
| 
								 | 
							
								 Such a section may not be included in the Modified Version.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Itemize
							 | 
						||
| 
								 | 
							
								N.
							 | 
						||
| 
								 | 
							
								 Do not retitle any existing section as "Endorsements" or to conflict in
							 | 
						||
| 
								 | 
							
								 title with any Invariant Section.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If the Modified Version includes new front-matter sections or appendices
							 | 
						||
| 
								 | 
							
								 that qualify as Secondary Sections and contain no material copied from
							 | 
						||
| 
								 | 
							
								 the Document, you may at your option designate some or all of these sections
							 | 
						||
| 
								 | 
							
								 as invariant.
							 | 
						||
| 
								 | 
							
								 To do this, add their titles to the list of Invariant Sections in the Modified
							 | 
						||
| 
								 | 
							
								 Version's license notice.
							 | 
						||
| 
								 | 
							
								 These titles must be distinct from any other section titles.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may add a section entitled "Endorsements", provided it contains nothing
							 | 
						||
| 
								 | 
							
								 but endorsements of your Modified Version by various parties--for example,
							 | 
						||
| 
								 | 
							
								 statements of peer review or that the text has been approved by an organization
							 | 
						||
| 
								 | 
							
								 as the authoritative definition of a standard.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may add a passage of up to five words as a Front-Cover Text, and a passage
							 | 
						||
| 
								 | 
							
								 of up to 25 words as a Back-Cover Text, to the end of the list of Cover
							 | 
						||
| 
								 | 
							
								 Texts in the Modified Version.
							 | 
						||
| 
								 | 
							
								 Only one passage of Front-Cover Text and one of Back-Cover Text may be
							 | 
						||
| 
								 | 
							
								 added by (or through arrangements made by) any one entity.
							 | 
						||
| 
								 | 
							
								 If the Document already includes a cover text for the same cover, previously
							 | 
						||
| 
								 | 
							
								 added by you or by arrangement made by the same entity you are acting on
							 | 
						||
| 
								 | 
							
								 behalf of, you may not add another; but you may replace the old one, on
							 | 
						||
| 
								 | 
							
								 explicit permission from the previous publisher that added the old one.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The author(s) and publisher(s) of the Document do not by this License give
							 | 
						||
| 
								 | 
							
								 permission to use their names for publicity for or to assert or imply endorseme
							 | 
						||
| 
								 | 
							
								nt of any Modified Version.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								5.
							 | 
						||
| 
								 | 
							
								 COMBINING DOCUMENTS
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may combine the Document with other documents released under this License,
							 | 
						||
| 
								 | 
							
								 under the terms defined in section 4 above for modified versions, provided
							 | 
						||
| 
								 | 
							
								 that you include in the combination all of the Invariant Sections of all
							 | 
						||
| 
								 | 
							
								 of the original documents, unmodified, and list them all as Invariant Sections
							 | 
						||
| 
								 | 
							
								 of your combined work in its license notice.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The combined work need only contain one copy of this License, and multiple
							 | 
						||
| 
								 | 
							
								 identical Invariant Sections may be replaced with a single copy.
							 | 
						||
| 
								 | 
							
								 If there are multiple Invariant Sections with the same name but different
							 | 
						||
| 
								 | 
							
								 contents, make the title of each such section unique by adding at the end
							 | 
						||
| 
								 | 
							
								 of it, in parentheses, the name of the original author or publisher of
							 | 
						||
| 
								 | 
							
								 that section if known, or else a unique number.
							 | 
						||
| 
								 | 
							
								 Make the same adjustment to the section titles in the list of Invariant
							 | 
						||
| 
								 | 
							
								 Sections in the license notice of the combined work.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								In the combination, you must combine any sections entitled "History" in
							 | 
						||
| 
								 | 
							
								 the various original documents, forming one section entitled "History";
							 | 
						||
| 
								 | 
							
								 likewise combine any sections entitled "Acknowledgements", and any sections
							 | 
						||
| 
								 | 
							
								 entitled "Dedications".
							 | 
						||
| 
								 | 
							
								 You must delete all sections entitled "Endorsements."
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								6.
							 | 
						||
| 
								 | 
							
								 COLLECTIONS OF DOCUMENTS
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may make a collection consisting of the Document and other documents
							 | 
						||
| 
								 | 
							
								 released under this License, and replace the individual copies of this
							 | 
						||
| 
								 | 
							
								 License in the various documents with a single copy that is included in
							 | 
						||
| 
								 | 
							
								 the collection, provided that you follow the rules of this License for
							 | 
						||
| 
								 | 
							
								 verbatim copying of each of the documents in all other respects.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may extract a single document from such a collection, and distribute
							 | 
						||
| 
								 | 
							
								 it individually under this License, provided you insert a copy of this
							 | 
						||
| 
								 | 
							
								 License into the extracted document, and follow this License in all other
							 | 
						||
| 
								 | 
							
								 respects regarding verbatim copying of that document.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								7.
							 | 
						||
| 
								 | 
							
								 AGGREGATION WITH INDEPENDENT WORKS
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								A compilation of the Document or its derivatives with other separate and
							 | 
						||
| 
								 | 
							
								 independent documents or works, in or on a volume of a storage or distribution
							 | 
						||
| 
								 | 
							
								 medium, does not as a whole count as a Modified Version of the Document,
							 | 
						||
| 
								 | 
							
								 provided no compilation copyright is claimed for the compilation.
							 | 
						||
| 
								 | 
							
								 Such a compilation is called an "aggregate", and this License does not
							 | 
						||
| 
								 | 
							
								 apply to the other self-contained works thus compiled with the Document,
							 | 
						||
| 
								 | 
							
								 on account of their being thus compiled, if they are not themselves derivative
							 | 
						||
| 
								 | 
							
								 works of the Document.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								If the Cover Text requirement of section 3 is applicable to these copies
							 | 
						||
| 
								 | 
							
								 of the Document, then if the Document is less than one quarter of the entire
							 | 
						||
| 
								 | 
							
								 aggregate, the Document's Cover Texts may be placed on covers that surround
							 | 
						||
| 
								 | 
							
								 only the Document within the aggregate.
							 | 
						||
| 
								 | 
							
								 Otherwise they must appear on covers around the whole aggregate.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								8.
							 | 
						||
| 
								 | 
							
								 TRANSLATION
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Translation is considered a kind of modification, so you may distribute
							 | 
						||
| 
								 | 
							
								 translations of the Document under the terms of section 4.
							 | 
						||
| 
								 | 
							
								 Replacing Invariant Sections with translations requires special permission
							 | 
						||
| 
								 | 
							
								 from their copyright holders, but you may include translations of some
							 | 
						||
| 
								 | 
							
								 or all Invariant Sections in addition to the original versions of these
							 | 
						||
| 
								 | 
							
								 Invariant Sections.
							 | 
						||
| 
								 | 
							
								 You may include a translation of this License provided that you also include
							 | 
						||
| 
								 | 
							
								 the original English version of this License.
							 | 
						||
| 
								 | 
							
								 In case of a disagreement between the translation and the original English
							 | 
						||
| 
								 | 
							
								 version of this License, the original English version will prevail.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								9.
							 | 
						||
| 
								 | 
							
								 TERMINATION
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								You may not copy, modify, sublicense, or distribute the Document except
							 | 
						||
| 
								 | 
							
								 as expressly provided for under this License.
							 | 
						||
| 
								 | 
							
								 Any other attempt to copy, modify, sublicense or distribute the Document
							 | 
						||
| 
								 | 
							
								 is void, and will automatically terminate your rights under this License.
							 | 
						||
| 
								 | 
							
								 However, parties who have received copies, or rights, from you under this
							 | 
						||
| 
								 | 
							
								 License will not have their licenses terminated so long as such parties
							 | 
						||
| 
								 | 
							
								 remain in full compliance.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Section*
							 | 
						||
| 
								 | 
							
								10.
							 | 
						||
| 
								 | 
							
								 FUTURE REVISIONS OF THIS LICENSE
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								The Free Software Foundation may publish new, revised versions of the GNU
							 | 
						||
| 
								 | 
							
								 Free Documentation License from time to time.
							 | 
						||
| 
								 | 
							
								 Such new versions will be similar in spirit to the present version, but
							 | 
						||
| 
								 | 
							
								 may differ in detail to address new problems or concerns.
							 | 
						||
| 
								 | 
							
								 See http://www.gnu.org/copyleft/.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								Each version of the License is given a distinguishing version number.
							 | 
						||
| 
								 | 
							
								 If the Document specifies that a particular numbered version of this License
							 | 
						||
| 
								 | 
							
								 "or any later version" applies to it, you have the option of following
							 | 
						||
| 
								 | 
							
								 the terms and conditions either of that specified version or of any later
							 | 
						||
| 
								 | 
							
								 version that has been published (not as a draft) by the Free Software Foundatio
							 | 
						||
| 
								 | 
							
								n.
							 | 
						||
| 
								 | 
							
								 If the Document does not specify a version number of this License, you
							 | 
						||
| 
								 | 
							
								 may choose any version ever published (not as a draft) by the Free Software
							 | 
						||
| 
								 | 
							
								 Foundation.
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\begin_layout Standard
							 | 
						||
| 
								 | 
							
								\begin_inset CommandInset index_print
							 | 
						||
| 
								 | 
							
								LatexCommand printindex
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_inset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_layout
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\end_body
							 | 
						||
| 
								 | 
							
								\end_document
							 |