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