[xiph-commits] r14242 - trunk/speex/doc
jm at svn.xiph.org
jm at svn.xiph.org
Tue Nov 27 14:56:03 PST 2007
Author: jm
Date: 2007-11-27 14:56:03 -0800 (Tue, 27 Nov 2007)
New Revision: 14242
Modified:
trunk/speex/doc/manual.lyx
Log:
Doc update (jitter buffer and other random stuff)
Modified: trunk/speex/doc/manual.lyx
===================================================================
--- trunk/speex/doc/manual.lyx 2007-11-27 22:55:50 UTC (rev 14241)
+++ trunk/speex/doc/manual.lyx 2007-11-27 22:56:03 UTC (rev 14242)
@@ -922,7 +922,7 @@
\end_layout
\begin_layout Chapter
-Compiling
+Compiling and Porting
\end_layout
\begin_layout Standard
@@ -1034,11 +1034,11 @@
In general, any architecture that can natively compute the multiplication
of two signed 16-bit numbers (32-bit result) and runs at a sufficient clock
rate (architecture-dependent) is capable of running Speex.
- Architectures that are
+ Architectures on which Speex is
\series bold
known
\series default
- to be supported (it probably works on many others) are:
+ to work (it probably works on many others) are:
\end_layout
\begin_layout Itemize
@@ -1062,6 +1062,10 @@
\end_layout
\begin_layout Itemize
+Coldfire (68k family)
+\end_layout
+
+\begin_layout Itemize
TI C54xx & C55xx
\end_layout
@@ -1204,6 +1208,21 @@
\begin_layout Standard
+vq_nbest()
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+\begin_inset listings
+inline true
+status collapsed
+
+\begin_layout Standard
+
pitch_xcorr()
\end_layout
@@ -1227,6 +1246,48 @@
\end_layout
+\begin_layout Standard
+The filtering functions
+\begin_inset listings
+inline true
+status collapsed
+
+\begin_layout Standard
+
+filter_mem16()
+\end_layout
+
+\end_inset
+
+ and
+\begin_inset listings
+inline true
+status collapsed
+
+\begin_layout Standard
+
+iir_mem16()
+\end_layout
+
+\end_inset
+
+ are implemented in the direct form II transposed (DF2T).
+ However, for architectures based on multiply-accumulate (MAC), DF2T requires
+ frequent reload of the accumulator, which can make the code very slow.
+ For these architectures (e.g.
+ Blackfin and Coldfire), a better approach is to implement those functions
+ as direct form I (DF1), which is easier to express in terms of MAC.
+ When doing that however,
+\series bold
+it is important to make sure that the DF1 implementation still behaves like
+ the original DF2T behaviour when it comes to filter values
+\series default
+.
+ This is necessary because the filter is time-varrying and must compute
+ exactly the same value (not counting machine rounding) on any encoder or
+ decoder.
+\end_layout
+
\begin_layout Subsection
Memory optimisation
\end_layout
@@ -2283,7 +2344,7 @@
\end_inset
-)
+, default is on)
\end_layout
\begin_layout Description
@@ -2340,7 +2401,7 @@
\end_inset
- from 0 to 10)
+ from 0 to 10, default is 8)
\end_layout
\begin_layout Description
@@ -2420,7 +2481,7 @@
\end_inset
-)
+, default is off)
\end_layout
\begin_layout Description
@@ -2454,7 +2515,7 @@
\begin_inset Formula $\dagger$
\end_inset
- Set the encoder VBR speech quality (float 0 to 10)
+ Set the encoder VBR speech quality (float 0.0 to 10.0, default is 8.0)
\end_layout
\begin_layout Description
@@ -2482,7 +2543,7 @@
\end_inset
- from 1 to 10)
+ from 1 to 10, default is 2)
\end_layout
\begin_layout Description
@@ -2502,7 +2563,7 @@
\end_inset
- from 1 to 10)
+ from 1 to 10, default is 2)
\end_layout
\begin_layout Description
@@ -2510,8 +2571,7 @@
\begin_inset Formula $\dagger$
\end_inset
- Set the bit-rate to use to the closest value not exceeding the parameter
- (
+ Set the bit-rate to use the closest value not exceeding the parameter (
\begin_inset listings
inline true
status collapsed
@@ -2602,7 +2662,7 @@
\end_inset
-)
+, default is off)
\end_layout
\begin_layout Description
@@ -2648,7 +2708,7 @@
\end_inset
-)
+, default is off)
\end_layout
\begin_layout Description
@@ -2811,11 +2871,11 @@
\end_inset
-)
+, default is on)
\end_layout
\begin_layout Description
-SPEEX_TET_HIGHPASS Get the current high-pass filter status (
+SPEEX_GET_HIGHPASS Get the current high-pass filter status (
\begin_inset listings
inline true
status collapsed
@@ -3893,19 +3953,19 @@
\end_layout
\begin_layout Description
-SPEEX_PREPROCESS_SET_DEREVERB_LEVEL
+SPEEX_PREPROCESS_SET_DEREVERB_LEVEL Not working yet, do not use
\end_layout
\begin_layout Description
-SPEEX_PREPROCESS_GET_DEREVERB_LEVEL
+SPEEX_PREPROCESS_GET_DEREVERB_LEVEL Not working yet, do not use
\end_layout
\begin_layout Description
-SPEEX_PREPROCESS_SET_DEREVERB_DECAY
+SPEEX_PREPROCESS_SET_DEREVERB_DECAY Not working yet, do not use
\end_layout
\begin_layout Description
-SPEEX_PREPROCESS_GET_DEREVERB_DECAY
+SPEEX_PREPROCESS_GET_DEREVERB_DECAY Not working yet, do not use
\end_layout
\begin_layout Description
@@ -4028,11 +4088,11 @@
\begin_layout Description
SPEEX_PREPROCESS_SET_ECHO_STATE Set the associated echo canceller for residual
- echo suppression (NULL for no residual echo suppression)
+ echo suppression (pointer or NULL for no residual echo suppression)
\end_layout
\begin_layout Description
-SPEEX_PREPROCESS_GET_ECHO_STATE Get the associated echo canceller
+SPEEX_PREPROCESS_GET_ECHO_STATE Get the associated echo canceller (pointer)
\end_layout
\begin_layout Section
@@ -4600,6 +4660,15 @@
\end_layout
\begin_layout Standard
+As an example, for audio the timestamp field would be what is obtained from
+ the RTP timestamp field and the span would be the number of samples that
+ are encoded in the packet.
+ For Speex narrowband, span would be 160 if only one frame is included in
+ the packet.
+
+\end_layout
+
+\begin_layout Standard
When a packet arrives, it need to be inserter into the jitter buffer by:
\begin_inset listings
inline false
@@ -4612,7 +4681,7 @@
\begin_layout Standard
-/* Fill in the packet fields */
+/* Fill in each field in the packet struct */
\end_layout
\begin_layout Standard
@@ -4663,7 +4732,7 @@
and
\begin_inset listings
inline true
-status open
+status collapsed
\begin_layout Standard
@@ -4717,6 +4786,49 @@
\end_layout
+\begin_layout Standard
+The second argument is used to specify that we are still holding data that
+ has not been written to the playback device.
+ For instance, if 256 samples were needed by the soundcard (specified by
+
+\begin_inset listings
+inline true
+status collapsed
+
+\begin_layout Standard
+
+desired_span
+\end_layout
+
+\end_inset
+
+), but
+\begin_inset listings
+inline true
+status collapsed
+
+\begin_layout Standard
+
+jitter_buffer_get()
+\end_layout
+
+\end_inset
+
+ returned 320 samples, we would have
+\begin_inset listings
+inline true
+status open
+
+\begin_layout Standard
+
+remaining=64
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
\begin_layout Section
Resampler
\end_layout
@@ -4833,6 +4945,10 @@
\end_layout
+\begin_layout Standard
+To be continued...
+\end_layout
+
\begin_layout Section
Ring Buffer
\end_layout
More information about the commits
mailing list