Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xiph/speex.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>2007-03-15 16:13:25 +0300
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>2007-03-15 16:13:25 +0300
commit4c7f0a5ffd7ea5e52968aad1e89108e124be012b (patch)
tree0c5858c0c5b1f04b9d20173f254ce47a1f098d72 /README.Trimedia
parent57656c5f88e699a8a6b6af442c736b0ef95cbf3d (diff)
Merging Trimedia support contributed by Hong Zhiqian (incomplete for now)
git-svn-id: http://svn.xiph.org/trunk/speex@12764 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'README.Trimedia')
-rw-r--r--README.Trimedia191
1 files changed, 191 insertions, 0 deletions
diff --git a/README.Trimedia b/README.Trimedia
new file mode 100644
index 0000000..c2db8dc
--- /dev/null
+++ b/README.Trimedia
@@ -0,0 +1,191 @@
+################# REMOVE warnings on trimedia compiler ##############################
+################# Not critical to compilation ##############################
+
+1. Change the following statements to remove warning for constant expression
+(i) mdf.c [if(0) --> #if 0]
+(ii) ltp.c [if(1) --> #if 1]
+(iii) preprocess.c [if(1) --> #if 1]
+(iv) sb_celp.c [if (SPEEX_SET_VBR_MAX_BITRATE<1) --> #if (SPEEX_SET_VBR_MAX_BITRATE<1)]
+
+2. add REMARK_ON macro to remove warning on not reference variable
+-- uses (void)<variable> to remove warning on not referenced variable
+-- #define REMARK_ON
+-- (void)<variable>
+-- #endif
+-- search for REMARK_ON on the following files
+(i) jitter.c
+(ii) lsp.c
+(iii) ltp.c
+(iv) mdf.c
+(v) filters.c
+(vi) filterbank.c
+(vii) cb_search.c
+(viii) vq.c
+(ix) vbr.c
+(x) stereo.c
+(xi) speex_callbacks.c
+(xii) preprocess.c
+
+3. commented out the following in pseudofloat.h for unused variable
+//static const spx_float_t FLOAT_HALF = {16384,-15};
+
+4. commented out unused variable in nb_celp.c
+//spx_word16_t *sp; ***unused variable***
+//sp=out+offset; ***unused variable***
+//int submode; ***unused variable***
+// ***unused variable***
+// advance = submode = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
+advance = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
+// ***unused variable***
+//advance = submode = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
+advance = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
+// spx_word16_t *exc; ***unused variable***
+// exc=st->exc+offset; ***unused variable***
+
+5. commented out unused variable in vbr.c
+//int va; ***unused variable***
+//va = 0; ***unused variable***
+//va = 1; ***unused variable***
+
+6. added HAVE_CONFIG into medfilter.c
+
+################# Patches for trimedia compiler ##############################
+################# Critical to compilation ##############################
+-- change the following in modes.c and speex.h as compiler does not support const * const...
+(i) modes.c
+#ifdef __TCS__
+const SpeexMode * speex_mode_list[SPEEX_NB_MODES] = {&speex_nb_mode, &speex_wb_mode, &speex_uwb_mode};
+#else
+const SpeexMode * const speex_mode_list[SPEEX_NB_MODES] = {&speex_nb_mode, &speex_wb_mode, &speex_uwb_mode};
+#endif
+
+(ii) speex.h
+#ifdef __TCS__
+extern const SpeexMode * speex_mode_list[SPEEX_NB_MODES];
+#else
+extern const SpeexMode * const speex_mode_list[SPEEX_NB_MODES];
+#endif
+
+-- added the #elif defined (TM_ASM) to the following files for optimized codes
+(1) arch.h
+(2) cb_search.c
+(3) fftwrap.c
+(4) filterbank.c
+(5) filters.c
+(6) kiss_fft.c
+(7) kiss_fftr.c
+(8) lpc.c
+(9) lsp.c
+(10) ltp.c
+(11) mdf.c
+(12) misc.c
+(13) preprocess.c
+(14) quant_lsp.c
+(15) vq.c
+
+-- reorder macro definations in quant_lsp.c
+#ifdef FIXED_POINT
+
+#define LSP_LINEAR(i) (SHL16(i+1,11))
+#define LSP_LINEAR_HIGH(i) (ADD16(MULT16_16_16(i,2560),6144))
+#define LSP_DIV_256(x) (SHL16((spx_word16_t)x, 5))
+#define LSP_DIV_512(x) (SHL16((spx_word16_t)x, 4))
+#define LSP_DIV_1024(x) (SHL16((spx_word16_t)x, 3))
+#define LSP_PI 25736
+
+#else
+
+#define LSP_LINEAR(i) (.25*(i)+.25)
+#define LSP_LINEAR_HIGH(i) (.3125*(i)+.75)
+#define LSP_SCALE 256.
+#define LSP_DIV_256(x) (0.0039062*(x))
+#define LSP_DIV_512(x) (0.0019531*(x))
+#define LSP_DIV_1024(x) (0.00097656*(x))
+#define LSP_PI M_PI
+
+#endif
+
+#ifdef BFIN_ASM
+#include "quant_lsp_bfin.h"
+#elif defined (TM_ASM)
+#include "quant_lsp_tm.h"
+#endif
+
+-- added macro PREPROCESS_MDF_FLOAT to allow using of floating point
+-- in mdf and preprocess while keeping fixed point in encoder/decoder
+-- This is due to the fact that preprocess/mdf run faster on floating
+-- point on trimedia
+-- added the following 3 lines to the files below
+#ifdef PREPROCESS_MDF_FLOAT
+#undef FIXED_POINT
+#endif
+(1) mdf.c
+(2) preprocess.c
+(3) filterbank.c
+(4) fftwrap.c
+(5) kiss_fft.c
+(6) kiss_fftr.c
+
+-- created a new USE_COMPACT_KISS_FFT for fftwrap.c and shifted defination
+-- to config file so that user configure the usage of fft on config.h
+-- TOEXPLORE:is it possible to share table between mdf/preprocess?
+-- Introducing this macro made the following changes in C code
+-- New macro to facilitate integration
+(grouping real/complex for dc and nyquist frequency seems to require a large
+amount of memory for mdf, therefore did not made the changes for that)
+(1) modify preprocess.c on init and destroy
+(2) modify mdf.c on init and destroy
+(3) shifted power_spectrum to fftwrap.c to share optimised code between
+ preprocess.c and mdf.c
+
+################# NOTES ##############################
+(1) fixed point encoding/decoding is tested on narrowband
+ - some of the QX fractions are packed together to
+ (frac1 * a + frac2 * a) >> X (should be more accurate in rounding)
+ instead of
+ ((frac1 * a) >> X) + ((frac2 * a) >> X)
+ will cause some different between optimized and unoptimized code.
+ tried decoding/encoding optimized code on some audio files retains
+ the clearity of the word
+
+ - wideband/ultrawideband is not heavily tested yet
+
+(2) optimized fixed point code requires memory alignment
+ - used config to debug on functions where memory is not align
+
+(3) floating point optimization for preprocess/mdf is tested
+ fixed point is not tested yet (except fft/filterbank)
+ Note (1) also applies to sround in fft for fixed point
+ some optimization is provided for fixed point as it requires lesser
+ memory compared to floating point.
+
+(4) unroll configurations provided to reduce code size if required
+
+(5) use profile options only if compiler profiling fails to work
+
+(6) can't include the makefile as it is close proprietary
+
+################# TODO:For Trimedia ##############################
+(1) Possible add TSSA wrapper for codec but don't think this can be open source.
+(2) Optimizations for fixed point in mdf/preprocess
+
+################# Added Files ##############################
+- _kiss_fft_guts_tm.h
+- cb_search_tm.h
+- fftwrap_tm.h
+- filterbank_tm.h
+- filters_tm.h
+- fixed_tm.h
+- kiss_fft_tm.h
+- kiss_fftr_tm.h
+- lpc_tm.h
+- lsp_tm.h
+- ltp_tm.h
+- mdf_tm.h
+- misc_tm.h
+- preprocess_tm.h
+- profile_tm.h
+- quant_lsp_tm.h
+- vq_tm.h
+- config.h
+- speex_config_types.h