diff options
author | Henri Herscher <henri@oreka.org> | 2006-11-10 03:39:23 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-11-10 03:39:23 +0000 |
commit | 3e98fa80955a23e12ceae8944b2fd9537443dd26 (patch) | |
tree | ae7ba2c422184995d9f8c07b594ceb52b1fd4175 /orkbasecxx/filters | |
parent | 4fc16507815bc36b055aa4cc8b4160e318ad1dc3 (diff) |
GSM RTP payload type can now be decoded under Linux.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@351 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkbasecxx/filters')
-rw-r--r-- | orkbasecxx/filters/Makefile.am | 1 | ||||
-rw-r--r-- | orkbasecxx/filters/gsm/GsmFilters.cpp | 3 | ||||
-rw-r--r-- | orkbasecxx/filters/gsm/GsmFilters.h | 3 | ||||
-rw-r--r-- | orkbasecxx/filters/gsm/Makefile.am | 7 | ||||
-rw-r--r-- | orkbasecxx/filters/gsm/gsm610/Makefile.am | 9 | ||||
-rw-r--r-- | orkbasecxx/filters/gsm/gsm610/cscope.out | 15350 |
6 files changed, 21 insertions, 15352 deletions
diff --git a/orkbasecxx/filters/Makefile.am b/orkbasecxx/filters/Makefile.am new file mode 100644 index 0000000..65aed24 --- /dev/null +++ b/orkbasecxx/filters/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = gsm diff --git a/orkbasecxx/filters/gsm/GsmFilters.cpp b/orkbasecxx/filters/gsm/GsmFilters.cpp index e35017c..90ab6d5 100644 --- a/orkbasecxx/filters/gsm/GsmFilters.cpp +++ b/orkbasecxx/filters/gsm/GsmFilters.cpp @@ -99,4 +99,5 @@ void GsmToPcmFilter::CaptureEventIn(CaptureEventRef& event) void GsmToPcmFilter::CaptureEventOut(CaptureEventRef& event)
{
;
-}
\ No newline at end of file +}
+
diff --git a/orkbasecxx/filters/gsm/GsmFilters.h b/orkbasecxx/filters/gsm/GsmFilters.h index b030fb0..4119785 100644 --- a/orkbasecxx/filters/gsm/GsmFilters.h +++ b/orkbasecxx/filters/gsm/GsmFilters.h @@ -35,4 +35,5 @@ public: private:
AudioChunkRef m_outputAudioChunk;
struct gsm_state * gsmState;
-};
\ No newline at end of file +};
+
diff --git a/orkbasecxx/filters/gsm/Makefile.am b/orkbasecxx/filters/gsm/Makefile.am new file mode 100644 index 0000000..26be37b --- /dev/null +++ b/orkbasecxx/filters/gsm/Makefile.am @@ -0,0 +1,7 @@ +METASOURCES = AUTO +SUBDIRS = gsm610 +noinst_LTLIBRARIES = libgsm.la +libgsm_la_SOURCES = GsmFilters.cpp + +INCLUDES = -I@top_srcdir@ -I./gsm610 +AM_CXXFLAGS = -D_REENTRANT diff --git a/orkbasecxx/filters/gsm/gsm610/Makefile.am b/orkbasecxx/filters/gsm/gsm610/Makefile.am new file mode 100644 index 0000000..aba1767 --- /dev/null +++ b/orkbasecxx/filters/gsm/gsm610/Makefile.am @@ -0,0 +1,9 @@ +METASOURCES = AUTO +noinst_LTLIBRARIES = libgsm610.la +libgsm610_la_SOURCES = add.c code.c decode.c gsm_create.c gsm_decode.c \ + gsm_destroy.c gsm_encode.c gsm_option.c \ + long_term.c lpc.c preprocess.c rpe.c \ + short_term.c table.c + +INCLUDES = -I@top_srcdir@ +AM_CFLAGS = -D_REENTRANT diff --git a/orkbasecxx/filters/gsm/gsm610/cscope.out b/orkbasecxx/filters/gsm/gsm610/cscope.out deleted file mode 100644 index c6b9268..0000000 --- a/orkbasecxx/filters/gsm/gsm610/cscope.out +++ /dev/null @@ -1,15350 +0,0 @@ -cscope 15 c:/sfTrunk/orkbasecxx/filters/gsm/gsm610 0000076221 - @add.c - -11 - ~<¡dio.h -> - -12 - ~<as£¹.h -> - -14 - ~"gsm610_´iv.h -" - -15 - ~"gsm.h -" - -17 - #§tu¿‹ -( -x -) \ - -18 (( -x -è< -MIN_WORD - ? MIN_WORD : (xè> -MAX_WORD - ? MAX_WORD: (x)) - - ) - -20 -wÜd - - $gsm_add - ( -wÜd - -a -, wÜd -b -) - -22 -lÚgwÜd - -sum - = (lÚgwÜd) -a - + (lÚgwÜd) -b -; - -23 - `§tu¿‹ -( -sum -); - -24 - } -} - -26 -wÜd - - $gsm_sub - ( -wÜd - -a -, wÜd -b -) - -28 -lÚgwÜd - -diff - = (lÚgwÜd) -a - - (lÚgwÜd) -b -; - -29 - `§tu¿‹ -( -diff -); - -30 - } -} - -32 -wÜd - - $gsm_muÉ - ( -wÜd - -a -, wÜd -b -) - -34 ià( -a - =ð -MIN_WORD - && -b - == MIN_WORD) - -35 -MAX_WORD -; - -37 - `SASR_L -Ð( -lÚgwÜd -) -a - * (lÚgwÜd) -b -, 15 ); - -38 - } -} - -40 -wÜd - - $gsm_muÉ_r - ( -wÜd - -a -, wÜd -b -) - -42 ià( -b - =ð -MIN_WORD - && -a - =ðMIN_WORDè -MAX_WORD -; - -44 -lÚgwÜd - -´od - = (lÚgwÜd) -a - * (lÚgwÜd) -b - + 16384; - -45 -´od - >>= 15; - -46 -´od - & 0xFFFF; - -48 - } -} - -50 -wÜd - - $gsm_abs - ( -wÜd - -a -) - -52 -a - < 0 ? (¨=ð -MIN_WORD - ? -MAX_WORD - : -a) :‡; - -53 - } -} - -55 -lÚgwÜd - - $gsm_L_muÉ - ( -wÜd - -a -, wÜd -b -) - -57 - `as£¹ -Ð -a - !ð -MIN_WORD - || -b - != MIN_WORD ); - -58 (( -lÚgwÜd -) -a - * (lÚgwÜd) -b -) << 1; - -59 - } -} - -61 -lÚgwÜd - - $gsm_L_add - ( -lÚgwÜd - -a -,†ÚgwÜd -b -) - -63 ià( -a - < 0) { - -64 ià( -b - >ð0è -a - + b; - -66 -ulÚgwÜd - -A - = (ulÚgwÜd)-( -a - + 1è+ (ulÚgwÜd)-( -b - + 1); - -67 -A - >ð -MAX_LONGWORD - ? -MIN_LONGWORD - :-( -lÚgwÜd -)A-2; - -70 ià( -b - <ð0è -a - + b; - -72 -ulÚgwÜd - -A - = (ulÚgwÜd) -a - + (ulÚgwÜd) -b -; - -73 -A - > -MAX_LONGWORD - ? MAX_LONGWORD : A; - -75 - } -} - -77 -lÚgwÜd - - $gsm_L_sub - ( -lÚgwÜd - -a -,†ÚgwÜd -b -) - -79 ià( -a - >= 0) { - -80 ià( -b - >ð0è -a - - b; - -84 -ulÚgwÜd - -A - = (ulÚgwÜd) -a - + -( -b - + 1); - -85 -A - >ð -MAX_LONGWORD - ? MAX_LONGWORD : (A + 1); - -88 ià( -b - <ð0è -a - - b; - -92 -ulÚgwÜd - -A - = (ulÚgwÜd)-( -a - + 1è+ -b -; - -93 -A - >ð -MAX_LONGWORD - ? -MIN_LONGWORD - : -( -lÚgwÜd -)A - 1; - -95 - } -} - -97 cÚ¡ - gb™off -[ 256 ] = { - -116 -wÜd - - $gsm_nÜm - ( -lÚgwÜd - -a - ) - -136 - `as£¹ -( -a - != 0); - -138 ià( -a - < 0) { - -139 ià( -a - <= -1073741824) 0; - -140 -a - = ~a; - -143 -a - & 0xffff0000 - -144 ? ( -a - & 0xff000000 - -145 ? -1 + -b™off -[ 0xFF & ( -a - >> 24) ] - -146 : 7 + -b™off -[ 0xFF & ( -a - >> 16) ] ) - -147 : ( -a - & 0xff00 - -148 ? 15 + -b™off -[ 0xFF & ( -a - >> 8) ] - -149 : 23 + -b™off -[ 0xFF & -a - ] ); - -150 - } -} - -152 -lÚgwÜd - - $gsm_L_a¦ - ( -lÚgwÜd - -a -, -n -) - -154 ià( -n - >= 32) 0; - -155 ià( -n - <ð-32è -( -a - < 0); - -156 ià( -n - < 0è - `gsm_L_a¤ -( -a -, -n); - -157 -a - << -n -; - -158 - } -} - -160 -wÜd - - $gsm_a¤ - ( -wÜd - -a -, -n -) - -162 ià( -n - >ð16è -( -a - < 0); - -163 ià( -n - <= -16) 0; - -164 ià( -n - < 0è -a - << -n; - -166 - `SASR_W - ( -a -, ( -wÜd -è -n -); - -167 - } -} - -169 -wÜd - - $gsm_a¦ - ( -wÜd - -a -, -n -) - -171 ià( -n - >= 16) 0; - -172 ià( -n - <ð-16è -( -a - < 0); - -173 ià( -n - < 0è - `gsm_a¤ -( -a -, -n); - -174 -a - << -n -; - -175 - } -} - -177 -lÚgwÜd - - $gsm_L_a¤ - ( -lÚgwÜd - -a -, -n -) - -179 ià( -n - >ð32è -( -a - < 0); - -180 ià( -n - <= -32) 0; - -181 ià( -n - < 0è -a - << -n; - -183 - `SASR_L - ( -a -, ( -wÜd -è -n -); - -184 - } -} - -211 -wÜd - - $gsm_div - ( -wÜd - -num -, wÜd -d’um -) - -213 -lÚgwÜd - -L_num - = -num -; - -214 -lÚgwÜd - -L_d’um - = -d’um -; - -215 -wÜd - -div - = 0; - -216 -k - = 15; - -225 - `as£¹ -( -num - >ð0 && -d’um - >=‚um); - -226 ià( -num - == 0) - -229 -k ---) { - -230 -div - <<= 1; - -231 -L_num - <<= 1; - -233 ià( -L_num - >ð -L_d’um -) { - -234 -L_num - -ð -L_d’um -; - -235 -div -++; - -239 -div -; - -240 - } -} - - @code.c - -8 - ~<¡dlib.h -> - -9 - ~<¡ršg.h -> - -11 - ~"cÚfig.h -" - -13 - ~"gsm610_´iv.h -" - -14 - ~"gsm.h -" - -20 - $Gsm_Cod” - ( - -22 -gsm_¡©e - * -S‹ -, - -24 -wÜd - * -s -, - -36 -wÜd - * -LARc -, - -44 -wÜd - * -Nc -, - -45 -wÜd - * -bc -, - -46 -wÜd - * -Mc -, - -47 -wÜd - * -xmaxc -, - -48 -wÜd - * -xMc - - -51 -k -; - -52 -wÜd - * -dp - = -S‹ --> -dp0 - + 120; - -53 -wÜd - * -dµ - = -dp -; - -55 -wÜd - -so -[160]; - -57 - `Gsm_P»´oûss - ( -S‹ -, -s -, -so -); - -58 - `Gsm_LPC_AÇlysis - ( -S‹ -, -so -, -LARc -); - -59 - `Gsm_ShÜt_T”m_AÇlysis_Fž‹r - ( -S‹ -, -LARc -, -so -); - -61 -k - = 0; k <ð3; k++, -xMc - += 13) { - -63 - `Gsm_LÚg_T”m_P»diùÜ - ( -S‹ -, - -64 -so -+ -k -*40, - -65 -dp -, - -66 -S‹ --> -e - + 5, - -67 -dµ -, - -68 -Nc -++, - -69 -bc -++); - -71 - `Gsm_RPE_Encodšg - ( - -72 -S‹ --> -e - + 5, - -73 -xmaxc -++, -Mc -++, -xMc - ); - -79 { -i -; - -80 -i - = 0; i <= 39; i++) - -81 -dp -[ -i - ] = - `GSM_ADD -Ð -S‹ --> -e -[5 + i], -dµ -[i] ); - -83 -dp - += 40; - -84 -dµ - += 40; - -87 () - `memýy -Ð(*) -S‹ --> -dp0 -, (*)(State->dp0 + 160), - -88 120 * (* -S‹ --> -dp0 -) ); - -89 - } -} - - @config.h - -7 #iâdef -CONFIG_H - - -8 - #CONFIG_H - - - ) - -10 - #HAS_STDLIB_H - 1 - - ) - -11 - #HAS_FCNTL_H - 1 - - ) - -13 - #HAS_FSTAT - 1 - - ) - -14 - #HAS_FCHMOD - 1 - - ) - -15 - #HAS_CHMOD - 1 - - ) - -16 - #HAS_FCHOWN - 1 - - ) - -17 - #HAS_CHOWN - 1 - - ) - -19 - #HAS_STRING_H - 1 - - ) - -21 - #HAS_UNISTD_H - 1 - - ) - -22 - #HAS_UTIME - 1 - - ) - -23 - #HAS_UTIME_H - 1 - - ) - - @decode.c - -7 - ~<¡dio.h -> - -9 - ~"gsm610_´iv.h -" - -10 - ~"gsm.h -" - -16 - $Po¡´oûssšg - ( - -17 -gsm_¡©e - * -S -, - -18 -wÜd - * -s -) - -20 -k -; - -21 -wÜd - -m¤ - = -S -->msr; - -22 -wÜd - -tmp -; - -24 -k - = 160; k--; -s -++) { - -25 -tmp - = - `GSM_MULT_R -Ð -m¤ -, 28180 ); - -26 -m¤ - = - `GSM_ADD -(* -s -, -tmp -); - -27 * -s - = - `GSM_ADD -( -m¤ -, msr) & 0xFFF8; - -29 -S --> -m¤ - = msr; - -30 - } -} - -32 - $Gsm_Decod” - ( - -33 -gsm_¡©e - * -S -, - -35 -wÜd - * -LARü -, - -37 -wÜd - * -Nü -, - -38 -wÜd - * -bü -, - -39 -wÜd - * -Mü -, - -40 -wÜd - * -xmaxü -, - -41 -wÜd - * -xMü -, - -43 -wÜd - * -s -) - -45 -j -, -k -; - -46 -wÜd - -”p -[40], -wt -[160]; - -47 -wÜd - * -d½ - = -S --> -dp0 - + 120; - -49 -j -=0; j <ð3; j++, -xmaxü -++, -bü -++, -Nü -++, -Mü -++, -xMü - += 13) { - -51 - `Gsm_RPE_Decodšg -Ð * -xmaxü -, * -Mü -, -xMü -, -”p - ); - -52 - `Gsm_LÚg_T”m_SyÁhesis_Fž‹ršg -Ð -S -, * -Nü -, * -bü -, -”p -, -d½ - ); - -54 -k - = 0; k <ð39; k++è -wt -[ -j - * 40 + k ] = -d½ -[ k ]; - -57 - `Gsm_ShÜt_T”m_SyÁhesis_Fž‹r -Ð -S -, -LARü -, -wt -, -s - ); - -58 - `Po¡´oûssšg -( -S -, -s -); - -59 - } -} - - @gsm.h - -7 #iâdef -GSM_H - - -8 - #GSM_H - - - ) - -10 - ~<¡dio.h -> - -16 -gsm_¡©e - * - tgsm -; - -17 - tgsm_sigÇl -; - -18 - tgsm_by‹ -; - -19 -gsm_by‹ - - tgsm_äame -[33]; - -21 - #GSM_MAGIC - 0xD - - ) - -23 - #GSM_PATCHLEVEL - 10 - - ) - -24 - #GSM_MINOR - 0 - - ) - -25 - #GSM_MAJOR - 1 - - ) - -27 - #GSM_OPT_VERBOSE - 1 - - ) - -28 - #GSM_OPT_FAST - 2 - - ) - -29 - #GSM_OPT_LTP_CUT - 3 - - ) - -30 - #GSM_OPT_WAV49 - 4 - - ) - -31 - #GSM_OPT_FRAME_INDEX - 5 - - ) - -32 - #GSM_OPT_FRAME_CHAIN - 6 - - ) - -34 -gsm - -gsm_ü—‹ - (); - -37 -gsm_š™ - ( -gsm -); - -39 -gsm_de¡roy - ( -gsm -); - -41 -gsm_´št - ( -FILE - *, -gsm -, -gsm_by‹ - *); - -42 -gsm_ÝtiÚ - ( -gsm -, , *); - -44 -gsm_’code - ( -gsm -, -gsm_sigÇl - *, -gsm_by‹ - *); - -45 -gsm_decode - ( -gsm -, -gsm_by‹ - *, -gsm_sigÇl - *); - -47 -gsm_ex¶ode - ( -gsm -, -gsm_by‹ - *, -gsm_sigÇl - *); - -48 -gsm_im¶ode - ( -gsm -, -gsm_sigÇl - *, -gsm_by‹ - *); - - @gsm610_priv.h - -7 #iâdef -PRIVATE_H - - -8 - #PRIVATE_H - - - ) - -11 - #USE_FLOAT_MUL - - - ) - -12 - #FAST - - - ) - -13 - #WAV49 - - - ) - -18 - twÜd -; - -19 - tlÚgwÜd -; - -21 - tuwÜd -; - -22 - tulÚgwÜd -; - -24 - sgsm_¡©e - - -25 { -wÜd - - mdp0 -[ 280 ] ; - -27 -wÜd - - mz1 -; - -28 -lÚgwÜd - - mL_z2 -; - -29 - mmp -; - -31 -wÜd - - mu -[8] ; - -32 -wÜd - - mLARµ -[2][8] ; - -33 -wÜd - - mj -; - -35 -wÜd - - mÉp_cut -; - -36 -wÜd - - mÄp -; - -37 -wÜd - - mv -[9] ; - -38 -wÜd - - mm¤ -; - -40 - mv”bo£ -; - -41 - mç¡ -; - -43 - mwav_fmt -; - -44 - mäame_šdex -; - -45 - mäame_chaš -; - -48 -wÜd - - me -[50] ; - -51 -gsm_¡©e - - tGSM_STATE - ; - -53 - #MIN_WORD - (-32767 - 1) - - ) - -54 - #MAX_WORD - 32767 - - ) - -56 - #MIN_LONGWORD - (-2147483647 - 1) - - ) - -57 - #MAX_LONGWORD - 2147483647 - - ) - -60 -šlše - -wÜd - - -61 - $SASR_W - ( -wÜd - -x -, wÜd -by -) - -62 { ( -x - >> -by -) ; - -63 - } -} - -65 -šlše - -lÚgwÜd - - -66 - $SASR_L - ( -lÚgwÜd - -x -, -wÜd - -by -) - -67 { ( -x - >> -by -) ; - -68 - } -} - -73 -wÜd - -gsm_muÉ - (wÜd -a -, wÜd -b -) ; - -74 -lÚgwÜd - -gsm_L_muÉ - ( -wÜd - -a -, wÜd -b -) ; - -75 -wÜd - -gsm_muÉ_r - (wÜd -a -, wÜd -b -) ; - -77 -wÜd - -gsm_div - (wÜd -num -, wÜd -d’um -) ; - -79 -wÜd - -gsm_add - (wÜd -a -, wÜd -b - ) ; - -80 -lÚgwÜd - -gsm_L_add - (lÚgwÜd -a -,†ÚgwÜd -b - ) ; - -82 -wÜd - -gsm_sub - (wÜd -a -, wÜd -b -) ; - -83 -lÚgwÜd - -gsm_L_sub - (lÚgwÜd -a -,†ÚgwÜd -b -) ; - -85 -wÜd - -gsm_abs - (wÜd -a -) ; - -87 -wÜd - -gsm_nÜm - ( -lÚgwÜd - -a - ) ; - -89 -lÚgwÜd - -gsm_L_a¦ - (lÚgwÜd -a -, -n -) ; - -90 -wÜd - -gsm_a¦ - (wÜd -a -, -n -) ; - -92 -lÚgwÜd - -gsm_L_a¤ - (lÚgwÜd -a -, -n -) ; - -93 -wÜd - -gsm_a¤ - (wÜd -a -, -n -) ; - -99 -šlše - -lÚgwÜd - - -100 - $GSM_MULT_R - ( -wÜd - -a -, wÜd -b -) - -101 { ((( -lÚgwÜd -è( -a -)è* (ÖÚgwÜdè( -b -)) + 16384) >> 15 ; - -102 - } -} - -104 -šlše - -lÚgwÜd - - -105 - $GSM_MULT - ( -wÜd - -a -, wÜd -b -) - -106 { ((( -lÚgwÜd -è( -a -)è* (ÖÚgwÜdè( -b -))) >> 15 ; - -107 - } -} - -109 -šlše - -lÚgwÜd - - -110 - $GSM_L_MULT - ( -wÜd - -a -, wÜd -b -) - -111 { (( -lÚgwÜd -è( -a -)è* (ÖÚgwÜdè( -b -)) << 1 ; - -112 - } -} - -114 -šlše - -lÚgwÜd - - -115 - $GSM_L_ADD - ( -lÚgwÜd - -a -,†ÚgwÜd -b -) - -116 { -ulÚgwÜd - -utmp - ; - -118 ià( -a - < 0 && -b - < 0) - -119 { -utmp - = ( -ulÚgwÜd -)-(( -a -è+ 1è+ (ulÚgwÜd)-(( -b -) + 1) ; - -120 ( -utmp - >ð( -ulÚgwÜd -è -MAX_LONGWORD -è? -MIN_LONGWORD - : -( -lÚgwÜd -)utmp-2 ; - -123 ià( -a - > 0 && -b - > 0) - -124 { -utmp - = ( -ulÚgwÜd -è -a - + (ulÚgwÜdè -b - ; - -125 ( -utmp - >ð( -ulÚgwÜd -è -MAX_LONGWORD -) ? MAX_LONGWORD : utmp ; - -128 -a - + -b - ; - -129 - } -} - -131 -šlše - -lÚgwÜd - - -132 - $GSM_ADD - ( -wÜd - -a -, wÜd -b -) - -133 { -lÚgwÜd - -Émp - ; - -135 -Émp - = (( -lÚgwÜd -è -a -è+ (ÖÚgwÜdè -b -) ; - -137 ià( -Émp - >ð -MAX_WORD -) - -138 -MAX_WORD - ; - -139 ià( -Émp - <ð -MIN_WORD -) - -140 -MIN_WORD - ; - -142 -Émp - ; - -143 - } -} - -145 -šlše - -lÚgwÜd - - -146 - $GSM_SUB - ( -wÜd - -a -, wÜd -b -) - -147 { -lÚgwÜd - -Émp - ; - -149 -Émp - = (( -lÚgwÜd -è -a -è- (ÖÚgwÜdè -b -) ; - -151 ià( -Émp - >ð -MAX_WORD -) - -152 -Émp - = -MAX_WORD - ; - -153 ià( -Émp - <ð -MIN_WORD -) - -154 -Émp - = -MIN_WORD - ; - -156 -Émp - ; - -157 - } -} - -159 -šlše - -wÜd - - -160 - $GSM_ABS - ( -wÜd - -a -) - -162 ià( -a - > 0) - -163 -a - ; - -164 ià( -a - =ð -MIN_WORD -) - -165 -MAX_WORD - ; - -166 - -a - ; - -167 - } -} - -173 -Gsm_Cod” - ( - -174 -gsm_¡©e - * -S -, - -175 -wÜd - * -s -, - -176 -wÜd - * -LARc -, - -177 -wÜd - * -Nc -, - -178 -wÜd - * -bc -, - -179 -wÜd - * -Mc -, - -180 -wÜd - * -xmaxc -, - -181 -wÜd - * -xMc -) ; - -183 -Gsm_LÚg_T”m_P»diùÜ - ( - -184 -gsm_¡©e - * -S -, - -185 -wÜd - * -d -, - -186 -wÜd - * -dp -, - -187 -wÜd - * -e -, - -188 -wÜd - * -dµ -, - -189 -wÜd - * -Nc -, - -190 -wÜd - * -bc -) ; - -192 -Gsm_LPC_AÇlysis - ( - -193 -gsm_¡©e - * -S -, - -194 -wÜd - * -s -, - -195 -wÜd - * -LARc -) ; - -197 -Gsm_P»´oûss - ( - -198 -gsm_¡©e - * -S -, - -199 -wÜd - * -s -, wÜd * -so -) ; - -201 -Gsm_Encodšg - ( - -202 -gsm_¡©e - * -S -, - -203 -wÜd - * -e -, - -204 -wÜd - * -• -, - -205 -wÜd - * -xmaxc -, - -206 -wÜd - * -Mc -, - -207 -wÜd - * -xMc -) ; - -209 -Gsm_ShÜt_T”m_AÇlysis_Fž‹r - ( - -210 -gsm_¡©e - * -S -, - -211 -wÜd - * -LARc -, - -212 -wÜd - * -d -) ; - -214 -Gsm_Decod” - ( - -215 -gsm_¡©e - * -S -, - -216 -wÜd - * -LARü -, - -217 -wÜd - * -Nü -, - -218 -wÜd - * -bü -, - -219 -wÜd - * -Mü -, - -220 -wÜd - * -xmaxü -, - -221 -wÜd - * -xMü -, - -222 -wÜd - * -s -) ; - -224 -Gsm_Decodšg - ( - -225 -gsm_¡©e - * -S -, - -226 -wÜd - -xmaxü -, - -227 -wÜd - -Mü -, - -228 -wÜd - * -xMü -, - -229 -wÜd - * -”p -) ; - -231 -Gsm_LÚg_T”m_SyÁhesis_Fž‹ršg - ( - -232 -gsm_¡©e -* -S -, - -233 -wÜd - -Nü -, - -234 -wÜd - -bü -, - -235 -wÜd - * -”p -, - -236 -wÜd - * -d½ -) ; - -238 -Gsm_RPE_Decodšg - ( - -240 -wÜd - -xmaxü -, - -241 -wÜd - -Mü -, - -242 -wÜd - * -xMü -, - -243 -wÜd - * -”p -) ; - -245 -Gsm_RPE_Encodšg - ( - -247 -wÜd - * -e -, - -248 -wÜd - * -xmaxc -, - -249 -wÜd - * -Mc -, - -250 -wÜd - * -xMc -) ; - -252 -Gsm_ShÜt_T”m_SyÁhesis_Fž‹r - ( - -253 -gsm_¡©e - * -S -, - -254 -wÜd - * -LARü -, - -255 -wÜd - * -d½ -, - -256 -wÜd - * -s -) ; - -258 -Gsm_Upd©e_of_»cÚ¡ruùed_shÜt_time_»sidu®_sigÇl - ( - -259 -wÜd - * -dµ -, - -260 -wÜd - * -• -, - -261 -wÜd - * -dp -) ; - -266 #iâdef -GSM_TABLE_C - - -268
-wÜd - -gsm_A - [8], -gsm_B - [8], -gsm_MIC - [8], -gsm_MAC - [8] ; - -269
-wÜd - -gsm_INVA - [8] ; - -270
-wÜd - -gsm_DLB - [4], -gsm_QLB - [4] ; - -271
-wÜd - -gsm_H - [11] ; - -272
-wÜd - -gsm_NRFAC - [8] ; - -273
-wÜd - -gsm_FAC - [8] ; - -280 #ifdeà -NDEBUG - - -282 - #gsm_debug_wÜds -( -a -, -b -, -c -, -d -è - - ) - -283 - #gsm_debug_lÚgwÜds -( -a -, -b -, -c -, -d -è - - ) - -284 - #gsm_debug_wÜd -( -a -, -b -è - - ) - -285 - #gsm_debug_lÚgwÜd -( -a -, -b -è - - ) - -289 -gsm_debug_wÜds - (* -Çme -, , , -wÜd - *) ; - -290 -gsm_debug_lÚgwÜds - (* -Çme -, , , -lÚgwÜd - *) ; - -291 -gsm_debug_lÚgwÜd - (* -Çme -, -lÚgwÜd -) ; - -292 -gsm_debug_wÜd - (* -Çme -, -wÜd -) ; - - @gsm_create.c - -7 - ~"cÚfig.h -" - -9 - ~<¡dio.h -> - -10 - ~<¡dlib.h -> - -11 - ~<¡ršg.h -> - -15 - ~"gsm.h -" - -16 - ~"gsm610_´iv.h -" - -18 -gsm - - $gsm_ü—‹ - () - -20 -gsm - -r -; - -22 -r - = - `m®loc - (( -gsm_¡©e -)); - -23 ià(! -r -) „; - -25 - `mem£t -((*) -r -, 0, ( -gsm_¡©e -)); - -26 -r --> -Äp - = 40; - -28 -r -; - -29 - } -} - -32 - $gsm_š™ - ( -gsm - -¡©e -) - -34 - `mem£t - ( -¡©e -, 0, ( -gsm_¡©e -)) ; - -35 -¡©e --> -Äp - = 40 ; - -36 - } -} - - @gsm_decode.c - -7 - ~"gsm610_´iv.h -" - -9 - ~"gsm.h -" - -11 - $gsm_decode - ( -gsm - -s -, -gsm_by‹ - * -c -, -gsm_sigÇl - * -rg‘ -) - -13 -wÜd - -LARc -[8], -Nc -[4], -Mc -[4], -bc -[4], -xmaxc -[4], -xmc -[13*4]; - -15 #ifdeà -WAV49 - - -16 ià( -s --> -wav_fmt -) { - -18 -uwÜd - -¤ - = 0; - -20 -s --> -äame_šdex - = !s->frame_index; - -21 ià( -s --> -äame_šdex -) { - -23 -¤ - = * -c -++; - -24 -LARc -[0] = -¤ - & 0x3f; sr >>= 6; - -25 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -26 -LARc -[1] = -¤ - & 0x3f; sr >>= 6; - -27 -¤ - |ð( -uwÜd -)* -c -++ << 4; - -28 -LARc -[2] = -¤ - & 0x1f; sr >>= 5; - -29 -LARc -[3] = -¤ - & 0x1f; sr >>= 5; - -30 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -31 -LARc -[4] = -¤ - & 0xf; sr >>= 4; - -32 -LARc -[5] = -¤ - & 0xf; sr >>= 4; - -33 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -34 -LARc -[6] = -¤ - & 0x7; sr >>= 3; - -35 -LARc -[7] = -¤ - & 0x7; sr >>= 3; - -36 -¤ - |ð( -uwÜd -)* -c -++ << 4; - -37 -Nc -[0] = -¤ - & 0x7f; sr >>= 7; - -38 -bc -[0] = -¤ - & 0x3; sr >>= 2; - -39 -Mc -[0] = -¤ - & 0x3; sr >>= 2; - -40 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -41 -xmaxc -[0] = -¤ - & 0x3f; sr >>= 6; - -42 -xmc -[0] = -¤ - & 0x7; sr >>= 3; - -43 -¤ - = * -c -++; - -44 -xmc -[1] = -¤ - & 0x7; sr >>= 3; - -45 -xmc -[2] = -¤ - & 0x7; sr >>= 3; - -46 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -47 -xmc -[3] = -¤ - & 0x7; sr >>= 3; - -48 -xmc -[4] = -¤ - & 0x7; sr >>= 3; - -49 -xmc -[5] = -¤ - & 0x7; sr >>= 3; - -50 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -51 -xmc -[6] = -¤ - & 0x7; sr >>= 3; - -52 -xmc -[7] = -¤ - & 0x7; sr >>= 3; - -53 -xmc -[8] = -¤ - & 0x7; sr >>= 3; - -54 -¤ - = * -c -++; - -55 -xmc -[9] = -¤ - & 0x7; sr >>= 3; - -56 -xmc -[10] = -¤ - & 0x7; sr >>= 3; - -57 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -58 -xmc -[11] = -¤ - & 0x7; sr >>= 3; - -59 -xmc -[12] = -¤ - & 0x7; sr >>= 3; - -60 -¤ - |ð( -uwÜd -)* -c -++ << 4; - -61 -Nc -[1] = -¤ - & 0x7f; sr >>= 7; - -62 -bc -[1] = -¤ - & 0x3; sr >>= 2; - -63 -Mc -[1] = -¤ - & 0x3; sr >>= 2; - -64 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -65 -xmaxc -[1] = -¤ - & 0x3f; sr >>= 6; - -66 -xmc -[13] = -¤ - & 0x7; sr >>= 3; - -67 -¤ - = * -c -++; - -68 -xmc -[14] = -¤ - & 0x7; sr >>= 3; - -69 -xmc -[15] = -¤ - & 0x7; sr >>= 3; - -70 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -71 -xmc -[16] = -¤ - & 0x7; sr >>= 3; - -72 -xmc -[17] = -¤ - & 0x7; sr >>= 3; - -73 -xmc -[18] = -¤ - & 0x7; sr >>= 3; - -74 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -75 -xmc -[19] = -¤ - & 0x7; sr >>= 3; - -76 -xmc -[20] = -¤ - & 0x7; sr >>= 3; - -77 -xmc -[21] = -¤ - & 0x7; sr >>= 3; - -78 -¤ - = * -c -++; - -79 -xmc -[22] = -¤ - & 0x7; sr >>= 3; - -80 -xmc -[23] = -¤ - & 0x7; sr >>= 3; - -81 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -82 -xmc -[24] = -¤ - & 0x7; sr >>= 3; - -83 -xmc -[25] = -¤ - & 0x7; sr >>= 3; - -84 -¤ - |ð( -uwÜd -)* -c -++ << 4; - -85 -Nc -[2] = -¤ - & 0x7f; sr >>= 7; - -86 -bc -[2] = -¤ - & 0x3; sr >>= 2; - -87 -Mc -[2] = -¤ - & 0x3; sr >>= 2; - -88 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -89 -xmaxc -[2] = -¤ - & 0x3f; sr >>= 6; - -90 -xmc -[26] = -¤ - & 0x7; sr >>= 3; - -91 -¤ - = * -c -++; - -92 -xmc -[27] = -¤ - & 0x7; sr >>= 3; - -93 -xmc -[28] = -¤ - & 0x7; sr >>= 3; - -94 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -95 -xmc -[29] = -¤ - & 0x7; sr >>= 3; - -96 -xmc -[30] = -¤ - & 0x7; sr >>= 3; - -97 -xmc -[31] = -¤ - & 0x7; sr >>= 3; - -98 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -99 -xmc -[32] = -¤ - & 0x7; sr >>= 3; - -100 -xmc -[33] = -¤ - & 0x7; sr >>= 3; - -101 -xmc -[34] = -¤ - & 0x7; sr >>= 3; - -102 -¤ - = * -c -++; - -103 -xmc -[35] = -¤ - & 0x7; sr >>= 3; - -104 -xmc -[36] = -¤ - & 0x7; sr >>= 3; - -105 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -106 -xmc -[37] = -¤ - & 0x7; sr >>= 3; - -107 -xmc -[38] = -¤ - & 0x7; sr >>= 3; - -108 -¤ - |ð( -uwÜd -)* -c -++ << 4; - -109 -Nc -[3] = -¤ - & 0x7f; sr >>= 7; - -110 -bc -[3] = -¤ - & 0x3; sr >>= 2; - -111 -Mc -[3] = -¤ - & 0x3; sr >>= 2; - -112 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -113 -xmaxc -[3] = -¤ - & 0x3f; sr >>= 6; - -114 -xmc -[39] = -¤ - & 0x7; sr >>= 3; - -115 -¤ - = * -c -++; - -116 -xmc -[40] = -¤ - & 0x7; sr >>= 3; - -117 -xmc -[41] = -¤ - & 0x7; sr >>= 3; - -118 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -119 -xmc -[42] = -¤ - & 0x7; sr >>= 3; - -120 -xmc -[43] = -¤ - & 0x7; sr >>= 3; - -121 -xmc -[44] = -¤ - & 0x7; sr >>= 3; - -122 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -123 -xmc -[45] = -¤ - & 0x7; sr >>= 3; - -124 -xmc -[46] = -¤ - & 0x7; sr >>= 3; - -125 -xmc -[47] = -¤ - & 0x7; sr >>= 3; - -126 -¤ - = * -c -++; - -127 -xmc -[48] = -¤ - & 0x7; sr >>= 3; - -128 -xmc -[49] = -¤ - & 0x7; sr >>= 3; - -129 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -130 -xmc -[50] = -¤ - & 0x7; sr >>= 3; - -131 -xmc -[51] = -¤ - & 0x7; sr >>= 3; - -133 -s --> -äame_chaš - = -¤ - & 0xf; - -136 -¤ - = -s --> -äame_chaš -; - -137 -¤ - |ð( -uwÜd -)* -c -++ << 4; - -138 -LARc -[0] = -¤ - & 0x3f; sr >>= 6; - -139 -LARc -[1] = -¤ - & 0x3f; sr >>= 6; - -140 -¤ - = * -c -++; - -141 -LARc -[2] = -¤ - & 0x1f; sr >>= 5; - -142 -¤ - |ð( -uwÜd -)* -c -++ << 3; - -143 -LARc -[3] = -¤ - & 0x1f; sr >>= 5; - -144 -LARc -[4] = -¤ - & 0xf; sr >>= 4; - -145 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -146 -LARc -[5] = -¤ - & 0xf; sr >>= 4; - -147 -LARc -[6] = -¤ - & 0x7; sr >>= 3; - -148 -LARc -[7] = -¤ - & 0x7; sr >>= 3; - -149 -¤ - = * -c -++; - -150 -Nc -[0] = -¤ - & 0x7f; sr >>= 7; - -151 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -152 -bc -[0] = -¤ - & 0x3; sr >>= 2; - -153 -Mc -[0] = -¤ - & 0x3; sr >>= 2; - -154 -¤ - |ð( -uwÜd -)* -c -++ << 5; - -155 -xmaxc -[0] = -¤ - & 0x3f; sr >>= 6; - -156 -xmc -[0] = -¤ - & 0x7; sr >>= 3; - -157 -xmc -[1] = -¤ - & 0x7; sr >>= 3; - -158 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -159 -xmc -[2] = -¤ - & 0x7; sr >>= 3; - -160 -xmc -[3] = -¤ - & 0x7; sr >>= 3; - -161 -xmc -[4] = -¤ - & 0x7; sr >>= 3; - -162 -¤ - = * -c -++; - -163 -xmc -[5] = -¤ - & 0x7; sr >>= 3; - -164 -xmc -[6] = -¤ - & 0x7; sr >>= 3; - -165 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -166 -xmc -[7] = -¤ - & 0x7; sr >>= 3; - -167 -xmc -[8] = -¤ - & 0x7; sr >>= 3; - -168 -xmc -[9] = -¤ - & 0x7; sr >>= 3; - -169 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -170 -xmc -[10] = -¤ - & 0x7; sr >>= 3; - -171 -xmc -[11] = -¤ - & 0x7; sr >>= 3; - -172 -xmc -[12] = -¤ - & 0x7; sr >>= 3; - -173 -¤ - = * -c -++; - -174 -Nc -[1] = -¤ - & 0x7f; sr >>= 7; - -175 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -176 -bc -[1] = -¤ - & 0x3; sr >>= 2; - -177 -Mc -[1] = -¤ - & 0x3; sr >>= 2; - -178 -¤ - |ð( -uwÜd -)* -c -++ << 5; - -179 -xmaxc -[1] = -¤ - & 0x3f; sr >>= 6; - -180 -xmc -[13] = -¤ - & 0x7; sr >>= 3; - -181 -xmc -[14] = -¤ - & 0x7; sr >>= 3; - -182 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -183 -xmc -[15] = -¤ - & 0x7; sr >>= 3; - -184 -xmc -[16] = -¤ - & 0x7; sr >>= 3; - -185 -xmc -[17] = -¤ - & 0x7; sr >>= 3; - -186 -¤ - = * -c -++; - -187 -xmc -[18] = -¤ - & 0x7; sr >>= 3; - -188 -xmc -[19] = -¤ - & 0x7; sr >>= 3; - -189 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -190 -xmc -[20] = -¤ - & 0x7; sr >>= 3; - -191 -xmc -[21] = -¤ - & 0x7; sr >>= 3; - -192 -xmc -[22] = -¤ - & 0x7; sr >>= 3; - -193 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -194 -xmc -[23] = -¤ - & 0x7; sr >>= 3; - -195 -xmc -[24] = -¤ - & 0x7; sr >>= 3; - -196 -xmc -[25] = -¤ - & 0x7; sr >>= 3; - -197 -¤ - = * -c -++; - -198 -Nc -[2] = -¤ - & 0x7f; sr >>= 7; - -199 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -200 -bc -[2] = -¤ - & 0x3; sr >>= 2; - -201 -Mc -[2] = -¤ - & 0x3; sr >>= 2; - -202 -¤ - |ð( -uwÜd -)* -c -++ << 5; - -203 -xmaxc -[2] = -¤ - & 0x3f; sr >>= 6; - -204 -xmc -[26] = -¤ - & 0x7; sr >>= 3; - -205 -xmc -[27] = -¤ - & 0x7; sr >>= 3; - -206 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -207 -xmc -[28] = -¤ - & 0x7; sr >>= 3; - -208 -xmc -[29] = -¤ - & 0x7; sr >>= 3; - -209 -xmc -[30] = -¤ - & 0x7; sr >>= 3; - -210 -¤ - = * -c -++; - -211 -xmc -[31] = -¤ - & 0x7; sr >>= 3; - -212 -xmc -[32] = -¤ - & 0x7; sr >>= 3; - -213 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -214 -xmc -[33] = -¤ - & 0x7; sr >>= 3; - -215 -xmc -[34] = -¤ - & 0x7; sr >>= 3; - -216 -xmc -[35] = -¤ - & 0x7; sr >>= 3; - -217 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -218 -xmc -[36] = -¤ - & 0x7; sr >>= 3; - -219 -xmc -[37] = -¤ - & 0x7; sr >>= 3; - -220 -xmc -[38] = -¤ - & 0x7; sr >>= 3; - -221 -¤ - = * -c -++; - -222 -Nc -[3] = -¤ - & 0x7f; sr >>= 7; - -223 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -224 -bc -[3] = -¤ - & 0x3; sr >>= 2; - -225 -Mc -[3] = -¤ - & 0x3; sr >>= 2; - -226 -¤ - |ð( -uwÜd -)* -c -++ << 5; - -227 -xmaxc -[3] = -¤ - & 0x3f; sr >>= 6; - -228 -xmc -[39] = -¤ - & 0x7; sr >>= 3; - -229 -xmc -[40] = -¤ - & 0x7; sr >>= 3; - -230 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -231 -xmc -[41] = -¤ - & 0x7; sr >>= 3; - -232 -xmc -[42] = -¤ - & 0x7; sr >>= 3; - -233 -xmc -[43] = -¤ - & 0x7; sr >>= 3; - -234 -¤ - = * -c -++; - -235 -xmc -[44] = -¤ - & 0x7; sr >>= 3; - -236 -xmc -[45] = -¤ - & 0x7; sr >>= 3; - -237 -¤ - |ð( -uwÜd -)* -c -++ << 2; - -238 -xmc -[46] = -¤ - & 0x7; sr >>= 3; - -239 -xmc -[47] = -¤ - & 0x7; sr >>= 3; - -240 -xmc -[48] = -¤ - & 0x7; sr >>= 3; - -241 -¤ - |ð( -uwÜd -)* -c -++ << 1; - -242 -xmc -[49] = -¤ - & 0x7; sr >>= 3; - -243 -xmc -[50] = -¤ - & 0x7; sr >>= 3; - -244 -xmc -[51] = -¤ - & 0x7; sr >>= 3; - -252 ià(((* -c - >> 4è& 0x0Fè!ð -GSM_MAGIC -) -1; - -254 -LARc -[0] = (* -c -++ & 0xF) << 2; - -255 -LARc -[0] |ð(* -c - >> 6) & 0x3; - -256 -LARc -[1] = * -c -++ & 0x3F; - -257 -LARc -[2] = (* -c - >> 3) & 0x1F; - -258 -LARc -[3] = (* -c -++ & 0x7) << 2; - -259 -LARc -[3] |ð(* -c - >> 6) & 0x3; - -260 -LARc -[4] = (* -c - >> 2) & 0xF; - -261 -LARc -[5] = (* -c -++ & 0x3) << 2; - -262 -LARc -[5] |ð(* -c - >> 6) & 0x3; - -263 -LARc -[6] = (* -c - >> 3) & 0x7; - -264 -LARc -[7] = * -c -++ & 0x7; - -265 -Nc -[0] = (* -c - >> 1) & 0x7F; - -266 -bc -[0] = (* -c -++ & 0x1) << 1; - -267 -bc -[0] |ð(* -c - >> 7) & 0x1; - -268 -Mc -[0] = (* -c - >> 5) & 0x3; - -269 -xmaxc -[0] = (* -c -++ & 0x1F) << 1; - -270 -xmaxc -[0] |ð(* -c - >> 7) & 0x1; - -271 -xmc -[0] = (* -c - >> 4) & 0x7; - -272 -xmc -[1] = (* -c - >> 1) & 0x7; - -273 -xmc -[2] = (* -c -++ & 0x1) << 2; - -274 -xmc -[2] |ð(* -c - >> 6) & 0x3; - -275 -xmc -[3] = (* -c - >> 3) & 0x7; - -276 -xmc -[4] = * -c -++ & 0x7; - -277 -xmc -[5] = (* -c - >> 5) & 0x7; - -278 -xmc -[6] = (* -c - >> 2) & 0x7; - -279 -xmc -[7] = (* -c -++ & 0x3) << 1; - -280 -xmc -[7] |ð(* -c - >> 7) & 0x1; - -281 -xmc -[8] = (* -c - >> 4) & 0x7; - -282 -xmc -[9] = (* -c - >> 1) & 0x7; - -283 -xmc -[10] = (* -c -++ & 0x1) << 2; - -284 -xmc -[10] |ð(* -c - >> 6) & 0x3; - -285 -xmc -[11] = (* -c - >> 3) & 0x7; - -286 -xmc -[12] = * -c -++ & 0x7; - -287 -Nc -[1] = (* -c - >> 1) & 0x7F; - -288 -bc -[1] = (* -c -++ & 0x1) << 1; - -289 -bc -[1] |ð(* -c - >> 7) & 0x1; - -290 -Mc -[1] = (* -c - >> 5) & 0x3; - -291 -xmaxc -[1] = (* -c -++ & 0x1F) << 1; - -292 -xmaxc -[1] |ð(* -c - >> 7) & 0x1; - -293 -xmc -[13] = (* -c - >> 4) & 0x7; - -294 -xmc -[14] = (* -c - >> 1) & 0x7; - -295 -xmc -[15] = (* -c -++ & 0x1) << 2; - -296 -xmc -[15] |ð(* -c - >> 6) & 0x3; - -297 -xmc -[16] = (* -c - >> 3) & 0x7; - -298 -xmc -[17] = * -c -++ & 0x7; - -299 -xmc -[18] = (* -c - >> 5) & 0x7; - -300 -xmc -[19] = (* -c - >> 2) & 0x7; - -301 -xmc -[20] = (* -c -++ & 0x3) << 1; - -302 -xmc -[20] |ð(* -c - >> 7) & 0x1; - -303 -xmc -[21] = (* -c - >> 4) & 0x7; - -304 -xmc -[22] = (* -c - >> 1) & 0x7; - -305 -xmc -[23] = (* -c -++ & 0x1) << 2; - -306 -xmc -[23] |ð(* -c - >> 6) & 0x3; - -307 -xmc -[24] = (* -c - >> 3) & 0x7; - -308 -xmc -[25] = * -c -++ & 0x7; - -309 -Nc -[2] = (* -c - >> 1) & 0x7F; - -310 -bc -[2] = (* -c -++ & 0x1) << 1; - -311 -bc -[2] |ð(* -c - >> 7) & 0x1; - -312 -Mc -[2] = (* -c - >> 5) & 0x3; - -313 -xmaxc -[2] = (* -c -++ & 0x1F) << 1; - -314 -xmaxc -[2] |ð(* -c - >> 7) & 0x1; - -315 -xmc -[26] = (* -c - >> 4) & 0x7; - -316 -xmc -[27] = (* -c - >> 1) & 0x7; - -317 -xmc -[28] = (* -c -++ & 0x1) << 2; - -318 -xmc -[28] |ð(* -c - >> 6) & 0x3; - -319 -xmc -[29] = (* -c - >> 3) & 0x7; - -320 -xmc -[30] = * -c -++ & 0x7; - -321 -xmc -[31] = (* -c - >> 5) & 0x7; - -322 -xmc -[32] = (* -c - >> 2) & 0x7; - -323 -xmc -[33] = (* -c -++ & 0x3) << 1; - -324 -xmc -[33] |ð(* -c - >> 7) & 0x1; - -325 -xmc -[34] = (* -c - >> 4) & 0x7; - -326 -xmc -[35] = (* -c - >> 1) & 0x7; - -327 -xmc -[36] = (* -c -++ & 0x1) << 2; - -328 -xmc -[36] |ð(* -c - >> 6) & 0x3; - -329 -xmc -[37] = (* -c - >> 3) & 0x7; - -330 -xmc -[38] = * -c -++ & 0x7; - -331 -Nc -[3] = (* -c - >> 1) & 0x7F; - -332 -bc -[3] = (* -c -++ & 0x1) << 1; - -333 -bc -[3] |ð(* -c - >> 7) & 0x1; - -334 -Mc -[3] = (* -c - >> 5) & 0x3; - -335 -xmaxc -[3] = (* -c -++ & 0x1F) << 1; - -336 -xmaxc -[3] |ð(* -c - >> 7) & 0x1; - -337 -xmc -[39] = (* -c - >> 4) & 0x7; - -338 -xmc -[40] = (* -c - >> 1) & 0x7; - -339 -xmc -[41] = (* -c -++ & 0x1) << 2; - -340 -xmc -[41] |ð(* -c - >> 6) & 0x3; - -341 -xmc -[42] = (* -c - >> 3) & 0x7; - -342 -xmc -[43] = * -c -++ & 0x7; - -343 -xmc -[44] = (* -c - >> 5) & 0x7; - -344 -xmc -[45] = (* -c - >> 2) & 0x7; - -345 -xmc -[46] = (* -c -++ & 0x3) << 1; - -346 -xmc -[46] |ð(* -c - >> 7) & 0x1; - -347 -xmc -[47] = (* -c - >> 4) & 0x7; - -348 -xmc -[48] = (* -c - >> 1) & 0x7; - -349 -xmc -[49] = (* -c -++ & 0x1) << 2; - -350 -xmc -[49] |ð(* -c - >> 6) & 0x3; - -351 -xmc -[50] = (* -c - >> 3) & 0x7; - -352 -xmc -[51] = * -c - & 0x7; - -355 - `Gsm_Decod” -( -s -, -LARc -, -Nc -, -bc -, -Mc -, -xmaxc -, -xmc -, -rg‘ -); - -358 - } -} - - @gsm_destroy.c - -7 - ~"gsm.h -" - -8 - ~"cÚfig.h -" - -10 #ifdef -HAS_STDLIB_H - - -11 - ~<¡dlib.h -> - -13 #ifdef -HAS_MALLOC_H - - -14 - ~<m®loc.h -> - -16
-ä“ -(); - -20 - $gsm_de¡roy - ( -gsm - -S -) - -22 ià( -S -è - `ä“ -((*)S); - -23 - } -} - - @gsm_encode.c - -7 - ~"gsm610_´iv.h -" - -8 - ~"gsm.h -" - -10 - $gsm_’code - ( -gsm - -s -, -gsm_sigÇl - * -sourû -, -gsm_by‹ - * -c -) - -12 -wÜd - -LARc -[8], -Nc -[4], -Mc -[4], -bc -[4], -xmaxc -[4], -xmc -[13*4]; - -14 - `Gsm_Cod” -( -s -, -sourû -, -LARc -, -Nc -, -bc -, -Mc -, -xmaxc -, -xmc -); - -103 #ifdeà -WAV49 - - -105 ià( -s --> -wav_fmt -) { - -106 -s --> -äame_šdex - = !s->frame_index; - -107 ià( -s --> -äame_šdex -) { - -109 -uwÜd - -¤ -; - -111 -¤ - = 0; - -112 -¤ - = s¸>> 6 | -LARc -[0] << 10; - -113 -¤ - = s¸>> 6 | -LARc -[1] << 10; - -114 * -c -++ = -¤ - >> 4; - -115 -¤ - = s¸>> 5 | -LARc -[2] << 11; - -116 * -c -++ = -¤ - >> 7; - -117 -¤ - = s¸>> 5 | -LARc -[3] << 11; - -118 -¤ - = s¸>> 4 | -LARc -[4] << 12; - -119 * -c -++ = -¤ - >> 6; - -120 -¤ - = s¸>> 4 | -LARc -[5] << 12; - -121 -¤ - = s¸>> 3 | -LARc -[6] << 13; - -122 * -c -++ = -¤ - >> 7; - -123 -¤ - = s¸>> 3 | -LARc -[7] << 13; - -124 -¤ - = s¸>> 7 | -Nc -[0] << 9; - -125 * -c -++ = -¤ - >> 5; - -126 -¤ - = s¸>> 2 | -bc -[0] << 14; - -127 -¤ - = s¸>> 2 | -Mc -[0] << 14; - -128 -¤ - = s¸>> 6 | -xmaxc -[0] << 10; - -129 * -c -++ = -¤ - >> 3; - -130 -¤ - = s¸>> 3 | -xmc -[0] << 13; - -131 * -c -++ = -¤ - >> 8; - -132 -¤ - = s¸>> 3 | -xmc -[1] << 13; - -133 -¤ - = s¸>> 3 | -xmc -[2] << 13; - -134 -¤ - = s¸>> 3 | -xmc -[3] << 13; - -135 * -c -++ = -¤ - >> 7; - -136 -¤ - = s¸>> 3 | -xmc -[4] << 13; - -137 -¤ - = s¸>> 3 | -xmc -[5] << 13; - -138 -¤ - = s¸>> 3 | -xmc -[6] << 13; - -139 * -c -++ = -¤ - >> 6; - -140 -¤ - = s¸>> 3 | -xmc -[7] << 13; - -141 -¤ - = s¸>> 3 | -xmc -[8] << 13; - -142 * -c -++ = -¤ - >> 8; - -143 -¤ - = s¸>> 3 | -xmc -[9] << 13; - -144 -¤ - = s¸>> 3 | -xmc -[10] << 13; - -145 -¤ - = s¸>> 3 | -xmc -[11] << 13; - -146 * -c -++ = -¤ - >> 7; - -147 -¤ - = s¸>> 3 | -xmc -[12] << 13; - -148 -¤ - = s¸>> 7 | -Nc -[1] << 9; - -149 * -c -++ = -¤ - >> 5; - -150 -¤ - = s¸>> 2 | -bc -[1] << 14; - -151 -¤ - = s¸>> 2 | -Mc -[1] << 14; - -152 -¤ - = s¸>> 6 | -xmaxc -[1] << 10; - -153 * -c -++ = -¤ - >> 3; - -154 -¤ - = s¸>> 3 | -xmc -[13] << 13; - -155 * -c -++ = -¤ - >> 8; - -156 -¤ - = s¸>> 3 | -xmc -[14] << 13; - -157 -¤ - = s¸>> 3 | -xmc -[15] << 13; - -158 -¤ - = s¸>> 3 | -xmc -[16] << 13; - -159 * -c -++ = -¤ - >> 7; - -160 -¤ - = s¸>> 3 | -xmc -[17] << 13; - -161 -¤ - = s¸>> 3 | -xmc -[18] << 13; - -162 -¤ - = s¸>> 3 | -xmc -[19] << 13; - -163 * -c -++ = -¤ - >> 6; - -164 -¤ - = s¸>> 3 | -xmc -[20] << 13; - -165 -¤ - = s¸>> 3 | -xmc -[21] << 13; - -166 * -c -++ = -¤ - >> 8; - -167 -¤ - = s¸>> 3 | -xmc -[22] << 13; - -168 -¤ - = s¸>> 3 | -xmc -[23] << 13; - -169 -¤ - = s¸>> 3 | -xmc -[24] << 13; - -170 * -c -++ = -¤ - >> 7; - -171 -¤ - = s¸>> 3 | -xmc -[25] << 13; - -172 -¤ - = s¸>> 7 | -Nc -[2] << 9; - -173 * -c -++ = -¤ - >> 5; - -174 -¤ - = s¸>> 2 | -bc -[2] << 14; - -175 -¤ - = s¸>> 2 | -Mc -[2] << 14; - -176 -¤ - = s¸>> 6 | -xmaxc -[2] << 10; - -177 * -c -++ = -¤ - >> 3; - -178 -¤ - = s¸>> 3 | -xmc -[26] << 13; - -179 * -c -++ = -¤ - >> 8; - -180 -¤ - = s¸>> 3 | -xmc -[27] << 13; - -181 -¤ - = s¸>> 3 | -xmc -[28] << 13; - -182 -¤ - = s¸>> 3 | -xmc -[29] << 13; - -183 * -c -++ = -¤ - >> 7; - -184 -¤ - = s¸>> 3 | -xmc -[30] << 13; - -185 -¤ - = s¸>> 3 | -xmc -[31] << 13; - -186 -¤ - = s¸>> 3 | -xmc -[32] << 13; - -187 * -c -++ = -¤ - >> 6; - -188 -¤ - = s¸>> 3 | -xmc -[33] << 13; - -189 -¤ - = s¸>> 3 | -xmc -[34] << 13; - -190 * -c -++ = -¤ - >> 8; - -191 -¤ - = s¸>> 3 | -xmc -[35] << 13; - -192 -¤ - = s¸>> 3 | -xmc -[36] << 13; - -193 -¤ - = s¸>> 3 | -xmc -[37] << 13; - -194 * -c -++ = -¤ - >> 7; - -195 -¤ - = s¸>> 3 | -xmc -[38] << 13; - -196 -¤ - = s¸>> 7 | -Nc -[3] << 9; - -197 * -c -++ = -¤ - >> 5; - -198 -¤ - = s¸>> 2 | -bc -[3] << 14; - -199 -¤ - = s¸>> 2 | -Mc -[3] << 14; - -200 -¤ - = s¸>> 6 | -xmaxc -[3] << 10; - -201 * -c -++ = -¤ - >> 3; - -202 -¤ - = s¸>> 3 | -xmc -[39] << 13; - -203 * -c -++ = -¤ - >> 8; - -204 -¤ - = s¸>> 3 | -xmc -[40] << 13; - -205 -¤ - = s¸>> 3 | -xmc -[41] << 13; - -206 -¤ - = s¸>> 3 | -xmc -[42] << 13; - -207 * -c -++ = -¤ - >> 7; - -208 -¤ - = s¸>> 3 | -xmc -[43] << 13; - -209 -¤ - = s¸>> 3 | -xmc -[44] << 13; - -210 -¤ - = s¸>> 3 | -xmc -[45] << 13; - -211 * -c -++ = -¤ - >> 6; - -212 -¤ - = s¸>> 3 | -xmc -[46] << 13; - -213 -¤ - = s¸>> 3 | -xmc -[47] << 13; - -214 * -c -++ = -¤ - >> 8; - -215 -¤ - = s¸>> 3 | -xmc -[48] << 13; - -216 -¤ - = s¸>> 3 | -xmc -[49] << 13; - -217 -¤ - = s¸>> 3 | -xmc -[50] << 13; - -218 * -c -++ = -¤ - >> 7; - -219 -¤ - = s¸>> 3 | -xmc -[51] << 13; - -220 -¤ - = sr >> 4; - -221 * -c - = -¤ - >> 8; - -222 -s --> -äame_chaš - = * -c -; - -225 -uwÜd - -¤ -; - -227 -¤ - = 0; - -228 -¤ - = s¸>> 4 | -s --> -äame_chaš - << 12; - -229 -¤ - = s¸>> 6 | -LARc -[0] << 10; - -230 * -c -++ = -¤ - >> 6; - -231 -¤ - = s¸>> 6 | -LARc -[1] << 10; - -232 * -c -++ = -¤ - >> 8; - -233 -¤ - = s¸>> 5 | -LARc -[2] << 11; - -234 -¤ - = s¸>> 5 | -LARc -[3] << 11; - -235 * -c -++ = -¤ - >> 6; - -236 -¤ - = s¸>> 4 | -LARc -[4] << 12; - -237 -¤ - = s¸>> 4 | -LARc -[5] << 12; - -238 * -c -++ = -¤ - >> 6; - -239 -¤ - = s¸>> 3 | -LARc -[6] << 13; - -240 -¤ - = s¸>> 3 | -LARc -[7] << 13; - -241 * -c -++ = -¤ - >> 8; - -242 -¤ - = s¸>> 7 | -Nc -[0] << 9; - -243 -¤ - = s¸>> 2 | -bc -[0] << 14; - -244 * -c -++ = -¤ - >> 7; - -245 -¤ - = s¸>> 2 | -Mc -[0] << 14; - -246 -¤ - = s¸>> 6 | -xmaxc -[0] << 10; - -247 * -c -++ = -¤ - >> 7; - -248 -¤ - = s¸>> 3 | -xmc -[0] << 13; - -249 -¤ - = s¸>> 3 | -xmc -[1] << 13; - -250 -¤ - = s¸>> 3 | -xmc -[2] << 13; - -251 * -c -++ = -¤ - >> 6; - -252 -¤ - = s¸>> 3 | -xmc -[3] << 13; - -253 -¤ - = s¸>> 3 | -xmc -[4] << 13; - -254 * -c -++ = -¤ - >> 8; - -255 -¤ - = s¸>> 3 | -xmc -[5] << 13; - -256 -¤ - = s¸>> 3 | -xmc -[6] << 13; - -257 -¤ - = s¸>> 3 | -xmc -[7] << 13; - -258 * -c -++ = -¤ - >> 7; - -259 -¤ - = s¸>> 3 | -xmc -[8] << 13; - -260 -¤ - = s¸>> 3 | -xmc -[9] << 13; - -261 -¤ - = s¸>> 3 | -xmc -[10] << 13; - -262 * -c -++ = -¤ - >> 6; - -263 -¤ - = s¸>> 3 | -xmc -[11] << 13; - -264 -¤ - = s¸>> 3 | -xmc -[12] << 13; - -265 * -c -++ = -¤ - >> 8; - -266 -¤ - = s¸>> 7 | -Nc -[1] << 9; - -267 -¤ - = s¸>> 2 | -bc -[1] << 14; - -268 * -c -++ = -¤ - >> 7; - -269 -¤ - = s¸>> 2 | -Mc -[1] << 14; - -270 -¤ - = s¸>> 6 | -xmaxc -[1] << 10; - -271 * -c -++ = -¤ - >> 7; - -272 -¤ - = s¸>> 3 | -xmc -[13] << 13; - -273 -¤ - = s¸>> 3 | -xmc -[14] << 13; - -274 -¤ - = s¸>> 3 | -xmc -[15] << 13; - -275 * -c -++ = -¤ - >> 6; - -276 -¤ - = s¸>> 3 | -xmc -[16] << 13; - -277 -¤ - = s¸>> 3 | -xmc -[17] << 13; - -278 * -c -++ = -¤ - >> 8; - -279 -¤ - = s¸>> 3 | -xmc -[18] << 13; - -280 -¤ - = s¸>> 3 | -xmc -[19] << 13; - -281 -¤ - = s¸>> 3 | -xmc -[20] << 13; - -282 * -c -++ = -¤ - >> 7; - -283 -¤ - = s¸>> 3 | -xmc -[21] << 13; - -284 -¤ - = s¸>> 3 | -xmc -[22] << 13; - -285 -¤ - = s¸>> 3 | -xmc -[23] << 13; - -286 * -c -++ = -¤ - >> 6; - -287 -¤ - = s¸>> 3 | -xmc -[24] << 13; - -288 -¤ - = s¸>> 3 | -xmc -[25] << 13; - -289 * -c -++ = -¤ - >> 8; - -290 -¤ - = s¸>> 7 | -Nc -[2] << 9; - -291 -¤ - = s¸>> 2 | -bc -[2] << 14; - -292 * -c -++ = -¤ - >> 7; - -293 -¤ - = s¸>> 2 | -Mc -[2] << 14; - -294 -¤ - = s¸>> 6 | -xmaxc -[2] << 10; - -295 * -c -++ = -¤ - >> 7; - -296 -¤ - = s¸>> 3 | -xmc -[26] << 13; - -297 -¤ - = s¸>> 3 | -xmc -[27] << 13; - -298 -¤ - = s¸>> 3 | -xmc -[28] << 13; - -299 * -c -++ = -¤ - >> 6; - -300 -¤ - = s¸>> 3 | -xmc -[29] << 13; - -301 -¤ - = s¸>> 3 | -xmc -[30] << 13; - -302 * -c -++ = -¤ - >> 8; - -303 -¤ - = s¸>> 3 | -xmc -[31] << 13; - -304 -¤ - = s¸>> 3 | -xmc -[32] << 13; - -305 -¤ - = s¸>> 3 | -xmc -[33] << 13; - -306 * -c -++ = -¤ - >> 7; - -307 -¤ - = s¸>> 3 | -xmc -[34] << 13; - -308 -¤ - = s¸>> 3 | -xmc -[35] << 13; - -309 -¤ - = s¸>> 3 | -xmc -[36] << 13; - -310 * -c -++ = -¤ - >> 6; - -311 -¤ - = s¸>> 3 | -xmc -[37] << 13; - -312 -¤ - = s¸>> 3 | -xmc -[38] << 13; - -313 * -c -++ = -¤ - >> 8; - -314 -¤ - = s¸>> 7 | -Nc -[3] << 9; - -315 -¤ - = s¸>> 2 | -bc -[3] << 14; - -316 * -c -++ = -¤ - >> 7; - -317 -¤ - = s¸>> 2 | -Mc -[3] << 14; - -318 -¤ - = s¸>> 6 | -xmaxc -[3] << 10; - -319 * -c -++ = -¤ - >> 7; - -320 -¤ - = s¸>> 3 | -xmc -[39] << 13; - -321 -¤ - = s¸>> 3 | -xmc -[40] << 13; - -322 -¤ - = s¸>> 3 | -xmc -[41] << 13; - -323 * -c -++ = -¤ - >> 6; - -324 -¤ - = s¸>> 3 | -xmc -[42] << 13; - -325 -¤ - = s¸>> 3 | -xmc -[43] << 13; - -326 * -c -++ = -¤ - >> 8; - -327 -¤ - = s¸>> 3 | -xmc -[44] << 13; - -328 -¤ - = s¸>> 3 | -xmc -[45] << 13; - -329 -¤ - = s¸>> 3 | -xmc -[46] << 13; - -330 * -c -++ = -¤ - >> 7; - -331 -¤ - = s¸>> 3 | -xmc -[47] << 13; - -332 -¤ - = s¸>> 3 | -xmc -[48] << 13; - -333 -¤ - = s¸>> 3 | -xmc -[49] << 13; - -334 * -c -++ = -¤ - >> 6; - -335 -¤ - = s¸>> 3 | -xmc -[50] << 13; - -336 -¤ - = s¸>> 3 | -xmc -[51] << 13; - -337 * -c -++ = -¤ - >> 8; - -346 * -c -++ = (( -GSM_MAGIC - & 0xF) << 4) - -347 | (( -LARc -[0] >> 2) & 0xF); - -348 * -c -++ = (( -LARc -[0] & 0x3) << 6) - -349 | ( -LARc -[1] & 0x3F); - -350 * -c -++ = (( -LARc -[2] & 0x1F) << 3) - -351 | (( -LARc -[3] >> 2) & 0x7); - -352 * -c -++ = (( -LARc -[3] & 0x3) << 6) - -353 | (( -LARc -[4] & 0xF) << 2) - -354 | (( -LARc -[5] >> 2) & 0x3); - -355 * -c -++ = (( -LARc -[5] & 0x3) << 6) - -356 | (( -LARc -[6] & 0x7) << 3) - -357 | ( -LARc -[7] & 0x7); - -358 * -c -++ = (( -Nc -[0] & 0x7F) << 1) - -359 | (( -bc -[0] >> 1) & 0x1); - -360 * -c -++ = (( -bc -[0] & 0x1) << 7) - -361 | (( -Mc -[0] & 0x3) << 5) - -362 | (( -xmaxc -[0] >> 1) & 0x1F); - -363 * -c -++ = (( -xmaxc -[0] & 0x1) << 7) - -364 | (( -xmc -[0] & 0x7) << 4) - -365 | (( -xmc -[1] & 0x7) << 1) - -366 | (( -xmc -[2] >> 2) & 0x1); - -367 * -c -++ = (( -xmc -[2] & 0x3) << 6) - -368 | (( -xmc -[3] & 0x7) << 3) - -369 | ( -xmc -[4] & 0x7); - -370 * -c -++ = (( -xmc -[5] & 0x7) << 5) - -371 | (( -xmc -[6] & 0x7) << 2) - -372 | (( -xmc -[7] >> 1) & 0x3); - -373 * -c -++ = (( -xmc -[7] & 0x1) << 7) - -374 | (( -xmc -[8] & 0x7) << 4) - -375 | (( -xmc -[9] & 0x7) << 1) - -376 | (( -xmc -[10] >> 2) & 0x1); - -377 * -c -++ = (( -xmc -[10] & 0x3) << 6) - -378 | (( -xmc -[11] & 0x7) << 3) - -379 | ( -xmc -[12] & 0x7); - -380 * -c -++ = (( -Nc -[1] & 0x7F) << 1) - -381 | (( -bc -[1] >> 1) & 0x1); - -382 * -c -++ = (( -bc -[1] & 0x1) << 7) - -383 | (( -Mc -[1] & 0x3) << 5) - -384 | (( -xmaxc -[1] >> 1) & 0x1F); - -385 * -c -++ = (( -xmaxc -[1] & 0x1) << 7) - -386 | (( -xmc -[13] & 0x7) << 4) - -387 | (( -xmc -[14] & 0x7) << 1) - -388 | (( -xmc -[15] >> 2) & 0x1); - -389 * -c -++ = (( -xmc -[15] & 0x3) << 6) - -390 | (( -xmc -[16] & 0x7) << 3) - -391 | ( -xmc -[17] & 0x7); - -392 * -c -++ = (( -xmc -[18] & 0x7) << 5) - -393 | (( -xmc -[19] & 0x7) << 2) - -394 | (( -xmc -[20] >> 1) & 0x3); - -395 * -c -++ = (( -xmc -[20] & 0x1) << 7) - -396 | (( -xmc -[21] & 0x7) << 4) - -397 | (( -xmc -[22] & 0x7) << 1) - -398 | (( -xmc -[23] >> 2) & 0x1); - -399 * -c -++ = (( -xmc -[23] & 0x3) << 6) - -400 | (( -xmc -[24] & 0x7) << 3) - -401 | ( -xmc -[25] & 0x7); - -402 * -c -++ = (( -Nc -[2] & 0x7F) << 1) - -403 | (( -bc -[2] >> 1) & 0x1); - -404 * -c -++ = (( -bc -[2] & 0x1) << 7) - -405 | (( -Mc -[2] & 0x3) << 5) - -406 | (( -xmaxc -[2] >> 1) & 0x1F); - -407 * -c -++ = (( -xmaxc -[2] & 0x1) << 7) - -408 | (( -xmc -[26] & 0x7) << 4) - -409 | (( -xmc -[27] & 0x7) << 1) - -410 | (( -xmc -[28] >> 2) & 0x1); - -411 * -c -++ = (( -xmc -[28] & 0x3) << 6) - -412 | (( -xmc -[29] & 0x7) << 3) - -413 | ( -xmc -[30] & 0x7); - -414 * -c -++ = (( -xmc -[31] & 0x7) << 5) - -415 | (( -xmc -[32] & 0x7) << 2) - -416 | (( -xmc -[33] >> 1) & 0x3); - -417 * -c -++ = (( -xmc -[33] & 0x1) << 7) - -418 | (( -xmc -[34] & 0x7) << 4) - -419 | (( -xmc -[35] & 0x7) << 1) - -420 | (( -xmc -[36] >> 2) & 0x1); - -421 * -c -++ = (( -xmc -[36] & 0x3) << 6) - -422 | (( -xmc -[37] & 0x7) << 3) - -423 | ( -xmc -[38] & 0x7); - -424 * -c -++ = (( -Nc -[3] & 0x7F) << 1) - -425 | (( -bc -[3] >> 1) & 0x1); - -426 * -c -++ = (( -bc -[3] & 0x1) << 7) - -427 | (( -Mc -[3] & 0x3) << 5) - -428 | (( -xmaxc -[3] >> 1) & 0x1F); - -429 * -c -++ = (( -xmaxc -[3] & 0x1) << 7) - -430 | (( -xmc -[39] & 0x7) << 4) - -431 | (( -xmc -[40] & 0x7) << 1) - -432 | (( -xmc -[41] >> 2) & 0x1); - -433 * -c -++ = (( -xmc -[41] & 0x3) << 6) - -434 | (( -xmc -[42] & 0x7) << 3) - -435 | ( -xmc -[43] & 0x7); - -436 * -c -++ = (( -xmc -[44] & 0x7) << 5) - -437 | (( -xmc -[45] & 0x7) << 2) - -438 | (( -xmc -[46] >> 1) & 0x3); - -439 * -c -++ = (( -xmc -[46] & 0x1) << 7) - -440 | (( -xmc -[47] & 0x7) << 4) - -441 | (( -xmc -[48] & 0x7) << 1) - -442 | (( -xmc -[49] >> 2) & 0x1); - -443 * -c -++ = (( -xmc -[49] & 0x3) << 6) - -444 | (( -xmc -[50] & 0x7) << 3) - -445 | ( -xmc -[51] & 0x7); - -448 - } -} - - @gsm_option.c - -7 - ~"gsm610_´iv.h -" - -9 - ~"gsm.h -" - -11 - $gsm_ÝtiÚ - ( -gsm - -r -, -Ýt -, * -v® -) - -13 -»suÉ - = -1; - -15 -Ýt -) { - -16 -GSM_OPT_LTP_CUT -: - -17 #ifdeà -LTP_CUT - - -18 -»suÉ - = -r --> -Ép_cut -; - -19 ià( -v® -è -r --> -Ép_cut - = *val; - -23 -GSM_OPT_VERBOSE -: - -24 #iâdef -NDEBUG - - -25 -»suÉ - = -r --> -v”bo£ -; - -26 ià( -v® -è -r --> -v”bo£ - = *val; - -30 -GSM_OPT_FAST -: - -32 #if - `defšed -( -FAST -è&& defšed( -USE_FLOAT_MUL -) - -33 -»suÉ - = -r --> -ç¡ -; - -34 ià( -v® -è -r --> -ç¡ - = !!*val; - -38 -GSM_OPT_FRAME_CHAIN -: - -40 #ifdeà -WAV49 - - -41 -»suÉ - = -r --> -äame_chaš -; - -42 ià( -v® -è -r --> -äame_chaš - = *val; - -46 -GSM_OPT_FRAME_INDEX -: - -48 #ifdeà -WAV49 - - -49 -»suÉ - = -r --> -äame_šdex -; - -50 ià( -v® -è -r --> -äame_šdex - = *val; - -54 -GSM_OPT_WAV49 -: - -56 #ifdeà -WAV49 - - -57 -»suÉ - = -r --> -wav_fmt -; - -58 ià( -v® -è -r --> -wav_fmt - = !!*val; - -65 -»suÉ -; - -66 - } -} - - @long_term.c - -7 - ~<¡dio.h -> - -8 - ~<as£¹.h -> - -10 - ~"gsm610_´iv.h -" - -12 - ~"gsm.h -" - -42 #iâdeà -USE_FLOAT_MUL - - -44 #ifdef -LTP_CUT - - -46 - $Cut_C®cuÏtiÚ_of_the_LTP_·¿m‘”s - ( - -48 -gsm_¡©e - * -¡ -, - -50 -wÜd - * -d -, - -51 -wÜd - * -dp -, - -52 -wÜd - * -bc_out -, - -53 -wÜd - * -Nc_out - - -56 -k -, -Ïmbda -; - -57 -wÜd - -Nc -, -bc -; - -58 -wÜd - -wt -[40]; - -60 -lÚgwÜd - -L_»suÉ -; - -61 -lÚgwÜd - -L_max -, -L_pow” -; - -62 -wÜd - -R -, -S -, -dmax -, -sÿl -, -be¡_k -; - -63 -wÜd - -Ép_cut -; - -65 -wÜd - -‹mp -, -wt_k -; - -69 -dmax - = 0; - -70 -k - = 0; k <= 39; k++) { - -71 -‹mp - = -d -[ -k -]; - -72 -‹mp - = - `GSM_ABS -(emp ); - -73 ià( -‹mp - > -dmax -) { - -74 -dmax - = -‹mp -; - -75 -be¡_k - = -k -; - -78 -‹mp - = 0; - -79 ià( -dmax - =ð0è -sÿl - = 0; - -81 - `as£¹ -( -dmax - > 0); - -82 -‹mp - = - `gsm_nÜm -Ð( -lÚgwÜd -) -dmax - << 16 ); - -84 ià( -‹mp - > 6è -sÿl - = 0; - -85 -sÿl - = 6 - -‹mp -; - -86 - `as£¹ -( -sÿl - >= 0); - -90 -L_max - = 0; - -91 -Nc - = 40; - -92 -wt_k - = - `SASR_W -( -d -[ -be¡_k -], -sÿl -); - -94 -Ïmbda - = 40;†ambda <= 120;†ambda++) { - -95 -L_»suÉ - = ( -lÚgwÜd -) -wt_k - * -dp -[ -be¡_k - - -Ïmbda -]; - -96 ià( -L_»suÉ - > -L_max -) { - -97 -Nc - = -Ïmbda -; - -98 -L_max - = -L_»suÉ -; - -101 * -Nc_out - = -Nc -; - -102 -L_max - <<= 1; - -106 - `as£¹ -( -sÿl - <= 100 && scal >= -100); - -107 -L_max - = L_max >> (6 - -sÿl -); - -109 - `as£¹ -Ð -Nc - <= 120 && Nc >= 40); - -114 -L_pow” - = 0; - -115 -k - = 0; k <= 39; k++) { - -117 -lÚgwÜd - -L_‹mp -; - -119 -L_‹mp - = - `SASR_W -Ð -dp -[ -k - - -Nc -], 3 ); - -120 -L_pow” - +ð -L_‹mp - * L_temp; - -122 -L_pow” - <<= 1; - -127 ià( -L_max - <= 0) { - -128 * -bc_out - = 0; - -131 ià( -L_max - >ð -L_pow” -) { - -132 * -bc_out - = 3; - -136 -‹mp - = - `gsm_nÜm -Ð -L_pow” - ); - -138 -R - = - `SASR -Ð -L_max - << -‹mp -, 16 ); - -139 -S - = - `SASR -Ð -L_pow” - << -‹mp -, 16 ); - -147 -bc - = 0; bø<ð2; bc++èià( -R - <ð - `gsm_muÉ -( -S -, -gsm_DLB -[bc])) ; - -148 * -bc_out - = -bc -; - -149 - } -} - -153 - $C®cuÏtiÚ_of_the_LTP_·¿m‘”s - ( - -154 -wÜd - * -d -, - -155 -wÜd - * -dp -, - -156 -wÜd - * -bc_out -, - -157 -wÜd - * -Nc_out - - -160 -k -, -Ïmbda -; - -161 -wÜd - -Nc -, -bc -; - -162 -wÜd - -wt -[40]; - -164 -lÚgwÜd - -L_max -, -L_pow” -; - -165 -wÜd - -R -, -S -, -dmax -, -sÿl -; - -166 -wÜd - -‹mp -; - -170 -dmax - = 0; - -172 -k - = 0; k <= 39; k++) { - -173 -‹mp - = -d -[ -k -]; - -174 -‹mp - = - `GSM_ABS -(emp ); - -175 ià( -‹mp - > -dmax -) dmax =emp; - -178 -‹mp - = 0; - -179 ià( -dmax - =ð0è -sÿl - = 0; - -181 - `as£¹ -( -dmax - > 0); - -182 -‹mp - = - `gsm_nÜm -Ð( -lÚgwÜd -) -dmax - << 16 ); - -185 ià( -‹mp - > 6è -sÿl - = 0; - -186 -sÿl - = 6 - -‹mp -; - -188 - `as£¹ -( -sÿl - >= 0); - -193 -k - = 0; k <ð39; k++è -wt -[k] = - `SASR_W -Ð -d -[k], -sÿl - ); - -197 -L_max - = 0; - -198 -Nc - = 40; - -200 -Ïmbda - = 40;†ambda <= 120;†ambda++) { - -202 #undeà -STEP - - -203 - #STEP -( -k -è( -lÚgwÜd -) -wt -[k] * -dp -[k - -Ïmbda -] - - ) - -205 -lÚgwÜd - -L_»suÉ -; - -207 -L_»suÉ - = - `STEP -(0) ; L_result += STEP(1) ; - -208 -L_»suÉ - +ð - `STEP -(2) ; L_result += STEP(3) ; - -209 -L_»suÉ - +ð - `STEP -(4) ; L_result += STEP(5) ; - -210 -L_»suÉ - +ð - `STEP -(6) ; L_result += STEP(7) ; - -211 -L_»suÉ - +ð - `STEP -(8) ; L_result += STEP(9) ; - -212 -L_»suÉ - +ð - `STEP -(10) ; L_result += STEP(11) ; - -213 -L_»suÉ - +ð - `STEP -(12) ; L_result += STEP(13) ; - -214 -L_»suÉ - +ð - `STEP -(14) ; L_result += STEP(15) ; - -215 -L_»suÉ - +ð - `STEP -(16) ; L_result += STEP(17) ; - -216 -L_»suÉ - +ð - `STEP -(18) ; L_result += STEP(19) ; - -217 -L_»suÉ - +ð - `STEP -(20) ; L_result += STEP(21) ; - -218 -L_»suÉ - +ð - `STEP -(22) ; L_result += STEP(23) ; - -219 -L_»suÉ - +ð - `STEP -(24) ; L_result += STEP(25) ; - -220 -L_»suÉ - +ð - `STEP -(26) ; L_result += STEP(27) ; - -221 -L_»suÉ - +ð - `STEP -(28) ; L_result += STEP(29) ; - -222 -L_»suÉ - +ð - `STEP -(30) ; L_result += STEP(31) ; - -223 -L_»suÉ - +ð - `STEP -(32) ; L_result += STEP(33) ; - -224 -L_»suÉ - +ð - `STEP -(34) ; L_result += STEP(35) ; - -225 -L_»suÉ - +ð - `STEP -(36) ; L_result += STEP(37) ; - -226 -L_»suÉ - +ð - `STEP -(38) ; L_result += STEP(39) ; - -228 ià( -L_»suÉ - > -L_max -) { - -230 -Nc - = -Ïmbda -; - -231 -L_max - = -L_»suÉ -; - -235 * -Nc_out - = -Nc -; - -237 -L_max - <<= 1; - -241 - `as£¹ -( -sÿl - <= 100 && scal >= -100); - -242 -L_max - = L_max >> (6 - -sÿl -); - -244 - `as£¹ -Ð -Nc - <= 120 && Nc >= 40); - -249 -L_pow” - = 0; - -250 -k - = 0; k <= 39; k++) { - -252 -lÚgwÜd - -L_‹mp -; - -254 -L_‹mp - = - `SASR_W -Ð -dp -[ -k - - -Nc -], 3 ); - -255 -L_pow” - +ð -L_‹mp - * L_temp; - -257 -L_pow” - <<= 1; - -262 ià( -L_max - <= 0) { - -263 * -bc_out - = 0; - -266 ià( -L_max - >ð -L_pow” -) { - -267 * -bc_out - = 3; - -271 -‹mp - = - `gsm_nÜm -Ð -L_pow” - ); - -273 -R - = - `SASR_L -Ð -L_max - << -‹mp -, 16 ); - -274 -S - = - `SASR_L -Ð -L_pow” - << -‹mp -, 16 ); - -282 -bc - = 0; bø<ð2; bc++èià( -R - <ð - `gsm_muÉ -( -S -, -gsm_DLB -[bc])) ; - -283 * -bc_out - = -bc -; - -284 - } -} - -288 #ifdef -LTP_CUT - - -290 - $Cut_C®cuÏtiÚ_of_the_LTP_·¿m‘”s - ( - -291 -gsm_¡©e - * -¡ -, - -292 -wÜd - * -d -, - -293 -wÜd - * -dp -, - -294 -wÜd - * -bc_out -, - -295 -wÜd - * -Nc_out - - -298 -k -, -Ïmbda -; - -299 -wÜd - -Nc -, -bc -; - -300 -wÜd - -Ép_cut -; - -302 -wt_æßt -[40]; - -303 -dp_æßt_ba£ -[120], * -dp_æßt - = dp_float_base + 120; - -305 -lÚgwÜd - -L_max -, -L_pow” -; - -306 -wÜd - -R -, -S -, -dmax -, -sÿl -; - -307 -wÜd - -‹mp -; - -311 -dmax - = 0; - -313 -k - = 0; k <= 39; k++) { - -314 -‹mp - = -d -[ -k -]; - -315 -‹mp - = - `GSM_ABS -(emp ); - -316 ià( -‹mp - > -dmax -) dmax =emp; - -319 -‹mp - = 0; - -320 ià( -dmax - =ð0è -sÿl - = 0; - -322 - `as£¹ -( -dmax - > 0); - -323 -‹mp - = - `gsm_nÜm -Ð( -lÚgwÜd -) -dmax - << 16 ); - -326 ià( -‹mp - > 6è -sÿl - = 0; - -327 -sÿl - = 6 - -‹mp -; - -329 - `as£¹ -( -sÿl - >= 0); - -330 -Ép_cut - = ( -lÚgwÜd -) - `SASR_W -( -dmax -, -sÿl -è* -¡ -->ltp_cut / 100; - -336 -k - = 0; k < 40; k++) { - -337 -wÜd - -w - = - `SASR_W -Ð -d -[ -k -], -sÿl - ); - -338 ià( -w - < 0 ? w > - -Ép_cut - : w <†tp_cut) { - -339 -wt_æßt -[ -k -] = 0.0; - -342 -wt_æßt -[ -k -] = -w -; - -345 -k - = -120; k < 0; k++è -dp_æßt -[k] = -dp -[k]; - -349 -L_max - = 0; - -350 -Nc - = 40; - -352 -Ïmbda - = 40;†ambda <= 120;†ambda += 9) { - -356 * -Í - = -dp_æßt - - -Ïmbda -; - -358 -W -; - -359 -a - = -Í -[-8], -b - =†p[-7], -c - =†p[-6], - -360 -d - = -Í -[-5], -e - =†p[-4], -f - =†p[-3], - -361 -g - = -Í -[-2], -h - =†p[-1]; - -362 -E -; - -363 -S0 - = 0, -S1 - = 0, -S2 - = 0, -S3 - = 0, -S4 - = 0, - -364 -S5 - = 0, -S6 - = 0, -S7 - = 0, -S8 - = 0; - -366 #undeà -STEP - - -367 - #STEP -( -K -, -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -) \ - -368 ià(( -W - = -wt_æßt -[ -K -]) != 0.0) { \ - -369 -E - = -W - * -a -; -S8 - += E; \ - -370 -E - = -W - * -b -; -S7 - += E; \ - -371 -E - = -W - * -c -; -S6 - += E; \ - -372 -E - = -W - * -d -; -S5 - += E; \ - -373 -E - = -W - * -e -; -S4 - += E; \ - -374 -E - = -W - * -f -; -S3 - += E; \ - -375 -E - = -W - * -g -; -S2 - += E; \ - -376 -E - = -W - * -h -; -S1 - += E; \ - -377 -a - = -Í -[ -K -]; \ - -378 -E - = -W - * -a -; -S0 - +ðE; } × = -Í -[ -K -]) - - ) - -380 - #STEP_A -( -K -è - `STEP -(K, -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -) - - ) - -381 - #STEP_B -( -K -è - `STEP -(K, -b -, -c -, -d -, -e -, -f -, -g -, -h -, -a -) - - ) - -382 - #STEP_C -( -K -è - `STEP -(K, -c -, -d -, -e -, -f -, -g -, -h -, -a -, -b -) - - ) - -383 - #STEP_D -( -K -è - `STEP -(K, -d -, -e -, -f -, -g -, -h -, -a -, -b -, -c -) - - ) - -384 - #STEP_E -( -K -è - `STEP -(K, -e -, -f -, -g -, -h -, -a -, -b -, -c -, -d -) - - ) - -385 - #STEP_F -( -K -è - `STEP -(K, -f -, -g -, -h -, -a -, -b -, -c -, -d -, -e -) - - ) - -386 - #STEP_G -( -K -è - `STEP -(K, -g -, -h -, -a -, -b -, -c -, -d -, -e -, -f -) - - ) - -387 - #STEP_H -( -K -è - `STEP -(K, -h -, -a -, -b -, -c -, -d -, -e -, -f -, -g -) - - ) - -389 - `STEP_A -Ð0); - `STEP_B -Ð1); - `STEP_C -Ð2); - `STEP_D -( 3); - -390 - `STEP_E -Ð4); - `STEP_F -Ð5); - `STEP_G -Ð6); - `STEP_H -( 7); - -392 - `STEP_A -Ð8); - `STEP_B -Ð9); - `STEP_C -(10); - `STEP_D -(11); - -393 - `STEP_E -(12); - `STEP_F -(13); - `STEP_G -(14); - `STEP_H -(15); - -395 - `STEP_A -(16); - `STEP_B -(17); - `STEP_C -(18); - `STEP_D -(19); - -396 - `STEP_E -(20); - `STEP_F -(21); - `STEP_G -(22); - `STEP_H -(23); - -398 - `STEP_A -(24); - `STEP_B -(25); - `STEP_C -(26); - `STEP_D -(27); - -399 - `STEP_E -(28); - `STEP_F -(29); - `STEP_G -(30); - `STEP_H -(31); - -401 - `STEP_A -(32); - `STEP_B -(33); - `STEP_C -(34); - `STEP_D -(35); - -402 - `STEP_E -(36); - `STEP_F -(37); - `STEP_G -(38); - `STEP_H -(39); - -404 ià( -S0 - > -L_max -è{ L_max = S0; -Nc - = -Ïmbda -; } - -405 ià( -S1 - > -L_max -è{ L_max = S1; -Nc - = -Ïmbda - + 1; } - -406 ià( -S2 - > -L_max -è{ L_max = S2; -Nc - = -Ïmbda - + 2; } - -407 ià( -S3 - > -L_max -è{ L_max = S3; -Nc - = -Ïmbda - + 3; } - -408 ià( -S4 - > -L_max -è{ L_max = S4; -Nc - = -Ïmbda - + 4; } - -409 ià( -S5 - > -L_max -è{ L_max = S5; -Nc - = -Ïmbda - + 5; } - -410 ià( -S6 - > -L_max -è{ L_max = S6; -Nc - = -Ïmbda - + 6; } - -411 ià( -S7 - > -L_max -è{ L_max = S7; -Nc - = -Ïmbda - + 7; } - -412 ià( -S8 - > -L_max -è{ L_max = S8; -Nc - = -Ïmbda - + 8; } - -415 * -Nc_out - = -Nc -; - -417 -L_max - <<= 1; - -421 - `as£¹ -( -sÿl - <= 100 && scal >= -100); - -422 -L_max - = L_max >> (6 - -sÿl -); - -424 - `as£¹ -Ð -Nc - <= 120 && Nc >= 40); - -429 -L_pow” - = 0; - -430 -k - = 0; k <= 39; k++) { - -432 -lÚgwÜd - -L_‹mp -; - -434 -L_‹mp - = - `SASR_W -Ð -dp -[ -k - - -Nc -], 3 ); - -435 -L_pow” - +ð -L_‹mp - * L_temp; - -437 -L_pow” - <<= 1; - -442 ià( -L_max - <= 0) { - -443 * -bc_out - = 0; - -446 ià( -L_max - >ð -L_pow” -) { - -447 * -bc_out - = 3; - -451 -‹mp - = - `gsm_nÜm -Ð -L_pow” - ); - -453 -R - = - `SASR -Ð -L_max - << -‹mp -, 16 ); - -454 -S - = - `SASR -Ð -L_pow” - << -‹mp -, 16 ); - -462 -bc - = 0; bø<ð2; bc++èià( -R - <ð - `gsm_muÉ -( -S -, -gsm_DLB -[bc])) ; - -463 * -bc_out - = -bc -; - -464 - } -} - -468 - $C®cuÏtiÚ_of_the_LTP_·¿m‘”s - ( - -469 -wÜd - * -dš -, - -470 -wÜd - * -dp -, - -471 -wÜd - * -bc_out -, - -472 -wÜd - * -Nc_out - - -475 -k -, -Ïmbda -; - -476 -wÜd - -Nc -, -bc -; - -478 -wt_æßt -[40]; - -479 -dp_æßt_ba£ -[120], * -dp_æßt - = dp_float_base + 120; - -481 -lÚgwÜd - -L_max -, -L_pow” -; - -482 -wÜd - -R -, -S -, -dmax -, -sÿl -; - -483 -wÜd - -‹mp -; - -487 -dmax - = 0; - -489 -k - = 0; k <= 39; k++) { - -490 -‹mp - = -dš - [ -k -] ; - -491 -‹mp - = - `GSM_ABS - (temp) ; - -492 ià( -‹mp - > -dmax -) dmax =emp; - -495 -‹mp - = 0; - -496 ià( -dmax - =ð0è -sÿl - = 0; - -498 - `as£¹ -( -dmax - > 0); - -499 -‹mp - = - `gsm_nÜm -Ð( -lÚgwÜd -) -dmax - << 16 ); - -502 ià( -‹mp - > 6è -sÿl - = 0; - -503 -sÿl - = 6 - -‹mp -; - -505 - `as£¹ -( -sÿl - >= 0); - -510 -k - = 0; k < 40; k++è -wt_æßt -[k] = - `SASR_W - ( -dš - [k], -sÿl -) ; - -511 -k - = -120; k < 0; k++è -dp_æßt -[k] = -dp -[k]; - -515 -L_max - = 0; - -516 -Nc - = 40; - -518 -Ïmbda - = 40;†ambda <= 120;†ambda += 9) { - -522 * -Í - = -dp_æßt - - -Ïmbda -; - -524 -W -; - -525 -a - = -Í -[-8], -b - =†p[-7], -c - =†p[-6], - -526 -d - = -Í -[-5], -e - =†p[-4], -f - =†p[-3], - -527 -g - = -Í -[-2], -h - =†p[-1]; - -528 -E -; - -529 -S0 - = 0, -S1 - = 0, -S2 - = 0, -S3 - = 0, -S4 - = 0, - -530 -S5 - = 0, -S6 - = 0, -S7 - = 0, -S8 - = 0; - -532 #undeà -STEP - - -533 - #STEP -( -K -, -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -) \ - -534 -W - = -wt_æßt -[ -K -]; \ - -535 -E - = -W - * -a -; -S8 - += E; \ - -536 -E - = -W - * -b -; -S7 - += E; \ - -537 -E - = -W - * -c -; -S6 - += E; \ - -538 -E - = -W - * -d -; -S5 - += E; \ - -539 -E - = -W - * -e -; -S4 - += E; \ - -540 -E - = -W - * -f -; -S3 - += E; \ - -541 -E - = -W - * -g -; -S2 - += E; \ - -542 -E - = -W - * -h -; -S1 - += E; \ - -543 -a - = -Í -[ -K -]; \ - -544 -E - = -W - * -a -; -S0 - +ð - ) -E - -546 - #STEP_A -( -K -è - `STEP -(K, -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -) - - ) - -547 - #STEP_B -( -K -è - `STEP -(K, -b -, -c -, -d -, -e -, -f -, -g -, -h -, -a -) - - ) - -548 - #STEP_C -( -K -è - `STEP -(K, -c -, -d -, -e -, -f -, -g -, -h -, -a -, -b -) - - ) - -549 - #STEP_D -( -K -è - `STEP -(K, -d -, -e -, -f -, -g -, -h -, -a -, -b -, -c -) - - ) - -550 - #STEP_E -( -K -è - `STEP -(K, -e -, -f -, -g -, -h -, -a -, -b -, -c -, -d -) - - ) - -551 - #STEP_F -( -K -è - `STEP -(K, -f -, -g -, -h -, -a -, -b -, -c -, -d -, -e -) - - ) - -552 - #STEP_G -( -K -è - `STEP -(K, -g -, -h -, -a -, -b -, -c -, -d -, -e -, -f -) - - ) - -553 - #STEP_H -( -K -è - `STEP -(K, -h -, -a -, -b -, -c -, -d -, -e -, -f -, -g -) - - ) - -555 - `STEP_A -Ð0); - `STEP_B -Ð1); - `STEP_C -Ð2); - `STEP_D -( 3); - -556 - `STEP_E -Ð4); - `STEP_F -Ð5); - `STEP_G -Ð6); - `STEP_H -( 7); - -558 - `STEP_A -Ð8); - `STEP_B -Ð9); - `STEP_C -(10); - `STEP_D -(11); - -559 - `STEP_E -(12); - `STEP_F -(13); - `STEP_G -(14); - `STEP_H -(15); - -561 - `STEP_A -(16); - `STEP_B -(17); - `STEP_C -(18); - `STEP_D -(19); - -562 - `STEP_E -(20); - `STEP_F -(21); - `STEP_G -(22); - `STEP_H -(23); - -564 - `STEP_A -(24); - `STEP_B -(25); - `STEP_C -(26); - `STEP_D -(27); - -565 - `STEP_E -(28); - `STEP_F -(29); - `STEP_G -(30); - `STEP_H -(31); - -567 - `STEP_A -(32); - `STEP_B -(33); - `STEP_C -(34); - `STEP_D -(35); - -568 - `STEP_E -(36); - `STEP_F -(37); - `STEP_G -(38); - `STEP_H -(39); - -570 ià( -S0 - > -L_max -è{ L_max = S0; -Nc - = -Ïmbda -; } - -571 ià( -S1 - > -L_max -è{ L_max = S1; -Nc - = -Ïmbda - + 1; } - -572 ià( -S2 - > -L_max -è{ L_max = S2; -Nc - = -Ïmbda - + 2; } - -573 ià( -S3 - > -L_max -è{ L_max = S3; -Nc - = -Ïmbda - + 3; } - -574 ià( -S4 - > -L_max -è{ L_max = S4; -Nc - = -Ïmbda - + 4; } - -575 ià( -S5 - > -L_max -è{ L_max = S5; -Nc - = -Ïmbda - + 5; } - -576 ià( -S6 - > -L_max -è{ L_max = S6; -Nc - = -Ïmbda - + 6; } - -577 ià( -S7 - > -L_max -è{ L_max = S7; -Nc - = -Ïmbda - + 7; } - -578 ià( -S8 - > -L_max -è{ L_max = S8; -Nc - = -Ïmbda - + 8; } - -580 * -Nc_out - = -Nc -; - -582 -L_max - <<= 1; - -586 - `as£¹ -( -sÿl - <= 100 && scal >= -100); - -587 -L_max - = L_max >> (6 - -sÿl -); - -589 - `as£¹ -Ð -Nc - <= 120 && Nc >= 40); - -594 -L_pow” - = 0; - -595 -k - = 0; k <= 39; k++) { - -597 -lÚgwÜd - -L_‹mp -; - -599 -L_‹mp - = - `SASR_W -Ð -dp -[ -k - - -Nc -], 3 ); - -600 -L_pow” - +ð -L_‹mp - * L_temp; - -602 -L_pow” - <<= 1; - -607 ià( -L_max - <= 0) { - -608 * -bc_out - = 0; - -611 ià( -L_max - >ð -L_pow” -) { - -612 * -bc_out - = 3; - -616 -‹mp - = - `gsm_nÜm -Ð -L_pow” - ); - -618 -R - = - `SASR_L - ( -L_max - << -‹mp -, 16 ); - -619 -S - = - `SASR_L - ( -L_pow” - << -‹mp -, 16 ); - -627 -bc - = 0; bø<ð2; bc++èià( -R - <ð - `gsm_muÉ -( -S -, -gsm_DLB -[bc])) ; - -628 * -bc_out - = -bc -; - -629 - } -} - -631 #ifdef -FAST - - -632 #ifdef -LTP_CUT - - -634 - $Cut_Fa¡_C®cuÏtiÚ_of_the_LTP_·¿m‘”s - ( - -635 -gsm_¡©e - * -¡ -, - -636 -wÜd - * -d -, - -637 -wÜd - * -dp -, - -638 -wÜd - * -bc_out -, - -639 -wÜd - * -Nc_out - - -642 -k -, -Ïmbda -; - -643 -wt_æßt -; - -644 -wÜd - -Nc -, -bc -; - -645 -wÜd - -wt_max -, -be¡_k -, -Ép_cut -; - -647 -dp_æßt_ba£ -[120], * -dp_æßt - = dp_float_base + 120; - -649 -L_»suÉ -, -L_max -, -L_pow” -; - -651 -wt_max - = 0; - -653 -k - = 0; k < 40; ++k) { - -654 iàÐ -d -[ -k -] > -wt_max -èwt_max = d[ -be¡_k - = k]; - -655 ià(- -d -[ -k -] > -wt_max -èwt_max = -d[ -be¡_k - = k]; - -658 - `as£¹ -( -wt_max - >= 0); - -659 -wt_æßt - = () -wt_max -; - -661 -k - = -120; k < 0; ++kè -dp_æßt -[k] = () -dp -[k]; - -665 -L_max - = 0; - -666 -Nc - = 40; - -668 -Ïmbda - = 40;†ambda <= 120;†ambda++) { - -669 -L_»suÉ - = -wt_æßt - * -dp_æßt -[ -be¡_k - - -Ïmbda -]; - -670 ià( -L_»suÉ - > -L_max -) { - -671 -Nc - = -Ïmbda -; - -672 -L_max - = -L_»suÉ -; - -676 * -Nc_out - = -Nc -; - -677 ià( -L_max - <= 0.) { - -678 * -bc_out - = 0; - -685 -dp_æßt - -ð -Nc -; - -686 -L_pow” - = 0; - -687 -k - = 0; k < 40; ++k) { - -688 -f - = -dp_æßt -[ -k -]; - -689 -L_pow” - +ð -f - * f; - -692 ià( -L_max - >ð -L_pow” -) { - -693 * -bc_out - = 3; - -701 -Ïmbda - = -L_max - / -L_pow” - * 32768.; - -702 -bc - = 0; bø<ð2; ++bcèià( -Ïmbda - <ð -gsm_DLB -[bc]) ; - -703 * -bc_out - = -bc -; - -704 - } -} - -708 - $Fa¡_C®cuÏtiÚ_of_the_LTP_·¿m‘”s - ( - -709 -wÜd - * -dš -, - -710 -wÜd - * -dp -, - -711 -wÜd - * -bc_out -, - -712 -wÜd - * -Nc_out - - -715 -k -, -Ïmbda -; - -716 -wÜd - -Nc -, -bc -; - -718 -wt_æßt -[40]; - -719 -dp_æßt_ba£ -[120], * -dp_æßt - = dp_float_base + 120; - -721 -L_max -, -L_pow” -; - -723 -k - = 0; k < 40; ++kè -wt_æßt -[k] = (è -dš - [k] ; - -724 -k - = -120; k < 0; ++kè -dp_æßt -[k] = (è -dp - [k] ; - -728 -L_max - = 0; - -729 -Nc - = 40; - -731 -Ïmbda - = 40;†ambda <= 120;†ambda += 9) { - -735 * -Í - = -dp_æßt - - -Ïmbda -; - -737 -W -; - -738 -a - = -Í -[-8], -b - =†p[-7], -c - =†p[-6], - -739 -d - = -Í -[-5], -e - =†p[-4], -f - =†p[-3], - -740 -g - = -Í -[-2], -h - =†p[-1]; - -741 -E -; - -742 -S0 - = 0, -S1 - = 0, -S2 - = 0, -S3 - = 0, -S4 - = 0, - -743 -S5 - = 0, -S6 - = 0, -S7 - = 0, -S8 - = 0; - -745 #undeà -STEP - - -746 - #STEP -( -K -, -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -) \ - -747 -W - = -wt_æßt -[ -K -]; \ - -748 -E - = -W - * -a -; -S8 - += E; \ - -749 -E - = -W - * -b -; -S7 - += E; \ - -750 -E - = -W - * -c -; -S6 - += E; \ - -751 -E - = -W - * -d -; -S5 - += E; \ - -752 -E - = -W - * -e -; -S4 - += E; \ - -753 -E - = -W - * -f -; -S3 - += E; \ - -754 -E - = -W - * -g -; -S2 - += E; \ - -755 -E - = -W - * -h -; -S1 - += E; \ - -756 -a - = -Í -[ -K -]; \ - -757 -E - = -W - * -a -; -S0 - +ð - ) -E - -759 - #STEP_A -( -K -è - `STEP -(K, -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -) - - ) - -760 - #STEP_B -( -K -è - `STEP -(K, -b -, -c -, -d -, -e -, -f -, -g -, -h -, -a -) - - ) - -761 - #STEP_C -( -K -è - `STEP -(K, -c -, -d -, -e -, -f -, -g -, -h -, -a -, -b -) - - ) - -762 - #STEP_D -( -K -è - `STEP -(K, -d -, -e -, -f -, -g -, -h -, -a -, -b -, -c -) - - ) - -763 - #STEP_E -( -K -è - `STEP -(K, -e -, -f -, -g -, -h -, -a -, -b -, -c -, -d -) - - ) - -764 - #STEP_F -( -K -è - `STEP -(K, -f -, -g -, -h -, -a -, -b -, -c -, -d -, -e -) - - ) - -765 - #STEP_G -( -K -è - `STEP -(K, -g -, -h -, -a -, -b -, -c -, -d -, -e -, -f -) - - ) - -766 - #STEP_H -( -K -è - `STEP -(K, -h -, -a -, -b -, -c -, -d -, -e -, -f -, -g -) - - ) - -768 - `STEP_A -Ð0); - `STEP_B -Ð1); - `STEP_C -Ð2); - `STEP_D -( 3); - -769 - `STEP_E -Ð4); - `STEP_F -Ð5); - `STEP_G -Ð6); - `STEP_H -( 7); - -771 - `STEP_A -Ð8); - `STEP_B -Ð9); - `STEP_C -(10); - `STEP_D -(11); - -772 - `STEP_E -(12); - `STEP_F -(13); - `STEP_G -(14); - `STEP_H -(15); - -774 - `STEP_A -(16); - `STEP_B -(17); - `STEP_C -(18); - `STEP_D -(19); - -775 - `STEP_E -(20); - `STEP_F -(21); - `STEP_G -(22); - `STEP_H -(23); - -777 - `STEP_A -(24); - `STEP_B -(25); - `STEP_C -(26); - `STEP_D -(27); - -778 - `STEP_E -(28); - `STEP_F -(29); - `STEP_G -(30); - `STEP_H -(31); - -780 - `STEP_A -(32); - `STEP_B -(33); - `STEP_C -(34); - `STEP_D -(35); - -781 - `STEP_E -(36); - `STEP_F -(37); - `STEP_G -(38); - `STEP_H -(39); - -783 ià( -S0 - > -L_max -è{ L_max = S0; -Nc - = -Ïmbda -; } - -784 ià( -S1 - > -L_max -è{ L_max = S1; -Nc - = -Ïmbda - + 1; } - -785 ià( -S2 - > -L_max -è{ L_max = S2; -Nc - = -Ïmbda - + 2; } - -786 ià( -S3 - > -L_max -è{ L_max = S3; -Nc - = -Ïmbda - + 3; } - -787 ià( -S4 - > -L_max -è{ L_max = S4; -Nc - = -Ïmbda - + 4; } - -788 ià( -S5 - > -L_max -è{ L_max = S5; -Nc - = -Ïmbda - + 5; } - -789 ià( -S6 - > -L_max -è{ L_max = S6; -Nc - = -Ïmbda - + 6; } - -790 ià( -S7 - > -L_max -è{ L_max = S7; -Nc - = -Ïmbda - + 7; } - -791 ià( -S8 - > -L_max -è{ L_max = S8; -Nc - = -Ïmbda - + 8; } - -793 * -Nc_out - = -Nc -; - -795 ià( -L_max - <= 0.) { - -796 * -bc_out - = 0; - -803 -dp_æßt - -ð -Nc -; - -804 -L_pow” - = 0; - -805 -k - = 0; k < 40; ++k) { - -806 -f - = -dp_æßt -[ -k -]; - -807 -L_pow” - +ð -f - * f; - -810 ià( -L_max - >ð -L_pow” -) { - -811 * -bc_out - = 3; - -819 -Ïmbda - = -L_max - / -L_pow” - * 32768.; - -820 -bc - = 0; bø<ð2; ++bcèià( -Ïmbda - <ð -gsm_DLB -[bc]) ; - -821 * -bc_out - = -bc -; - -822 - } -} - -830 - $LÚg_‹rm_ª®ysis_fž‹ršg - ( - -831 -wÜd - -bc -, - -832 -wÜd - -Nc -, - -833 -wÜd - * -dp -, - -834 -wÜd - * -d -, - -835 -wÜd - * -dµ -, - -836 -wÜd - * -e - - -845 -k -; - -847 #undeà -STEP - - -848 - #STEP -( -BP -) \ - -849 -k - = 0; k <= 39; k++) { \ - -850 -dµ -[ -k -] = - `GSM_MULT_R -Ð -BP -, -dp -[k - -Nc -]); \ - -851 -e -[ -k -] = - `GSM_SUB -Ð -d -[k], -dµ -[k] ); \ - -852 } - - ) - -854 -bc -) { - -855 0: - `STEP -( 3277 ); ; - -856 1: - `STEP -( 11469 ); ; - -857 2: - `STEP -( 21299 ); ; - -858 3: - `STEP -( 32767 ); ; - -860 - } -} - -862 - $Gsm_LÚg_T”m_P»diùÜ - ( - -864 -gsm_¡©e - * -S -, - -866 -wÜd - * -d -, - -867 -wÜd - * -dp -, - -869 -wÜd - * -e -, - -870 -wÜd - * -dµ -, - -871 -wÜd - * -Nc -, - -872 -wÜd - * -bc - - -875 - `as£¹ -Ð -d - );‡s£¹Ð -dp - );‡s£¹Ð -e - ); - -876 - `as£¹ -Ð -dµ -);‡s£¹Ð -Nc - );‡s£¹Ð -bc - ); - -878 #ià - `defšed -( -FAST -è&& defšed( -USE_FLOAT_MUL -) - -879 ià( -S --> -ç¡ -) - -880 #ià - `defšed - ( -LTP_CUT -) - -881 ià( -S --> -Ép_cut -) - -882 - `Cut_Fa¡_C®cuÏtiÚ_of_the_LTP_·¿m‘”s -( -S -, - -883 -d -, -dp -, -bc -, -Nc -); - -886 - `Fa¡_C®cuÏtiÚ_of_the_LTP_·¿m‘”s -( -d -, -dp -, -bc -, -Nc - ); - -889 #ifdeà -LTP_CUT - - -890 ià( -S --> -Ép_cut -) - -891 - `Cut_C®cuÏtiÚ_of_the_LTP_·¿m‘”s -( -S -, -d -, -dp -, -bc -, -Nc -); - -894 - `C®cuÏtiÚ_of_the_LTP_·¿m‘”s -( -d -, -dp -, -bc -, -Nc -); - -896 - `LÚg_‹rm_ª®ysis_fž‹ršg -Ð* -bc -, * -Nc -, -dp -, -d -, -dµ -, -e - ); - -897 - } -} - -900 - $Gsm_LÚg_T”m_SyÁhesis_Fž‹ršg - ( - -901 -gsm_¡©e - * -S -, - -903 -wÜd - -Nü -, - -904 -wÜd - -bü -, - -905 -wÜd - * -”p -, - -906 -wÜd - * -d½ - - -914 -k -; - -915 -wÜd - -b½ -, -d½p -, -Nr -; - -919 -Nr - = -Nü - < 40 || Nü > 120 ? -S --> -Äp - : Ncr; - -920 -S --> -Äp - = -Nr -; - -921 - `as£¹ -( -Nr - >= 40 && Nr <= 120); - -925 -b½ - = -gsm_QLB -[ -bü - ]; - -930 - `as£¹ -( -b½ - !ð -MIN_WORD -); - -932 -k - = 0; k <= 39; k++) { - -933 -d½p - = - `GSM_MULT_R -Ð -b½ -, -d½ -[ -k - - -Nr - ] ); - -934 -d½ -[ -k -] = - `GSM_ADD -Ð -”p -[k], -d½p - ); - -942 -k - = 0; k <ð119; k++è -d½ -[ -120 + k ] = drp[ -80 + k ]; - -943 - } -} - - @lpc.c - -7 - ~<¡dio.h -> - -8 - ~<as£¹.h -> - -10 - ~"gsm610_´iv.h -" - -12 - ~"gsm.h -" - -21 - $AutocÜ»ÏtiÚ - ( - -22 -wÜd - * -s -, - -23 -lÚgwÜd - * -L_ACF -) - -29 -k -, -i -; - -31 -wÜd - -‹mp -, -smax -, -sÿÏuto -; - -33 #ifdef -USE_FLOAT_MUL - - -34 -æßt_s -[160]; - -42 -smax - = 0; - -43 -k - = 0; k <= 159; k++) { - -44 -‹mp - = - `GSM_ABS -Ð -s -[ -k -] ); - -45 ià( -‹mp - > -smax -) smax =emp; - -50 ià( -smax - =ð0è -sÿÏuto - = 0; - -52 - `as£¹ -( -smax - > 0); - -53 -sÿÏuto - = 4 - - `gsm_nÜm -Ð( -lÚgwÜd -) -smax - << 16 ); - -59 ià( -sÿÏuto - > 0) { - -61 #ifdeà -USE_FLOAT_MUL - - -62 - #SCALE -( -n -) \ - -63 -n -: -k - = 0; k <= 159; k++) \ - -64 -æßt_s -[ -k -] = () \ - -65 ( -s -[ -k -] = - `GSM_MULT_R -(s[k], 16384 >> ( -n --1)));\ - -66 ; - - ) - -68 - #SCALE -( -n -) \ - -69 -n -: -k - = 0; k <= 159; k++) \ - -70 -s -[ -k -] = - `GSM_MULT_R -Ðs[k], 16384 >> ( -n --1) );\ - -71 ; - - ) - -74 -sÿÏuto -) { - -75 - `SCALE -(1) - -76 - `SCALE -(2) - -77 - `SCALE -(3) - -78 - `SCALE -(4) - -80 #undeà -SCALE - - -82 #ifdef -USE_FLOAT_MUL - - -83 -k - = 0; k <ð159; k++è -æßt_s -[k] = (è -s -[k]; - -89 #ifdef -USE_FLOAT_MUL - - -90 * -¥ - = -æßt_s -; - -91 -¦ - = * -¥ -; - -93 - #STEP -( -k -è -L_ACF -[k] +ð( -lÚgwÜd -)( -¦ - * -¥ -[ -(kè]); - - ) - -95 -wÜd - * -¥ - = -s -; - -96 -wÜd - -¦ - = * -¥ -; - -98 - #STEP -( -k -è -L_ACF -[k] +ð(( -lÚgwÜd -) -¦ - * -¥ -[ -(kè]); - - ) - -101 - #NEXTI - -¦ - = *++ -¥ - - - ) - -104 -k - = 9; k--; -L_ACF -[k] = 0) ; - -106 - `STEP - (0); - -107 -NEXTI -; - -108 - `STEP -(0); STEP(1); - -109 -NEXTI -; - -110 - `STEP -(0); STEP(1); STEP(2); - -111 -NEXTI -; - -112 - `STEP -(0); STEP(1); STEP(2); STEP(3); - -113 -NEXTI -; - -114 - `STEP -(0); STEP(1); STEP(2); STEP(3); STEP(4); - -115 -NEXTI -; - -116 - `STEP -(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); - -117 -NEXTI -; - -118 - `STEP -(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); - -119 -NEXTI -; - -120 - `STEP -(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); STEP(7); - -122 -i - = 8; i <= 159; i++) { - -124 -NEXTI -; - -126 - `STEP -(0); - -127 - `STEP -(1); STEP(2); STEP(3); STEP(4); - -128 - `STEP -(5); STEP(6); STEP(7); STEP(8); - -131 -k - = 9; k--; -L_ACF -[k] <<= 1) ; - -136 ià( -sÿÏuto - > 0) { - -137 - `as£¹ -( -sÿÏuto - <= 4); - -138 -k - = 160; k--; * -s -++ <<ð -sÿÏuto -) ; - -140 - } -} - -142 #ià -defšed -( -USE_FLOAT_MUL -è&& defšed( -FAST -) - -144 - $Fa¡_AutocÜ»ÏtiÚ - ( - -145 -wÜd - * -s -, - -146 -lÚgwÜd - * -L_ACF -) - -148 -k -, -i -; - -149 -f_L_ACF -[9]; - -150 -sÿË -; - -152 -s_f -[160]; - -153 * -sf - = -s_f -; - -155 -i - = 0; i < 160; ++iè -sf -[i] = -s -[i]; - -156 -k - = 0; k <= 8; k++) { - -157 -L_‹mp2 - = 0; - -158 * -sæ - = -sf - - -k -; - -159 -i - = -k -; i < 160; ++iè -L_‹mp2 - +ð -sf -[i] * -sæ -[i]; - -160 -f_L_ACF -[ -k -] = -L_‹mp2 -; - -162 -sÿË - = -MAX_LONGWORD - / -f_L_ACF -[0]; - -164 -k - = 0; k <= 8; k++) { - -165 -L_ACF -[ -k -] = -f_L_ACF -[k] * -sÿË -; - -167 - } -} - -172 - $ReæeùiÚ_cÛffic›Ás - ( - -173 -lÚgwÜd - * -L_ACF -, - -174 -wÜd - * -r - - -177 -i -, -m -, -n -; - -178 -wÜd - -‹mp -; - -179 -wÜd - -ACF -[9]; - -180 -wÜd - -P -[ 9]; - -181 -wÜd - -K -[ 9]; - -186 ià( -L_ACF -[0] == 0) { - -187 -i - = 8; i--; * -r -++ = 0) ; - -191 - `as£¹ -Ð -L_ACF -[0] != 0 ); - -192 -‹mp - = - `gsm_nÜm -Ð -L_ACF -[0] ); - -194 - `as£¹ -( -‹mp - >= 0 &&emp < 32); - -197 -i - = 0; i <ð8; i++è -ACF -[i] = - `SASR_L -Ð -L_ACF -[i] << -‹mp -, 16 ); - -202 -i - = 1; i <ð7; i++è -K -[ i ] = -ACF -[ i ]; - -203 -i - = 0; i <ð8; i++è -P -[ i ] = -ACF -[ i ]; - -207 -n - = 1;‚ <ð8;‚++, -r -++) { - -209 -‹mp - = -P -[1]; - -210 -‹mp - = - `GSM_ABS -(temp); - -211 ià( -P -[0] < -‹mp -) { - -212 -i - = -n -; i <ð8; i++è* -r -++ = 0; - -216 * -r - = - `gsm_div -Ð -‹mp -, -P -[0] ); - -218 - `as£¹ -(* -r - >= 0); - -219 ià( -P -[1] > 0è* -r - = -*r; - -220 - `as£¹ - (* -r - !ð -MIN_WORD -); - -221 ià( -n - == 8) ; - -225 -‹mp - = - `GSM_MULT_R -Ð -P -[1], * -r - ); - -226 -P -[0] = - `GSM_ADD -ÐP[0], -‹mp - ); - -228 -m - = 1; m <ð8 - -n -; m++) { - -229 -‹mp - = - `GSM_MULT_R -Ð -K -[ -m - ], * -r - ); - -230 -P -[ -m -] = - `GSM_ADD -ÐP[ m+1 ], -‹mp - ); - -232 -‹mp - = - `GSM_MULT_R -Ð -P -[ -m -+1 ], * -r - ); - -233 -K -[ -m -] = - `GSM_ADD -ÐK[ m ], -‹mp - ); - -236 - } -} - -240 - $T¿nsfÜm©iÚ_to_Log_A»a_R©ios - ( - -241 -wÜd - * -r - - -251 -wÜd - -‹mp -; - -252 -i -; - -257 -i - = 1; i <ð8; i++, -r -++) { - -259 -‹mp - = * -r -; - -260 -‹mp - = - `GSM_ABS -(temp); - -261 - `as£¹ -( -‹mp - >= 0); - -263 ià( -‹mp - < 22118) { - -264 -‹mp - >>= 1; - -265 } ià( -‹mp - < 31130) { - -266 - `as£¹ -Ð -‹mp - >= 11059 ); - -267 -‹mp - -= 11059; - -269 - `as£¹ -Ð -‹mp - >= 26112 ); - -270 -‹mp - -= 26112; - -271 -‹mp - <<= 2; - -274 * -r - = *¸< 0 ? - -‹mp - :emp; - -275 - `as£¹ -Ð* -r - !ð -MIN_WORD - ); - -277 - } -} - -281 - $Quªtiz©iÚ_ªd_codšg - ( - -282 -wÜd - * -LAR - - -285 -wÜd - -‹mp -; - -296 #undeà -STEP - - -297 - #STEP -Ð -A -, -B -, -MAC -, -MIC - ) \ - -298 -‹mp - = - `GSM_MULT -Ð -A -, * -LAR - ); \ - -299 -‹mp - = - `GSM_ADD -Ћmp, -B - ); \ - -300 -‹mp - = - `GSM_ADD -(emp, 256 ); \ - -301 -‹mp - = - `SASR_W -(emp, 9 ); \ - -302 * -LAR - = -‹mp -> -MAC - ? MAC - -MIC - : (temp<MIC ? 0 :emp - MIC); \ - -303 -LAR -++; - - ) - -305 - `STEP -( 20480, 0, 31, -32 ); - -306 - `STEP -( 20480, 0, 31, -32 ); - -307 - `STEP -( 20480, 2048, 15, -16 ); - -308 - `STEP -( 20480, -2560, 15, -16 ); - -310 - `STEP -( 13964, 94, 7, -8 ); - -311 - `STEP -( 15360, -1792, 7, -8 ); - -312 - `STEP -( 8534, -341, 3, -4 ); - -313 - `STEP -( 9036, -1144, 3, -4 ); - -315 #undeà -STEP - - -316 - } -} - -318 - $Gsm_LPC_AÇlysis - ( - -319 -gsm_¡©e - * -S -, - -320 -wÜd - * -s -, - -321 -wÜd - * -LARc -) - -323 -lÚgwÜd - -L_ACF -[9]; - -325 #ià - `defšed -( -USE_FLOAT_MUL -è&& defšed( -FAST -) - -326 ià( -S --> -ç¡ -è - `Fa¡_AutocÜ»ÏtiÚ - ( -s -, -L_ACF - ); - -329 - `AutocÜ»ÏtiÚ - ( -s -, -L_ACF - ); - -330 - `ReæeùiÚ_cÛffic›Ás - ( -L_ACF -, -LARc - ); - -331 - `T¿nsfÜm©iÚ_to_Log_A»a_R©ios - ( -LARc -); - -332 - `Quªtiz©iÚ_ªd_codšg - ( -LARc -); - -333 - } -} - - @preprocess.c - -7 - ~<¡dio.h -> - -8 - ~<as£¹.h -> - -10 - ~"gsm610_´iv.h -" - -12 - ~"gsm.h -" - -31 - $Gsm_P»´oûss - ( - -32 -gsm_¡©e - * -S -, - -33 -wÜd - * -s -, - -34 -wÜd - * -so - ) - -37 -wÜd - -z1 - = -S -->z1; - -38 -lÚgwÜd - -L_z2 - = -S -->L_z2; - -39 -wÜd - -mp - = -S -->mp; - -41 -wÜd - -s1 -; - -42 -lÚgwÜd - -L_s2 -; - -44 -lÚgwÜd - -L_‹mp -; - -46 -wÜd - -m¥ -, -l¥ -; - -47 -wÜd - -SO -; - -49 -k - = 160; - -51 -k ---) { - -55 -SO - = - `SASR_W -Ð* -s -, 3 ) << 2; - -56 -s -++; - -58 - `as£¹ - ( -SO - >= -0x4000); - -59 - `as£¹ - ( -SO - <= 0x3FFC); - -72 -s1 - = -SO - - -z1 -; - -73 -z1 - = -SO -; - -75 - `as£¹ -( -s1 - !ð -MIN_WORD -); - -79 -L_s2 - = -s1 -; - -80 -L_s2 - <<= 15; - -85 -m¥ - = - `SASR_L -Ð -L_z2 -, 15 ); - -86 -l¥ - = -L_z2 --(( -lÚgwÜd -) -m¥ -<<15); - -88 -L_s2 - +ð - `GSM_MULT_R -Ð -l¥ -, 32735 ); - -89 -L_‹mp - = ( -lÚgwÜd -) -m¥ - * 32735; - -90 -L_z2 - = - `GSM_L_ADD -Ð -L_‹mp -, -L_s2 - ); - -94 -L_‹mp - = - `GSM_L_ADD -Ð -L_z2 -, 16384 ); - -99 -m¥ - = - `GSM_MULT_R -Ð -mp -, -28180 ); - -100 -mp - = - `SASR_L -Ð -L_‹mp -, 15 ); - -101 * -so -++ = - `GSM_ADD -Ð -mp -, -m¥ - ); - -104 -S --> -z1 - = z1; - -105 -S --> -L_z2 - = L_z2; - -106 -S --> -mp - = mp; - -107 - } -} - - @rpe.c - -7 - ~<¡dio.h -> - -8 - ~<as£¹.h -> - -10 - ~"gsm610_´iv.h -" - -12 - ~"gsm.h -" - -19 - $Weightšg_fž‹r - ( - -20 -wÜd - * -e -, - -21 -wÜd - * -x - - -32 -lÚgwÜd - -L_»suÉ -; - -33 -k - ; - -45 -e - -= 5; - -49 -k - = 0; k <= 39; k++) { - -51 -L_»suÉ - = 8192 >> 1; - -59 #undeà -STEP - - -60 - #STEP -Ð -i -, -H - ) ( -e -[ -k - + i ] * ( -lÚgwÜd -)H) - - ) - -67 #ifdef -STUPID_COMPILER - - -68 -L_»suÉ - +ð - `STEP -( 0, -134 ) ; - -69 -L_»suÉ - +ð - `STEP -( 1, -374 ) ; - -71 -L_»suÉ - +ð - `STEP -( 3, 2054 ) ; - -72 -L_»suÉ - +ð - `STEP -( 4, 5741 ) ; - -73 -L_»suÉ - +ð - `STEP -( 5, 8192 ) ; - -74 -L_»suÉ - +ð - `STEP -( 6, 5741 ) ; - -75 -L_»suÉ - +ð - `STEP -( 7, 2054 ) ; - -77 -L_»suÉ - +ð - `STEP -( 9, -374 ) ; - -78 -L_»suÉ - +ð - `STEP -( 10, -134 ) ; - -80 -L_»suÉ - += - -81 - `STEP -( 0, -134 ) - -82 + - `STEP -( 1, -374 ) - -84 + - `STEP -( 3, 2054 ) - -85 + - `STEP -( 4, 5741 ) - -86 + - `STEP -( 5, 8192 ) - -87 + - `STEP -( 6, 5741 ) - -88 + - `STEP -( 7, 2054 ) - -90 + - `STEP -( 9, -374 ) - -91 + - `STEP -(10, -134 ) - -105 -L_»suÉ - = - `SASR_L -( L_result, 13 ); - -106 -x -[ -k -] = ( -L_»suÉ - < -MIN_WORD - ? MIN_WORD - -107 : ( -L_»suÉ - > -MAX_WORD - ? MAX_WORD : L_result )); - -109 - } -} - -113 - $RPE_grid_£ËùiÚ - ( - -114 -wÜd - * -x -, - -115 -wÜd - * -xM -, - -116 -wÜd - * -Mc_out - - -124 -i -; - -125 -lÚgwÜd - -L_»suÉ -, -L_‹mp -; - -126 -lÚgwÜd - -EM -; - -127 -wÜd - -Mc -; - -129 -lÚgwÜd - -L_commÚ_0_3 -; - -131 -EM - = 0; - -132 -Mc - = 0; - -155 #undeà -STEP - - -156 - #STEP -Ð -m -, -i - ) -L_‹mp - = - `SASR_W -Ð -x -[m + 3 * i], 2 ); \ - -157 -L_»suÉ - +ð -L_‹mp - * L_‹mp; - - ) - -161 -L_»suÉ - = 0; - -162 - `STEP -( 0, 1 ); STEP( 0, 2 ); STEP( 0, 3 ); STEP( 0, 4 ); - -163 - `STEP -( 0, 5 ); STEP( 0, 6 ); STEP( 0, 7 ); STEP( 0, 8 ); - -164 - `STEP -( 0, 9 ); STEP( 0, 10); STEP( 0, 11); STEP( 0, 12); - -165 -L_commÚ_0_3 - = -L_»suÉ -; - -169 - `STEP -( 0, 0 ); - -170 -L_»suÉ - <<= 1; - -171 -EM - = -L_»suÉ -; - -175 -L_»suÉ - = 0; - -176 - `STEP -( 1, 0 ); - -177 - `STEP -( 1, 1 ); STEP( 1, 2 ); STEP( 1, 3 ); STEP( 1, 4 ); - -178 - `STEP -( 1, 5 ); STEP( 1, 6 ); STEP( 1, 7 ); STEP( 1, 8 ); - -179 - `STEP -( 1, 9 ); STEP( 1, 10); STEP( 1, 11); STEP( 1, 12); - -180 -L_»suÉ - <<= 1; - -181 ià( -L_»suÉ - > -EM -) { - -182 -Mc - = 1; - -183 -EM - = -L_»suÉ -; - -188 -L_»suÉ - = 0; - -189 - `STEP -( 2, 0 ); - -190 - `STEP -( 2, 1 ); STEP( 2, 2 ); STEP( 2, 3 ); STEP( 2, 4 ); - -191 - `STEP -( 2, 5 ); STEP( 2, 6 ); STEP( 2, 7 ); STEP( 2, 8 ); - -192 - `STEP -( 2, 9 ); STEP( 2, 10); STEP( 2, 11); STEP( 2, 12); - -193 -L_»suÉ - <<= 1; - -194 ià( -L_»suÉ - > -EM -) { - -195 -Mc - = 2; - -196 -EM - = -L_»suÉ -; - -201 -L_»suÉ - = -L_commÚ_0_3 -; - -202 - `STEP -( 3, 12 ); - -203 -L_»suÉ - <<= 1; - -204 ià( -L_»suÉ - > -EM -) { - -205 -Mc - = 3; - -206 -EM - = -L_»suÉ -; - -214 -i - = 0; i <ð12; i ++è -xM -[i] = -x -[ -Mc - + 3*i]; - -215 * -Mc_out - = -Mc -; - -216 - } -} - -220 - $APCM_quªtiz©iÚ_xmaxc_to_exp_mªt - ( - -221 -wÜd - -xmaxc -, - -222 -wÜd - * -expÚ_out -, - -223 -wÜd - * -mªt_out - ) - -225 -wÜd - -expÚ -, -mªt -; - -230 -expÚ - = 0; - -231 ià( -xmaxc - > 15è -expÚ - = - `SASR_W -(xmaxc, 3) - 1; - -232 -mªt - = -xmaxc - - ( -expÚ - << 3); - -234 ià( -mªt - == 0) { - -235 -expÚ - = -4; - -236 -mªt - = 7; - -239 -mªt - <= 7) { - -240 -mªt - = mant << 1 | 1; - -241 -expÚ ---; - -243 -mªt - -= 8; - -246 - `as£¹ -Ð -expÚ - >= -4 &&ƒxpon <= 6 ); - -247 - `as£¹ -Ð -mªt - >= 0 && mant <= 7 ); - -249 * -expÚ_out - = -expÚ -; - -250 * -mªt_out - = -mªt -; - -251 - } -} - -253 - $APCM_quªtiz©iÚ - ( - -254 -wÜd - * -xM -, - -255 -wÜd - * -xMc -, - -256 -wÜd - * -mªt_out -, - -257 -wÜd - * -expÚ_out -, - -258 -wÜd - * -xmaxc_out - - -261 -i -, -™e¡ -; - -263 -wÜd - -xmax -, -xmaxc -, -‹mp -, -‹mp1 -, -‹mp2 -; - -264 -wÜd - -expÚ -, -mªt -; - -270 -xmax - = 0; - -271 -i - = 0; i <= 12; i++) { - -272 -‹mp - = -xM -[ -i -]; - -273 -‹mp - = - `GSM_ABS -(temp); - -274 ià( -‹mp - > -xmax -) xmax =emp; - -280 -expÚ - = 0; - -281 -‹mp - = - `SASR_W -Ð -xmax -, 9 ); - -282 -™e¡ - = 0; - -284 -i - = 0; i <= 5; i++) { - -286 -™e¡ - |ð( -‹mp - <= 0); - -287 -‹mp - = - `SASR_W -(emp, 1 ); - -289 - `as£¹ -( -expÚ - <= 5); - -290 ià( -™e¡ - =ð0è -expÚ -++; - -293 - `as£¹ -( -expÚ - <= 6 &&ƒxpon >= 0); - -294 -‹mp - = -expÚ - + 5; - -296 - `as£¹ -( -‹mp - <= 11 &&emp >= 0); - -297 -xmaxc - = - `gsm_add -Ð - `SASR_W -( -xmax -, -‹mp -), ( -wÜd -è( -expÚ - << 3) ); - -303 - `APCM_quªtiz©iÚ_xmaxc_to_exp_mªt -Ð -xmaxc -, & -expÚ -, & -mªt - ); - -319 - `as£¹ -Ð -expÚ - <= 4096 &&ƒxpon >= -4096); - -320 - `as£¹ -Ð -mªt - >= 0 && mant <= 7 ); - -322 -‹mp1 - = 6 - -expÚ -; - -323 -‹mp2 - = -gsm_NRFAC -[ -mªt - ]; - -325 -i - = 0; i <= 12; i++) { - -327 - `as£¹ -( -‹mp1 - >= 0 &&emp1 < 16); - -329 -‹mp - = -xM -[ -i -] << -‹mp1 -; - -330 -‹mp - = - `GSM_MULT -Ћmp, -‹mp2 - ); - -331 -‹mp - = - `SASR_W -(temp, 12); - -332 -xMc -[ -i -] = -‹mp - + 4; - -338 * -mªt_out - = -mªt -; - -339 * -expÚ_out - = -expÚ -; - -340 * -xmaxc_out - = -xmaxc -; - -341 - } -} - -345 - $APCM_šv”£_quªtiz©iÚ - ( - -346 -wÜd - * -xMc -, - -347 -wÜd - -mªt -, - -348 -wÜd - -expÚ -, - -349 -wÜd - * -xMp -) - -356 -i -; - -357 -wÜd - -‹mp -, -‹mp1 -, -‹mp2 -, -‹mp3 -; - -359 - `as£¹ -Ð -mªt - >= 0 && mant <= 7 ); - -361 -‹mp1 - = -gsm_FAC -[ -mªt - ]; - -362 -‹mp2 - = - `gsm_sub -Ð6, -expÚ - ); - -363 -‹mp3 - = - `gsm_a¦ -Ð1, - `gsm_sub -Ð -‹mp2 -, 1 )); - -365 -i - = 13; i--;) { - -367 - `as£¹ -Ð* -xMc - <= 7 && *xMc >= 0 ); - -370 -‹mp - = (* -xMc -++ << 1) - 7; - -371 - `as£¹ -Ð -‹mp - <= 7 &&emp >= -7 ); - -373 -‹mp - <<= 12; - -374 -‹mp - = - `GSM_MULT_R -Ð -‹mp1 -,emp ); - -375 -‹mp - = - `GSM_ADD -Ћmp, -‹mp3 - ); - -376 * -xMp -++ = - `gsm_a¤ -Ð -‹mp -, -‹mp2 - ); - -378 - } -} - -382 - $RPE_grid_pos™iÚšg - ( - -383 -wÜd - -Mc -, - -384 -wÜd - * -xMp -, - -385 -wÜd - * -• - - -395 -i - = 13; - -397 - `as£¹ -(0 <ð -Mc - && Mc <= 3); - -399 -Mc -) { - -400 3: * -• -++ = 0; - -402 * -• -++ = 0; - -403 1: * -• -++ = 0; - -404 0: * -• -++ = * -xMp -++; - -405 } -- -i -); - -407 ++ -Mc - < 4è* -• -++ = 0; - -417 - } -} - -429 - $Gsm_Upd©e_of_»cÚ¡ruùed_shÜt_time_»sidu®_sigÇl - ( - -430 -wÜd - * -dµ -, - -431 -wÜd - * -• -, - -432 -wÜd - * -dp -) - -434 -k -; - -436 -k - = 0; k <= 79; k++) - -437 -dp -[ -120 + -k - ] = dp[ -80 + k ]; - -439 -k - = 0; k <= 39; k++) - -440 -dp -[ -40 + -k - ] = - `gsm_add -Ð -• -[k], -dµ -[k] ); - -441 - } -} - -444 - $Gsm_RPE_Encodšg - ( - -447 -wÜd - * -e -, - -448 -wÜd - * -xmaxc -, - -449 -wÜd - * -Mc -, - -450 -wÜd - * -xMc -) - -452 -wÜd - -x -[40]; - -453 -wÜd - -xM -[13], -xMp -[13]; - -454 -wÜd - -mªt -, -expÚ -; - -456 - `Weightšg_fž‹r -( -e -, -x -); - -457 - `RPE_grid_£ËùiÚ -( -x -, -xM -, -Mc -); - -459 - `APCM_quªtiz©iÚ -Ð -xM -, -xMc -, & -mªt -, & -expÚ -, -xmaxc -); - -460 - `APCM_šv”£_quªtiz©iÚ -Ð -xMc -, -mªt -, -expÚ -, -xMp -); - -462 - `RPE_grid_pos™iÚšg -Ð* -Mc -, -xMp -, -e - ); - -464 - } -} - -466 - $Gsm_RPE_Decodšg - ( - -469 -wÜd - -xmaxü -, - -470 -wÜd - -Mü -, - -471 -wÜd - * -xMü -, - -472 -wÜd - * -”p - - -475 -wÜd - -expÚ -, -mªt -; - -476 -wÜd - -xMp -[ 13 ]; - -478 - `APCM_quªtiz©iÚ_xmaxc_to_exp_mªt -Ð -xmaxü -, & -expÚ -, & -mªt - ); - -479 - `APCM_šv”£_quªtiz©iÚ -Ð -xMü -, -mªt -, -expÚ -, -xMp - ); - -480 - `RPE_grid_pos™iÚšg -Ð -Mü -, -xMp -, -”p - ); - -482 - } -} - - @short_term.c - -7 - ~<¡dio.h -> - -8 - ~<as£¹.h -> - -10 - ~"gsm610_´iv.h -" - -12 - ~"gsm.h -" - -20 - $Decodšg_of_the_coded_Log_A»a_R©ios - ( - -21 -wÜd - * -LARc -, - -22 -wÜd - * -LARµ -) - -24 -wÜd - -‹mp1 - ; - -49 #undeà -STEP - - -50 - #STEP -Ð -B -, -MIC -, -INVA - ) \ - -51 -‹mp1 - = - `GSM_ADD -Ð* -LARc -++, -MIC - ) << 10; \ - -52 -‹mp1 - = - `GSM_SUB -Ћmp1, -B - << 1 ); \ - -53 -‹mp1 - = - `GSM_MULT_R -Ð -INVA -,emp1 ); \ - -54 * -LARµ -++ = - `GSM_ADD -Ð -‹mp1 -,emp1 ); - - ) - -56 - `STEP -( 0, -32, 13107 ); - -57 - `STEP -( 0, -32, 13107 ); - -58 - `STEP -( 2048, -16, 13107 ); - -59 - `STEP -( -2560, -16, 13107 ); - -61 - `STEP -( 94, -8, 19223 ); - -62 - `STEP -( -1792, -8, 17476 ); - -63 - `STEP -( -341, -4, 31454 ); - -64 - `STEP -( -1144, -4, 29708 ); - -69 - } -} - -87 - $CÛffic›Ás_0_12 - ( - -88 -wÜd - * -LARµ_j_1 -, - -89 -wÜd - * -LARµ_j -, - -90 -wÜd - * -LARp -) - -92 -i -; - -94 -i - = 1; i <ð8; i++, -LARp -++, -LARµ_j_1 -++, -LARµ_j -++) { - -95 * -LARp - = - `GSM_ADD -Ð - `SASR_W -Ð* -LARµ_j_1 -, 2 ), SASR_WÐ* -LARµ_j -, 2 )); - -96 * -LARp - = - `GSM_ADD -Ð*LARp, - `SASR_W -Ð* -LARµ_j_1 -, 1)); - -98 - } -} - -100 - $CÛffic›Ás_13_26 - ( - -101 -wÜd - * -LARµ_j_1 -, - -102 -wÜd - * -LARµ_j -, - -103 -wÜd - * -LARp -) - -105 -i -; - -106 -i - = 1; i <ð8; i++, -LARµ_j_1 -++, -LARµ_j -++, -LARp -++) { - -107 * -LARp - = - `GSM_ADD -Ð - `SASR_W -Ð* -LARµ_j_1 -, 1), SASR_WÐ* -LARµ_j -, 1 )); - -109 - } -} - -111 - $CÛffic›Ás_27_39 - ( - -112 -wÜd - * -LARµ_j_1 -, - -113 -wÜd - * -LARµ_j -, - -114 -wÜd - * -LARp -) - -116 -i -; - -118 -i - = 1; i <ð8; i++, -LARµ_j_1 -++, -LARµ_j -++, -LARp -++) { - -119 * -LARp - = - `GSM_ADD -Ð - `SASR_W -Ð* -LARµ_j_1 -, 2 ), SASR_WÐ* -LARµ_j -, 2 )); - -120 * -LARp - = - `GSM_ADD -Ð*LARp, - `SASR_W -Ð* -LARµ_j -, 1 )); - -122 - } -} - -125 - $CÛffic›Ás_40_159 - ( - -126 -wÜd - * -LARµ_j -, - -127 -wÜd - * -LARp -) - -129 -i -; - -131 -i - = 1; i <ð8; i++, -LARp -++, -LARµ_j -++) - -132 * -LARp - = * -LARµ_j -; - -133 - } -} - -137 - $LARp_to_½ - ( - -138 -wÜd - * -LARp -) - -145 -i -; - -146 -wÜd - -‹mp -; - -148 -i - = 1; i <ð8; i++, -LARp -++) { - -159 ià(* -LARp - < 0) { - -160 -‹mp - = * -LARp - =ð -MIN_WORD - ? -MAX_WORD - : -(*LARp); - -161 * -LARp - = - (( -‹mp - < 11059) ?emp << 1 - -162 : (( -‹mp - < 20070) ?emp + 11059 - -163 : - `GSM_ADD -Ð( -wÜd -è( -‹mp - >> 2), (word) 26112 ))); - -165 -‹mp - = * -LARp -; - -166 * -LARp - = ( -‹mp - < 11059) ?emp << 1 - -167 : (( -‹mp - < 20070) ?emp + 11059 - -168 : - `GSM_ADD -Ð( -wÜd -è( -‹mp - >> 2), (word) 26112 )); - -171 - } -} - -175 - $ShÜt_‹rm_ª®ysis_fž‹ršg - ( - -176 -gsm_¡©e - * -S -, - -177 -wÜd - * -½ -, - -178 -k_n -, - -179 -wÜd - * -s - - -192 -wÜd - * -u - = -S -->u; - -193 -i -; - -194 -wÜd - -di -, -zzz -, -ui -, -§v -, -½i -; - -196 ; -k_n ---; -s -++) { - -198 -di - = -§v - = * -s -; - -200 -i - = 0; i < 8; i++) { - -202 -ui - = -u -[ -i -]; - -203 -½i - = -½ -[ -i -]; - -204 -u -[ -i -] = -§v -; - -206 -zzz - = - `GSM_MULT_R -( -½i -, -di -); - -207 -§v - = - `GSM_ADD -Ð -ui -, -zzz -); - -209 -zzz - = - `GSM_MULT_R -( -½i -, -ui -); - -210 -di - = - `GSM_ADD -Ðdi, -zzz - ); - -213 * -s - = -di -; - -215 - } -} - -217 #ià -defšed -( -USE_FLOAT_MUL -è&& defšed( -FAST -) - -219 - $Fa¡_ShÜt_‹rm_ª®ysis_fž‹ršg - ( - -220 -gsm_¡©e - * -S -, - -221 -wÜd - * -½ -, - -222 -k_n -, - -223 -wÜd - * -s - - -226 -wÜd - * -u - = -S -->u; - -227 -i -; - -229 -uf -[8], - -230 -½f -[8]; - -232 -sÿËf - = 3.0517578125e-5; - -233 -§v -, -di -, -‹mp -; - -235 -i - = 0; i < 8; ++i) { - -236 -uf -[ -i -] = -u -[i]; - -237 -½f -[ -i -] = -½ -[i] * -sÿËf -; - -239 ; -k_n ---; -s -++) { - -240 -§v - = -di - = * -s -; - -241 -i - = 0; i < 8; ++i) { - -242 -½fi - = -½f -[ -i -]; - -243 -ufi - = -uf -[ -i -]; - -245 -uf -[ -i -] = -§v -; - -246 -‹mp - = -½fi - * -di - + -ufi -; - -247 -di - +ð -½fi - * -ufi -; - -248 -§v - = -‹mp -; - -250 * -s - = -di -; - -252 -i - = 0; i < 8; ++iè -u -[i] = -uf -[i]; - -253 - } -} - -256 - $ShÜt_‹rm_syÁhesis_fž‹ršg - ( - -257 -gsm_¡©e - * -S -, - -258 -wÜd - * -¼p -, - -259 -k -, - -260 -wÜd - * -wt -, - -261 -wÜd - * -¤ - - -264 -wÜd - * -v - = -S -->v; - -265 -i -; - -266 -wÜd - -¤i -, -tmp1 -, -tmp2 -; - -268 -k ---) { - -269 -¤i - = * -wt -++; - -270 -i - = 8; i--;) { - -274 -tmp1 - = -¼p -[ -i -]; - -275 -tmp2 - = -v -[ -i -]; - -276 -tmp2 - = ( -tmp1 - =ð -MIN_WORD - &&mp2 == MIN_WORD - -277 ? -MAX_WORD - - -278 : 0x0FFFF & (Ð( -lÚgwÜd -) -tmp1 - * (lÚgwÜd) -tmp2 - - -281 -¤i - = - `GSM_SUB -Фi, -tmp2 - ); - -285 -tmp1 - = (mp1 =ð -MIN_WORD - && -¤i - == MIN_WORD - -286 ? -MAX_WORD - - -287 : 0x0FFFF & (Ð( -lÚgwÜd -) -tmp1 - * (lÚgwÜd) -¤i - - -290 -v -[ -i -+1] = - `GSM_ADD -Ðv[i], -tmp1 -); - -292 * -¤ -++ = -v -[0] = -¤i -; - -294 - } -} - -297 #ià -defšed -( -FAST -è&& defšed( -USE_FLOAT_MUL -) - -299 - $Fa¡_ShÜt_‹rm_syÁhesis_fž‹ršg - ( - -300 -gsm_¡©e - * -S -, - -301 -wÜd - * -¼p -, - -302 -k -, - -303 -wÜd - * -wt -, - -304 -wÜd - * -¤ - - -307 -wÜd - * -v - = -S -->v; - -308 -i -; - -310 -va -[9], -¼· -[8]; - -311 -sÿËf - = 3.0517578125e-5, -‹mp -; - -313 -i - = 0; i < 8; ++i) { - -314 -va -[ -i -] = -v -[i]; - -315 -¼· -[ -i -] = () -¼p -[i] * -sÿËf -; - -317 -k ---) { - -318 -¤i - = * -wt -++; - -319 -i - = 8; i--;) { - -320 -¤i - -ð -¼· -[ -i -] * -va -[i]; - -321 ià( -¤i - < -32768.) sri = -32768.; - -322 ià( -¤i - > 32767.) sri = 32767.; - -324 -‹mp - = -va -[ -i -] + -¼· -[i] * -¤i -; - -325 ià( -‹mp - < -32768.)emp = -32768.; - -326 ià( -‹mp - > 32767.)emp = 32767.; - -327 -va -[ -i -+1] = -‹mp -; - -329 * -¤ -++ = -va -[0] = -¤i -; - -331 -i - = 0; i < 9; ++iè -v -[i] = -va -[i]; - -332 - } -} - -336 - $Gsm_ShÜt_T”m_AÇlysis_Fž‹r - ( - -338 -gsm_¡©e - * -S -, - -340 -wÜd - * -LARc -, - -341 -wÜd - * -s - - -344 -wÜd - * -LARµ_j - = -S --> -LARµ -[ S-> -j - ]; - -345 -wÜd - * -LARµ_j_1 - = -S --> -LARµ -[ S-> -j - ^= 1 ]; - -347 -wÜd - -LARp -[8]; - -349 #undeà -FILTER - - -350 #ià - `defšed -( -FAST -è&& defšed( -USE_FLOAT_MUL -) - -351 - #FILTER - (* ( -S --> -ç¡ - \ - -352 ? -Fa¡_ShÜt_‹rm_ª®ysis_fž‹ršg - \ - -353 : -ShÜt_‹rm_ª®ysis_fž‹ršg - )) - - ) - -356 - #FILTER - -ShÜt_‹rm_ª®ysis_fž‹ršg - - - ) - -359 - `Decodšg_of_the_coded_Log_A»a_R©ios -Ð -LARc -, -LARµ_j - ); - -361 - `CÛffic›Ás_0_12 -Ð -LARµ_j_1 -, -LARµ_j -, -LARp - ); - -362 - `LARp_to_½ -Ð -LARp - ); - -363 - `FILTER -Ð -S -, -LARp -, 13, -s -); - -365 - `CÛffic›Ás_13_26 -Ð -LARµ_j_1 -, -LARµ_j -, -LARp -); - -366 - `LARp_to_½ -Ð -LARp - ); - -367 - `FILTER -Ð -S -, -LARp -, 14, -s - + 13); - -369 - `CÛffic›Ás_27_39 -Ð -LARµ_j_1 -, -LARµ_j -, -LARp -); - -370 - `LARp_to_½ -Ð -LARp - ); - -371 - `FILTER -Ð -S -, -LARp -, 13, -s - + 27); - -373 - `CÛffic›Ás_40_159 -Ð -LARµ_j -, -LARp -); - -374 - `LARp_to_½ -Ð -LARp - ); - -375 - `FILTER -Ð -S -, -LARp -, 120, -s - + 40); - -376 - } -} - -378 - $Gsm_ShÜt_T”m_SyÁhesis_Fž‹r - ( - -379 -gsm_¡©e - * -S -, - -381 -wÜd - * -LARü -, - -382 -wÜd - * -wt -, - -384 -wÜd - * -s - - -387 -wÜd - * -LARµ_j - = -S --> -LARµ -[ S-> -j - ]; - -388 -wÜd - * -LARµ_j_1 - = -S --> -LARµ -[ S-> -j - ^=1 ]; - -390 -wÜd - -LARp -[8]; - -392 #undeà -FILTER - - -393 #ià - `defšed -( -FAST -è&& defšed( -USE_FLOAT_MUL -) - -395 - #FILTER - (* ( -S --> -ç¡ - \ - -396 ? -Fa¡_ShÜt_‹rm_syÁhesis_fž‹ršg - \ - -397 : -ShÜt_‹rm_syÁhesis_fž‹ršg - )) - - ) - -399 - #FILTER - -ShÜt_‹rm_syÁhesis_fž‹ršg - - - ) - -402 - `Decodšg_of_the_coded_Log_A»a_R©ios -Ð -LARü -, -LARµ_j - ); - -404 - `CÛffic›Ás_0_12 -Ð -LARµ_j_1 -, -LARµ_j -, -LARp - ); - -405 - `LARp_to_½ -Ð -LARp - ); - -406 - `FILTER -Ð -S -, -LARp -, 13, -wt -, -s - ); - -408 - `CÛffic›Ás_13_26 -Ð -LARµ_j_1 -, -LARµ_j -, -LARp -); - -409 - `LARp_to_½ -Ð -LARp - ); - -410 - `FILTER -Ð -S -, -LARp -, 14, -wt - + 13, -s - + 13 ); - -412 - `CÛffic›Ás_27_39 -Ð -LARµ_j_1 -, -LARµ_j -, -LARp -); - -413 - `LARp_to_½ -Ð -LARp - ); - -414 - `FILTER -Ð -S -, -LARp -, 13, -wt - + 27, -s - + 27 ); - -416 - `CÛffic›Ás_40_159 -Ð -LARµ_j -, -LARp - ); - -417 - `LARp_to_½ -Ð -LARp - ); - -418 - `FILTER -( -S -, -LARp -, 120, -wt - + 40, -s - + 40); - -419 - } -} - - @table.c - -16 - #GSM_TABLE_C - - - ) - -17 - ~"gsm610_´iv.h -" - -18 - ~"gsm.h -" - -23 -wÜd - - ggsm_A -[8] = {20480, 20480, 20480, 20480, 13964, 15360, 8534, 9036}; - -24 -wÜd - - ggsm_B -[8] = { 0, 0, 2048, -2560, 94, -1792, -341, -1144}; - -25 -wÜd - - ggsm_MIC -[8] = { -32, -32, -16, -16, -8, -8, -4, -4 }; - -26 -wÜd - - ggsm_MAC -[8] = { 31, 31, 15, 15, 7, 7, 3, 3 }; - -31 -wÜd - - ggsm_INVA -[8]={ 13107, 13107, 13107, 13107, 19223, 17476, 31454, 29708 }; - -37 -wÜd - - ggsm_DLB -[4] = { 6554, 16384, 26214, 32767 }; - -43 -wÜd - - ggsm_QLB -[4] = { 3277, 11469, 21299, 32767 }; - -49 -wÜd - - ggsm_H -[11] = {-134, -374, 0, 2054, 5741, 8192, 5741, 2054, 0, -374, -134 }; - -55 -wÜd - - ggsm_NRFAC -[8] = { 29128, 26215, 23832, 21846, 20165, 18725, 17476, 16384 }; - -61 -wÜd - - ggsm_FAC -[8] = { 18431, 20479, 22527, 24575, 26623, 28671, 30719, 32767 }; - - @ -1 -. -0 -17 -175 -add.c -code.c -config.h -decode.c -gsm.h -gsm610_priv.h -gsm_create.c -gsm_decode.c -gsm_destroy.c -gsm_encode.c -gsm_option.c -long_term.c -lpc.c -preprocess.c -rpe.c -short_term.c -table.c |