192 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			192 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								################# 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
							 |