Implemented SPEEX_RESET_STATE and reduced memory allocation size.
[speexdsp.git] / doc / manual.lyx
1 #LyX 1.2 created this file. For more info see http://www.lyx.org/
2 \lyxformat 220
3 \textclass article
4 \language english
5 \inputencoding auto
6 \fontscheme default
7 \graphics default
8 \float_placement h
9 \paperfontsize default
10 \spacing single 
11 \papersize Default
12 \paperpackage a4
13 \use_geometry 0
14 \use_amsmath 0
15 \use_natbib 0
16 \use_numerical_citations 0
17 \paperorientation portrait
18 \secnumdepth 3
19 \tocdepth 3
20 \paragraph_separation indent
21 \defskip medskip
22 \quotes_language english
23 \quotes_times 2
24 \papercolumns 1
25 \papersides 1
26 \paperpagestyle headings
27
28 \layout Title
29
30 The Speex Codec Manual
31 \newline 
32 (draft for Speex 1.0beta4)
33 \layout Author
34
35 Jean-Marc Valin
36 \layout Standard
37 \pagebreak_top 
38 Copyright (c) 2002 Jean-Marc Valin.
39 \layout Standard
40
41 Permission is granted to copy, distribute and/or modify this document under
42  the terms of the GNU Free Documentation License, Version 1.1 or any later
43  version published by the Free Software Foundation; with no Invariant Section,
44  with no Front-Cover Texts, and with no Back-Cover.
45  A copy of the license is included in the section entitled "GNU Free Documentati
46 on License".
47  
48 \layout Section*
49
50 Disclaimer
51 \layout Standard
52
53 This document is meant to provide useful information on the Speex codec
54  but there is absolutely no warranty regarding usefulness or correctness
55  of the information provided.
56  Also, some techniques used in Speex are said to be 
57 \begin_inset Quotes eld
58 \end_inset 
59
60 similar
61 \begin_inset Quotes erd
62 \end_inset 
63
64  to techniques used in known codecs.
65  This should not be understood as an acknowledgment that Speex is using
66  any patented algorithm used in these codecs, but merely that comprehension
67  of Speex can be facilitated by thinking that the principles of operation
68  are the same or similar.
69  Of course, there's also the obligatory 
70 \begin_inset Quotes eld
71 \end_inset 
72
73 all trademarks are property of their respective owner
74 \begin_inset Quotes erd
75 \end_inset 
76
77 .
78 \layout Standard
79 \pagebreak_top \pagebreak_bottom 
80
81 \begin_inset LatexCommand \tableofcontents{}
82
83 \end_inset 
84
85
86 \layout Standard
87 \pagebreak_bottom 
88
89 \begin_inset FloatList table
90
91 \end_inset 
92
93
94 \layout Section
95
96 Introduction to Speex
97 \layout Standard
98
99 The Speex project (
100 \family typewriter 
101 http://www.speex.org/
102 \family default 
103 ) has been started because there was a need for a speech codec that was
104  open-source and free from software patents.
105  These are essential conditions for being used by any open-source software.
106  There is already Vorbis that does general audio, but it is not really suitable
107  for speech.
108  Also, unlike many other speech codecs, Speex is not targeted at cell phones
109  (not many open-source cell phones anyway :-) ) but rather voice over IP
110  (VoIP) and file-based compression.
111  
112 \layout Standard
113
114 As design goals, we wanted to have a codec that would allowed both very
115  good quality speech and low bit-rate (unfortunately not at the same time!),
116  which led us to developing a codec with multiple bit-rates.
117  Of course very good quality also meant we had to do wideband (16 kHz sampling
118  rate) in addition to narrowband (telephone quality, 8 kHz sampling rate).
119 \layout Standard
120
121 Designing for VoIP instead of cell phone use means that Speex must be robust
122  to lost packets, but not to corrupted ones since packets either arrive
123  unaltered or don't arrive at all.
124  Also, the idea was to have a reasonnable complexity and memory requirement
125  without compromising too much on the efficiency of the codec.
126 \layout Standard
127
128 All this led us to the choice of CELP
129 \begin_inset LatexCommand \index{CELP}
130
131 \end_inset 
132
133  as the encoding technique to use for Speex.
134  One of the main reasons is that CELP has long proved that it could do the
135  job and scale well to both low bit-rates (think DoD CELP @ 4.8 kbps) and
136  high bit-rates (think G.728 @ 16 kbps).
137  
138 \layout Standard
139
140 The main characteristics can be summerized as follows:
141 \layout Itemize
142
143 Free software/open-source
144 \begin_inset LatexCommand \index{open-source}
145
146 \end_inset 
147
148 , patent
149 \begin_inset LatexCommand \index{patent}
150
151 \end_inset 
152
153  and royalty-free
154 \layout Itemize
155
156 Integration of wideband
157 \begin_inset LatexCommand \index{wideband}
158
159 \end_inset 
160
161  and narrowband
162 \begin_inset LatexCommand \index{narrowband}
163
164 \end_inset 
165
166  in the same bit-stream
167 \layout Itemize
168
169 Wide range of bit-rates available
170 \layout Itemize
171
172 Dynamic bit-rate switching and Variable Bit-Rate
173 \begin_inset LatexCommand \index{variable bit-rate}
174
175 \end_inset 
176
177  (VBR)
178 \layout Itemize
179
180 Voice Activity Detection
181 \begin_inset LatexCommand \index{voice activity detection}
182
183 \end_inset 
184
185  (VAD, integrated with VBR)
186 \layout Itemize
187
188 Variable complexity
189 \begin_inset LatexCommand \index{complexity}
190
191 \end_inset 
192
193
194 \layout Itemize
195
196 Ultra-wideband mode at 32 kHz (up to 48 kHz)
197 \layout Itemize
198
199 Intensity stereo encoding option
200 \layout Section
201 \pagebreak_top 
202 Introduction to CELP Coding
203 \begin_inset LatexCommand \index{CELP}
204
205 \end_inset 
206
207
208 \layout Standard
209
210 Speex is based on CELP, which stands for Code Excited Linear Prediction.
211  This section attempts to introduce the principles behind CELP, so if you
212  are already familiar with CELP, you can safely skip to section 
213 \begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
214
215 \end_inset 
216
217 .
218  The CELP technique is based on three ideas:
219 \layout Enumerate
220
221 The use of a linear prediction (LP) model to model the vocal tract
222 \layout Enumerate
223
224 The use of (adaptive and fixed) codebook entries as input (excitation) of
225  the LP model
226 \layout Enumerate
227
228 The search performed in closed-loop in a 
229 \begin_inset Quotes eld
230 \end_inset 
231
232 perceptually weighted domain
233 \begin_inset Quotes erd
234 \end_inset 
235
236
237 \layout Subsection
238
239 Linear Prediction (LPC)
240 \begin_inset LatexCommand \index{linear prediction}
241
242 \end_inset 
243
244
245 \layout Standard
246
247 Linear prediction is at the base of may speech coding techniques, including
248  CELP.
249  The idea behind it is to predict the signal 
250 \begin_inset Formula $x(n)$
251 \end_inset 
252
253  using a linear combination of its past samples:
254 \layout Standard
255
256
257 \begin_inset Formula \[
258 y[n]=\sum _{i=1}^{N}a_{i}x[n-i]\]
259
260 \end_inset 
261
262 where 
263 \begin_inset Formula $y[n]$
264 \end_inset 
265
266  is the linear prediction of 
267 \begin_inset Formula $x[n]$
268 \end_inset 
269
270 .
271  The prediction error is thus given by:
272 \begin_inset Formula \[
273 e[n]=x[n]-y[n]=x[n]-\sum _{i=1}^{N}a_{i}x[n-i]\]
274
275 \end_inset 
276
277
278 \layout Standard
279
280 The goal of the LPC analysis is to find the best prediction coefficients
281  
282 \begin_inset Formula $a_{i}$
283 \end_inset 
284
285  which minimize the quadratic error function:
286 \begin_inset Formula \[
287 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}\]
288
289 \end_inset 
290
291 That can be done by making all derivatives 
292 \begin_inset Formula $\frac{\partial E}{\partial a_{i}}$
293 \end_inset 
294
295  equal to zero:
296 \begin_inset Formula \[
297 \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\]
298
299 \end_inset 
300
301
302 \layout Standard
303
304 The 
305 \begin_inset Formula $a_{i}$
306 \end_inset 
307
308  filter coefficients are computed using the Levinson-Durbin
309 \begin_inset LatexCommand \index{Levinson-Durbin}
310
311 \end_inset 
312
313  algorithm, which starts from the auto-correlation
314 \begin_inset LatexCommand \index{auto-correlation}
315
316 \end_inset 
317
318  
319 \begin_inset Formula $R(m)$
320 \end_inset 
321
322  of the signal 
323 \begin_inset Formula $x[n]$
324 \end_inset 
325
326 .
327 \layout Standard
328
329
330 \begin_inset Formula \[
331 R(m)=\sum _{i=0}^{N-1}x[i]x[i-m]\]
332
333 \end_inset 
334
335
336 \layout Standard
337
338 For an order 
339 \begin_inset Formula $N$
340 \end_inset 
341
342  filter, we have:
343 \begin_inset Formula \[
344 \mathbf{R}=\left[\begin{array}{cccc}
345  R(0) & R(1) & \cdots  & R(N-1)\\
346  R(1) & R(0) & \cdots  & R(N-2)\\
347  \vdots  & \vdots  & \ddots  & \vdots \\
348  R(N-1) & R(N-2) & \cdots  & R(0)\end{array}
349 \right]\]
350
351 \end_inset 
352
353
354 \begin_inset Formula \[
355 \mathbf{r}=\left[\begin{array}{c}
356  R(1)\\
357  R(2)\\
358  \vdots \\
359  R(N)\end{array}
360 \right]\]
361
362 \end_inset 
363
364
365 \layout Standard
366
367 The filter coefficients 
368 \begin_inset Formula $a_{i}$
369 \end_inset 
370
371  are found by solving the system 
372 \begin_inset Formula $\mathbf{Ra}=\mathbf{r}$
373 \end_inset 
374
375 .
376  What the Levinson-Durbin algorithm does here is making the solution to
377  the problem 
378 \begin_inset Formula $\mathcal{O}\left(N^{2}\right)$
379 \end_inset 
380
381  instead of 
382 \begin_inset Formula $\mathcal{O}\left(N^{3}\right)$
383 \end_inset 
384
385  by exploiting the fact that matrix 
386 \begin_inset Formula $\mathbf{R}$
387 \end_inset 
388
389  is toeplitz hermitian.
390  Also, it can be proved that all the roots of 
391 \begin_inset Formula $A(z)$
392 \end_inset 
393
394  are withing the unit circle, which means that 
395 \begin_inset Formula $1/A(z)$
396 \end_inset 
397
398  is always stable.
399  This is in theory; in practice because of finite precision, there are two
400  commonly used techniques to make sure we have a stable filter.
401  First, we multiply 
402 \begin_inset Formula $R(0)$
403 \end_inset 
404
405  by a number slightly above one (such as 1.0001), which is equivalent to
406  adding noise to the signal.
407  Also, we can apply a window the the auto-correlation, which is equivalent
408  to filtering in the frequency domain, reducing sharp resonances.
409 \layout Standard
410
411 The linear prediction model represents each speech sample as linear combination
412  of past samples, plus an error signal called the excitation (or residual).
413 \begin_inset Formula \[
414 x[n]=\sum _{i=1}^{N}a_{i}x[n-i]+e[n]\]
415
416 \end_inset 
417
418
419 \layout Standard
420
421 In the 
422 \emph on 
423 z
424 \emph default 
425 -domain, this can be expressed as
426 \layout Standard
427
428
429 \begin_inset Formula \[
430 x(z)=\frac{1}{A(z)}\: e(z)\]
431
432 \end_inset 
433
434
435 \layout Standard
436
437 where 
438 \begin_inset Formula $A(z)$
439 \end_inset 
440
441  is defined as
442 \layout Standard
443
444
445 \begin_inset Formula \[
446 A(z)=1-\sum _{i=1}^{N}a_{i}z^{-i}\]
447
448 \end_inset 
449
450
451 \layout Standard
452
453 We usually refer to 
454 \begin_inset Formula $A(z)$
455 \end_inset 
456
457  as the analysis filter and 
458 \begin_inset Formula $1/A(z)$
459 \end_inset 
460
461  as the synthesis filter.
462  The whole process is called short-term prediction as it predicts the signal
463  
464 \begin_inset Formula $x[n]$
465 \end_inset 
466
467  using a prediction using only the 
468 \begin_inset Formula $N$
469 \end_inset 
470
471  past samples, where 
472 \begin_inset Formula $N$
473 \end_inset 
474
475  is usually around 10.
476 \layout Standard
477
478 Because LPC coefficients have very little robustness to quantization, they
479  are converted to Line Spectral Pair
480 \begin_inset LatexCommand \index{line spectral pair}
481
482 \end_inset 
483
484  (LSP) coefficients which have a much better behaviour with quantization,
485  one of them being that it's easy to keep the filter stable.
486  
487 \layout Subsection
488
489 Pitch Prediction
490 \begin_inset LatexCommand \index{pitch}
491
492 \end_inset 
493
494
495 \layout Standard
496
497 During voiced segments, the speech signal is periodic, so it is possible
498  to take advantage of that property by approximating the excitation signal
499  
500 \begin_inset Formula $e[n]$
501 \end_inset 
502
503  by a gain times the past of the excitation:
504 \layout Standard
505
506
507 \begin_inset Formula \[
508 e[n]\simeq p[n]=\beta e[n-T]\]
509
510 \end_inset 
511
512
513 \layout Standard
514
515 where 
516 \begin_inset Formula $T$
517 \end_inset 
518
519  is the pitch period, 
520 \begin_inset Formula $\beta $
521 \end_inset 
522
523  is the pitch gain and 
524 \begin_inset Formula $c(n)$
525 \end_inset 
526
527  is taken from the 
528 \emph on 
529 innovation codebook
530 \emph default 
531 .
532  We call that long-term prediction since the excitation is predicted from
533  
534 \begin_inset Formula $e[n-T]$
535 \end_inset 
536
537  with 
538 \begin_inset Formula $T\gg N$
539 \end_inset 
540
541 .
542 \layout Subsection
543
544 Innovation Codebook
545 \layout Standard
546
547 The final excitation 
548 \begin_inset Formula $e[n]$
549 \end_inset 
550
551  will be the sum of the pitch prediction and an 
552 \emph on 
553 innovation
554 \emph default 
555  signal 
556 \begin_inset Formula $c[n]$
557 \end_inset 
558
559  taken from a fixed codebook.
560 \layout Standard
561
562
563 \begin_inset Formula \[
564 e[n]=p[n]+c[n]=\beta e[n-T]+c[n]\]
565
566 \end_inset 
567
568 This is where most of the bits in a CELP codec are allocated.
569  It represents the information that couldn't be obtained either from linear
570  prediction or pitch prediction.
571  In the 
572 \emph on 
573 z
574 \emph default 
575 -domain we can represent the final signal 
576 \begin_inset Formula $X(z)$
577 \end_inset 
578
579  as 
580 \begin_inset Formula \[
581 X(z)=\frac{C(z)}{A(z)\left(1-\beta z^{-T}\right)}\]
582
583 \end_inset 
584
585
586 \layout Subsection
587
588 Analysis-by-Synthesis and Error Weighting
589 \begin_inset LatexCommand \index{error weighting}
590
591 \end_inset 
592
593
594 \begin_inset LatexCommand \index{analysis-by-synthesis}
595
596 \end_inset 
597
598
599 \layout Standard
600
601 Most (if not all) modern audio codecs attempt to 
602 \begin_inset Quotes eld
603 \end_inset 
604
605 shape
606 \begin_inset Quotes erd
607 \end_inset 
608
609  the noise so that it appears mostly in the frequency regions where the
610  ear cannot detect it.
611  For example, the ear is more tolerant to noise in parts of the spectrum
612  that are louder and 
613 \emph on 
614 vice versa
615 \emph default 
616 .
617  That's why instead of minimizing the simple quadratic error
618 \begin_inset Formula \[
619 E=\sum _{n}\left(x[n]-\overline{x}[n]\right)^{2}\]
620
621 \end_inset 
622
623 where 
624 \begin_inset Formula $\overline{x}[n]$
625 \end_inset 
626
627  is the encoder signal, we minimize the error for the perceptually weighted
628  signal
629 \begin_inset Formula \[
630 X_{w}(z)=W(z)X(z)\]
631
632 \end_inset 
633
634 where 
635 \begin_inset Formula $W(z)$
636 \end_inset 
637
638  is the weighting filter, usually of the form
639 \layout Standard
640
641
642 \begin_inset Formula \begin{equation}
643 W(z)=\frac{A\left(\frac{z}{\gamma _{1}}\right)}{A\left(\frac{z}{\gamma _{2}}\right)}\label{eq:weighting_filter}\end{equation}
644
645 \end_inset 
646
647
648 \layout Standard
649
650 with control parameters 
651 \begin_inset Formula $\gamma _{1}>\gamma _{2}$
652 \end_inset 
653
654 .
655  If the noise is white in the perceptually weighted domain, then in the
656  signal domain its spectral shape will be of the form
657 \begin_inset Formula \[
658 A_{noise}(z)=\frac{1}{W(z)}=\frac{A\left(\frac{z}{\gamma _{2}}\right)}{A\left(\frac{z}{\gamma _{1}}\right)}\]
659
660 \end_inset 
661
662
663 \layout Standard
664
665 If a filter 
666 \begin_inset Formula $A(z)$
667 \end_inset 
668
669  has (complex) poles at 
670 \begin_inset Formula $p_{i}$
671 \end_inset 
672
673  in the 
674 \begin_inset Formula $z$
675 \end_inset 
676
677 -plane, the filter 
678 \begin_inset Formula $A(z/\gamma )$
679 \end_inset 
680
681  filter will have its poles at 
682 \begin_inset Formula $p_{i}^{'}=\gamma p_{i}$
683 \end_inset 
684
685 , making it a flatter version of 
686 \begin_inset Formula $A(z)$
687 \end_inset 
688
689 .
690 \layout Section
691 \pagebreak_top 
692 Speex narrowband mode
693 \begin_inset LatexCommand \label{sec:Speex-narrowband-mode}
694
695 \end_inset 
696
697
698 \begin_inset LatexCommand \index{narrowband}
699
700 \end_inset 
701
702
703 \layout Standard
704
705 This section looks at how Speex works for narrowband (
706 \begin_inset Formula $8\: \mathrm{kHz}$
707 \end_inset 
708
709  sampling rate) operation.
710  The frame size for this mode is 
711 \begin_inset Formula $20\: \mathrm{ms}$
712 \end_inset 
713
714 , corresponding to 160 samples.
715  Each frame is also subdivided into 4 sub-frames of 40 samples each.
716 \layout Standard
717
718 Also many design decisions were based on the original goals and assumptions:
719 \layout Itemize
720
721 Minimizing the amount of information extracted from past frames (for robustness
722  to packet loss)
723 \layout Itemize
724
725 Dynamically-selectable codebooks (LSP, pitch and innovation)
726 \layout Itemize
727
728 G.728-like fixed codebooks (without backward-adaptive gains because of patent
729  issues)
730 \layout Subsection
731
732 LPC Analysis
733 \begin_inset LatexCommand \index{linear prediction}
734
735 \end_inset 
736
737
738 \layout Standard
739
740 An LPC analysis is first performed on a (asymetric Hamming) window that
741  spans all the current frame and half a frame in advance.
742  The LPC coefficients are then converted to Line Spectral Pair
743 \begin_inset LatexCommand \index{line spectral pair}
744
745 \end_inset 
746
747  (LSP), a representation that is more robust to quantization.
748  The LSP's are considered to be associated to the 
749 \begin_inset Formula $4^{th}$
750 \end_inset 
751
752  sub-frames and the LSP's associated to the first 3 sub-frames are linearly
753  interpolated using the current and previous LSP's.
754 \layout Standard
755
756 The LSP's are encoded using 30 bits for higher quality modes and 18 bits
757  for lower quality, through the use of a multi-stage split-vector quantizer.
758  For the lower quality modes, the 10 coefficients are first quantized with
759  6 bits and the error is then divided in two 5-coefficient sub-vectors.
760  Each of them is quantized with 6 bits, for a total of 18 bits.
761  For the higher quality modes, the remaining error on both sub-vectors is
762  further quantized with 6 bits each, for a total of 30 bits.
763 \layout Standard
764
765 The perceptual weighting filter 
766 \begin_inset Formula $W(z)$
767 \end_inset 
768
769  used by Speex is derived from the LPC filter 
770 \begin_inset Formula $A(z)$
771 \end_inset 
772
773  and corresponds to the one described by eq.
774  
775 \begin_inset LatexCommand \ref{eq:weighting_filter}
776
777 \end_inset 
778
779  with 
780 \begin_inset Formula $\gamma _{1}=0.9$
781 \end_inset 
782
783  and 
784 \begin_inset Formula $\gamma _{2}=0.6$
785 \end_inset 
786
787 .
788  We can use the unquantized 
789 \begin_inset Formula $A(z)$
790 \end_inset 
791
792  filter since the weighting filter is only used in the encoder.
793 \layout Subsection
794
795 Pitch Prediction (adaptive codebook)
796 \begin_inset LatexCommand \index{pitch}
797
798 \end_inset 
799
800
801 \layout Standard
802
803 Speex uses a 3-tap prediction for pitch.
804  That is, the pitch prediction signal 
805 \begin_inset Formula $p[n]$
806 \end_inset 
807
808  is obtained by the past of the excitation by:
809 \begin_inset Formula \[
810 p[n]=\beta _{0}e[n-T-1]+\beta _{1}e[n-T]+\beta _{2}e[n-T+1]\]
811
812 \end_inset 
813
814
815 \layout Standard
816
817 where 
818 \begin_inset Formula $T$
819 \end_inset 
820
821  is the pitch period and the 
822 \begin_inset Formula $\beta _{i}$
823 \end_inset 
824
825  are the prediction (filter) taps.
826  It is worth noting that when the pitch is smaller than the sub-frame size,
827  we repeat the excitation at a period 
828 \begin_inset Formula $T$
829 \end_inset 
830
831 .
832  For example, when 
833 \begin_inset Formula $n-T+1$
834 \end_inset 
835
836 , we use 
837 \begin_inset Formula $n-2T+1$
838 \end_inset 
839
840  instead.
841  The period and quantized gains are determined in closed loop.
842  In most modes, the pitch period is encoded with 7 bits in the 
843 \begin_inset Formula $\left[17,144\right]$
844 \end_inset 
845
846  range and the 
847 \begin_inset Formula $\beta _{i}$
848 \end_inset 
849
850  coefficients are vector-quantized using 7 bits (15 kbps narrowband and
851  above) at higher bit-rates and 5 bits at lower bit-rates (11 kbps narrowband
852  and below).
853 \layout Subsection
854
855 Innovation Codebook
856 \layout Standard
857
858 In Speex, the innovation signal is quantized using shape-only vector quantizatio
859 n (VQ).
860  That means that the codebooks that are used represent both the shape and
861  the gain at the same time.
862  This save many bits that would otherwise be allocated for a separate gain
863  at the price of a slight increase in complexity.
864  Except for the absence of (backward-adaptive) gain, the technique used
865  in Speex is similar to G.728 (LD-CELP).
866  However since we do not have a low-delay constraint, the search can be
867  made more 
868 \begin_inset Quotes eld
869 \end_inset 
870
871 global
872 \begin_inset Quotes erd
873 \end_inset 
874
875  and make use of the whole information available for a sub-frame.
876 \layout Subsection
877
878 Bit allocation
879 \layout Standard
880
881 There are 7 different narrowband bit-rates defined for Speex, ranging from
882  200 bps to 18.15 kbps, although the modes below 5.9 kbps should not be used
883  for speech.
884  The bit-allocation for each mode is detailed in table 
885 \begin_inset LatexCommand \ref{cap:bits-narrowband}
886
887 \end_inset 
888
889 .
890  Each frame starts with the mode ID encoded with 4 bits which allows a range
891  from 0 to 15, though only the first 7 values are used (the others are reserved).
892  The parameters are listed in the table in the order they are packed in
893  the bit-stream.
894  All frame-based parameters are packed before sub-frame parameters.
895  The parameters for a certain sub-frame are all packed before the following
896  sub-frame is packed.
897  Note that the 
898 \begin_inset Quotes eld
899 \end_inset 
900
901 OL
902 \begin_inset Quotes erd
903 \end_inset 
904
905  in the parameter description means the the parameter is an open loop estimation
906  based on the whole frame.
907 \layout Standard
908
909
910 \begin_inset Float table
911 placement h
912 wide true
913 collapsed false
914
915 \layout Standard
916
917
918 \begin_inset  Tabular
919 <lyxtabular version="3" rows="12" columns="10">
920 <features>
921 <column alignment="center" valignment="top" leftline="true" width="0pt">
922 <column alignment="center" valignment="top" leftline="true" width="0pt">
923 <column alignment="center" valignment="top" leftline="true" width="0pt">
924 <column alignment="center" valignment="top" leftline="true" width="0pt">
925 <column alignment="center" valignment="top" leftline="true" width="0pt">
926 <column alignment="center" valignment="top" leftline="true" width="0pt">
927 <column alignment="center" valignment="top" leftline="true" width="0pt">
928 <column alignment="center" valignment="top" leftline="true" width="0pt">
929 <column alignment="center" valignment="top" leftline="true" width="0pt">
930 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
931 <row topline="true" bottomline="true">
932 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
933 \begin_inset Text
934
935 \layout Standard
936
937 Parameter
938 \end_inset 
939 </cell>
940 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
941 \begin_inset Text
942
943 \layout Standard
944
945 Update rate
946 \end_inset 
947 </cell>
948 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
949 \begin_inset Text
950
951 \layout Standard
952
953 0
954 \end_inset 
955 </cell>
956 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
957 \begin_inset Text
958
959 \layout Standard
960
961 1
962 \end_inset 
963 </cell>
964 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
965 \begin_inset Text
966
967 \layout Standard
968
969 2
970 \end_inset 
971 </cell>
972 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
973 \begin_inset Text
974
975 \layout Standard
976
977 3
978 \end_inset 
979 </cell>
980 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
981 \begin_inset Text
982
983 \layout Standard
984
985 4
986 \end_inset 
987 </cell>
988 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
989 \begin_inset Text
990
991 \layout Standard
992
993 5
994 \end_inset 
995 </cell>
996 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
997 \begin_inset Text
998
999 \layout Standard
1000
1001 6
1002 \end_inset 
1003 </cell>
1004 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1005 \begin_inset Text
1006
1007 \layout Standard
1008
1009 7
1010 \end_inset 
1011 </cell>
1012 </row>
1013 <row topline="true">
1014 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1015 \begin_inset Text
1016
1017 \layout Standard
1018
1019 Wideband bit
1020 \end_inset 
1021 </cell>
1022 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1023 \begin_inset Text
1024
1025 \layout Standard
1026
1027 frame
1028 \end_inset 
1029 </cell>
1030 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1031 \begin_inset Text
1032
1033 \layout Standard
1034
1035 1
1036 \end_inset 
1037 </cell>
1038 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1039 \begin_inset Text
1040
1041 \layout Standard
1042
1043 1
1044 \end_inset 
1045 </cell>
1046 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1047 \begin_inset Text
1048
1049 \layout Standard
1050
1051 1
1052 \end_inset 
1053 </cell>
1054 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1055 \begin_inset Text
1056
1057 \layout Standard
1058
1059 1
1060 \end_inset 
1061 </cell>
1062 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1063 \begin_inset Text
1064
1065 \layout Standard
1066
1067 1
1068 \end_inset 
1069 </cell>
1070 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1071 \begin_inset Text
1072
1073 \layout Standard
1074
1075 1
1076 \end_inset 
1077 </cell>
1078 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1079 \begin_inset Text
1080
1081 \layout Standard
1082
1083 1
1084 \end_inset 
1085 </cell>
1086 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1087 \begin_inset Text
1088
1089 \layout Standard
1090
1091 1
1092 \end_inset 
1093 </cell>
1094 </row>
1095 <row topline="true">
1096 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1097 \begin_inset Text
1098
1099 \layout Standard
1100
1101 Mode ID
1102 \end_inset 
1103 </cell>
1104 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1105 \begin_inset Text
1106
1107 \layout Standard
1108
1109 frame
1110 \end_inset 
1111 </cell>
1112 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1113 \begin_inset Text
1114
1115 \layout Standard
1116
1117 4
1118 \end_inset 
1119 </cell>
1120 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1121 \begin_inset Text
1122
1123 \layout Standard
1124
1125 4
1126 \end_inset 
1127 </cell>
1128 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1129 \begin_inset Text
1130
1131 \layout Standard
1132
1133 4
1134 \end_inset 
1135 </cell>
1136 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1137 \begin_inset Text
1138
1139 \layout Standard
1140
1141 4
1142 \end_inset 
1143 </cell>
1144 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1145 \begin_inset Text
1146
1147 \layout Standard
1148
1149 4
1150 \end_inset 
1151 </cell>
1152 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1153 \begin_inset Text
1154
1155 \layout Standard
1156
1157 4
1158 \end_inset 
1159 </cell>
1160 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1161 \begin_inset Text
1162
1163 \layout Standard
1164
1165 4
1166 \end_inset 
1167 </cell>
1168 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1169 \begin_inset Text
1170
1171 \layout Standard
1172
1173 4
1174 \end_inset 
1175 </cell>
1176 </row>
1177 <row topline="true">
1178 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1179 \begin_inset Text
1180
1181 \layout Standard
1182
1183 LSP
1184 \end_inset 
1185 </cell>
1186 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1187 \begin_inset Text
1188
1189 \layout Standard
1190
1191 frame
1192 \end_inset 
1193 </cell>
1194 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1195 \begin_inset Text
1196
1197 \layout Standard
1198
1199 0
1200 \end_inset 
1201 </cell>
1202 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1203 \begin_inset Text
1204
1205 \layout Standard
1206
1207 18
1208 \end_inset 
1209 </cell>
1210 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1211 \begin_inset Text
1212
1213 \layout Standard
1214
1215 18
1216 \end_inset 
1217 </cell>
1218 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1219 \begin_inset Text
1220
1221 \layout Standard
1222
1223 18
1224 \end_inset 
1225 </cell>
1226 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1227 \begin_inset Text
1228
1229 \layout Standard
1230
1231 18
1232 \end_inset 
1233 </cell>
1234 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1235 \begin_inset Text
1236
1237 \layout Standard
1238
1239 30
1240 \end_inset 
1241 </cell>
1242 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1243 \begin_inset Text
1244
1245 \layout Standard
1246
1247 30
1248 \end_inset 
1249 </cell>
1250 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1251 \begin_inset Text
1252
1253 \layout Standard
1254
1255 30
1256 \end_inset 
1257 </cell>
1258 </row>
1259 <row topline="true">
1260 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1261 \begin_inset Text
1262
1263 \layout Standard
1264
1265 OL pitch
1266 \end_inset 
1267 </cell>
1268 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1269 \begin_inset Text
1270
1271 \layout Standard
1272
1273 frame
1274 \end_inset 
1275 </cell>
1276 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1277 \begin_inset Text
1278
1279 \layout Standard
1280
1281 0
1282 \end_inset 
1283 </cell>
1284 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1285 \begin_inset Text
1286
1287 \layout Standard
1288
1289 7
1290 \end_inset 
1291 </cell>
1292 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1293 \begin_inset Text
1294
1295 \layout Standard
1296
1297 7
1298 \end_inset 
1299 </cell>
1300 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1301 \begin_inset Text
1302
1303 \layout Standard
1304
1305 0
1306 \end_inset 
1307 </cell>
1308 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1309 \begin_inset Text
1310
1311 \layout Standard
1312
1313 0
1314 \end_inset 
1315 </cell>
1316 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1317 \begin_inset Text
1318
1319 \layout Standard
1320
1321 0
1322 \end_inset 
1323 </cell>
1324 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1325 \begin_inset Text
1326
1327 \layout Standard
1328
1329 0
1330 \end_inset 
1331 </cell>
1332 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1333 \begin_inset Text
1334
1335 \layout Standard
1336
1337 0
1338 \end_inset 
1339 </cell>
1340 </row>
1341 <row topline="true">
1342 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1343 \begin_inset Text
1344
1345 \layout Standard
1346
1347 OL pitch gain
1348 \end_inset 
1349 </cell>
1350 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1351 \begin_inset Text
1352
1353 \layout Standard
1354
1355 frame
1356 \end_inset 
1357 </cell>
1358 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1359 \begin_inset Text
1360
1361 \layout Standard
1362
1363 0
1364 \end_inset 
1365 </cell>
1366 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1367 \begin_inset Text
1368
1369 \layout Standard
1370
1371 4
1372 \end_inset 
1373 </cell>
1374 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1375 \begin_inset Text
1376
1377 \layout Standard
1378
1379 0
1380 \end_inset 
1381 </cell>
1382 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1383 \begin_inset Text
1384
1385 \layout Standard
1386
1387 0
1388 \end_inset 
1389 </cell>
1390 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1391 \begin_inset Text
1392
1393 \layout Standard
1394
1395 0
1396 \end_inset 
1397 </cell>
1398 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1399 \begin_inset Text
1400
1401 \layout Standard
1402
1403 0
1404 \end_inset 
1405 </cell>
1406 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1407 \begin_inset Text
1408
1409 \layout Standard
1410
1411 0
1412 \end_inset 
1413 </cell>
1414 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1415 \begin_inset Text
1416
1417 \layout Standard
1418
1419 0
1420 \end_inset 
1421 </cell>
1422 </row>
1423 <row topline="true">
1424 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1425 \begin_inset Text
1426
1427 \layout Standard
1428
1429 OL Exc gain
1430 \end_inset 
1431 </cell>
1432 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1433 \begin_inset Text
1434
1435 \layout Standard
1436
1437 frame
1438 \end_inset 
1439 </cell>
1440 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1441 \begin_inset Text
1442
1443 \layout Standard
1444
1445 0
1446 \end_inset 
1447 </cell>
1448 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1449 \begin_inset Text
1450
1451 \layout Standard
1452
1453 5
1454 \end_inset 
1455 </cell>
1456 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1457 \begin_inset Text
1458
1459 \layout Standard
1460
1461 5
1462 \end_inset 
1463 </cell>
1464 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1465 \begin_inset Text
1466
1467 \layout Standard
1468
1469 5
1470 \end_inset 
1471 </cell>
1472 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1473 \begin_inset Text
1474
1475 \layout Standard
1476
1477 5
1478 \end_inset 
1479 </cell>
1480 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1481 \begin_inset Text
1482
1483 \layout Standard
1484
1485 5
1486 \end_inset 
1487 </cell>
1488 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1489 \begin_inset Text
1490
1491 \layout Standard
1492
1493 5
1494 \end_inset 
1495 </cell>
1496 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1497 \begin_inset Text
1498
1499 \layout Standard
1500
1501 5
1502 \end_inset 
1503 </cell>
1504 </row>
1505 <row topline="true">
1506 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1507 \begin_inset Text
1508
1509 \layout Standard
1510
1511 Fine pitch
1512 \end_inset 
1513 </cell>
1514 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1515 \begin_inset Text
1516
1517 \layout Standard
1518
1519 sub-frame
1520 \end_inset 
1521 </cell>
1522 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1523 \begin_inset Text
1524
1525 \layout Standard
1526
1527 0
1528 \end_inset 
1529 </cell>
1530 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1531 \begin_inset Text
1532
1533 \layout Standard
1534
1535 0
1536 \end_inset 
1537 </cell>
1538 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1539 \begin_inset Text
1540
1541 \layout Standard
1542
1543 0
1544 \end_inset 
1545 </cell>
1546 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1547 \begin_inset Text
1548
1549 \layout Standard
1550
1551 7
1552 \end_inset 
1553 </cell>
1554 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1555 \begin_inset Text
1556
1557 \layout Standard
1558
1559 7
1560 \end_inset 
1561 </cell>
1562 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1563 \begin_inset Text
1564
1565 \layout Standard
1566
1567 7
1568 \end_inset 
1569 </cell>
1570 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1571 \begin_inset Text
1572
1573 \layout Standard
1574
1575 7
1576 \end_inset 
1577 </cell>
1578 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1579 \begin_inset Text
1580
1581 \layout Standard
1582
1583 7
1584 \end_inset 
1585 </cell>
1586 </row>
1587 <row topline="true">
1588 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1589 \begin_inset Text
1590
1591 \layout Standard
1592
1593 Pitch gain
1594 \end_inset 
1595 </cell>
1596 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1597 \begin_inset Text
1598
1599 \layout Standard
1600
1601 sub-frame
1602 \end_inset 
1603 </cell>
1604 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1605 \begin_inset Text
1606
1607 \layout Standard
1608
1609 0
1610 \end_inset 
1611 </cell>
1612 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1613 \begin_inset Text
1614
1615 \layout Standard
1616
1617 0
1618 \end_inset 
1619 </cell>
1620 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1621 \begin_inset Text
1622
1623 \layout Standard
1624
1625 5
1626 \end_inset 
1627 </cell>
1628 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1629 \begin_inset Text
1630
1631 \layout Standard
1632
1633 5
1634 \end_inset 
1635 </cell>
1636 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1637 \begin_inset Text
1638
1639 \layout Standard
1640
1641 5
1642 \end_inset 
1643 </cell>
1644 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1645 \begin_inset Text
1646
1647 \layout Standard
1648
1649 7
1650 \end_inset 
1651 </cell>
1652 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1653 \begin_inset Text
1654
1655 \layout Standard
1656
1657 7
1658 \end_inset 
1659 </cell>
1660 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1661 \begin_inset Text
1662
1663 \layout Standard
1664
1665 7
1666 \end_inset 
1667 </cell>
1668 </row>
1669 <row topline="true">
1670 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1671 \begin_inset Text
1672
1673 \layout Standard
1674
1675 Innovation gain
1676 \end_inset 
1677 </cell>
1678 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1679 \begin_inset Text
1680
1681 \layout Standard
1682
1683 sub-frame
1684 \end_inset 
1685 </cell>
1686 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1687 \begin_inset Text
1688
1689 \layout Standard
1690
1691 0
1692 \end_inset 
1693 </cell>
1694 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1695 \begin_inset Text
1696
1697 \layout Standard
1698
1699 1
1700 \end_inset 
1701 </cell>
1702 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1703 \begin_inset Text
1704
1705 \layout Standard
1706
1707 0
1708 \end_inset 
1709 </cell>
1710 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1711 \begin_inset Text
1712
1713 \layout Standard
1714
1715 1
1716 \end_inset 
1717 </cell>
1718 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1719 \begin_inset Text
1720
1721 \layout Standard
1722
1723 1
1724 \end_inset 
1725 </cell>
1726 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1727 \begin_inset Text
1728
1729 \layout Standard
1730
1731 3
1732 \end_inset 
1733 </cell>
1734 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1735 \begin_inset Text
1736
1737 \layout Standard
1738
1739 3
1740 \end_inset 
1741 </cell>
1742 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1743 \begin_inset Text
1744
1745 \layout Standard
1746
1747 3
1748 \end_inset 
1749 </cell>
1750 </row>
1751 <row topline="true" bottomline="true">
1752 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1753 \begin_inset Text
1754
1755 \layout Standard
1756
1757 Innovation VQ
1758 \end_inset 
1759 </cell>
1760 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1761 \begin_inset Text
1762
1763 \layout Standard
1764
1765 sub-frame
1766 \end_inset 
1767 </cell>
1768 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1769 \begin_inset Text
1770
1771 \layout Standard
1772
1773 0
1774 \end_inset 
1775 </cell>
1776 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1777 \begin_inset Text
1778
1779 \layout Standard
1780
1781 0
1782 \end_inset 
1783 </cell>
1784 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1785 \begin_inset Text
1786
1787 \layout Standard
1788
1789 16
1790 \end_inset 
1791 </cell>
1792 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1793 \begin_inset Text
1794
1795 \layout Standard
1796
1797 20
1798 \end_inset 
1799 </cell>
1800 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1801 \begin_inset Text
1802
1803 \layout Standard
1804
1805 35
1806 \end_inset 
1807 </cell>
1808 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1809 \begin_inset Text
1810
1811 \layout Standard
1812
1813 48
1814 \end_inset 
1815 </cell>
1816 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1817 \begin_inset Text
1818
1819 \layout Standard
1820
1821 64
1822 \end_inset 
1823 </cell>
1824 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1825 \begin_inset Text
1826
1827 \layout Standard
1828
1829 96
1830 \end_inset 
1831 </cell>
1832 </row>
1833 <row topline="true" bottomline="true">
1834 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1835 \begin_inset Text
1836
1837 \layout Standard
1838
1839 Total
1840 \end_inset 
1841 </cell>
1842 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1843 \begin_inset Text
1844
1845 \layout Standard
1846
1847 frame
1848 \end_inset 
1849 </cell>
1850 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1851 \begin_inset Text
1852
1853 \layout Standard
1854
1855 5
1856 \end_inset 
1857 </cell>
1858 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1859 \begin_inset Text
1860
1861 \layout Standard
1862
1863 43
1864 \end_inset 
1865 </cell>
1866 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1867 \begin_inset Text
1868
1869 \layout Standard
1870
1871 119
1872 \end_inset 
1873 </cell>
1874 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1875 \begin_inset Text
1876
1877 \layout Standard
1878
1879 160
1880 \end_inset 
1881 </cell>
1882 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1883 \begin_inset Text
1884
1885 \layout Standard
1886
1887 220
1888 \end_inset 
1889 </cell>
1890 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1891 \begin_inset Text
1892
1893 \layout Standard
1894
1895 300
1896 \end_inset 
1897 </cell>
1898 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1899 \begin_inset Text
1900
1901 \layout Standard
1902
1903 364
1904 \end_inset 
1905 </cell>
1906 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1907 \begin_inset Text
1908
1909 \layout Standard
1910
1911 492
1912 \end_inset 
1913 </cell>
1914 </row>
1915 </lyxtabular>
1916
1917 \end_inset 
1918
1919
1920 \layout Caption
1921
1922 Bit allocation for narrowband modes
1923 \begin_inset LatexCommand \label{cap:bits-narrowband}
1924
1925 \end_inset 
1926
1927
1928 \end_inset 
1929
1930
1931 \layout Standard
1932
1933 So far, no MOS (Mean Opinion Score
1934 \begin_inset LatexCommand \index{mean opinion score}
1935
1936 \end_inset 
1937
1938 ) subjective evaluation has been performed for Speex.
1939  In order to give an idea of the quality achivable with it, table 
1940 \begin_inset LatexCommand \ref{cap:quality_vs_bps}
1941
1942 \end_inset 
1943
1944  presents my own subjective opinion on it.
1945  It sould be noted that different people will perceive the quality differently
1946  and that the person that designed the codec often has a bias (one way or
1947  another) when it comes to subjective evaluation.
1948  Last thing, it should be noted that for most codecs (including Speex) encoding
1949  quality sometimes varies depending on the input.
1950  Note that the complexity is only approximate (withing 0.5 mflops and using
1951  the lowers complexity setting).
1952  Decoding requires approximately 0.5 mflops
1953 \begin_inset LatexCommand \index{complexity}
1954
1955 \end_inset 
1956
1957  in most modes (1 mflops with perceptual enhancement).
1958 \layout Standard
1959
1960
1961 \begin_inset Float table
1962 placement h
1963 wide true
1964 collapsed false
1965
1966 \layout Standard
1967
1968
1969 \begin_inset  Tabular
1970 <lyxtabular version="3" rows="17" columns="4">
1971 <features>
1972 <column alignment="center" valignment="top" leftline="true" width="0pt">
1973 <column alignment="center" valignment="top" leftline="true" width="0pt">
1974 <column alignment="center" valignment="top" leftline="true" width="0pt">
1975 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
1976 <row topline="true" bottomline="true">
1977 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1978 \begin_inset Text
1979
1980 \layout Standard
1981
1982 Mode
1983 \end_inset 
1984 </cell>
1985 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1986 \begin_inset Text
1987
1988 \layout Standard
1989
1990 Bit-rate
1991 \begin_inset LatexCommand \index{bit-rate}
1992
1993 \end_inset 
1994
1995  (bps)
1996 \end_inset 
1997 </cell>
1998 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1999 \begin_inset Text
2000
2001 \layout Standard
2002
2003 mflops
2004 \begin_inset LatexCommand \index{complexity}
2005
2006 \end_inset 
2007
2008
2009 \end_inset 
2010 </cell>
2011 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2012 \begin_inset Text
2013
2014 \layout Standard
2015
2016 Quality/description
2017 \end_inset 
2018 </cell>
2019 </row>
2020 <row topline="true">
2021 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2022 \begin_inset Text
2023
2024 \layout Standard
2025
2026 0
2027 \end_inset 
2028 </cell>
2029 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2030 \begin_inset Text
2031
2032 \layout Standard
2033
2034 250
2035 \end_inset 
2036 </cell>
2037 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2038 \begin_inset Text
2039
2040 \layout Standard
2041
2042 N/A
2043 \end_inset 
2044 </cell>
2045 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2046 \begin_inset Text
2047
2048 \layout Standard
2049
2050 No sound (VBR only)
2051 \end_inset 
2052 </cell>
2053 </row>
2054 <row topline="true">
2055 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2056 \begin_inset Text
2057
2058 \layout Standard
2059
2060 1
2061 \end_inset 
2062 </cell>
2063 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2064 \begin_inset Text
2065
2066 \layout Standard
2067
2068 2,150
2069 \end_inset 
2070 </cell>
2071 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2072 \begin_inset Text
2073
2074 \layout Standard
2075
2076 6
2077 \end_inset 
2078 </cell>
2079 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2080 \begin_inset Text
2081
2082 \layout Standard
2083
2084 Vocoder (mostly for comfort noise)
2085 \end_inset 
2086 </cell>
2087 </row>
2088 <row topline="true">
2089 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2090 \begin_inset Text
2091
2092 \layout Standard
2093
2094 2
2095 \end_inset 
2096 </cell>
2097 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2098 \begin_inset Text
2099
2100 \layout Standard
2101
2102 5,950
2103 \end_inset 
2104 </cell>
2105 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2106 \begin_inset Text
2107
2108 \layout Standard
2109
2110 9
2111 \end_inset 
2112 </cell>
2113 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2114 \begin_inset Text
2115
2116 \layout Standard
2117
2118 Very noticeable artifacts/noise, good intelligibility
2119 \end_inset 
2120 </cell>
2121 </row>
2122 <row topline="true">
2123 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2124 \begin_inset Text
2125
2126 \layout Standard
2127
2128 3
2129 \end_inset 
2130 </cell>
2131 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2132 \begin_inset Text
2133
2134 \layout Standard
2135
2136 8,000
2137 \end_inset 
2138 </cell>
2139 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2140 \begin_inset Text
2141
2142 \layout Standard
2143
2144 10
2145 \end_inset 
2146 </cell>
2147 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2148 \begin_inset Text
2149
2150 \layout Standard
2151
2152 Artifacts/noise sometimes noticeable
2153 \end_inset 
2154 </cell>
2155 </row>
2156 <row topline="true">
2157 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2158 \begin_inset Text
2159
2160 \layout Standard
2161
2162 4
2163 \end_inset 
2164 </cell>
2165 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2166 \begin_inset Text
2167
2168 \layout Standard
2169
2170 11,000
2171 \end_inset 
2172 </cell>
2173 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2174 \begin_inset Text
2175
2176 \layout Standard
2177
2178 14
2179 \end_inset 
2180 </cell>
2181 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2182 \begin_inset Text
2183
2184 \layout Standard
2185
2186 Artifacts usually noticeable only with headphones
2187 \end_inset 
2188 </cell>
2189 </row>
2190 <row topline="true">
2191 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2192 \begin_inset Text
2193
2194 \layout Standard
2195
2196 5
2197 \end_inset 
2198 </cell>
2199 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2200 \begin_inset Text
2201
2202 \layout Standard
2203
2204 15,000
2205 \end_inset 
2206 </cell>
2207 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2208 \begin_inset Text
2209
2210 \layout Standard
2211
2212 11
2213 \end_inset 
2214 </cell>
2215 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2216 \begin_inset Text
2217
2218 \layout Standard
2219
2220 Need good headphones to tell the difference
2221 \end_inset 
2222 </cell>
2223 </row>
2224 <row topline="true">
2225 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2226 \begin_inset Text
2227
2228 \layout Standard
2229
2230 6
2231 \end_inset 
2232 </cell>
2233 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2234 \begin_inset Text
2235
2236 \layout Standard
2237
2238 18,200
2239 \end_inset 
2240 </cell>
2241 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2242 \begin_inset Text
2243
2244 \layout Standard
2245
2246 17.5
2247 \end_inset 
2248 </cell>
2249 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2250 \begin_inset Text
2251
2252 \layout Standard
2253
2254 Hard to tell the difference even with good headphones
2255 \end_inset 
2256 </cell>
2257 </row>
2258 <row topline="true">
2259 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2260 \begin_inset Text
2261
2262 \layout Standard
2263
2264 7
2265 \end_inset 
2266 </cell>
2267 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2268 \begin_inset Text
2269
2270 \layout Standard
2271
2272 24,600
2273 \end_inset 
2274 </cell>
2275 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2276 \begin_inset Text
2277
2278 \layout Standard
2279
2280 14.5
2281 \end_inset 
2282 </cell>
2283 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2284 \begin_inset Text
2285
2286 \layout Standard
2287
2288 Completely transparent for voice, good quality music
2289 \end_inset 
2290 </cell>
2291 </row>
2292 <row topline="true">
2293 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2294 \begin_inset Text
2295
2296 \layout Standard
2297
2298 8
2299 \end_inset 
2300 </cell>
2301 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2302 \begin_inset Text
2303
2304 \layout Standard
2305
2306 N/A
2307 \end_inset 
2308 </cell>
2309 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2310 \begin_inset Text
2311
2312 \layout Standard
2313
2314 N/A
2315 \end_inset 
2316 </cell>
2317 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2318 \begin_inset Text
2319
2320 \layout Standard
2321
2322 reserved
2323 \end_inset 
2324 </cell>
2325 </row>
2326 <row topline="true">
2327 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2328 \begin_inset Text
2329
2330 \layout Standard
2331
2332 9
2333 \end_inset 
2334 </cell>
2335 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2336 \begin_inset Text
2337
2338 \layout Standard
2339
2340 N/A
2341 \end_inset 
2342 </cell>
2343 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2344 \begin_inset Text
2345
2346 \layout Standard
2347
2348 N/A
2349 \end_inset 
2350 </cell>
2351 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2352 \begin_inset Text
2353
2354 \layout Standard
2355
2356 reserved
2357 \end_inset 
2358 </cell>
2359 </row>
2360 <row topline="true">
2361 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2362 \begin_inset Text
2363
2364 \layout Standard
2365
2366 10
2367 \end_inset 
2368 </cell>
2369 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2370 \begin_inset Text
2371
2372 \layout Standard
2373
2374 N/A
2375 \end_inset 
2376 </cell>
2377 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2378 \begin_inset Text
2379
2380 \layout Standard
2381
2382 N/A
2383 \end_inset 
2384 </cell>
2385 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2386 \begin_inset Text
2387
2388 \layout Standard
2389
2390 reserved
2391 \end_inset 
2392 </cell>
2393 </row>
2394 <row topline="true">
2395 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2396 \begin_inset Text
2397
2398 \layout Standard
2399
2400 11
2401 \end_inset 
2402 </cell>
2403 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2404 \begin_inset Text
2405
2406 \layout Standard
2407
2408 N/A
2409 \end_inset 
2410 </cell>
2411 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2412 \begin_inset Text
2413
2414 \layout Standard
2415
2416 N/A
2417 \end_inset 
2418 </cell>
2419 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2420 \begin_inset Text
2421
2422 \layout Standard
2423
2424 reserved
2425 \end_inset 
2426 </cell>
2427 </row>
2428 <row topline="true">
2429 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2430 \begin_inset Text
2431
2432 \layout Standard
2433
2434 12
2435 \end_inset 
2436 </cell>
2437 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2438 \begin_inset Text
2439
2440 \layout Standard
2441
2442 N/A
2443 \end_inset 
2444 </cell>
2445 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2446 \begin_inset Text
2447
2448 \layout Standard
2449
2450 N/A
2451 \end_inset 
2452 </cell>
2453 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2454 \begin_inset Text
2455
2456 \layout Standard
2457
2458 reserved
2459 \end_inset 
2460 </cell>
2461 </row>
2462 <row topline="true">
2463 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2464 \begin_inset Text
2465
2466 \layout Standard
2467
2468 13
2469 \end_inset 
2470 </cell>
2471 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2472 \begin_inset Text
2473
2474 \layout Standard
2475
2476 N/A
2477 \end_inset 
2478 </cell>
2479 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2480 \begin_inset Text
2481
2482 \layout Standard
2483
2484 N/A
2485 \end_inset 
2486 </cell>
2487 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2488 \begin_inset Text
2489
2490 \layout Standard
2491
2492 Application-defined, interpreted by callback or skipped
2493 \end_inset 
2494 </cell>
2495 </row>
2496 <row topline="true">
2497 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2498 \begin_inset Text
2499
2500 \layout Standard
2501
2502 14
2503 \end_inset 
2504 </cell>
2505 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2506 \begin_inset Text
2507
2508 \layout Standard
2509
2510 N/A
2511 \end_inset 
2512 </cell>
2513 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2514 \begin_inset Text
2515
2516 \layout Standard
2517
2518 N/A
2519 \end_inset 
2520 </cell>
2521 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2522 \begin_inset Text
2523
2524 \layout Standard
2525
2526 Speex in-band signaling
2527 \end_inset 
2528 </cell>
2529 </row>
2530 <row topline="true" bottomline="true">
2531 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2532 \begin_inset Text
2533
2534 \layout Standard
2535
2536 15
2537 \end_inset 
2538 </cell>
2539 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2540 \begin_inset Text
2541
2542 \layout Standard
2543
2544 N/A
2545 \end_inset 
2546 </cell>
2547 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2548 \begin_inset Text
2549
2550 \layout Standard
2551
2552 N/A
2553 \end_inset 
2554 </cell>
2555 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2556 \begin_inset Text
2557
2558 \layout Standard
2559
2560 Terminator code
2561 \end_inset 
2562 </cell>
2563 </row>
2564 </lyxtabular>
2565
2566 \end_inset 
2567
2568
2569 \layout Caption
2570
2571 Quality versus bit-rate
2572 \begin_inset LatexCommand \label{cap:quality_vs_bps}
2573
2574 \end_inset 
2575
2576
2577 \end_inset 
2578
2579
2580 \layout Subsection
2581
2582 Perceptual enhancement
2583 \begin_inset LatexCommand \index{perceptual enhancement}
2584
2585 \end_inset 
2586
2587
2588 \layout Standard
2589
2590 This part of the codec only applies to the decoder and can even be changed
2591  without affecting inter-operability.
2592  For that reason, the implementation provided and described here should
2593  only be considered as a reference implementation.
2594  The enhancement system is devided in two parts.
2595  First, the synthesis filter 
2596 \begin_inset Formula $S(z)=1/A(z)$
2597 \end_inset 
2598
2599  is replaced by an enhanced filter
2600 \begin_inset Formula \[
2601 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)}\]
2602
2603 \end_inset 
2604
2605 where 
2606 \begin_inset Formula $a_{1}$
2607 \end_inset 
2608
2609  and 
2610 \begin_inset Formula $a_{2}$
2611 \end_inset 
2612
2613  depend on the mode in use and 
2614 \begin_inset Formula $a_{3}=\frac{1}{r}\left(1-\frac{1-ra_{1}}{1-ra_{2}}\right)$
2615 \end_inset 
2616
2617  with 
2618 \begin_inset Formula $r=.9$
2619 \end_inset 
2620
2621 .
2622  The second part of the enhancement consists of using a comb filter to enhance
2623  the pitch in the excitation domain.
2624  
2625 \layout Section
2626 \pagebreak_top 
2627 Speex wideband mode (sub-band CELP)
2628 \begin_inset LatexCommand \index{wideband}
2629
2630 \end_inset 
2631
2632
2633 \layout Standard
2634
2635 For wideband, the Speex approach uses a 
2636 \emph on 
2637 q
2638 \emph default 
2639 uadrature 
2640 \emph on 
2641 m
2642 \emph default 
2643 irror 
2644 \emph on 
2645 f
2646 \emph default 
2647 ilter
2648 \begin_inset LatexCommand \index{quadrature mirror filter}
2649
2650 \end_inset 
2651
2652  (QMF) to split the band in two.
2653  The 16 kHz signal is thus divided into two 8 kHz signals, one representing
2654  the low band (0-4 kHz), the other the high band (4-8 kHz).
2655  The low band is encoded with the narrowband mode described in section 
2656 \begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
2657
2658 \end_inset 
2659
2660  in such a way that the resulting 
2661 \begin_inset Quotes eld
2662 \end_inset 
2663
2664 embedded narrowband bit-stream
2665 \begin_inset Quotes erd
2666 \end_inset 
2667
2668  can also be decoded with the narrowband decoder.
2669  Since the low band encoding has already been described only the high band
2670  encoding is described in this section.
2671 \layout Subsection
2672
2673 Linear Prediction
2674 \layout Standard
2675
2676 The linear prediction part used for the high-band is very similar to what
2677  is done for narrowband.
2678  The only difference is that we use only 12 bits to encode the high-band
2679  LSP's using a multi-stage vector quantizer (MSVQ).
2680  The first level quantizes the 10 coefficients with 6 bits and the error
2681  is then quantized using 6 bits too.
2682 \layout Subsection
2683
2684 Pitch Prediction
2685 \layout Standard
2686
2687 That part is easy: there's no pitch prediction for the high-band.
2688  There are two reasons for that.
2689  First, there is usually little harmonic structure in this band (above 4
2690  kHz).
2691  Second, it would be very hard to implement since the QMF folds the 4-8
2692  kHz band into 4-0 kHz (reversing the frequency axis), which means that
2693  the location of the harmonics are no longer at multiples of the fundamental
2694  (pitch).
2695 \layout Subsection
2696
2697 Excitation Quantization
2698 \layout Standard
2699
2700 The high-band excitation is coded in the same way as for narrowband.
2701  
2702 \layout Subsection
2703
2704 Bit allocation
2705 \layout Standard
2706
2707 For the wideband mode, all the narrowband frame is packed before the high-band
2708  is encoded.
2709  The narrowband part of the bit-stream is as defined in table 
2710 \begin_inset LatexCommand \ref{cap:bits-narrowband}
2711
2712 \end_inset 
2713
2714 .
2715  The high-band follows, as described in table 
2716 \begin_inset LatexCommand \ref{cap:bits-wideband}
2717
2718 \end_inset 
2719
2720 .
2721  This also means that a wideband frame may be correctly decoded by a narrowband
2722  decoder with the only caveat that if more than one frame is packed in the
2723  same packet, the decoder will need to skip the high-band parts in order
2724  to sync with the bit-stream.
2725 \layout Standard
2726
2727
2728 \begin_inset Float table
2729 placement h
2730 wide true
2731 collapsed false
2732
2733 \layout Standard
2734
2735
2736 \begin_inset  Tabular
2737 <lyxtabular version="3" rows="7" columns="7">
2738 <features>
2739 <column alignment="center" valignment="top" leftline="true" width="0pt">
2740 <column alignment="center" valignment="top" leftline="true" width="0pt">
2741 <column alignment="center" valignment="top" leftline="true" width="0pt">
2742 <column alignment="center" valignment="top" leftline="true" width="0pt">
2743 <column alignment="center" valignment="top" leftline="true" width="0pt">
2744 <column alignment="center" valignment="top" leftline="true" width="0pt">
2745 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
2746 <row topline="true" bottomline="true">
2747 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2748 \begin_inset Text
2749
2750 \layout Standard
2751
2752 Parameter
2753 \end_inset 
2754 </cell>
2755 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2756 \begin_inset Text
2757
2758 \layout Standard
2759
2760 Update rate
2761 \end_inset 
2762 </cell>
2763 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2764 \begin_inset Text
2765
2766 \layout Standard
2767
2768 0
2769 \end_inset 
2770 </cell>
2771 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2772 \begin_inset Text
2773
2774 \layout Standard
2775
2776 1
2777 \end_inset 
2778 </cell>
2779 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2780 \begin_inset Text
2781
2782 \layout Standard
2783
2784 2
2785 \end_inset 
2786 </cell>
2787 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2788 \begin_inset Text
2789
2790 \layout Standard
2791
2792 3
2793 \end_inset 
2794 </cell>
2795 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2796 \begin_inset Text
2797
2798 \layout Standard
2799
2800 4
2801 \end_inset 
2802 </cell>
2803 </row>
2804 <row topline="true">
2805 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2806 \begin_inset Text
2807
2808 \layout Standard
2809
2810 Wideband bit
2811 \end_inset 
2812 </cell>
2813 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2814 \begin_inset Text
2815
2816 \layout Standard
2817
2818 frame
2819 \end_inset 
2820 </cell>
2821 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2822 \begin_inset Text
2823
2824 \layout Standard
2825
2826 1
2827 \end_inset 
2828 </cell>
2829 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2830 \begin_inset Text
2831
2832 \layout Standard
2833
2834 1
2835 \end_inset 
2836 </cell>
2837 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2838 \begin_inset Text
2839
2840 \layout Standard
2841
2842 1
2843 \end_inset 
2844 </cell>
2845 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2846 \begin_inset Text
2847
2848 \layout Standard
2849
2850 1
2851 \end_inset 
2852 </cell>
2853 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2854 \begin_inset Text
2855
2856 \layout Standard
2857
2858 1
2859 \end_inset 
2860 </cell>
2861 </row>
2862 <row topline="true">
2863 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2864 \begin_inset Text
2865
2866 \layout Standard
2867
2868 Mode ID
2869 \end_inset 
2870 </cell>
2871 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2872 \begin_inset Text
2873
2874 \layout Standard
2875
2876 frame
2877 \end_inset 
2878 </cell>
2879 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2880 \begin_inset Text
2881
2882 \layout Standard
2883
2884 3
2885 \end_inset 
2886 </cell>
2887 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2888 \begin_inset Text
2889
2890 \layout Standard
2891
2892 3
2893 \end_inset 
2894 </cell>
2895 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2896 \begin_inset Text
2897
2898 \layout Standard
2899
2900 3
2901 \end_inset 
2902 </cell>
2903 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2904 \begin_inset Text
2905
2906 \layout Standard
2907
2908 3
2909 \end_inset 
2910 </cell>
2911 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2912 \begin_inset Text
2913
2914 \layout Standard
2915
2916 3
2917 \end_inset 
2918 </cell>
2919 </row>
2920 <row topline="true">
2921 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2922 \begin_inset Text
2923
2924 \layout Standard
2925
2926 LSP
2927 \end_inset 
2928 </cell>
2929 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2930 \begin_inset Text
2931
2932 \layout Standard
2933
2934 frame
2935 \end_inset 
2936 </cell>
2937 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2938 \begin_inset Text
2939
2940 \layout Standard
2941
2942 0
2943 \end_inset 
2944 </cell>
2945 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2946 \begin_inset Text
2947
2948 \layout Standard
2949
2950 12
2951 \end_inset 
2952 </cell>
2953 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2954 \begin_inset Text
2955
2956 \layout Standard
2957
2958 12
2959 \end_inset 
2960 </cell>
2961 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2962 \begin_inset Text
2963
2964 \layout Standard
2965
2966 12
2967 \end_inset 
2968 </cell>
2969 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2970 \begin_inset Text
2971
2972 \layout Standard
2973
2974 12
2975 \end_inset 
2976 </cell>
2977 </row>
2978 <row topline="true">
2979 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2980 \begin_inset Text
2981
2982 \layout Standard
2983
2984 Excitation gain
2985 \end_inset 
2986 </cell>
2987 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2988 \begin_inset Text
2989
2990 \layout Standard
2991
2992 sub-frame
2993 \end_inset 
2994 </cell>
2995 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2996 \begin_inset Text
2997
2998 \layout Standard
2999
3000 0
3001 \end_inset 
3002 </cell>
3003 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3004 \begin_inset Text
3005
3006 \layout Standard
3007
3008 5
3009 \end_inset 
3010 </cell>
3011 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3012 \begin_inset Text
3013
3014 \layout Standard
3015
3016 4
3017 \end_inset 
3018 </cell>
3019 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3020 \begin_inset Text
3021
3022 \layout Standard
3023
3024 4
3025 \end_inset 
3026 </cell>
3027 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3028 \begin_inset Text
3029
3030 \layout Standard
3031
3032 4
3033 \end_inset 
3034 </cell>
3035 </row>
3036 <row topline="true" bottomline="true">
3037 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3038 \begin_inset Text
3039
3040 \layout Standard
3041
3042 Excitation VQ
3043 \end_inset 
3044 </cell>
3045 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3046 \begin_inset Text
3047
3048 \layout Standard
3049
3050 sub-frame
3051 \end_inset 
3052 </cell>
3053 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3054 \begin_inset Text
3055
3056 \layout Standard
3057
3058 0
3059 \end_inset 
3060 </cell>
3061 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3062 \begin_inset Text
3063
3064 \layout Standard
3065
3066 0
3067 \end_inset 
3068 </cell>
3069 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3070 \begin_inset Text
3071
3072 \layout Standard
3073
3074 20
3075 \end_inset 
3076 </cell>
3077 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3078 \begin_inset Text
3079
3080 \layout Standard
3081
3082 40
3083 \end_inset 
3084 </cell>
3085 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3086 \begin_inset Text
3087
3088 \layout Standard
3089
3090 80
3091 \end_inset 
3092 </cell>
3093 </row>
3094 <row topline="true" bottomline="true">
3095 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3096 \begin_inset Text
3097
3098 \layout Standard
3099
3100 Total
3101 \end_inset 
3102 </cell>
3103 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3104 \begin_inset Text
3105
3106 \layout Standard
3107
3108 frame
3109 \end_inset 
3110 </cell>
3111 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3112 \begin_inset Text
3113
3114 \layout Standard
3115
3116 4
3117 \end_inset 
3118 </cell>
3119 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3120 \begin_inset Text
3121
3122 \layout Standard
3123
3124 36
3125 \end_inset 
3126 </cell>
3127 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3128 \begin_inset Text
3129
3130 \layout Standard
3131
3132 112
3133 \end_inset 
3134 </cell>
3135 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3136 \begin_inset Text
3137
3138 \layout Standard
3139
3140 192
3141 \end_inset 
3142 </cell>
3143 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3144 \begin_inset Text
3145
3146 \layout Standard
3147
3148 352
3149 \end_inset 
3150 </cell>
3151 </row>
3152 </lyxtabular>
3153
3154 \end_inset 
3155
3156
3157 \layout Caption
3158
3159 Bit allocation for high-band in wideband mode
3160 \begin_inset LatexCommand \label{cap:bits-wideband}
3161
3162 \end_inset 
3163
3164
3165 \end_inset 
3166
3167
3168 \layout Standard
3169
3170
3171 \begin_inset ERT
3172 status Open
3173
3174 \layout Standard
3175
3176 \backslash 
3177 clearpage
3178 \end_inset 
3179
3180
3181 \layout Section
3182 \pagebreak_top 
3183 Command-line encoder/decoder
3184 \layout Standard
3185
3186 The base Speex distribution includes a command-line encoder (
3187 \emph on 
3188 speexenc
3189 \emph default 
3190 ) and decoder (
3191 \emph on 
3192 speexdec
3193 \emph default 
3194 ).
3195 \layout Subsection
3196
3197
3198 \emph on 
3199 speexenc
3200 \begin_inset LatexCommand \index{speexenc}
3201
3202 \end_inset 
3203
3204
3205 \layout Standard
3206
3207 The encoder takes the following options:
3208 \layout Description
3209
3210 --narrowband\SpecialChar ~
3211 (-n) Tell Speex to treat the input as narrowband (8 kHz).
3212  This is the default
3213 \layout Description
3214
3215 --wideband\SpecialChar ~
3216 (-w) Tell Speex to treat the input as wideband (16 kHz)
3217 \layout Description
3218
3219 --ultra-wideband\SpecialChar ~
3220 (-u) Tell Speex to treat the input as 
3221 \begin_inset Quotes eld
3222 \end_inset 
3223
3224 ultra-wideband
3225 \begin_inset Quotes erd
3226 \end_inset 
3227
3228  (32 kHz)
3229 \layout Description
3230
3231 --quality\SpecialChar ~
3232 n Set the encoding quality (0-10), default is 3
3233 \layout Description
3234
3235 --bitrate\SpecialChar ~
3236 n Encoding bit-rate (use bit-rate n or lower) 
3237 \layout Description
3238
3239 --vbr Enable VBR (Variable Bit-Rate), disabled by default
3240 \layout Description
3241
3242 --nframes\SpecialChar ~
3243 n Pack n frames in each Ogg packet (this saves space at low bit-rates)
3244 \layout Description
3245
3246 --comp\SpecialChar ~
3247 n Set encoding speed/quality tradeoff.
3248  The higher the value of n, the slower the encoding (default is 3)
3249 \layout Description
3250
3251 -V Verbose operation, print bit-rate currently in use
3252 \layout Description
3253
3254 --help\SpecialChar ~
3255 (-h) Print the help
3256 \layout Description
3257
3258 --version\SpecialChar ~
3259 (-v) Print version information
3260 \layout Subsubsection*
3261
3262 Speex comments
3263 \layout Description
3264
3265 --comment Add the given string as an extra comment.
3266  This may be used multiple times.
3267  
3268 \layout Description
3269
3270 --author Author of this track.
3271  
3272 \layout Description
3273
3274 --title Title for this track.
3275  
3276 \layout Subsubsection*
3277
3278 Raw input options
3279 \layout Description
3280
3281 --rate\SpecialChar ~
3282 n Sampling rate for raw input
3283 \layout Description
3284
3285 --stereo Consider raw input as stereo 
3286 \layout Description
3287
3288 --le Raw input is little-endian 
3289 \layout Description
3290
3291 --be Raw input is big-endian 
3292 \layout Description
3293
3294 --8bit Raw input is 8-bit unsigned 
3295 \layout Description
3296
3297 --16bit Raw input is 16-bit signed 
3298 \layout Subsection
3299
3300
3301 \emph on 
3302 speexdec
3303 \begin_inset LatexCommand \index{speexdec}
3304
3305 \end_inset 
3306
3307
3308 \layout Standard
3309
3310 The decoder takes the following options:
3311 \layout Description
3312
3313 --enh enable post-filter
3314 \layout Description
3315
3316 --no-enh disable post-filter (default)
3317 \layout Description
3318
3319 --force-nb Force decoding in narrowband 
3320 \layout Description
3321
3322 --force-wb Force decoding in wideband 
3323 \layout Description
3324
3325 --force-uwb Force decoding in ultra-wideband 
3326 \layout Description
3327
3328 --mono Force decoding in mono 
3329 \layout Description
3330
3331 --stereo Force decoding in stereo 
3332 \layout Description
3333
3334 --rate\SpecialChar ~
3335 n For decoding at n Hz sampling rate
3336 \layout Description
3337
3338 --packet-loss\SpecialChar ~
3339 n Simulate n % rando m packet loss
3340 \layout Description
3341
3342 -V Verbose operation, print bit-rate currently in use
3343 \layout Description
3344
3345 --help\SpecialChar ~
3346 (-h) Print the help
3347 \layout Description
3348
3349 --version\SpecialChar ~
3350 (-v) Print version information
3351 \layout Section
3352 \pagebreak_top 
3353 Programming with Speex (the libspeex
3354 \begin_inset LatexCommand \index{libspeex}
3355
3356 \end_inset 
3357
3358  API
3359 \begin_inset LatexCommand \index{API}
3360
3361 \end_inset 
3362
3363 )
3364 \layout Subsection
3365
3366 Encoding
3367 \layout Standard
3368
3369 In order to encode speech using Speex, you first need to:
3370 \layout LyX-Code
3371
3372 #include <speex.h>
3373 \layout Standard
3374
3375 You then need to declare a Speex bit-packing struct
3376 \layout LyX-Code
3377
3378 SpeexBits bits;
3379 \layout Standard
3380
3381 and a Speex encoder state
3382 \layout LyX-Code
3383
3384 void *enc_state;
3385 \layout Standard
3386
3387 The two are initialized by:
3388 \layout LyX-Code
3389
3390 speex_bits_init(&bits);
3391 \layout LyX-Code
3392
3393 enc_state = speex_encoder_init(&speex_nb_mode);
3394 \layout Standard
3395
3396 For wideband coding, 
3397 \emph on 
3398 speex_nb_mode
3399 \emph default 
3400  will be replaced by 
3401 \emph on 
3402 speex_wb_mode
3403 \emph default 
3404 .
3405  In most cases, you will need to know the frame size used by the mode you
3406  are using.
3407  You can get that value in the 
3408 \emph on 
3409 frame_size
3410 \emph default 
3411  variable with:
3412 \layout LyX-Code
3413
3414 speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
3415 \layout Standard
3416
3417 Once the initialization is done, for every input frame:
3418 \layout LyX-Code
3419
3420 speex_bits_reset(&bits);
3421 \layout LyX-Code
3422
3423 speex_encode(enc_state, input_frame, &bits);
3424 \layout LyX-Code
3425
3426 nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);
3427 \layout Standard
3428
3429 where 
3430 \emph on 
3431 input_frame
3432 \emph default 
3433  is a 
3434 \emph on 
3435 (float *)
3436 \emph default 
3437  pointing to the beginning of a speech frame, 
3438 \emph on 
3439 byte_ptr
3440 \emph default 
3441  is a 
3442 \emph on 
3443 (char *)
3444 \emph default 
3445  where the encoded frame will be written, 
3446 \emph on 
3447 MAX_NB_BYTES
3448 \emph default 
3449  is the maximum number of bytes that can be written to 
3450 \emph on 
3451 byte_ptr
3452 \emph default 
3453  without causing an overflow and 
3454 \emph on 
3455 nbBytes
3456 \emph default 
3457  is the number of bytes actually written to 
3458 \emph on 
3459 byte_ptr
3460 \emph default 
3461  (the encoded size in bytes).
3462  Before calling speex_bits_write, it is possible to find the number of bytes
3463  that need to be written by calling 
3464 \family typewriter 
3465 speex_bits_nbytes(&bits)
3466 \family default 
3467 , which returns a number of bytes.
3468  
3469 \layout Standard
3470
3471 After you're done with the encoding, free all resources with:
3472 \layout LyX-Code
3473
3474 speex_bits_destroy(&bits);
3475 \layout LyX-Code
3476
3477 speex_encoder_destroy(enc_state);
3478 \layout Standard
3479
3480 That's about it for the encoder.
3481  
3482 \layout Subsection
3483
3484 Decoding
3485 \layout Standard
3486
3487 In order to encode speech using Speex, you first need to:
3488 \layout LyX-Code
3489
3490 #include <speex.h>
3491 \layout Standard
3492
3493 You then need to declare a Speex bit-packing struct
3494 \layout LyX-Code
3495
3496 SpeexBits bits;
3497 \layout Standard
3498
3499 and a Speex encoder state
3500 \layout LyX-Code
3501
3502 void *dec_state;
3503 \layout Standard
3504
3505 The two are initialized by:
3506 \layout LyX-Code
3507
3508 speex_bits_init(&bits);
3509 \layout LyX-Code
3510
3511 dec_state = speex_decoder_init(&speex_nb_mode);
3512 \layout Standard
3513
3514 For wideband decoding, 
3515 \emph on 
3516 speex_nb_mode
3517 \emph default 
3518  will be replaced by 
3519 \emph on 
3520 speex_wb_mode
3521 \emph default 
3522 .
3523  You can get that value in the 
3524 \emph on 
3525 frame_size
3526 \emph default 
3527  variable with:
3528 \layout LyX-Code
3529
3530 speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size); 
3531 \layout Standard
3532
3533 There is also a parameter that can be set for the decoder: whether or not
3534  to use a perceptual post-filter.
3535  This can be set by: 
3536 \layout LyX-Code
3537
3538 speex_decoder_ctl(dec_state, SPEEX_SET_PF, &pf); 
3539 \layout Standard
3540
3541 where pf is an int that with value 0 to have the post-filter disabled and
3542  1 to have it enabled.
3543 \layout Standard
3544
3545 Again, once the decoder initialization is done, for every input frame:
3546 \layout LyX-Code
3547
3548 speex_bits_read_from(&bits, input_bytes, nbBytes);
3549 \layout LyX-Code
3550
3551 speex_decode(st, &bits, output_frame);
3552 \layout Standard
3553
3554 where input_bytes is a 
3555 \emph on 
3556 (char *)
3557 \emph default 
3558  containing the bit-stream data received for a frame, 
3559 \emph on 
3560 nbBytes
3561 \emph default 
3562  is the size (in bytes) of that bit-stream, and 
3563 \emph on 
3564 output_frame
3565 \emph default 
3566  is a 
3567 \emph on 
3568 (float *)
3569 \emph default 
3570  and points to the area where the decoded speech frame will be written.
3571  A NULL value as the first argument indicates that we don't have the bits
3572  for the current frame.
3573  When a frame is lost, the Speex decoder will do its best to "guess" the
3574  correct signal.
3575 \layout Standard
3576
3577 After you're done with the decoding, free all resources with:
3578 \layout LyX-Code
3579
3580 speex_bits_destroy(&bits);
3581 \layout LyX-Code
3582
3583 speex_decoder_destroy(dec_state);
3584 \layout Subsection
3585
3586 Codec Options (speex_*_ctl)
3587 \layout Standard
3588
3589 The Speex encoder and decoder support many options and requests that can
3590  be accessed through the 
3591 \emph on 
3592 speex_encoder_ctl
3593 \emph default 
3594  and 
3595 \emph on 
3596 speex_decoder_ctl
3597 \emph default 
3598  functions.
3599  These functions are similar the the 
3600 \emph on 
3601 ioctl
3602 \emph default 
3603  system call and their prototypes are:
3604 \layout LyX-Code
3605
3606 void speex_encoder_ctl(void *encoder, int request, void *ptr);
3607 \layout LyX-Code
3608
3609 void speex_decoder_ctl(void *encoder, int request, void *ptr);
3610 \layout Standard
3611
3612 The different values of request allowed are (note that some only apply to
3613  the encoder or the decoder):
3614 \layout Description
3615
3616 SPEEX_SET_ENH** Set perceptual enhancer to on (1) or off (0) (integer)
3617 \layout Description
3618
3619 SPEEX_GET_ENH** Get perceptual enhancer status (integer)
3620 \layout Description
3621
3622 SPEEX_GET_FRAME_SIZE Get the frame size used for the current mode (integer)
3623 \layout Description
3624
3625 SPEEX_SET_QUALITY* Set the encoder speech quality (integer 0 to 10)
3626 \layout Description
3627
3628 SPEEX_GET_QUALITY* Get the current encoder speech quality (integer 0 to
3629  10)
3630 \layout Description
3631
3632 SPEEX_SET_MODE*
3633 \begin_inset Formula $\dagger $
3634 \end_inset 
3635
3636
3637 \layout Description
3638
3639 SPEEX_GET_MODE*
3640 \begin_inset Formula $\dagger $
3641 \end_inset 
3642
3643
3644 \layout Description
3645
3646 SPEEX_SET_LOW_MODE*
3647 \begin_inset Formula $\dagger $
3648 \end_inset 
3649
3650
3651 \layout Description
3652
3653 SPEEX_GET_LOW_MODE*
3654 \begin_inset Formula $\dagger $
3655 \end_inset 
3656
3657
3658 \layout Description
3659
3660 SPEEX_SET_HIGH_MODE*
3661 \begin_inset Formula $\dagger $
3662 \end_inset 
3663
3664
3665 \layout Description
3666
3667 SPEEX_GET_HIGH_MODE*
3668 \begin_inset Formula $\dagger $
3669 \end_inset 
3670
3671
3672 \layout Description
3673
3674 SPEEX_SET_VBR* Set variable bit-rate (VBR) to on (1) or off (0) (integer)
3675 \layout Description
3676
3677 SPEEX_GET_VBR* Get variable bit-rate (VBR) status (integer)
3678 \layout Description
3679
3680 SPEEX_SET_VBR_QUALITY* Set the encoder VBR speech quality (integer 0 to
3681  10)
3682 \layout Description
3683
3684 SPEEX_GET_VBR_QUALITY* Get the current encoder VBR speech quality (integer
3685  0 to 10)
3686 \layout Description
3687
3688 SPEEX_SET_COMPLEXITY* Set the CPU resources allowed for the encoder
3689 \layout Description
3690
3691 SPEEX_GET_COMPLEXITY* Get the CPU resources allowed for the encoder
3692 \layout Description
3693
3694 SPEEX_SET_BITRATE* Set the bit-rate to use to the closest value not exceeding
3695  the parameter (integer in bps)
3696 \layout Description
3697
3698 SPEEX_GET_BITRATE Get the current bit-rate in use (integer in bps)
3699 \layout Description
3700
3701 SPEEX_SET_SAMPLING_RATE Set real sampling rate (is used to determine real
3702  bit-rate)
3703 \layout Description
3704
3705 SPEEX_GET_SAMPLING_RATE Get real sampling rate (is used to determine real
3706  bit-rate)
3707 \layout Description
3708
3709 * applies only to the encoder
3710 \layout Description
3711
3712 ** applies only to the decoder
3713 \layout Description
3714
3715
3716 \begin_inset Formula $\dagger $
3717 \end_inset 
3718
3719  normally only used internally
3720 \layout Subsection
3721
3722 Mode queries
3723 \layout Standard
3724
3725 Speex modes have a querry system similar to the speex_encoder_ctl and speex_deco
3726 der_ctl calls.
3727  Since modes are read-only, it is only possible to get information about
3728  a particular mode.
3729  The function used to do that is:
3730 \layout LyX-Code
3731
3732 void speex_mode_query(SpeexMode *mode, int request, void *ptr);
3733 \layout Standard
3734
3735 The admissible values for request are (unless otherwise note, the values
3736  are returned through 
3737 \emph on 
3738 ptr
3739 \emph default 
3740 ):
3741 \layout Description
3742
3743 SPEEX_MODE_FRAME_SIZE Get the frame size (in samples) for the mode
3744 \layout Description
3745
3746 SPEEX_SUBMODE_BITRATE Get the bit-rate for a submode number specified throught
3747  
3748 \emph on 
3749 ptr
3750 \emph default 
3751 .
3752 \layout Subsection
3753
3754 Packing and in-band signalling
3755 \begin_inset LatexCommand \index{in-band signalling}
3756
3757 \end_inset 
3758
3759
3760 \layout Standard
3761
3762 Sometimes it is desirable to pack more than one frame per packet (or other
3763  basic unit of storage).
3764  The proper way to do it is to call speex_encode 
3765 \begin_inset Formula $N$
3766 \end_inset 
3767
3768  times before writing the stream with speex_bits_write.
3769  In cases where the number of frames is not determined by an out-of-band
3770  mechanism, it is possible to include a terminator code.
3771  That terminator consists of the code 15 (decimal) encoded with 5 bits,
3772  as shown in figure 
3773 \begin_inset LatexCommand \ref{cap:quality_vs_bps}
3774
3775 \end_inset 
3776
3777 .
3778  
3779 \layout Standard
3780
3781 It is also possible to send in-band 
3782 \begin_inset Quotes eld
3783 \end_inset 
3784
3785 messages
3786 \begin_inset Quotes erd
3787 \end_inset 
3788
3789  to the other side.
3790  All these messages are encoded as a 
3791 \begin_inset Quotes eld
3792 \end_inset 
3793
3794 pseudo-frame
3795 \begin_inset Quotes erd
3796 \end_inset 
3797
3798  of mode 14 which contain a 4-bit message type code, followed by the message.
3799  Table 
3800 \begin_inset LatexCommand \ref{cap:In-band-signalling-codes}
3801
3802 \end_inset 
3803
3804  lists the available codes, their meaning and the size of the message that
3805  follow.
3806  Most of these messages are requests that are sent to the encoder or decoder
3807  on the other end, which is free to comply or ignore them.
3808  By default, all in-band messages are ignored.
3809 \layout Standard
3810
3811
3812 \begin_inset Float table
3813 placement htbp
3814 wide false
3815 collapsed false
3816
3817 \layout Standard
3818
3819
3820 \begin_inset  Tabular
3821 <lyxtabular version="3" rows="17" columns="3">
3822 <features>
3823 <column alignment="center" valignment="top" leftline="true" width="0pt">
3824 <column alignment="center" valignment="top" leftline="true" width="0pt">
3825 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
3826 <row topline="true" bottomline="true">
3827 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3828 \begin_inset Text
3829
3830 \layout Standard
3831
3832 code
3833 \end_inset 
3834 </cell>
3835 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3836 \begin_inset Text
3837
3838 \layout Standard
3839
3840 Size (bits)
3841 \end_inset 
3842 </cell>
3843 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3844 \begin_inset Text
3845
3846 \layout Standard
3847
3848 Content
3849 \end_inset 
3850 </cell>
3851 </row>
3852 <row topline="true">
3853 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3854 \begin_inset Text
3855
3856 \layout Standard
3857
3858 0
3859 \end_inset 
3860 </cell>
3861 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3862 \begin_inset Text
3863
3864 \layout Standard
3865
3866 1
3867 \end_inset 
3868 </cell>
3869 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3870 \begin_inset Text
3871
3872 \layout Standard
3873
3874 Asks decoder to set perceptual enhancement off (0) or on(1)
3875 \end_inset 
3876 </cell>
3877 </row>
3878 <row topline="true">
3879 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3880 \begin_inset Text
3881
3882 \layout Standard
3883
3884 1
3885 \end_inset 
3886 </cell>
3887 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3888 \begin_inset Text
3889
3890 \layout Standard
3891
3892 1
3893 \end_inset 
3894 </cell>
3895 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3896 \begin_inset Text
3897
3898 \layout Standard
3899
3900 Notify decoder of discontinuous transmission (DTX)
3901 \end_inset 
3902 </cell>
3903 </row>
3904 <row topline="true">
3905 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3906 \begin_inset Text
3907
3908 \layout Standard
3909
3910 2
3911 \end_inset 
3912 </cell>
3913 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3914 \begin_inset Text
3915
3916 \layout Standard
3917
3918 4
3919 \end_inset 
3920 </cell>
3921 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3922 \begin_inset Text
3923
3924 \layout Standard
3925
3926 Asks encoder to switch to mode N
3927 \end_inset 
3928 </cell>
3929 </row>
3930 <row topline="true">
3931 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3932 \begin_inset Text
3933
3934 \layout Standard
3935
3936 3
3937 \end_inset 
3938 </cell>
3939 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3940 \begin_inset Text
3941
3942 \layout Standard
3943
3944 4
3945 \end_inset 
3946 </cell>
3947 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3948 \begin_inset Text
3949
3950 \layout Standard
3951
3952 Asks encoder to switch to mode N for low-band
3953 \end_inset 
3954 </cell>
3955 </row>
3956 <row topline="true">
3957 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3958 \begin_inset Text
3959
3960 \layout Standard
3961
3962 4
3963 \end_inset 
3964 </cell>
3965 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3966 \begin_inset Text
3967
3968 \layout Standard
3969
3970 4
3971 \end_inset 
3972 </cell>
3973 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3974 \begin_inset Text
3975
3976 \layout Standard
3977
3978 Asks encoder to switch to mode N for high-band
3979 \end_inset 
3980 </cell>
3981 </row>
3982 <row topline="true">
3983 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3984 \begin_inset Text
3985
3986 \layout Standard
3987
3988 5
3989 \end_inset 
3990 </cell>
3991 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3992 \begin_inset Text
3993
3994 \layout Standard
3995
3996 4
3997 \end_inset 
3998 </cell>
3999 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4000 \begin_inset Text
4001
4002 \layout Standard
4003
4004 Asks encoder to switch to quality N for VBR
4005 \end_inset 
4006 </cell>
4007 </row>
4008 <row topline="true">
4009 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4010 \begin_inset Text
4011
4012 \layout Standard
4013
4014 6
4015 \end_inset 
4016 </cell>
4017 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4018 \begin_inset Text
4019
4020 \layout Standard
4021
4022 4
4023 \end_inset 
4024 </cell>
4025 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4026 \begin_inset Text
4027
4028 \layout Standard
4029
4030 Request acknowloedge (0=no, 1=all, 2=only for in-band data)
4031 \end_inset 
4032 </cell>
4033 </row>
4034 <row topline="true">
4035 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4036 \begin_inset Text
4037
4038 \layout Standard
4039
4040 7
4041 \end_inset 
4042 </cell>
4043 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4044 \begin_inset Text
4045
4046 \layout Standard
4047
4048 4
4049 \end_inset 
4050 </cell>
4051 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4052 \begin_inset Text
4053
4054 \layout Standard
4055
4056 Asks encoder to set VBR off (0), on(1), VAD-only (2)
4057 \end_inset 
4058 </cell>
4059 </row>
4060 <row topline="true">
4061 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4062 \begin_inset Text
4063
4064 \layout Standard
4065
4066 8
4067 \end_inset 
4068 </cell>
4069 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4070 \begin_inset Text
4071
4072 \layout Standard
4073
4074 8
4075 \end_inset 
4076 </cell>
4077 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4078 \begin_inset Text
4079
4080 \layout Standard
4081
4082 Transmit (8-bit) character to the other end
4083 \end_inset 
4084 </cell>
4085 </row>
4086 <row topline="true">
4087 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4088 \begin_inset Text
4089
4090 \layout Standard
4091
4092 9
4093 \end_inset 
4094 </cell>
4095 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4096 \begin_inset Text
4097
4098 \layout Standard
4099
4100 8
4101 \end_inset 
4102 </cell>
4103 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4104 \begin_inset Text
4105
4106 \layout Standard
4107
4108 Intensity stereo information
4109 \end_inset 
4110 </cell>
4111 </row>
4112 <row topline="true">
4113 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4114 \begin_inset Text
4115
4116 \layout Standard
4117
4118 10
4119 \end_inset 
4120 </cell>
4121 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4122 \begin_inset Text
4123
4124 \layout Standard
4125
4126 16
4127 \end_inset 
4128 </cell>
4129 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4130 \begin_inset Text
4131
4132 \layout Standard
4133
4134 Announce maximum bit-rate acceptable (N in bytes/second)
4135 \end_inset 
4136 </cell>
4137 </row>
4138 <row topline="true">
4139 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4140 \begin_inset Text
4141
4142 \layout Standard
4143
4144 11
4145 \end_inset 
4146 </cell>
4147 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4148 \begin_inset Text
4149
4150 \layout Standard
4151
4152 16
4153 \end_inset 
4154 </cell>
4155 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4156 \begin_inset Text
4157
4158 \layout Standard
4159
4160 reserved
4161 \end_inset 
4162 </cell>
4163 </row>
4164 <row topline="true">
4165 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4166 \begin_inset Text
4167
4168 \layout Standard
4169
4170 12
4171 \end_inset 
4172 </cell>
4173 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4174 \begin_inset Text
4175
4176 \layout Standard
4177
4178 32
4179 \end_inset 
4180 </cell>
4181 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4182 \begin_inset Text
4183
4184 \layout Standard
4185
4186 Acknowledge receiving packet N
4187 \end_inset 
4188 </cell>
4189 </row>
4190 <row topline="true">
4191 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4192 \begin_inset Text
4193
4194 \layout Standard
4195
4196 13
4197 \end_inset 
4198 </cell>
4199 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4200 \begin_inset Text
4201
4202 \layout Standard
4203
4204 32
4205 \end_inset 
4206 </cell>
4207 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4208 \begin_inset Text
4209
4210 \layout Standard
4211
4212 reserved
4213 \end_inset 
4214 </cell>
4215 </row>
4216 <row topline="true">
4217 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4218 \begin_inset Text
4219
4220 \layout Standard
4221
4222 14
4223 \end_inset 
4224 </cell>
4225 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4226 \begin_inset Text
4227
4228 \layout Standard
4229
4230 64
4231 \end_inset 
4232 </cell>
4233 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4234 \begin_inset Text
4235
4236 \layout Standard
4237
4238 reserved
4239 \end_inset 
4240 </cell>
4241 </row>
4242 <row topline="true" bottomline="true">
4243 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4244 \begin_inset Text
4245
4246 \layout Standard
4247
4248 15
4249 \end_inset 
4250 </cell>
4251 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4252 \begin_inset Text
4253
4254 \layout Standard
4255
4256 64
4257 \end_inset 
4258 </cell>
4259 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4260 \begin_inset Text
4261
4262 \layout Standard
4263
4264 reserved
4265 \end_inset 
4266 </cell>
4267 </row>
4268 </lyxtabular>
4269
4270 \end_inset 
4271
4272
4273 \layout Caption
4274
4275 In-band signalling codes
4276 \begin_inset LatexCommand \label{cap:In-band-signalling-codes}
4277
4278 \end_inset 
4279
4280
4281 \end_inset 
4282
4283
4284 \layout Standard
4285
4286 Finally, applications may define custom in-band messages using mode 13.
4287  The size of the message in bytes is encoded with 5 bits, so that the decoder
4288  can skip it if it doesn't know how to interpret it.
4289 \layout Section
4290 \pagebreak_top 
4291 Formats and standards
4292 \begin_inset LatexCommand \index{standards}
4293
4294 \end_inset 
4295
4296
4297 \layout Standard
4298
4299 Speex can encode speech in both narrowband and wideband and provides different
4300  bit-rates.
4301  However not all features must be supported by a certain implementation
4302  or device.
4303  In order to be said 
4304 \begin_inset Quotes eld
4305 \end_inset 
4306
4307 Speex compatible
4308 \begin_inset Quotes erd
4309 \end_inset 
4310
4311  (whatever that means), an implementation must implement at least a basic
4312  set of features.
4313 \layout Standard
4314
4315 At the minimum, all narrowband modes of operation MUST be supported at the
4316  decoder.
4317  This includes the decoding of a wideband bit-stream by the narrowband decoder
4318 \begin_inset Foot
4319 collapsed true
4320
4321 \layout Standard
4322
4323 The wideband bit-stream contains an embedded narrowband bit-stream which
4324  can be decoded alone
4325 \end_inset 
4326
4327 .
4328  If present, a wideband decoder MUST be able to decode a narrowband stream,
4329  and MAY either be able to decode all wideband modes or be able to decode
4330  the embedded narrowband part of all modes (which includes ignoring the
4331  high-band bits).
4332 \layout Standard
4333
4334 For encoders, at least one narrowband or wideband mode MUST be supported.
4335  The main reason why all encoding modes do not have to be supported is that
4336  some platforms may not be able to handle the complexity of encoding in
4337  some modes.
4338 \layout Subsection
4339
4340 RTP
4341 \begin_inset LatexCommand \index{RTP}
4342
4343 \end_inset 
4344
4345  Payload Format 
4346 \layout Standard
4347
4348 The latest RTP payload draft can be found at 
4349 \begin_inset LatexCommand \url{http://www.speex.org/drafts/latest}
4350
4351 \end_inset 
4352
4353 .
4354  We are (2002/11/11) about to send the latest draft to the IETF for comments.
4355  
4356 \layout Comment
4357
4358 Since Speex encoded frames already contain mode information, they can be
4359  sent without any other information in an RTP packet.
4360  If more than one frame is transmitted, no byte padding is performed at
4361  the end of frames, except the last one.
4362  The number of frames contained in each packet MUST be transmitted out-of-band.
4363  
4364 \layout Subsection
4365
4366 MIME Type
4367 \layout Standard
4368
4369 Speex will use the MIME type 
4370 \family typewriter 
4371 audio/speex
4372 \family default 
4373 .
4374  We will apply for that type in the near future.
4375 \layout Subsection
4376
4377 Ogg
4378 \begin_inset LatexCommand \index{Ogg}
4379
4380 \end_inset 
4381
4382  file format
4383 \layout Standard
4384
4385 Speex bit-streams can be stored in Ogg files.
4386  In this case, the first packet of the Ogg file contains the Speex header
4387  described in table 
4388 \begin_inset LatexCommand \ref{cap:ogg_speex_header}
4389
4390 \end_inset 
4391
4392 .
4393  All integer fields in the headers are stored as little-endian.
4394  The 
4395 \family typewriter 
4396 speex_string
4397 \family default 
4398  field must contain the 
4399 \begin_inset Quotes eld
4400 \end_inset 
4401
4402
4403 \family typewriter 
4404 Speex
4405 \family default 
4406 \SpecialChar ~
4407 \SpecialChar ~
4408 \SpecialChar ~
4409
4410 \begin_inset Quotes eld
4411 \end_inset 
4412
4413  (with 3 training spaces), which identifies the bit-stream.
4414  The next field, 
4415 \family typewriter 
4416 speex_version
4417 \family default 
4418  contains the version of Speex that encoded the file.
4419  For now, refer to speex_header.[ch] for more info.
4420  The 
4421 \emph on 
4422 beginning of stream
4423 \emph default 
4424  (
4425 \family typewriter 
4426 b_o_s
4427 \family default 
4428 ) flag is set to 1 for the header.
4429  The header packet has 
4430 \family typewriter 
4431 packetno=0
4432 \family default 
4433  and 
4434 \family typewriter 
4435 granulepos=0
4436 \family default 
4437 .
4438 \layout Standard
4439
4440 The second packet contains the Speex comment header.
4441  The format used is the Vorbis comment format described here: http://www.xiph.org/
4442 ogg/vorbis/doc/v-comment.html .
4443  This packet has 
4444 \family typewriter 
4445 packetno=1
4446 \family default 
4447  and 
4448 \family typewriter 
4449 granulepos=0
4450 \family default 
4451 .
4452 \layout Standard
4453
4454 The third and subsequant packets each contain one or more (number found
4455  in header) Speex frames.
4456  These are identified with 
4457 \family typewriter 
4458 packetno
4459 \family default 
4460  starting from 2 and the 
4461 \family typewriter 
4462 granulepos
4463 \family default 
4464  is the number of the last sample encoded in that packet.
4465  Le last of these packets has the 
4466 \emph on 
4467 end of stream
4468 \emph default 
4469  (
4470 \family typewriter 
4471 e_o_s
4472 \family default 
4473 ) flag is set to 1.
4474 \layout Standard
4475
4476
4477 \begin_inset Float table
4478 placement htbp
4479 wide true
4480 collapsed false
4481
4482 \layout Standard
4483
4484
4485 \begin_inset  Tabular
4486 <lyxtabular version="3" rows="16" columns="3">
4487 <features>
4488 <column alignment="center" valignment="top" leftline="true" width="0pt">
4489 <column alignment="center" valignment="top" leftline="true" width="0pt">
4490 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
4491 <row topline="true" bottomline="true">
4492 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4493 \begin_inset Text
4494
4495 \layout Standard
4496
4497 Field
4498 \end_inset 
4499 </cell>
4500 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4501 \begin_inset Text
4502
4503 \layout Standard
4504
4505 Type
4506 \end_inset 
4507 </cell>
4508 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4509 \begin_inset Text
4510
4511 \layout Standard
4512
4513 Size
4514 \end_inset 
4515 </cell>
4516 </row>
4517 <row topline="true">
4518 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4519 \begin_inset Text
4520
4521 \layout Standard
4522
4523 speex_string
4524 \end_inset 
4525 </cell>
4526 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4527 \begin_inset Text
4528
4529 \layout Standard
4530
4531 char[]
4532 \end_inset 
4533 </cell>
4534 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4535 \begin_inset Text
4536
4537 \layout Standard
4538
4539 8
4540 \end_inset 
4541 </cell>
4542 </row>
4543 <row topline="true">
4544 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4545 \begin_inset Text
4546
4547 \layout Standard
4548
4549 speex_version
4550 \end_inset 
4551 </cell>
4552 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4553 \begin_inset Text
4554
4555 \layout Standard
4556
4557 char[]
4558 \end_inset 
4559 </cell>
4560 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4561 \begin_inset Text
4562
4563 \layout Standard
4564
4565 20
4566 \end_inset 
4567 </cell>
4568 </row>
4569 <row topline="true">
4570 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4571 \begin_inset Text
4572
4573 \layout Standard
4574
4575 speex_header_version
4576 \end_inset 
4577 </cell>
4578 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4579 \begin_inset Text
4580
4581 \layout Standard
4582
4583 int
4584 \end_inset 
4585 </cell>
4586 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4587 \begin_inset Text
4588
4589 \layout Standard
4590
4591 4
4592 \end_inset 
4593 </cell>
4594 </row>
4595 <row topline="true">
4596 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4597 \begin_inset Text
4598
4599 \layout Standard
4600
4601 header_size
4602 \end_inset 
4603 </cell>
4604 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4605 \begin_inset Text
4606
4607 \layout Standard
4608
4609 int
4610 \end_inset 
4611 </cell>
4612 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4613 \begin_inset Text
4614
4615 \layout Standard
4616
4617 4
4618 \end_inset 
4619 </cell>
4620 </row>
4621 <row topline="true">
4622 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4623 \begin_inset Text
4624
4625 \layout Standard
4626
4627 rate
4628 \end_inset 
4629 </cell>
4630 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4631 \begin_inset Text
4632
4633 \layout Standard
4634
4635 int
4636 \end_inset 
4637 </cell>
4638 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4639 \begin_inset Text
4640
4641 \layout Standard
4642
4643 4
4644 \end_inset 
4645 </cell>
4646 </row>
4647 <row topline="true">
4648 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4649 \begin_inset Text
4650
4651 \layout Standard
4652
4653 mode
4654 \end_inset 
4655 </cell>
4656 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4657 \begin_inset Text
4658
4659 \layout Standard
4660
4661 int
4662 \end_inset 
4663 </cell>
4664 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4665 \begin_inset Text
4666
4667 \layout Standard
4668
4669 4
4670 \end_inset 
4671 </cell>
4672 </row>
4673 <row topline="true">
4674 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4675 \begin_inset Text
4676
4677 \layout Standard
4678
4679 mode_bitstream_version
4680 \end_inset 
4681 </cell>
4682 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4683 \begin_inset Text
4684
4685 \layout Standard
4686
4687 int
4688 \end_inset 
4689 </cell>
4690 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4691 \begin_inset Text
4692
4693 \layout Standard
4694
4695 4
4696 \end_inset 
4697 </cell>
4698 </row>
4699 <row topline="true">
4700 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4701 \begin_inset Text
4702
4703 \layout Standard
4704
4705 nb_channels
4706 \end_inset 
4707 </cell>
4708 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4709 \begin_inset Text
4710
4711 \layout Standard
4712
4713 int
4714 \end_inset 
4715 </cell>
4716 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4717 \begin_inset Text
4718
4719 \layout Standard
4720
4721 4
4722 \end_inset 
4723 </cell>
4724 </row>
4725 <row topline="true">
4726 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4727 \begin_inset Text
4728
4729 \layout Standard
4730
4731 bitrate
4732 \end_inset 
4733 </cell>
4734 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4735 \begin_inset Text
4736
4737 \layout Standard
4738
4739 int
4740 \end_inset 
4741 </cell>
4742 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4743 \begin_inset Text
4744
4745 \layout Standard
4746
4747 4
4748 \end_inset 
4749 </cell>
4750 </row>
4751 <row topline="true">
4752 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4753 \begin_inset Text
4754
4755 \layout Standard
4756
4757 frame_size
4758 \end_inset 
4759 </cell>
4760 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4761 \begin_inset Text
4762
4763 \layout Standard
4764
4765 int
4766 \end_inset 
4767 </cell>
4768 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4769 \begin_inset Text
4770
4771 \layout Standard
4772
4773 4
4774 \end_inset 
4775 </cell>
4776 </row>
4777 <row topline="true">
4778 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4779 \begin_inset Text
4780
4781 \layout Standard
4782
4783 vbr
4784 \end_inset 
4785 </cell>
4786 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4787 \begin_inset Text
4788
4789 \layout Standard
4790
4791 int
4792 \end_inset 
4793 </cell>
4794 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4795 \begin_inset Text
4796
4797 \layout Standard
4798
4799 4
4800 \end_inset 
4801 </cell>
4802 </row>
4803 <row topline="true">
4804 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4805 \begin_inset Text
4806
4807 \layout Standard
4808
4809 frames_per_packet
4810 \end_inset 
4811 </cell>
4812 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4813 \begin_inset Text
4814
4815 \layout Standard
4816
4817 int
4818 \end_inset 
4819 </cell>
4820 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4821 \begin_inset Text
4822
4823 \layout Standard
4824
4825 4
4826 \end_inset 
4827 </cell>
4828 </row>
4829 <row topline="true">
4830 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4831 \begin_inset Text
4832
4833 \layout Standard
4834
4835 reserved1
4836 \end_inset 
4837 </cell>
4838 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4839 \begin_inset Text
4840
4841 \layout Standard
4842
4843 int
4844 \end_inset 
4845 </cell>
4846 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4847 \begin_inset Text
4848
4849 \layout Standard
4850
4851 4
4852 \end_inset 
4853 </cell>
4854 </row>
4855 <row topline="true">
4856 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4857 \begin_inset Text
4858
4859 \layout Standard
4860
4861 reserved2
4862 \end_inset 
4863 </cell>
4864 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4865 \begin_inset Text
4866
4867 \layout Standard
4868
4869 int
4870 \end_inset 
4871 </cell>
4872 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4873 \begin_inset Text
4874
4875 \layout Standard
4876
4877 4
4878 \end_inset 
4879 </cell>
4880 </row>
4881 <row topline="true" bottomline="true">
4882 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4883 \begin_inset Text
4884
4885 \layout Standard
4886
4887 reserved3
4888 \end_inset 
4889 </cell>
4890 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4891 \begin_inset Text
4892
4893 \layout Standard
4894
4895 int
4896 \end_inset 
4897 </cell>
4898 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4899 \begin_inset Text
4900
4901 \layout Standard
4902
4903 4
4904 \end_inset 
4905 </cell>
4906 </row>
4907 </lyxtabular>
4908
4909 \end_inset 
4910
4911
4912 \layout Caption
4913
4914 Ogg/Speex header packet
4915 \begin_inset LatexCommand \label{cap:ogg_speex_header}
4916
4917 \end_inset 
4918
4919
4920 \end_inset 
4921
4922
4923 \layout Standard
4924
4925
4926 \begin_inset ERT
4927 status Collapsed
4928
4929 \layout Standard
4930
4931 \backslash 
4932 clearpage
4933 \end_inset 
4934
4935
4936 \layout Section
4937 \start_of_appendix 
4938 FAQ
4939 \layout Subsection*
4940
4941 Vorbis is open-source
4942 \begin_inset LatexCommand \index{open-source}
4943
4944 \end_inset 
4945
4946  and patent-free
4947 \begin_inset LatexCommand \index{patent}
4948
4949 \end_inset 
4950
4951 , why do we need Speex?
4952 \layout Standard
4953
4954 Vorbis is a great project but its goals are not the same as Speex.
4955  Vorbis is mostly aimed at compressing music and audio in general, while
4956  Speex targets speech only.
4957  For that reason Speex can achieve much better results than Vorbis on speech,
4958  typically 2-4 times higher compression at equal quality.
4959 \layout Subsection*
4960
4961 Ogg
4962 \begin_inset LatexCommand \index{Ogg}
4963
4964 \end_inset 
4965
4966 , Speex, Vorbis
4967 \begin_inset LatexCommand \index{Vorbis}
4968
4969 \end_inset 
4970
4971 , what's the difference?
4972 \layout Standard
4973
4974 Ogg is a 
4975 \begin_inset Quotes eld
4976 \end_inset 
4977
4978 file format
4979 \begin_inset Quotes erd
4980 \end_inset 
4981
4982  for holding multimedia data.
4983  Vorbis is an audio codec that uses Ogg to store its bit-streams as files,
4984  hence the name Ogg Vorbis.
4985  Speex also uses the Ogg format to store its bit-streams as files, so technicall
4986 y they would be 
4987 \begin_inset Quotes eld
4988 \end_inset 
4989
4990 Ogg Speex
4991 \begin_inset Quotes erd
4992 \end_inset 
4993
4994  files (I prefer to call them just Speex files).
4995  One difference with Vorbis however, is that Speex is less tied with Ogg.
4996  Actually, if what you do is Voice of IP (VoIP), you don't need Ogg at all.
4997 \layout Subsection*
4998
4999 Can I use Speex for compressing music
5000 \begin_inset LatexCommand \index{music}
5001
5002 \end_inset 
5003
5004 ?
5005 \layout Standard
5006
5007 Just like Vorbis is not really adapted to speech, Speex is really not adapted
5008  for music.
5009  In most cases, you'll be better of with Vorbis when it comes to music.
5010 \layout Subsection*
5011
5012 I converted some MP3's to Speex and the quality is bad.
5013  What's wrong?
5014 \layout Standard
5015
5016 This is called transcoding and it will always result in much poorer quality
5017  than the original MP3.
5018  Unless you have a really good (size) reason to do so, never transcode speech.
5019  This is even valid for self transcoding (tandeming), i.e.
5020  If you decode a Speex file and re-encode it again at the same bit-rate,
5021  you will lose quality.
5022 \layout Subsection*
5023
5024 Does Speex run on Windows?
5025 \layout Standard
5026
5027 As of 0.8.0, Speex can now compile on Windows, though limited testing has
5028  been done so far.
5029 \layout Subsection*
5030
5031 Why is encoding so slow compared to decoding?
5032 \layout Standard
5033
5034 For most kinds of compression, encoding is inherently slower than decoding.
5035  In the case of Speex, encoding consists of finding, for each vector of
5036  5 to 10 samples, the entry that matches the best within a codebook consisting
5037  of 16 to 256 entries.
5038  On the other hand, at decoding all that needs to be done is lookup the
5039  right entry in the codebook using the encoded index.
5040  Since a lookup is much faster than a search, the decoder works much faster
5041  than the encoder.
5042 \layout Subsection*
5043
5044 Why is Speex so slow on my iPaq (or insert any platform without an FPU)?
5045 \layout Standard
5046
5047 Well the parenthesis provides the answer: no FPU (floating-point unit).
5048  The Speex code makes heavy use of floating-point operations.
5049  On devices with no FPU, all floating-point instructions need to be emulated.
5050  This is a very time consuming operation.
5051 \layout Subsection*
5052
5053 I'm getting unusual background noise (hiss) when using libspeex in my applicatio
5054 n.
5055  How do I fix that?
5056 \layout Standard
5057
5058 One of the cause could be scaling of the input speech.
5059  Speex expects signals to have a 
5060 \begin_inset Formula $\pm 2^{15}$
5061 \end_inset 
5062
5063  (signed short) dynamic range.
5064  If the dynamic range of your signals is too small (e.g.
5065  
5066 \begin_inset Formula $\pm 1.0$
5067 \end_inset 
5068
5069 ), you will suffer important quantization noise.
5070  A good target is to have a dynamic range around 
5071 \begin_inset Formula $\pm 8000$
5072 \end_inset 
5073
5074  which is large enough, but small enough to make sure there's no clipping
5075  when converting back to signed short.
5076 \layout Subsection*
5077
5078 I get very distorted speech when using libspeex in my application.
5079  What's wrong?
5080 \layout Standard
5081
5082 There are many possible causes for that.
5083  One of them is errors in the way the bits are manipulated.
5084  Another possible cause is the use of the same encoder or decoder state
5085  for more than one audio stream (channel), which produces strange effects
5086  with the filter memories.
5087  If the input speech has an amplitude close to 
5088 \begin_inset Formula $\pm 2^{15}$
5089 \end_inset 
5090
5091 , it is possible that at decoding, the amplitude be a bit higher than that,
5092  causing clipping when saving as 16-bit PCM.
5093 \layout Subsection*
5094
5095 Can Speex pass DTMF
5096 \begin_inset LatexCommand \index{DTMF}
5097
5098 \end_inset 
5099
5100 ?
5101 \layout Standard
5102
5103 I guess it all depends on the bit-rate used.
5104  Though no formal testing has yet been performed, I'd say don't go below
5105  the 15 kbps mode if you want DTMF to be transmitted correctly.
5106  Also, make sure you don't use the lowest complexity (see SPEEX_SET_COMPLEXITY
5107  or --comp option), as it causes important noise.
5108 \layout Subsection*
5109
5110 Can Speex pass V.9x modem signals correctly?
5111 \layout Standard
5112
5113 If I could to that I'd be very rich by now :-)
5114 \layout Subsection*
5115
5116 What is your (Jean-Marc) relationship with the University of Sherbrooke
5117  and how does Speex fit into that?
5118 \layout Standard
5119
5120 I am currently (2002/08/13) doing a Ph.D.
5121  at the University of Sherbrooke in mobile robotics.
5122  Although I did my master with the Sherbrooke speech coding group (in speech
5123  enhancement, not coding), I am not associated with them anymore.
5124  It should 
5125 \series bold 
5126 not
5127 \series default 
5128  be understood that they or the University of Sherbrooke endorse the Speex
5129  project in any way.
5130  Furthermore, Speex does not make use of any code or proprietary technology
5131  developed in the Sherbrooke speech coding group.
5132  
5133 \layout Subsection*
5134
5135 CELP, ACELP
5136 \begin_inset LatexCommand \index{ACELP}
5137
5138 \end_inset 
5139
5140 , what's the difference?
5141 \layout Standard
5142
5143 CELP stands for 
5144 \begin_inset Quotes eld
5145 \end_inset 
5146
5147 Code Excited Linear Prediction
5148 \begin_inset Quotes erd
5149 \end_inset 
5150
5151 , while ACELP stands for 
5152 \begin_inset Quotes eld
5153 \end_inset 
5154
5155
5156 \emph on 
5157 Algebraic
5158 \emph default 
5159  Code Excited Linear Prediction
5160 \begin_inset Quotes erd
5161 \end_inset 
5162
5163 .
5164  That means ACELP is a CELP technique that uses an algebraic codebook represente
5165 d as a sum of unit pulses, thus making the codebook search much more efficient.
5166  This technique was invented at the University of Sherbrooke and is now
5167  one of the most widely used form of CELP.
5168  Unfortunately, since it is patented, it cannot be used in Speex.
5169 \layout Section
5170 \pagebreak_top 
5171 GNU Free Documentation License
5172 \layout Standard
5173
5174 Version 1.1, March 2000
5175 \layout Standard
5176
5177 Copyright (C) 2000 Free Software Foundation, Inc.
5178  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted
5179  to copy and distribute verbatim copies of this license document, but changing
5180  it is not allowed.
5181  
5182 \layout Subsection*
5183
5184 0.
5185  PREAMBLE
5186 \layout Standard
5187
5188 The purpose of this License is to make a manual, textbook, or other written
5189  document "free" in the sense of freedom: to assure everyone the effective
5190  freedom to copy and redistribute it, with or without modifying it, either
5191  commercially or noncommercially.
5192  Secondarily, this License preserves for the author and publisher a way
5193  to get credit for their work, while not being considered responsible for
5194  modifications made by others.
5195 \layout Standard
5196
5197 This License is a kind of "copyleft", which means that derivative works
5198  of the document must themselves be free in the same sense.
5199  It complements the GNU General Public License, which is a copyleft license
5200  designed for free software.
5201 \layout Standard
5202
5203 We have designed this License in order to use it for manuals for free software,
5204  because free software needs free documentation: a free program should come
5205  with manuals providing the same freedoms that the software does.
5206  But this License is not limited to software manuals; it can be used for
5207  any textual work, regardless of subject matter or whether it is published
5208  as a printed book.
5209  We recommend this License principally for works whose purpose is instruction
5210  or reference.
5211  
5212 \layout Subsection*
5213
5214 1.
5215  APPLICABILITY AND DEFINITIONS
5216 \layout Standard
5217
5218 This License applies to any manual or other work that contains a notice
5219  placed by the copyright holder saying it can be distributed under the terms
5220  of this License.
5221  The "Document", below, refers to any such manual or work.
5222  Any member of the public is a licensee, and is addressed as "you".
5223 \layout Standard
5224
5225 A "Modified Version" of the Document means any work containing the Document
5226  or a portion of it, either copied verbatim, or with modifications and/or
5227  translated into another language.
5228 \layout Standard
5229
5230 A "Secondary Section" is a named appendix or a front-matter section of the
5231  Document that deals exclusively with the relationship of the publishers
5232  or authors of the Document to the Document's overall subject (or to related
5233  matters) and contains nothing that could fall directly within that overall
5234  subject.
5235  (For example, if the Document is in part a textbook of mathematics, a Secondary
5236  Section may not explain any mathematics.) The relationship could be a matter
5237  of historical connection with the subject or with related matters, or of
5238  legal, commercial, philosophical, ethical or political position regarding
5239  them.
5240 \layout Standard
5241
5242 The "Invariant Sections" are certain Secondary Sections whose titles are
5243  designated, as being those of Invariant Sections, in the notice that says
5244  that the Document is released under this License.
5245 \layout Standard
5246
5247 The "Cover Texts" are certain short passages of text that are listed, as
5248  Front-Cover Texts or Back-Cover Texts, in the notice that says that the
5249  Document is released under this License.
5250 \layout Standard
5251
5252 A "Transparent" copy of the Document means a machine-readable copy, represented
5253  in a format whose specification is available to the general public, whose
5254  contents can be viewed and edited directly and straightforwardly with generic
5255  text editors or (for images composed of pixels) generic paint programs
5256  or (for drawings) some widely available drawing editor, and that is suitable
5257  for input to text formatters or for automatic translation to a variety
5258  of formats suitable for input to text formatters.
5259  A copy made in an otherwise Transparent file format whose markup has been
5260  designed to thwart or discourage subsequent modification by readers is
5261  not Transparent.
5262  A copy that is not "Transparent" is called "Opaque".
5263 \layout Standard
5264
5265 Examples of suitable formats for Transparent copies include plain ASCII
5266  without markup, Texinfo input format, LaTeX input format, SGML or XML using
5267  a publicly available DTD, and standard-conforming simple HTML designed
5268  for human modification.
5269  Opaque formats include PostScript, PDF, proprietary formats that can be
5270  read and edited only by proprietary word processors, SGML or XML for which
5271  the DTD and/or processing tools are not generally available, and the machine-ge
5272 nerated HTML produced by some word processors for output purposes only.
5273 \layout Standard
5274
5275 The "Title Page" means, for a printed book, the title page itself, plus
5276  such following pages as are needed to hold, legibly, the material this
5277  License requires to appear in the title page.
5278  For works in formats which do not have any title page as such, "Title Page"
5279  means the text near the most prominent appearance of the work's title,
5280  preceding the beginning of the body of the text.
5281 \layout Subsection*
5282
5283 2.
5284  VERBATIM COPYING
5285 \layout Standard
5286
5287 You may copy and distribute the Document in any medium, either commercially
5288  or noncommercially, provided that this License, the copyright notices,
5289  and the license notice saying this License applies to the Document are
5290  reproduced in all copies, and that you add no other conditions whatsoever
5291  to those of this License.
5292  You may not use technical measures to obstruct or control the reading or
5293  further copying of the copies you make or distribute.
5294  However, you may accept compensation in exchange for copies.
5295  If you distribute a large enough number of copies you must also follow
5296  the conditions in section 3.
5297 \layout Standard
5298
5299 You may also lend copies, under the same conditions stated above, and you
5300  may publicly display copies.
5301 \layout Subsection*
5302
5303 3.
5304  COPYING IN QUANTITY
5305 \layout Standard
5306
5307 If you publish printed copies of the Document numbering more than 100, and
5308  the Document's license notice requires Cover Texts, you must enclose the
5309  copies in covers that carry, clearly and legibly, all these Cover Texts:
5310  Front-Cover Texts on the front cover, and Back-Cover Texts on the back
5311  cover.
5312  Both covers must also clearly and legibly identify you as the publisher
5313  of these copies.
5314  The front cover must present the full title with all words of the title
5315  equally prominent and visible.
5316  You may add other material on the covers in addition.
5317  Copying with changes limited to the covers, as long as they preserve the
5318  title of the Document and satisfy these conditions, can be treated as verbatim
5319  copying in other respects.
5320 \layout Standard
5321
5322 If the required texts for either cover are too voluminous to fit legibly,
5323  you should put the first ones listed (as many as fit reasonably) on the
5324  actual cover, and continue the rest onto adjacent pages.
5325 \layout Standard
5326
5327 If you publish or distribute Opaque copies of the Document numbering more
5328  than 100, you must either include a machine-readable Transparent copy along
5329  with each Opaque copy, or state in or with each Opaque copy a publicly-accessib
5330 le computer-network location containing a complete Transparent copy of the
5331  Document, free of added material, which the general network-using public
5332  has access to download anonymously at no charge using public-standard network
5333  protocols.
5334  If you use the latter option, you must take reasonably prudent steps, when
5335  you begin distribution of Opaque copies in quantity, to ensure that this
5336  Transparent copy will remain thus accessible at the stated location until
5337  at least one year after the last time you distribute an Opaque copy (directly
5338  or through your agents or retailers) of that edition to the public.
5339 \layout Standard
5340
5341 It is requested, but not required, that you contact the authors of the Document
5342  well before redistributing any large number of copies, to give them a chance
5343  to provide you with an updated version of the Document.
5344  
5345 \layout Subsection*
5346
5347 4.
5348  MODIFICATIONS
5349 \layout Standard
5350
5351 You may copy and distribute a Modified Version of the Document under the
5352  conditions of sections 2 and 3 above, provided that you release the Modified
5353  Version under precisely this License, with the Modified Version filling
5354  the role of the Document, thus licensing distribution and modification
5355  of the Modified Version to whoever possesses a copy of it.
5356  In addition, you must do these things in the Modified Version: 
5357 \layout Itemize
5358
5359 A.
5360  Use in the Title Page (and on the covers, if any) a title distinct from
5361  that of the Document, and from those of previous versions (which should,
5362  if there were any, be listed in the History section of the Document).
5363  You may use the same title as a previous version if the original publisher
5364  of that version gives permission.
5365 \layout Itemize
5366
5367 B.
5368  List on the Title Page, as authors, one or more persons or entities responsible
5369  for authorship of the modifications in the Modified Version, together with
5370  at least five of the principal authors of the Document (all of its principal
5371  authors, if it has less than five).
5372 \layout Itemize
5373
5374 C.