From 62a62ef415bd1db5f5862e5ef1cc127ccd6465b8 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Tue, 5 Apr 2011 17:40:06 +0300 Subject: stagefright aacenc/amrwbenc: Remove trailing whitespace This was applied in AOSP master earlier, in commit b21611e5b0f1797e39e781d91ade023bac87637f, but when merged into the Google internal tree in 88c2d4d26d79384f32a25bd775cf873cb678b12a, none of these changes have been brought in. (The diff of this merge commit and its first parent, d94b71d, is empty.) Therefore, reapply the rest of these changes on the files that still are present in the current version. Change-Id: I645a9b9134769958a11808a06163123d28d83e46 --- media/libstagefright/codecs/aacenc/Android.mk | 2 +- .../codecs/aacenc/SampleCode/AAC_E_SAMPLES.c | 8 +- .../codecs/aacenc/basic_op/basic_op.h | 222 +- .../codecs/aacenc/basic_op/basicop2.c | 4 +- .../codecs/aacenc/basic_op/oper_32b.c | 152 +- .../codecs/aacenc/basic_op/oper_32b.h | 16 +- .../codecs/aacenc/basic_op/typedef.h | 2 +- .../codecs/aacenc/basic_op/typedefs.h | 10 +- media/libstagefright/codecs/aacenc/inc/aac_rom.h | 2 +- .../libstagefright/codecs/aacenc/inc/aacenc_core.h | 2 +- media/libstagefright/codecs/aacenc/inc/adj_thr.h | 4 +- .../codecs/aacenc/inc/adj_thr_data.h | 2 +- media/libstagefright/codecs/aacenc/inc/bitenc.h | 2 +- media/libstagefright/codecs/aacenc/inc/interface.h | 8 +- media/libstagefright/codecs/aacenc/inc/line_pe.h | 6 +- media/libstagefright/codecs/aacenc/inc/psy_const.h | 2 +- media/libstagefright/codecs/aacenc/inc/psy_main.h | 4 +- media/libstagefright/codecs/aacenc/inc/qc_main.h | 2 +- media/libstagefright/codecs/aacenc/inc/quantize.h | 2 +- media/libstagefright/codecs/aacenc/inc/sf_estim.h | 2 +- media/libstagefright/codecs/aacenc/inc/stat_bits.h | 2 +- media/libstagefright/codecs/aacenc/inc/tns_param.h | 2 +- media/libstagefright/codecs/aacenc/inc/transform.h | 2 +- media/libstagefright/codecs/aacenc/src/aac_rom.c | 2460 ++++++++++---------- media/libstagefright/codecs/aacenc/src/aacenc.c | 48 +- .../libstagefright/codecs/aacenc/src/aacenc_core.c | 42 +- media/libstagefright/codecs/aacenc/src/adj_thr.c | 364 +-- .../aacenc/src/asm/ARMV5E/AutoCorrelation_v5.s | 206 +- .../aacenc/src/asm/ARMV5E/CalcWindowEnergy_v5.s | 80 +- .../codecs/aacenc/src/asm/ARMV5E/PrePostMDCT_v5.s | 66 +- .../codecs/aacenc/src/asm/ARMV5E/R4R8First_v5.s | 154 +- .../codecs/aacenc/src/asm/ARMV5E/Radix4FFT_v5.s | 144 +- .../codecs/aacenc/src/asm/ARMV5E/band_nrg_v5.s | 138 +- .../codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s | 72 +- .../codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s | 88 +- .../codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s | 120 +- media/libstagefright/codecs/aacenc/src/band_nrg.c | 30 +- media/libstagefright/codecs/aacenc/src/bit_cnt.c | 780 +++---- media/libstagefright/codecs/aacenc/src/bitbuffer.c | 64 +- media/libstagefright/codecs/aacenc/src/bitenc.c | 110 +- .../codecs/aacenc/src/block_switch.c | 146 +- .../libstagefright/codecs/aacenc/src/channel_map.c | 46 +- media/libstagefright/codecs/aacenc/src/dyn_bits.c | 146 +- media/libstagefright/codecs/aacenc/src/grp_data.c | 72 +- media/libstagefright/codecs/aacenc/src/interface.c | 36 +- media/libstagefright/codecs/aacenc/src/line_pe.c | 52 +- media/libstagefright/codecs/aacenc/src/memalign.c | 2 +- media/libstagefright/codecs/aacenc/src/ms_stereo.c | 60 +- .../codecs/aacenc/src/pre_echo_control.c | 26 +- .../codecs/aacenc/src/psy_configuration.c | 104 +- media/libstagefright/codecs/aacenc/src/psy_main.c | 88 +- media/libstagefright/codecs/aacenc/src/qc_main.c | 144 +- media/libstagefright/codecs/aacenc/src/quantize.c | 130 +- media/libstagefright/codecs/aacenc/src/sf_estim.c | 506 ++-- media/libstagefright/codecs/aacenc/src/stat_bits.c | 58 +- media/libstagefright/codecs/aacenc/src/tns.c | 256 +- media/libstagefright/codecs/aacenc/src/transform.c | 160 +- media/libstagefright/codecs/amrwbenc/Android.mk | 4 +- .../libstagefright/codecs/amrwbenc/inc/basic_op.h | 8 +- .../libstagefright/codecs/amrwbenc/inc/homing.tab | 86 +- .../libstagefright/codecs/amrwbenc/inc/isp_isf.tab | 2 +- media/libstagefright/codecs/amrwbenc/inc/log2.h | 6 +- .../libstagefright/codecs/amrwbenc/inc/mime_io.tab | 8 +- media/libstagefright/codecs/amrwbenc/inc/stream.h | 4 +- media/libstagefright/codecs/amrwbenc/inc/typedef.h | 2 +- .../libstagefright/codecs/amrwbenc/inc/typedefs.h | 6 +- .../codecs/amrwbenc/src/asm/ARMV5E/Deemph_32_opt.s | 12 +- .../codecs/amrwbenc/src/asm/ARMV5E/Dot_p_opt.s | 16 +- .../amrwbenc/src/asm/ARMV5E/Filt_6k_7k_opt.s | 46 +- .../codecs/amrwbenc/src/asm/ARMV5E/Norm_Corr_opt.s | 50 +- .../amrwbenc/src/asm/ARMV5E/Syn_filt_32_opt.s | 44 +- .../codecs/amrwbenc/src/asm/ARMV5E/convolve_opt.s | 56 +- .../codecs/amrwbenc/src/asm/ARMV5E/cor_h_vec_opt.s | 32 +- .../amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s | 10 +- .../amrwbenc/src/asm/ARMV5E/residu_asm_opt.s | 108 +- .../codecs/amrwbenc/src/asm/ARMV5E/scale_sig_opt.s | 12 +- .../codecs/amrwbenc/src/asm/ARMV5E/syn_filt_opt.s | 60 +- .../codecs/amrwbenc/src/asm/ARMV7/Deemph_32_neon.s | 12 +- .../codecs/amrwbenc/src/asm/ARMV7/Dot_p_neon.s | 24 +- .../amrwbenc/src/asm/ARMV7/Filt_6k_7k_neon.s | 70 +- .../codecs/amrwbenc/src/asm/ARMV7/Norm_Corr_neon.s | 56 +- .../amrwbenc/src/asm/ARMV7/Syn_filt_32_neon.s | 28 +- .../codecs/amrwbenc/src/asm/ARMV7/convolve_neon.s | 70 +- .../codecs/amrwbenc/src/asm/ARMV7/cor_h_vec_neon.s | 34 +- .../amrwbenc/src/asm/ARMV7/pred_lt4_1_neon.s | 32 +- .../amrwbenc/src/asm/ARMV7/residu_asm_neon.s | 52 +- .../codecs/amrwbenc/src/asm/ARMV7/scale_sig_neon.s | 36 +- .../codecs/amrwbenc/src/asm/ARMV7/syn_filt_neon.s | 30 +- .../libstagefright/codecs/amrwbenc/src/autocorr.c | 8 +- media/libstagefright/codecs/amrwbenc/src/az_isp.c | 52 +- media/libstagefright/codecs/amrwbenc/src/bits.c | 20 +- media/libstagefright/codecs/amrwbenc/src/c2t64fx.c | 110 +- media/libstagefright/codecs/amrwbenc/src/c4t64fx.c | 330 +-- .../libstagefright/codecs/amrwbenc/src/convolve.c | 10 +- media/libstagefright/codecs/amrwbenc/src/cor_h_x.c | 22 +- media/libstagefright/codecs/amrwbenc/src/decim54.c | 4 +- media/libstagefright/codecs/amrwbenc/src/deemph.c | 22 +- media/libstagefright/codecs/amrwbenc/src/dtx.c | 90 +- media/libstagefright/codecs/amrwbenc/src/g_pitch.c | 12 +- media/libstagefright/codecs/amrwbenc/src/gpclip.c | 18 +- media/libstagefright/codecs/amrwbenc/src/hp400.c | 6 +- media/libstagefright/codecs/amrwbenc/src/hp50.c | 4 +- media/libstagefright/codecs/amrwbenc/src/hp6k.c | 4 +- media/libstagefright/codecs/amrwbenc/src/hp_wsp.c | 54 +- media/libstagefright/codecs/amrwbenc/src/int_lpc.c | 6 +- media/libstagefright/codecs/amrwbenc/src/isp_az.c | 24 +- media/libstagefright/codecs/amrwbenc/src/isp_isf.c | 8 +- .../libstagefright/codecs/amrwbenc/src/levinson.c | 24 +- media/libstagefright/codecs/amrwbenc/src/log2.c | 8 +- media/libstagefright/codecs/amrwbenc/src/lp_dec2.c | 12 +- media/libstagefright/codecs/amrwbenc/src/math_op.c | 14 +- .../libstagefright/codecs/amrwbenc/src/mem_align.c | 2 +- .../libstagefright/codecs/amrwbenc/src/p_med_ol.c | 50 +- .../libstagefright/codecs/amrwbenc/src/pitch_f4.c | 16 +- .../libstagefright/codecs/amrwbenc/src/pred_lt4.c | 4 +- media/libstagefright/codecs/amrwbenc/src/preemph.c | 16 +- media/libstagefright/codecs/amrwbenc/src/q_gain2.c | 62 +- media/libstagefright/codecs/amrwbenc/src/q_pulse.c | 56 +- media/libstagefright/codecs/amrwbenc/src/qisf_ns.c | 24 +- .../libstagefright/codecs/amrwbenc/src/qpisf_2s.c | 144 +- media/libstagefright/codecs/amrwbenc/src/residu.c | 2 +- media/libstagefright/codecs/amrwbenc/src/scale.c | 8 +- media/libstagefright/codecs/amrwbenc/src/stream.c | 6 +- .../libstagefright/codecs/amrwbenc/src/syn_filt.c | 14 +- .../libstagefright/codecs/amrwbenc/src/updt_tar.c | 2 +- .../codecs/amrwbenc/src/voAMRWBEnc.c | 202 +- .../libstagefright/codecs/amrwbenc/src/voicefac.c | 2 +- media/libstagefright/codecs/amrwbenc/src/wb_vad.c | 166 +- .../libstagefright/codecs/amrwbenc/src/weight_a.c | 2 +- media/libstagefright/codecs/common/Config.mk | 6 +- .../libstagefright/codecs/common/include/voAMRWB.h | 18 +- .../libstagefright/codecs/common/include/voAudio.h | 2 +- .../libstagefright/codecs/common/include/voIndex.h | 2 +- 133 files changed, 5071 insertions(+), 5071 deletions(-) (limited to 'media') diff --git a/media/libstagefright/codecs/aacenc/Android.mk b/media/libstagefright/codecs/aacenc/Android.mk index f9cc6a3..8318ba4 100644 --- a/media/libstagefright/codecs/aacenc/Android.mk +++ b/media/libstagefright/codecs/aacenc/Android.mk @@ -59,7 +59,7 @@ LOCAL_MODULE := libstagefright_aacenc LOCAL_ARM_MODE := arm -LOCAL_STATIC_LIBRARIES := +LOCAL_STATIC_LIBRARIES := LOCAL_SHARED_LIBRARIES := diff --git a/media/libstagefright/codecs/aacenc/SampleCode/AAC_E_SAMPLES.c b/media/libstagefright/codecs/aacenc/SampleCode/AAC_E_SAMPLES.c index 2ea9449..2f31de4 100644 --- a/media/libstagefright/codecs/aacenc/SampleCode/AAC_E_SAMPLES.c +++ b/media/libstagefright/codecs/aacenc/SampleCode/AAC_E_SAMPLES.c @@ -29,11 +29,11 @@ #include "cmnMemory.h" #define VO_AAC_E_OUTPUT 1 -#define READ_SIZE (1024*8) +#define READ_SIZE (1024*8) unsigned char outBuf[1024*8]; unsigned char inBuf[READ_SIZE]; -const char* HelpString = +const char* HelpString = "VisualOn AAC encoder Usage:\n" "voAACEncTest -if -of -sr -ch -br -adts \n" "-if input file name \n" @@ -49,7 +49,7 @@ static int parsecmdline(int argc, char **argv,char **input_filename, char **ou { // notice that: // bitRate/nChannels > 8000 - // bitRate/nChannels < 160000 + // bitRate/nChannels < 160000 // bitRate/nChannels < sampleRate*6 param->adtsUsed = 1; param->bitRate = 0; @@ -69,7 +69,7 @@ static int parsecmdline(int argc, char **argv,char **input_filename, char **ou { argv++; argc--; - *input_filename = *argv; + *input_filename = *argv; } else if (!strcmp(*argv, "-of")) { diff --git a/media/libstagefright/codecs/aacenc/basic_op/basic_op.h b/media/libstagefright/codecs/aacenc/basic_op/basic_op.h index 8291684..ef3c31b 100644 --- a/media/libstagefright/codecs/aacenc/basic_op/basic_op.h +++ b/media/libstagefright/codecs/aacenc/basic_op/basic_op.h @@ -91,7 +91,7 @@ __inline Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2); #else Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2); #endif - + /* Long sub, 2 */ #if (L_SUB_IS_INLINE) __inline Word32 L_sub(Word32 L_var1, Word32 L_var2); @@ -119,7 +119,7 @@ __inline Word16 add (Word16 var1, Word16 var2); #else Word16 add (Word16 var1, Word16 var2); #endif - + /* Short sub, 1 */ #if (SUB_IS_INLINE) __inline Word16 sub(Word16 var1, Word16 var2); @@ -227,48 +227,48 @@ Word32 L_shr_r (Word32 L_var1, Word16 var2); #if ARMV4_INASM __inline Word32 ASM_L_shr(Word32 L_var1, Word16 var2) { - Word32 result; - asm volatile( - "MOV %[result], %[L_var1], ASR %[var2] \n" + Word32 result; + asm volatile( + "MOV %[result], %[L_var1], ASR %[var2] \n" :[result]"=r"(result) :[L_var1]"r"(L_var1), [var2]"r"(var2) - ); - return result; + ); + return result; } - + __inline Word32 ASM_L_shl(Word32 L_var1, Word16 var2) { - Word32 result; - asm volatile( + Word32 result; + asm volatile( "MOV r2, %[L_var1] \n" "MOV r3, #0x7fffffff\n" - "MOV %[result], %[L_var1], ASL %[var2] \n" + "MOV %[result], %[L_var1], ASL %[var2] \n" "TEQ r2, %[result], ASR %[var2]\n" "EORNE %[result],r3,r2,ASR#31\n" :[result]"+r"(result) :[L_var1]"r"(L_var1), [var2]"r"(var2) :"r2", "r3" - ); - return result; + ); + return result; } __inline Word32 ASM_shr(Word32 L_var1, Word16 var2) { - Word32 result; - asm volatile( + Word32 result; + asm volatile( "CMP %[var2], #15\n" "MOVGE %[var2], #15\n" "MOV %[result], %[L_var1], ASR %[var2]\n" :[result]"=r"(result) - :[L_var1]"r"(L_var1), [var2]"r"(var2) - ); - return result; -} + :[L_var1]"r"(L_var1), [var2]"r"(var2) + ); + return result; +} __inline Word32 ASM_shl(Word32 L_var1, Word16 var2) { - Word32 result; - asm volatile( + Word32 result; + asm volatile( "CMP %[var2], #16\n" "MOVGE %[var2], #16\n" "MOV %[result], %[L_var1], ASL %[var2]\n" @@ -280,9 +280,9 @@ __inline Word32 ASM_shl(Word32 L_var1, Word16 var2) :[result]"+r"(result) :[L_var1]"r"(L_var1), [var2]"r"(var2) :"r2", "r3" - ); - return result; -} + ); + return result; +} #endif /*___________________________________________________________________________ @@ -300,17 +300,17 @@ __inline Word16 saturate(Word32 L_var1) "MOV r3, #1\n" "MOV r2,%[L_var1],ASR#15\n" "RSB r3, r3, r3, LSL #15\n" - "TEQ r2,%[L_var1],ASR#31\n" + "TEQ r2,%[L_var1],ASR#31\n" "EORNE %[result],r3,%[L_var1],ASR#31\n" :[result]"+r"(result) :[L_var1]"r"(L_var1) - :"r2", "r3" + :"r2", "r3" ); return result; #else Word16 var_out; - + //var_out = (L_var1 > (Word32)0X00007fffL) ? (MAX_16) : ((L_var1 < (Word32)0xffff8000L) ? (MIN_16) : ((Word16)L_var1)); if (L_var1 > 0X00007fffL) @@ -419,13 +419,13 @@ __inline Word16 shr (Word16 var1, Word16 var2) __inline Word32 L_mult(Word16 var1, Word16 var2) { #if ARMV5TE_L_MULT - Word32 result; - asm volatile( - "SMULBB %[result], %[var1], %[var2] \n" - "QADD %[result], %[result], %[result] \n" + Word32 result; + asm volatile( + "SMULBB %[result], %[var1], %[var2] \n" + "QADD %[result], %[result], %[result] \n" :[result]"+r"(result) :[var1]"r"(var1), [var2]"r"(var2) - ); + ); return result; #else Word32 L_var_out; @@ -449,14 +449,14 @@ __inline Word32 L_mult(Word16 var1, Word16 var2) __inline Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2) { #if ARMV5TE_L_MSU - Word32 result; - asm volatile( - "SMULBB %[result], %[var1], %[var2] \n" + Word32 result; + asm volatile( + "SMULBB %[result], %[var1], %[var2] \n" "QADD %[result], %[result], %[result] \n" "QSUB %[result], %[L_var3], %[result]\n" :[result]"+r"(result) :[L_var3]"r"(L_var3), [var1]"r"(var1), [var2]"r"(var2) - ); + ); return result; #else Word32 L_var_out; @@ -473,12 +473,12 @@ __inline Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2) __inline Word32 L_sub(Word32 L_var1, Word32 L_var2) { #if ARMV5TE_L_SUB - Word32 result; - asm volatile( + Word32 result; + asm volatile( "QSUB %[result], %[L_var1], %[L_var2]\n" :[result]"+r"(result) :[L_var1]"r"(L_var1), [L_var2]"r"(L_var2) - ); + ); return result; #else Word32 L_var_out; @@ -588,9 +588,9 @@ __inline Word32 L_shr (Word32 L_var1, Word16 var2) __inline Word16 add (Word16 var1, Word16 var2) { #if ARMV5TE_ADD - Word32 result; - asm volatile( - "ADD %[result], %[var1], %[var2] \n" + Word32 result; + asm volatile( + "ADD %[result], %[var1], %[var2] \n" "MOV r3, #0x1\n" "MOV r2, %[result], ASR #15\n" "RSB r3, r3, r3, LSL, #15\n" @@ -599,7 +599,7 @@ __inline Word16 add (Word16 var1, Word16 var2) :[result]"+r"(result) :[var1]"r"(var1), [var2]"r"(var2) :"r2", "r3" - ); + ); return result; #else Word16 var_out; @@ -618,18 +618,18 @@ __inline Word16 add (Word16 var1, Word16 var2) __inline Word16 sub(Word16 var1, Word16 var2) { #if ARMV5TE_SUB - Word32 result; - asm volatile( + Word32 result; + asm volatile( "MOV r3, #1\n" - "SUB %[result], %[var1], %[var2] \n" + "SUB %[result], %[var1], %[var2] \n" "RSB r3,r3,r3,LSL#15\n" - "MOV r2, %[var1], ASR #15 \n" + "MOV r2, %[var1], ASR #15 \n" "TEQ r2, %[var1], ASR #31 \n" "EORNE %[result], r3, %[result], ASR #31 \n" :[result]"+r"(result) :[var1]"r"(var1), [var2]"r"(var2) :"r2", "r3" - ); + ); return result; #else Word16 var_out; @@ -637,7 +637,7 @@ __inline Word16 sub(Word16 var1, Word16 var2) L_diff = (Word32) var1 - var2; var_out = saturate(L_diff); - + return (var_out); #endif } @@ -657,16 +657,16 @@ __inline Word16 div_s (Word16 var1, Word16 var2) { var_out = 0; L_num = (Word32) var1; - + L_denom = (Word32) var2; - + //return (L_num<<15)/var2; for (iteration = 0; iteration < 15; iteration++) { var_out <<= 1; L_num <<= 1; - + if (L_num >= L_denom) { L_num -= L_denom; @@ -683,8 +683,8 @@ __inline Word16 div_s (Word16 var1, Word16 var2) __inline Word16 mult (Word16 var1, Word16 var2) { #if ARMV5TE_MULT - Word32 result; - asm volatile( + Word32 result; + asm volatile( "SMULBB r2, %[var1], %[var2] \n" "MOV r3, #1\n" "MOV %[result], r2, ASR #15\n" @@ -695,7 +695,7 @@ __inline Word16 mult (Word16 var1, Word16 var2) :[result]"+r"(result) :[var1]"r"(var1), [var2]"r"(var2) :"r2", "r3" - ); + ); return result; #else Word16 var_out; @@ -718,8 +718,8 @@ __inline Word16 mult (Word16 var1, Word16 var2) __inline Word16 norm_s (Word16 var1) { #if ARMV5TE_NORM_S - Word16 result; - asm volatile( + Word16 result; + asm volatile( "MOV r2,%[var1] \n" "CMP r2, #0\n" "RSBLT %[var1], %[var1], #0 \n" @@ -727,11 +727,11 @@ __inline Word16 norm_s (Word16 var1) "SUBNE %[result], %[result], #17\n" "MOVEQ %[result], #0\n" "CMP r2, #-1\n" - "MOVEQ %[result], #15\n" + "MOVEQ %[result], #15\n" :[result]"+r"(result) :[var1]"r"(var1) :"r2" - ); + ); return result; #else Word16 var_out; @@ -768,15 +768,15 @@ __inline Word16 norm_s (Word16 var1) __inline Word16 norm_l (Word32 L_var1) { #if ARMV5TE_NORM_L - Word16 result; - asm volatile( + Word16 result; + asm volatile( "CMP %[L_var1], #0\n" "CLZNE %[result], %[L_var1]\n" - "SUBNE %[result], %[result], #1\n" + "SUBNE %[result], %[result], #1\n" "MOVEQ %[result], #0\n" :[result]"+r"(result) :[L_var1]"r"(L_var1) - ); + ); return result; #else //Word16 var_out; @@ -805,84 +805,84 @@ __inline Word16 norm_l (Word32 L_var1) //} //return (var_out); Word16 a16; - Word16 r = 0 ; + Word16 r = 0 ; + - if ( L_var1 < 0 ) { - L_var1 = ~L_var1; + L_var1 = ~L_var1; } if (0 == (L_var1 & 0x7fff8000)) { a16 = extract_l(L_var1); r += 16; - + if (0 == (a16 & 0x7f80)) { r += 8; - + if (0 == (a16 & 0x0078)) { r += 4; - + if (0 == (a16 & 0x0006)) { r += 2; - + if (0 == (a16 & 0x0001)) { r += 1; } } else { - + if (0 == (a16 & 0x0004)) { r += 1; } } } else { - + if (0 == (a16 & 0x0060)) { r += 2; - + if (0 == (a16 & 0x0010)) { r += 1; } } else { - + if (0 == (a16 & 0x0040)) { r += 1; } } } - } - else { - + } + else { + if (0 == (a16 & 0x7800)) { r += 4; - + if (0 == (a16 & 0x0600)) { r += 2; - + if (0 == (a16 & 0x0100)) { r += 1; } } else { - + if (0 == (a16 & 0x0400)) { r += 1; } } } else { - + if (0 == (a16 & 0x6000)) { r += 2; - + if (0 == (a16 & 0x1000)) { r += 1; } } else { - + if (0 == (a16 & 0x4000)) { r += 1; } @@ -892,38 +892,38 @@ __inline Word16 norm_l (Word32 L_var1) } else { a16 = extract_h(L_var1); - + if (0 == (a16 & 0x7f80)) { r += 8; - + if (0 == (a16 & 0x0078)) { r += 4 ; - + if (0 == (a16 & 0x0006)) { r += 2; - + if (0 == (a16 & 0x0001)) { r += 1; } } else { - + if (0 == (a16 & 0x0004)) { r += 1; } } } else { - + if (0 == (a16 & 0x0060)) { r += 2; - + if (0 == (a16 & 0x0010)) { r += 1; } } else { - + if (0 == (a16 & 0x0040)) { r += 1; } @@ -931,35 +931,35 @@ __inline Word16 norm_l (Word32 L_var1) } } else { - + if (0 == (a16 & 0x7800)) { r += 4; - + if (0 == (a16 & 0x0600)) { r += 2; - + if (0 == (a16 & 0x0100)) { r += 1; } } else { - + if (0 == (a16 & 0x0400)) { r += 1; } } } else { - + if (0 == (a16 & 0x6000)) { r += 2; - + if (0 == (a16 & 0x1000)) { r += 1; } } else { - + if (0 == (a16 & 0x4000)) { return 1; } @@ -967,7 +967,7 @@ __inline Word16 norm_l (Word32 L_var1) } } } - + return r ; #endif } @@ -978,17 +978,17 @@ __inline Word16 norm_l (Word32 L_var1) __inline Word16 round16(Word32 L_var1) { #if ARMV5TE_ROUND - Word16 result; - asm volatile( + Word16 result; + asm volatile( "MOV r1,#0x00008000\n" "QADD %[result], %[L_var1], r1\n" - "MOV %[result], %[result], ASR #16 \n" + "MOV %[result], %[result], ASR #16 \n" :[result]"+r"(result) :[L_var1]"r"(L_var1) :"r1" - ); + ); return result; -#else +#else Word16 var_out; Word32 L_rounded; @@ -1004,14 +1004,14 @@ __inline Word16 round16(Word32 L_var1) __inline Word32 L_mac (Word32 L_var3, Word16 var1, Word16 var2) { #if ARMV5TE_L_MAC - Word32 result; - asm volatile( + Word32 result; + asm volatile( "SMULBB %[result], %[var1], %[var2]\n" "QADD %[result], %[result], %[result]\n" "QADD %[result], %[result], %[L_var3]\n" :[result]"+r"(result) : [L_var3]"r"(L_var3), [var1]"r"(var1), [var2]"r"(var2) - ); + ); return result; #else Word32 L_var_out; @@ -1028,12 +1028,12 @@ __inline Word32 L_mac (Word32 L_var3, Word16 var1, Word16 var2) __inline Word32 L_add (Word32 L_var1, Word32 L_var2) { #if ARMV5TE_L_ADD - Word32 result; - asm volatile( + Word32 result; + asm volatile( "QADD %[result], %[L_var1], %[L_var2]\n" :[result]"+r"(result) :[L_var1]"r"(L_var1), [L_var2]"r"(L_var2) - ); + ); return result; #else Word32 L_var_out; @@ -1114,7 +1114,7 @@ __inline Word16 msu_r (Word32 L_var3, Word16 var1, Word16 var2) L_var3 = L_msu (L_var3, var1, var2); var_out = (Word16)((L_var3 + 0x8000L) >> 16); - + return (var_out); } #endif diff --git a/media/libstagefright/codecs/aacenc/basic_op/basicop2.c b/media/libstagefright/codecs/aacenc/basic_op/basicop2.c index 82d3f38..d43bbd9 100644 --- a/media/libstagefright/codecs/aacenc/basic_op/basicop2.c +++ b/media/libstagefright/codecs/aacenc/basic_op/basicop2.c @@ -16,7 +16,7 @@ /******************************************************************************* File: basicop2.c - Content: Basic arithmetic operators. + Content: Basic arithmetic operators. *******************************************************************************/ @@ -462,7 +462,7 @@ Word32 L_mult(Word16 var1, Word16 var2) { L_var_out = MAX_32; } - + return (L_var_out); } #endif diff --git a/media/libstagefright/codecs/aacenc/basic_op/oper_32b.c b/media/libstagefright/codecs/aacenc/basic_op/oper_32b.c index 0ad82f0..e48af9d 100644 --- a/media/libstagefright/codecs/aacenc/basic_op/oper_32b.c +++ b/media/libstagefright/codecs/aacenc/basic_op/oper_32b.c @@ -17,7 +17,7 @@ File: oper_32b.c Content: This file contains operations in double precision. - + *******************************************************************************/ #include "typedef.h" @@ -200,12 +200,12 @@ Word32 Div_32 (Word32 L_num, Word32 denom) } /*! - - \brief calculates the log dualis times 4 of argument + + \brief calculates the log dualis times 4 of argument iLog4(x) = (Word32)(4 * log(value)/log(2.0)) \return ilog4 value - + */ Word16 iLog4(Word32 value) { @@ -225,7 +225,7 @@ Word16 iLog4(Word32 value) iLog4 = (-(iLog4 << 2) - norm_s(tmp16)) - 1; } else { - iLog4 = -128; /* -(INT_BITS*4); */ + iLog4 = -128; /* -(INT_BITS*4); */ } return iLog4; @@ -268,79 +268,79 @@ Word32 rsqrt(Word32 value, /*!< Operand to square root (0.0 ... 1) */ } static const Word32 pow2Table[POW2_TABLE_SIZE] = { -0x7fffffff, 0x7fa765ad, 0x7f4f08ae, 0x7ef6e8da, -0x7e9f0606, 0x7e476009, 0x7deff6b6, 0x7d98c9e6, -0x7d41d96e, 0x7ceb2523, 0x7c94acde, 0x7c3e7073, -0x7be86fb9, 0x7b92aa88, 0x7b3d20b6, 0x7ae7d21a, -0x7a92be8b, 0x7a3de5df, 0x79e947ef, 0x7994e492, -0x7940bb9e, 0x78ecccec, 0x78991854, 0x78459dac, -0x77f25cce, 0x779f5591, 0x774c87cc, 0x76f9f359, -0x76a7980f, 0x765575c8, 0x76038c5b, 0x75b1dba2, -0x75606374, 0x750f23ab, 0x74be1c20, 0x746d4cac, -0x741cb528, 0x73cc556d, 0x737c2d55, 0x732c3cba, -0x72dc8374, 0x728d015d, 0x723db650, 0x71eea226, -0x719fc4b9, 0x71511de4, 0x7102ad80, 0x70b47368, -0x70666f76, 0x7018a185, 0x6fcb096f, 0x6f7da710, -0x6f307a41, 0x6ee382de, 0x6e96c0c3, 0x6e4a33c9, -0x6dfddbcc, 0x6db1b8a8, 0x6d65ca38, 0x6d1a1057, -0x6cce8ae1, 0x6c8339b2, 0x6c381ca6, 0x6bed3398, -0x6ba27e66, 0x6b57fce9, 0x6b0daeff, 0x6ac39485, -0x6a79ad56, 0x6a2ff94f, 0x69e6784d, 0x699d2a2c, -0x69540ec9, 0x690b2601, 0x68c26fb1, 0x6879ebb6, -0x683199ed, 0x67e97a34, 0x67a18c68, 0x6759d065, -0x6712460b, 0x66caed35, 0x6683c5c3, 0x663ccf92, -0x65f60a80, 0x65af766a, 0x6569132f, 0x6522e0ad, -0x64dcdec3, 0x64970d4f, 0x64516c2e, 0x640bfb41, -0x63c6ba64, 0x6381a978, 0x633cc85b, 0x62f816eb, -0x62b39509, 0x626f4292, 0x622b1f66, 0x61e72b65, -0x61a3666d, 0x615fd05f, 0x611c6919, 0x60d9307b, -0x60962665, 0x60534ab7, 0x60109d51, 0x5fce1e12, -0x5f8bccdb, 0x5f49a98c, 0x5f07b405, 0x5ec5ec26, -0x5e8451d0, 0x5e42e4e3, 0x5e01a540, 0x5dc092c7, -0x5d7fad59, 0x5d3ef4d7, 0x5cfe6923, 0x5cbe0a1c, -0x5c7dd7a4, 0x5c3dd19c, 0x5bfdf7e5, 0x5bbe4a61, -0x5b7ec8f2, 0x5b3f7377, 0x5b0049d4, 0x5ac14bea, -0x5a82799a, 0x5a43d2c6, 0x5a055751, 0x59c7071c, -0x5988e209, 0x594ae7fb, 0x590d18d3, 0x58cf7474, -0x5891fac1, 0x5854ab9b, 0x581786e6, 0x57da8c83, -0x579dbc57, 0x57611642, 0x57249a29, 0x56e847ef, -0x56ac1f75, 0x567020a0, 0x56344b52, 0x55f89f70, -0x55bd1cdb, 0x5581c378, 0x55469329, 0x550b8bd4, -0x54d0ad5b, 0x5495f7a1, 0x545b6a8b, 0x542105fd, -0x53e6c9db, 0x53acb607, 0x5372ca68, 0x533906e0, -0x52ff6b55, 0x52c5f7aa, 0x528cabc3, 0x52538786, -0x521a8ad7, 0x51e1b59a, 0x51a907b4, 0x5170810b, -0x51382182, 0x50ffe8fe, 0x50c7d765, 0x508fec9c, -0x50582888, 0x50208b0e, 0x4fe91413, 0x4fb1c37c, -0x4f7a9930, 0x4f439514, 0x4f0cb70c, 0x4ed5ff00, -0x4e9f6cd4, 0x4e69006e, 0x4e32b9b4, 0x4dfc988c, -0x4dc69cdd, 0x4d90c68b, 0x4d5b157e, 0x4d25899c, -0x4cf022ca, 0x4cbae0ef, 0x4c85c3f1, 0x4c50cbb8, -0x4c1bf829, 0x4be7492b, 0x4bb2bea5, 0x4b7e587d, -0x4b4a169c, 0x4b15f8e6, 0x4ae1ff43, 0x4aae299b, -0x4a7a77d5, 0x4a46e9d6, 0x4a137f88, 0x49e038d0, -0x49ad1598, 0x497a15c4, 0x4947393f, 0x49147fee, -0x48e1e9ba, 0x48af768a, 0x487d2646, 0x484af8d6, -0x4818ee22, 0x47e70611, 0x47b5408c, 0x47839d7b, -0x47521cc6, 0x4720be55, 0x46ef8210, 0x46be67e0, -0x468d6fae, 0x465c9961, 0x462be4e2, 0x45fb521a, -0x45cae0f2, 0x459a9152, 0x456a6323, 0x453a564d, -0x450a6abb, 0x44daa054, 0x44aaf702, 0x447b6ead, -0x444c0740, 0x441cc0a3, 0x43ed9ac0, 0x43be9580, -0x438fb0cb, 0x4360ec8d, 0x433248ae, 0x4303c517, -0x42d561b4, 0x42a71e6c, 0x4278fb2b, 0x424af7da, -0x421d1462, 0x41ef50ae, 0x41c1aca8, 0x41942839, -0x4166c34c, 0x41397dcc, 0x410c57a2, 0x40df50b8, -0x40b268fa, 0x4085a051, 0x4058f6a8, 0x402c6be9 +0x7fffffff, 0x7fa765ad, 0x7f4f08ae, 0x7ef6e8da, +0x7e9f0606, 0x7e476009, 0x7deff6b6, 0x7d98c9e6, +0x7d41d96e, 0x7ceb2523, 0x7c94acde, 0x7c3e7073, +0x7be86fb9, 0x7b92aa88, 0x7b3d20b6, 0x7ae7d21a, +0x7a92be8b, 0x7a3de5df, 0x79e947ef, 0x7994e492, +0x7940bb9e, 0x78ecccec, 0x78991854, 0x78459dac, +0x77f25cce, 0x779f5591, 0x774c87cc, 0x76f9f359, +0x76a7980f, 0x765575c8, 0x76038c5b, 0x75b1dba2, +0x75606374, 0x750f23ab, 0x74be1c20, 0x746d4cac, +0x741cb528, 0x73cc556d, 0x737c2d55, 0x732c3cba, +0x72dc8374, 0x728d015d, 0x723db650, 0x71eea226, +0x719fc4b9, 0x71511de4, 0x7102ad80, 0x70b47368, +0x70666f76, 0x7018a185, 0x6fcb096f, 0x6f7da710, +0x6f307a41, 0x6ee382de, 0x6e96c0c3, 0x6e4a33c9, +0x6dfddbcc, 0x6db1b8a8, 0x6d65ca38, 0x6d1a1057, +0x6cce8ae1, 0x6c8339b2, 0x6c381ca6, 0x6bed3398, +0x6ba27e66, 0x6b57fce9, 0x6b0daeff, 0x6ac39485, +0x6a79ad56, 0x6a2ff94f, 0x69e6784d, 0x699d2a2c, +0x69540ec9, 0x690b2601, 0x68c26fb1, 0x6879ebb6, +0x683199ed, 0x67e97a34, 0x67a18c68, 0x6759d065, +0x6712460b, 0x66caed35, 0x6683c5c3, 0x663ccf92, +0x65f60a80, 0x65af766a, 0x6569132f, 0x6522e0ad, +0x64dcdec3, 0x64970d4f, 0x64516c2e, 0x640bfb41, +0x63c6ba64, 0x6381a978, 0x633cc85b, 0x62f816eb, +0x62b39509, 0x626f4292, 0x622b1f66, 0x61e72b65, +0x61a3666d, 0x615fd05f, 0x611c6919, 0x60d9307b, +0x60962665, 0x60534ab7, 0x60109d51, 0x5fce1e12, +0x5f8bccdb, 0x5f49a98c, 0x5f07b405, 0x5ec5ec26, +0x5e8451d0, 0x5e42e4e3, 0x5e01a540, 0x5dc092c7, +0x5d7fad59, 0x5d3ef4d7, 0x5cfe6923, 0x5cbe0a1c, +0x5c7dd7a4, 0x5c3dd19c, 0x5bfdf7e5, 0x5bbe4a61, +0x5b7ec8f2, 0x5b3f7377, 0x5b0049d4, 0x5ac14bea, +0x5a82799a, 0x5a43d2c6, 0x5a055751, 0x59c7071c, +0x5988e209, 0x594ae7fb, 0x590d18d3, 0x58cf7474, +0x5891fac1, 0x5854ab9b, 0x581786e6, 0x57da8c83, +0x579dbc57, 0x57611642, 0x57249a29, 0x56e847ef, +0x56ac1f75, 0x567020a0, 0x56344b52, 0x55f89f70, +0x55bd1cdb, 0x5581c378, 0x55469329, 0x550b8bd4, +0x54d0ad5b, 0x5495f7a1, 0x545b6a8b, 0x542105fd, +0x53e6c9db, 0x53acb607, 0x5372ca68, 0x533906e0, +0x52ff6b55, 0x52c5f7aa, 0x528cabc3, 0x52538786, +0x521a8ad7, 0x51e1b59a, 0x51a907b4, 0x5170810b, +0x51382182, 0x50ffe8fe, 0x50c7d765, 0x508fec9c, +0x50582888, 0x50208b0e, 0x4fe91413, 0x4fb1c37c, +0x4f7a9930, 0x4f439514, 0x4f0cb70c, 0x4ed5ff00, +0x4e9f6cd4, 0x4e69006e, 0x4e32b9b4, 0x4dfc988c, +0x4dc69cdd, 0x4d90c68b, 0x4d5b157e, 0x4d25899c, +0x4cf022ca, 0x4cbae0ef, 0x4c85c3f1, 0x4c50cbb8, +0x4c1bf829, 0x4be7492b, 0x4bb2bea5, 0x4b7e587d, +0x4b4a169c, 0x4b15f8e6, 0x4ae1ff43, 0x4aae299b, +0x4a7a77d5, 0x4a46e9d6, 0x4a137f88, 0x49e038d0, +0x49ad1598, 0x497a15c4, 0x4947393f, 0x49147fee, +0x48e1e9ba, 0x48af768a, 0x487d2646, 0x484af8d6, +0x4818ee22, 0x47e70611, 0x47b5408c, 0x47839d7b, +0x47521cc6, 0x4720be55, 0x46ef8210, 0x46be67e0, +0x468d6fae, 0x465c9961, 0x462be4e2, 0x45fb521a, +0x45cae0f2, 0x459a9152, 0x456a6323, 0x453a564d, +0x450a6abb, 0x44daa054, 0x44aaf702, 0x447b6ead, +0x444c0740, 0x441cc0a3, 0x43ed9ac0, 0x43be9580, +0x438fb0cb, 0x4360ec8d, 0x433248ae, 0x4303c517, +0x42d561b4, 0x42a71e6c, 0x4278fb2b, 0x424af7da, +0x421d1462, 0x41ef50ae, 0x41c1aca8, 0x41942839, +0x4166c34c, 0x41397dcc, 0x410c57a2, 0x40df50b8, +0x40b268fa, 0x4085a051, 0x4058f6a8, 0x402c6be9 }; /*! - - \brief calculates 2 ^ (x/y) for x<=0, y > 0, x <= 32768 * y - + + \brief calculates 2 ^ (x/y) for x<=0, y > 0, x <= 32768 * y + avoids integer division - - \return + + \return */ Word32 pow2_xy(Word32 x, Word32 y) { @@ -355,7 +355,7 @@ Word32 pow2_xy(Word32 x, Word32 y) fPart = tmp2 - iPart*y; iPart = min(iPart,INT_BITS-1); - res = pow2Table[(POW2_TABLE_SIZE*fPart)/y] >> iPart; - + res = pow2Table[(POW2_TABLE_SIZE*fPart)/y] >> iPart; + return(res); } \ No newline at end of file diff --git a/media/libstagefright/codecs/aacenc/basic_op/oper_32b.h b/media/libstagefright/codecs/aacenc/basic_op/oper_32b.h index 1d35e5e..9ebd1c2 100644 --- a/media/libstagefright/codecs/aacenc/basic_op/oper_32b.h +++ b/media/libstagefright/codecs/aacenc/basic_op/oper_32b.h @@ -51,21 +51,21 @@ __inline Word32 L_mpy_ls(Word32 L_var2, Word16 var1) swHigh1 = (Word16)(L_var2 >> 16); l_var_out = (long)swLow1 * (long)var1 >> 15; - + l_var_out += swHigh1 * var1 << 1; - + return(l_var_out); } __inline Word32 L_mpy_wx(Word32 L_var2, Word16 var1) { #if ARMV5TE_L_MPY_LS - Word32 result; - asm volatile( - "SMULWB %[result], %[L_var2], %[var1] \n" + Word32 result; + asm volatile( + "SMULWB %[result], %[L_var2], %[var1] \n" :[result]"+r"(result) :[L_var2]"r"(L_var2), [var1]"r"(var1) - ); + ); return result; #else unsigned short swLow1; @@ -75,9 +75,9 @@ __inline Word32 L_mpy_wx(Word32 L_var2, Word16 var1) swLow1 = (unsigned short)(L_var2); swHigh1 = (Word16)(L_var2 >> 16); - l_var_out = (long)swLow1 * (long)var1 >> 16; + l_var_out = (long)swLow1 * (long)var1 >> 16; l_var_out += swHigh1 * var1; - + return(l_var_out); #endif } diff --git a/media/libstagefright/codecs/aacenc/basic_op/typedef.h b/media/libstagefright/codecs/aacenc/basic_op/typedef.h index 1030803..b1f8225 100644 --- a/media/libstagefright/codecs/aacenc/basic_op/typedef.h +++ b/media/libstagefright/codecs/aacenc/basic_op/typedef.h @@ -30,7 +30,7 @@ /* * this is the original code from the ETSI file typedef.h */ - + #if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(_MSC_VER) || defined(__ZTC__) typedef signed char Word8; typedef short Word16; diff --git a/media/libstagefright/codecs/aacenc/basic_op/typedefs.h b/media/libstagefright/codecs/aacenc/basic_op/typedefs.h index c7e774b..c924e2c 100644 --- a/media/libstagefright/codecs/aacenc/basic_op/typedefs.h +++ b/media/libstagefright/codecs/aacenc/basic_op/typedefs.h @@ -55,7 +55,7 @@ #define INT_BITS 32 /* ******************************************************************************** -* DEFINITION OF CONSTANTS +* DEFINITION OF CONSTANTS ******************************************************************************** */ /* @@ -120,12 +120,12 @@ typedef unsigned __int64 UWord64; #define ARMV5TE_L_MULT 1 #define ARMV5TE_L_MAC 1 #define ARMV5TE_L_MSU 1 - - + + #define ARMV5TE_DIV_S 1 #define ARMV5TE_ROUND 1 #define ARMV5TE_MULT 1 - + #define ARMV5TE_NORM_S 1 #define ARMV5TE_NORM_L 1 #define ARMV5TE_L_MPY_LS 1 @@ -149,7 +149,7 @@ typedef unsigned __int64 UWord64; #define ROUND_IS_INLINE 1 //define round as inline function #define L_MAC_IS_INLINE 1 //define L_mac as inline function #define L_ADD_IS_INLINE 1 //define L_add as inline function -#define EXTRACT_H_IS_INLINE 1 //define extract_h as inline function +#define EXTRACT_H_IS_INLINE 1 //define extract_h as inline function #define EXTRACT_L_IS_INLINE 1 //define extract_l as inline function //??? #define MULT_R_IS_INLINE 1 //define mult_r as inline function #define SHR_R_IS_INLINE 1 //define shr_r as inline function diff --git a/media/libstagefright/codecs/aacenc/inc/aac_rom.h b/media/libstagefright/codecs/aacenc/inc/aac_rom.h index 784bb70..8e206b7 100644 --- a/media/libstagefright/codecs/aacenc/inc/aac_rom.h +++ b/media/libstagefright/codecs/aacenc/inc/aac_rom.h @@ -16,7 +16,7 @@ /******************************************************************************* File: aac_rom.h - Content: constant tables + Content: constant tables *******************************************************************************/ diff --git a/media/libstagefright/codecs/aacenc/inc/aacenc_core.h b/media/libstagefright/codecs/aacenc/inc/aacenc_core.h index 41ba756..1acdbbc 100644 --- a/media/libstagefright/codecs/aacenc/inc/aacenc_core.h +++ b/media/libstagefright/codecs/aacenc/inc/aacenc_core.h @@ -47,7 +47,7 @@ typedef struct { typedef struct { - + AACENC_CONFIG config; /* Word16 size: 8 */ ELEMENT_INFO elInfo; /* Word16 size: 4 */ diff --git a/media/libstagefright/codecs/aacenc/inc/adj_thr.h b/media/libstagefright/codecs/aacenc/inc/adj_thr.h index f7cb888..0f4bb5e 100644 --- a/media/libstagefright/codecs/aacenc/inc/adj_thr.h +++ b/media/libstagefright/codecs/aacenc/inc/adj_thr.h @@ -16,7 +16,7 @@ /******************************************************************************* File: adj_thr.h - Content: Threshold compensation function + Content: Threshold compensation function *******************************************************************************/ @@ -44,7 +44,7 @@ void AdjustThresholds(ADJ_THR_STATE *adjThrState, PSY_OUT_ELEMENT *psyOutElement, Word16 *chBitDistribution, Word16 logSfbEnergy[MAX_CHANNELS][MAX_GROUPED_SFB], - Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB], + Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB], QC_OUT_ELEMENT* qcOE, ELEMENT_BITS* elBits, const Word16 nChannels, diff --git a/media/libstagefright/codecs/aacenc/inc/adj_thr_data.h b/media/libstagefright/codecs/aacenc/inc/adj_thr_data.h index 9ac4664..30132d8 100644 --- a/media/libstagefright/codecs/aacenc/inc/adj_thr_data.h +++ b/media/libstagefright/codecs/aacenc/inc/adj_thr_data.h @@ -16,7 +16,7 @@ /******************************************************************************* File: adj_thr_data.h - Content: Threshold compensation parameter + Content: Threshold compensation parameter *******************************************************************************/ diff --git a/media/libstagefright/codecs/aacenc/inc/bitenc.h b/media/libstagefright/codecs/aacenc/inc/bitenc.h index 6ded3c6..6a58aeb 100644 --- a/media/libstagefright/codecs/aacenc/inc/bitenc.h +++ b/media/libstagefright/codecs/aacenc/inc/bitenc.h @@ -26,7 +26,7 @@ #include "qc_data.h" #include "tns.h" #include "channel_map.h" -#include "interface.h" +#include "interface.h" struct BITSTREAMENCODER_INIT { diff --git a/media/libstagefright/codecs/aacenc/inc/interface.h b/media/libstagefright/codecs/aacenc/inc/interface.h index 966ac99..a42e6a9 100644 --- a/media/libstagefright/codecs/aacenc/inc/interface.h +++ b/media/libstagefright/codecs/aacenc/inc/interface.h @@ -55,11 +55,11 @@ typedef struct { Word16 windowShape; Word16 groupingMask; Word16 sfbOffsets[MAX_GROUPED_SFB+1]; - Word16 mdctScale; - Word32 *sfbEnergy; + Word16 mdctScale; + Word32 *sfbEnergy; Word32 *sfbSpreadedEnergy; - Word32 *sfbThreshold; - Word32 *mdctSpectrum; + Word32 *sfbThreshold; + Word32 *mdctSpectrum; Word32 sfbEnSumLR; Word32 sfbEnSumMS; Word32 sfbDist[MAX_GROUPED_SFB]; diff --git a/media/libstagefright/codecs/aacenc/inc/line_pe.h b/media/libstagefright/codecs/aacenc/inc/line_pe.h index 038d5a3..116d5a8 100644 --- a/media/libstagefright/codecs/aacenc/inc/line_pe.h +++ b/media/libstagefright/codecs/aacenc/inc/line_pe.h @@ -24,8 +24,8 @@ #define __LINE_PE_H -#include "psy_const.h" -#include "interface.h" +#include "psy_const.h" +#include "interface.h" typedef struct { @@ -72,4 +72,4 @@ void calcSfbPe(PE_DATA *peData, -#endif +#endif diff --git a/media/libstagefright/codecs/aacenc/inc/psy_const.h b/media/libstagefright/codecs/aacenc/inc/psy_const.h index b05d683..19fb9b2 100644 --- a/media/libstagefright/codecs/aacenc/inc/psy_const.h +++ b/media/libstagefright/codecs/aacenc/inc/psy_const.h @@ -69,7 +69,7 @@ enum #define BLOCK_SWITCHING_OFFSET (1*1024+3*128+64+128) #define BLOCK_SWITCHING_DATA_SIZE FRAME_LEN_LONG - + #define TRANSFORM_OFFSET_LONG 0 #define TRANSFORM_OFFSET_SHORT 448 diff --git a/media/libstagefright/codecs/aacenc/inc/psy_main.h b/media/libstagefright/codecs/aacenc/inc/psy_main.h index 5fcbe13..2ccac60 100644 --- a/media/libstagefright/codecs/aacenc/inc/psy_main.h +++ b/media/libstagefright/codecs/aacenc/inc/psy_main.h @@ -54,9 +54,9 @@ Word16 psyMainInit( PSY_KERNEL *hPsy, Word16 bandwidth); -Word16 psyMain(Word16 nChannels, /*!< total number of channels */ +Word16 psyMain(Word16 nChannels, /*!< total number of channels */ ELEMENT_INFO *elemInfo, - Word16 *timeSignal, /*!< interleaved time signal */ + Word16 *timeSignal, /*!< interleaved time signal */ PSY_DATA psyData[MAX_CHANNELS], TNS_DATA tnsData[MAX_CHANNELS], PSY_CONFIGURATION_LONG* psyConfLong, diff --git a/media/libstagefright/codecs/aacenc/inc/qc_main.h b/media/libstagefright/codecs/aacenc/inc/qc_main.h index 924a06d..8f83973 100644 --- a/media/libstagefright/codecs/aacenc/inc/qc_main.h +++ b/media/libstagefright/codecs/aacenc/inc/qc_main.h @@ -35,7 +35,7 @@ void QCOutDelete(QC_OUT *hQC, VO_MEM_OPERATOR *pMemOP); Word16 QCNew(QC_STATE *hQC, VO_MEM_OPERATOR *pMemOP); -Word16 QCInit(QC_STATE *hQC, +Word16 QCInit(QC_STATE *hQC, struct QC_INIT *init); void QCDelete(QC_STATE *hQC, VO_MEM_OPERATOR *pMemOP); diff --git a/media/libstagefright/codecs/aacenc/inc/quantize.h b/media/libstagefright/codecs/aacenc/inc/quantize.h index 7dac2bf..1cafef6 100644 --- a/media/libstagefright/codecs/aacenc/inc/quantize.h +++ b/media/libstagefright/codecs/aacenc/inc/quantize.h @@ -28,7 +28,7 @@ #define MAX_QUANT 8191 -void QuantizeSpectrum(Word16 sfbCnt, +void QuantizeSpectrum(Word16 sfbCnt, Word16 maxSfbPerGroup, Word16 sfbPerGroup, Word16 *sfbOffset, Word32 *mdctSpectrum, diff --git a/media/libstagefright/codecs/aacenc/inc/sf_estim.h b/media/libstagefright/codecs/aacenc/inc/sf_estim.h index 11436a2..9039f25 100644 --- a/media/libstagefright/codecs/aacenc/inc/sf_estim.h +++ b/media/libstagefright/codecs/aacenc/inc/sf_estim.h @@ -23,7 +23,7 @@ #ifndef __SF_ESTIM_H__ #define __SF_ESTIM_H__ /* - Scale factor estimation + Scale factor estimation */ #include "psy_const.h" #include "interface.h" diff --git a/media/libstagefright/codecs/aacenc/inc/stat_bits.h b/media/libstagefright/codecs/aacenc/inc/stat_bits.h index fff3d14..9cddc1d 100644 --- a/media/libstagefright/codecs/aacenc/inc/stat_bits.h +++ b/media/libstagefright/codecs/aacenc/inc/stat_bits.h @@ -28,7 +28,7 @@ Word16 countStaticBitdemand(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], PSY_OUT_ELEMENT *psyOutElement, - Word16 nChannels, + Word16 nChannels, Word16 adtsUsed); #endif /* __STAT_BITS_H */ diff --git a/media/libstagefright/codecs/aacenc/inc/tns_param.h b/media/libstagefright/codecs/aacenc/inc/tns_param.h index 78265bb..0aa33c3 100644 --- a/media/libstagefright/codecs/aacenc/inc/tns_param.h +++ b/media/libstagefright/codecs/aacenc/inc/tns_param.h @@ -44,7 +44,7 @@ typedef struct{ }TNS_INFO_TAB; -void GetTnsParam(TNS_CONFIG_TABULATED *tnsConfigTab, +void GetTnsParam(TNS_CONFIG_TABULATED *tnsConfigTab, Word32 bitRate, Word16 channels, Word16 blockType); void GetTnsMaxBands(Word32 samplingRate, Word16 blockType, Word16* tnsMaxSfb); diff --git a/media/libstagefright/codecs/aacenc/inc/transform.h b/media/libstagefright/codecs/aacenc/inc/transform.h index 93d5ffe..fbac7aa 100644 --- a/media/libstagefright/codecs/aacenc/inc/transform.h +++ b/media/libstagefright/codecs/aacenc/inc/transform.h @@ -24,7 +24,7 @@ #define __TRANSFORM_H__ #include "typedef.h" - + void Transform_Real(Word16 *mdctDelayBuffer, Word16 *timeSignal, Word16 chIncrement, /*! channel increment */ diff --git a/media/libstagefright/codecs/aacenc/src/aac_rom.c b/media/libstagefright/codecs/aacenc/src/aac_rom.c index 16b44e0..08792e8 100644 --- a/media/libstagefright/codecs/aacenc/src/aac_rom.c +++ b/media/libstagefright/codecs/aacenc/src/aac_rom.c @@ -24,14 +24,14 @@ #if defined (ARMV5E) && !defined (ARMV7Neon) -/* - * Q30 for 128 and 1024 +/* + * Q30 for 128 and 1024 * * for (i = 0; i < num/4; i++) { * angle = (i + 0.125) * M_PI / num; * x = cos(angle) * (1 << 30); * x = sin(angle) * (1 << 30); - * + * * angle = (num/2 - 1 - i + 0.125) * M_PI / num; * x = cos(angle) * (1 << 30); * x = sin(angle) * (1 << 30); @@ -39,313 +39,313 @@ */ const int cossintab[128 + 1024] = { /* 128 */ - 0x3fffec43, 0x003243f1, 0x015fd4d2, 0x3ffc38d1, 0x3ff9c13a, 0x01c454f5, 0x02f1b755, 0x3feea776, - 0x3fe9b8a9, 0x03562038, 0x0483259d, 0x3fd73a4a, 0x3fcfd50b, 0x04e767c5, 0x0613e1c5, 0x3fb5f4ea, - 0x3fac1a5b, 0x0677edbb, 0x07a3adff, 0x3f8adc77, 0x3f7e8e1e, 0x08077457, 0x09324ca7, 0x3f55f796, - 0x3f473759, 0x0995bdfd, 0x0abf8043, 0x3f174e70, 0x3f061e95, 0x0b228d42, 0x0c4b0b94, 0x3eceeaad, - 0x3ebb4ddb, 0x0cada4f5, 0x0dd4b19a, 0x3e7cd778, 0x3e66d0b4, 0x0e36c82a, 0x0f5c35a3, 0x3e212179, - 0x3e08b42a, 0x0fbdba40, 0x10e15b4e, 0x3dbbd6d4, 0x3da106bd, 0x11423ef0, 0x1263e699, 0x3d4d0728, - 0x3d2fd86c, 0x12c41a4f, 0x13e39be9, 0x3cd4c38b, 0x3cb53aaa, 0x144310dd, 0x15604013, 0x3c531e88, - 0x3c314060, 0x15bee78c, 0x16d99864, 0x3bc82c1f, 0x3ba3fde7, 0x173763c9, 0x184f6aab, 0x3b3401bb, - 0x3b0d8909, 0x18ac4b87, 0x19c17d44, 0x3a96b636, 0x3a6df8f8, 0x1a1d6544, 0x1b2f971e, 0x39f061d2, - 0x39c5664f, 0x1b8a7815, 0x1c997fc4, 0x39411e33, 0x3913eb0e, 0x1cf34baf, 0x1dfeff67, 0x38890663, - 0x3859a292, 0x1e57a86d, 0x1f5fdee6, 0x37c836c2, 0x3796a996, 0x1fb7575c, 0x20bbe7d8, 0x36fecd0e, - 0x36cb1e2a, 0x21122240, 0x2212e492, 0x362ce855, 0x35f71fb1, 0x2267d3a0, 0x2364a02e, 0x3552a8f4, - 0x351acedd, 0x23b836ca, 0x24b0e699, 0x34703095, 0x34364da6, 0x250317df, 0x25f78497, 0x3385a222, - 0x3349bf48, 0x264843d9, 0x273847c8, 0x329321c7, 0x32554840, 0x27878893, 0x2872feb6, 0x3198d4ea, - 0x31590e3e, 0x28c0b4d2, 0x29a778db, 0x3096e223, 0x30553828, 0x29f3984c, 0x2ad586a3, 0x2f8d713a, - 0x2f49ee0f, 0x2b2003ac, 0x2bfcf97c, 0x2e7cab1c, 0x2e37592c, 0x2c45c8a0, 0x2d1da3d5, 0x2d64b9da, + 0x3fffec43, 0x003243f1, 0x015fd4d2, 0x3ffc38d1, 0x3ff9c13a, 0x01c454f5, 0x02f1b755, 0x3feea776, + 0x3fe9b8a9, 0x03562038, 0x0483259d, 0x3fd73a4a, 0x3fcfd50b, 0x04e767c5, 0x0613e1c5, 0x3fb5f4ea, + 0x3fac1a5b, 0x0677edbb, 0x07a3adff, 0x3f8adc77, 0x3f7e8e1e, 0x08077457, 0x09324ca7, 0x3f55f796, + 0x3f473759, 0x0995bdfd, 0x0abf8043, 0x3f174e70, 0x3f061e95, 0x0b228d42, 0x0c4b0b94, 0x3eceeaad, + 0x3ebb4ddb, 0x0cada4f5, 0x0dd4b19a, 0x3e7cd778, 0x3e66d0b4, 0x0e36c82a, 0x0f5c35a3, 0x3e212179, + 0x3e08b42a, 0x0fbdba40, 0x10e15b4e, 0x3dbbd6d4, 0x3da106bd, 0x11423ef0, 0x1263e699, 0x3d4d0728, + 0x3d2fd86c, 0x12c41a4f, 0x13e39be9, 0x3cd4c38b, 0x3cb53aaa, 0x144310dd, 0x15604013, 0x3c531e88, + 0x3c314060, 0x15bee78c, 0x16d99864, 0x3bc82c1f, 0x3ba3fde7, 0x173763c9, 0x184f6aab, 0x3b3401bb, + 0x3b0d8909, 0x18ac4b87, 0x19c17d44, 0x3a96b636, 0x3a6df8f8, 0x1a1d6544, 0x1b2f971e, 0x39f061d2, + 0x39c5664f, 0x1b8a7815, 0x1c997fc4, 0x39411e33, 0x3913eb0e, 0x1cf34baf, 0x1dfeff67, 0x38890663, + 0x3859a292, 0x1e57a86d, 0x1f5fdee6, 0x37c836c2, 0x3796a996, 0x1fb7575c, 0x20bbe7d8, 0x36fecd0e, + 0x36cb1e2a, 0x21122240, 0x2212e492, 0x362ce855, 0x35f71fb1, 0x2267d3a0, 0x2364a02e, 0x3552a8f4, + 0x351acedd, 0x23b836ca, 0x24b0e699, 0x34703095, 0x34364da6, 0x250317df, 0x25f78497, 0x3385a222, + 0x3349bf48, 0x264843d9, 0x273847c8, 0x329321c7, 0x32554840, 0x27878893, 0x2872feb6, 0x3198d4ea, + 0x31590e3e, 0x28c0b4d2, 0x29a778db, 0x3096e223, 0x30553828, 0x29f3984c, 0x2ad586a3, 0x2f8d713a, + 0x2f49ee0f, 0x2b2003ac, 0x2bfcf97c, 0x2e7cab1c, 0x2e37592c, 0x2c45c8a0, 0x2d1da3d5, 0x2d64b9da, /* 1024 */ - 0x3fffffb1, 0x0006487f, 0x002bfb74, 0x3ffff0e3, 0x3fffe705, 0x00388c6e, 0x005e3f4c, 0x3fffba9b, - 0x3fffa6de, 0x006ad03b, 0x009082ea, 0x3fff5cd8, 0x3fff3f3c, 0x009d13c5, 0x00c2c62f, 0x3ffed79b, - 0x3ffeb021, 0x00cf56ef, 0x00f508fc, 0x3ffe2ae5, 0x3ffdf98c, 0x01019998, 0x01274b31, 0x3ffd56b5, - 0x3ffd1b7e, 0x0133dba3, 0x01598cb1, 0x3ffc5b0c, 0x3ffc15f7, 0x01661cf0, 0x018bcd5b, 0x3ffb37ec, - 0x3ffae8f9, 0x01985d60, 0x01be0d11, 0x3ff9ed53, 0x3ff99483, 0x01ca9cd4, 0x01f04bb4, 0x3ff87b44, - 0x3ff81896, 0x01fcdb2e, 0x02228924, 0x3ff6e1bf, 0x3ff67534, 0x022f184d, 0x0254c544, 0x3ff520c5, - 0x3ff4aa5d, 0x02615414, 0x0286fff3, 0x3ff33858, 0x3ff2b813, 0x02938e62, 0x02b93914, 0x3ff12878, - 0x3ff09e56, 0x02c5c71a, 0x02eb7086, 0x3feef126, 0x3fee5d28, 0x02f7fe1c, 0x031da62b, 0x3fec9265, - 0x3febf48b, 0x032a3349, 0x034fd9e5, 0x3fea0c35, 0x3fe96480, 0x035c6682, 0x03820b93, 0x3fe75e98, - 0x3fe6ad08, 0x038e97a9, 0x03b43b17, 0x3fe48990, 0x3fe3ce26, 0x03c0c69e, 0x03e66852, 0x3fe18d1f, - 0x3fe0c7da, 0x03f2f342, 0x04189326, 0x3fde6945, 0x3fdd9a27, 0x04251d77, 0x044abb73, 0x3fdb1e06, - 0x3fda450f, 0x0457451d, 0x047ce11a, 0x3fd7ab64, 0x3fd6c894, 0x04896a16, 0x04af03fc, 0x3fd4115f, - 0x3fd324b7, 0x04bb8c42, 0x04e123fa, 0x3fd04ffc, 0x3fcf597c, 0x04edab83, 0x051340f6, 0x3fcc673b, - 0x3fcb66e4, 0x051fc7b9, 0x05455ad1, 0x3fc8571f, 0x3fc74cf3, 0x0551e0c7, 0x0577716b, 0x3fc41fac, - 0x3fc30baa, 0x0583f68c, 0x05a984a6, 0x3fbfc0e3, 0x3fbea30c, 0x05b608eb, 0x05db9463, 0x3fbb3ac7, - 0x3fba131b, 0x05e817c3, 0x060da083, 0x3fb68d5b, 0x3fb55bdc, 0x061a22f7, 0x063fa8e7, 0x3fb1b8a2, - 0x3fb07d50, 0x064c2a67, 0x0671ad71, 0x3facbc9f, 0x3fab777b, 0x067e2df5, 0x06a3ae00, 0x3fa79954, - 0x3fa64a5f, 0x06b02d81, 0x06d5aa77, 0x3fa24ec6, 0x3fa0f600, 0x06e228ee, 0x0707a2b7, 0x3f9cdcf7, - 0x3f9b7a62, 0x0714201b, 0x073996a1, 0x3f9743eb, 0x3f95d787, 0x074612eb, 0x076b8616, 0x3f9183a5, - 0x3f900d72, 0x0778013d, 0x079d70f7, 0x3f8b9c28, 0x3f8a1c29, 0x07a9eaf5, 0x07cf5726, 0x3f858d79, - 0x3f8403ae, 0x07dbcff2, 0x08013883, 0x3f7f579b, 0x3f7dc405, 0x080db016, 0x083314f1, 0x3f78fa92, - 0x3f775d31, 0x083f8b43, 0x0864ec4f, 0x3f727661, 0x3f70cf38, 0x08716159, 0x0896be80, 0x3f6bcb0e, - 0x3f6a1a1c, 0x08a3323a, 0x08c88b65, 0x3f64f89b, 0x3f633de2, 0x08d4fdc6, 0x08fa52de, 0x3f5dff0e, - 0x3f5c3a8f, 0x0906c3e0, 0x092c14ce, 0x3f56de6a, 0x3f551026, 0x09388469, 0x095dd116, 0x3f4f96b4, - 0x3f4dbeac, 0x096a3f42, 0x098f8796, 0x3f4827f0, 0x3f464626, 0x099bf44c, 0x09c13831, 0x3f409223, - 0x3f3ea697, 0x09cda368, 0x09f2e2c7, 0x3f38d552, 0x3f36e006, 0x09ff4c78, 0x0a24873a, 0x3f30f181, - 0x3f2ef276, 0x0a30ef5e, 0x0a56256c, 0x3f28e6b6, 0x3f26ddec, 0x0a628bfa, 0x0a87bd3d, 0x3f20b4f5, - 0x3f1ea26e, 0x0a94222f, 0x0ab94e8f, 0x3f185c43, 0x3f164001, 0x0ac5b1dc, 0x0aead944, 0x3f0fdca5, - 0x3f0db6a9, 0x0af73ae5, 0x0b1c5d3d, 0x3f073621, 0x3f05066d, 0x0b28bd2a, 0x0b4dda5c, 0x3efe68bc, - 0x3efc2f50, 0x0b5a388d, 0x0b7f5081, 0x3ef5747b, 0x3ef3315a, 0x0b8bacf0, 0x0bb0bf8f, 0x3eec5965, - 0x3eea0c8e, 0x0bbd1a33, 0x0be22766, 0x3ee3177e, 0x3ee0c0f4, 0x0bee8038, 0x0c1387e9, 0x3ed9aecc, - 0x3ed74e91, 0x0c1fdee1, 0x0c44e0f9, 0x3ed01f55, 0x3ecdb56a, 0x0c513610, 0x0c763278, 0x3ec66920, - 0x3ec3f585, 0x0c8285a5, 0x0ca77c47, 0x3ebc8c31, 0x3eba0ee9, 0x0cb3cd84, 0x0cd8be47, 0x3eb2888f, - 0x3eb0019c, 0x0ce50d8c, 0x0d09f85b, 0x3ea85e41, 0x3ea5cda3, 0x0d1645a0, 0x0d3b2a64, 0x3e9e0d4c, - 0x3e9b7306, 0x0d4775a1, 0x0d6c5443, 0x3e9395b7, 0x3e90f1ca, 0x0d789d71, 0x0d9d75db, 0x3e88f788, - 0x3e8649f5, 0x0da9bcf2, 0x0dce8f0d, 0x3e7e32c6, 0x3e7b7b90, 0x0ddad406, 0x0dff9fba, 0x3e734778, - 0x3e70869f, 0x0e0be28e, 0x0e30a7c5, 0x3e6835a4, 0x3e656b2b, 0x0e3ce86b, 0x0e61a70f, 0x3e5cfd51, - 0x3e5a2939, 0x0e6de580, 0x0e929d7a, 0x3e519e86, 0x3e4ec0d1, 0x0e9ed9af, 0x0ec38ae8, 0x3e46194a, - 0x3e4331fa, 0x0ecfc4d9, 0x0ef46f3b, 0x3e3a6da4, 0x3e377cbb, 0x0f00a6df, 0x0f254a53, 0x3e2e9b9c, - 0x3e2ba11b, 0x0f317fa5, 0x0f561c15, 0x3e22a338, 0x3e1f9f21, 0x0f624f0c, 0x0f86e460, 0x3e168480, - 0x3e1376d5, 0x0f9314f5, 0x0fb7a317, 0x3e0a3f7b, 0x3e07283f, 0x0fc3d143, 0x0fe8581d, 0x3dfdd432, - 0x3dfab365, 0x0ff483d7, 0x10190352, 0x3df142ab, 0x3dee1851, 0x10252c94, 0x1049a49a, 0x3de48aef, - 0x3de15708, 0x1055cb5b, 0x107a3bd5, 0x3dd7ad05, 0x3dd46f94, 0x1086600e, 0x10aac8e6, 0x3dcaa8f5, - 0x3dc761fc, 0x10b6ea90, 0x10db4baf, 0x3dbd7ec7, 0x3dba2e48, 0x10e76ac3, 0x110bc413, 0x3db02e84, - 0x3dacd481, 0x1117e088, 0x113c31f3, 0x3da2b834, 0x3d9f54af, 0x11484bc2, 0x116c9531, 0x3d951bde, - 0x3d91aed9, 0x1178ac53, 0x119cedaf, 0x3d87598c, 0x3d83e309, 0x11a9021d, 0x11cd3b50, 0x3d797145, - 0x3d75f147, 0x11d94d02, 0x11fd7df6, 0x3d6b6313, 0x3d67d99b, 0x12098ce5, 0x122db583, 0x3d5d2efe, - 0x3d599c0e, 0x1239c1a7, 0x125de1da, 0x3d4ed50f, 0x3d4b38aa, 0x1269eb2b, 0x128e02dc, 0x3d40554e, - 0x3d3caf76, 0x129a0954, 0x12be186c, 0x3d31afc5, 0x3d2e007c, 0x12ca1c03, 0x12ee226c, 0x3d22e47c, - 0x3d1f2bc5, 0x12fa231b, 0x131e20c0, 0x3d13f37e, 0x3d10315a, 0x132a1e7e, 0x134e1348, 0x3d04dcd2, - 0x3d011145, 0x135a0e0e, 0x137df9e7, 0x3cf5a082, 0x3cf1cb8e, 0x1389f1af, 0x13add481, 0x3ce63e98, - 0x3ce2603f, 0x13b9c943, 0x13dda2f7, 0x3cd6b71e, 0x3cd2cf62, 0x13e994ab, 0x140d652c, 0x3cc70a1c, - 0x3cc318ff, 0x141953cb, 0x143d1b02, 0x3cb7379c, 0x3cb33d22, 0x14490685, 0x146cc45c, 0x3ca73fa9, - 0x3ca33bd3, 0x1478acbc, 0x149c611d, 0x3c97224c, 0x3c93151d, 0x14a84652, 0x14cbf127, 0x3c86df8e, - 0x3c82c909, 0x14d7d32a, 0x14fb745e, 0x3c76777b, 0x3c7257a2, 0x15075327, 0x152aeaa3, 0x3c65ea1c, - 0x3c61c0f1, 0x1536c62b, 0x155a53d9, 0x3c55377b, 0x3c510501, 0x15662c18, 0x1589afe3, 0x3c445fa2, - 0x3c4023dd, 0x159584d3, 0x15b8fea4, 0x3c33629d, 0x3c2f1d8e, 0x15c4d03e, 0x15e83fff, 0x3c224075, - 0x3c1df21f, 0x15f40e3a, 0x161773d6, 0x3c10f935, 0x3c0ca19b, 0x16233eac, 0x16469a0d, 0x3bff8ce8, - 0x3bfb2c0c, 0x16526176, 0x1675b286, 0x3bedfb99, 0x3be9917e, 0x1681767c, 0x16a4bd25, 0x3bdc4552, - 0x3bd7d1fa, 0x16b07d9f, 0x16d3b9cc, 0x3bca6a1d, 0x3bc5ed8d, 0x16df76c3, 0x1702a85e, 0x3bb86a08, - 0x3bb3e440, 0x170e61cc, 0x173188be, 0x3ba6451b, 0x3ba1b620, 0x173d3e9b, 0x17605ad0, 0x3b93fb63, - 0x3b8f6337, 0x176c0d15, 0x178f1e76, 0x3b818ceb, 0x3b7ceb90, 0x179acd1c, 0x17bdd394, 0x3b6ef9be, - 0x3b6a4f38, 0x17c97e93, 0x17ec7a0d, 0x3b5c41e8, 0x3b578e39, 0x17f8215e, 0x181b11c4, 0x3b496574, - 0x3b44a8a0, 0x1826b561, 0x18499a9d, 0x3b36646e, 0x3b319e77, 0x18553a7d, 0x1878147a, 0x3b233ee1, - 0x3b1e6fca, 0x1883b097, 0x18a67f3f, 0x3b0ff4d9, 0x3b0b1ca6, 0x18b21791, 0x18d4dad0, 0x3afc8663, - 0x3af7a516, 0x18e06f50, 0x1903270f, 0x3ae8f38b, 0x3ae40926, 0x190eb7b7, 0x193163e1, 0x3ad53c5b, - 0x3ad048e3, 0x193cf0a9, 0x195f9128, 0x3ac160e1, 0x3abc6458, 0x196b1a09, 0x198daec8, 0x3aad6129, - 0x3aa85b92, 0x199933bb, 0x19bbbca6, 0x3a993d3e, 0x3a942e9d, 0x19c73da3, 0x19e9baa3, 0x3a84f52f, - 0x3a7fdd86, 0x19f537a4, 0x1a17a8a5, 0x3a708906, 0x3a6b6859, 0x1a2321a2, 0x1a45868e, 0x3a5bf8d1, - 0x3a56cf23, 0x1a50fb81, 0x1a735442, 0x3a47449c, 0x3a4211f0, 0x1a7ec524, 0x1aa111a6, 0x3a326c74, - 0x3a2d30cd, 0x1aac7e6f, 0x1acebe9d, 0x3a1d7066, 0x3a182bc8, 0x1ada2746, 0x1afc5b0a, 0x3a08507f, - 0x3a0302ed, 0x1b07bf8c, 0x1b29e6d2, 0x39f30ccc, 0x39edb649, 0x1b354727, 0x1b5761d8, 0x39dda55a, - 0x39d845e9, 0x1b62bdf8, 0x1b84cc01, 0x39c81a36, 0x39c2b1da, 0x1b9023e5, 0x1bb22530, 0x39b26b6d, - 0x39acfa2b, 0x1bbd78d2, 0x1bdf6d4a, 0x399c990d, 0x39971ee7, 0x1beabca1, 0x1c0ca432, 0x3986a324, - 0x3981201e, 0x1c17ef39, 0x1c39c9cd, 0x397089bf, 0x396afddc, 0x1c45107c, 0x1c66ddfe, 0x395a4ceb, - 0x3954b82e, 0x1c72204f, 0x1c93e0ab, 0x3943ecb6, 0x393e4f23, 0x1c9f1e96, 0x1cc0d1b6, 0x392d692f, - 0x3927c2c9, 0x1ccc0b35, 0x1cedb106, 0x3916c262, 0x3911132d, 0x1cf8e611, 0x1d1a7e7d, 0x38fff85e, - 0x38fa405e, 0x1d25af0d, 0x1d473a00, 0x38e90b31, 0x38e34a69, 0x1d52660f, 0x1d73e374, 0x38d1fae9, - 0x38cc315d, 0x1d7f0afb, 0x1da07abc, 0x38bac795, 0x38b4f547, 0x1dab9db5, 0x1dccffbf, 0x38a37142, - 0x389d9637, 0x1dd81e21, 0x1df9725f, 0x388bf7ff, 0x3886143b, 0x1e048c24, 0x1e25d282, 0x38745bdb, - 0x386e6f60, 0x1e30e7a4, 0x1e52200c, 0x385c9ce3, 0x3856a7b6, 0x1e5d3084, 0x1e7e5ae2, 0x3844bb28, - 0x383ebd4c, 0x1e8966a8, 0x1eaa82e9, 0x382cb6b7, 0x3826b030, 0x1eb589f7, 0x1ed69805, 0x38148f9f, - 0x380e8071, 0x1ee19a54, 0x1f029a1c, 0x37fc45ef, 0x37f62e1d, 0x1f0d97a5, 0x1f2e8911, 0x37e3d9b7, - 0x37ddb945, 0x1f3981ce, 0x1f5a64cb, 0x37cb4b04, 0x37c521f6, 0x1f6558b5, 0x1f862d2d, 0x37b299e7, - 0x37ac6841, 0x1f911c3d, 0x1fb1e21d, 0x3799c66f, 0x37938c34, 0x1fbccc4d, 0x1fdd8381, 0x3780d0aa, - 0x377a8ddf, 0x1fe868c8, 0x2009113c, 0x3767b8a9, 0x37616d51, 0x2013f196, 0x20348b35, 0x374e7e7b, - 0x37482a9a, 0x203f6699, 0x205ff14f, 0x3735222f, 0x372ec5c9, 0x206ac7b8, 0x208b4372, 0x371ba3d4, - 0x37153eee, 0x209614d9, 0x20b68181, 0x3702037c, 0x36fb9618, 0x20c14ddf, 0x20e1ab63, 0x36e84135, - 0x36e1cb58, 0x20ec72b1, 0x210cc0fc, 0x36ce5d10, 0x36c7debd, 0x21178334, 0x2137c232, 0x36b4571b, - 0x36add058, 0x21427f4d, 0x2162aeea, 0x369a2f69, 0x3693a038, 0x216d66e2, 0x218d870b, 0x367fe608, - 0x36794e6e, 0x219839d8, 0x21b84a79, 0x36657b08, 0x365edb09, 0x21c2f815, 0x21e2f91a, 0x364aee7b, - 0x3644461b, 0x21eda17f, 0x220d92d4, 0x36304070, 0x36298fb4, 0x221835fb, 0x2238178d, 0x361570f8, - 0x360eb7e3, 0x2242b56f, 0x22628729, 0x35fa8023, 0x35f3beba, 0x226d1fc1, 0x228ce191, 0x35df6e03, - 0x35d8a449, 0x229774d7, 0x22b726a8, 0x35c43aa7, 0x35bd68a1, 0x22c1b496, 0x22e15655, 0x35a8e621, - 0x35a20bd3, 0x22ebdee5, 0x230b707e, 0x358d7081, 0x35868def, 0x2315f3a8, 0x23357509, 0x3571d9d9, - 0x356aef08, 0x233ff2c8, 0x235f63dc, 0x35562239, 0x354f2f2c, 0x2369dc29, 0x23893cdd, 0x353a49b2, - 0x35334e6f, 0x2393afb2, 0x23b2fff3, 0x351e5056, 0x35174ce0, 0x23bd6d48, 0x23dcad03, 0x35023636, - 0x34fb2a92, 0x23e714d3, 0x240643f4, 0x34e5fb63, 0x34dee795, 0x2410a639, 0x242fc4ad, 0x34c99fef, - 0x34c283fb, 0x243a215f, 0x24592f13, 0x34ad23eb, 0x34a5ffd5, 0x2463862c, 0x2482830d, 0x34908768, - 0x34895b36, 0x248cd487, 0x24abc082, 0x3473ca79, 0x346c962f, 0x24b60c57, 0x24d4e757, 0x3456ed2f, - 0x344fb0d1, 0x24df2d81, 0x24fdf775, 0x3439ef9c, 0x3432ab2e, 0x250837ed, 0x2526f0c1, 0x341cd1d2, - 0x34158559, 0x25312b81, 0x254fd323, 0x33ff93e2, 0x33f83f62, 0x255a0823, 0x25789e80, 0x33e235df, - 0x33dad95e, 0x2582cdbc, 0x25a152c0, 0x33c4b7db, 0x33bd535c, 0x25ab7c30, 0x25c9efca, 0x33a719e8, - 0x339fad70, 0x25d41369, 0x25f27584, 0x33895c18, 0x3381e7ac, 0x25fc934b, 0x261ae3d6, 0x336b7e7e, - 0x33640223, 0x2624fbbf, 0x26433aa7, 0x334d812d, 0x3345fce6, 0x264d4cac, 0x266b79dd, 0x332f6435, - 0x3327d808, 0x267585f8, 0x2693a161, 0x331127ab, 0x3309939c, 0x269da78b, 0x26bbb119, 0x32f2cba1, - 0x32eb2fb5, 0x26c5b14c, 0x26e3a8ec, 0x32d45029, 0x32ccac64, 0x26eda322, 0x270b88c2, 0x32b5b557, - 0x32ae09be, 0x27157cf5, 0x27335082, 0x3296fb3d, 0x328f47d5, 0x273d3eac, 0x275b0014, 0x327821ee, - 0x327066bc, 0x2764e82f, 0x27829760, 0x3259297d, 0x32516686, 0x278c7965, 0x27aa164c, 0x323a11fe, - 0x32324746, 0x27b3f235, 0x27d17cc1, 0x321adb83, 0x3213090f, 0x27db5288, 0x27f8caa5, 0x31fb8620, - 0x31f3abf5, 0x28029a45, 0x281fffe2, 0x31dc11e8, 0x31d4300b, 0x2829c954, 0x28471c5e, 0x31bc7eee, - 0x31b49564, 0x2850df9d, 0x286e2002, 0x319ccd46, 0x3194dc14, 0x2877dd07, 0x28950ab6, 0x317cfd04, - 0x3175042e, 0x289ec17a, 0x28bbdc61, 0x315d0e3b, 0x31550dc6, 0x28c58cdf, 0x28e294eb, 0x313d00ff, - 0x3134f8f1, 0x28ec3f1e, 0x2909343e, 0x311cd564, 0x3114c5c0, 0x2912d81f, 0x292fba40, 0x30fc8b7d, - 0x30f47449, 0x293957c9, 0x295626da, 0x30dc235e, 0x30d404a0, 0x295fbe06, 0x297c79f5, 0x30bb9d1c, - 0x30b376d8, 0x29860abd, 0x29a2b378, 0x309af8ca, 0x3092cb05, 0x29ac3dd7, 0x29c8d34d, 0x307a367c, - 0x3072013c, 0x29d2573c, 0x29eed95b, 0x30595648, 0x30511991, 0x29f856d5, 0x2a14c58b, 0x30385840, - 0x30301418, 0x2a1e3c8a, 0x2a3a97c7, 0x30173c7a, 0x300ef0e5, 0x2a440844, 0x2a604ff5, 0x2ff6030a, - 0x2fedb00d, 0x2a69b9ec, 0x2a85ee00, 0x2fd4ac04, 0x2fcc51a5, 0x2a8f516b, 0x2aab71d0, 0x2fb3377c, - 0x2faad5c1, 0x2ab4cea9, 0x2ad0db4e, 0x2f91a589, 0x2f893c75, 0x2ada318e, 0x2af62a63, 0x2f6ff63d, - 0x2f6785d7, 0x2aff7a05, 0x2b1b5ef8, 0x2f4e29af, 0x2f45b1fb, 0x2b24a7f6, 0x2b4078f5, 0x2f2c3ff2, - 0x2f23c0f6, 0x2b49bb4a, 0x2b657844, 0x2f0a391d, 0x2f01b2de, 0x2b6eb3ea, 0x2b8a5cce, 0x2ee81543, - 0x2edf87c6, 0x2b9391c0, 0x2baf267d, 0x2ec5d479, 0x2ebd3fc4, 0x2bb854b4, 0x2bd3d53a, 0x2ea376d6, - 0x2e9adaee, 0x2bdcfcb0, 0x2bf868ed, 0x2e80fc6e, 0x2e785958, 0x2c01899e, 0x2c1ce181, 0x2e5e6556, - 0x2e55bb17, 0x2c25fb66, 0x2c413edf, 0x2e3bb1a4, 0x2e330042, 0x2c4a51f3, 0x2c6580f1, 0x2e18e16d, - 0x2e1028ed, 0x2c6e8d2e, 0x2c89a79f, 0x2df5f4c7, 0x2ded352f, 0x2c92ad01, 0x2cadb2d5, 0x2dd2ebc7, - 0x2dca251c, 0x2cb6b155, 0x2cd1a27b, 0x2dafc683, 0x2da6f8ca, 0x2cda9a14, 0x2cf5767c, 0x2d8c8510, + 0x3fffffb1, 0x0006487f, 0x002bfb74, 0x3ffff0e3, 0x3fffe705, 0x00388c6e, 0x005e3f4c, 0x3fffba9b, + 0x3fffa6de, 0x006ad03b, 0x009082ea, 0x3fff5cd8, 0x3fff3f3c, 0x009d13c5, 0x00c2c62f, 0x3ffed79b, + 0x3ffeb021, 0x00cf56ef, 0x00f508fc, 0x3ffe2ae5, 0x3ffdf98c, 0x01019998, 0x01274b31, 0x3ffd56b5, + 0x3ffd1b7e, 0x0133dba3, 0x01598cb1, 0x3ffc5b0c, 0x3ffc15f7, 0x01661cf0, 0x018bcd5b, 0x3ffb37ec, + 0x3ffae8f9, 0x01985d60, 0x01be0d11, 0x3ff9ed53, 0x3ff99483, 0x01ca9cd4, 0x01f04bb4, 0x3ff87b44, + 0x3ff81896, 0x01fcdb2e, 0x02228924, 0x3ff6e1bf, 0x3ff67534, 0x022f184d, 0x0254c544, 0x3ff520c5, + 0x3ff4aa5d, 0x02615414, 0x0286fff3, 0x3ff33858, 0x3ff2b813, 0x02938e62, 0x02b93914, 0x3ff12878, + 0x3ff09e56, 0x02c5c71a, 0x02eb7086, 0x3feef126, 0x3fee5d28, 0x02f7fe1c, 0x031da62b, 0x3fec9265, + 0x3febf48b, 0x032a3349, 0x034fd9e5, 0x3fea0c35, 0x3fe96480, 0x035c6682, 0x03820b93, 0x3fe75e98, + 0x3fe6ad08, 0x038e97a9, 0x03b43b17, 0x3fe48990, 0x3fe3ce26, 0x03c0c69e, 0x03e66852, 0x3fe18d1f, + 0x3fe0c7da, 0x03f2f342, 0x04189326, 0x3fde6945, 0x3fdd9a27, 0x04251d77, 0x044abb73, 0x3fdb1e06, + 0x3fda450f, 0x0457451d, 0x047ce11a, 0x3fd7ab64, 0x3fd6c894, 0x04896a16, 0x04af03fc, 0x3fd4115f, + 0x3fd324b7, 0x04bb8c42, 0x04e123fa, 0x3fd04ffc, 0x3fcf597c, 0x04edab83, 0x051340f6, 0x3fcc673b, + 0x3fcb66e4, 0x051fc7b9, 0x05455ad1, 0x3fc8571f, 0x3fc74cf3, 0x0551e0c7, 0x0577716b, 0x3fc41fac, + 0x3fc30baa, 0x0583f68c, 0x05a984a6, 0x3fbfc0e3, 0x3fbea30c, 0x05b608eb, 0x05db9463, 0x3fbb3ac7, + 0x3fba131b, 0x05e817c3, 0x060da083, 0x3fb68d5b, 0x3fb55bdc, 0x061a22f7, 0x063fa8e7, 0x3fb1b8a2, + 0x3fb07d50, 0x064c2a67, 0x0671ad71, 0x3facbc9f, 0x3fab777b, 0x067e2df5, 0x06a3ae00, 0x3fa79954, + 0x3fa64a5f, 0x06b02d81, 0x06d5aa77, 0x3fa24ec6, 0x3fa0f600, 0x06e228ee, 0x0707a2b7, 0x3f9cdcf7, + 0x3f9b7a62, 0x0714201b, 0x073996a1, 0x3f9743eb, 0x3f95d787, 0x074612eb, 0x076b8616, 0x3f9183a5, + 0x3f900d72, 0x0778013d, 0x079d70f7, 0x3f8b9c28, 0x3f8a1c29, 0x07a9eaf5, 0x07cf5726, 0x3f858d79, + 0x3f8403ae, 0x07dbcff2, 0x08013883, 0x3f7f579b, 0x3f7dc405, 0x080db016, 0x083314f1, 0x3f78fa92, + 0x3f775d31, 0x083f8b43, 0x0864ec4f, 0x3f727661, 0x3f70cf38, 0x08716159, 0x0896be80, 0x3f6bcb0e, + 0x3f6a1a1c, 0x08a3323a, 0x08c88b65, 0x3f64f89b, 0x3f633de2, 0x08d4fdc6, 0x08fa52de, 0x3f5dff0e, + 0x3f5c3a8f, 0x0906c3e0, 0x092c14ce, 0x3f56de6a, 0x3f551026, 0x09388469, 0x095dd116, 0x3f4f96b4, + 0x3f4dbeac, 0x096a3f42, 0x098f8796, 0x3f4827f0, 0x3f464626, 0x099bf44c, 0x09c13831, 0x3f409223, + 0x3f3ea697, 0x09cda368, 0x09f2e2c7, 0x3f38d552, 0x3f36e006, 0x09ff4c78, 0x0a24873a, 0x3f30f181, + 0x3f2ef276, 0x0a30ef5e, 0x0a56256c, 0x3f28e6b6, 0x3f26ddec, 0x0a628bfa, 0x0a87bd3d, 0x3f20b4f5, + 0x3f1ea26e, 0x0a94222f, 0x0ab94e8f, 0x3f185c43, 0x3f164001, 0x0ac5b1dc, 0x0aead944, 0x3f0fdca5, + 0x3f0db6a9, 0x0af73ae5, 0x0b1c5d3d, 0x3f073621, 0x3f05066d, 0x0b28bd2a, 0x0b4dda5c, 0x3efe68bc, + 0x3efc2f50, 0x0b5a388d, 0x0b7f5081, 0x3ef5747b, 0x3ef3315a, 0x0b8bacf0, 0x0bb0bf8f, 0x3eec5965, + 0x3eea0c8e, 0x0bbd1a33, 0x0be22766, 0x3ee3177e, 0x3ee0c0f4, 0x0bee8038, 0x0c1387e9, 0x3ed9aecc, + 0x3ed74e91, 0x0c1fdee1, 0x0c44e0f9, 0x3ed01f55, 0x3ecdb56a, 0x0c513610, 0x0c763278, 0x3ec66920, + 0x3ec3f585, 0x0c8285a5, 0x0ca77c47, 0x3ebc8c31, 0x3eba0ee9, 0x0cb3cd84, 0x0cd8be47, 0x3eb2888f, + 0x3eb0019c, 0x0ce50d8c, 0x0d09f85b, 0x3ea85e41, 0x3ea5cda3, 0x0d1645a0, 0x0d3b2a64, 0x3e9e0d4c, + 0x3e9b7306, 0x0d4775a1, 0x0d6c5443, 0x3e9395b7, 0x3e90f1ca, 0x0d789d71, 0x0d9d75db, 0x3e88f788, + 0x3e8649f5, 0x0da9bcf2, 0x0dce8f0d, 0x3e7e32c6, 0x3e7b7b90, 0x0ddad406, 0x0dff9fba, 0x3e734778, + 0x3e70869f, 0x0e0be28e, 0x0e30a7c5, 0x3e6835a4, 0x3e656b2b, 0x0e3ce86b, 0x0e61a70f, 0x3e5cfd51, + 0x3e5a2939, 0x0e6de580, 0x0e929d7a, 0x3e519e86, 0x3e4ec0d1, 0x0e9ed9af, 0x0ec38ae8, 0x3e46194a, + 0x3e4331fa, 0x0ecfc4d9, 0x0ef46f3b, 0x3e3a6da4, 0x3e377cbb, 0x0f00a6df, 0x0f254a53, 0x3e2e9b9c, + 0x3e2ba11b, 0x0f317fa5, 0x0f561c15, 0x3e22a338, 0x3e1f9f21, 0x0f624f0c, 0x0f86e460, 0x3e168480, + 0x3e1376d5, 0x0f9314f5, 0x0fb7a317, 0x3e0a3f7b, 0x3e07283f, 0x0fc3d143, 0x0fe8581d, 0x3dfdd432, + 0x3dfab365, 0x0ff483d7, 0x10190352, 0x3df142ab, 0x3dee1851, 0x10252c94, 0x1049a49a, 0x3de48aef, + 0x3de15708, 0x1055cb5b, 0x107a3bd5, 0x3dd7ad05, 0x3dd46f94, 0x1086600e, 0x10aac8e6, 0x3dcaa8f5, + 0x3dc761fc, 0x10b6ea90, 0x10db4baf, 0x3dbd7ec7, 0x3dba2e48, 0x10e76ac3, 0x110bc413, 0x3db02e84, + 0x3dacd481, 0x1117e088, 0x113c31f3, 0x3da2b834, 0x3d9f54af, 0x11484bc2, 0x116c9531, 0x3d951bde, + 0x3d91aed9, 0x1178ac53, 0x119cedaf, 0x3d87598c, 0x3d83e309, 0x11a9021d, 0x11cd3b50, 0x3d797145, + 0x3d75f147, 0x11d94d02, 0x11fd7df6, 0x3d6b6313, 0x3d67d99b, 0x12098ce5, 0x122db583, 0x3d5d2efe, + 0x3d599c0e, 0x1239c1a7, 0x125de1da, 0x3d4ed50f, 0x3d4b38aa, 0x1269eb2b, 0x128e02dc, 0x3d40554e, + 0x3d3caf76, 0x129a0954, 0x12be186c, 0x3d31afc5, 0x3d2e007c, 0x12ca1c03, 0x12ee226c, 0x3d22e47c, + 0x3d1f2bc5, 0x12fa231b, 0x131e20c0, 0x3d13f37e, 0x3d10315a, 0x132a1e7e, 0x134e1348, 0x3d04dcd2, + 0x3d011145, 0x135a0e0e, 0x137df9e7, 0x3cf5a082, 0x3cf1cb8e, 0x1389f1af, 0x13add481, 0x3ce63e98, + 0x3ce2603f, 0x13b9c943, 0x13dda2f7, 0x3cd6b71e, 0x3cd2cf62, 0x13e994ab, 0x140d652c, 0x3cc70a1c, + 0x3cc318ff, 0x141953cb, 0x143d1b02, 0x3cb7379c, 0x3cb33d22, 0x14490685, 0x146cc45c, 0x3ca73fa9, + 0x3ca33bd3, 0x1478acbc, 0x149c611d, 0x3c97224c, 0x3c93151d, 0x14a84652, 0x14cbf127, 0x3c86df8e, + 0x3c82c909, 0x14d7d32a, 0x14fb745e, 0x3c76777b, 0x3c7257a2, 0x15075327, 0x152aeaa3, 0x3c65ea1c, + 0x3c61c0f1, 0x1536c62b, 0x155a53d9, 0x3c55377b, 0x3c510501, 0x15662c18, 0x1589afe3, 0x3c445fa2, + 0x3c4023dd, 0x159584d3, 0x15b8fea4, 0x3c33629d, 0x3c2f1d8e, 0x15c4d03e, 0x15e83fff, 0x3c224075, + 0x3c1df21f, 0x15f40e3a, 0x161773d6, 0x3c10f935, 0x3c0ca19b, 0x16233eac, 0x16469a0d, 0x3bff8ce8, + 0x3bfb2c0c, 0x16526176, 0x1675b286, 0x3bedfb99, 0x3be9917e, 0x1681767c, 0x16a4bd25, 0x3bdc4552, + 0x3bd7d1fa, 0x16b07d9f, 0x16d3b9cc, 0x3bca6a1d, 0x3bc5ed8d, 0x16df76c3, 0x1702a85e, 0x3bb86a08, + 0x3bb3e440, 0x170e61cc, 0x173188be, 0x3ba6451b, 0x3ba1b620, 0x173d3e9b, 0x17605ad0, 0x3b93fb63, + 0x3b8f6337, 0x176c0d15, 0x178f1e76, 0x3b818ceb, 0x3b7ceb90, 0x179acd1c, 0x17bdd394, 0x3b6ef9be, + 0x3b6a4f38, 0x17c97e93, 0x17ec7a0d, 0x3b5c41e8, 0x3b578e39, 0x17f8215e, 0x181b11c4, 0x3b496574, + 0x3b44a8a0, 0x1826b561, 0x18499a9d, 0x3b36646e, 0x3b319e77, 0x18553a7d, 0x1878147a, 0x3b233ee1, + 0x3b1e6fca, 0x1883b097, 0x18a67f3f, 0x3b0ff4d9, 0x3b0b1ca6, 0x18b21791, 0x18d4dad0, 0x3afc8663, + 0x3af7a516, 0x18e06f50, 0x1903270f, 0x3ae8f38b, 0x3ae40926, 0x190eb7b7, 0x193163e1, 0x3ad53c5b, + 0x3ad048e3, 0x193cf0a9, 0x195f9128, 0x3ac160e1, 0x3abc6458, 0x196b1a09, 0x198daec8, 0x3aad6129, + 0x3aa85b92, 0x199933bb, 0x19bbbca6, 0x3a993d3e, 0x3a942e9d, 0x19c73da3, 0x19e9baa3, 0x3a84f52f, + 0x3a7fdd86, 0x19f537a4, 0x1a17a8a5, 0x3a708906, 0x3a6b6859, 0x1a2321a2, 0x1a45868e, 0x3a5bf8d1, + 0x3a56cf23, 0x1a50fb81, 0x1a735442, 0x3a47449c, 0x3a4211f0, 0x1a7ec524, 0x1aa111a6, 0x3a326c74, + 0x3a2d30cd, 0x1aac7e6f, 0x1acebe9d, 0x3a1d7066, 0x3a182bc8, 0x1ada2746, 0x1afc5b0a, 0x3a08507f, + 0x3a0302ed, 0x1b07bf8c, 0x1b29e6d2, 0x39f30ccc, 0x39edb649, 0x1b354727, 0x1b5761d8, 0x39dda55a, + 0x39d845e9, 0x1b62bdf8, 0x1b84cc01, 0x39c81a36, 0x39c2b1da, 0x1b9023e5, 0x1bb22530, 0x39b26b6d, + 0x39acfa2b, 0x1bbd78d2, 0x1bdf6d4a, 0x399c990d, 0x39971ee7, 0x1beabca1, 0x1c0ca432, 0x3986a324, + 0x3981201e, 0x1c17ef39, 0x1c39c9cd, 0x397089bf, 0x396afddc, 0x1c45107c, 0x1c66ddfe, 0x395a4ceb, + 0x3954b82e, 0x1c72204f, 0x1c93e0ab, 0x3943ecb6, 0x393e4f23, 0x1c9f1e96, 0x1cc0d1b6, 0x392d692f, + 0x3927c2c9, 0x1ccc0b35, 0x1cedb106, 0x3916c262, 0x3911132d, 0x1cf8e611, 0x1d1a7e7d, 0x38fff85e, + 0x38fa405e, 0x1d25af0d, 0x1d473a00, 0x38e90b31, 0x38e34a69, 0x1d52660f, 0x1d73e374, 0x38d1fae9, + 0x38cc315d, 0x1d7f0afb, 0x1da07abc, 0x38bac795, 0x38b4f547, 0x1dab9db5, 0x1dccffbf, 0x38a37142, + 0x389d9637, 0x1dd81e21, 0x1df9725f, 0x388bf7ff, 0x3886143b, 0x1e048c24, 0x1e25d282, 0x38745bdb, + 0x386e6f60, 0x1e30e7a4, 0x1e52200c, 0x385c9ce3, 0x3856a7b6, 0x1e5d3084, 0x1e7e5ae2, 0x3844bb28, + 0x383ebd4c, 0x1e8966a8, 0x1eaa82e9, 0x382cb6b7, 0x3826b030, 0x1eb589f7, 0x1ed69805, 0x38148f9f, + 0x380e8071, 0x1ee19a54, 0x1f029a1c, 0x37fc45ef, 0x37f62e1d, 0x1f0d97a5, 0x1f2e8911, 0x37e3d9b7, + 0x37ddb945, 0x1f3981ce, 0x1f5a64cb, 0x37cb4b04, 0x37c521f6, 0x1f6558b5, 0x1f862d2d, 0x37b299e7, + 0x37ac6841, 0x1f911c3d, 0x1fb1e21d, 0x3799c66f, 0x37938c34, 0x1fbccc4d, 0x1fdd8381, 0x3780d0aa, + 0x377a8ddf, 0x1fe868c8, 0x2009113c, 0x3767b8a9, 0x37616d51, 0x2013f196, 0x20348b35, 0x374e7e7b, + 0x37482a9a, 0x203f6699, 0x205ff14f, 0x3735222f, 0x372ec5c9, 0x206ac7b8, 0x208b4372, 0x371ba3d4, + 0x37153eee, 0x209614d9, 0x20b68181, 0x3702037c, 0x36fb9618, 0x20c14ddf, 0x20e1ab63, 0x36e84135, + 0x36e1cb58, 0x20ec72b1, 0x210cc0fc, 0x36ce5d10, 0x36c7debd, 0x21178334, 0x2137c232, 0x36b4571b, + 0x36add058, 0x21427f4d, 0x2162aeea, 0x369a2f69, 0x3693a038, 0x216d66e2, 0x218d870b, 0x367fe608, + 0x36794e6e, 0x219839d8, 0x21b84a79, 0x36657b08, 0x365edb09, 0x21c2f815, 0x21e2f91a, 0x364aee7b, + 0x3644461b, 0x21eda17f, 0x220d92d4, 0x36304070, 0x36298fb4, 0x221835fb, 0x2238178d, 0x361570f8, + 0x360eb7e3, 0x2242b56f, 0x22628729, 0x35fa8023, 0x35f3beba, 0x226d1fc1, 0x228ce191, 0x35df6e03, + 0x35d8a449, 0x229774d7, 0x22b726a8, 0x35c43aa7, 0x35bd68a1, 0x22c1b496, 0x22e15655, 0x35a8e621, + 0x35a20bd3, 0x22ebdee5, 0x230b707e, 0x358d7081, 0x35868def, 0x2315f3a8, 0x23357509, 0x3571d9d9, + 0x356aef08, 0x233ff2c8, 0x235f63dc, 0x35562239, 0x354f2f2c, 0x2369dc29, 0x23893cdd, 0x353a49b2, + 0x35334e6f, 0x2393afb2, 0x23b2fff3, 0x351e5056, 0x35174ce0, 0x23bd6d48, 0x23dcad03, 0x35023636, + 0x34fb2a92, 0x23e714d3, 0x240643f4, 0x34e5fb63, 0x34dee795, 0x2410a639, 0x242fc4ad, 0x34c99fef, + 0x34c283fb, 0x243a215f, 0x24592f13, 0x34ad23eb, 0x34a5ffd5, 0x2463862c, 0x2482830d, 0x34908768, + 0x34895b36, 0x248cd487, 0x24abc082, 0x3473ca79, 0x346c962f, 0x24b60c57, 0x24d4e757, 0x3456ed2f, + 0x344fb0d1, 0x24df2d81, 0x24fdf775, 0x3439ef9c, 0x3432ab2e, 0x250837ed, 0x2526f0c1, 0x341cd1d2, + 0x34158559, 0x25312b81, 0x254fd323, 0x33ff93e2, 0x33f83f62, 0x255a0823, 0x25789e80, 0x33e235df, + 0x33dad95e, 0x2582cdbc, 0x25a152c0, 0x33c4b7db, 0x33bd535c, 0x25ab7c30, 0x25c9efca, 0x33a719e8, + 0x339fad70, 0x25d41369, 0x25f27584, 0x33895c18, 0x3381e7ac, 0x25fc934b, 0x261ae3d6, 0x336b7e7e, + 0x33640223, 0x2624fbbf, 0x26433aa7, 0x334d812d, 0x3345fce6, 0x264d4cac, 0x266b79dd, 0x332f6435, + 0x3327d808, 0x267585f8, 0x2693a161, 0x331127ab, 0x3309939c, 0x269da78b, 0x26bbb119, 0x32f2cba1, + 0x32eb2fb5, 0x26c5b14c, 0x26e3a8ec, 0x32d45029, 0x32ccac64, 0x26eda322, 0x270b88c2, 0x32b5b557, + 0x32ae09be, 0x27157cf5, 0x27335082, 0x3296fb3d, 0x328f47d5, 0x273d3eac, 0x275b0014, 0x327821ee, + 0x327066bc, 0x2764e82f, 0x27829760, 0x3259297d, 0x32516686, 0x278c7965, 0x27aa164c, 0x323a11fe, + 0x32324746, 0x27b3f235, 0x27d17cc1, 0x321adb83, 0x3213090f, 0x27db5288, 0x27f8caa5, 0x31fb8620, + 0x31f3abf5, 0x28029a45, 0x281fffe2, 0x31dc11e8, 0x31d4300b, 0x2829c954, 0x28471c5e, 0x31bc7eee, + 0x31b49564, 0x2850df9d, 0x286e2002, 0x319ccd46, 0x3194dc14, 0x2877dd07, 0x28950ab6, 0x317cfd04, + 0x3175042e, 0x289ec17a, 0x28bbdc61, 0x315d0e3b, 0x31550dc6, 0x28c58cdf, 0x28e294eb, 0x313d00ff, + 0x3134f8f1, 0x28ec3f1e, 0x2909343e, 0x311cd564, 0x3114c5c0, 0x2912d81f, 0x292fba40, 0x30fc8b7d, + 0x30f47449, 0x293957c9, 0x295626da, 0x30dc235e, 0x30d404a0, 0x295fbe06, 0x297c79f5, 0x30bb9d1c, + 0x30b376d8, 0x29860abd, 0x29a2b378, 0x309af8ca, 0x3092cb05, 0x29ac3dd7, 0x29c8d34d, 0x307a367c, + 0x3072013c, 0x29d2573c, 0x29eed95b, 0x30595648, 0x30511991, 0x29f856d5, 0x2a14c58b, 0x30385840, + 0x30301418, 0x2a1e3c8a, 0x2a3a97c7, 0x30173c7a, 0x300ef0e5, 0x2a440844, 0x2a604ff5, 0x2ff6030a, + 0x2fedb00d, 0x2a69b9ec, 0x2a85ee00, 0x2fd4ac04, 0x2fcc51a5, 0x2a8f516b, 0x2aab71d0, 0x2fb3377c, + 0x2faad5c1, 0x2ab4cea9, 0x2ad0db4e, 0x2f91a589, 0x2f893c75, 0x2ada318e, 0x2af62a63, 0x2f6ff63d, + 0x2f6785d7, 0x2aff7a05, 0x2b1b5ef8, 0x2f4e29af, 0x2f45b1fb, 0x2b24a7f6, 0x2b4078f5, 0x2f2c3ff2, + 0x2f23c0f6, 0x2b49bb4a, 0x2b657844, 0x2f0a391d, 0x2f01b2de, 0x2b6eb3ea, 0x2b8a5cce, 0x2ee81543, + 0x2edf87c6, 0x2b9391c0, 0x2baf267d, 0x2ec5d479, 0x2ebd3fc4, 0x2bb854b4, 0x2bd3d53a, 0x2ea376d6, + 0x2e9adaee, 0x2bdcfcb0, 0x2bf868ed, 0x2e80fc6e, 0x2e785958, 0x2c01899e, 0x2c1ce181, 0x2e5e6556, + 0x2e55bb17, 0x2c25fb66, 0x2c413edf, 0x2e3bb1a4, 0x2e330042, 0x2c4a51f3, 0x2c6580f1, 0x2e18e16d, + 0x2e1028ed, 0x2c6e8d2e, 0x2c89a79f, 0x2df5f4c7, 0x2ded352f, 0x2c92ad01, 0x2cadb2d5, 0x2dd2ebc7, + 0x2dca251c, 0x2cb6b155, 0x2cd1a27b, 0x2dafc683, 0x2da6f8ca, 0x2cda9a14, 0x2cf5767c, 0x2d8c8510, 0x2d83b04f, 0x2cfe6728, 0x2d192ec1, 0x2d692784, 0x2d604bc0, 0x2d22187a, 0x2d3ccb34, 0x2d45adf6 }; const int twidTab512[(8*6 + 32*6 + 128*6)/2] = { - 0x40000000, 0x40000000, 0x40000000, 0x3b20187d, - 0x3ec50c7c, 0x3536238e, 0x2d412d41, 0x3b20187d, - 0x187d3b20, 0x187d3b20, 0x3536238e, 0xf3843ec5, - 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xe7833b20, - 0x238e3536, 0xc13b0c7c, 0xd2bf2d41, 0x187d3b20, - 0xc4e0e783, 0xc4e0187d, 0x0c7c3ec5, 0xdc72caca, - - 0x40000000, 0x40000000, 0x40000000, 0x3fb10645, - 0x3fec0323, 0x3f4e0964, 0x3ec50c7c, 0x3fb10645, - 0x3d3e1294, 0x3d3e1294, 0x3f4e0964, 0x39da1b5d, - 0x3b20187d, 0x3ec50c7c, 0x3536238e, 0x38711e2b, - 0x3e140f8c, 0x2f6b2afa, 0x3536238e, 0x3d3e1294, - 0x28993179, 0x31792899, 0x3c42158f, 0x20e736e5, - 0x2d412d41, 0x3b20187d, 0x187d3b20, 0x28993179, - 0x39da1b5d, 0x0f8c3e14, 0x238e3536, 0x38711e2b, - 0x06453fb1, 0x1e2b3871, 0x36e520e7, 0xfcdd3fec, - 0x187d3b20, 0x3536238e, 0xf3843ec5, 0x12943d3e, - 0x3367261f, 0xea713c42, 0x0c7c3ec5, 0x31792899, - 0xe1d53871, 0x06453fb1, 0x2f6b2afa, 0xd9e13367, - 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xf9bb3fb1, - 0x2afa2f6b, 0xcc99261f, 0xf3843ec5, 0x28993179, - 0xc78f1e2b, 0xed6c3d3e, 0x261f3367, 0xc3be158f, - 0xe7833b20, 0x238e3536, 0xc13b0c7c, 0xe1d53871, - 0x20e736e5, 0xc0140323, 0xdc723536, 0x1e2b3871, - 0xc04ff9bb, 0xd7673179, 0x1b5d39da, 0xc1ecf074, - 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, 0xce872899, - 0x158f3c42, 0xc91bdf19, 0xcaca238e, 0x12943d3e, - 0xce87d767, 0xc78f1e2b, 0x0f8c3e14, 0xd506d095, - 0xc4e0187d, 0x0c7c3ec5, 0xdc72caca, 0xc2c21294, - 0x09643f4e, 0xe4a3c626, 0xc13b0c7c, 0x06453fb1, - 0xed6cc2c2, 0xc04f0645, 0x03233fec, 0xf69cc0b2, - - 0x40000000, 0x40000000, 0x40000000, 0x3ffb0192, - 0x3ffe00c9, 0x3ff4025b, 0x3fec0323, 0x3ffb0192, - 0x3fd304b5, 0x3fd304b5, 0x3ff4025b, 0x3f9c070d, - 0x3fb10645, 0x3fec0323, 0x3f4e0964, 0x3f8407d5, - 0x3fe103ec, 0x3eeb0bb6, 0x3f4e0964, 0x3fd304b5, - 0x3e710e05, 0x3f0e0af1, 0x3fc3057d, 0x3de2104f, - 0x3ec50c7c, 0x3fb10645, 0x3d3e1294, 0x3e710e05, - 0x3f9c070d, 0x3c8414d1, 0x3e140f8c, 0x3f8407d5, - 0x3bb61708, 0x3dae1111, 0x3f6a089c, 0x3ad21937, - 0x3d3e1294, 0x3f4e0964, 0x39da1b5d, 0x3cc51413, - 0x3f2f0a2a, 0x38cf1d79, 0x3c42158f, 0x3f0e0af1, - 0x37af1f8b, 0x3bb61708, 0x3eeb0bb6, 0x367c2192, - 0x3b20187d, 0x3ec50c7c, 0x3536238e, 0x3a8219ef, - 0x3e9c0d41, 0x33de257d, 0x39da1b5d, 0x3e710e05, - 0x3274275f, 0x392a1cc6, 0x3e440ec9, 0x30f82934, - 0x38711e2b, 0x3e140f8c, 0x2f6b2afa, 0x37af1f8b, - 0x3de2104f, 0x2dce2cb2, 0x36e520e7, 0x3dae1111, - 0x2c212e5a, 0x3612223d, 0x3d7711d3, 0x2a652ff1, - 0x3536238e, 0x3d3e1294, 0x28993179, 0x345324da, - 0x3d021354, 0x26c032ee, 0x3367261f, 0x3cc51413, - 0x24da3453, 0x3274275f, 0x3c8414d1, 0x22e635a5, - 0x31792899, 0x3c42158f, 0x20e736e5, 0x307629cd, - 0x3bfd164c, 0x1edc3811, 0x2f6b2afa, 0x3bb61708, - 0x1cc6392a, 0x2e5a2c21, 0x3b6c17c3, 0x1aa63a2f, - 0x2d412d41, 0x3b20187d, 0x187d3b20, 0x2c212e5a, - 0x3ad21937, 0x164c3bfd, 0x2afa2f6b, 0x3a8219ef, - 0x14133cc5, 0x29cd3076, 0x3a2f1aa6, 0x11d33d77, - 0x28993179, 0x39da1b5d, 0x0f8c3e14, 0x275f3274, - 0x39831c12, 0x0d413e9c, 0x261f3367, 0x392a1cc6, - 0x0af13f0e, 0x24da3453, 0x38cf1d79, 0x089c3f6a, - 0x238e3536, 0x38711e2b, 0x06453fb1, 0x223d3612, - 0x38111edc, 0x03ec3fe1, 0x20e736e5, 0x37af1f8b, - 0x01923ffb, 0x1f8b37af, 0x374b2039, 0xff373ffe, - 0x1e2b3871, 0x36e520e7, 0xfcdd3fec, 0x1cc6392a, - 0x367c2192, 0xfa833fc3, 0x1b5d39da, 0x3612223d, - 0xf82b3f84, 0x19ef3a82, 0x35a522e6, 0xf5d63f2f, - 0x187d3b20, 0x3536238e, 0xf3843ec5, 0x17083bb6, - 0x34c62434, 0xf1373e44, 0x158f3c42, 0x345324da, - 0xeeef3dae, 0x14133cc5, 0x33de257d, 0xecac3d02, - 0x12943d3e, 0x3367261f, 0xea713c42, 0x11113dae, - 0x32ee26c0, 0xe83d3b6c, 0x0f8c3e14, 0x3274275f, - 0xe6113a82, 0x0e053e71, 0x31f727fd, 0xe3ee3983, - 0x0c7c3ec5, 0x31792899, 0xe1d53871, 0x0af13f0e, - 0x30f82934, 0xdfc7374b, 0x09643f4e, 0x307629cd, - 0xddc33612, 0x07d53f84, 0x2ff12a65, 0xdbcc34c6, - 0x06453fb1, 0x2f6b2afa, 0xd9e13367, 0x04b53fd3, - 0x2ee32b8e, 0xd80331f7, 0x03233fec, 0x2e5a2c21, - 0xd6333076, 0x01923ffb, 0x2dce2cb2, 0xd4722ee3, - 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xfe6e3ffb, - 0x2cb22dce, 0xd11d2b8e, 0xfcdd3fec, 0x2c212e5a, - 0xcf8a29cd, 0xfb4b3fd3, 0x2b8e2ee3, 0xce0927fd, - 0xf9bb3fb1, 0x2afa2f6b, 0xcc99261f, 0xf82b3f84, - 0x2a652ff1, 0xcb3a2434, 0xf69c3f4e, 0x29cd3076, - 0xc9ee223d, 0xf50f3f0e, 0x293430f8, 0xc8b52039, - 0xf3843ec5, 0x28993179, 0xc78f1e2b, 0xf1fb3e71, - 0x27fd31f7, 0xc67d1c12, 0xf0743e14, 0x275f3274, - 0xc57e19ef, 0xeeef3dae, 0x26c032ee, 0xc49417c3, - 0xed6c3d3e, 0x261f3367, 0xc3be158f, 0xebed3cc5, - 0x257d33de, 0xc2fe1354, 0xea713c42, 0x24da3453, - 0xc2521111, 0xe8f83bb6, 0x243434c6, 0xc1bc0ec9, - 0xe7833b20, 0x238e3536, 0xc13b0c7c, 0xe6113a82, - 0x22e635a5, 0xc0d10a2a, 0xe4a339da, 0x223d3612, - 0xc07c07d5, 0xe33a392a, 0x2192367c, 0xc03d057d, - 0xe1d53871, 0x20e736e5, 0xc0140323, 0xe07537af, - 0x2039374b, 0xc00200c9, 0xdf1936e5, 0x1f8b37af, - 0xc005fe6e, 0xddc33612, 0x1edc3811, 0xc01ffc14, - 0xdc723536, 0x1e2b3871, 0xc04ff9bb, 0xdb263453, - 0x1d7938cf, 0xc096f764, 0xd9e13367, 0x1cc6392a, - 0xc0f2f50f, 0xd8a13274, 0x1c123983, 0xc164f2bf, - 0xd7673179, 0x1b5d39da, 0xc1ecf074, 0xd6333076, - 0x1aa63a2f, 0xc289ee2d, 0xd5062f6b, 0x19ef3a82, - 0xc33bebed, 0xd3df2e5a, 0x19373ad2, 0xc403e9b4, - 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, 0xd1a62c21, - 0x17c33b6c, 0xc5d1e55a, 0xd0952afa, 0x17083bb6, - 0xc6d6e33a, 0xcf8a29cd, 0x164c3bfd, 0xc7efe124, - 0xce872899, 0x158f3c42, 0xc91bdf19, 0xcd8c275f, - 0x14d13c84, 0xca5bdd1a, 0xcc99261f, 0x14133cc5, - 0xcbaddb26, 0xcbad24da, 0x13543d02, 0xcd12d940, - 0xcaca238e, 0x12943d3e, 0xce87d767, 0xc9ee223d, - 0x11d33d77, 0xd00fd59b, 0xc91b20e7, 0x11113dae, - 0xd1a6d3df, 0xc8511f8b, 0x104f3de2, 0xd34ed232, - 0xc78f1e2b, 0x0f8c3e14, 0xd506d095, 0xc6d61cc6, - 0x0ec93e44, 0xd6cccf08, 0xc6261b5d, 0x0e053e71, - 0xd8a1cd8c, 0xc57e19ef, 0x0d413e9c, 0xda83cc22, - 0xc4e0187d, 0x0c7c3ec5, 0xdc72caca, 0xc44a1708, - 0x0bb63eeb, 0xde6ec984, 0xc3be158f, 0x0af13f0e, - 0xe075c851, 0xc33b1413, 0x0a2a3f2f, 0xe287c731, - 0xc2c21294, 0x09643f4e, 0xe4a3c626, 0xc2521111, - 0x089c3f6a, 0xe6c9c52e, 0xc1ec0f8c, 0x07d53f84, - 0xe8f8c44a, 0xc18f0e05, 0x070d3f9c, 0xeb2fc37c, - 0xc13b0c7c, 0x06453fb1, 0xed6cc2c2, 0xc0f20af1, - 0x057d3fc3, 0xefb1c21e, 0xc0b20964, 0x04b53fd3, - 0xf1fbc18f, 0xc07c07d5, 0x03ec3fe1, 0xf44ac115, - 0xc04f0645, 0x03233fec, 0xf69cc0b2, 0xc02d04b5, - 0x025b3ff4, 0xf8f3c064, 0xc0140323, 0x01923ffb, - 0xfb4bc02d, 0xc0050192, 0x00c93ffe, 0xfda5c00c + 0x40000000, 0x40000000, 0x40000000, 0x3b20187d, + 0x3ec50c7c, 0x3536238e, 0x2d412d41, 0x3b20187d, + 0x187d3b20, 0x187d3b20, 0x3536238e, 0xf3843ec5, + 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xe7833b20, + 0x238e3536, 0xc13b0c7c, 0xd2bf2d41, 0x187d3b20, + 0xc4e0e783, 0xc4e0187d, 0x0c7c3ec5, 0xdc72caca, + + 0x40000000, 0x40000000, 0x40000000, 0x3fb10645, + 0x3fec0323, 0x3f4e0964, 0x3ec50c7c, 0x3fb10645, + 0x3d3e1294, 0x3d3e1294, 0x3f4e0964, 0x39da1b5d, + 0x3b20187d, 0x3ec50c7c, 0x3536238e, 0x38711e2b, + 0x3e140f8c, 0x2f6b2afa, 0x3536238e, 0x3d3e1294, + 0x28993179, 0x31792899, 0x3c42158f, 0x20e736e5, + 0x2d412d41, 0x3b20187d, 0x187d3b20, 0x28993179, + 0x39da1b5d, 0x0f8c3e14, 0x238e3536, 0x38711e2b, + 0x06453fb1, 0x1e2b3871, 0x36e520e7, 0xfcdd3fec, + 0x187d3b20, 0x3536238e, 0xf3843ec5, 0x12943d3e, + 0x3367261f, 0xea713c42, 0x0c7c3ec5, 0x31792899, + 0xe1d53871, 0x06453fb1, 0x2f6b2afa, 0xd9e13367, + 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xf9bb3fb1, + 0x2afa2f6b, 0xcc99261f, 0xf3843ec5, 0x28993179, + 0xc78f1e2b, 0xed6c3d3e, 0x261f3367, 0xc3be158f, + 0xe7833b20, 0x238e3536, 0xc13b0c7c, 0xe1d53871, + 0x20e736e5, 0xc0140323, 0xdc723536, 0x1e2b3871, + 0xc04ff9bb, 0xd7673179, 0x1b5d39da, 0xc1ecf074, + 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, 0xce872899, + 0x158f3c42, 0xc91bdf19, 0xcaca238e, 0x12943d3e, + 0xce87d767, 0xc78f1e2b, 0x0f8c3e14, 0xd506d095, + 0xc4e0187d, 0x0c7c3ec5, 0xdc72caca, 0xc2c21294, + 0x09643f4e, 0xe4a3c626, 0xc13b0c7c, 0x06453fb1, + 0xed6cc2c2, 0xc04f0645, 0x03233fec, 0xf69cc0b2, + + 0x40000000, 0x40000000, 0x40000000, 0x3ffb0192, + 0x3ffe00c9, 0x3ff4025b, 0x3fec0323, 0x3ffb0192, + 0x3fd304b5, 0x3fd304b5, 0x3ff4025b, 0x3f9c070d, + 0x3fb10645, 0x3fec0323, 0x3f4e0964, 0x3f8407d5, + 0x3fe103ec, 0x3eeb0bb6, 0x3f4e0964, 0x3fd304b5, + 0x3e710e05, 0x3f0e0af1, 0x3fc3057d, 0x3de2104f, + 0x3ec50c7c, 0x3fb10645, 0x3d3e1294, 0x3e710e05, + 0x3f9c070d, 0x3c8414d1, 0x3e140f8c, 0x3f8407d5, + 0x3bb61708, 0x3dae1111, 0x3f6a089c, 0x3ad21937, + 0x3d3e1294, 0x3f4e0964, 0x39da1b5d, 0x3cc51413, + 0x3f2f0a2a, 0x38cf1d79, 0x3c42158f, 0x3f0e0af1, + 0x37af1f8b, 0x3bb61708, 0x3eeb0bb6, 0x367c2192, + 0x3b20187d, 0x3ec50c7c, 0x3536238e, 0x3a8219ef, + 0x3e9c0d41, 0x33de257d, 0x39da1b5d, 0x3e710e05, + 0x3274275f, 0x392a1cc6, 0x3e440ec9, 0x30f82934, + 0x38711e2b, 0x3e140f8c, 0x2f6b2afa, 0x37af1f8b, + 0x3de2104f, 0x2dce2cb2, 0x36e520e7, 0x3dae1111, + 0x2c212e5a, 0x3612223d, 0x3d7711d3, 0x2a652ff1, + 0x3536238e, 0x3d3e1294, 0x28993179, 0x345324da, + 0x3d021354, 0x26c032ee, 0x3367261f, 0x3cc51413, + 0x24da3453, 0x3274275f, 0x3c8414d1, 0x22e635a5, + 0x31792899, 0x3c42158f, 0x20e736e5, 0x307629cd, + 0x3bfd164c, 0x1edc3811, 0x2f6b2afa, 0x3bb61708, + 0x1cc6392a, 0x2e5a2c21, 0x3b6c17c3, 0x1aa63a2f, + 0x2d412d41, 0x3b20187d, 0x187d3b20, 0x2c212e5a, + 0x3ad21937, 0x164c3bfd, 0x2afa2f6b, 0x3a8219ef, + 0x14133cc5, 0x29cd3076, 0x3a2f1aa6, 0x11d33d77, + 0x28993179, 0x39da1b5d, 0x0f8c3e14, 0x275f3274, + 0x39831c12, 0x0d413e9c, 0x261f3367, 0x392a1cc6, + 0x0af13f0e, 0x24da3453, 0x38cf1d79, 0x089c3f6a, + 0x238e3536, 0x38711e2b, 0x06453fb1, 0x223d3612, + 0x38111edc, 0x03ec3fe1, 0x20e736e5, 0x37af1f8b, + 0x01923ffb, 0x1f8b37af, 0x374b2039, 0xff373ffe, + 0x1e2b3871, 0x36e520e7, 0xfcdd3fec, 0x1cc6392a, + 0x367c2192, 0xfa833fc3, 0x1b5d39da, 0x3612223d, + 0xf82b3f84, 0x19ef3a82, 0x35a522e6, 0xf5d63f2f, + 0x187d3b20, 0x3536238e, 0xf3843ec5, 0x17083bb6, + 0x34c62434, 0xf1373e44, 0x158f3c42, 0x345324da, + 0xeeef3dae, 0x14133cc5, 0x33de257d, 0xecac3d02, + 0x12943d3e, 0x3367261f, 0xea713c42, 0x11113dae, + 0x32ee26c0, 0xe83d3b6c, 0x0f8c3e14, 0x3274275f, + 0xe6113a82, 0x0e053e71, 0x31f727fd, 0xe3ee3983, + 0x0c7c3ec5, 0x31792899, 0xe1d53871, 0x0af13f0e, + 0x30f82934, 0xdfc7374b, 0x09643f4e, 0x307629cd, + 0xddc33612, 0x07d53f84, 0x2ff12a65, 0xdbcc34c6, + 0x06453fb1, 0x2f6b2afa, 0xd9e13367, 0x04b53fd3, + 0x2ee32b8e, 0xd80331f7, 0x03233fec, 0x2e5a2c21, + 0xd6333076, 0x01923ffb, 0x2dce2cb2, 0xd4722ee3, + 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xfe6e3ffb, + 0x2cb22dce, 0xd11d2b8e, 0xfcdd3fec, 0x2c212e5a, + 0xcf8a29cd, 0xfb4b3fd3, 0x2b8e2ee3, 0xce0927fd, + 0xf9bb3fb1, 0x2afa2f6b, 0xcc99261f, 0xf82b3f84, + 0x2a652ff1, 0xcb3a2434, 0xf69c3f4e, 0x29cd3076, + 0xc9ee223d, 0xf50f3f0e, 0x293430f8, 0xc8b52039, + 0xf3843ec5, 0x28993179, 0xc78f1e2b, 0xf1fb3e71, + 0x27fd31f7, 0xc67d1c12, 0xf0743e14, 0x275f3274, + 0xc57e19ef, 0xeeef3dae, 0x26c032ee, 0xc49417c3, + 0xed6c3d3e, 0x261f3367, 0xc3be158f, 0xebed3cc5, + 0x257d33de, 0xc2fe1354, 0xea713c42, 0x24da3453, + 0xc2521111, 0xe8f83bb6, 0x243434c6, 0xc1bc0ec9, + 0xe7833b20, 0x238e3536, 0xc13b0c7c, 0xe6113a82, + 0x22e635a5, 0xc0d10a2a, 0xe4a339da, 0x223d3612, + 0xc07c07d5, 0xe33a392a, 0x2192367c, 0xc03d057d, + 0xe1d53871, 0x20e736e5, 0xc0140323, 0xe07537af, + 0x2039374b, 0xc00200c9, 0xdf1936e5, 0x1f8b37af, + 0xc005fe6e, 0xddc33612, 0x1edc3811, 0xc01ffc14, + 0xdc723536, 0x1e2b3871, 0xc04ff9bb, 0xdb263453, + 0x1d7938cf, 0xc096f764, 0xd9e13367, 0x1cc6392a, + 0xc0f2f50f, 0xd8a13274, 0x1c123983, 0xc164f2bf, + 0xd7673179, 0x1b5d39da, 0xc1ecf074, 0xd6333076, + 0x1aa63a2f, 0xc289ee2d, 0xd5062f6b, 0x19ef3a82, + 0xc33bebed, 0xd3df2e5a, 0x19373ad2, 0xc403e9b4, + 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, 0xd1a62c21, + 0x17c33b6c, 0xc5d1e55a, 0xd0952afa, 0x17083bb6, + 0xc6d6e33a, 0xcf8a29cd, 0x164c3bfd, 0xc7efe124, + 0xce872899, 0x158f3c42, 0xc91bdf19, 0xcd8c275f, + 0x14d13c84, 0xca5bdd1a, 0xcc99261f, 0x14133cc5, + 0xcbaddb26, 0xcbad24da, 0x13543d02, 0xcd12d940, + 0xcaca238e, 0x12943d3e, 0xce87d767, 0xc9ee223d, + 0x11d33d77, 0xd00fd59b, 0xc91b20e7, 0x11113dae, + 0xd1a6d3df, 0xc8511f8b, 0x104f3de2, 0xd34ed232, + 0xc78f1e2b, 0x0f8c3e14, 0xd506d095, 0xc6d61cc6, + 0x0ec93e44, 0xd6cccf08, 0xc6261b5d, 0x0e053e71, + 0xd8a1cd8c, 0xc57e19ef, 0x0d413e9c, 0xda83cc22, + 0xc4e0187d, 0x0c7c3ec5, 0xdc72caca, 0xc44a1708, + 0x0bb63eeb, 0xde6ec984, 0xc3be158f, 0x0af13f0e, + 0xe075c851, 0xc33b1413, 0x0a2a3f2f, 0xe287c731, + 0xc2c21294, 0x09643f4e, 0xe4a3c626, 0xc2521111, + 0x089c3f6a, 0xe6c9c52e, 0xc1ec0f8c, 0x07d53f84, + 0xe8f8c44a, 0xc18f0e05, 0x070d3f9c, 0xeb2fc37c, + 0xc13b0c7c, 0x06453fb1, 0xed6cc2c2, 0xc0f20af1, + 0x057d3fc3, 0xefb1c21e, 0xc0b20964, 0x04b53fd3, + 0xf1fbc18f, 0xc07c07d5, 0x03ec3fe1, 0xf44ac115, + 0xc04f0645, 0x03233fec, 0xf69cc0b2, 0xc02d04b5, + 0x025b3ff4, 0xf8f3c064, 0xc0140323, 0x01923ffb, + 0xfb4bc02d, 0xc0050192, 0x00c93ffe, 0xfda5c00c }; const int twidTab64[(4*6 + 16*6)/2] = { - 0x40000000, 0x40000000, 0x40000000, 0x2d412d41, - 0x3b20187d, 0x187d3b20, 0x00004000, 0x2d412d41, - 0xd2bf2d41, 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, - - 0x40000000, 0x40000000, 0x40000000, 0x3ec50c7c, - 0x3fb10645, 0x3d3e1294, 0x3b20187d, 0x3ec50c7c, - 0x3536238e, 0x3536238e, 0x3d3e1294, 0x28993179, - 0x2d412d41, 0x3b20187d, 0x187d3b20, 0x238e3536, - 0x38711e2b, 0x06453fb1, 0x187d3b20, 0x3536238e, - 0xf3843ec5, 0x0c7c3ec5, 0x31792899, 0xe1d53871, - 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xf3843ec5, - 0x28993179, 0xc78f1e2b, 0xe7833b20, 0x238e3536, - 0xc13b0c7c, 0xdc723536, 0x1e2b3871, 0xc04ff9bb, - 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, 0xcaca238e, - 0x12943d3e, 0xce87d767, 0xc4e0187d, 0x0c7c3ec5, - 0xdc72caca, 0xc13b0c7c, 0x06453fb1, 0xed6cc2c2 + 0x40000000, 0x40000000, 0x40000000, 0x2d412d41, + 0x3b20187d, 0x187d3b20, 0x00004000, 0x2d412d41, + 0xd2bf2d41, 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, + + 0x40000000, 0x40000000, 0x40000000, 0x3ec50c7c, + 0x3fb10645, 0x3d3e1294, 0x3b20187d, 0x3ec50c7c, + 0x3536238e, 0x3536238e, 0x3d3e1294, 0x28993179, + 0x2d412d41, 0x3b20187d, 0x187d3b20, 0x238e3536, + 0x38711e2b, 0x06453fb1, 0x187d3b20, 0x3536238e, + 0xf3843ec5, 0x0c7c3ec5, 0x31792899, 0xe1d53871, + 0x00004000, 0x2d412d41, 0xd2bf2d41, 0xf3843ec5, + 0x28993179, 0xc78f1e2b, 0xe7833b20, 0x238e3536, + 0xc13b0c7c, 0xdc723536, 0x1e2b3871, 0xc04ff9bb, + 0xd2bf2d41, 0x187d3b20, 0xc4e0e783, 0xcaca238e, + 0x12943d3e, 0xce87d767, 0xc4e0187d, 0x0c7c3ec5, + 0xdc72caca, 0xc13b0c7c, 0x06453fb1, 0xed6cc2c2 }; #elif defined ARMV7Neon -/* - * Q29 for 128 and 1024 +/* + * Q29 for 128 and 1024 * * for (i = 0; i < num/4; i++) { * angle = (i + 0.125) * M_PI / num; * x = cos(angle) * (1 << 29); * x = sin(angle) * (1 << 29); - * + * * angle = (num/2 - 1 - i + 0.125) * M_PI / num; * x = cos(angle) * (1 << 29); * x = sin(angle) * (1 << 29); @@ -353,313 +353,313 @@ const int twidTab64[(4*6 + 16*6)/2] = { */ const int cossintab[128 + 1024] = { /* 128 */ - 0x1ffff621, 0x001921f9, 0x00afea69, 0x1ffe1c68, 0x1ffce09d, 0x00e22a7a, 0x0178dbaa, 0x1ff753bb, - 0x1ff4dc55, 0x01ab101c, 0x024192cf, 0x1feb9d25, 0x1fe7ea85, 0x0273b3e2, 0x0309f0e2, 0x1fdafa75, - 0x1fd60d2e, 0x033bf6dd, 0x03d1d700, 0x1fc56e3b, 0x1fbf470f, 0x0403ba2b, 0x04992653, 0x1faafbcb, - 0x1fa39bac, 0x04cadefe, 0x055fc022, 0x1f8ba738, 0x1f830f4a, 0x059146a1, 0x062585ca, 0x1f677557, - 0x1f5da6ed, 0x0656d27a, 0x06ea58cd, 0x1f3e6bbc, 0x1f33685a, 0x071b6415, 0x07ae1ad2, 0x1f1090bd, - 0x1f045a15, 0x07dedd20, 0x0870ada7, 0x1eddeb6a, 0x1ed0835f, 0x08a11f78, 0x0931f34d, 0x1ea68394, - 0x1e97ec36, 0x09620d27, 0x09f1cdf5, 0x1e6a61c5, 0x1e5a9d55, 0x0a21886e, 0x0ab02009, 0x1e298f44, - 0x1e18a030, 0x0adf73c6, 0x0b6ccc32, 0x1de4160f, 0x1dd1fef4, 0x0b9bb1e5, 0x0c27b555, 0x1d9a00de, - 0x1d86c484, 0x0c5625c3, 0x0ce0bea2, 0x1d4b5b1b, 0x1d36fc7c, 0x0d0eb2a2, 0x0d97cb8f, 0x1cf830e9, - 0x1ce2b328, 0x0dc53c0a, 0x0e4cbfe2, 0x1ca08f1a, 0x1c89f587, 0x0e79a5d7, 0x0eff7fb3, 0x1c448331, - 0x1c2cd149, 0x0f2bd437, 0x0fafef73, 0x1be41b61, 0x1bcb54cb, 0x0fdbabae, 0x105df3ec, 0x1b7f6687, - 0x1b658f15, 0x10891120, 0x11097249, 0x1b16742a, 0x1afb8fd9, 0x1133e9d0, 0x11b25017, 0x1aa9547a, - 0x1a8d676e, 0x11dc1b65, 0x1258734d, 0x1a38184a, 0x1a1b26d3, 0x12818bef, 0x12fbc24b, 0x19c2d111, - 0x19a4dfa4, 0x132421ec, 0x139c23e4, 0x194990e4, 0x192aa420, 0x13c3c44a, 0x14397f5b, 0x18cc6a75, - 0x18ac871f, 0x14605a69, 0x14d3bc6d, 0x184b7112, 0x182a9c14, 0x14f9cc26, 0x156ac352, 0x17c6b89d, + 0x1ffff621, 0x001921f9, 0x00afea69, 0x1ffe1c68, 0x1ffce09d, 0x00e22a7a, 0x0178dbaa, 0x1ff753bb, + 0x1ff4dc55, 0x01ab101c, 0x024192cf, 0x1feb9d25, 0x1fe7ea85, 0x0273b3e2, 0x0309f0e2, 0x1fdafa75, + 0x1fd60d2e, 0x033bf6dd, 0x03d1d700, 0x1fc56e3b, 0x1fbf470f, 0x0403ba2b, 0x04992653, 0x1faafbcb, + 0x1fa39bac, 0x04cadefe, 0x055fc022, 0x1f8ba738, 0x1f830f4a, 0x059146a1, 0x062585ca, 0x1f677557, + 0x1f5da6ed, 0x0656d27a, 0x06ea58cd, 0x1f3e6bbc, 0x1f33685a, 0x071b6415, 0x07ae1ad2, 0x1f1090bd, + 0x1f045a15, 0x07dedd20, 0x0870ada7, 0x1eddeb6a, 0x1ed0835f, 0x08a11f78, 0x0931f34d, 0x1ea68394, + 0x1e97ec36, 0x09620d27, 0x09f1cdf5, 0x1e6a61c5, 0x1e5a9d55, 0x0a21886e, 0x0ab02009, 0x1e298f44, + 0x1e18a030, 0x0adf73c6, 0x0b6ccc32, 0x1de4160f, 0x1dd1fef4, 0x0b9bb1e5, 0x0c27b555, 0x1d9a00de, + 0x1d86c484, 0x0c5625c3, 0x0ce0bea2, 0x1d4b5b1b, 0x1d36fc7c, 0x0d0eb2a2, 0x0d97cb8f, 0x1cf830e9, + 0x1ce2b328, 0x0dc53c0a, 0x0e4cbfe2, 0x1ca08f1a, 0x1c89f587, 0x0e79a5d7, 0x0eff7fb3, 0x1c448331, + 0x1c2cd149, 0x0f2bd437, 0x0fafef73, 0x1be41b61, 0x1bcb54cb, 0x0fdbabae, 0x105df3ec, 0x1b7f6687, + 0x1b658f15, 0x10891120, 0x11097249, 0x1b16742a, 0x1afb8fd9, 0x1133e9d0, 0x11b25017, 0x1aa9547a, + 0x1a8d676e, 0x11dc1b65, 0x1258734d, 0x1a38184a, 0x1a1b26d3, 0x12818bef, 0x12fbc24b, 0x19c2d111, + 0x19a4dfa4, 0x132421ec, 0x139c23e4, 0x194990e4, 0x192aa420, 0x13c3c44a, 0x14397f5b, 0x18cc6a75, + 0x18ac871f, 0x14605a69, 0x14d3bc6d, 0x184b7112, 0x182a9c14, 0x14f9cc26, 0x156ac352, 0x17c6b89d, 0x17a4f708, 0x159001d6, 0x15fe7cbe, 0x173e558e, 0x171bac96, 0x1622e450, 0x168ed1eb, 0x16b25ced, /* 1024 */ - 0x1fffffd9, 0x0003243f, 0x0015fdba, 0x1ffff872, 0x1ffff382, 0x001c4637, 0x002f1fa6, 0x1fffdd4d, - 0x1fffd36f, 0x0035681d, 0x00484175, 0x1fffae6c, 0x1fff9f9e, 0x004e89e3, 0x00616318, 0x1fff6bce, - 0x1fff5811, 0x0067ab77, 0x007a847e, 0x1fff1572, 0x1ffefcc6, 0x0080cccc, 0x0093a599, 0x1ffeab5b, - 0x1ffe8dbf, 0x0099edd2, 0x00acc658, 0x1ffe2d86, 0x1ffe0afc, 0x00b30e78, 0x00c5e6ad, 0x1ffd9bf6, - 0x1ffd747c, 0x00cc2eb0, 0x00df0688, 0x1ffcf6aa, 0x1ffcca41, 0x00e54e6a, 0x00f825da, 0x1ffc3da2, - 0x1ffc0c4b, 0x00fe6d97, 0x01114492, 0x1ffb70e0, 0x1ffb3a9a, 0x01178c27, 0x012a62a2, 0x1ffa9063, - 0x1ffa552e, 0x0130aa0a, 0x01437ffa, 0x1ff99c2c, 0x1ff95c09, 0x0149c731, 0x015c9c8a, 0x1ff8943c, - 0x1ff84f2b, 0x0162e38d, 0x0175b843, 0x1ff77893, 0x1ff72e94, 0x017bff0e, 0x018ed316, 0x1ff64932, - 0x1ff5fa46, 0x019519a5, 0x01a7ecf2, 0x1ff5061b, 0x1ff4b240, 0x01ae3341, 0x01c105c9, 0x1ff3af4c, - 0x1ff35684, 0x01c74bd5, 0x01da1d8c, 0x1ff244c8, 0x1ff1e713, 0x01e0634f, 0x01f33429, 0x1ff0c68f, - 0x1ff063ed, 0x01f979a1, 0x020c4993, 0x1fef34a3, 0x1feecd14, 0x02128ebb, 0x02255db9, 0x1fed8f03, - 0x1fed2287, 0x022ba28f, 0x023e708d, 0x1febd5b2, 0x1feb644a, 0x0244b50b, 0x025781fe, 0x1fea08b0, - 0x1fe9925c, 0x025dc621, 0x027091fd, 0x1fe827fe, 0x1fe7acbe, 0x0276d5c1, 0x0289a07b, 0x1fe6339d, - 0x1fe5b372, 0x028fe3dd, 0x02a2ad69, 0x1fe42b90, 0x1fe3a679, 0x02a8f063, 0x02bbb8b6, 0x1fe20fd6, - 0x1fe185d5, 0x02c1fb46, 0x02d4c253, 0x1fdfe071, 0x1fdf5186, 0x02db0475, 0x02edca32, 0x1fdd9d64, - 0x1fdd098e, 0x02f40be2, 0x0306d042, 0x1fdb46ae, 0x1fdaadee, 0x030d117c, 0x031fd474, 0x1fd8dc51, - 0x1fd83ea8, 0x03261534, 0x0338d6b8, 0x1fd65e4f, 0x1fd5bbbd, 0x033f16fb, 0x0351d700, 0x1fd3ccaa, - 0x1fd32530, 0x035816c1, 0x036ad53c, 0x1fd12763, 0x1fd07b00, 0x03711477, 0x0383d15c, 0x1fce6e7c, - 0x1fcdbd31, 0x038a100e, 0x039ccb51, 0x1fcba1f5, 0x1fcaebc3, 0x03a30975, 0x03b5c30b, 0x1fc8c1d2, - 0x1fc806b9, 0x03bc009f, 0x03ceb87c, 0x1fc5ce14, 0x1fc50e14, 0x03d4f57a, 0x03e7ab93, 0x1fc2c6bd, - 0x1fc201d7, 0x03ede7f9, 0x04009c42, 0x1fbfabcd, 0x1fbee202, 0x0406d80b, 0x04198a78, 0x1fbc7d49, - 0x1fbbae99, 0x041fc5a1, 0x04327628, 0x1fb93b31, 0x1fb8679c, 0x0438b0ac, 0x044b5f40, 0x1fb5e587, - 0x1fb50d0e, 0x0451991d, 0x046445b2, 0x1fb27c4e, 0x1fb19ef1, 0x046a7ee3, 0x047d296f, 0x1faeff87, - 0x1fae1d47, 0x048361f0, 0x04960a67, 0x1fab6f35, 0x1faa8813, 0x049c4235, 0x04aee88b, 0x1fa7cb5a, - 0x1fa6df56, 0x04b51fa1, 0x04c7c3cb, 0x1fa413f8, 0x1fa32313, 0x04cdfa26, 0x04e09c18, 0x1fa04912, - 0x1f9f534c, 0x04e6d1b4, 0x04f97163, 0x1f9c6aa9, 0x1f9b7003, 0x04ffa63c, 0x0512439d, 0x1f9878c1, - 0x1f97793b, 0x051877af, 0x052b12b6, 0x1f94735b, 0x1f936ef6, 0x053145fd, 0x0543de9e, 0x1f905a7a, - 0x1f8f5137, 0x054a1117, 0x055ca748, 0x1f8c2e21, 0x1f8b2000, 0x0562d8ee, 0x05756ca2, 0x1f87ee52, - 0x1f86db55, 0x057b9d73, 0x058e2e9f, 0x1f839b10, 0x1f828336, 0x05945e95, 0x05a6ed2e, 0x1f7f345e, - 0x1f7e17a8, 0x05ad1c47, 0x05bfa840, 0x1f7aba3e, 0x1f7998ad, 0x05c5d678, 0x05d85fc7, 0x1f762cb2, - 0x1f750647, 0x05de8d19, 0x05f113b3, 0x1f718bbf, 0x1f70607a, 0x05f7401c, 0x0609c3f5, 0x1f6cd766, - 0x1f6ba748, 0x060fef71, 0x0622707d, 0x1f680fab, 0x1f66dab5, 0x06289b08, 0x063b193c, 0x1f633490, - 0x1f61fac3, 0x064142d3, 0x0653be23, 0x1f5e4619, 0x1f5d0775, 0x0659e6c2, 0x066c5f24, 0x1f594448, - 0x1f5800ce, 0x067286c6, 0x0684fc2e, 0x1f542f21, 0x1f52e6d2, 0x068b22d0, 0x069d9532, 0x1f4f06a6, - 0x1f4db983, 0x06a3bad0, 0x06b62a22, 0x1f49cadc, 0x1f4878e5, 0x06bc4eb9, 0x06cebaee, 0x1f447bc4, - 0x1f4324fb, 0x06d4de79, 0x06e74786, 0x1f3f1963, 0x1f3dbdc8, 0x06ed6a03, 0x06ffcfdd, 0x1f39a3bc, - 0x1f384350, 0x0705f147, 0x071853e3, 0x1f341ad2, 0x1f32b595, 0x071e7436, 0x0730d388, 0x1f2e7ea9, - 0x1f2d149d, 0x0736f2c0, 0x07494ebd, 0x1f28cf43, 0x1f276069, 0x074f6cd7, 0x0761c574, 0x1f230ca5, - 0x1f2198fd, 0x0767e26c, 0x077a379d, 0x1f1d36d2, 0x1f1bbe5d, 0x07805370, 0x0792a52a, 0x1f174dce, - 0x1f15d08d, 0x0798bfd3, 0x07ab0e0a, 0x1f11519c, 0x1f0fcf91, 0x07b12786, 0x07c37230, 0x1f0b4240, - 0x1f09bb6b, 0x07c98a7a, 0x07dbd18c, 0x1f051fbe, 0x1f03941f, 0x07e1e8a1, 0x07f42c0e, 0x1efeea19, - 0x1efd59b3, 0x07fa41eb, 0x080c81a9, 0x1ef8a155, 0x1ef70c28, 0x0812964a, 0x0824d24d, 0x1ef24577, - 0x1ef0ab84, 0x082ae5ad, 0x083d1dea, 0x1eebd682, 0x1eea37ca, 0x08433007, 0x08556473, 0x1ee5547a, - 0x1ee3b0fe, 0x085b7548, 0x086da5d8, 0x1edebf64, 0x1edd1724, 0x0873b562, 0x0885e209, 0x1ed81742, - 0x1ed66a41, 0x088bf044, 0x089e18f9, 0x1ed15c1a, 0x1ecfaa57, 0x08a425e1, 0x08b64a98, 0x1eca8def, - 0x1ec8d76c, 0x08bc562a, 0x08ce76d8, 0x1ec3acc6, 0x1ec1f184, 0x08d4810f, 0x08e69da8, 0x1ebcb8a3, - 0x1ebaf8a3, 0x08eca681, 0x08febefb, 0x1eb5b18a, 0x1eb3eccd, 0x0904c673, 0x0916dac2, 0x1eae977f, - 0x1eacce07, 0x091ce0d4, 0x092ef0ed, 0x1ea76a87, 0x1ea59c55, 0x0934f596, 0x0947016e, 0x1ea02aa7, - 0x1e9e57bb, 0x094d04aa, 0x095f0c36, 0x1e98d7e2, 0x1e97003e, 0x09650e01, 0x09771136, 0x1e91723e, - 0x1e8f95e3, 0x097d118d, 0x098f1060, 0x1e89f9bf, 0x1e8818ad, 0x09950f3f, 0x09a709a4, 0x1e826e69, - 0x1e8088a2, 0x09ad0707, 0x09befcf4, 0x1e7ad041, 0x1e78e5c7, 0x09c4f8d8, 0x09d6ea40, 0x1e731f4c, - 0x1e71301f, 0x09dce4a1, 0x09eed17b, 0x1e6b5b8f, 0x1e6967b1, 0x09f4ca56, 0x0a06b296, 0x1e63850e, - 0x1e618c80, 0x0a0ca9e6, 0x0a1e8d81, 0x1e5b9bce, 0x1e599e91, 0x0a248343, 0x0a36622e, 0x1e539fd4, - 0x1e519dea, 0x0a3c565e, 0x0a4e308f, 0x1e4b9126, 0x1e498a8e, 0x0a542329, 0x0a65f894, 0x1e436fc7, - 0x1e416485, 0x0a6be995, 0x0a7dba2f, 0x1e3b3bbd, 0x1e392bd1, 0x0a83a993, 0x0a957551, 0x1e32f50e, - 0x1e30e079, 0x0a9b6315, 0x0aad29ec, 0x1e2a9bbd, 0x1e288281, 0x0ab3160c, 0x0ac4d7f1, 0x1e222fd1, - 0x1e2011ee, 0x0acac26a, 0x0adc7f52, 0x1e19b14f, 0x1e178ec7, 0x0ae2681f, 0x0af41fff, 0x1e11203b, - 0x1e0ef910, 0x0afa071d, 0x0b0bb9eb, 0x1e087c9b, 0x1e0650ce, 0x0b119f56, 0x0b234d07, 0x1dffc674, - 0x1dfd9606, 0x0b2930bb, 0x0b3ad943, 0x1df6fdcc, 0x1df4c8bf, 0x0b40bb3e, 0x0b525e92, 0x1dee22a9, - 0x1debe8fd, 0x0b583ecf, 0x0b69dce6, 0x1de5350f, 0x1de2f6c6, 0x0b6fbb62, 0x0b81542f, 0x1ddc3504, - 0x1dd9f220, 0x0b8730e6, 0x0b98c45f, 0x1dd3228e, 0x1dd0db10, 0x0b9e9f4d, 0x0bb02d68, 0x1dc9fdb2, - 0x1dc7b19b, 0x0bb6068a, 0x0bc78f3b, 0x1dc0c676, 0x1dbe75c8, 0x0bcd668e, 0x0bdee9ca, 0x1db77cdf, - 0x1db5279c, 0x0be4bf4a, 0x0bf63d07, 0x1dae20f4, 0x1dabc71d, 0x0bfc10af, 0x0c0d88e2, 0x1da4b2ba, - 0x1da25450, 0x0c135ab0, 0x0c24cd4e, 0x1d9b3237, 0x1d98cf3b, 0x0c2a9d3e, 0x0c3c0a3d, 0x1d919f70, - 0x1d8f37e5, 0x0c41d84b, 0x0c533fa0, 0x1d87fa6d, 0x1d858e53, 0x0c590bc9, 0x0c6a6d68, 0x1d7e4332, - 0x1d7bd28b, 0x0c7037a8, 0x0c819388, 0x1d7479c5, 0x1d720493, 0x0c875bdb, 0x0c98b1f0, 0x1d6a9e2e, - 0x1d682472, 0x0c9e7854, 0x0cafc894, 0x1d60b070, 0x1d5e322c, 0x0cb58d04, 0x0cc6d764, 0x1d56b094, - 0x1d542dc9, 0x0ccc99de, 0x0cddde53, 0x1d4c9e9f, 0x1d4a174f, 0x0ce39ed2, 0x0cf4dd52, 0x1d427a97, - 0x1d3feec3, 0x0cfa9bd2, 0x0d0bd452, 0x1d384483, 0x1d35b42d, 0x0d1190d1, 0x0d22c347, 0x1d2dfc68, - 0x1d2b6791, 0x0d287dc1, 0x0d39aa21, 0x1d23a24e, 0x1d2108f8, 0x0d3f6292, 0x0d5088d3, 0x1d19363a, - 0x1d169867, 0x0d563f38, 0x0d675f4e, 0x1d0eb833, 0x1d0c15e4, 0x0d6d13a3, 0x0d7e2d85, 0x1d04283f, - 0x1d018176, 0x0d83dfc6, 0x0d94f369, 0x1cf98666, 0x1cf6db24, 0x0d9aa393, 0x0dabb0ec, 0x1ceed2ad, - 0x1cec22f4, 0x0db15efc, 0x0dc26600, 0x1ce40d1b, 0x1ce158ed, 0x0dc811f3, 0x0dd91298, 0x1cd935b7, - 0x1cd67d15, 0x0ddebc69, 0x0defb6a5, 0x1cce4c87, 0x1ccb8f74, 0x0df55e51, 0x0e065219, 0x1cc35192, - 0x1cc0900f, 0x0e0bf79c, 0x0e1ce4e6, 0x1cb844df, 0x1cb57eee, 0x0e22883e, 0x0e336eff, 0x1cad2675, - 0x1caa5c17, 0x0e391027, 0x0e49f055, 0x1ca1f65b, 0x1c9f2792, 0x0e4f8f4b, 0x0e6068db, 0x1c96b497, - 0x1c93e165, 0x0e66059a, 0x0e76d883, 0x1c8b6131, 0x1c888997, 0x0e7c7308, 0x0e8d3f3e, 0x1c7ffc2f, - 0x1c7d202f, 0x0e92d787, 0x0ea39d00, 0x1c748599, 0x1c71a535, 0x0ea93308, 0x0eb9f1ba, 0x1c68fd75, - 0x1c6618ae, 0x0ebf857d, 0x0ed03d5e, 0x1c5d63ca, 0x1c5a7aa4, 0x0ed5ceda, 0x0ee67fdf, 0x1c51b8a1, - 0x1c4ecb1c, 0x0eec0f10, 0x0efcb92f, 0x1c45fc00, 0x1c430a1d, 0x0f024612, 0x0f12e941, 0x1c3a2ded, - 0x1c3737b0, 0x0f1873d2, 0x0f291006, 0x1c2e4e72, 0x1c2b53db, 0x0f2e9842, 0x0f3f2d71, 0x1c225d94, - 0x1c1f5ea6, 0x0f44b354, 0x0f554175, 0x1c165b5b, 0x1c135818, 0x0f5ac4fc, 0x0f6b4c03, 0x1c0a47cf, - 0x1c074038, 0x0f70cd2a, 0x0f814d0e, 0x1bfe22f8, 0x1bfb170f, 0x0f86cbd3, 0x0f974489, 0x1bf1ecdb, - 0x1beedca2, 0x0f9cc0e7, 0x0fad3265, 0x1be5a582, 0x1be290fb, 0x0fb2ac5a, 0x0fc31697, 0x1bd94cf4, - 0x1bd63421, 0x0fc88e1e, 0x0fd8f10f, 0x1bcce337, 0x1bc9c61a, 0x0fde6626, 0x0feec1c0, 0x1bc06855, - 0x1bbd46f0, 0x0ff43464, 0x1004889e, 0x1bb3dc55, 0x1bb0b6a9, 0x1009f8cb, 0x101a459a, 0x1ba73f3d, - 0x1ba4154d, 0x101fb34d, 0x102ff8a8, 0x1b9a9117, 0x1b9762e4, 0x103563dc, 0x1045a1b9, 0x1b8dd1ea, - 0x1b8a9f77, 0x104b0a6c, 0x105b40c1, 0x1b8101be, 0x1b7dcb0c, 0x1060a6ef, 0x1070d5b1, 0x1b74209b, - 0x1b70e5ac, 0x10763958, 0x1086607e, 0x1b672e88, 0x1b63ef5f, 0x108bc19a, 0x109be119, 0x1b5a2b8e, - 0x1b56e82c, 0x10a13fa6, 0x10b15775, 0x1b4d17b4, 0x1b49d01c, 0x10b6b371, 0x10c6c385, 0x1b3ff304, - 0x1b3ca737, 0x10cc1cec, 0x10dc253c, 0x1b32bd84, 0x1b2f6d85, 0x10e17c0b, 0x10f17c8d, 0x1b25773d, - 0x1b22230e, 0x10f6d0c0, 0x1106c96a, 0x1b182038, 0x1b14c7da, 0x110c1afe, 0x111c0bc6, 0x1b0ab87c, - 0x1b075bf1, 0x11215ab8, 0x11314395, 0x1afd4012, 0x1af9df5d, 0x11368fe1, 0x114670c8, 0x1aefb702, - 0x1aec5225, 0x114bba6b, 0x115b9354, 0x1ae21d54, 0x1adeb451, 0x1160da4b, 0x1170ab2a, 0x1ad47311, - 0x1ad105e9, 0x1175ef72, 0x1185b83f, 0x1ac6b841, 0x1ac346f8, 0x118af9d4, 0x119aba84, 0x1ab8ecec, - 0x1ab57784, 0x119ff964, 0x11afb1ee, 0x1aab111c, 0x1aa79796, 0x11b4ee14, 0x11c49e6f, 0x1a9d24d9, - 0x1a99a737, 0x11c9d7d9, 0x11d97ff9, 0x1a8f282b, 0x1a8ba670, 0x11deb6a4, 0x11ee5682, 0x1a811b1b, - 0x1a7d9549, 0x11f38a6a, 0x120321fa, 0x1a72fdb2, 0x1a6f73ca, 0x1208531c, 0x1217e256, 0x1a64cff8, - 0x1a6141fd, 0x121d10af, 0x122c9789, 0x1a5691f5, 0x1a52ffeb, 0x1231c316, 0x12414186, 0x1a4843b4, - 0x1a44ad9b, 0x12466a44, 0x1255e041, 0x1a39e53d, 0x1a364b17, 0x125b062b, 0x126a73ac, 0x1a2b7698, - 0x1a27d868, 0x126f96c1, 0x127efbbb, 0x1a1cf7ce, 0x1a195597, 0x12841bf6, 0x12937861, 0x1a0e68e9, - 0x1a0ac2ac, 0x129895c0, 0x12a7e991, 0x19ffc9f1, 0x19fc1fb1, 0x12ad0412, 0x12bc4f40, 0x19f11af0, - 0x19ed6caf, 0x12c166de, 0x12d0a960, 0x19e25bee, 0x19dea9ae, 0x12d5be18, 0x12e4f7e5, 0x19d38cf4, - 0x19cfd6b8, 0x12ea09b4, 0x12f93ac2, 0x19c4ae0c, 0x19c0f3d6, 0x12fe49a6, 0x130d71eb, 0x19b5bf3f, - 0x19b20111, 0x13127de0, 0x13219d53, 0x19a6c096, 0x19a2fe73, 0x1326a656, 0x1335bcef, 0x1997b21b, - 0x1993ec04, 0x133ac2fc, 0x1349d0b0, 0x198893d6, 0x1984c9ce, 0x134ed3c5, 0x135dd88c, 0x197965d0, - 0x197597da, 0x1362d8a6, 0x1371d476, 0x196a2815, 0x19665632, 0x1376d191, 0x1385c461, 0x195adaab, - 0x195704df, 0x138abe7b, 0x1399a841, 0x194b7d9e, 0x1947a3eb, 0x139e9f56, 0x13ad800a, 0x193c10f7, - 0x1938335e, 0x13b27417, 0x13c14bb0, 0x192c94bf, 0x1928b343, 0x13c63cb2, 0x13d50b26, 0x191d08ff, - 0x191923a3, 0x13d9f91b, 0x13e8be60, 0x190d6dc1, 0x19098488, 0x13eda944, 0x13fc6553, 0x18fdc310, - 0x18f9d5fa, 0x14014d23, 0x140ffff1, 0x18ee08f4, 0x18ea1805, 0x1414e4aa, 0x14238e2f, 0x18de3f77, - 0x18da4ab2, 0x14286fce, 0x14371001, 0x18ce66a3, 0x18ca6e0a, 0x143bee83, 0x144a855b, 0x18be7e82, - 0x18ba8217, 0x144f60bd, 0x145dee30, 0x18ae871e, 0x18aa86e3, 0x1462c670, 0x14714a76, 0x189e8080, - 0x189a7c78, 0x14761f8f, 0x14849a1f, 0x188e6ab2, 0x188a62e0, 0x14896c0f, 0x1497dd20, 0x187e45be, - 0x187a3a25, 0x149cabe4, 0x14ab136d, 0x186e11af, 0x186a0250, 0x14afdf03, 0x14be3cfa, 0x185dce8e, - 0x1859bb6c, 0x14c3055e, 0x14d159bc, 0x184d7c65, 0x18496583, 0x14d61eeb, 0x14e469a6, 0x183d1b3e, - 0x1839009e, 0x14e92b9e, 0x14f76cad, 0x182cab24, 0x18288cc8, 0x14fc2b6a, 0x150a62c6, 0x181c2c20, - 0x18180a0c, 0x150f1e45, 0x151d4be3, 0x180b9e3d, 0x18077873, 0x15220422, 0x153027fb, 0x17fb0185, - 0x17f6d807, 0x1534dcf6, 0x1542f700, 0x17ea5602, 0x17e628d3, 0x1547a8b5, 0x1555b8e8, 0x17d99bbe, - 0x17d56ae0, 0x155a6754, 0x15686da7, 0x17c8d2c4, 0x17c49e3b, 0x156d18c7, 0x157b1532, 0x17b7fb1f, - 0x17b3c2ec, 0x157fbd03, 0x158daf7c, 0x17a714d7, 0x17a2d8fe, 0x159253fb, 0x15a03c7a, 0x17961ff9, - 0x1791e07b, 0x15a4dda5, 0x15b2bc22, 0x17851c8e, 0x1780d96f, 0x15b759f5, 0x15c52e67, 0x17740aa1, - 0x176fc3e3, 0x15c9c8e0, 0x15d7933f, 0x1762ea3d, 0x175e9fe2, 0x15dc2a5a, 0x15e9ea9d, 0x1751bb6b, - 0x174d6d77, 0x15ee7e58, 0x15fc3477, 0x17407e37, 0x173c2cac, 0x1600c4cf, 0x160e70c1, 0x172f32ab, - 0x172add8c, 0x1612fdb3, 0x16209f70, 0x171dd8d2, 0x17198021, 0x162528fa, 0x1632c078, 0x170c70b7, - 0x17081477, 0x16374697, 0x1644d3d0, 0x16fafa64, 0x16f69a97, 0x16495680, 0x1656d96a, 0x16e975e4, - 0x16e5128e, 0x165b58aa, 0x1668d13e, 0x16d7e341, 0x16d37c65, 0x166d4d0a, 0x167abb3e, 0x16c64288, + 0x1fffffd9, 0x0003243f, 0x0015fdba, 0x1ffff872, 0x1ffff382, 0x001c4637, 0x002f1fa6, 0x1fffdd4d, + 0x1fffd36f, 0x0035681d, 0x00484175, 0x1fffae6c, 0x1fff9f9e, 0x004e89e3, 0x00616318, 0x1fff6bce, + 0x1fff5811, 0x0067ab77, 0x007a847e, 0x1fff1572, 0x1ffefcc6, 0x0080cccc, 0x0093a599, 0x1ffeab5b, + 0x1ffe8dbf, 0x0099edd2, 0x00acc658, 0x1ffe2d86, 0x1ffe0afc, 0x00b30e78, 0x00c5e6ad, 0x1ffd9bf6, + 0x1ffd747c, 0x00cc2eb0, 0x00df0688, 0x1ffcf6aa, 0x1ffcca41, 0x00e54e6a, 0x00f825da, 0x1ffc3da2, + 0x1ffc0c4b, 0x00fe6d97, 0x01114492, 0x1ffb70e0, 0x1ffb3a9a, 0x01178c27, 0x012a62a2, 0x1ffa9063, + 0x1ffa552e, 0x0130aa0a, 0x01437ffa, 0x1ff99c2c, 0x1ff95c09, 0x0149c731, 0x015c9c8a, 0x1ff8943c, + 0x1ff84f2b, 0x0162e38d, 0x0175b843, 0x1ff77893, 0x1ff72e94, 0x017bff0e, 0x018ed316, 0x1ff64932, + 0x1ff5fa46, 0x019519a5, 0x01a7ecf2, 0x1ff5061b, 0x1ff4b240, 0x01ae3341, 0x01c105c9, 0x1ff3af4c, + 0x1ff35684, 0x01c74bd5, 0x01da1d8c, 0x1ff244c8, 0x1ff1e713, 0x01e0634f, 0x01f33429, 0x1ff0c68f, + 0x1ff063ed, 0x01f979a1, 0x020c4993, 0x1fef34a3, 0x1feecd14, 0x02128ebb, 0x02255db9, 0x1fed8f03, + 0x1fed2287, 0x022ba28f, 0x023e708d, 0x1febd5b2, 0x1feb644a, 0x0244b50b, 0x025781fe, 0x1fea08b0, + 0x1fe9925c, 0x025dc621, 0x027091fd, 0x1fe827fe, 0x1fe7acbe, 0x0276d5c1, 0x0289a07b, 0x1fe6339d, + 0x1fe5b372, 0x028fe3dd, 0x02a2ad69, 0x1fe42b90, 0x1fe3a679, 0x02a8f063, 0x02bbb8b6, 0x1fe20fd6, + 0x1fe185d5, 0x02c1fb46, 0x02d4c253, 0x1fdfe071, 0x1fdf5186, 0x02db0475, 0x02edca32, 0x1fdd9d64, + 0x1fdd098e, 0x02f40be2, 0x0306d042, 0x1fdb46ae, 0x1fdaadee, 0x030d117c, 0x031fd474, 0x1fd8dc51, + 0x1fd83ea8, 0x03261534, 0x0338d6b8, 0x1fd65e4f, 0x1fd5bbbd, 0x033f16fb, 0x0351d700, 0x1fd3ccaa, + 0x1fd32530, 0x035816c1, 0x036ad53c, 0x1fd12763, 0x1fd07b00, 0x03711477, 0x0383d15c, 0x1fce6e7c, + 0x1fcdbd31, 0x038a100e, 0x039ccb51, 0x1fcba1f5, 0x1fcaebc3, 0x03a30975, 0x03b5c30b, 0x1fc8c1d2, + 0x1fc806b9, 0x03bc009f, 0x03ceb87c, 0x1fc5ce14, 0x1fc50e14, 0x03d4f57a, 0x03e7ab93, 0x1fc2c6bd, + 0x1fc201d7, 0x03ede7f9, 0x04009c42, 0x1fbfabcd, 0x1fbee202, 0x0406d80b, 0x04198a78, 0x1fbc7d49, + 0x1fbbae99, 0x041fc5a1, 0x04327628, 0x1fb93b31, 0x1fb8679c, 0x0438b0ac, 0x044b5f40, 0x1fb5e587, + 0x1fb50d0e, 0x0451991d, 0x046445b2, 0x1fb27c4e, 0x1fb19ef1, 0x046a7ee3, 0x047d296f, 0x1faeff87, + 0x1fae1d47, 0x048361f0, 0x04960a67, 0x1fab6f35, 0x1faa8813, 0x049c4235, 0x04aee88b, 0x1fa7cb5a, + 0x1fa6df56, 0x04b51fa1, 0x04c7c3cb, 0x1fa413f8, 0x1fa32313, 0x04cdfa26, 0x04e09c18, 0x1fa04912, + 0x1f9f534c, 0x04e6d1b4, 0x04f97163, 0x1f9c6aa9, 0x1f9b7003, 0x04ffa63c, 0x0512439d, 0x1f9878c1, + 0x1f97793b, 0x051877af, 0x052b12b6, 0x1f94735b, 0x1f936ef6, 0x053145fd, 0x0543de9e, 0x1f905a7a, + 0x1f8f5137, 0x054a1117, 0x055ca748, 0x1f8c2e21, 0x1f8b2000, 0x0562d8ee, 0x05756ca2, 0x1f87ee52, + 0x1f86db55, 0x057b9d73, 0x058e2e9f, 0x1f839b10, 0x1f828336, 0x05945e95, 0x05a6ed2e, 0x1f7f345e, + 0x1f7e17a8, 0x05ad1c47, 0x05bfa840, 0x1f7aba3e, 0x1f7998ad, 0x05c5d678, 0x05d85fc7, 0x1f762cb2, + 0x1f750647, 0x05de8d19, 0x05f113b3, 0x1f718bbf, 0x1f70607a, 0x05f7401c, 0x0609c3f5, 0x1f6cd766, + 0x1f6ba748, 0x060fef71, 0x0622707d, 0x1f680fab, 0x1f66dab5, 0x06289b08, 0x063b193c, 0x1f633490, + 0x1f61fac3, 0x064142d3, 0x0653be23, 0x1f5e4619, 0x1f5d0775, 0x0659e6c2, 0x066c5f24, 0x1f594448, + 0x1f5800ce, 0x067286c6, 0x0684fc2e, 0x1f542f21, 0x1f52e6d2, 0x068b22d0, 0x069d9532, 0x1f4f06a6, + 0x1f4db983, 0x06a3bad0, 0x06b62a22, 0x1f49cadc, 0x1f4878e5, 0x06bc4eb9, 0x06cebaee, 0x1f447bc4, + 0x1f4324fb, 0x06d4de79, 0x06e74786, 0x1f3f1963, 0x1f3dbdc8, 0x06ed6a03, 0x06ffcfdd, 0x1f39a3bc, + 0x1f384350, 0x0705f147, 0x071853e3, 0x1f341ad2, 0x1f32b595, 0x071e7436, 0x0730d388, 0x1f2e7ea9, + 0x1f2d149d, 0x0736f2c0, 0x07494ebd, 0x1f28cf43, 0x1f276069, 0x074f6cd7, 0x0761c574, 0x1f230ca5, + 0x1f2198fd, 0x0767e26c, 0x077a379d, 0x1f1d36d2, 0x1f1bbe5d, 0x07805370, 0x0792a52a, 0x1f174dce, + 0x1f15d08d, 0x0798bfd3, 0x07ab0e0a, 0x1f11519c, 0x1f0fcf91, 0x07b12786, 0x07c37230, 0x1f0b4240, + 0x1f09bb6b, 0x07c98a7a, 0x07dbd18c, 0x1f051fbe, 0x1f03941f, 0x07e1e8a1, 0x07f42c0e, 0x1efeea19, + 0x1efd59b3, 0x07fa41eb, 0x080c81a9, 0x1ef8a155, 0x1ef70c28, 0x0812964a, 0x0824d24d, 0x1ef24577, + 0x1ef0ab84, 0x082ae5ad, 0x083d1dea, 0x1eebd682, 0x1eea37ca, 0x08433007, 0x08556473, 0x1ee5547a, + 0x1ee3b0fe, 0x085b7548, 0x086da5d8, 0x1edebf64, 0x1edd1724, 0x0873b562, 0x0885e209, 0x1ed81742, + 0x1ed66a41, 0x088bf044, 0x089e18f9, 0x1ed15c1a, 0x1ecfaa57, 0x08a425e1, 0x08b64a98, 0x1eca8def, + 0x1ec8d76c, 0x08bc562a, 0x08ce76d8, 0x1ec3acc6, 0x1ec1f184, 0x08d4810f, 0x08e69da8, 0x1ebcb8a3, + 0x1ebaf8a3, 0x08eca681, 0x08febefb, 0x1eb5b18a, 0x1eb3eccd, 0x0904c673, 0x0916dac2, 0x1eae977f, + 0x1eacce07, 0x091ce0d4, 0x092ef0ed, 0x1ea76a87, 0x1ea59c55, 0x0934f596, 0x0947016e, 0x1ea02aa7, + 0x1e9e57bb, 0x094d04aa, 0x095f0c36, 0x1e98d7e2, 0x1e97003e, 0x09650e01, 0x09771136, 0x1e91723e, + 0x1e8f95e3, 0x097d118d, 0x098f1060, 0x1e89f9bf, 0x1e8818ad, 0x09950f3f, 0x09a709a4, 0x1e826e69, + 0x1e8088a2, 0x09ad0707, 0x09befcf4, 0x1e7ad041, 0x1e78e5c7, 0x09c4f8d8, 0x09d6ea40, 0x1e731f4c, + 0x1e71301f, 0x09dce4a1, 0x09eed17b, 0x1e6b5b8f, 0x1e6967b1, 0x09f4ca56, 0x0a06b296, 0x1e63850e, + 0x1e618c80, 0x0a0ca9e6, 0x0a1e8d81, 0x1e5b9bce, 0x1e599e91, 0x0a248343, 0x0a36622e, 0x1e539fd4, + 0x1e519dea, 0x0a3c565e, 0x0a4e308f, 0x1e4b9126, 0x1e498a8e, 0x0a542329, 0x0a65f894, 0x1e436fc7, + 0x1e416485, 0x0a6be995, 0x0a7dba2f, 0x1e3b3bbd, 0x1e392bd1, 0x0a83a993, 0x0a957551, 0x1e32f50e, + 0x1e30e079, 0x0a9b6315, 0x0aad29ec, 0x1e2a9bbd, 0x1e288281, 0x0ab3160c, 0x0ac4d7f1, 0x1e222fd1, + 0x1e2011ee, 0x0acac26a, 0x0adc7f52, 0x1e19b14f, 0x1e178ec7, 0x0ae2681f, 0x0af41fff, 0x1e11203b, + 0x1e0ef910, 0x0afa071d, 0x0b0bb9eb, 0x1e087c9b, 0x1e0650ce, 0x0b119f56, 0x0b234d07, 0x1dffc674, + 0x1dfd9606, 0x0b2930bb, 0x0b3ad943, 0x1df6fdcc, 0x1df4c8bf, 0x0b40bb3e, 0x0b525e92, 0x1dee22a9, + 0x1debe8fd, 0x0b583ecf, 0x0b69dce6, 0x1de5350f, 0x1de2f6c6, 0x0b6fbb62, 0x0b81542f, 0x1ddc3504, + 0x1dd9f220, 0x0b8730e6, 0x0b98c45f, 0x1dd3228e, 0x1dd0db10, 0x0b9e9f4d, 0x0bb02d68, 0x1dc9fdb2, + 0x1dc7b19b, 0x0bb6068a, 0x0bc78f3b, 0x1dc0c676, 0x1dbe75c8, 0x0bcd668e, 0x0bdee9ca, 0x1db77cdf, + 0x1db5279c, 0x0be4bf4a, 0x0bf63d07, 0x1dae20f4, 0x1dabc71d, 0x0bfc10af, 0x0c0d88e2, 0x1da4b2ba, + 0x1da25450, 0x0c135ab0, 0x0c24cd4e, 0x1d9b3237, 0x1d98cf3b, 0x0c2a9d3e, 0x0c3c0a3d, 0x1d919f70, + 0x1d8f37e5, 0x0c41d84b, 0x0c533fa0, 0x1d87fa6d, 0x1d858e53, 0x0c590bc9, 0x0c6a6d68, 0x1d7e4332, + 0x1d7bd28b, 0x0c7037a8, 0x0c819388, 0x1d7479c5, 0x1d720493, 0x0c875bdb, 0x0c98b1f0, 0x1d6a9e2e, + 0x1d682472, 0x0c9e7854, 0x0cafc894, 0x1d60b070, 0x1d5e322c, 0x0cb58d04, 0x0cc6d764, 0x1d56b094, + 0x1d542dc9, 0x0ccc99de, 0x0cddde53, 0x1d4c9e9f, 0x1d4a174f, 0x0ce39ed2, 0x0cf4dd52, 0x1d427a97, + 0x1d3feec3, 0x0cfa9bd2, 0x0d0bd452, 0x1d384483, 0x1d35b42d, 0x0d1190d1, 0x0d22c347, 0x1d2dfc68, + 0x1d2b6791, 0x0d287dc1, 0x0d39aa21, 0x1d23a24e, 0x1d2108f8, 0x0d3f6292, 0x0d5088d3, 0x1d19363a, + 0x1d169867, 0x0d563f38, 0x0d675f4e, 0x1d0eb833, 0x1d0c15e4, 0x0d6d13a3, 0x0d7e2d85, 0x1d04283f, + 0x1d018176, 0x0d83dfc6, 0x0d94f369, 0x1cf98666, 0x1cf6db24, 0x0d9aa393, 0x0dabb0ec, 0x1ceed2ad, + 0x1cec22f4, 0x0db15efc, 0x0dc26600, 0x1ce40d1b, 0x1ce158ed, 0x0dc811f3, 0x0dd91298, 0x1cd935b7, + 0x1cd67d15, 0x0ddebc69, 0x0defb6a5, 0x1cce4c87, 0x1ccb8f74, 0x0df55e51, 0x0e065219, 0x1cc35192, + 0x1cc0900f, 0x0e0bf79c, 0x0e1ce4e6, 0x1cb844df, 0x1cb57eee, 0x0e22883e, 0x0e336eff, 0x1cad2675, + 0x1caa5c17, 0x0e391027, 0x0e49f055, 0x1ca1f65b, 0x1c9f2792, 0x0e4f8f4b, 0x0e6068db, 0x1c96b497, + 0x1c93e165, 0x0e66059a, 0x0e76d883, 0x1c8b6131, 0x1c888997, 0x0e7c7308, 0x0e8d3f3e, 0x1c7ffc2f, + 0x1c7d202f, 0x0e92d787, 0x0ea39d00, 0x1c748599, 0x1c71a535, 0x0ea93308, 0x0eb9f1ba, 0x1c68fd75, + 0x1c6618ae, 0x0ebf857d, 0x0ed03d5e, 0x1c5d63ca, 0x1c5a7aa4, 0x0ed5ceda, 0x0ee67fdf, 0x1c51b8a1, + 0x1c4ecb1c, 0x0eec0f10, 0x0efcb92f, 0x1c45fc00, 0x1c430a1d, 0x0f024612, 0x0f12e941, 0x1c3a2ded, + 0x1c3737b0, 0x0f1873d2, 0x0f291006, 0x1c2e4e72, 0x1c2b53db, 0x0f2e9842, 0x0f3f2d71, 0x1c225d94, + 0x1c1f5ea6, 0x0f44b354, 0x0f554175, 0x1c165b5b, 0x1c135818, 0x0f5ac4fc, 0x0f6b4c03, 0x1c0a47cf, + 0x1c074038, 0x0f70cd2a, 0x0f814d0e, 0x1bfe22f8, 0x1bfb170f, 0x0f86cbd3, 0x0f974489, 0x1bf1ecdb, + 0x1beedca2, 0x0f9cc0e7, 0x0fad3265, 0x1be5a582, 0x1be290fb, 0x0fb2ac5a, 0x0fc31697, 0x1bd94cf4, + 0x1bd63421, 0x0fc88e1e, 0x0fd8f10f, 0x1bcce337, 0x1bc9c61a, 0x0fde6626, 0x0feec1c0, 0x1bc06855, + 0x1bbd46f0, 0x0ff43464, 0x1004889e, 0x1bb3dc55, 0x1bb0b6a9, 0x1009f8cb, 0x101a459a, 0x1ba73f3d, + 0x1ba4154d, 0x101fb34d, 0x102ff8a8, 0x1b9a9117, 0x1b9762e4, 0x103563dc, 0x1045a1b9, 0x1b8dd1ea, + 0x1b8a9f77, 0x104b0a6c, 0x105b40c1, 0x1b8101be, 0x1b7dcb0c, 0x1060a6ef, 0x1070d5b1, 0x1b74209b, + 0x1b70e5ac, 0x10763958, 0x1086607e, 0x1b672e88, 0x1b63ef5f, 0x108bc19a, 0x109be119, 0x1b5a2b8e, + 0x1b56e82c, 0x10a13fa6, 0x10b15775, 0x1b4d17b4, 0x1b49d01c, 0x10b6b371, 0x10c6c385, 0x1b3ff304, + 0x1b3ca737, 0x10cc1cec, 0x10dc253c, 0x1b32bd84, 0x1b2f6d85, 0x10e17c0b, 0x10f17c8d, 0x1b25773d, + 0x1b22230e, 0x10f6d0c0, 0x1106c96a, 0x1b182038, 0x1b14c7da, 0x110c1afe, 0x111c0bc6, 0x1b0ab87c, + 0x1b075bf1, 0x11215ab8, 0x11314395, 0x1afd4012, 0x1af9df5d, 0x11368fe1, 0x114670c8, 0x1aefb702, + 0x1aec5225, 0x114bba6b, 0x115b9354, 0x1ae21d54, 0x1adeb451, 0x1160da4b, 0x1170ab2a, 0x1ad47311, + 0x1ad105e9, 0x1175ef72, 0x1185b83f, 0x1ac6b841, 0x1ac346f8, 0x118af9d4, 0x119aba84, 0x1ab8ecec, + 0x1ab57784, 0x119ff964, 0x11afb1ee, 0x1aab111c, 0x1aa79796, 0x11b4ee14, 0x11c49e6f, 0x1a9d24d9, + 0x1a99a737, 0x11c9d7d9, 0x11d97ff9, 0x1a8f282b, 0x1a8ba670, 0x11deb6a4, 0x11ee5682, 0x1a811b1b, + 0x1a7d9549, 0x11f38a6a, 0x120321fa, 0x1a72fdb2, 0x1a6f73ca, 0x1208531c, 0x1217e256, 0x1a64cff8, + 0x1a6141fd, 0x121d10af, 0x122c9789, 0x1a5691f5, 0x1a52ffeb, 0x1231c316, 0x12414186, 0x1a4843b4, + 0x1a44ad9b, 0x12466a44, 0x1255e041, 0x1a39e53d, 0x1a364b17, 0x125b062b, 0x126a73ac, 0x1a2b7698, + 0x1a27d868, 0x126f96c1, 0x127efbbb, 0x1a1cf7ce, 0x1a195597, 0x12841bf6, 0x12937861, 0x1a0e68e9, + 0x1a0ac2ac, 0x129895c0, 0x12a7e991, 0x19ffc9f1, 0x19fc1fb1, 0x12ad0412, 0x12bc4f40, 0x19f11af0, + 0x19ed6caf, 0x12c166de, 0x12d0a960, 0x19e25bee, 0x19dea9ae, 0x12d5be18, 0x12e4f7e5, 0x19d38cf4, + 0x19cfd6b8, 0x12ea09b4, 0x12f93ac2, 0x19c4ae0c, 0x19c0f3d6, 0x12fe49a6, 0x130d71eb, 0x19b5bf3f, + 0x19b20111, 0x13127de0, 0x13219d53, 0x19a6c096, 0x19a2fe73, 0x1326a656, 0x1335bcef, 0x1997b21b, + 0x1993ec04, 0x133ac2fc, 0x1349d0b0, 0x198893d6, 0x1984c9ce, 0x134ed3c5, 0x135dd88c, 0x197965d0, + 0x197597da, 0x1362d8a6, 0x1371d476, 0x196a2815, 0x19665632, 0x1376d191, 0x1385c461, 0x195adaab, + 0x195704df, 0x138abe7b, 0x1399a841, 0x194b7d9e, 0x1947a3eb, 0x139e9f56, 0x13ad800a, 0x193c10f7, + 0x1938335e, 0x13b27417, 0x13c14bb0, 0x192c94bf, 0x1928b343, 0x13c63cb2, 0x13d50b26, 0x191d08ff, + 0x191923a3, 0x13d9f91b, 0x13e8be60, 0x190d6dc1, 0x19098488, 0x13eda944, 0x13fc6553, 0x18fdc310, + 0x18f9d5fa, 0x14014d23, 0x140ffff1, 0x18ee08f4, 0x18ea1805, 0x1414e4aa, 0x14238e2f, 0x18de3f77, + 0x18da4ab2, 0x14286fce, 0x14371001, 0x18ce66a3, 0x18ca6e0a, 0x143bee83, 0x144a855b, 0x18be7e82, + 0x18ba8217, 0x144f60bd, 0x145dee30, 0x18ae871e, 0x18aa86e3, 0x1462c670, 0x14714a76, 0x189e8080, + 0x189a7c78, 0x14761f8f, 0x14849a1f, 0x188e6ab2, 0x188a62e0, 0x14896c0f, 0x1497dd20, 0x187e45be, + 0x187a3a25, 0x149cabe4, 0x14ab136d, 0x186e11af, 0x186a0250, 0x14afdf03, 0x14be3cfa, 0x185dce8e, + 0x1859bb6c, 0x14c3055e, 0x14d159bc, 0x184d7c65, 0x18496583, 0x14d61eeb, 0x14e469a6, 0x183d1b3e, + 0x1839009e, 0x14e92b9e, 0x14f76cad, 0x182cab24, 0x18288cc8, 0x14fc2b6a, 0x150a62c6, 0x181c2c20, + 0x18180a0c, 0x150f1e45, 0x151d4be3, 0x180b9e3d, 0x18077873, 0x15220422, 0x153027fb, 0x17fb0185, + 0x17f6d807, 0x1534dcf6, 0x1542f700, 0x17ea5602, 0x17e628d3, 0x1547a8b5, 0x1555b8e8, 0x17d99bbe, + 0x17d56ae0, 0x155a6754, 0x15686da7, 0x17c8d2c4, 0x17c49e3b, 0x156d18c7, 0x157b1532, 0x17b7fb1f, + 0x17b3c2ec, 0x157fbd03, 0x158daf7c, 0x17a714d7, 0x17a2d8fe, 0x159253fb, 0x15a03c7a, 0x17961ff9, + 0x1791e07b, 0x15a4dda5, 0x15b2bc22, 0x17851c8e, 0x1780d96f, 0x15b759f5, 0x15c52e67, 0x17740aa1, + 0x176fc3e3, 0x15c9c8e0, 0x15d7933f, 0x1762ea3d, 0x175e9fe2, 0x15dc2a5a, 0x15e9ea9d, 0x1751bb6b, + 0x174d6d77, 0x15ee7e58, 0x15fc3477, 0x17407e37, 0x173c2cac, 0x1600c4cf, 0x160e70c1, 0x172f32ab, + 0x172add8c, 0x1612fdb3, 0x16209f70, 0x171dd8d2, 0x17198021, 0x162528fa, 0x1632c078, 0x170c70b7, + 0x17081477, 0x16374697, 0x1644d3d0, 0x16fafa64, 0x16f69a97, 0x16495680, 0x1656d96a, 0x16e975e4, + 0x16e5128e, 0x165b58aa, 0x1668d13e, 0x16d7e341, 0x16d37c65, 0x166d4d0a, 0x167abb3e, 0x16c64288, 0x16c1d827, 0x167f3394, 0x168c9760, 0x16b493c2, 0x16b025e0, 0x16910c3d, 0x169e659a, 0x16a2d6fb }; const int twidTab512[8*6 + 32*6 + 128*6] = { - 0x20000000, 0x00000000, 0x1d906bcf, 0x0c3ef153, 0x16a09e66, 0x16a09e66, 0x0c3ef153, 0x1d906bcf, - 0x20000000, 0x00000000, 0x1f6297d0, 0x063e2e0f, 0x1d906bcf, 0x0c3ef153, 0x1a9b6629, 0x11c73b3a, - 0x20000000, 0x00000000, 0x1a9b6629, 0x11c73b3a, 0x0c3ef153, 0x1d906bcf, 0xf9c1d1f1, 0x1f6297d0, - 0x00000000, 0x20000000, 0xf3c10ead, 0x1d906bcf, 0xe95f619a, 0x16a09e66, 0xe26f9431, 0x0c3ef153, - 0x16a09e66, 0x16a09e66, 0x11c73b3a, 0x1a9b6629, 0x0c3ef153, 0x1d906bcf, 0x063e2e0f, 0x1f6297d0, - 0xe95f619a, 0x16a09e66, 0xe09d6830, 0x063e2e0f, 0xe26f9431, 0xf3c10ead, 0xee38c4c6, 0xe56499d7, - - 0x20000000, 0x00000000, 0x1fd88da4, 0x0322f4d8, 0x1f6297d0, 0x063e2e0f, 0x1e9f4157, 0x094a0317, - 0x20000000, 0x00000000, 0x1ff621e3, 0x0191f65f, 0x1fd88da4, 0x0322f4d8, 0x1fa7557f, 0x04b2041c, - 0x20000000, 0x00000000, 0x1fa7557f, 0x04b2041c, 0x1e9f4157, 0x094a0317, 0x1ced7af4, 0x0dae8805, - 0x1d906bcf, 0x0c3ef153, 0x1c38b2f2, 0x0f15ae9c, 0x1a9b6629, 0x11c73b3a, 0x18bc806b, 0x144cf325, - 0x1f6297d0, 0x063e2e0f, 0x1f0a7efc, 0x07c67e5f, 0x1e9f4157, 0x094a0317, 0x1e212105, 0x0ac7cd3b, - 0x1a9b6629, 0x11c73b3a, 0x17b5df22, 0x157d6935, 0x144cf325, 0x18bc806b, 0x10738799, 0x1b728345, - 0x16a09e66, 0x16a09e66, 0x144cf325, 0x18bc806b, 0x11c73b3a, 0x1a9b6629, 0x0f15ae9c, 0x1c38b2f2, - 0x1d906bcf, 0x0c3ef153, 0x1ced7af4, 0x0dae8805, 0x1c38b2f2, 0x0f15ae9c, 0x1b728345, 0x10738799, - 0x0c3ef153, 0x1d906bcf, 0x07c67e5f, 0x1f0a7efc, 0x0322f4d8, 0x1fd88da4, 0xfe6e09a1, 0x1ff621e3, - 0x0c3ef153, 0x1d906bcf, 0x094a0317, 0x1e9f4157, 0x063e2e0f, 0x1f6297d0, 0x0322f4d8, 0x1fd88da4, - 0x1a9b6629, 0x11c73b3a, 0x19b3e048, 0x130ff7fd, 0x18bc806b, 0x144cf325, 0x17b5df22, 0x157d6935, - 0xf9c1d1f1, 0x1f6297d0, 0xf53832c5, 0x1e212105, 0xf0ea5164, 0x1c38b2f2, 0xecf00803, 0x19b3e048, - 0x00000000, 0x20000000, 0xfcdd0b28, 0x1fd88da4, 0xf9c1d1f1, 0x1f6297d0, 0xf6b5fce9, 0x1e9f4157, - 0x16a09e66, 0x16a09e66, 0x157d6935, 0x17b5df22, 0x144cf325, 0x18bc806b, 0x130ff7fd, 0x19b3e048, - 0xe95f619a, 0x16a09e66, 0xe64c1fb8, 0x130ff7fd, 0xe3c74d0e, 0x0f15ae9c, 0xe1dedefb, 0x0ac7cd3b, - 0xf3c10ead, 0x1d906bcf, 0xf0ea5164, 0x1c38b2f2, 0xee38c4c6, 0x1a9b6629, 0xebb30cdb, 0x18bc806b, - 0x11c73b3a, 0x1a9b6629, 0x10738799, 0x1b728345, 0x0f15ae9c, 0x1c38b2f2, 0x0dae8805, 0x1ced7af4, - 0xe09d6830, 0x063e2e0f, 0xe009de1d, 0x0191f65f, 0xe027725c, 0xfcdd0b28, 0xe0f58104, 0xf83981a1, - 0xe95f619a, 0x16a09e66, 0xe7437f95, 0x144cf325, 0xe56499d7, 0x11c73b3a, 0xe3c74d0e, 0x0f15ae9c, - 0x0c3ef153, 0x1d906bcf, 0x0ac7cd3b, 0x1e212105, 0x094a0317, 0x1e9f4157, 0x07c67e5f, 0x1f0a7efc, - 0xe26f9431, 0xf3c10ead, 0xe48d7cbb, 0xef8c7867, 0xe7437f95, 0xebb30cdb, 0xea8296cb, 0xe84a20de, - 0xe26f9431, 0x0c3ef153, 0xe160bea9, 0x094a0317, 0xe09d6830, 0x063e2e0f, 0xe027725c, 0x0322f4d8, - 0x063e2e0f, 0x1f6297d0, 0x04b2041c, 0x1fa7557f, 0x0322f4d8, 0x1fd88da4, 0x0191f65f, 0x1ff621e3, - 0xee38c4c6, 0xe56499d7, 0xf25177fb, 0xe312850c, 0xf6b5fce9, 0xe160bea9, 0xfb4dfbe4, 0xe058aa81, - - 0x20000000, 0x00000000, 0x1ffd8861, 0x00c90ab0, 0x1ff621e3, 0x0191f65f, 0x1fe9cdad, 0x025aa412, - 0x20000000, 0x00000000, 0x1fff6217, 0x00648748, 0x1ffd8861, 0x00c90ab0, 0x1ffa72f0, 0x012d8657, - 0x20000000, 0x00000000, 0x1ffa72f0, 0x012d8657, 0x1fe9cdad, 0x025aa412, 0x1fce15fd, 0x0386f0b9, - 0x1fd88da4, 0x0322f4d8, 0x1fc26471, 0x03eac9cb, 0x1fa7557f, 0x04b2041c, 0x1f8764fa, 0x05788511, - 0x1ff621e3, 0x0191f65f, 0x1ff09566, 0x01f656e8, 0x1fe9cdad, 0x025aa412, 0x1fe1cafd, 0x02beda01, - 0x1fa7557f, 0x04b2041c, 0x1f7599a4, 0x05db7678, 0x1f38f3ac, 0x0702e09b, 0x1ef178a4, 0x0827dc07, - 0x1f6297d0, 0x063e2e0f, 0x1f38f3ac, 0x0702e09b, 0x1f0a7efc, 0x07c67e5f, 0x1ed740e7, 0x0888e931, - 0x1fd88da4, 0x0322f4d8, 0x1fce15fd, 0x0386f0b9, 0x1fc26471, 0x03eac9cb, 0x1fb57972, 0x044e7c34, - 0x1e9f4157, 0x094a0317, 0x1e426a4b, 0x0a68f121, 0x1ddb13b7, 0x0b844298, 0x1d696174, 0x0c9b9532, - 0x1e9f4157, 0x094a0317, 0x1e6288ec, 0x0a09ae4a, 0x1e212105, 0x0ac7cd3b, 0x1ddb13b7, 0x0b844298, - 0x1fa7557f, 0x04b2041c, 0x1f97f925, 0x05155dac, 0x1f8764fa, 0x05788511, 0x1f7599a4, 0x05db7678, - 0x1ced7af4, 0x0dae8805, 0x1c678b35, 0x0ebcbbae, 0x1bd7c0ac, 0x0fc5d26e, 0x1b3e4d3f, 0x10c9704d, - 0x1d906bcf, 0x0c3ef153, 0x1d4134d1, 0x0cf7bca2, 0x1ced7af4, 0x0dae8805, 0x1c954b21, 0x0e63374d, - 0x1f6297d0, 0x063e2e0f, 0x1f4e603b, 0x06a0a809, 0x1f38f3ac, 0x0702e09b, 0x1f2252f7, 0x0764d3f9, - 0x1a9b6629, 0x11c73b3a, 0x19ef43ef, 0x12bedb26, 0x193a224a, 0x13affa29, 0x187c4010, 0x149a449c, - 0x1c38b2f2, 0x0f15ae9c, 0x1bd7c0ac, 0x0fc5d26e, 0x1b728345, 0x10738799, 0x1b090a58, 0x111eb354, - 0x1f0a7efc, 0x07c67e5f, 0x1ef178a4, 0x0827dc07, 0x1ed740e7, 0x0888e931, 0x1ebbd8c9, 0x08e9a220, - 0x17b5df22, 0x157d6935, 0x16e74455, 0x16591926, 0x1610b755, 0x172d0838, 0x15328293, 0x17f8ece3, - 0x1a9b6629, 0x11c73b3a, 0x1a29a7a0, 0x126d054d, 0x19b3e048, 0x130ff7fd, 0x193a224a, 0x13affa29, - 0x1e9f4157, 0x094a0317, 0x1e817bab, 0x09aa0861, 0x1e6288ec, 0x0a09ae4a, 0x1e426a4b, 0x0a68f121, - 0x144cf325, 0x18bc806b, 0x136058b1, 0x19777ef5, 0x126d054d, 0x1a29a7a0, 0x11734d64, 0x1ad2bc9e, - 0x18bc806b, 0x144cf325, 0x183b0e0c, 0x14e6cabc, 0x17b5df22, 0x157d6935, 0x172d0838, 0x1610b755, - 0x1e212105, 0x0ac7cd3b, 0x1dfeae62, 0x0b263eef, 0x1ddb13b7, 0x0b844298, 0x1db65262, 0x0be1d499, - 0x10738799, 0x1b728345, 0x0f6e0ca9, 0x1c08c426, 0x0e63374d, 0x1c954b21, 0x0d536416, 0x1d17e774, - 0x16a09e66, 0x16a09e66, 0x1610b755, 0x172d0838, 0x157d6935, 0x17b5df22, 0x14e6cabc, 0x183b0e0c, - 0x1d906bcf, 0x0c3ef153, 0x1d696174, 0x0c9b9532, 0x1d4134d1, 0x0cf7bca2, 0x1d17e774, 0x0d536416, - 0x0c3ef153, 0x1d906bcf, 0x0b263eef, 0x1dfeae62, 0x0a09ae4a, 0x1e6288ec, 0x08e9a220, 0x1ebbd8c9, - 0x144cf325, 0x18bc806b, 0x13affa29, 0x193a224a, 0x130ff7fd, 0x19b3e048, 0x126d054d, 0x1a29a7a0, - 0x1ced7af4, 0x0dae8805, 0x1cc1f0f4, 0x0e0924ec, 0x1c954b21, 0x0e63374d, 0x1c678b35, 0x0ebcbbae, - 0x07c67e5f, 0x1f0a7efc, 0x06a0a809, 0x1f4e603b, 0x05788511, 0x1f8764fa, 0x044e7c34, 0x1fb57972, - 0x11c73b3a, 0x1a9b6629, 0x111eb354, 0x1b090a58, 0x10738799, 0x1b728345, 0x0fc5d26e, 0x1bd7c0ac, - 0x1c38b2f2, 0x0f15ae9c, 0x1c08c426, 0x0f6e0ca9, 0x1bd7c0ac, 0x0fc5d26e, 0x1ba5aa67, 0x101cfc87, - 0x0322f4d8, 0x1fd88da4, 0x01f656e8, 0x1ff09566, 0x00c90ab0, 0x1ffd8861, 0xff9b78b8, 0x1fff6217, - 0x0f15ae9c, 0x1c38b2f2, 0x0e63374d, 0x1c954b21, 0x0dae8805, 0x1ced7af4, 0x0cf7bca2, 0x1d4134d1, - 0x1b728345, 0x10738799, 0x1b3e4d3f, 0x10c9704d, 0x1b090a58, 0x111eb354, 0x1ad2bc9e, 0x11734d64, - 0xfe6e09a1, 0x1ff621e3, 0xfd4125ff, 0x1fe1cafd, 0xfc153635, 0x1fc26471, 0xfaeaa254, 0x1f97f925, - 0x0c3ef153, 0x1d906bcf, 0x0b844298, 0x1ddb13b7, 0x0ac7cd3b, 0x1e212105, 0x0a09ae4a, 0x1e6288ec, - 0x1a9b6629, 0x11c73b3a, 0x1a63091b, 0x121a7999, 0x1a29a7a0, 0x126d054d, 0x19ef43ef, 0x12bedb26, - 0xf9c1d1f1, 0x1f6297d0, 0xf89b2c07, 0x1f2252f7, 0xf77716cf, 0x1ed740e7, 0xf655f79f, 0x1e817bab, - 0x094a0317, 0x1e9f4157, 0x0888e931, 0x1ed740e7, 0x07c67e5f, 0x1f0a7efc, 0x0702e09b, 0x1f38f3ac, - 0x19b3e048, 0x130ff7fd, 0x19777ef5, 0x136058b1, 0x193a224a, 0x13affa29, 0x18fbcca4, 0x13fed953, - 0xf53832c5, 0x1e212105, 0xf41e2b67, 0x1db65262, 0xf308435e, 0x1d4134d1, 0xf1f6db14, 0x1cc1f0f4, - 0x063e2e0f, 0x1f6297d0, 0x05788511, 0x1f8764fa, 0x04b2041c, 0x1fa7557f, 0x03eac9cb, 0x1fc26471, - 0x18bc806b, 0x144cf325, 0x187c4010, 0x149a449c, 0x183b0e0c, 0x14e6cabc, 0x17f8ece3, 0x15328293, - 0xf0ea5164, 0x1c38b2f2, 0xefe30379, 0x1ba5aa67, 0xeee14cac, 0x1b090a58, 0xede58667, 0x1a63091b, - 0x0322f4d8, 0x1fd88da4, 0x025aa412, 0x1fe9cdad, 0x0191f65f, 0x1ff621e3, 0x00c90ab0, 0x1ffd8861, - 0x17b5df22, 0x157d6935, 0x1771e75f, 0x15c77bbe, 0x172d0838, 0x1610b755, 0x16e74455, 0x16591926, - 0xecf00803, 0x19b3e048, 0xec0126ad, 0x18fbcca4, 0xeb193544, 0x183b0e0c, 0xea388442, 0x1771e75f, - 0x00000000, 0x20000000, 0xff36f550, 0x1ffd8861, 0xfe6e09a1, 0x1ff621e3, 0xfda55bee, 0x1fe9cdad, - 0x16a09e66, 0x16a09e66, 0x16591926, 0x16e74455, 0x1610b755, 0x172d0838, 0x15c77bbe, 0x1771e75f, - 0xe95f619a, 0x16a09e66, 0xe88e18a1, 0x15c77bbe, 0xe7c4f1f4, 0x14e6cabc, 0xe704335c, 0x13fed953, - 0xfcdd0b28, 0x1fd88da4, 0xfc153635, 0x1fc26471, 0xfb4dfbe4, 0x1fa7557f, 0xfa877aef, 0x1f8764fa, - 0x157d6935, 0x17b5df22, 0x15328293, 0x17f8ece3, 0x14e6cabc, 0x183b0e0c, 0x149a449c, 0x187c4010, - 0xe64c1fb8, 0x130ff7fd, 0xe59cf6e5, 0x121a7999, 0xe4f6f5a8, 0x111eb354, 0xe45a5599, 0x101cfc87, - 0xf9c1d1f1, 0x1f6297d0, 0xf8fd1f65, 0x1f38f3ac, 0xf83981a1, 0x1f0a7efc, 0xf77716cf, 0x1ed740e7, - 0x144cf325, 0x18bc806b, 0x13fed953, 0x18fbcca4, 0x13affa29, 0x193a224a, 0x136058b1, 0x19777ef5, - 0xe3c74d0e, 0x0f15ae9c, 0xe33e0f0c, 0x0e0924ec, 0xe2becb2f, 0x0cf7bca2, 0xe249ad9e, 0x0be1d499, - 0xf6b5fce9, 0x1e9f4157, 0xf5f651b6, 0x1e6288ec, 0xf53832c5, 0x1e212105, 0xf47bbd68, 0x1ddb13b7, - 0x130ff7fd, 0x19b3e048, 0x12bedb26, 0x19ef43ef, 0x126d054d, 0x1a29a7a0, 0x121a7999, 0x1a63091b, - 0xe1dedefb, 0x0ac7cd3b, 0xe17e8455, 0x09aa0861, 0xe128bf19, 0x0888e931, 0xe0ddad09, 0x0764d3f9, - 0xf3c10ead, 0x1d906bcf, 0xf308435e, 0x1d4134d1, 0xf25177fb, 0x1ced7af4, 0xf19cc8b3, 0x1c954b21, - 0x11c73b3a, 0x1a9b6629, 0x11734d64, 0x1ad2bc9e, 0x111eb354, 0x1b090a58, 0x10c9704d, 0x1b3e4d3f, - 0xe09d6830, 0x063e2e0f, 0xe06806db, 0x05155dac, 0xe03d9b8f, 0x03eac9cb, 0xe01e3503, 0x02beda01, - 0xf0ea5164, 0x1c38b2f2, 0xf03a2d92, 0x1bd7c0ac, 0xef8c7867, 0x1b728345, 0xeee14cac, 0x1b090a58, - 0x10738799, 0x1b728345, 0x101cfc87, 0x1ba5aa67, 0x0fc5d26e, 0x1bd7c0ac, 0x0f6e0ca9, 0x1c08c426, - 0xe009de1d, 0x0191f65f, 0xe0009de9, 0x00648748, 0xe002779f, 0xff36f550, 0xe00f6a9a, 0xfe09a918, - 0xee38c4c6, 0x1a9b6629, 0xed92fab3, 0x1a29a7a0, 0xecf00803, 0x19b3e048, 0xec5005d7, 0x193a224a, - 0x0f15ae9c, 0x1c38b2f2, 0x0ebcbbae, 0x1c678b35, 0x0e63374d, 0x1c954b21, 0x0e0924ec, 0x1cc1f0f4, - 0xe027725c, 0xfcdd0b28, 0xe04a868e, 0xfbb183cc, 0xe0789b06, 0xfa877aef, 0xe0b19fc5, 0xf95f57f7, - 0xebb30cdb, 0x18bc806b, 0xeb193544, 0x183b0e0c, 0xea8296cb, 0x17b5df22, 0xe9ef48ab, 0x172d0838, - 0x0dae8805, 0x1ced7af4, 0x0d536416, 0x1d17e774, 0x0cf7bca2, 0x1d4134d1, 0x0c9b9532, 0x1d696174, - 0xe0f58104, 0xf83981a1, 0xe1442737, 0xf7165de0, 0xe19d7714, 0xf5f651b6, 0xe201519e, 0xf4d9c111, - 0xe95f619a, 0x16a09e66, 0xe8d2f7c8, 0x1610b755, 0xe84a20de, 0x157d6935, 0xe7c4f1f4, 0x14e6cabc, - 0x0c3ef153, 0x1d906bcf, 0x0be1d499, 0x1db65262, 0x0b844298, 0x1ddb13b7, 0x0b263eef, 0x1dfeae62, - 0xe26f9431, 0xf3c10ead, 0xe2e8188c, 0xf2ac9bea, 0xe36ab4df, 0xf19cc8b3, 0xe3f73bda, 0xf091f357, - 0xe7437f95, 0x144cf325, 0xe6c5ddb6, 0x13affa29, 0xe64c1fb8, 0x130ff7fd, 0xe5d65860, 0x126d054d, - 0x0ac7cd3b, 0x1e212105, 0x0a68f121, 0x1e426a4b, 0x0a09ae4a, 0x1e6288ec, 0x09aa0861, 0x1e817bab, - 0xe48d7cbb, 0xef8c7867, 0xe52d4362, 0xee8cb29c, 0xe5d65860, 0xed92fab3, 0xe688810b, 0xec9fa74f, - 0xe56499d7, 0x11c73b3a, 0xe4f6f5a8, 0x111eb354, 0xe48d7cbb, 0x10738799, 0xe4283f54, 0x0fc5d26e, - 0x094a0317, 0x1e9f4157, 0x08e9a220, 0x1ebbd8c9, 0x0888e931, 0x1ed740e7, 0x0827dc07, 0x1ef178a4, - 0xe7437f95, 0xebb30cdb, 0xe807131d, 0xeacd7d6d, 0xe8d2f7c8, 0xe9ef48ab, 0xe9a6e6da, 0xe918bbab, - 0xe3c74d0e, 0x0f15ae9c, 0xe36ab4df, 0x0e63374d, 0xe312850c, 0x0dae8805, 0xe2becb2f, 0x0cf7bca2, - 0x07c67e5f, 0x1f0a7efc, 0x0764d3f9, 0x1f2252f7, 0x0702e09b, 0x1f38f3ac, 0x06a0a809, 0x1f4e603b, - 0xea8296cb, 0xe84a20de, 0xeb65bb64, 0xe783bff0, 0xec5005d7, 0xe6c5ddb6, 0xed4124da, 0xe610bc11, - 0xe26f9431, 0x0c3ef153, 0xe224ec49, 0x0b844298, 0xe1dedefb, 0x0ac7cd3b, 0xe19d7714, 0x0a09ae4a, - 0x063e2e0f, 0x1f6297d0, 0x05db7678, 0x1f7599a4, 0x05788511, 0x1f8764fa, 0x05155dac, 0x1f97f925, - 0xee38c4c6, 0xe56499d7, 0xef368fb3, 0xe4c1b2c1, 0xf03a2d92, 0xe4283f54, 0xf1434452, 0xe39874cb, - 0xe160bea9, 0x094a0317, 0xe128bf19, 0x0888e931, 0xe0f58104, 0x07c67e5f, 0xe0c70c54, 0x0702e09b, - 0x04b2041c, 0x1fa7557f, 0x044e7c34, 0x1fb57972, 0x03eac9cb, 0x1fc26471, 0x0386f0b9, 0x1fce15fd, - 0xf25177fb, 0xe312850c, 0xf3646ace, 0xe2969e8c, 0xf47bbd68, 0xe224ec49, 0xf5970edf, 0xe1bd95b5, - 0xe09d6830, 0x063e2e0f, 0xe0789b06, 0x05788511, 0xe058aa81, 0x04b2041c, 0xe03d9b8f, 0x03eac9cb, - 0x0322f4d8, 0x1fd88da4, 0x02beda01, 0x1fe1cafd, 0x025aa412, 0x1fe9cdad, 0x01f656e8, 0x1ff09566, - 0xf6b5fce9, 0xe160bea9, 0xf7d823f9, 0xe10e875c, 0xf8fd1f65, 0xe0c70c54, 0xfa248988, 0xe08a665c, - 0xe027725c, 0x0322f4d8, 0xe0163253, 0x025aa412, 0xe009de1d, 0x0191f65f, 0xe002779f, 0x00c90ab0, - 0x0191f65f, 0x1ff621e3, 0x012d8657, 0x1ffa72f0, 0x00c90ab0, 0x1ffd8861, 0x00648748, 0x1fff6217, + 0x20000000, 0x00000000, 0x1d906bcf, 0x0c3ef153, 0x16a09e66, 0x16a09e66, 0x0c3ef153, 0x1d906bcf, + 0x20000000, 0x00000000, 0x1f6297d0, 0x063e2e0f, 0x1d906bcf, 0x0c3ef153, 0x1a9b6629, 0x11c73b3a, + 0x20000000, 0x00000000, 0x1a9b6629, 0x11c73b3a, 0x0c3ef153, 0x1d906bcf, 0xf9c1d1f1, 0x1f6297d0, + 0x00000000, 0x20000000, 0xf3c10ead, 0x1d906bcf, 0xe95f619a, 0x16a09e66, 0xe26f9431, 0x0c3ef153, + 0x16a09e66, 0x16a09e66, 0x11c73b3a, 0x1a9b6629, 0x0c3ef153, 0x1d906bcf, 0x063e2e0f, 0x1f6297d0, + 0xe95f619a, 0x16a09e66, 0xe09d6830, 0x063e2e0f, 0xe26f9431, 0xf3c10ead, 0xee38c4c6, 0xe56499d7, + + 0x20000000, 0x00000000, 0x1fd88da4, 0x0322f4d8, 0x1f6297d0, 0x063e2e0f, 0x1e9f4157, 0x094a0317, + 0x20000000, 0x00000000, 0x1ff621e3, 0x0191f65f, 0x1fd88da4, 0x0322f4d8, 0x1fa7557f, 0x04b2041c, + 0x20000000, 0x00000000, 0x1fa7557f, 0x04b2041c, 0x1e9f4157, 0x094a0317, 0x1ced7af4, 0x0dae8805, + 0x1d906bcf, 0x0c3ef153, 0x1c38b2f2, 0x0f15ae9c, 0x1a9b6629, 0x11c73b3a, 0x18bc806b, 0x144cf325, + 0x1f6297d0, 0x063e2e0f, 0x1f0a7efc, 0x07c67e5f, 0x1e9f4157, 0x094a0317, 0x1e212105, 0x0ac7cd3b, + 0x1a9b6629, 0x11c73b3a, 0x17b5df22, 0x157d6935, 0x144cf325, 0x18bc806b, 0x10738799, 0x1b728345, + 0x16a09e66, 0x16a09e66, 0x144cf325, 0x18bc806b, 0x11c73b3a, 0x1a9b6629, 0x0f15ae9c, 0x1c38b2f2, + 0x1d906bcf, 0x0c3ef153, 0x1ced7af4, 0x0dae8805, 0x1c38b2f2, 0x0f15ae9c, 0x1b728345, 0x10738799, + 0x0c3ef153, 0x1d906bcf, 0x07c67e5f, 0x1f0a7efc, 0x0322f4d8, 0x1fd88da4, 0xfe6e09a1, 0x1ff621e3, + 0x0c3ef153, 0x1d906bcf, 0x094a0317, 0x1e9f4157, 0x063e2e0f, 0x1f6297d0, 0x0322f4d8, 0x1fd88da4, + 0x1a9b6629, 0x11c73b3a, 0x19b3e048, 0x130ff7fd, 0x18bc806b, 0x144cf325, 0x17b5df22, 0x157d6935, + 0xf9c1d1f1, 0x1f6297d0, 0xf53832c5, 0x1e212105, 0xf0ea5164, 0x1c38b2f2, 0xecf00803, 0x19b3e048, + 0x00000000, 0x20000000, 0xfcdd0b28, 0x1fd88da4, 0xf9c1d1f1, 0x1f6297d0, 0xf6b5fce9, 0x1e9f4157, + 0x16a09e66, 0x16a09e66, 0x157d6935, 0x17b5df22, 0x144cf325, 0x18bc806b, 0x130ff7fd, 0x19b3e048, + 0xe95f619a, 0x16a09e66, 0xe64c1fb8, 0x130ff7fd, 0xe3c74d0e, 0x0f15ae9c, 0xe1dedefb, 0x0ac7cd3b, + 0xf3c10ead, 0x1d906bcf, 0xf0ea5164, 0x1c38b2f2, 0xee38c4c6, 0x1a9b6629, 0xebb30cdb, 0x18bc806b, + 0x11c73b3a, 0x1a9b6629, 0x10738799, 0x1b728345, 0x0f15ae9c, 0x1c38b2f2, 0x0dae8805, 0x1ced7af4, + 0xe09d6830, 0x063e2e0f, 0xe009de1d, 0x0191f65f, 0xe027725c, 0xfcdd0b28, 0xe0f58104, 0xf83981a1, + 0xe95f619a, 0x16a09e66, 0xe7437f95, 0x144cf325, 0xe56499d7, 0x11c73b3a, 0xe3c74d0e, 0x0f15ae9c, + 0x0c3ef153, 0x1d906bcf, 0x0ac7cd3b, 0x1e212105, 0x094a0317, 0x1e9f4157, 0x07c67e5f, 0x1f0a7efc, + 0xe26f9431, 0xf3c10ead, 0xe48d7cbb, 0xef8c7867, 0xe7437f95, 0xebb30cdb, 0xea8296cb, 0xe84a20de, + 0xe26f9431, 0x0c3ef153, 0xe160bea9, 0x094a0317, 0xe09d6830, 0x063e2e0f, 0xe027725c, 0x0322f4d8, + 0x063e2e0f, 0x1f6297d0, 0x04b2041c, 0x1fa7557f, 0x0322f4d8, 0x1fd88da4, 0x0191f65f, 0x1ff621e3, + 0xee38c4c6, 0xe56499d7, 0xf25177fb, 0xe312850c, 0xf6b5fce9, 0xe160bea9, 0xfb4dfbe4, 0xe058aa81, + + 0x20000000, 0x00000000, 0x1ffd8861, 0x00c90ab0, 0x1ff621e3, 0x0191f65f, 0x1fe9cdad, 0x025aa412, + 0x20000000, 0x00000000, 0x1fff6217, 0x00648748, 0x1ffd8861, 0x00c90ab0, 0x1ffa72f0, 0x012d8657, + 0x20000000, 0x00000000, 0x1ffa72f0, 0x012d8657, 0x1fe9cdad, 0x025aa412, 0x1fce15fd, 0x0386f0b9, + 0x1fd88da4, 0x0322f4d8, 0x1fc26471, 0x03eac9cb, 0x1fa7557f, 0x04b2041c, 0x1f8764fa, 0x05788511, + 0x1ff621e3, 0x0191f65f, 0x1ff09566, 0x01f656e8, 0x1fe9cdad, 0x025aa412, 0x1fe1cafd, 0x02beda01, + 0x1fa7557f, 0x04b2041c, 0x1f7599a4, 0x05db7678, 0x1f38f3ac, 0x0702e09b, 0x1ef178a4, 0x0827dc07, + 0x1f6297d0, 0x063e2e0f, 0x1f38f3ac, 0x0702e09b, 0x1f0a7efc, 0x07c67e5f, 0x1ed740e7, 0x0888e931, + 0x1fd88da4, 0x0322f4d8, 0x1fce15fd, 0x0386f0b9, 0x1fc26471, 0x03eac9cb, 0x1fb57972, 0x044e7c34, + 0x1e9f4157, 0x094a0317, 0x1e426a4b, 0x0a68f121, 0x1ddb13b7, 0x0b844298, 0x1d696174, 0x0c9b9532, + 0x1e9f4157, 0x094a0317, 0x1e6288ec, 0x0a09ae4a, 0x1e212105, 0x0ac7cd3b, 0x1ddb13b7, 0x0b844298, + 0x1fa7557f, 0x04b2041c, 0x1f97f925, 0x05155dac, 0x1f8764fa, 0x05788511, 0x1f7599a4, 0x05db7678, + 0x1ced7af4, 0x0dae8805, 0x1c678b35, 0x0ebcbbae, 0x1bd7c0ac, 0x0fc5d26e, 0x1b3e4d3f, 0x10c9704d, + 0x1d906bcf, 0x0c3ef153, 0x1d4134d1, 0x0cf7bca2, 0x1ced7af4, 0x0dae8805, 0x1c954b21, 0x0e63374d, + 0x1f6297d0, 0x063e2e0f, 0x1f4e603b, 0x06a0a809, 0x1f38f3ac, 0x0702e09b, 0x1f2252f7, 0x0764d3f9, + 0x1a9b6629, 0x11c73b3a, 0x19ef43ef, 0x12bedb26, 0x193a224a, 0x13affa29, 0x187c4010, 0x149a449c, + 0x1c38b2f2, 0x0f15ae9c, 0x1bd7c0ac, 0x0fc5d26e, 0x1b728345, 0x10738799, 0x1b090a58, 0x111eb354, + 0x1f0a7efc, 0x07c67e5f, 0x1ef178a4, 0x0827dc07, 0x1ed740e7, 0x0888e931, 0x1ebbd8c9, 0x08e9a220, + 0x17b5df22, 0x157d6935, 0x16e74455, 0x16591926, 0x1610b755, 0x172d0838, 0x15328293, 0x17f8ece3, + 0x1a9b6629, 0x11c73b3a, 0x1a29a7a0, 0x126d054d, 0x19b3e048, 0x130ff7fd, 0x193a224a, 0x13affa29, + 0x1e9f4157, 0x094a0317, 0x1e817bab, 0x09aa0861, 0x1e6288ec, 0x0a09ae4a, 0x1e426a4b, 0x0a68f121, + 0x144cf325, 0x18bc806b, 0x136058b1, 0x19777ef5, 0x126d054d, 0x1a29a7a0, 0x11734d64, 0x1ad2bc9e, + 0x18bc806b, 0x144cf325, 0x183b0e0c, 0x14e6cabc, 0x17b5df22, 0x157d6935, 0x172d0838, 0x1610b755, + 0x1e212105, 0x0ac7cd3b, 0x1dfeae62, 0x0b263eef, 0x1ddb13b7, 0x0b844298, 0x1db65262, 0x0be1d499, + 0x10738799, 0x1b728345, 0x0f6e0ca9, 0x1c08c426, 0x0e63374d, 0x1c954b21, 0x0d536416, 0x1d17e774, + 0x16a09e66, 0x16a09e66, 0x1610b755, 0x172d0838, 0x157d6935, 0x17b5df22, 0x14e6cabc, 0x183b0e0c, + 0x1d906bcf, 0x0c3ef153, 0x1d696174, 0x0c9b9532, 0x1d4134d1, 0x0cf7bca2, 0x1d17e774, 0x0d536416, + 0x0c3ef153, 0x1d906bcf, 0x0b263eef, 0x1dfeae62, 0x0a09ae4a, 0x1e6288ec, 0x08e9a220, 0x1ebbd8c9, + 0x144cf325, 0x18bc806b, 0x13affa29, 0x193a224a, 0x130ff7fd, 0x19b3e048, 0x126d054d, 0x1a29a7a0, + 0x1ced7af4, 0x0dae8805, 0x1cc1f0f4, 0x0e0924ec, 0x1c954b21, 0x0e63374d, 0x1c678b35, 0x0ebcbbae, + 0x07c67e5f, 0x1f0a7efc, 0x06a0a809, 0x1f4e603b, 0x05788511, 0x1f8764fa, 0x044e7c34, 0x1fb57972, + 0x11c73b3a, 0x1a9b6629, 0x111eb354, 0x1b090a58, 0x10738799, 0x1b728345, 0x0fc5d26e, 0x1bd7c0ac, + 0x1c38b2f2, 0x0f15ae9c, 0x1c08c426, 0x0f6e0ca9, 0x1bd7c0ac, 0x0fc5d26e, 0x1ba5aa67, 0x101cfc87, + 0x0322f4d8, 0x1fd88da4, 0x01f656e8, 0x1ff09566, 0x00c90ab0, 0x1ffd8861, 0xff9b78b8, 0x1fff6217, + 0x0f15ae9c, 0x1c38b2f2, 0x0e63374d, 0x1c954b21, 0x0dae8805, 0x1ced7af4, 0x0cf7bca2, 0x1d4134d1, + 0x1b728345, 0x10738799, 0x1b3e4d3f, 0x10c9704d, 0x1b090a58, 0x111eb354, 0x1ad2bc9e, 0x11734d64, + 0xfe6e09a1, 0x1ff621e3, 0xfd4125ff, 0x1fe1cafd, 0xfc153635, 0x1fc26471, 0xfaeaa254, 0x1f97f925, + 0x0c3ef153, 0x1d906bcf, 0x0b844298, 0x1ddb13b7, 0x0ac7cd3b, 0x1e212105, 0x0a09ae4a, 0x1e6288ec, + 0x1a9b6629, 0x11c73b3a, 0x1a63091b, 0x121a7999, 0x1a29a7a0, 0x126d054d, 0x19ef43ef, 0x12bedb26, + 0xf9c1d1f1, 0x1f6297d0, 0xf89b2c07, 0x1f2252f7, 0xf77716cf, 0x1ed740e7, 0xf655f79f, 0x1e817bab, + 0x094a0317, 0x1e9f4157, 0x0888e931, 0x1ed740e7, 0x07c67e5f, 0x1f0a7efc, 0x0702e09b, 0x1f38f3ac, + 0x19b3e048, 0x130ff7fd, 0x19777ef5, 0x136058b1, 0x193a224a, 0x13affa29, 0x18fbcca4, 0x13fed953, + 0xf53832c5, 0x1e212105, 0xf41e2b67, 0x1db65262, 0xf308435e, 0x1d4134d1, 0xf1f6db14, 0x1cc1f0f4, + 0x063e2e0f, 0x1f6297d0, 0x05788511, 0x1f8764fa, 0x04b2041c, 0x1fa7557f, 0x03eac9cb, 0x1fc26471, + 0x18bc806b, 0x144cf325, 0x187c4010, 0x149a449c, 0x183b0e0c, 0x14e6cabc, 0x17f8ece3, 0x15328293, + 0xf0ea5164, 0x1c38b2f2, 0xefe30379, 0x1ba5aa67, 0xeee14cac, 0x1b090a58, 0xede58667, 0x1a63091b, + 0x0322f4d8, 0x1fd88da4, 0x025aa412, 0x1fe9cdad, 0x0191f65f, 0x1ff621e3, 0x00c90ab0, 0x1ffd8861, + 0x17b5df22, 0x157d6935, 0x1771e75f, 0x15c77bbe, 0x172d0838, 0x1610b755, 0x16e74455, 0x16591926, + 0xecf00803, 0x19b3e048, 0xec0126ad, 0x18fbcca4, 0xeb193544, 0x183b0e0c, 0xea388442, 0x1771e75f, + 0x00000000, 0x20000000, 0xff36f550, 0x1ffd8861, 0xfe6e09a1, 0x1ff621e3, 0xfda55bee, 0x1fe9cdad, + 0x16a09e66, 0x16a09e66, 0x16591926, 0x16e74455, 0x1610b755, 0x172d0838, 0x15c77bbe, 0x1771e75f, + 0xe95f619a, 0x16a09e66, 0xe88e18a1, 0x15c77bbe, 0xe7c4f1f4, 0x14e6cabc, 0xe704335c, 0x13fed953, + 0xfcdd0b28, 0x1fd88da4, 0xfc153635, 0x1fc26471, 0xfb4dfbe4, 0x1fa7557f, 0xfa877aef, 0x1f8764fa, + 0x157d6935, 0x17b5df22, 0x15328293, 0x17f8ece3, 0x14e6cabc, 0x183b0e0c, 0x149a449c, 0x187c4010, + 0xe64c1fb8, 0x130ff7fd, 0xe59cf6e5, 0x121a7999, 0xe4f6f5a8, 0x111eb354, 0xe45a5599, 0x101cfc87, + 0xf9c1d1f1, 0x1f6297d0, 0xf8fd1f65, 0x1f38f3ac, 0xf83981a1, 0x1f0a7efc, 0xf77716cf, 0x1ed740e7, + 0x144cf325, 0x18bc806b, 0x13fed953, 0x18fbcca4, 0x13affa29, 0x193a224a, 0x136058b1, 0x19777ef5, + 0xe3c74d0e, 0x0f15ae9c, 0xe33e0f0c, 0x0e0924ec, 0xe2becb2f, 0x0cf7bca2, 0xe249ad9e, 0x0be1d499, + 0xf6b5fce9, 0x1e9f4157, 0xf5f651b6, 0x1e6288ec, 0xf53832c5, 0x1e212105, 0xf47bbd68, 0x1ddb13b7, + 0x130ff7fd, 0x19b3e048, 0x12bedb26, 0x19ef43ef, 0x126d054d, 0x1a29a7a0, 0x121a7999, 0x1a63091b, + 0xe1dedefb, 0x0ac7cd3b, 0xe17e8455, 0x09aa0861, 0xe128bf19, 0x0888e931, 0xe0ddad09, 0x0764d3f9, + 0xf3c10ead, 0x1d906bcf, 0xf308435e, 0x1d4134d1, 0xf25177fb, 0x1ced7af4, 0xf19cc8b3, 0x1c954b21, + 0x11c73b3a, 0x1a9b6629, 0x11734d64, 0x1ad2bc9e, 0x111eb354, 0x1b090a58, 0x10c9704d, 0x1b3e4d3f, + 0xe09d6830, 0x063e2e0f, 0xe06806db, 0x05155dac, 0xe03d9b8f, 0x03eac9cb, 0xe01e3503, 0x02beda01, + 0xf0ea5164, 0x1c38b2f2, 0xf03a2d92, 0x1bd7c0ac, 0xef8c7867, 0x1b728345, 0xeee14cac, 0x1b090a58, + 0x10738799, 0x1b728345, 0x101cfc87, 0x1ba5aa67, 0x0fc5d26e, 0x1bd7c0ac, 0x0f6e0ca9, 0x1c08c426, + 0xe009de1d, 0x0191f65f, 0xe0009de9, 0x00648748, 0xe002779f, 0xff36f550, 0xe00f6a9a, 0xfe09a918, + 0xee38c4c6, 0x1a9b6629, 0xed92fab3, 0x1a29a7a0, 0xecf00803, 0x19b3e048, 0xec5005d7, 0x193a224a, + 0x0f15ae9c, 0x1c38b2f2, 0x0ebcbbae, 0x1c678b35, 0x0e63374d, 0x1c954b21, 0x0e0924ec, 0x1cc1f0f4, + 0xe027725c, 0xfcdd0b28, 0xe04a868e, 0xfbb183cc, 0xe0789b06, 0xfa877aef, 0xe0b19fc5, 0xf95f57f7, + 0xebb30cdb, 0x18bc806b, 0xeb193544, 0x183b0e0c, 0xea8296cb, 0x17b5df22, 0xe9ef48ab, 0x172d0838, + 0x0dae8805, 0x1ced7af4, 0x0d536416, 0x1d17e774, 0x0cf7bca2, 0x1d4134d1, 0x0c9b9532, 0x1d696174, + 0xe0f58104, 0xf83981a1, 0xe1442737, 0xf7165de0, 0xe19d7714, 0xf5f651b6, 0xe201519e, 0xf4d9c111, + 0xe95f619a, 0x16a09e66, 0xe8d2f7c8, 0x1610b755, 0xe84a20de, 0x157d6935, 0xe7c4f1f4, 0x14e6cabc, + 0x0c3ef153, 0x1d906bcf, 0x0be1d499, 0x1db65262, 0x0b844298, 0x1ddb13b7, 0x0b263eef, 0x1dfeae62, + 0xe26f9431, 0xf3c10ead, 0xe2e8188c, 0xf2ac9bea, 0xe36ab4df, 0xf19cc8b3, 0xe3f73bda, 0xf091f357, + 0xe7437f95, 0x144cf325, 0xe6c5ddb6, 0x13affa29, 0xe64c1fb8, 0x130ff7fd, 0xe5d65860, 0x126d054d, + 0x0ac7cd3b, 0x1e212105, 0x0a68f121, 0x1e426a4b, 0x0a09ae4a, 0x1e6288ec, 0x09aa0861, 0x1e817bab, + 0xe48d7cbb, 0xef8c7867, 0xe52d4362, 0xee8cb29c, 0xe5d65860, 0xed92fab3, 0xe688810b, 0xec9fa74f, + 0xe56499d7, 0x11c73b3a, 0xe4f6f5a8, 0x111eb354, 0xe48d7cbb, 0x10738799, 0xe4283f54, 0x0fc5d26e, + 0x094a0317, 0x1e9f4157, 0x08e9a220, 0x1ebbd8c9, 0x0888e931, 0x1ed740e7, 0x0827dc07, 0x1ef178a4, + 0xe7437f95, 0xebb30cdb, 0xe807131d, 0xeacd7d6d, 0xe8d2f7c8, 0xe9ef48ab, 0xe9a6e6da, 0xe918bbab, + 0xe3c74d0e, 0x0f15ae9c, 0xe36ab4df, 0x0e63374d, 0xe312850c, 0x0dae8805, 0xe2becb2f, 0x0cf7bca2, + 0x07c67e5f, 0x1f0a7efc, 0x0764d3f9, 0x1f2252f7, 0x0702e09b, 0x1f38f3ac, 0x06a0a809, 0x1f4e603b, + 0xea8296cb, 0xe84a20de, 0xeb65bb64, 0xe783bff0, 0xec5005d7, 0xe6c5ddb6, 0xed4124da, 0xe610bc11, + 0xe26f9431, 0x0c3ef153, 0xe224ec49, 0x0b844298, 0xe1dedefb, 0x0ac7cd3b, 0xe19d7714, 0x0a09ae4a, + 0x063e2e0f, 0x1f6297d0, 0x05db7678, 0x1f7599a4, 0x05788511, 0x1f8764fa, 0x05155dac, 0x1f97f925, + 0xee38c4c6, 0xe56499d7, 0xef368fb3, 0xe4c1b2c1, 0xf03a2d92, 0xe4283f54, 0xf1434452, 0xe39874cb, + 0xe160bea9, 0x094a0317, 0xe128bf19, 0x0888e931, 0xe0f58104, 0x07c67e5f, 0xe0c70c54, 0x0702e09b, + 0x04b2041c, 0x1fa7557f, 0x044e7c34, 0x1fb57972, 0x03eac9cb, 0x1fc26471, 0x0386f0b9, 0x1fce15fd, + 0xf25177fb, 0xe312850c, 0xf3646ace, 0xe2969e8c, 0xf47bbd68, 0xe224ec49, 0xf5970edf, 0xe1bd95b5, + 0xe09d6830, 0x063e2e0f, 0xe0789b06, 0x05788511, 0xe058aa81, 0x04b2041c, 0xe03d9b8f, 0x03eac9cb, + 0x0322f4d8, 0x1fd88da4, 0x02beda01, 0x1fe1cafd, 0x025aa412, 0x1fe9cdad, 0x01f656e8, 0x1ff09566, + 0xf6b5fce9, 0xe160bea9, 0xf7d823f9, 0xe10e875c, 0xf8fd1f65, 0xe0c70c54, 0xfa248988, 0xe08a665c, + 0xe027725c, 0x0322f4d8, 0xe0163253, 0x025aa412, 0xe009de1d, 0x0191f65f, 0xe002779f, 0x00c90ab0, + 0x0191f65f, 0x1ff621e3, 0x012d8657, 0x1ffa72f0, 0x00c90ab0, 0x1ffd8861, 0x00648748, 0x1fff6217, 0xfb4dfbe4, 0xe058aa81, 0xfc790f47, 0xe031ea03, 0xfda55bee, 0xe0163253, 0xfed279a9, 0xe0058d10 }; const int twidTab64[4*6 + 16*6] = { - 0x20000000, 0x00000000, 0x16a09e66, 0x16a09e66, 0x00000000, 0x20000000, 0xe95f619a, 0x16a09e66, - 0x20000000, 0x00000000, 0x1d906bcf, 0x0c3ef153, 0x16a09e66, 0x16a09e66, 0x0c3ef153, 0x1d906bcf, - 0x20000000, 0x00000000, 0x0c3ef153, 0x1d906bcf, 0xe95f619a, 0x16a09e66, 0xe26f9431, 0xf3c10ead, - - 0x20000000, 0x00000000, 0x1f6297d0, 0x063e2e0f, 0x1d906bcf, 0x0c3ef153, 0x1a9b6629, 0x11c73b3a, - 0x20000000, 0x00000000, 0x1fd88da4, 0x0322f4d8, 0x1f6297d0, 0x063e2e0f, 0x1e9f4157, 0x094a0317, - 0x20000000, 0x00000000, 0x1e9f4157, 0x094a0317, 0x1a9b6629, 0x11c73b3a, 0x144cf325, 0x18bc806b, - 0x16a09e66, 0x16a09e66, 0x11c73b3a, 0x1a9b6629, 0x0c3ef153, 0x1d906bcf, 0x063e2e0f, 0x1f6297d0, - 0x1d906bcf, 0x0c3ef153, 0x1c38b2f2, 0x0f15ae9c, 0x1a9b6629, 0x11c73b3a, 0x18bc806b, 0x144cf325, - 0x0c3ef153, 0x1d906bcf, 0x0322f4d8, 0x1fd88da4, 0xf9c1d1f1, 0x1f6297d0, 0xf0ea5164, 0x1c38b2f2, - 0x00000000, 0x20000000, 0xf9c1d1f1, 0x1f6297d0, 0xf3c10ead, 0x1d906bcf, 0xee38c4c6, 0x1a9b6629, - 0x16a09e66, 0x16a09e66, 0x144cf325, 0x18bc806b, 0x11c73b3a, 0x1a9b6629, 0x0f15ae9c, 0x1c38b2f2, - 0xe95f619a, 0x16a09e66, 0xe3c74d0e, 0x0f15ae9c, 0xe09d6830, 0x063e2e0f, 0xe027725c, 0xfcdd0b28, - 0xe95f619a, 0x16a09e66, 0xe56499d7, 0x11c73b3a, 0xe26f9431, 0x0c3ef153, 0xe09d6830, 0x063e2e0f, - 0x0c3ef153, 0x1d906bcf, 0x094a0317, 0x1e9f4157, 0x063e2e0f, 0x1f6297d0, 0x0322f4d8, 0x1fd88da4, + 0x20000000, 0x00000000, 0x16a09e66, 0x16a09e66, 0x00000000, 0x20000000, 0xe95f619a, 0x16a09e66, + 0x20000000, 0x00000000, 0x1d906bcf, 0x0c3ef153, 0x16a09e66, 0x16a09e66, 0x0c3ef153, 0x1d906bcf, + 0x20000000, 0x00000000, 0x0c3ef153, 0x1d906bcf, 0xe95f619a, 0x16a09e66, 0xe26f9431, 0xf3c10ead, + + 0x20000000, 0x00000000, 0x1f6297d0, 0x063e2e0f, 0x1d906bcf, 0x0c3ef153, 0x1a9b6629, 0x11c73b3a, + 0x20000000, 0x00000000, 0x1fd88da4, 0x0322f4d8, 0x1f6297d0, 0x063e2e0f, 0x1e9f4157, 0x094a0317, + 0x20000000, 0x00000000, 0x1e9f4157, 0x094a0317, 0x1a9b6629, 0x11c73b3a, 0x144cf325, 0x18bc806b, + 0x16a09e66, 0x16a09e66, 0x11c73b3a, 0x1a9b6629, 0x0c3ef153, 0x1d906bcf, 0x063e2e0f, 0x1f6297d0, + 0x1d906bcf, 0x0c3ef153, 0x1c38b2f2, 0x0f15ae9c, 0x1a9b6629, 0x11c73b3a, 0x18bc806b, 0x144cf325, + 0x0c3ef153, 0x1d906bcf, 0x0322f4d8, 0x1fd88da4, 0xf9c1d1f1, 0x1f6297d0, 0xf0ea5164, 0x1c38b2f2, + 0x00000000, 0x20000000, 0xf9c1d1f1, 0x1f6297d0, 0xf3c10ead, 0x1d906bcf, 0xee38c4c6, 0x1a9b6629, + 0x16a09e66, 0x16a09e66, 0x144cf325, 0x18bc806b, 0x11c73b3a, 0x1a9b6629, 0x0f15ae9c, 0x1c38b2f2, + 0xe95f619a, 0x16a09e66, 0xe3c74d0e, 0x0f15ae9c, 0xe09d6830, 0x063e2e0f, 0xe027725c, 0xfcdd0b28, + 0xe95f619a, 0x16a09e66, 0xe56499d7, 0x11c73b3a, 0xe26f9431, 0x0c3ef153, 0xe09d6830, 0x063e2e0f, + 0x0c3ef153, 0x1d906bcf, 0x094a0317, 0x1e9f4157, 0x063e2e0f, 0x1f6297d0, 0x0322f4d8, 0x1fd88da4, 0xe26f9431, 0xf3c10ead, 0xe7437f95, 0xebb30cdb, 0xee38c4c6, 0xe56499d7, 0xf6b5fce9, 0xe160bea9 }; #else -/* - * Q30 for 128 and 1024 +/* + * Q30 for 128 and 1024 * * for (i = 0; i < num/4; i++) { * angle = (i + 0.125) * M_PI / num; * x = cos(angle) * (1 << 30); * x = sin(angle) * (1 << 30); - * + * * angle = (num/2 - 1 - i + 0.125) * M_PI / num; * x = cos(angle) * (1 << 30); * x = sin(angle) * (1 << 30); @@ -667,379 +667,379 @@ const int twidTab64[4*6 + 16*6] = { */ const int cossintab[128 + 1024] = { /* 128 */ - 0x3fffec43, 0x003243f1, 0x015fd4d2, 0x3ffc38d1, 0x3ff9c13a, 0x01c454f5, 0x02f1b755, 0x3feea776, - 0x3fe9b8a9, 0x03562038, 0x0483259d, 0x3fd73a4a, 0x3fcfd50b, 0x04e767c5, 0x0613e1c5, 0x3fb5f4ea, - 0x3fac1a5b, 0x0677edbb, 0x07a3adff, 0x3f8adc77, 0x3f7e8e1e, 0x08077457, 0x09324ca7, 0x3f55f796, - 0x3f473759, 0x0995bdfd, 0x0abf8043, 0x3f174e70, 0x3f061e95, 0x0b228d42, 0x0c4b0b94, 0x3eceeaad, - 0x3ebb4ddb, 0x0cada4f5, 0x0dd4b19a, 0x3e7cd778, 0x3e66d0b4, 0x0e36c82a, 0x0f5c35a3, 0x3e212179, - 0x3e08b42a, 0x0fbdba40, 0x10e15b4e, 0x3dbbd6d4, 0x3da106bd, 0x11423ef0, 0x1263e699, 0x3d4d0728, - 0x3d2fd86c, 0x12c41a4f, 0x13e39be9, 0x3cd4c38b, 0x3cb53aaa, 0x144310dd, 0x15604013, 0x3c531e88, - 0x3c314060, 0x15bee78c, 0x16d99864, 0x3bc82c1f, 0x3ba3fde7, 0x173763c9, 0x184f6aab, 0x3b3401bb, - 0x3b0d8909, 0x18ac4b87, 0x19c17d44, 0x3a96b636, 0x3a6df8f8, 0x1a1d6544, 0x1b2f971e, 0x39f061d2, - 0x39c5664f, 0x1b8a7815, 0x1c997fc4, 0x39411e33, 0x3913eb0e, 0x1cf34baf, 0x1dfeff67, 0x38890663, - 0x3859a292, 0x1e57a86d, 0x1f5fdee6, 0x37c836c2, 0x3796a996, 0x1fb7575c, 0x20bbe7d8, 0x36fecd0e, - 0x36cb1e2a, 0x21122240, 0x2212e492, 0x362ce855, 0x35f71fb1, 0x2267d3a0, 0x2364a02e, 0x3552a8f4, - 0x351acedd, 0x23b836ca, 0x24b0e699, 0x34703095, 0x34364da6, 0x250317df, 0x25f78497, 0x3385a222, - 0x3349bf48, 0x264843d9, 0x273847c8, 0x329321c7, 0x32554840, 0x27878893, 0x2872feb6, 0x3198d4ea, - 0x31590e3e, 0x28c0b4d2, 0x29a778db, 0x3096e223, 0x30553828, 0x29f3984c, 0x2ad586a3, 0x2f8d713a, - 0x2f49ee0f, 0x2b2003ac, 0x2bfcf97c, 0x2e7cab1c, 0x2e37592c, 0x2c45c8a0, 0x2d1da3d5, 0x2d64b9da, + 0x3fffec43, 0x003243f1, 0x015fd4d2, 0x3ffc38d1, 0x3ff9c13a, 0x01c454f5, 0x02f1b755, 0x3feea776, + 0x3fe9b8a9, 0x03562038, 0x0483259d, 0x3fd73a4a, 0x3fcfd50b, 0x04e767c5, 0x0613e1c5, 0x3fb5f4ea, + 0x3fac1a5b, 0x0677edbb, 0x07a3adff, 0x3f8adc77, 0x3f7e8e1e, 0x08077457, 0x09324ca7, 0x3f55f796, + 0x3f473759, 0x0995bdfd, 0x0abf8043, 0x3f174e70, 0x3f061e95, 0x0b228d42, 0x0c4b0b94, 0x3eceeaad, + 0x3ebb4ddb, 0x0cada4f5, 0x0dd4b19a, 0x3e7cd778, 0x3e66d0b4, 0x0e36c82a, 0x0f5c35a3, 0x3e212179, + 0x3e08b42a, 0x0fbdba40, 0x10e15b4e, 0x3dbbd6d4, 0x3da106bd, 0x11423ef0, 0x1263e699, 0x3d4d0728, + 0x3d2fd86c, 0x12c41a4f, 0x13e39be9, 0x3cd4c38b, 0x3cb53aaa, 0x144310dd, 0x15604013, 0x3c531e88, + 0x3c314060, 0x15bee78c, 0x16d99864, 0x3bc82c1f, 0x3ba3fde7, 0x173763c9, 0x184f6aab, 0x3b3401bb, + 0x3b0d8909, 0x18ac4b87, 0x19c17d44, 0x3a96b636, 0x3a6df8f8, 0x1a1d6544, 0x1b2f971e, 0x39f061d2, + 0x39c5664f, 0x1b8a7815, 0x1c997fc4, 0x39411e33, 0x3913eb0e, 0x1cf34baf, 0x1dfeff67, 0x38890663, + 0x3859a292, 0x1e57a86d, 0x1f5fdee6, 0x37c836c2, 0x3796a996, 0x1fb7575c, 0x20bbe7d8, 0x36fecd0e, + 0x36cb1e2a, 0x21122240, 0x2212e492, 0x362ce855, 0x35f71fb1, 0x2267d3a0, 0x2364a02e, 0x3552a8f4, + 0x351acedd, 0x23b836ca, 0x24b0e699, 0x34703095, 0x34364da6, 0x250317df, 0x25f78497, 0x3385a222, + 0x3349bf48, 0x264843d9, 0x273847c8, 0x329321c7, 0x32554840, 0x27878893, 0x2872feb6, 0x3198d4ea, + 0x31590e3e, 0x28c0b4d2, 0x29a778db, 0x3096e223, 0x30553828, 0x29f3984c, 0x2ad586a3, 0x2f8d713a, + 0x2f49ee0f, 0x2b2003ac, 0x2bfcf97c, 0x2e7cab1c, 0x2e37592c, 0x2c45c8a0, 0x2d1da3d5, 0x2d64b9da, /* 1024 */ - 0x3fffffb1, 0x0006487f, 0x002bfb74, 0x3ffff0e3, 0x3fffe705, 0x00388c6e, 0x005e3f4c, 0x3fffba9b, - 0x3fffa6de, 0x006ad03b, 0x009082ea, 0x3fff5cd8, 0x3fff3f3c, 0x009d13c5, 0x00c2c62f, 0x3ffed79b, - 0x3ffeb021, 0x00cf56ef, 0x00f508fc, 0x3ffe2ae5, 0x3ffdf98c, 0x01019998, 0x01274b31, 0x3ffd56b5, - 0x3ffd1b7e, 0x0133dba3, 0x01598cb1, 0x3ffc5b0c, 0x3ffc15f7, 0x01661cf0, 0x018bcd5b, 0x3ffb37ec, - 0x3ffae8f9, 0x01985d60, 0x01be0d11, 0x3ff9ed53, 0x3ff99483, 0x01ca9cd4, 0x01f04bb4, 0x3ff87b44, - 0x3ff81896, 0x01fcdb2e, 0x02228924, 0x3ff6e1bf, 0x3ff67534, 0x022f184d, 0x0254c544, 0x3ff520c5, - 0x3ff4aa5d, 0x02615414, 0x0286fff3, 0x3ff33858, 0x3ff2b813, 0x02938e62, 0x02b93914, 0x3ff12878, - 0x3ff09e56, 0x02c5c71a, 0x02eb7086, 0x3feef126, 0x3fee5d28, 0x02f7fe1c, 0x031da62b, 0x3fec9265, - 0x3febf48b, 0x032a3349, 0x034fd9e5, 0x3fea0c35, 0x3fe96480, 0x035c6682, 0x03820b93, 0x3fe75e98, - 0x3fe6ad08, 0x038e97a9, 0x03b43b17, 0x3fe48990, 0x3fe3ce26, 0x03c0c69e, 0x03e66852, 0x3fe18d1f, - 0x3fe0c7da, 0x03f2f342, 0x04189326, 0x3fde6945, 0x3fdd9a27, 0x04251d77, 0x044abb73, 0x3fdb1e06, - 0x3fda450f, 0x0457451d, 0x047ce11a, 0x3fd7ab64, 0x3fd6c894, 0x04896a16, 0x04af03fc, 0x3fd4115f, - 0x3fd324b7, 0x04bb8c42, 0x04e123fa, 0x3fd04ffc, 0x3fcf597c, 0x04edab83, 0x051340f6, 0x3fcc673b, - 0x3fcb66e4, 0x051fc7b9, 0x05455ad1, 0x3fc8571f, 0x3fc74cf3, 0x0551e0c7, 0x0577716b, 0x3fc41fac, - 0x3fc30baa, 0x0583f68c, 0x05a984a6, 0x3fbfc0e3, 0x3fbea30c, 0x05b608eb, 0x05db9463, 0x3fbb3ac7, - 0x3fba131b, 0x05e817c3, 0x060da083, 0x3fb68d5b, 0x3fb55bdc, 0x061a22f7, 0x063fa8e7, 0x3fb1b8a2, - 0x3fb07d50, 0x064c2a67, 0x0671ad71, 0x3facbc9f, 0x3fab777b, 0x067e2df5, 0x06a3ae00, 0x3fa79954, - 0x3fa64a5f, 0x06b02d81, 0x06d5aa77, 0x3fa24ec6, 0x3fa0f600, 0x06e228ee, 0x0707a2b7, 0x3f9cdcf7, - 0x3f9b7a62, 0x0714201b, 0x073996a1, 0x3f9743eb, 0x3f95d787, 0x074612eb, 0x076b8616, 0x3f9183a5, - 0x3f900d72, 0x0778013d, 0x079d70f7, 0x3f8b9c28, 0x3f8a1c29, 0x07a9eaf5, 0x07cf5726, 0x3f858d79, - 0x3f8403ae, 0x07dbcff2, 0x08013883, 0x3f7f579b, 0x3f7dc405, 0x080db016, 0x083314f1, 0x3f78fa92, - 0x3f775d31, 0x083f8b43, 0x0864ec4f, 0x3f727661, 0x3f70cf38, 0x08716159, 0x0896be80, 0x3f6bcb0e, - 0x3f6a1a1c, 0x08a3323a, 0x08c88b65, 0x3f64f89b, 0x3f633de2, 0x08d4fdc6, 0x08fa52de, 0x3f5dff0e, - 0x3f5c3a8f, 0x0906c3e0, 0x092c14ce, 0x3f56de6a, 0x3f551026, 0x09388469, 0x095dd116, 0x3f4f96b4, - 0x3f4dbeac, 0x096a3f42, 0x098f8796, 0x3f4827f0, 0x3f464626, 0x099bf44c, 0x09c13831, 0x3f409223, - 0x3f3ea697, 0x09cda368, 0x09f2e2c7, 0x3f38d552, 0x3f36e006, 0x09ff4c78, 0x0a24873a, 0x3f30f181, - 0x3f2ef276, 0x0a30ef5e, 0x0a56256c, 0x3f28e6b6, 0x3f26ddec, 0x0a628bfa, 0x0a87bd3d, 0x3f20b4f5, - 0x3f1ea26e, 0x0a94222f, 0x0ab94e8f, 0x3f185c43, 0x3f164001, 0x0ac5b1dc, 0x0aead944, 0x3f0fdca5, - 0x3f0db6a9, 0x0af73ae5, 0x0b1c5d3d, 0x3f073621, 0x3f05066d, 0x0b28bd2a, 0x0b4dda5c, 0x3efe68bc, - 0x3efc2f50, 0x0b5a388d, 0x0b7f5081, 0x3ef5747b, 0x3ef3315a, 0x0b8bacf0, 0x0bb0bf8f, 0x3eec5965, - 0x3eea0c8e, 0x0bbd1a33, 0x0be22766, 0x3ee3177e, 0x3ee0c0f4, 0x0bee8038, 0x0c1387e9, 0x3ed9aecc, - 0x3ed74e91, 0x0c1fdee1, 0x0c44e0f9, 0x3ed01f55, 0x3ecdb56a, 0x0c513610, 0x0c763278, 0x3ec66920, - 0x3ec3f585, 0x0c8285a5, 0x0ca77c47, 0x3ebc8c31, 0x3eba0ee9, 0x0cb3cd84, 0x0cd8be47, 0x3eb2888f, - 0x3eb0019c, 0x0ce50d8c, 0x0d09f85b, 0x3ea85e41, 0x3ea5cda3, 0x0d1645a0, 0x0d3b2a64, 0x3e9e0d4c, - 0x3e9b7306, 0x0d4775a1, 0x0d6c5443, 0x3e9395b7, 0x3e90f1ca, 0x0d789d71, 0x0d9d75db, 0x3e88f788, - 0x3e8649f5, 0x0da9bcf2, 0x0dce8f0d, 0x3e7e32c6, 0x3e7b7b90, 0x0ddad406, 0x0dff9fba, 0x3e734778, - 0x3e70869f, 0x0e0be28e, 0x0e30a7c5, 0x3e6835a4, 0x3e656b2b, 0x0e3ce86b, 0x0e61a70f, 0x3e5cfd51, - 0x3e5a2939, 0x0e6de580, 0x0e929d7a, 0x3e519e86, 0x3e4ec0d1, 0x0e9ed9af, 0x0ec38ae8, 0x3e46194a, - 0x3e4331fa, 0x0ecfc4d9, 0x0ef46f3b, 0x3e3a6da4, 0x3e377cbb, 0x0f00a6df, 0x0f254a53, 0x3e2e9b9c, - 0x3e2ba11b, 0x0f317fa5, 0x0f561c15, 0x3e22a338, 0x3e1f9f21, 0x0f624f0c, 0x0f86e460, 0x3e168480, - 0x3e1376d5, 0x0f9314f5, 0x0fb7a317, 0x3e0a3f7b, 0x3e07283f, 0x0fc3d143, 0x0fe8581d, 0x3dfdd432, - 0x3dfab365, 0x0ff483d7, 0x10190352, 0x3df142ab, 0x3dee1851, 0x10252c94, 0x1049a49a, 0x3de48aef, - 0x3de15708, 0x1055cb5b, 0x107a3bd5, 0x3dd7ad05, 0x3dd46f94, 0x1086600e, 0x10aac8e6, 0x3dcaa8f5, - 0x3dc761fc, 0x10b6ea90, 0x10db4baf, 0x3dbd7ec7, 0x3dba2e48, 0x10e76ac3, 0x110bc413, 0x3db02e84, - 0x3dacd481, 0x1117e088, 0x113c31f3, 0x3da2b834, 0x3d9f54af, 0x11484bc2, 0x116c9531, 0x3d951bde, - 0x3d91aed9, 0x1178ac53, 0x119cedaf, 0x3d87598c, 0x3d83e309, 0x11a9021d, 0x11cd3b50, 0x3d797145, - 0x3d75f147, 0x11d94d02, 0x11fd7df6, 0x3d6b6313, 0x3d67d99b, 0x12098ce5, 0x122db583, 0x3d5d2efe, - 0x3d599c0e, 0x1239c1a7, 0x125de1da, 0x3d4ed50f, 0x3d4b38aa, 0x1269eb2b, 0x128e02dc, 0x3d40554e, - 0x3d3caf76, 0x129a0954, 0x12be186c, 0x3d31afc5, 0x3d2e007c, 0x12ca1c03, 0x12ee226c, 0x3d22e47c, - 0x3d1f2bc5, 0x12fa231b, 0x131e20c0, 0x3d13f37e, 0x3d10315a, 0x132a1e7e, 0x134e1348, 0x3d04dcd2, - 0x3d011145, 0x135a0e0e, 0x137df9e7, 0x3cf5a082, 0x3cf1cb8e, 0x1389f1af, 0x13add481, 0x3ce63e98, - 0x3ce2603f, 0x13b9c943, 0x13dda2f7, 0x3cd6b71e, 0x3cd2cf62, 0x13e994ab, 0x140d652c, 0x3cc70a1c, - 0x3cc318ff, 0x141953cb, 0x143d1b02, 0x3cb7379c, 0x3cb33d22, 0x14490685, 0x146cc45c, 0x3ca73fa9, - 0x3ca33bd3, 0x1478acbc, 0x149c611d, 0x3c97224c, 0x3c93151d, 0x14a84652, 0x14cbf127, 0x3c86df8e, - 0x3c82c909, 0x14d7d32a, 0x14fb745e, 0x3c76777b, 0x3c7257a2, 0x15075327, 0x152aeaa3, 0x3c65ea1c, - 0x3c61c0f1, 0x1536c62b, 0x155a53d9, 0x3c55377b, 0x3c510501, 0x15662c18, 0x1589afe3, 0x3c445fa2, - 0x3c4023dd, 0x159584d3, 0x15b8fea4, 0x3c33629d, 0x3c2f1d8e, 0x15c4d03e, 0x15e83fff, 0x3c224075, - 0x3c1df21f, 0x15f40e3a, 0x161773d6, 0x3c10f935, 0x3c0ca19b, 0x16233eac, 0x16469a0d, 0x3bff8ce8, - 0x3bfb2c0c, 0x16526176, 0x1675b286, 0x3bedfb99, 0x3be9917e, 0x1681767c, 0x16a4bd25, 0x3bdc4552, - 0x3bd7d1fa, 0x16b07d9f, 0x16d3b9cc, 0x3bca6a1d, 0x3bc5ed8d, 0x16df76c3, 0x1702a85e, 0x3bb86a08, - 0x3bb3e440, 0x170e61cc, 0x173188be, 0x3ba6451b, 0x3ba1b620, 0x173d3e9b, 0x17605ad0, 0x3b93fb63, - 0x3b8f6337, 0x176c0d15, 0x178f1e76, 0x3b818ceb, 0x3b7ceb90, 0x179acd1c, 0x17bdd394, 0x3b6ef9be, - 0x3b6a4f38, 0x17c97e93, 0x17ec7a0d, 0x3b5c41e8, 0x3b578e39, 0x17f8215e, 0x181b11c4, 0x3b496574, - 0x3b44a8a0, 0x1826b561, 0x18499a9d, 0x3b36646e, 0x3b319e77, 0x18553a7d, 0x1878147a, 0x3b233ee1, - 0x3b1e6fca, 0x1883b097, 0x18a67f3f, 0x3b0ff4d9, 0x3b0b1ca6, 0x18b21791, 0x18d4dad0, 0x3afc8663, - 0x3af7a516, 0x18e06f50, 0x1903270f, 0x3ae8f38b, 0x3ae40926, 0x190eb7b7, 0x193163e1, 0x3ad53c5b, - 0x3ad048e3, 0x193cf0a9, 0x195f9128, 0x3ac160e1, 0x3abc6458, 0x196b1a09, 0x198daec8, 0x3aad6129, - 0x3aa85b92, 0x199933bb, 0x19bbbca6, 0x3a993d3e, 0x3a942e9d, 0x19c73da3, 0x19e9baa3, 0x3a84f52f, - 0x3a7fdd86, 0x19f537a4, 0x1a17a8a5, 0x3a708906, 0x3a6b6859, 0x1a2321a2, 0x1a45868e, 0x3a5bf8d1, - 0x3a56cf23, 0x1a50fb81, 0x1a735442, 0x3a47449c, 0x3a4211f0, 0x1a7ec524, 0x1aa111a6, 0x3a326c74, - 0x3a2d30cd, 0x1aac7e6f, 0x1acebe9d, 0x3a1d7066, 0x3a182bc8, 0x1ada2746, 0x1afc5b0a, 0x3a08507f, - 0x3a0302ed, 0x1b07bf8c, 0x1b29e6d2, 0x39f30ccc, 0x39edb649, 0x1b354727, 0x1b5761d8, 0x39dda55a, - 0x39d845e9, 0x1b62bdf8, 0x1b84cc01, 0x39c81a36, 0x39c2b1da, 0x1b9023e5, 0x1bb22530, 0x39b26b6d, - 0x39acfa2b, 0x1bbd78d2, 0x1bdf6d4a, 0x399c990d, 0x39971ee7, 0x1beabca1, 0x1c0ca432, 0x3986a324, - 0x3981201e, 0x1c17ef39, 0x1c39c9cd, 0x397089bf, 0x396afddc, 0x1c45107c, 0x1c66ddfe, 0x395a4ceb, - 0x3954b82e, 0x1c72204f, 0x1c93e0ab, 0x3943ecb6, 0x393e4f23, 0x1c9f1e96, 0x1cc0d1b6, 0x392d692f, - 0x3927c2c9, 0x1ccc0b35, 0x1cedb106, 0x3916c262, 0x3911132d, 0x1cf8e611, 0x1d1a7e7d, 0x38fff85e, - 0x38fa405e, 0x1d25af0d, 0x1d473a00, 0x38e90b31, 0x38e34a69, 0x1d52660f, 0x1d73e374, 0x38d1fae9, - 0x38cc315d, 0x1d7f0afb, 0x1da07abc, 0x38bac795, 0x38b4f547, 0x1dab9db5, 0x1dccffbf, 0x38a37142, - 0x389d9637, 0x1dd81e21, 0x1df9725f, 0x388bf7ff, 0x3886143b, 0x1e048c24, 0x1e25d282, 0x38745bdb, - 0x386e6f60, 0x1e30e7a4, 0x1e52200c, 0x385c9ce3, 0x3856a7b6, 0x1e5d3084, 0x1e7e5ae2, 0x3844bb28, - 0x383ebd4c, 0x1e8966a8, 0x1eaa82e9, 0x382cb6b7, 0x3826b030, 0x1eb589f7, 0x1ed69805, 0x38148f9f, - 0x380e8071, 0x1ee19a54, 0x1f029a1c, 0x37fc45ef, 0x37f62e1d, 0x1f0d97a5, 0x1f2e8911, 0x37e3d9b7, - 0x37ddb945, 0x1f3981ce, 0x1f5a64cb, 0x37cb4b04, 0x37c521f6, 0x1f6558b5, 0x1f862d2d, 0x37b299e7, - 0x37ac6841, 0x1f911c3d, 0x1fb1e21d, 0x3799c66f, 0x37938c34, 0x1fbccc4d, 0x1fdd8381, 0x3780d0aa, - 0x377a8ddf, 0x1fe868c8, 0x2009113c, 0x3767b8a9, 0x37616d51, 0x2013f196, 0x20348b35, 0x374e7e7b, - 0x37482a9a, 0x203f6699, 0x205ff14f, 0x3735222f, 0x372ec5c9, 0x206ac7b8, 0x208b4372, 0x371ba3d4, - 0x37153eee, 0x209614d9, 0x20b68181, 0x3702037c, 0x36fb9618, 0x20c14ddf, 0x20e1ab63, 0x36e84135, - 0x36e1cb58, 0x20ec72b1, 0x210cc0fc, 0x36ce5d10, 0x36c7debd, 0x21178334, 0x2137c232, 0x36b4571b, - 0x36add058, 0x21427f4d, 0x2162aeea, 0x369a2f69, 0x3693a038, 0x216d66e2, 0x218d870b, 0x367fe608, - 0x36794e6e, 0x219839d8, 0x21b84a79, 0x36657b08, 0x365edb09, 0x21c2f815, 0x21e2f91a, 0x364aee7b, - 0x3644461b, 0x21eda17f, 0x220d92d4, 0x36304070, 0x36298fb4, 0x221835fb, 0x2238178d, 0x361570f8, - 0x360eb7e3, 0x2242b56f, 0x22628729, 0x35fa8023, 0x35f3beba, 0x226d1fc1, 0x228ce191, 0x35df6e03, - 0x35d8a449, 0x229774d7, 0x22b726a8, 0x35c43aa7, 0x35bd68a1, 0x22c1b496, 0x22e15655, 0x35a8e621, - 0x35a20bd3, 0x22ebdee5, 0x230b707e, 0x358d7081, 0x35868def, 0x2315f3a8, 0x23357509, 0x3571d9d9, - 0x356aef08, 0x233ff2c8, 0x235f63dc, 0x35562239, 0x354f2f2c, 0x2369dc29, 0x23893cdd, 0x353a49b2, - 0x35334e6f, 0x2393afb2, 0x23b2fff3, 0x351e5056, 0x35174ce0, 0x23bd6d48, 0x23dcad03, 0x35023636, - 0x34fb2a92, 0x23e714d3, 0x240643f4, 0x34e5fb63, 0x34dee795, 0x2410a639, 0x242fc4ad, 0x34c99fef, - 0x34c283fb, 0x243a215f, 0x24592f13, 0x34ad23eb, 0x34a5ffd5, 0x2463862c, 0x2482830d, 0x34908768, - 0x34895b36, 0x248cd487, 0x24abc082, 0x3473ca79, 0x346c962f, 0x24b60c57, 0x24d4e757, 0x3456ed2f, - 0x344fb0d1, 0x24df2d81, 0x24fdf775, 0x3439ef9c, 0x3432ab2e, 0x250837ed, 0x2526f0c1, 0x341cd1d2, - 0x34158559, 0x25312b81, 0x254fd323, 0x33ff93e2, 0x33f83f62, 0x255a0823, 0x25789e80, 0x33e235df, - 0x33dad95e, 0x2582cdbc, 0x25a152c0, 0x33c4b7db, 0x33bd535c, 0x25ab7c30, 0x25c9efca, 0x33a719e8, - 0x339fad70, 0x25d41369, 0x25f27584, 0x33895c18, 0x3381e7ac, 0x25fc934b, 0x261ae3d6, 0x336b7e7e, - 0x33640223, 0x2624fbbf, 0x26433aa7, 0x334d812d, 0x3345fce6, 0x264d4cac, 0x266b79dd, 0x332f6435, - 0x3327d808, 0x267585f8, 0x2693a161, 0x331127ab, 0x3309939c, 0x269da78b, 0x26bbb119, 0x32f2cba1, - 0x32eb2fb5, 0x26c5b14c, 0x26e3a8ec, 0x32d45029, 0x32ccac64, 0x26eda322, 0x270b88c2, 0x32b5b557, - 0x32ae09be, 0x27157cf5, 0x27335082, 0x3296fb3d, 0x328f47d5, 0x273d3eac, 0x275b0014, 0x327821ee, - 0x327066bc, 0x2764e82f, 0x27829760, 0x3259297d, 0x32516686, 0x278c7965, 0x27aa164c, 0x323a11fe, - 0x32324746, 0x27b3f235, 0x27d17cc1, 0x321adb83, 0x3213090f, 0x27db5288, 0x27f8caa5, 0x31fb8620, - 0x31f3abf5, 0x28029a45, 0x281fffe2, 0x31dc11e8, 0x31d4300b, 0x2829c954, 0x28471c5e, 0x31bc7eee, - 0x31b49564, 0x2850df9d, 0x286e2002, 0x319ccd46, 0x3194dc14, 0x2877dd07, 0x28950ab6, 0x317cfd04, - 0x3175042e, 0x289ec17a, 0x28bbdc61, 0x315d0e3b, 0x31550dc6, 0x28c58cdf, 0x28e294eb, 0x313d00ff, - 0x3134f8f1, 0x28ec3f1e, 0x2909343e, 0x311cd564, 0x3114c5c0, 0x2912d81f, 0x292fba40, 0x30fc8b7d, - 0x30f47449, 0x293957c9, 0x295626da, 0x30dc235e, 0x30d404a0, 0x295fbe06, 0x297c79f5, 0x30bb9d1c, - 0x30b376d8, 0x29860abd, 0x29a2b378, 0x309af8ca, 0x3092cb05, 0x29ac3dd7, 0x29c8d34d, 0x307a367c, - 0x3072013c, 0x29d2573c, 0x29eed95b, 0x30595648, 0x30511991, 0x29f856d5, 0x2a14c58b, 0x30385840, - 0x30301418, 0x2a1e3c8a, 0x2a3a97c7, 0x30173c7a, 0x300ef0e5, 0x2a440844, 0x2a604ff5, 0x2ff6030a, - 0x2fedb00d, 0x2a69b9ec, 0x2a85ee00, 0x2fd4ac04, 0x2fcc51a5, 0x2a8f516b, 0x2aab71d0, 0x2fb3377c, - 0x2faad5c1, 0x2ab4cea9, 0x2ad0db4e, 0x2f91a589, 0x2f893c75, 0x2ada318e, 0x2af62a63, 0x2f6ff63d, - 0x2f6785d7, 0x2aff7a05, 0x2b1b5ef8, 0x2f4e29af, 0x2f45b1fb, 0x2b24a7f6, 0x2b4078f5, 0x2f2c3ff2, - 0x2f23c0f6, 0x2b49bb4a, 0x2b657844, 0x2f0a391d, 0x2f01b2de, 0x2b6eb3ea, 0x2b8a5cce, 0x2ee81543, - 0x2edf87c6, 0x2b9391c0, 0x2baf267d, 0x2ec5d479, 0x2ebd3fc4, 0x2bb854b4, 0x2bd3d53a, 0x2ea376d6, - 0x2e9adaee, 0x2bdcfcb0, 0x2bf868ed, 0x2e80fc6e, 0x2e785958, 0x2c01899e, 0x2c1ce181, 0x2e5e6556, - 0x2e55bb17, 0x2c25fb66, 0x2c413edf, 0x2e3bb1a4, 0x2e330042, 0x2c4a51f3, 0x2c6580f1, 0x2e18e16d, - 0x2e1028ed, 0x2c6e8d2e, 0x2c89a79f, 0x2df5f4c7, 0x2ded352f, 0x2c92ad01, 0x2cadb2d5, 0x2dd2ebc7, - 0x2dca251c, 0x2cb6b155, 0x2cd1a27b, 0x2dafc683, 0x2da6f8ca, 0x2cda9a14, 0x2cf5767c, 0x2d8c8510, + 0x3fffffb1, 0x0006487f, 0x002bfb74, 0x3ffff0e3, 0x3fffe705, 0x00388c6e, 0x005e3f4c, 0x3fffba9b, + 0x3fffa6de, 0x006ad03b, 0x009082ea, 0x3fff5cd8, 0x3fff3f3c, 0x009d13c5, 0x00c2c62f, 0x3ffed79b, + 0x3ffeb021, 0x00cf56ef, 0x00f508fc, 0x3ffe2ae5, 0x3ffdf98c, 0x01019998, 0x01274b31, 0x3ffd56b5, + 0x3ffd1b7e, 0x0133dba3, 0x01598cb1, 0x3ffc5b0c, 0x3ffc15f7, 0x01661cf0, 0x018bcd5b, 0x3ffb37ec, + 0x3ffae8f9, 0x01985d60, 0x01be0d11, 0x3ff9ed53, 0x3ff99483, 0x01ca9cd4, 0x01f04bb4, 0x3ff87b44, + 0x3ff81896, 0x01fcdb2e, 0x02228924, 0x3ff6e1bf, 0x3ff67534, 0x022f184d, 0x0254c544, 0x3ff520c5, + 0x3ff4aa5d, 0x02615414, 0x0286fff3, 0x3ff33858, 0x3ff2b813, 0x02938e62, 0x02b93914, 0x3ff12878, + 0x3ff09e56, 0x02c5c71a, 0x02eb7086, 0x3feef126, 0x3fee5d28, 0x02f7fe1c, 0x031da62b, 0x3fec9265, + 0x3febf48b, 0x032a3349, 0x034fd9e5, 0x3fea0c35, 0x3fe96480, 0x035c6682, 0x03820b93, 0x3fe75e98, + 0x3fe6ad08, 0x038e97a9, 0x03b43b17, 0x3fe48990, 0x3fe3ce26, 0x03c0c69e, 0x03e66852, 0x3fe18d1f, + 0x3fe0c7da, 0x03f2f342, 0x04189326, 0x3fde6945, 0x3fdd9a27, 0x04251d77, 0x044abb73, 0x3fdb1e06, + 0x3fda450f, 0x0457451d, 0x047ce11a, 0x3fd7ab64, 0x3fd6c894, 0x04896a16, 0x04af03fc, 0x3fd4115f, + 0x3fd324b7, 0x04bb8c42, 0x04e123fa, 0x3fd04ffc, 0x3fcf597c, 0x04edab83, 0x051340f6, 0x3fcc673b, + 0x3fcb66e4, 0x051fc7b9, 0x05455ad1, 0x3fc8571f, 0x3fc74cf3, 0x0551e0c7, 0x0577716b, 0x3fc41fac, + 0x3fc30baa, 0x0583f68c, 0x05a984a6, 0x3fbfc0e3, 0x3fbea30c, 0x05b608eb, 0x05db9463, 0x3fbb3ac7, + 0x3fba131b, 0x05e817c3, 0x060da083, 0x3fb68d5b, 0x3fb55bdc, 0x061a22f7, 0x063fa8e7, 0x3fb1b8a2, + 0x3fb07d50, 0x064c2a67, 0x0671ad71, 0x3facbc9f, 0x3fab777b, 0x067e2df5, 0x06a3ae00, 0x3fa79954, + 0x3fa64a5f, 0x06b02d81, 0x06d5aa77, 0x3fa24ec6, 0x3fa0f600, 0x06e228ee, 0x0707a2b7, 0x3f9cdcf7, + 0x3f9b7a62, 0x0714201b, 0x073996a1, 0x3f9743eb, 0x3f95d787, 0x074612eb, 0x076b8616, 0x3f9183a5, + 0x3f900d72, 0x0778013d, 0x079d70f7, 0x3f8b9c28, 0x3f8a1c29, 0x07a9eaf5, 0x07cf5726, 0x3f858d79, + 0x3f8403ae, 0x07dbcff2, 0x08013883, 0x3f7f579b, 0x3f7dc405, 0x080db016, 0x083314f1, 0x3f78fa92, + 0x3f775d31, 0x083f8b43, 0x0864ec4f, 0x3f727661, 0x3f70cf38, 0x08716159, 0x0896be80, 0x3f6bcb0e, + 0x3f6a1a1c, 0x08a3323a, 0x08c88b65, 0x3f64f89b, 0x3f633de2, 0x08d4fdc6, 0x08fa52de, 0x3f5dff0e, + 0x3f5c3a8f, 0x0906c3e0, 0x092c14ce, 0x3f56de6a, 0x3f551026, 0x09388469, 0x095dd116, 0x3f4f96b4, + 0x3f4dbeac, 0x096a3f42, 0x098f8796, 0x3f4827f0, 0x3f464626, 0x099bf44c, 0x09c13831, 0x3f409223, + 0x3f3ea697, 0x09cda368, 0x09f2e2c7, 0x3f38d552, 0x3f36e006, 0x09ff4c78, 0x0a24873a, 0x3f30f181, + 0x3f2ef276, 0x0a30ef5e, 0x0a56256c, 0x3f28e6b6, 0x3f26ddec, 0x0a628bfa, 0x0a87bd3d, 0x3f20b4f5, + 0x3f1ea26e, 0x0a94222f, 0x0ab94e8f, 0x3f185c43, 0x3f164001, 0x0ac5b1dc, 0x0aead944, 0x3f0fdca5, + 0x3f0db6a9, 0x0af73ae5, 0x0b1c5d3d, 0x3f073621, 0x3f05066d, 0x0b28bd2a, 0x0b4dda5c, 0x3efe68bc, + 0x3efc2f50, 0x0b5a388d, 0x0b7f5081, 0x3ef5747b, 0x3ef3315a, 0x0b8bacf0, 0x0bb0bf8f, 0x3eec5965, + 0x3eea0c8e, 0x0bbd1a33, 0x0be22766, 0x3ee3177e, 0x3ee0c0f4, 0x0bee8038, 0x0c1387e9, 0x3ed9aecc, + 0x3ed74e91, 0x0c1fdee1, 0x0c44e0f9, 0x3ed01f55, 0x3ecdb56a, 0x0c513610, 0x0c763278, 0x3ec66920, + 0x3ec3f585, 0x0c8285a5, 0x0ca77c47, 0x3ebc8c31, 0x3eba0ee9, 0x0cb3cd84, 0x0cd8be47, 0x3eb2888f, + 0x3eb0019c, 0x0ce50d8c, 0x0d09f85b, 0x3ea85e41, 0x3ea5cda3, 0x0d1645a0, 0x0d3b2a64, 0x3e9e0d4c, + 0x3e9b7306, 0x0d4775a1, 0x0d6c5443, 0x3e9395b7, 0x3e90f1ca, 0x0d789d71, 0x0d9d75db, 0x3e88f788, + 0x3e8649f5, 0x0da9bcf2, 0x0dce8f0d, 0x3e7e32c6, 0x3e7b7b90, 0x0ddad406, 0x0dff9fba, 0x3e734778, + 0x3e70869f, 0x0e0be28e, 0x0e30a7c5, 0x3e6835a4, 0x3e656b2b, 0x0e3ce86b, 0x0e61a70f, 0x3e5cfd51, + 0x3e5a2939, 0x0e6de580, 0x0e929d7a, 0x3e519e86, 0x3e4ec0d1, 0x0e9ed9af, 0x0ec38ae8, 0x3e46194a, + 0x3e4331fa, 0x0ecfc4d9, 0x0ef46f3b, 0x3e3a6da4, 0x3e377cbb, 0x0f00a6df, 0x0f254a53, 0x3e2e9b9c, + 0x3e2ba11b, 0x0f317fa5, 0x0f561c15, 0x3e22a338, 0x3e1f9f21, 0x0f624f0c, 0x0f86e460, 0x3e168480, + 0x3e1376d5, 0x0f9314f5, 0x0fb7a317, 0x3e0a3f7b, 0x3e07283f, 0x0fc3d143, 0x0fe8581d, 0x3dfdd432, + 0x3dfab365, 0x0ff483d7, 0x10190352, 0x3df142ab, 0x3dee1851, 0x10252c94, 0x1049a49a, 0x3de48aef, + 0x3de15708, 0x1055cb5b, 0x107a3bd5, 0x3dd7ad05, 0x3dd46f94, 0x1086600e, 0x10aac8e6, 0x3dcaa8f5, + 0x3dc761fc, 0x10b6ea90, 0x10db4baf, 0x3dbd7ec7, 0x3dba2e48, 0x10e76ac3, 0x110bc413, 0x3db02e84, + 0x3dacd481, 0x1117e088, 0x113c31f3, 0x3da2b834, 0x3d9f54af, 0x11484bc2, 0x116c9531, 0x3d951bde, + 0x3d91aed9, 0x1178ac53, 0x119cedaf, 0x3d87598c, 0x3d83e309, 0x11a9021d, 0x11cd3b50, 0x3d797145, + 0x3d75f147, 0x11d94d02, 0x11fd7df6, 0x3d6b6313, 0x3d67d99b, 0x12098ce5, 0x122db583, 0x3d5d2efe, + 0x3d599c0e, 0x1239c1a7, 0x125de1da, 0x3d4ed50f, 0x3d4b38aa, 0x1269eb2b, 0x128e02dc, 0x3d40554e, + 0x3d3caf76, 0x129a0954, 0x12be186c, 0x3d31afc5, 0x3d2e007c, 0x12ca1c03, 0x12ee226c, 0x3d22e47c, + 0x3d1f2bc5, 0x12fa231b, 0x131e20c0, 0x3d13f37e, 0x3d10315a, 0x132a1e7e, 0x134e1348, 0x3d04dcd2, + 0x3d011145, 0x135a0e0e, 0x137df9e7, 0x3cf5a082, 0x3cf1cb8e, 0x1389f1af, 0x13add481, 0x3ce63e98, + 0x3ce2603f, 0x13b9c943, 0x13dda2f7, 0x3cd6b71e, 0x3cd2cf62, 0x13e994ab, 0x140d652c, 0x3cc70a1c, + 0x3cc318ff, 0x141953cb, 0x143d1b02, 0x3cb7379c, 0x3cb33d22, 0x14490685, 0x146cc45c, 0x3ca73fa9, + 0x3ca33bd3, 0x1478acbc, 0x149c611d, 0x3c97224c, 0x3c93151d, 0x14a84652, 0x14cbf127, 0x3c86df8e, + 0x3c82c909, 0x14d7d32a, 0x14fb745e, 0x3c76777b, 0x3c7257a2, 0x15075327, 0x152aeaa3, 0x3c65ea1c, + 0x3c61c0f1, 0x1536c62b, 0x155a53d9, 0x3c55377b, 0x3c510501, 0x15662c18, 0x1589afe3, 0x3c445fa2, + 0x3c4023dd, 0x159584d3, 0x15b8fea4, 0x3c33629d, 0x3c2f1d8e, 0x15c4d03e, 0x15e83fff, 0x3c224075, + 0x3c1df21f, 0x15f40e3a, 0x161773d6, 0x3c10f935, 0x3c0ca19b, 0x16233eac, 0x16469a0d, 0x3bff8ce8, + 0x3bfb2c0c, 0x16526176, 0x1675b286, 0x3bedfb99, 0x3be9917e, 0x1681767c, 0x16a4bd25, 0x3bdc4552, + 0x3bd7d1fa, 0x16b07d9f, 0x16d3b9cc, 0x3bca6a1d, 0x3bc5ed8d, 0x16df76c3, 0x1702a85e, 0x3bb86a08, + 0x3bb3e440, 0x170e61cc, 0x173188be, 0x3ba6451b, 0x3ba1b620, 0x173d3e9b, 0x17605ad0, 0x3b93fb63, + 0x3b8f6337, 0x176c0d15, 0x178f1e76, 0x3b818ceb, 0x3b7ceb90, 0x179acd1c, 0x17bdd394, 0x3b6ef9be, + 0x3b6a4f38, 0x17c97e93, 0x17ec7a0d, 0x3b5c41e8, 0x3b578e39, 0x17f8215e, 0x181b11c4, 0x3b496574, + 0x3b44a8a0, 0x1826b561, 0x18499a9d, 0x3b36646e, 0x3b319e77, 0x18553a7d, 0x1878147a, 0x3b233ee1, + 0x3b1e6fca, 0x1883b097, 0x18a67f3f, 0x3b0ff4d9, 0x3b0b1ca6, 0x18b21791, 0x18d4dad0, 0x3afc8663, + 0x3af7a516, 0x18e06f50, 0x1903270f, 0x3ae8f38b, 0x3ae40926, 0x190eb7b7, 0x193163e1, 0x3ad53c5b, + 0x3ad048e3, 0x193cf0a9, 0x195f9128, 0x3ac160e1, 0x3abc6458, 0x196b1a09, 0x198daec8, 0x3aad6129, + 0x3aa85b92, 0x199933bb, 0x19bbbca6, 0x3a993d3e, 0x3a942e9d, 0x19c73da3, 0x19e9baa3, 0x3a84f52f, + 0x3a7fdd86, 0x19f537a4, 0x1a17a8a5, 0x3a708906, 0x3a6b6859, 0x1a2321a2, 0x1a45868e, 0x3a5bf8d1, + 0x3a56cf23, 0x1a50fb81, 0x1a735442, 0x3a47449c, 0x3a4211f0, 0x1a7ec524, 0x1aa111a6, 0x3a326c74, + 0x3a2d30cd, 0x1aac7e6f, 0x1acebe9d, 0x3a1d7066, 0x3a182bc8, 0x1ada2746, 0x1afc5b0a, 0x3a08507f, + 0x3a0302ed, 0x1b07bf8c, 0x1b29e6d2, 0x39f30ccc, 0x39edb649, 0x1b354727, 0x1b5761d8, 0x39dda55a, + 0x39d845e9, 0x1b62bdf8, 0x1b84cc01, 0x39c81a36, 0x39c2b1da, 0x1b9023e5, 0x1bb22530, 0x39b26b6d, + 0x39acfa2b, 0x1bbd78d2, 0x1bdf6d4a, 0x399c990d, 0x39971ee7, 0x1beabca1, 0x1c0ca432, 0x3986a324, + 0x3981201e, 0x1c17ef39, 0x1c39c9cd, 0x397089bf, 0x396afddc, 0x1c45107c, 0x1c66ddfe, 0x395a4ceb, + 0x3954b82e, 0x1c72204f, 0x1c93e0ab, 0x3943ecb6, 0x393e4f23, 0x1c9f1e96, 0x1cc0d1b6, 0x392d692f, + 0x3927c2c9, 0x1ccc0b35, 0x1cedb106, 0x3916c262, 0x3911132d, 0x1cf8e611, 0x1d1a7e7d, 0x38fff85e, + 0x38fa405e, 0x1d25af0d, 0x1d473a00, 0x38e90b31, 0x38e34a69, 0x1d52660f, 0x1d73e374, 0x38d1fae9, + 0x38cc315d, 0x1d7f0afb, 0x1da07abc, 0x38bac795, 0x38b4f547, 0x1dab9db5, 0x1dccffbf, 0x38a37142, + 0x389d9637, 0x1dd81e21, 0x1df9725f, 0x388bf7ff, 0x3886143b, 0x1e048c24, 0x1e25d282, 0x38745bdb, + 0x386e6f60, 0x1e30e7a4, 0x1e52200c, 0x385c9ce3, 0x3856a7b6, 0x1e5d3084, 0x1e7e5ae2, 0x3844bb28, + 0x383ebd4c, 0x1e8966a8, 0x1eaa82e9, 0x382cb6b7, 0x3826b030, 0x1eb589f7, 0x1ed69805, 0x38148f9f, + 0x380e8071, 0x1ee19a54, 0x1f029a1c, 0x37fc45ef, 0x37f62e1d, 0x1f0d97a5, 0x1f2e8911, 0x37e3d9b7, + 0x37ddb945, 0x1f3981ce, 0x1f5a64cb, 0x37cb4b04, 0x37c521f6, 0x1f6558b5, 0x1f862d2d, 0x37b299e7, + 0x37ac6841, 0x1f911c3d, 0x1fb1e21d, 0x3799c66f, 0x37938c34, 0x1fbccc4d, 0x1fdd8381, 0x3780d0aa, + 0x377a8ddf, 0x1fe868c8, 0x2009113c, 0x3767b8a9, 0x37616d51, 0x2013f196, 0x20348b35, 0x374e7e7b, + 0x37482a9a, 0x203f6699, 0x205ff14f, 0x3735222f, 0x372ec5c9, 0x206ac7b8, 0x208b4372, 0x371ba3d4, + 0x37153eee, 0x209614d9, 0x20b68181, 0x3702037c, 0x36fb9618, 0x20c14ddf, 0x20e1ab63, 0x36e84135, + 0x36e1cb58, 0x20ec72b1, 0x210cc0fc, 0x36ce5d10, 0x36c7debd, 0x21178334, 0x2137c232, 0x36b4571b, + 0x36add058, 0x21427f4d, 0x2162aeea, 0x369a2f69, 0x3693a038, 0x216d66e2, 0x218d870b, 0x367fe608, + 0x36794e6e, 0x219839d8, 0x21b84a79, 0x36657b08, 0x365edb09, 0x21c2f815, 0x21e2f91a, 0x364aee7b, + 0x3644461b, 0x21eda17f, 0x220d92d4, 0x36304070, 0x36298fb4, 0x221835fb, 0x2238178d, 0x361570f8, + 0x360eb7e3, 0x2242b56f, 0x22628729, 0x35fa8023, 0x35f3beba, 0x226d1fc1, 0x228ce191, 0x35df6e03, + 0x35d8a449, 0x229774d7, 0x22b726a8, 0x35c43aa7, 0x35bd68a1, 0x22c1b496, 0x22e15655, 0x35a8e621, + 0x35a20bd3, 0x22ebdee5, 0x230b707e, 0x358d7081, 0x35868def, 0x2315f3a8, 0x23357509, 0x3571d9d9, + 0x356aef08, 0x233ff2c8, 0x235f63dc, 0x35562239, 0x354f2f2c, 0x2369dc29, 0x23893cdd, 0x353a49b2, + 0x35334e6f, 0x2393afb2, 0x23b2fff3, 0x351e5056, 0x35174ce0, 0x23bd6d48, 0x23dcad03, 0x35023636, + 0x34fb2a92, 0x23e714d3, 0x240643f4, 0x34e5fb63, 0x34dee795, 0x2410a639, 0x242fc4ad, 0x34c99fef, + 0x34c283fb, 0x243a215f, 0x24592f13, 0x34ad23eb, 0x34a5ffd5, 0x2463862c, 0x2482830d, 0x34908768, + 0x34895b36, 0x248cd487, 0x24abc082, 0x3473ca79, 0x346c962f, 0x24b60c57, 0x24d4e757, 0x3456ed2f, + 0x344fb0d1, 0x24df2d81, 0x24fdf775, 0x3439ef9c, 0x3432ab2e, 0x250837ed, 0x2526f0c1, 0x341cd1d2, + 0x34158559, 0x25312b81, 0x254fd323, 0x33ff93e2, 0x33f83f62, 0x255a0823, 0x25789e80, 0x33e235df, + 0x33dad95e, 0x2582cdbc, 0x25a152c0, 0x33c4b7db, 0x33bd535c, 0x25ab7c30, 0x25c9efca, 0x33a719e8, + 0x339fad70, 0x25d41369, 0x25f27584, 0x33895c18, 0x3381e7ac, 0x25fc934b, 0x261ae3d6, 0x336b7e7e, + 0x33640223, 0x2624fbbf, 0x26433aa7, 0x334d812d, 0x3345fce6, 0x264d4cac, 0x266b79dd, 0x332f6435, + 0x3327d808, 0x267585f8, 0x2693a161, 0x331127ab, 0x3309939c, 0x269da78b, 0x26bbb119, 0x32f2cba1, + 0x32eb2fb5, 0x26c5b14c, 0x26e3a8ec, 0x32d45029, 0x32ccac64, 0x26eda322, 0x270b88c2, 0x32b5b557, + 0x32ae09be, 0x27157cf5, 0x27335082, 0x3296fb3d, 0x328f47d5, 0x273d3eac, 0x275b0014, 0x327821ee, + 0x327066bc, 0x2764e82f, 0x27829760, 0x3259297d, 0x32516686, 0x278c7965, 0x27aa164c, 0x323a11fe, + 0x32324746, 0x27b3f235, 0x27d17cc1, 0x321adb83, 0x3213090f, 0x27db5288, 0x27f8caa5, 0x31fb8620, + 0x31f3abf5, 0x28029a45, 0x281fffe2, 0x31dc11e8, 0x31d4300b, 0x2829c954, 0x28471c5e, 0x31bc7eee, + 0x31b49564, 0x2850df9d, 0x286e2002, 0x319ccd46, 0x3194dc14, 0x2877dd07, 0x28950ab6, 0x317cfd04, + 0x3175042e, 0x289ec17a, 0x28bbdc61, 0x315d0e3b, 0x31550dc6, 0x28c58cdf, 0x28e294eb, 0x313d00ff, + 0x3134f8f1, 0x28ec3f1e, 0x2909343e, 0x311cd564, 0x3114c5c0, 0x2912d81f, 0x292fba40, 0x30fc8b7d, + 0x30f47449, 0x293957c9, 0x295626da, 0x30dc235e, 0x30d404a0, 0x295fbe06, 0x297c79f5, 0x30bb9d1c, + 0x30b376d8, 0x29860abd, 0x29a2b378, 0x309af8ca, 0x3092cb05, 0x29ac3dd7, 0x29c8d34d, 0x307a367c, + 0x3072013c, 0x29d2573c, 0x29eed95b, 0x30595648, 0x30511991, 0x29f856d5, 0x2a14c58b, 0x30385840, + 0x30301418, 0x2a1e3c8a, 0x2a3a97c7, 0x30173c7a, 0x300ef0e5, 0x2a440844, 0x2a604ff5, 0x2ff6030a, + 0x2fedb00d, 0x2a69b9ec, 0x2a85ee00, 0x2fd4ac04, 0x2fcc51a5, 0x2a8f516b, 0x2aab71d0, 0x2fb3377c, + 0x2faad5c1, 0x2ab4cea9, 0x2ad0db4e, 0x2f91a589, 0x2f893c75, 0x2ada318e, 0x2af62a63, 0x2f6ff63d, + 0x2f6785d7, 0x2aff7a05, 0x2b1b5ef8, 0x2f4e29af, 0x2f45b1fb, 0x2b24a7f6, 0x2b4078f5, 0x2f2c3ff2, + 0x2f23c0f6, 0x2b49bb4a, 0x2b657844, 0x2f0a391d, 0x2f01b2de, 0x2b6eb3ea, 0x2b8a5cce, 0x2ee81543, + 0x2edf87c6, 0x2b9391c0, 0x2baf267d, 0x2ec5d479, 0x2ebd3fc4, 0x2bb854b4, 0x2bd3d53a, 0x2ea376d6, + 0x2e9adaee, 0x2bdcfcb0, 0x2bf868ed, 0x2e80fc6e, 0x2e785958, 0x2c01899e, 0x2c1ce181, 0x2e5e6556, + 0x2e55bb17, 0x2c25fb66, 0x2c413edf, 0x2e3bb1a4, 0x2e330042, 0x2c4a51f3, 0x2c6580f1, 0x2e18e16d, + 0x2e1028ed, 0x2c6e8d2e, 0x2c89a79f, 0x2df5f4c7, 0x2ded352f, 0x2c92ad01, 0x2cadb2d5, 0x2dd2ebc7, + 0x2dca251c, 0x2cb6b155, 0x2cd1a27b, 0x2dafc683, 0x2da6f8ca, 0x2cda9a14, 0x2cf5767c, 0x2d8c8510, 0x2d83b04f, 0x2cfe6728, 0x2d192ec1, 0x2d692784, 0x2d604bc0, 0x2d22187a, 0x2d3ccb34, 0x2d45adf6 }; const int twidTab512[8*6 + 32*6 + 128*6] = { - 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3b20d79e, 0x187de2a6, - 0x3ec52f9f, 0x0c7c5c1e, 0x3536cc52, 0x238e7673, 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, - 0x187de2a6, 0x3b20d79e, 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, 0xf383a3e2, 0x3ec52f9f, - 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xe7821d5a, 0x3b20d79e, - 0x238e7673, 0x3536cc52, 0xc13ad061, 0x0c7c5c1e, 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, - 0xc4df2862, 0xe7821d5a, 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, 0xdc71898d, 0xcac933ae, - - 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3fb11b47, 0x0645e9af, - 0x3fec43c6, 0x0323ecbe, 0x3f4eaafe, 0x09640837, 0x3ec52f9f, 0x0c7c5c1e, 0x3fb11b47, 0x0645e9af, - 0x3d3e82ad, 0x1294062e, 0x3d3e82ad, 0x1294062e, 0x3f4eaafe, 0x09640837, 0x39daf5e8, 0x1b5d1009, - 0x3b20d79e, 0x187de2a6, 0x3ec52f9f, 0x0c7c5c1e, 0x3536cc52, 0x238e7673, 0x387165e3, 0x1e2b5d38, - 0x3e14fdf7, 0x0f8cfcbd, 0x2f6bbe44, 0x2afad269, 0x3536cc52, 0x238e7673, 0x3d3e82ad, 0x1294062e, - 0x2899e64a, 0x317900d6, 0x317900d6, 0x2899e64a, 0x3c424209, 0x158f9a75, 0x20e70f32, 0x36e5068a, - 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x2899e64a, 0x317900d6, - 0x39daf5e8, 0x1b5d1009, 0x0f8cfcbd, 0x3e14fdf7, 0x238e7673, 0x3536cc52, 0x387165e3, 0x1e2b5d38, - 0x0645e9af, 0x3fb11b47, 0x1e2b5d38, 0x387165e3, 0x36e5068a, 0x20e70f32, 0xfcdc1342, 0x3fec43c6, - 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, 0xf383a3e2, 0x3ec52f9f, 0x1294062e, 0x3d3e82ad, - 0x3367c08f, 0x261feff9, 0xea70658b, 0x3c424209, 0x0c7c5c1e, 0x3ec52f9f, 0x317900d6, 0x2899e64a, - 0xe1d4a2c8, 0x387165e3, 0x0645e9af, 0x3fb11b47, 0x2f6bbe44, 0x2afad269, 0xd9e01007, 0x3367c08f, - 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xf9ba1651, 0x3fb11b47, - 0x2afad269, 0x2f6bbe44, 0xcc983f71, 0x261feff9, 0xf383a3e2, 0x3ec52f9f, 0x2899e64a, 0x317900d6, - 0xc78e9a1d, 0x1e2b5d38, 0xed6bf9d2, 0x3d3e82ad, 0x261feff9, 0x3367c08f, 0xc3bdbdf7, 0x158f9a75, - 0xe7821d5a, 0x3b20d79e, 0x238e7673, 0x3536cc52, 0xc13ad061, 0x0c7c5c1e, 0xe1d4a2c8, 0x387165e3, - 0x20e70f32, 0x36e5068a, 0xc013bc3a, 0x0323ecbe, 0xdc71898d, 0x3536cc52, 0x1e2b5d38, 0x387165e3, - 0xc04ee4b9, 0xf9ba1651, 0xd76619b6, 0x317900d6, 0x1b5d1009, 0x39daf5e8, 0xc1eb0209, 0xf0730343, - 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, 0xce86ff2a, 0x2899e64a, - 0x158f9a75, 0x3c424209, 0xc91af976, 0xdf18f0ce, 0xcac933ae, 0x238e7673, 0x1294062e, 0x3d3e82ad, - 0xce86ff2a, 0xd76619b6, 0xc78e9a1d, 0x1e2b5d38, 0x0f8cfcbd, 0x3e14fdf7, 0xd5052d97, 0xd09441bc, - 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, 0xdc71898d, 0xcac933ae, 0xc2c17d53, 0x1294062e, - 0x09640837, 0x3f4eaafe, 0xe4a2eff7, 0xc6250a18, 0xc13ad061, 0x0c7c5c1e, 0x0645e9af, 0x3fb11b47, - 0xed6bf9d2, 0xc2c17d53, 0xc04ee4b9, 0x0645e9af, 0x0323ecbe, 0x3fec43c6, 0xf69bf7c9, 0xc0b15502, - - 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3ffb10c1, 0x0192155f, - 0x3ffec42d, 0x00c90e8f, 0x3ff4e5df, 0x025b0cae, 0x3fec43c6, 0x0323ecbe, 0x3ffb10c1, 0x0192155f, - 0x3fd39b5a, 0x04b54824, 0x3fd39b5a, 0x04b54824, 0x3ff4e5df, 0x025b0cae, 0x3f9c2bfa, 0x070de171, - 0x3fb11b47, 0x0645e9af, 0x3fec43c6, 0x0323ecbe, 0x3f4eaafe, 0x09640837, 0x3f84c8e1, 0x07d59395, - 0x3fe12acb, 0x03ecadcf, 0x3eeb3347, 0x0bb6ecef, 0x3f4eaafe, 0x09640837, 0x3fd39b5a, 0x04b54824, - 0x3e71e758, 0x0e05c135, 0x3f0ec9f4, 0x0af10a22, 0x3fc395f9, 0x057db402, 0x3de2f147, 0x104fb80e, - 0x3ec52f9f, 0x0c7c5c1e, 0x3fb11b47, 0x0645e9af, 0x3d3e82ad, 0x1294062e, 0x3e71e758, 0x0e05c135, - 0x3f9c2bfa, 0x070de171, 0x3c84d496, 0x14d1e242, 0x3e14fdf7, 0x0f8cfcbd, 0x3f84c8e1, 0x07d59395, - 0x3bb6276d, 0x17088530, 0x3dae81ce, 0x1111d262, 0x3f6af2e3, 0x089cf867, 0x3ad2c2e7, 0x19372a63, - 0x3d3e82ad, 0x1294062e, 0x3f4eaafe, 0x09640837, 0x39daf5e8, 0x1b5d1009, 0x3cc511d8, 0x14135c94, - 0x3f2ff249, 0x0a2abb58, 0x38cf1669, 0x1d79775b, 0x3c424209, 0x158f9a75, 0x3f0ec9f4, 0x0af10a22, - 0x37af8158, 0x1f8ba4db, 0x3bb6276d, 0x17088530, 0x3eeb3347, 0x0bb6ecef, 0x367c9a7d, 0x2192e09a, - 0x3b20d79e, 0x187de2a6, 0x3ec52f9f, 0x0c7c5c1e, 0x3536cc52, 0x238e7673, 0x3a8269a2, 0x19ef7943, - 0x3e9cc076, 0x0d415012, 0x33de87de, 0x257db64b, 0x39daf5e8, 0x1b5d1009, 0x3e71e758, 0x0e05c135, - 0x32744493, 0x275ff452, 0x392a9642, 0x1cc66e99, 0x3e44a5ee, 0x0ec9a7f2, 0x30f8801f, 0x29348937, - 0x387165e3, 0x1e2b5d38, 0x3e14fdf7, 0x0f8cfcbd, 0x2f6bbe44, 0x2afad269, 0x37af8158, 0x1f8ba4db, - 0x3de2f147, 0x104fb80e, 0x2dce88a9, 0x2cb2324b, 0x36e5068a, 0x20e70f32, 0x3dae81ce, 0x1111d262, - 0x2c216eaa, 0x2e5a106f, 0x361214b0, 0x223d66a8, 0x3d77b191, 0x11d3443f, 0x2a650525, 0x2ff1d9c6, - 0x3536cc52, 0x238e7673, 0x3d3e82ad, 0x1294062e, 0x2899e64a, 0x317900d6, 0x34534f40, 0x24da0a99, - 0x3d02f756, 0x135410c2, 0x26c0b162, 0x32eefde9, 0x3367c08f, 0x261feff9, 0x3cc511d8, 0x14135c94, - 0x24da0a99, 0x34534f40, 0x32744493, 0x275ff452, 0x3c84d496, 0x14d1e242, 0x22e69ac7, 0x35a5793c, - 0x317900d6, 0x2899e64a, 0x3c424209, 0x158f9a75, 0x20e70f32, 0x36e5068a, 0x30761c17, 0x29cd9577, - 0x3bfd5cc4, 0x164c7ddd, 0x1edc1952, 0x3811884c, 0x2f6bbe44, 0x2afad269, 0x3bb6276d, 0x17088530, - 0x1cc66e99, 0x392a9642, 0x2e5a106f, 0x2c216eaa, 0x3b6ca4c4, 0x17c3a931, 0x1aa6c82b, 0x3a2fcee8, - 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x2c216eaa, 0x2e5a106f, - 0x3ad2c2e7, 0x19372a63, 0x164c7ddd, 0x3bfd5cc4, 0x2afad269, 0x2f6bbe44, 0x3a8269a2, 0x19ef7943, - 0x14135c94, 0x3cc511d8, 0x29cd9577, 0x30761c17, 0x3a2fcee8, 0x1aa6c82b, 0x11d3443f, 0x3d77b191, - 0x2899e64a, 0x317900d6, 0x39daf5e8, 0x1b5d1009, 0x0f8cfcbd, 0x3e14fdf7, 0x275ff452, 0x32744493, - 0x3983e1e7, 0x1c1249d8, 0x0d415012, 0x3e9cc076, 0x261feff9, 0x3367c08f, 0x392a9642, 0x1cc66e99, - 0x0af10a22, 0x3f0ec9f4, 0x24da0a99, 0x34534f40, 0x38cf1669, 0x1d79775b, 0x089cf867, 0x3f6af2e3, - 0x238e7673, 0x3536cc52, 0x387165e3, 0x1e2b5d38, 0x0645e9af, 0x3fb11b47, 0x223d66a8, 0x361214b0, - 0x3811884c, 0x1edc1952, 0x03ecadcf, 0x3fe12acb, 0x20e70f32, 0x36e5068a, 0x37af8158, 0x1f8ba4db, - 0x0192155f, 0x3ffb10c1, 0x1f8ba4db, 0x37af8158, 0x374b54ce, 0x2039f90e, 0xff36f171, 0x3ffec42d, - 0x1e2b5d38, 0x387165e3, 0x36e5068a, 0x20e70f32, 0xfcdc1342, 0x3fec43c6, 0x1cc66e99, 0x392a9642, - 0x367c9a7d, 0x2192e09a, 0xfa824bfe, 0x3fc395f9, 0x1b5d1009, 0x39daf5e8, 0x361214b0, 0x223d66a8, - 0xf82a6c6b, 0x3f84c8e1, 0x19ef7943, 0x3a8269a2, 0x35a5793c, 0x22e69ac7, 0xf5d544a8, 0x3f2ff249, - 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, 0xf383a3e2, 0x3ec52f9f, 0x17088530, 0x3bb6276d, - 0x34c61236, 0x2434f332, 0xf136580e, 0x3e44a5ee, 0x158f9a75, 0x3c424209, 0x34534f40, 0x24da0a99, - 0xeeee2d9e, 0x3dae81ce, 0x14135c94, 0x3cc511d8, 0x33de87de, 0x257db64b, 0xecabef3e, 0x3d02f756, - 0x1294062e, 0x3d3e82ad, 0x3367c08f, 0x261feff9, 0xea70658b, 0x3c424209, 0x1111d262, 0x3dae81ce, - 0x32eefde9, 0x26c0b162, 0xe83c56cf, 0x3b6ca4c4, 0x0f8cfcbd, 0x3e14fdf7, 0x32744493, 0x275ff452, - 0xe61086bd, 0x3a8269a2, 0x0e05c135, 0x3e71e758, 0x31f79947, 0x27fdb2a6, 0xe3edb628, 0x3983e1e7, - 0x0c7c5c1e, 0x3ec52f9f, 0x317900d6, 0x2899e64a, 0xe1d4a2c8, 0x387165e3, 0x0af10a22, 0x3f0ec9f4, - 0x30f8801f, 0x29348937, 0xdfc606f2, 0x374b54ce, 0x09640837, 0x3f4eaafe, 0x30761c17, 0x29cd9577, - 0xddc29958, 0x361214b0, 0x07d59395, 0x3f84c8e1, 0x2ff1d9c6, 0x2a650525, 0xdbcb0cce, 0x34c61236, - 0x0645e9af, 0x3fb11b47, 0x2f6bbe44, 0x2afad269, 0xd9e01007, 0x3367c08f, 0x04b54824, 0x3fd39b5a, - 0x2ee3cebe, 0x2b8ef77c, 0xd8024d5a, 0x31f79947, 0x0323ecbe, 0x3fec43c6, 0x2e5a106f, 0x2c216eaa, - 0xd6326a89, 0x30761c17, 0x0192155f, 0x3ffb10c1, 0x2dce88a9, 0x2cb2324b, 0xd4710884, 0x2ee3cebe, - 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xfe6deaa1, 0x3ffb10c1, - 0x2cb2324b, 0x2dce88a9, 0xd11c3142, 0x2b8ef77c, 0xfcdc1342, 0x3fec43c6, 0x2c216eaa, 0x2e5a106f, - 0xcf89e3e9, 0x29cd9577, 0xfb4ab7dc, 0x3fd39b5a, 0x2b8ef77c, 0x2ee3cebe, 0xce0866b9, 0x27fdb2a6, - 0xf9ba1651, 0x3fb11b47, 0x2afad269, 0x2f6bbe44, 0xcc983f71, 0x261feff9, 0xf82a6c6b, 0x3f84c8e1, - 0x2a650525, 0x2ff1d9c6, 0xcb39edca, 0x2434f332, 0xf69bf7c9, 0x3f4eaafe, 0x29cd9577, 0x30761c17, - 0xc9edeb50, 0x223d66a8, 0xf50ef5de, 0x3f0ec9f4, 0x29348937, 0x30f8801f, 0xc8b4ab32, 0x2039f90e, - 0xf383a3e2, 0x3ec52f9f, 0x2899e64a, 0x317900d6, 0xc78e9a1d, 0x1e2b5d38, 0xf1fa3ecb, 0x3e71e758, - 0x27fdb2a6, 0x31f79947, 0xc67c1e19, 0x1c1249d8, 0xf0730343, 0x3e14fdf7, 0x275ff452, 0x32744493, - 0xc57d965e, 0x19ef7943, 0xeeee2d9e, 0x3dae81ce, 0x26c0b162, 0x32eefde9, 0xc4935b3c, 0x17c3a931, - 0xed6bf9d2, 0x3d3e82ad, 0x261feff9, 0x3367c08f, 0xc3bdbdf7, 0x158f9a75, 0xebeca36c, 0x3cc511d8, - 0x257db64b, 0x33de87de, 0xc2fd08aa, 0x135410c2, 0xea70658b, 0x3c424209, 0x24da0a99, 0x34534f40, - 0xc2517e32, 0x1111d262, 0xe8f77ad0, 0x3bb6276d, 0x2434f332, 0x34c61236, 0xc1bb5a12, 0x0ec9a7f2, - 0xe7821d5a, 0x3b20d79e, 0x238e7673, 0x3536cc52, 0xc13ad061, 0x0c7c5c1e, 0xe61086bd, 0x3a8269a2, - 0x22e69ac7, 0x35a5793c, 0xc0d00db7, 0x0a2abb58, 0xe4a2eff7, 0x39daf5e8, 0x223d66a8, 0x361214b0, - 0xc07b371f, 0x07d59395, 0xe3399167, 0x392a9642, 0x2192e09a, 0x367c9a7d, 0xc03c6a07, 0x057db402, - 0xe1d4a2c8, 0x387165e3, 0x20e70f32, 0x36e5068a, 0xc013bc3a, 0x0323ecbe, 0xe0745b25, 0x37af8158, - 0x2039f90e, 0x374b54ce, 0xc0013bd3, 0x00c90e8f, 0xdf18f0ce, 0x36e5068a, 0x1f8ba4db, 0x37af8158, - 0xc004ef3f, 0xfe6deaa1, 0xddc29958, 0x361214b0, 0x1edc1952, 0x3811884c, 0xc01ed535, 0xfc135231, - 0xdc71898d, 0x3536cc52, 0x1e2b5d38, 0x387165e3, 0xc04ee4b9, 0xf9ba1651, 0xdb25f567, 0x34534f40, - 0x1d79775b, 0x38cf1669, 0xc0950d1d, 0xf7630799, 0xd9e01007, 0x3367c08f, 0x1cc66e99, 0x392a9642, - 0xc0f1360c, 0xf50ef5de, 0xd8a00bae, 0x32744493, 0x1c1249d8, 0x3983e1e7, 0xc1633f8a, 0xf2beafee, - 0xd76619b6, 0x317900d6, 0x1b5d1009, 0x39daf5e8, 0xc1eb0209, 0xf0730343, 0xd6326a89, 0x30761c17, - 0x1aa6c82b, 0x3a2fcee8, 0xc2884e6f, 0xee2cbbc1, 0xd5052d97, 0x2f6bbe44, 0x19ef7943, 0x3a8269a2, - 0xc33aee28, 0xebeca36c, 0xd3de9156, 0x2e5a106f, 0x19372a63, 0x3ad2c2e7, 0xc402a33c, 0xe9b38223, - 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, 0xd1a5ef91, 0x2c216eaa, - 0x17c3a931, 0x3b6ca4c4, 0xc5d03118, 0xe55937d5, 0xd09441bc, 0x2afad269, 0x17088530, 0x3bb6276d, - 0xc6d569be, 0xe3399167, 0xcf89e3e9, 0x29cd9577, 0x164c7ddd, 0x3bfd5cc4, 0xc7ee77b4, 0xe123e6ae, - 0xce86ff2a, 0x2899e64a, 0x158f9a75, 0x3c424209, 0xc91af976, 0xdf18f0ce, 0xcd8bbb6d, 0x275ff452, - 0x14d1e242, 0x3c84d496, 0xca5a86c4, 0xdd196539, 0xcc983f71, 0x261feff9, 0x14135c94, 0x3cc511d8, - 0xcbacb0c0, 0xdb25f567, 0xcbacb0c0, 0x24da0a99, 0x135410c2, 0x3d02f756, 0xcd110217, 0xd93f4e9e, - 0xcac933ae, 0x238e7673, 0x1294062e, 0x3d3e82ad, 0xce86ff2a, 0xd76619b6, 0xc9edeb50, 0x223d66a8, - 0x11d3443f, 0x3d77b191, 0xd00e263a, 0xd59afadb, 0xc91af976, 0x20e70f32, 0x1111d262, 0x3dae81ce, - 0xd1a5ef91, 0xd3de9156, 0xc8507ea8, 0x1f8ba4db, 0x104fb80e, 0x3de2f147, 0xd34dcdb5, 0xd2317757, - 0xc78e9a1d, 0x1e2b5d38, 0x0f8cfcbd, 0x3e14fdf7, 0xd5052d97, 0xd09441bc, 0xc6d569be, 0x1cc66e99, - 0x0ec9a7f2, 0x3e44a5ee, 0xd6cb76c9, 0xcf077fe1, 0xc6250a18, 0x1b5d1009, 0x0e05c135, 0x3e71e758, - 0xd8a00bae, 0xcd8bbb6d, 0xc57d965e, 0x19ef7943, 0x0d415012, 0x3e9cc076, 0xda8249b5, 0xcc217822, - 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, 0xdc71898d, 0xcac933ae, 0xc449d893, 0x17088530, - 0x0bb6ecef, 0x3eeb3347, 0xde6d1f66, 0xc9836583, 0xc3bdbdf7, 0x158f9a75, 0x0af10a22, 0x3f0ec9f4, - 0xe0745b25, 0xc8507ea8, 0xc33aee28, 0x14135c94, 0x0a2abb58, 0x3f2ff249, 0xe28688a5, 0xc730e997, - 0xc2c17d53, 0x1294062e, 0x09640837, 0x3f4eaafe, 0xe4a2eff7, 0xc6250a18, 0xc2517e32, 0x1111d262, - 0x089cf867, 0x3f6af2e3, 0xe6c8d59d, 0xc52d3d19, 0xc1eb0209, 0x0f8cfcbd, 0x07d59395, 0x3f84c8e1, - 0xe8f77ad0, 0xc449d893, 0xc18e18a8, 0x0e05c135, 0x070de171, 0x3f9c2bfa, 0xeb2e1dbe, 0xc37b2b6a, - 0xc13ad061, 0x0c7c5c1e, 0x0645e9af, 0x3fb11b47, 0xed6bf9d2, 0xc2c17d53, 0xc0f1360c, 0x0af10a22, - 0x057db402, 0x3fc395f9, 0xefb047f2, 0xc21d0eb9, 0xc0b15502, 0x09640837, 0x04b54824, 0x3fd39b5a, - 0xf1fa3ecb, 0xc18e18a8, 0xc07b371f, 0x07d59395, 0x03ecadcf, 0x3fe12acb, 0xf4491311, 0xc114ccb9, - 0xc04ee4b9, 0x0645e9af, 0x0323ecbe, 0x3fec43c6, 0xf69bf7c9, 0xc0b15502, 0xc02c64a6, 0x04b54824, - 0x025b0cae, 0x3ff4e5df, 0xf8f21e8f, 0xc063d406, 0xc013bc3a, 0x0323ecbe, 0x0192155f, 0x3ffb10c1, + 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3b20d79e, 0x187de2a6, + 0x3ec52f9f, 0x0c7c5c1e, 0x3536cc52, 0x238e7673, 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, + 0x187de2a6, 0x3b20d79e, 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, 0xf383a3e2, 0x3ec52f9f, + 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xe7821d5a, 0x3b20d79e, + 0x238e7673, 0x3536cc52, 0xc13ad061, 0x0c7c5c1e, 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, + 0xc4df2862, 0xe7821d5a, 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, 0xdc71898d, 0xcac933ae, + + 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3fb11b47, 0x0645e9af, + 0x3fec43c6, 0x0323ecbe, 0x3f4eaafe, 0x09640837, 0x3ec52f9f, 0x0c7c5c1e, 0x3fb11b47, 0x0645e9af, + 0x3d3e82ad, 0x1294062e, 0x3d3e82ad, 0x1294062e, 0x3f4eaafe, 0x09640837, 0x39daf5e8, 0x1b5d1009, + 0x3b20d79e, 0x187de2a6, 0x3ec52f9f, 0x0c7c5c1e, 0x3536cc52, 0x238e7673, 0x387165e3, 0x1e2b5d38, + 0x3e14fdf7, 0x0f8cfcbd, 0x2f6bbe44, 0x2afad269, 0x3536cc52, 0x238e7673, 0x3d3e82ad, 0x1294062e, + 0x2899e64a, 0x317900d6, 0x317900d6, 0x2899e64a, 0x3c424209, 0x158f9a75, 0x20e70f32, 0x36e5068a, + 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x2899e64a, 0x317900d6, + 0x39daf5e8, 0x1b5d1009, 0x0f8cfcbd, 0x3e14fdf7, 0x238e7673, 0x3536cc52, 0x387165e3, 0x1e2b5d38, + 0x0645e9af, 0x3fb11b47, 0x1e2b5d38, 0x387165e3, 0x36e5068a, 0x20e70f32, 0xfcdc1342, 0x3fec43c6, + 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, 0xf383a3e2, 0x3ec52f9f, 0x1294062e, 0x3d3e82ad, + 0x3367c08f, 0x261feff9, 0xea70658b, 0x3c424209, 0x0c7c5c1e, 0x3ec52f9f, 0x317900d6, 0x2899e64a, + 0xe1d4a2c8, 0x387165e3, 0x0645e9af, 0x3fb11b47, 0x2f6bbe44, 0x2afad269, 0xd9e01007, 0x3367c08f, + 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xf9ba1651, 0x3fb11b47, + 0x2afad269, 0x2f6bbe44, 0xcc983f71, 0x261feff9, 0xf383a3e2, 0x3ec52f9f, 0x2899e64a, 0x317900d6, + 0xc78e9a1d, 0x1e2b5d38, 0xed6bf9d2, 0x3d3e82ad, 0x261feff9, 0x3367c08f, 0xc3bdbdf7, 0x158f9a75, + 0xe7821d5a, 0x3b20d79e, 0x238e7673, 0x3536cc52, 0xc13ad061, 0x0c7c5c1e, 0xe1d4a2c8, 0x387165e3, + 0x20e70f32, 0x36e5068a, 0xc013bc3a, 0x0323ecbe, 0xdc71898d, 0x3536cc52, 0x1e2b5d38, 0x387165e3, + 0xc04ee4b9, 0xf9ba1651, 0xd76619b6, 0x317900d6, 0x1b5d1009, 0x39daf5e8, 0xc1eb0209, 0xf0730343, + 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, 0xce86ff2a, 0x2899e64a, + 0x158f9a75, 0x3c424209, 0xc91af976, 0xdf18f0ce, 0xcac933ae, 0x238e7673, 0x1294062e, 0x3d3e82ad, + 0xce86ff2a, 0xd76619b6, 0xc78e9a1d, 0x1e2b5d38, 0x0f8cfcbd, 0x3e14fdf7, 0xd5052d97, 0xd09441bc, + 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, 0xdc71898d, 0xcac933ae, 0xc2c17d53, 0x1294062e, + 0x09640837, 0x3f4eaafe, 0xe4a2eff7, 0xc6250a18, 0xc13ad061, 0x0c7c5c1e, 0x0645e9af, 0x3fb11b47, + 0xed6bf9d2, 0xc2c17d53, 0xc04ee4b9, 0x0645e9af, 0x0323ecbe, 0x3fec43c6, 0xf69bf7c9, 0xc0b15502, + + 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3ffb10c1, 0x0192155f, + 0x3ffec42d, 0x00c90e8f, 0x3ff4e5df, 0x025b0cae, 0x3fec43c6, 0x0323ecbe, 0x3ffb10c1, 0x0192155f, + 0x3fd39b5a, 0x04b54824, 0x3fd39b5a, 0x04b54824, 0x3ff4e5df, 0x025b0cae, 0x3f9c2bfa, 0x070de171, + 0x3fb11b47, 0x0645e9af, 0x3fec43c6, 0x0323ecbe, 0x3f4eaafe, 0x09640837, 0x3f84c8e1, 0x07d59395, + 0x3fe12acb, 0x03ecadcf, 0x3eeb3347, 0x0bb6ecef, 0x3f4eaafe, 0x09640837, 0x3fd39b5a, 0x04b54824, + 0x3e71e758, 0x0e05c135, 0x3f0ec9f4, 0x0af10a22, 0x3fc395f9, 0x057db402, 0x3de2f147, 0x104fb80e, + 0x3ec52f9f, 0x0c7c5c1e, 0x3fb11b47, 0x0645e9af, 0x3d3e82ad, 0x1294062e, 0x3e71e758, 0x0e05c135, + 0x3f9c2bfa, 0x070de171, 0x3c84d496, 0x14d1e242, 0x3e14fdf7, 0x0f8cfcbd, 0x3f84c8e1, 0x07d59395, + 0x3bb6276d, 0x17088530, 0x3dae81ce, 0x1111d262, 0x3f6af2e3, 0x089cf867, 0x3ad2c2e7, 0x19372a63, + 0x3d3e82ad, 0x1294062e, 0x3f4eaafe, 0x09640837, 0x39daf5e8, 0x1b5d1009, 0x3cc511d8, 0x14135c94, + 0x3f2ff249, 0x0a2abb58, 0x38cf1669, 0x1d79775b, 0x3c424209, 0x158f9a75, 0x3f0ec9f4, 0x0af10a22, + 0x37af8158, 0x1f8ba4db, 0x3bb6276d, 0x17088530, 0x3eeb3347, 0x0bb6ecef, 0x367c9a7d, 0x2192e09a, + 0x3b20d79e, 0x187de2a6, 0x3ec52f9f, 0x0c7c5c1e, 0x3536cc52, 0x238e7673, 0x3a8269a2, 0x19ef7943, + 0x3e9cc076, 0x0d415012, 0x33de87de, 0x257db64b, 0x39daf5e8, 0x1b5d1009, 0x3e71e758, 0x0e05c135, + 0x32744493, 0x275ff452, 0x392a9642, 0x1cc66e99, 0x3e44a5ee, 0x0ec9a7f2, 0x30f8801f, 0x29348937, + 0x387165e3, 0x1e2b5d38, 0x3e14fdf7, 0x0f8cfcbd, 0x2f6bbe44, 0x2afad269, 0x37af8158, 0x1f8ba4db, + 0x3de2f147, 0x104fb80e, 0x2dce88a9, 0x2cb2324b, 0x36e5068a, 0x20e70f32, 0x3dae81ce, 0x1111d262, + 0x2c216eaa, 0x2e5a106f, 0x361214b0, 0x223d66a8, 0x3d77b191, 0x11d3443f, 0x2a650525, 0x2ff1d9c6, + 0x3536cc52, 0x238e7673, 0x3d3e82ad, 0x1294062e, 0x2899e64a, 0x317900d6, 0x34534f40, 0x24da0a99, + 0x3d02f756, 0x135410c2, 0x26c0b162, 0x32eefde9, 0x3367c08f, 0x261feff9, 0x3cc511d8, 0x14135c94, + 0x24da0a99, 0x34534f40, 0x32744493, 0x275ff452, 0x3c84d496, 0x14d1e242, 0x22e69ac7, 0x35a5793c, + 0x317900d6, 0x2899e64a, 0x3c424209, 0x158f9a75, 0x20e70f32, 0x36e5068a, 0x30761c17, 0x29cd9577, + 0x3bfd5cc4, 0x164c7ddd, 0x1edc1952, 0x3811884c, 0x2f6bbe44, 0x2afad269, 0x3bb6276d, 0x17088530, + 0x1cc66e99, 0x392a9642, 0x2e5a106f, 0x2c216eaa, 0x3b6ca4c4, 0x17c3a931, 0x1aa6c82b, 0x3a2fcee8, + 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x2c216eaa, 0x2e5a106f, + 0x3ad2c2e7, 0x19372a63, 0x164c7ddd, 0x3bfd5cc4, 0x2afad269, 0x2f6bbe44, 0x3a8269a2, 0x19ef7943, + 0x14135c94, 0x3cc511d8, 0x29cd9577, 0x30761c17, 0x3a2fcee8, 0x1aa6c82b, 0x11d3443f, 0x3d77b191, + 0x2899e64a, 0x317900d6, 0x39daf5e8, 0x1b5d1009, 0x0f8cfcbd, 0x3e14fdf7, 0x275ff452, 0x32744493, + 0x3983e1e7, 0x1c1249d8, 0x0d415012, 0x3e9cc076, 0x261feff9, 0x3367c08f, 0x392a9642, 0x1cc66e99, + 0x0af10a22, 0x3f0ec9f4, 0x24da0a99, 0x34534f40, 0x38cf1669, 0x1d79775b, 0x089cf867, 0x3f6af2e3, + 0x238e7673, 0x3536cc52, 0x387165e3, 0x1e2b5d38, 0x0645e9af, 0x3fb11b47, 0x223d66a8, 0x361214b0, + 0x3811884c, 0x1edc1952, 0x03ecadcf, 0x3fe12acb, 0x20e70f32, 0x36e5068a, 0x37af8158, 0x1f8ba4db, + 0x0192155f, 0x3ffb10c1, 0x1f8ba4db, 0x37af8158, 0x374b54ce, 0x2039f90e, 0xff36f171, 0x3ffec42d, + 0x1e2b5d38, 0x387165e3, 0x36e5068a, 0x20e70f32, 0xfcdc1342, 0x3fec43c6, 0x1cc66e99, 0x392a9642, + 0x367c9a7d, 0x2192e09a, 0xfa824bfe, 0x3fc395f9, 0x1b5d1009, 0x39daf5e8, 0x361214b0, 0x223d66a8, + 0xf82a6c6b, 0x3f84c8e1, 0x19ef7943, 0x3a8269a2, 0x35a5793c, 0x22e69ac7, 0xf5d544a8, 0x3f2ff249, + 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, 0xf383a3e2, 0x3ec52f9f, 0x17088530, 0x3bb6276d, + 0x34c61236, 0x2434f332, 0xf136580e, 0x3e44a5ee, 0x158f9a75, 0x3c424209, 0x34534f40, 0x24da0a99, + 0xeeee2d9e, 0x3dae81ce, 0x14135c94, 0x3cc511d8, 0x33de87de, 0x257db64b, 0xecabef3e, 0x3d02f756, + 0x1294062e, 0x3d3e82ad, 0x3367c08f, 0x261feff9, 0xea70658b, 0x3c424209, 0x1111d262, 0x3dae81ce, + 0x32eefde9, 0x26c0b162, 0xe83c56cf, 0x3b6ca4c4, 0x0f8cfcbd, 0x3e14fdf7, 0x32744493, 0x275ff452, + 0xe61086bd, 0x3a8269a2, 0x0e05c135, 0x3e71e758, 0x31f79947, 0x27fdb2a6, 0xe3edb628, 0x3983e1e7, + 0x0c7c5c1e, 0x3ec52f9f, 0x317900d6, 0x2899e64a, 0xe1d4a2c8, 0x387165e3, 0x0af10a22, 0x3f0ec9f4, + 0x30f8801f, 0x29348937, 0xdfc606f2, 0x374b54ce, 0x09640837, 0x3f4eaafe, 0x30761c17, 0x29cd9577, + 0xddc29958, 0x361214b0, 0x07d59395, 0x3f84c8e1, 0x2ff1d9c6, 0x2a650525, 0xdbcb0cce, 0x34c61236, + 0x0645e9af, 0x3fb11b47, 0x2f6bbe44, 0x2afad269, 0xd9e01007, 0x3367c08f, 0x04b54824, 0x3fd39b5a, + 0x2ee3cebe, 0x2b8ef77c, 0xd8024d5a, 0x31f79947, 0x0323ecbe, 0x3fec43c6, 0x2e5a106f, 0x2c216eaa, + 0xd6326a89, 0x30761c17, 0x0192155f, 0x3ffb10c1, 0x2dce88a9, 0x2cb2324b, 0xd4710884, 0x2ee3cebe, + 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xfe6deaa1, 0x3ffb10c1, + 0x2cb2324b, 0x2dce88a9, 0xd11c3142, 0x2b8ef77c, 0xfcdc1342, 0x3fec43c6, 0x2c216eaa, 0x2e5a106f, + 0xcf89e3e9, 0x29cd9577, 0xfb4ab7dc, 0x3fd39b5a, 0x2b8ef77c, 0x2ee3cebe, 0xce0866b9, 0x27fdb2a6, + 0xf9ba1651, 0x3fb11b47, 0x2afad269, 0x2f6bbe44, 0xcc983f71, 0x261feff9, 0xf82a6c6b, 0x3f84c8e1, + 0x2a650525, 0x2ff1d9c6, 0xcb39edca, 0x2434f332, 0xf69bf7c9, 0x3f4eaafe, 0x29cd9577, 0x30761c17, + 0xc9edeb50, 0x223d66a8, 0xf50ef5de, 0x3f0ec9f4, 0x29348937, 0x30f8801f, 0xc8b4ab32, 0x2039f90e, + 0xf383a3e2, 0x3ec52f9f, 0x2899e64a, 0x317900d6, 0xc78e9a1d, 0x1e2b5d38, 0xf1fa3ecb, 0x3e71e758, + 0x27fdb2a6, 0x31f79947, 0xc67c1e19, 0x1c1249d8, 0xf0730343, 0x3e14fdf7, 0x275ff452, 0x32744493, + 0xc57d965e, 0x19ef7943, 0xeeee2d9e, 0x3dae81ce, 0x26c0b162, 0x32eefde9, 0xc4935b3c, 0x17c3a931, + 0xed6bf9d2, 0x3d3e82ad, 0x261feff9, 0x3367c08f, 0xc3bdbdf7, 0x158f9a75, 0xebeca36c, 0x3cc511d8, + 0x257db64b, 0x33de87de, 0xc2fd08aa, 0x135410c2, 0xea70658b, 0x3c424209, 0x24da0a99, 0x34534f40, + 0xc2517e32, 0x1111d262, 0xe8f77ad0, 0x3bb6276d, 0x2434f332, 0x34c61236, 0xc1bb5a12, 0x0ec9a7f2, + 0xe7821d5a, 0x3b20d79e, 0x238e7673, 0x3536cc52, 0xc13ad061, 0x0c7c5c1e, 0xe61086bd, 0x3a8269a2, + 0x22e69ac7, 0x35a5793c, 0xc0d00db7, 0x0a2abb58, 0xe4a2eff7, 0x39daf5e8, 0x223d66a8, 0x361214b0, + 0xc07b371f, 0x07d59395, 0xe3399167, 0x392a9642, 0x2192e09a, 0x367c9a7d, 0xc03c6a07, 0x057db402, + 0xe1d4a2c8, 0x387165e3, 0x20e70f32, 0x36e5068a, 0xc013bc3a, 0x0323ecbe, 0xe0745b25, 0x37af8158, + 0x2039f90e, 0x374b54ce, 0xc0013bd3, 0x00c90e8f, 0xdf18f0ce, 0x36e5068a, 0x1f8ba4db, 0x37af8158, + 0xc004ef3f, 0xfe6deaa1, 0xddc29958, 0x361214b0, 0x1edc1952, 0x3811884c, 0xc01ed535, 0xfc135231, + 0xdc71898d, 0x3536cc52, 0x1e2b5d38, 0x387165e3, 0xc04ee4b9, 0xf9ba1651, 0xdb25f567, 0x34534f40, + 0x1d79775b, 0x38cf1669, 0xc0950d1d, 0xf7630799, 0xd9e01007, 0x3367c08f, 0x1cc66e99, 0x392a9642, + 0xc0f1360c, 0xf50ef5de, 0xd8a00bae, 0x32744493, 0x1c1249d8, 0x3983e1e7, 0xc1633f8a, 0xf2beafee, + 0xd76619b6, 0x317900d6, 0x1b5d1009, 0x39daf5e8, 0xc1eb0209, 0xf0730343, 0xd6326a89, 0x30761c17, + 0x1aa6c82b, 0x3a2fcee8, 0xc2884e6f, 0xee2cbbc1, 0xd5052d97, 0x2f6bbe44, 0x19ef7943, 0x3a8269a2, + 0xc33aee28, 0xebeca36c, 0xd3de9156, 0x2e5a106f, 0x19372a63, 0x3ad2c2e7, 0xc402a33c, 0xe9b38223, + 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, 0xd1a5ef91, 0x2c216eaa, + 0x17c3a931, 0x3b6ca4c4, 0xc5d03118, 0xe55937d5, 0xd09441bc, 0x2afad269, 0x17088530, 0x3bb6276d, + 0xc6d569be, 0xe3399167, 0xcf89e3e9, 0x29cd9577, 0x164c7ddd, 0x3bfd5cc4, 0xc7ee77b4, 0xe123e6ae, + 0xce86ff2a, 0x2899e64a, 0x158f9a75, 0x3c424209, 0xc91af976, 0xdf18f0ce, 0xcd8bbb6d, 0x275ff452, + 0x14d1e242, 0x3c84d496, 0xca5a86c4, 0xdd196539, 0xcc983f71, 0x261feff9, 0x14135c94, 0x3cc511d8, + 0xcbacb0c0, 0xdb25f567, 0xcbacb0c0, 0x24da0a99, 0x135410c2, 0x3d02f756, 0xcd110217, 0xd93f4e9e, + 0xcac933ae, 0x238e7673, 0x1294062e, 0x3d3e82ad, 0xce86ff2a, 0xd76619b6, 0xc9edeb50, 0x223d66a8, + 0x11d3443f, 0x3d77b191, 0xd00e263a, 0xd59afadb, 0xc91af976, 0x20e70f32, 0x1111d262, 0x3dae81ce, + 0xd1a5ef91, 0xd3de9156, 0xc8507ea8, 0x1f8ba4db, 0x104fb80e, 0x3de2f147, 0xd34dcdb5, 0xd2317757, + 0xc78e9a1d, 0x1e2b5d38, 0x0f8cfcbd, 0x3e14fdf7, 0xd5052d97, 0xd09441bc, 0xc6d569be, 0x1cc66e99, + 0x0ec9a7f2, 0x3e44a5ee, 0xd6cb76c9, 0xcf077fe1, 0xc6250a18, 0x1b5d1009, 0x0e05c135, 0x3e71e758, + 0xd8a00bae, 0xcd8bbb6d, 0xc57d965e, 0x19ef7943, 0x0d415012, 0x3e9cc076, 0xda8249b5, 0xcc217822, + 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, 0xdc71898d, 0xcac933ae, 0xc449d893, 0x17088530, + 0x0bb6ecef, 0x3eeb3347, 0xde6d1f66, 0xc9836583, 0xc3bdbdf7, 0x158f9a75, 0x0af10a22, 0x3f0ec9f4, + 0xe0745b25, 0xc8507ea8, 0xc33aee28, 0x14135c94, 0x0a2abb58, 0x3f2ff249, 0xe28688a5, 0xc730e997, + 0xc2c17d53, 0x1294062e, 0x09640837, 0x3f4eaafe, 0xe4a2eff7, 0xc6250a18, 0xc2517e32, 0x1111d262, + 0x089cf867, 0x3f6af2e3, 0xe6c8d59d, 0xc52d3d19, 0xc1eb0209, 0x0f8cfcbd, 0x07d59395, 0x3f84c8e1, + 0xe8f77ad0, 0xc449d893, 0xc18e18a8, 0x0e05c135, 0x070de171, 0x3f9c2bfa, 0xeb2e1dbe, 0xc37b2b6a, + 0xc13ad061, 0x0c7c5c1e, 0x0645e9af, 0x3fb11b47, 0xed6bf9d2, 0xc2c17d53, 0xc0f1360c, 0x0af10a22, + 0x057db402, 0x3fc395f9, 0xefb047f2, 0xc21d0eb9, 0xc0b15502, 0x09640837, 0x04b54824, 0x3fd39b5a, + 0xf1fa3ecb, 0xc18e18a8, 0xc07b371f, 0x07d59395, 0x03ecadcf, 0x3fe12acb, 0xf4491311, 0xc114ccb9, + 0xc04ee4b9, 0x0645e9af, 0x0323ecbe, 0x3fec43c6, 0xf69bf7c9, 0xc0b15502, 0xc02c64a6, 0x04b54824, + 0x025b0cae, 0x3ff4e5df, 0xf8f21e8f, 0xc063d406, 0xc013bc3a, 0x0323ecbe, 0x0192155f, 0x3ffb10c1, 0xfb4ab7dc, 0xc02c64a6, 0xc004ef3f, 0x0192155f, 0x00c90e8f, 0x3ffec42d, 0xfda4f352, 0xc00b1a21 }; const int twidTab64[4*6 + 16*6] = { - 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x2d413ccc, 0x2d413ccc, - 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, - 0xd2bec334, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, - - 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3ec52f9f, 0x0c7c5c1e, - 0x3fb11b47, 0x0645e9af, 0x3d3e82ad, 0x1294062e, 0x3b20d79e, 0x187de2a6, 0x3ec52f9f, 0x0c7c5c1e, - 0x3536cc52, 0x238e7673, 0x3536cc52, 0x238e7673, 0x3d3e82ad, 0x1294062e, 0x2899e64a, 0x317900d6, - 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x238e7673, 0x3536cc52, - 0x387165e3, 0x1e2b5d38, 0x0645e9af, 0x3fb11b47, 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, - 0xf383a3e2, 0x3ec52f9f, 0x0c7c5c1e, 0x3ec52f9f, 0x317900d6, 0x2899e64a, 0xe1d4a2c8, 0x387165e3, - 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xf383a3e2, 0x3ec52f9f, - 0x2899e64a, 0x317900d6, 0xc78e9a1d, 0x1e2b5d38, 0xe7821d5a, 0x3b20d79e, 0x238e7673, 0x3536cc52, - 0xc13ad061, 0x0c7c5c1e, 0xdc71898d, 0x3536cc52, 0x1e2b5d38, 0x387165e3, 0xc04ee4b9, 0xf9ba1651, - 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, 0xcac933ae, 0x238e7673, - 0x1294062e, 0x3d3e82ad, 0xce86ff2a, 0xd76619b6, 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, - 0xdc71898d, 0xcac933ae, 0xc13ad061, 0x0c7c5c1e, 0x0645e9af, 0x3fb11b47, 0xed6bf9d2, 0xc2c17d53 + 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x2d413ccc, 0x2d413ccc, + 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, + 0xd2bec334, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, + + 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, 0x3ec52f9f, 0x0c7c5c1e, + 0x3fb11b47, 0x0645e9af, 0x3d3e82ad, 0x1294062e, 0x3b20d79e, 0x187de2a6, 0x3ec52f9f, 0x0c7c5c1e, + 0x3536cc52, 0x238e7673, 0x3536cc52, 0x238e7673, 0x3d3e82ad, 0x1294062e, 0x2899e64a, 0x317900d6, + 0x2d413ccc, 0x2d413ccc, 0x3b20d79e, 0x187de2a6, 0x187de2a6, 0x3b20d79e, 0x238e7673, 0x3536cc52, + 0x387165e3, 0x1e2b5d38, 0x0645e9af, 0x3fb11b47, 0x187de2a6, 0x3b20d79e, 0x3536cc52, 0x238e7673, + 0xf383a3e2, 0x3ec52f9f, 0x0c7c5c1e, 0x3ec52f9f, 0x317900d6, 0x2899e64a, 0xe1d4a2c8, 0x387165e3, + 0x00000000, 0x40000000, 0x2d413ccc, 0x2d413ccc, 0xd2bec334, 0x2d413ccc, 0xf383a3e2, 0x3ec52f9f, + 0x2899e64a, 0x317900d6, 0xc78e9a1d, 0x1e2b5d38, 0xe7821d5a, 0x3b20d79e, 0x238e7673, 0x3536cc52, + 0xc13ad061, 0x0c7c5c1e, 0xdc71898d, 0x3536cc52, 0x1e2b5d38, 0x387165e3, 0xc04ee4b9, 0xf9ba1651, + 0xd2bec334, 0x2d413ccc, 0x187de2a6, 0x3b20d79e, 0xc4df2862, 0xe7821d5a, 0xcac933ae, 0x238e7673, + 0x1294062e, 0x3d3e82ad, 0xce86ff2a, 0xd76619b6, 0xc4df2862, 0x187de2a6, 0x0c7c5c1e, 0x3ec52f9f, + 0xdc71898d, 0xcac933ae, 0xc13ad061, 0x0c7c5c1e, 0x0645e9af, 0x3fb11b47, 0xed6bf9d2, 0xc2c17d53 }; #endif //ARMV5E -const int ShortWindowSine[FRAME_LEN_SHORT/2] ={ - 0x00c97fff, 0x025b7ffa, 0x03ed7ff1, 0x057f7fe2, 0x07117fce, 0x08a27fb5, 0x0a337f98, 0x0bc47f75, - 0x0d547f4e, 0x0ee47f22, 0x10737ef0, 0x12017eba, 0x138f7e7f, 0x151c7e3f, 0x16a87dfb, 0x18337db1, - 0x19be7d63, 0x1b477d0f, 0x1cd07cb7, 0x1e577c5a, 0x1fdd7bf9, 0x21627b92, 0x22e57b27, 0x24677ab7, - 0x25e87a42, 0x276879c9, 0x28e5794a, 0x2a6278c8, 0x2bdc7840, 0x2d5577b4, 0x2ecc7723, 0x3042768e, - 0x31b575f4, 0x33277556, 0x349774b3, 0x3604740b, 0x3770735f, 0x38d972af, 0x3a4071fa, 0x3ba57141, - 0x3d087083, 0x3e686fc2, 0x3fc66efb, 0x41216e31, 0x427a6d62, 0x43d16c8f, 0x45246bb8, 0x46756add, - 0x47c469fd, 0x490f691a, 0x4a586832, 0x4b9e6747, 0x4ce16657, 0x4e216564, 0x4f5e646c, 0x50986371, +const int ShortWindowSine[FRAME_LEN_SHORT/2] ={ + 0x00c97fff, 0x025b7ffa, 0x03ed7ff1, 0x057f7fe2, 0x07117fce, 0x08a27fb5, 0x0a337f98, 0x0bc47f75, + 0x0d547f4e, 0x0ee47f22, 0x10737ef0, 0x12017eba, 0x138f7e7f, 0x151c7e3f, 0x16a87dfb, 0x18337db1, + 0x19be7d63, 0x1b477d0f, 0x1cd07cb7, 0x1e577c5a, 0x1fdd7bf9, 0x21627b92, 0x22e57b27, 0x24677ab7, + 0x25e87a42, 0x276879c9, 0x28e5794a, 0x2a6278c8, 0x2bdc7840, 0x2d5577b4, 0x2ecc7723, 0x3042768e, + 0x31b575f4, 0x33277556, 0x349774b3, 0x3604740b, 0x3770735f, 0x38d972af, 0x3a4071fa, 0x3ba57141, + 0x3d087083, 0x3e686fc2, 0x3fc66efb, 0x41216e31, 0x427a6d62, 0x43d16c8f, 0x45246bb8, 0x46756add, + 0x47c469fd, 0x490f691a, 0x4a586832, 0x4b9e6747, 0x4ce16657, 0x4e216564, 0x4f5e646c, 0x50986371, 0x51cf6272, 0x5303616f, 0x54336068, 0x55605f5e, 0x568a5e50, 0x57b15d3e, 0x58d45c29, 0x59f45b10 }; -const int LongWindowKBD[FRAME_LEN_LONG/2]={ - 0x000a7fff, 0x000e7fff, 0x00127fff, 0x00157fff, 0x00197fff, 0x001c7fff, 0x00207fff, 0x00237fff, - 0x00267fff, 0x002a7fff, 0x002d7fff, 0x00307fff, 0x00347fff, 0x00387fff, 0x003b7fff, 0x003f7fff, - 0x00437fff, 0x00477fff, 0x004b7fff, 0x004f7fff, 0x00537fff, 0x00577fff, 0x005b7fff, 0x00607fff, - 0x00647fff, 0x00697fff, 0x006d7fff, 0x00727fff, 0x00777fff, 0x007c7fff, 0x00817fff, 0x00867fff, - 0x008b7fff, 0x00917fff, 0x00967fff, 0x009c7fff, 0x00a17fff, 0x00a77fff, 0x00ad7fff, 0x00b37fff, - 0x00b97fff, 0x00bf7fff, 0x00c67fff, 0x00cc7fff, 0x00d37fff, 0x00da7fff, 0x00e07fff, 0x00e77fff, - 0x00ee7fff, 0x00f57fff, 0x00fd7fff, 0x01047fff, 0x010c7fff, 0x01137fff, 0x011b7fff, 0x01237fff, - 0x012b7fff, 0x01337fff, 0x013c7ffe, 0x01447ffe, 0x014d7ffe, 0x01567ffe, 0x015f7ffe, 0x01687ffe, - 0x01717ffe, 0x017a7ffe, 0x01837ffe, 0x018d7ffe, 0x01977ffd, 0x01a17ffd, 0x01ab7ffd, 0x01b57ffd, - 0x01bf7ffd, 0x01ca7ffd, 0x01d47ffd, 0x01df7ffc, 0x01ea7ffc, 0x01f57ffc, 0x02007ffc, 0x020c7ffc, - 0x02177ffc, 0x02237ffb, 0x022f7ffb, 0x023b7ffb, 0x02477ffb, 0x02537ffb, 0x02607ffa, 0x026d7ffa, - 0x027a7ffa, 0x02877ffa, 0x02947ff9, 0x02a17ff9, 0x02af7ff9, 0x02bc7ff9, 0x02ca7ff8, 0x02d87ff8, - 0x02e77ff8, 0x02f57ff7, 0x03047ff7, 0x03127ff7, 0x03217ff6, 0x03317ff6, 0x03407ff5, 0x034f7ff5, - 0x035f7ff5, 0x036f7ff4, 0x037f7ff4, 0x038f7ff3, 0x03a07ff3, 0x03b07ff2, 0x03c17ff2, 0x03d27ff1, - 0x03e37ff1, 0x03f57ff0, 0x04067ff0, 0x04187fef, 0x042a7fef, 0x043c7fee, 0x044f7fed, 0x04617fed, - 0x04747fec, 0x04877feb, 0x049a7feb, 0x04ae7fea, 0x04c17fe9, 0x04d57fe9, 0x04e97fe8, 0x04fd7fe7, - 0x05127fe6, 0x05277fe5, 0x053b7fe5, 0x05507fe4, 0x05667fe3, 0x057b7fe2, 0x05917fe1, 0x05a77fe0, - 0x05bd7fdf, 0x05d37fde, 0x05ea7fdd, 0x06017fdc, 0x06187fdb, 0x062f7fda, 0x06467fd9, 0x065e7fd7, - 0x06767fd6, 0x068e7fd5, 0x06a67fd4, 0x06bf7fd2, 0x06d87fd1, 0x06f17fd0, 0x070a7fce, 0x07237fcd, - 0x073d7fcc, 0x07577fca, 0x07717fc9, 0x078c7fc7, 0x07a67fc5, 0x07c17fc4, 0x07dc7fc2, 0x07f77fc0, - 0x08137fbf, 0x082f7fbd, 0x084b7fbb, 0x08677fb9, 0x08847fb7, 0x08a07fb6, 0x08bd7fb4, 0x08da7fb2, - 0x08f87faf, 0x09167fad, 0x09347fab, 0x09527fa9, 0x09707fa7, 0x098f7fa5, 0x09ae7fa2, 0x09cd7fa0, - 0x09ec7f9d, 0x0a0c7f9b, 0x0a2c7f98, 0x0a4c7f96, 0x0a6c7f93, 0x0a8d7f91, 0x0aae7f8e, 0x0acf7f8b, - 0x0af07f88, 0x0b127f85, 0x0b337f82, 0x0b557f7f, 0x0b787f7c, 0x0b9a7f79, 0x0bbd7f76, 0x0be07f73, - 0x0c047f6f, 0x0c277f6c, 0x0c4b7f69, 0x0c6f7f65, 0x0c937f61, 0x0cb87f5e, 0x0cdd7f5a, 0x0d027f56, - 0x0d277f53, 0x0d4d7f4f, 0x0d737f4b, 0x0d997f47, 0x0dbf7f43, 0x0de67f3e, 0x0e0c7f3a, 0x0e347f36, - 0x0e5b7f31, 0x0e837f2d, 0x0eaa7f28, 0x0ed37f24, 0x0efb7f1f, 0x0f237f1a, 0x0f4c7f15, 0x0f757f10, - 0x0f9f7f0b, 0x0fc87f06, 0x0ff27f01, 0x101c7efb, 0x10477ef6, 0x10717ef0, 0x109c7eeb, 0x10c87ee5, - 0x10f37edf, 0x111f7eda, 0x114a7ed4, 0x11777ece, 0x11a37ec7, 0x11d07ec1, 0x11fd7ebb, 0x122a7eb4, - 0x12577eae, 0x12857ea7, 0x12b37ea0, 0x12e17e9a, 0x130f7e93, 0x133e7e8c, 0x136d7e84, 0x139c7e7d, - 0x13cc7e76, 0x13fb7e6e, 0x142b7e67, 0x145b7e5f, 0x148c7e57, 0x14bc7e4f, 0x14ed7e47, 0x151e7e3f, - 0x15507e37, 0x15817e2e, 0x15b37e26, 0x15e57e1d, 0x16187e14, 0x164a7e0b, 0x167d7e02, 0x16b07df9, - 0x16e47df0, 0x17177de6, 0x174b7ddd, 0x177f7dd3, 0x17b37dc9, 0x17e87dbf, 0x181d7db5, 0x18527dab, - 0x18877da1, 0x18bc7d96, 0x18f27d8c, 0x19287d81, 0x195e7d76, 0x19957d6b, 0x19cb7d60, 0x1a027d54, - 0x1a397d49, 0x1a717d3d, 0x1aa87d31, 0x1ae07d26, 0x1b187d19, 0x1b507d0d, 0x1b897d01, 0x1bc27cf4, - 0x1bfb7ce8, 0x1c347cdb, 0x1c6d7cce, 0x1ca77cc1, 0x1ce17cb3, 0x1d1b7ca6, 0x1d557c98, 0x1d8f7c8a, - 0x1dca7c7c, 0x1e057c6e, 0x1e407c60, 0x1e7b7c51, 0x1eb77c43, 0x1ef37c34, 0x1f2f7c25, 0x1f6b7c16, - 0x1fa77c06, 0x1fe47bf7, 0x20217be7, 0x205e7bd7, 0x209b7bc7, 0x20d87bb7, 0x21167ba6, 0x21547b96, - 0x21927b85, 0x21d07b74, 0x220e7b63, 0x224d7b52, 0x228c7b40, 0x22cb7b2e, 0x230a7b1c, 0x23497b0a, - 0x23897af8, 0x23c87ae6, 0x24087ad3, 0x24487ac0, 0x24897aad, 0x24c97a9a, 0x250a7a86, 0x254b7a73, - 0x258c7a5f, 0x25cd7a4b, 0x260e7a36, 0x26507a22, 0x26917a0d, 0x26d379f8, 0x271579e3, 0x275779ce, - 0x279a79b8, 0x27dc79a3, 0x281f798d, 0x28627977, 0x28a57960, 0x28e8794a, 0x292b7933, 0x296f791c, - 0x29b27905, 0x29f678ed, 0x2a3a78d6, 0x2a7e78be, 0x2ac278a6, 0x2b07788d, 0x2b4b7875, 0x2b90785c, - 0x2bd47843, 0x2c19782a, 0x2c5e7810, 0x2ca477f7, 0x2ce977dd, 0x2d2e77c3, 0x2d7477a8, 0x2dba778e, - 0x2dff7773, 0x2e457758, 0x2e8b773d, 0x2ed27721, 0x2f187706, 0x2f5e76ea, 0x2fa576cd, 0x2fec76b1, - 0x30327694, 0x30797677, 0x30c0765a, 0x3107763d, 0x314e761f, 0x31967601, 0x31dd75e3, 0x322575c5, - 0x326c75a6, 0x32b47588, 0x32fc7569, 0x33447549, 0x338c752a, 0x33d4750a, 0x341c74ea, 0x346474ca, - 0x34ac74a9, 0x34f57488, 0x353d7467, 0x35857446, 0x35ce7424, 0x36177403, 0x365f73e1, 0x36a873be, - 0x36f1739c, 0x373a7379, 0x37837356, 0x37cc7333, 0x3815730f, 0x385e72ec, 0x38a772c8, 0x38f172a3, - 0x393a727f, 0x3983725a, 0x39cd7235, 0x3a167210, 0x3a6071ea, 0x3aa971c4, 0x3af3719e, 0x3b3c7178, - 0x3b867151, 0x3bd0712b, 0x3c197104, 0x3c6370dc, 0x3cad70b5, 0x3cf7708d, 0x3d407065, 0x3d8a703c, - 0x3dd47014, 0x3e1e6feb, 0x3e686fc2, 0x3eb16f98, 0x3efb6f6f, 0x3f456f45, 0x3f8f6f1b, 0x3fd96ef0, - 0x40236ec6, 0x406d6e9b, 0x40b66e70, 0x41006e44, 0x414a6e19, 0x41946ded, 0x41de6dc1, 0x42286d94, - 0x42716d68, 0x42bb6d3b, 0x43056d0d, 0x434f6ce0, 0x43986cb2, 0x43e26c84, 0x442c6c56, 0x44756c28, - 0x44bf6bf9, 0x45086bca, 0x45526b9b, 0x459b6b6b, 0x45e56b3c, 0x462e6b0c, 0x46786adb, 0x46c16aab, - 0x470a6a7a, 0x47536a49, 0x479c6a18, 0x47e569e7, 0x482e69b5, 0x48776983, 0x48c06951, 0x4909691e, - 0x495268ec, 0x499b68b9, 0x49e36885, 0x4a2c6852, 0x4a74681e, 0x4abd67ea, 0x4b0567b6, 0x4b4d6782, - 0x4b95674d, 0x4bde6718, 0x4c2666e3, 0x4c6d66ae, 0x4cb56678, 0x4cfd6642, 0x4d45660c, 0x4d8c65d6, - 0x4dd4659f, 0x4e1b6568, 0x4e626531, 0x4ea964fa, 0x4ef064c3, 0x4f37648b, 0x4f7e6453, 0x4fc5641b, - 0x500b63e2, 0x505263aa, 0x50986371, 0x50df6338, 0x512562fe, 0x516b62c5, 0x51b1628b, 0x51f66251, - 0x523c6217, 0x528161dc, 0x52c761a2, 0x530c6167, 0x5351612c, 0x539660f1, 0x53db60b5, 0x54206079, - 0x5464603d, 0x54a96001, 0x54ed5fc5, 0x55315f88, 0x55755f4b, 0x55b95f0e, 0x55fc5ed1, 0x56405e94, - 0x56835e56, 0x56c75e18, 0x570a5dda, 0x574d5d9c, 0x578f5d5e, 0x57d25d1f, 0x58145ce0, 0x58565ca1, +const int LongWindowKBD[FRAME_LEN_LONG/2]={ + 0x000a7fff, 0x000e7fff, 0x00127fff, 0x00157fff, 0x00197fff, 0x001c7fff, 0x00207fff, 0x00237fff, + 0x00267fff, 0x002a7fff, 0x002d7fff, 0x00307fff, 0x00347fff, 0x00387fff, 0x003b7fff, 0x003f7fff, + 0x00437fff, 0x00477fff, 0x004b7fff, 0x004f7fff, 0x00537fff, 0x00577fff, 0x005b7fff, 0x00607fff, + 0x00647fff, 0x00697fff, 0x006d7fff, 0x00727fff, 0x00777fff, 0x007c7fff, 0x00817fff, 0x00867fff, + 0x008b7fff, 0x00917fff, 0x00967fff, 0x009c7fff, 0x00a17fff, 0x00a77fff, 0x00ad7fff, 0x00b37fff, + 0x00b97fff, 0x00bf7fff, 0x00c67fff, 0x00cc7fff, 0x00d37fff, 0x00da7fff, 0x00e07fff, 0x00e77fff, + 0x00ee7fff, 0x00f57fff, 0x00fd7fff, 0x01047fff, 0x010c7fff, 0x01137fff, 0x011b7fff, 0x01237fff, + 0x012b7fff, 0x01337fff, 0x013c7ffe, 0x01447ffe, 0x014d7ffe, 0x01567ffe, 0x015f7ffe, 0x01687ffe, + 0x01717ffe, 0x017a7ffe, 0x01837ffe, 0x018d7ffe, 0x01977ffd, 0x01a17ffd, 0x01ab7ffd, 0x01b57ffd, + 0x01bf7ffd, 0x01ca7ffd, 0x01d47ffd, 0x01df7ffc, 0x01ea7ffc, 0x01f57ffc, 0x02007ffc, 0x020c7ffc, + 0x02177ffc, 0x02237ffb, 0x022f7ffb, 0x023b7ffb, 0x02477ffb, 0x02537ffb, 0x02607ffa, 0x026d7ffa, + 0x027a7ffa, 0x02877ffa, 0x02947ff9, 0x02a17ff9, 0x02af7ff9, 0x02bc7ff9, 0x02ca7ff8, 0x02d87ff8, + 0x02e77ff8, 0x02f57ff7, 0x03047ff7, 0x03127ff7, 0x03217ff6, 0x03317ff6, 0x03407ff5, 0x034f7ff5, + 0x035f7ff5, 0x036f7ff4, 0x037f7ff4, 0x038f7ff3, 0x03a07ff3, 0x03b07ff2, 0x03c17ff2, 0x03d27ff1, + 0x03e37ff1, 0x03f57ff0, 0x04067ff0, 0x04187fef, 0x042a7fef, 0x043c7fee, 0x044f7fed, 0x04617fed, + 0x04747fec, 0x04877feb, 0x049a7feb, 0x04ae7fea, 0x04c17fe9, 0x04d57fe9, 0x04e97fe8, 0x04fd7fe7, + 0x05127fe6, 0x05277fe5, 0x053b7fe5, 0x05507fe4, 0x05667fe3, 0x057b7fe2, 0x05917fe1, 0x05a77fe0, + 0x05bd7fdf, 0x05d37fde, 0x05ea7fdd, 0x06017fdc, 0x06187fdb, 0x062f7fda, 0x06467fd9, 0x065e7fd7, + 0x06767fd6, 0x068e7fd5, 0x06a67fd4, 0x06bf7fd2, 0x06d87fd1, 0x06f17fd0, 0x070a7fce, 0x07237fcd, + 0x073d7fcc, 0x07577fca, 0x07717fc9, 0x078c7fc7, 0x07a67fc5, 0x07c17fc4, 0x07dc7fc2, 0x07f77fc0, + 0x08137fbf, 0x082f7fbd, 0x084b7fbb, 0x08677fb9, 0x08847fb7, 0x08a07fb6, 0x08bd7fb4, 0x08da7fb2, + 0x08f87faf, 0x09167fad, 0x09347fab, 0x09527fa9, 0x09707fa7, 0x098f7fa5, 0x09ae7fa2, 0x09cd7fa0, + 0x09ec7f9d, 0x0a0c7f9b, 0x0a2c7f98, 0x0a4c7f96, 0x0a6c7f93, 0x0a8d7f91, 0x0aae7f8e, 0x0acf7f8b, + 0x0af07f88, 0x0b127f85, 0x0b337f82, 0x0b557f7f, 0x0b787f7c, 0x0b9a7f79, 0x0bbd7f76, 0x0be07f73, + 0x0c047f6f, 0x0c277f6c, 0x0c4b7f69, 0x0c6f7f65, 0x0c937f61, 0x0cb87f5e, 0x0cdd7f5a, 0x0d027f56, + 0x0d277f53, 0x0d4d7f4f, 0x0d737f4b, 0x0d997f47, 0x0dbf7f43, 0x0de67f3e, 0x0e0c7f3a, 0x0e347f36, + 0x0e5b7f31, 0x0e837f2d, 0x0eaa7f28, 0x0ed37f24, 0x0efb7f1f, 0x0f237f1a, 0x0f4c7f15, 0x0f757f10, + 0x0f9f7f0b, 0x0fc87f06, 0x0ff27f01, 0x101c7efb, 0x10477ef6, 0x10717ef0, 0x109c7eeb, 0x10c87ee5, + 0x10f37edf, 0x111f7eda, 0x114a7ed4, 0x11777ece, 0x11a37ec7, 0x11d07ec1, 0x11fd7ebb, 0x122a7eb4, + 0x12577eae, 0x12857ea7, 0x12b37ea0, 0x12e17e9a, 0x130f7e93, 0x133e7e8c, 0x136d7e84, 0x139c7e7d, + 0x13cc7e76, 0x13fb7e6e, 0x142b7e67, 0x145b7e5f, 0x148c7e57, 0x14bc7e4f, 0x14ed7e47, 0x151e7e3f, + 0x15507e37, 0x15817e2e, 0x15b37e26, 0x15e57e1d, 0x16187e14, 0x164a7e0b, 0x167d7e02, 0x16b07df9, + 0x16e47df0, 0x17177de6, 0x174b7ddd, 0x177f7dd3, 0x17b37dc9, 0x17e87dbf, 0x181d7db5, 0x18527dab, + 0x18877da1, 0x18bc7d96, 0x18f27d8c, 0x19287d81, 0x195e7d76, 0x19957d6b, 0x19cb7d60, 0x1a027d54, + 0x1a397d49, 0x1a717d3d, 0x1aa87d31, 0x1ae07d26, 0x1b187d19, 0x1b507d0d, 0x1b897d01, 0x1bc27cf4, + 0x1bfb7ce8, 0x1c347cdb, 0x1c6d7cce, 0x1ca77cc1, 0x1ce17cb3, 0x1d1b7ca6, 0x1d557c98, 0x1d8f7c8a, + 0x1dca7c7c, 0x1e057c6e, 0x1e407c60, 0x1e7b7c51, 0x1eb77c43, 0x1ef37c34, 0x1f2f7c25, 0x1f6b7c16, + 0x1fa77c06, 0x1fe47bf7, 0x20217be7, 0x205e7bd7, 0x209b7bc7, 0x20d87bb7, 0x21167ba6, 0x21547b96, + 0x21927b85, 0x21d07b74, 0x220e7b63, 0x224d7b52, 0x228c7b40, 0x22cb7b2e, 0x230a7b1c, 0x23497b0a, + 0x23897af8, 0x23c87ae6, 0x24087ad3, 0x24487ac0, 0x24897aad, 0x24c97a9a, 0x250a7a86, 0x254b7a73, + 0x258c7a5f, 0x25cd7a4b, 0x260e7a36, 0x26507a22, 0x26917a0d, 0x26d379f8, 0x271579e3, 0x275779ce, + 0x279a79b8, 0x27dc79a3, 0x281f798d, 0x28627977, 0x28a57960, 0x28e8794a, 0x292b7933, 0x296f791c, + 0x29b27905, 0x29f678ed, 0x2a3a78d6, 0x2a7e78be, 0x2ac278a6, 0x2b07788d, 0x2b4b7875, 0x2b90785c, + 0x2bd47843, 0x2c19782a, 0x2c5e7810, 0x2ca477f7, 0x2ce977dd, 0x2d2e77c3, 0x2d7477a8, 0x2dba778e, + 0x2dff7773, 0x2e457758, 0x2e8b773d, 0x2ed27721, 0x2f187706, 0x2f5e76ea, 0x2fa576cd, 0x2fec76b1, + 0x30327694, 0x30797677, 0x30c0765a, 0x3107763d, 0x314e761f, 0x31967601, 0x31dd75e3, 0x322575c5, + 0x326c75a6, 0x32b47588, 0x32fc7569, 0x33447549, 0x338c752a, 0x33d4750a, 0x341c74ea, 0x346474ca, + 0x34ac74a9, 0x34f57488, 0x353d7467, 0x35857446, 0x35ce7424, 0x36177403, 0x365f73e1, 0x36a873be, + 0x36f1739c, 0x373a7379, 0x37837356, 0x37cc7333, 0x3815730f, 0x385e72ec, 0x38a772c8, 0x38f172a3, + 0x393a727f, 0x3983725a, 0x39cd7235, 0x3a167210, 0x3a6071ea, 0x3aa971c4, 0x3af3719e, 0x3b3c7178, + 0x3b867151, 0x3bd0712b, 0x3c197104, 0x3c6370dc, 0x3cad70b5, 0x3cf7708d, 0x3d407065, 0x3d8a703c, + 0x3dd47014, 0x3e1e6feb, 0x3e686fc2, 0x3eb16f98, 0x3efb6f6f, 0x3f456f45, 0x3f8f6f1b, 0x3fd96ef0, + 0x40236ec6, 0x406d6e9b, 0x40b66e70, 0x41006e44, 0x414a6e19, 0x41946ded, 0x41de6dc1, 0x42286d94, + 0x42716d68, 0x42bb6d3b, 0x43056d0d, 0x434f6ce0, 0x43986cb2, 0x43e26c84, 0x442c6c56, 0x44756c28, + 0x44bf6bf9, 0x45086bca, 0x45526b9b, 0x459b6b6b, 0x45e56b3c, 0x462e6b0c, 0x46786adb, 0x46c16aab, + 0x470a6a7a, 0x47536a49, 0x479c6a18, 0x47e569e7, 0x482e69b5, 0x48776983, 0x48c06951, 0x4909691e, + 0x495268ec, 0x499b68b9, 0x49e36885, 0x4a2c6852, 0x4a74681e, 0x4abd67ea, 0x4b0567b6, 0x4b4d6782, + 0x4b95674d, 0x4bde6718, 0x4c2666e3, 0x4c6d66ae, 0x4cb56678, 0x4cfd6642, 0x4d45660c, 0x4d8c65d6, + 0x4dd4659f, 0x4e1b6568, 0x4e626531, 0x4ea964fa, 0x4ef064c3, 0x4f37648b, 0x4f7e6453, 0x4fc5641b, + 0x500b63e2, 0x505263aa, 0x50986371, 0x50df6338, 0x512562fe, 0x516b62c5, 0x51b1628b, 0x51f66251, + 0x523c6217, 0x528161dc, 0x52c761a2, 0x530c6167, 0x5351612c, 0x539660f1, 0x53db60b5, 0x54206079, + 0x5464603d, 0x54a96001, 0x54ed5fc5, 0x55315f88, 0x55755f4b, 0x55b95f0e, 0x55fc5ed1, 0x56405e94, + 0x56835e56, 0x56c75e18, 0x570a5dda, 0x574d5d9c, 0x578f5d5e, 0x57d25d1f, 0x58145ce0, 0x58565ca1, 0x58995c62, 0x58da5c23, 0x591c5be3, 0x595e5ba4, 0x599f5b64, 0x59e05b24, 0x5a215ae3, 0x5a625aa3 }; @@ -1070,277 +1070,277 @@ const Word32 formfac_sqrttable[96] = { \brief these tables are used for the non linear quantizer and inverse quantizer - + */ const Word32 mTab_3_4[512] = { - 0x4c1bf829, 0x4c3880de, 0x4c550603, 0x4c71879c, - 0x4c8e05aa, 0x4caa8030, 0x4cc6f72f, 0x4ce36aab, - 0x4cffdaa4, 0x4d1c471d, 0x4d38b019, 0x4d55159a, - 0x4d7177a1, 0x4d8dd631, 0x4daa314b, 0x4dc688f3, - 0x4de2dd2a, 0x4dff2df2, 0x4e1b7b4d, 0x4e37c53d, - 0x4e540bc5, 0x4e704ee6, 0x4e8c8ea3, 0x4ea8cafd, - 0x4ec503f7, 0x4ee13992, 0x4efd6bd0, 0x4f199ab4, - 0x4f35c640, 0x4f51ee75, 0x4f6e1356, 0x4f8a34e4, - 0x4fa65321, 0x4fc26e10, 0x4fde85b2, 0x4ffa9a0a, - 0x5016ab18, 0x5032b8e0, 0x504ec362, 0x506acaa1, - 0x5086cea0, 0x50a2cf5e, 0x50becce0, 0x50dac725, - 0x50f6be31, 0x5112b205, 0x512ea2a3, 0x514a900d, - 0x51667a45, 0x5182614c, 0x519e4524, 0x51ba25cf, - 0x51d60350, 0x51f1dda7, 0x520db4d6, 0x522988e0, - 0x524559c6, 0x52612789, 0x527cf22d, 0x5298b9b1, - 0x52b47e19, 0x52d03f65, 0x52ebfd98, 0x5307b8b4, - 0x532370b9, 0x533f25aa, 0x535ad789, 0x53768656, - 0x53923215, 0x53addac6, 0x53c9806b, 0x53e52306, - 0x5400c298, 0x541c5f24, 0x5437f8ab, 0x54538f2e, - 0x546f22af, 0x548ab330, 0x54a640b3, 0x54c1cb38, - 0x54dd52c2, 0x54f8d753, 0x551458eb, 0x552fd78d, - 0x554b5339, 0x5566cbf3, 0x558241bb, 0x559db492, - 0x55b9247b, 0x55d49177, 0x55effb87, 0x560b62ad, - 0x5626c6eb, 0x56422842, 0x565d86b4, 0x5678e242, - 0x56943aee, 0x56af90b9, 0x56cae3a4, 0x56e633b2, - 0x570180e4, 0x571ccb3b, 0x573812b8, 0x5753575e, - 0x576e992e, 0x5789d829, 0x57a51450, 0x57c04da6, - 0x57db842b, 0x57f6b7e1, 0x5811e8c9, 0x582d16e6, - 0x58484238, 0x58636ac0, 0x587e9081, 0x5899b37c, - 0x58b4d3b1, 0x58cff123, 0x58eb0bd3, 0x590623c2, - 0x592138f2, 0x593c4b63, 0x59575b19, 0x59726812, - 0x598d7253, 0x59a879da, 0x59c37eab, 0x59de80c6, - 0x59f9802d, 0x5a147ce0, 0x5a2f76e2, 0x5a4a6e34, - 0x5a6562d6, 0x5a8054cb, 0x5a9b4414, 0x5ab630b2, - 0x5ad11aa6, 0x5aec01f1, 0x5b06e696, 0x5b21c895, - 0x5b3ca7ef, 0x5b5784a6, 0x5b725ebc, 0x5b8d3631, - 0x5ba80b06, 0x5bc2dd3e, 0x5bddacd9, 0x5bf879d8, - 0x5c13443d, 0x5c2e0c09, 0x5c48d13e, 0x5c6393dc, - 0x5c7e53e5, 0x5c99115a, 0x5cb3cc3c, 0x5cce848d, - 0x5ce93a4e, 0x5d03ed80, 0x5d1e9e24, 0x5d394c3b, - 0x5d53f7c7, 0x5d6ea0c9, 0x5d894742, 0x5da3eb33, - 0x5dbe8c9e, 0x5dd92b84, 0x5df3c7e5, 0x5e0e61c3, - 0x5e28f920, 0x5e438dfc, 0x5e5e2059, 0x5e78b037, - 0x5e933d99, 0x5eadc87e, 0x5ec850e9, 0x5ee2d6da, - 0x5efd5a53, 0x5f17db54, 0x5f3259e0, 0x5f4cd5f6, - 0x5f674f99, 0x5f81c6c8, 0x5f9c3b87, 0x5fb6add4, - 0x5fd11db3, 0x5feb8b23, 0x6005f626, 0x60205ebd, - 0x603ac4e9, 0x605528ac, 0x606f8a05, 0x6089e8f7, - 0x60a44583, 0x60be9fa9, 0x60d8f76b, 0x60f34cca, - 0x610d9fc7, 0x6127f062, 0x61423e9e, 0x615c8a7a, - 0x6176d3f9, 0x61911b1b, 0x61ab5fe1, 0x61c5a24d, - 0x61dfe25f, 0x61fa2018, 0x62145b7a, 0x622e9485, - 0x6248cb3b, 0x6262ff9d, 0x627d31ab, 0x62976167, - 0x62b18ed1, 0x62cbb9eb, 0x62e5e2b6, 0x63000933, - 0x631a2d62, 0x63344f45, 0x634e6edd, 0x63688c2b, - 0x6382a730, 0x639cbfec, 0x63b6d661, 0x63d0ea90, - 0x63eafc7a, 0x64050c1f, 0x641f1982, 0x643924a2, - 0x64532d80, 0x646d341f, 0x6487387e, 0x64a13a9e, - 0x64bb3a81, 0x64d53828, 0x64ef3393, 0x65092cc4, - 0x652323bb, 0x653d1879, 0x65570b00, 0x6570fb50, - 0x658ae96b, 0x65a4d550, 0x65bebf01, 0x65d8a680, - 0x65f28bcc, 0x660c6ee8, 0x66264fd3, 0x66402e8f, - 0x665a0b1c, 0x6673e57d, 0x668dbdb0, 0x66a793b8, - 0x66c16795, 0x66db3949, 0x66f508d4, 0x670ed636, - 0x6728a172, 0x67426a87, 0x675c3177, 0x6775f643, - 0x678fb8eb, 0x67a97971, 0x67c337d5, 0x67dcf418, - 0x67f6ae3b, 0x6810663f, 0x682a1c25, 0x6843cfed, - 0x685d8199, 0x68773129, 0x6890de9f, 0x68aa89fa, - 0x68c4333d, 0x68ddda67, 0x68f77f7a, 0x69112277, - 0x692ac35e, 0x69446230, 0x695dfeee, 0x6977999a, - 0x69913232, 0x69aac8ba, 0x69c45d31, 0x69ddef98, - 0x69f77ff0, 0x6a110e3a, 0x6a2a9a77, 0x6a4424a8, - 0x6a5daccc, 0x6a7732e6, 0x6a90b6f6, 0x6aaa38fd, - 0x6ac3b8fb, 0x6add36f2, 0x6af6b2e2, 0x6b102ccd, - 0x6b29a4b2, 0x6b431a92, 0x6b5c8e6f, 0x6b76004a, - 0x6b8f7022, 0x6ba8ddf9, 0x6bc249d0, 0x6bdbb3a7, - 0x6bf51b80, 0x6c0e815a, 0x6c27e537, 0x6c414718, - 0x6c5aa6fd, 0x6c7404e7, 0x6c8d60d7, 0x6ca6bace, - 0x6cc012cc, 0x6cd968d2, 0x6cf2bce1, 0x6d0c0ef9, - 0x6d255f1d, 0x6d3ead4b, 0x6d57f985, 0x6d7143cc, - 0x6d8a8c21, 0x6da3d283, 0x6dbd16f5, 0x6dd65976, - 0x6def9a08, 0x6e08d8ab, 0x6e221560, 0x6e3b5027, - 0x6e548902, 0x6e6dbff1, 0x6e86f4f5, 0x6ea0280e, - 0x6eb9593e, 0x6ed28885, 0x6eebb5e3, 0x6f04e15a, - 0x6f1e0aea, 0x6f373294, 0x6f505859, 0x6f697c39, - 0x6f829e35, 0x6f9bbe4e, 0x6fb4dc85, 0x6fcdf8d9, - 0x6fe7134d, 0x70002be0, 0x70194293, 0x70325767, - 0x704b6a5d, 0x70647b76, 0x707d8ab1, 0x70969811, - 0x70afa394, 0x70c8ad3d, 0x70e1b50c, 0x70fabb01, - 0x7113bf1d, 0x712cc161, 0x7145c1ce, 0x715ec064, - 0x7177bd24, 0x7190b80f, 0x71a9b124, 0x71c2a866, - 0x71db9dd4, 0x71f49170, 0x720d8339, 0x72267331, - 0x723f6159, 0x72584db0, 0x72713838, 0x728a20f1, - 0x72a307db, 0x72bbecf9, 0x72d4d049, 0x72edb1ce, - 0x73069187, 0x731f6f75, 0x73384b98, 0x735125f3, - 0x7369fe84, 0x7382d54d, 0x739baa4e, 0x73b47d89, - 0x73cd4efd, 0x73e61eab, 0x73feec94, 0x7417b8b8, - 0x74308319, 0x74494bb6, 0x74621291, 0x747ad7aa, - 0x74939b02, 0x74ac5c98, 0x74c51c6f, 0x74ddda86, - 0x74f696de, 0x750f5178, 0x75280a54, 0x7540c174, - 0x755976d7, 0x75722a7e, 0x758adc69, 0x75a38c9b, - 0x75bc3b12, 0x75d4e7cf, 0x75ed92d4, 0x76063c21, - 0x761ee3b6, 0x76378994, 0x76502dbc, 0x7668d02e, - 0x768170eb, 0x769a0ff3, 0x76b2ad47, 0x76cb48e7, - 0x76e3e2d5, 0x76fc7b10, 0x7715119a, 0x772da673, - 0x7746399b, 0x775ecb13, 0x77775adc, 0x778fe8f6, - 0x77a87561, 0x77c1001f, 0x77d98930, 0x77f21095, - 0x780a964d, 0x78231a5b, 0x783b9cbd, 0x78541d75, - 0x786c9c84, 0x788519e9, 0x789d95a6, 0x78b60fbb, - 0x78ce8828, 0x78e6feef, 0x78ff740f, 0x7917e78a, - 0x7930595f, 0x7948c990, 0x7961381d, 0x7979a506, - 0x7992104c, 0x79aa79f0, 0x79c2e1f1, 0x79db4852, - 0x79f3ad11, 0x7a0c1031, 0x7a2471b0, 0x7a3cd191, - 0x7a552fd3, 0x7a6d8c76, 0x7a85e77d, 0x7a9e40e6, - 0x7ab698b2, 0x7aceeee3, 0x7ae74378, 0x7aff9673, - 0x7b17e7d2, 0x7b303799, 0x7b4885c5, 0x7b60d259, - 0x7b791d55, 0x7b9166b9, 0x7ba9ae86, 0x7bc1f4bc, - 0x7bda395c, 0x7bf27c66, 0x7c0abddb, 0x7c22fdbb, - 0x7c3b3c07, 0x7c5378c0, 0x7c6bb3e5, 0x7c83ed78, - 0x7c9c2579, 0x7cb45be9, 0x7ccc90c7, 0x7ce4c414, - 0x7cfcf5d2, 0x7d152600, 0x7d2d549f, 0x7d4581b0, - 0x7d5dad32, 0x7d75d727, 0x7d8dff8f, 0x7da6266a, - 0x7dbe4bba, 0x7dd66f7d, 0x7dee91b6, 0x7e06b264, - 0x7e1ed188, 0x7e36ef22, 0x7e4f0b34, 0x7e6725bd, - 0x7e7f3ebd, 0x7e975636, 0x7eaf6c28, 0x7ec78093, - 0x7edf9378, 0x7ef7a4d7, 0x7f0fb4b1, 0x7f27c307, - 0x7f3fcfd8, 0x7f57db25, 0x7f6fe4ef, 0x7f87ed36, + 0x4c1bf829, 0x4c3880de, 0x4c550603, 0x4c71879c, + 0x4c8e05aa, 0x4caa8030, 0x4cc6f72f, 0x4ce36aab, + 0x4cffdaa4, 0x4d1c471d, 0x4d38b019, 0x4d55159a, + 0x4d7177a1, 0x4d8dd631, 0x4daa314b, 0x4dc688f3, + 0x4de2dd2a, 0x4dff2df2, 0x4e1b7b4d, 0x4e37c53d, + 0x4e540bc5, 0x4e704ee6, 0x4e8c8ea3, 0x4ea8cafd, + 0x4ec503f7, 0x4ee13992, 0x4efd6bd0, 0x4f199ab4, + 0x4f35c640, 0x4f51ee75, 0x4f6e1356, 0x4f8a34e4, + 0x4fa65321, 0x4fc26e10, 0x4fde85b2, 0x4ffa9a0a, + 0x5016ab18, 0x5032b8e0, 0x504ec362, 0x506acaa1, + 0x5086cea0, 0x50a2cf5e, 0x50becce0, 0x50dac725, + 0x50f6be31, 0x5112b205, 0x512ea2a3, 0x514a900d, + 0x51667a45, 0x5182614c, 0x519e4524, 0x51ba25cf, + 0x51d60350, 0x51f1dda7, 0x520db4d6, 0x522988e0, + 0x524559c6, 0x52612789, 0x527cf22d, 0x5298b9b1, + 0x52b47e19, 0x52d03f65, 0x52ebfd98, 0x5307b8b4, + 0x532370b9, 0x533f25aa, 0x535ad789, 0x53768656, + 0x53923215, 0x53addac6, 0x53c9806b, 0x53e52306, + 0x5400c298, 0x541c5f24, 0x5437f8ab, 0x54538f2e, + 0x546f22af, 0x548ab330, 0x54a640b3, 0x54c1cb38, + 0x54dd52c2, 0x54f8d753, 0x551458eb, 0x552fd78d, + 0x554b5339, 0x5566cbf3, 0x558241bb, 0x559db492, + 0x55b9247b, 0x55d49177, 0x55effb87, 0x560b62ad, + 0x5626c6eb, 0x56422842, 0x565d86b4, 0x5678e242, + 0x56943aee, 0x56af90b9, 0x56cae3a4, 0x56e633b2, + 0x570180e4, 0x571ccb3b, 0x573812b8, 0x5753575e, + 0x576e992e, 0x5789d829, 0x57a51450, 0x57c04da6, + 0x57db842b, 0x57f6b7e1, 0x5811e8c9, 0x582d16e6, + 0x58484238, 0x58636ac0, 0x587e9081, 0x5899b37c, + 0x58b4d3b1, 0x58cff123, 0x58eb0bd3, 0x590623c2, + 0x592138f2, 0x593c4b63, 0x59575b19, 0x59726812, + 0x598d7253, 0x59a879da, 0x59c37eab, 0x59de80c6, + 0x59f9802d, 0x5a147ce0, 0x5a2f76e2, 0x5a4a6e34, + 0x5a6562d6, 0x5a8054cb, 0x5a9b4414, 0x5ab630b2, + 0x5ad11aa6, 0x5aec01f1, 0x5b06e696, 0x5b21c895, + 0x5b3ca7ef, 0x5b5784a6, 0x5b725ebc, 0x5b8d3631, + 0x5ba80b06, 0x5bc2dd3e, 0x5bddacd9, 0x5bf879d8, + 0x5c13443d, 0x5c2e0c09, 0x5c48d13e, 0x5c6393dc, + 0x5c7e53e5, 0x5c99115a, 0x5cb3cc3c, 0x5cce848d, + 0x5ce93a4e, 0x5d03ed80, 0x5d1e9e24, 0x5d394c3b, + 0x5d53f7c7, 0x5d6ea0c9, 0x5d894742, 0x5da3eb33, + 0x5dbe8c9e, 0x5dd92b84, 0x5df3c7e5, 0x5e0e61c3, + 0x5e28f920, 0x5e438dfc, 0x5e5e2059, 0x5e78b037, + 0x5e933d99, 0x5eadc87e, 0x5ec850e9, 0x5ee2d6da, + 0x5efd5a53, 0x5f17db54, 0x5f3259e0, 0x5f4cd5f6, + 0x5f674f99, 0x5f81c6c8, 0x5f9c3b87, 0x5fb6add4, + 0x5fd11db3, 0x5feb8b23, 0x6005f626, 0x60205ebd, + 0x603ac4e9, 0x605528ac, 0x606f8a05, 0x6089e8f7, + 0x60a44583, 0x60be9fa9, 0x60d8f76b, 0x60f34cca, + 0x610d9fc7, 0x6127f062, 0x61423e9e, 0x615c8a7a, + 0x6176d3f9, 0x61911b1b, 0x61ab5fe1, 0x61c5a24d, + 0x61dfe25f, 0x61fa2018, 0x62145b7a, 0x622e9485, + 0x6248cb3b, 0x6262ff9d, 0x627d31ab, 0x62976167, + 0x62b18ed1, 0x62cbb9eb, 0x62e5e2b6, 0x63000933, + 0x631a2d62, 0x63344f45, 0x634e6edd, 0x63688c2b, + 0x6382a730, 0x639cbfec, 0x63b6d661, 0x63d0ea90, + 0x63eafc7a, 0x64050c1f, 0x641f1982, 0x643924a2, + 0x64532d80, 0x646d341f, 0x6487387e, 0x64a13a9e, + 0x64bb3a81, 0x64d53828, 0x64ef3393, 0x65092cc4, + 0x652323bb, 0x653d1879, 0x65570b00, 0x6570fb50, + 0x658ae96b, 0x65a4d550, 0x65bebf01, 0x65d8a680, + 0x65f28bcc, 0x660c6ee8, 0x66264fd3, 0x66402e8f, + 0x665a0b1c, 0x6673e57d, 0x668dbdb0, 0x66a793b8, + 0x66c16795, 0x66db3949, 0x66f508d4, 0x670ed636, + 0x6728a172, 0x67426a87, 0x675c3177, 0x6775f643, + 0x678fb8eb, 0x67a97971, 0x67c337d5, 0x67dcf418, + 0x67f6ae3b, 0x6810663f, 0x682a1c25, 0x6843cfed, + 0x685d8199, 0x68773129, 0x6890de9f, 0x68aa89fa, + 0x68c4333d, 0x68ddda67, 0x68f77f7a, 0x69112277, + 0x692ac35e, 0x69446230, 0x695dfeee, 0x6977999a, + 0x69913232, 0x69aac8ba, 0x69c45d31, 0x69ddef98, + 0x69f77ff0, 0x6a110e3a, 0x6a2a9a77, 0x6a4424a8, + 0x6a5daccc, 0x6a7732e6, 0x6a90b6f6, 0x6aaa38fd, + 0x6ac3b8fb, 0x6add36f2, 0x6af6b2e2, 0x6b102ccd, + 0x6b29a4b2, 0x6b431a92, 0x6b5c8e6f, 0x6b76004a, + 0x6b8f7022, 0x6ba8ddf9, 0x6bc249d0, 0x6bdbb3a7, + 0x6bf51b80, 0x6c0e815a, 0x6c27e537, 0x6c414718, + 0x6c5aa6fd, 0x6c7404e7, 0x6c8d60d7, 0x6ca6bace, + 0x6cc012cc, 0x6cd968d2, 0x6cf2bce1, 0x6d0c0ef9, + 0x6d255f1d, 0x6d3ead4b, 0x6d57f985, 0x6d7143cc, + 0x6d8a8c21, 0x6da3d283, 0x6dbd16f5, 0x6dd65976, + 0x6def9a08, 0x6e08d8ab, 0x6e221560, 0x6e3b5027, + 0x6e548902, 0x6e6dbff1, 0x6e86f4f5, 0x6ea0280e, + 0x6eb9593e, 0x6ed28885, 0x6eebb5e3, 0x6f04e15a, + 0x6f1e0aea, 0x6f373294, 0x6f505859, 0x6f697c39, + 0x6f829e35, 0x6f9bbe4e, 0x6fb4dc85, 0x6fcdf8d9, + 0x6fe7134d, 0x70002be0, 0x70194293, 0x70325767, + 0x704b6a5d, 0x70647b76, 0x707d8ab1, 0x70969811, + 0x70afa394, 0x70c8ad3d, 0x70e1b50c, 0x70fabb01, + 0x7113bf1d, 0x712cc161, 0x7145c1ce, 0x715ec064, + 0x7177bd24, 0x7190b80f, 0x71a9b124, 0x71c2a866, + 0x71db9dd4, 0x71f49170, 0x720d8339, 0x72267331, + 0x723f6159, 0x72584db0, 0x72713838, 0x728a20f1, + 0x72a307db, 0x72bbecf9, 0x72d4d049, 0x72edb1ce, + 0x73069187, 0x731f6f75, 0x73384b98, 0x735125f3, + 0x7369fe84, 0x7382d54d, 0x739baa4e, 0x73b47d89, + 0x73cd4efd, 0x73e61eab, 0x73feec94, 0x7417b8b8, + 0x74308319, 0x74494bb6, 0x74621291, 0x747ad7aa, + 0x74939b02, 0x74ac5c98, 0x74c51c6f, 0x74ddda86, + 0x74f696de, 0x750f5178, 0x75280a54, 0x7540c174, + 0x755976d7, 0x75722a7e, 0x758adc69, 0x75a38c9b, + 0x75bc3b12, 0x75d4e7cf, 0x75ed92d4, 0x76063c21, + 0x761ee3b6, 0x76378994, 0x76502dbc, 0x7668d02e, + 0x768170eb, 0x769a0ff3, 0x76b2ad47, 0x76cb48e7, + 0x76e3e2d5, 0x76fc7b10, 0x7715119a, 0x772da673, + 0x7746399b, 0x775ecb13, 0x77775adc, 0x778fe8f6, + 0x77a87561, 0x77c1001f, 0x77d98930, 0x77f21095, + 0x780a964d, 0x78231a5b, 0x783b9cbd, 0x78541d75, + 0x786c9c84, 0x788519e9, 0x789d95a6, 0x78b60fbb, + 0x78ce8828, 0x78e6feef, 0x78ff740f, 0x7917e78a, + 0x7930595f, 0x7948c990, 0x7961381d, 0x7979a506, + 0x7992104c, 0x79aa79f0, 0x79c2e1f1, 0x79db4852, + 0x79f3ad11, 0x7a0c1031, 0x7a2471b0, 0x7a3cd191, + 0x7a552fd3, 0x7a6d8c76, 0x7a85e77d, 0x7a9e40e6, + 0x7ab698b2, 0x7aceeee3, 0x7ae74378, 0x7aff9673, + 0x7b17e7d2, 0x7b303799, 0x7b4885c5, 0x7b60d259, + 0x7b791d55, 0x7b9166b9, 0x7ba9ae86, 0x7bc1f4bc, + 0x7bda395c, 0x7bf27c66, 0x7c0abddb, 0x7c22fdbb, + 0x7c3b3c07, 0x7c5378c0, 0x7c6bb3e5, 0x7c83ed78, + 0x7c9c2579, 0x7cb45be9, 0x7ccc90c7, 0x7ce4c414, + 0x7cfcf5d2, 0x7d152600, 0x7d2d549f, 0x7d4581b0, + 0x7d5dad32, 0x7d75d727, 0x7d8dff8f, 0x7da6266a, + 0x7dbe4bba, 0x7dd66f7d, 0x7dee91b6, 0x7e06b264, + 0x7e1ed188, 0x7e36ef22, 0x7e4f0b34, 0x7e6725bd, + 0x7e7f3ebd, 0x7e975636, 0x7eaf6c28, 0x7ec78093, + 0x7edf9378, 0x7ef7a4d7, 0x7f0fb4b1, 0x7f27c307, + 0x7f3fcfd8, 0x7f57db25, 0x7f6fe4ef, 0x7f87ed36, 0x7f9ff3fb, 0x7fb7f93e, 0x7fcffcff, 0x7fe7ff40 }; const Word32 mTab_4_3[512]={ - 0x32cbfd4a, 0x32eddd70, 0x330fc339, 0x3331aea3, - 0x33539fac, 0x33759652, 0x33979294, 0x33b99470, - 0x33db9be4, 0x33fda8ed, 0x341fbb8b, 0x3441d3bb, - 0x3463f17c, 0x348614cc, 0x34a83da8, 0x34ca6c10, - 0x34eca001, 0x350ed979, 0x35311877, 0x35535cfa, - 0x3575a6fe, 0x3597f683, 0x35ba4b87, 0x35dca607, - 0x35ff0603, 0x36216b78, 0x3643d665, 0x366646c7, - 0x3688bc9e, 0x36ab37e8, 0x36cdb8a2, 0x36f03ecb, - 0x3712ca62, 0x37355b64, 0x3757f1d1, 0x377a8da5, - 0x379d2ee0, 0x37bfd580, 0x37e28184, 0x380532e8, - 0x3827e9ad, 0x384aa5d0, 0x386d674f, 0x38902e2a, - 0x38b2fa5d, 0x38d5cbe9, 0x38f8a2ca, 0x391b7eff, - 0x393e6088, 0x39614761, 0x3984338a, 0x39a72501, - 0x39ca1bc4, 0x39ed17d1, 0x3a101928, 0x3a331fc6, - 0x3a562baa, 0x3a793cd2, 0x3a9c533d, 0x3abf6ee9, - 0x3ae28fd5, 0x3b05b5ff, 0x3b28e165, 0x3b4c1206, - 0x3b6f47e0, 0x3b9282f2, 0x3bb5c33a, 0x3bd908b7, - 0x3bfc5368, 0x3c1fa349, 0x3c42f85b, 0x3c66529c, - 0x3c89b209, 0x3cad16a2, 0x3cd08065, 0x3cf3ef51, - 0x3d176364, 0x3d3adc9c, 0x3d5e5af8, 0x3d81de77, - 0x3da56717, 0x3dc8f4d6, 0x3dec87b4, 0x3e101fae, - 0x3e33bcc3, 0x3e575ef2, 0x3e7b063a, 0x3e9eb298, - 0x3ec2640c, 0x3ee61a93, 0x3f09d62d, 0x3f2d96d8, - 0x3f515c93, 0x3f75275b, 0x3f98f731, 0x3fbccc11, - 0x3fe0a5fc, 0x400484ef, 0x402868ea, 0x404c51e9, - 0x40703fee, 0x409432f5, 0x40b82afd, 0x40dc2806, - 0x41002a0d, 0x41243111, 0x41483d12, 0x416c4e0d, - 0x41906401, 0x41b47eed, 0x41d89ecf, 0x41fcc3a7, - 0x4220ed72, 0x42451c30, 0x42694fde, 0x428d887d, - 0x42b1c609, 0x42d60883, 0x42fa4fe8, 0x431e9c37, - 0x4342ed70, 0x43674390, 0x438b9e96, 0x43affe82, - 0x43d46351, 0x43f8cd03, 0x441d3b95, 0x4441af08, - 0x44662758, 0x448aa487, 0x44af2690, 0x44d3ad75, - 0x44f83933, 0x451cc9c8, 0x45415f35, 0x4565f977, - 0x458a988d, 0x45af3c76, 0x45d3e531, 0x45f892bc, - 0x461d4516, 0x4641fc3e, 0x4666b832, 0x468b78f2, - 0x46b03e7c, 0x46d508cf, 0x46f9d7e9, 0x471eabca, - 0x47438470, 0x476861d9, 0x478d4406, 0x47b22af3, - 0x47d716a1, 0x47fc070e, 0x4820fc39, 0x4845f620, - 0x486af4c3, 0x488ff820, 0x48b50035, 0x48da0d03, - 0x48ff1e87, 0x492434c0, 0x49494fad, 0x496e6f4d, - 0x4993939f, 0x49b8bca2, 0x49ddea54, 0x4a031cb4, - 0x4a2853c1, 0x4a4d8f7a, 0x4a72cfde, 0x4a9814eb, - 0x4abd5ea1, 0x4ae2acfd, 0x4b080000, 0x4b2d57a8, - 0x4b52b3f3, 0x4b7814e1, 0x4b9d7a70, 0x4bc2e49f, - 0x4be8536e, 0x4c0dc6db, 0x4c333ee4, 0x4c58bb89, - 0x4c7e3cc9, 0x4ca3c2a2, 0x4cc94d14, 0x4ceedc1c, - 0x4d146fbb, 0x4d3a07ef, 0x4d5fa4b6, 0x4d854611, - 0x4daaebfd, 0x4dd09679, 0x4df64585, 0x4e1bf91f, - 0x4e41b146, 0x4e676dfa, 0x4e8d2f38, 0x4eb2f501, - 0x4ed8bf52, 0x4efe8e2b, 0x4f24618a, 0x4f4a3970, - 0x4f7015d9, 0x4f95f6c6, 0x4fbbdc36, 0x4fe1c626, - 0x5007b497, 0x502da787, 0x50539ef5, 0x50799ae1, - 0x509f9b48, 0x50c5a02a, 0x50eba985, 0x5111b75a, - 0x5137c9a6, 0x515de069, 0x5183fba2, 0x51aa1b4f, - 0x51d03f70, 0x51f66803, 0x521c9508, 0x5242c67d, - 0x5268fc62, 0x528f36b5, 0x52b57575, 0x52dbb8a2, - 0x5302003a, 0x53284c3c, 0x534e9ca8, 0x5374f17c, - 0x539b4ab7, 0x53c1a858, 0x53e80a5f, 0x540e70ca, - 0x5434db98, 0x545b4ac8, 0x5481be5a, 0x54a8364b, - 0x54ceb29c, 0x54f5334c, 0x551bb858, 0x554241c1, - 0x5568cf85, 0x558f61a3, 0x55b5f81b, 0x55dc92eb, - 0x56033212, 0x5629d590, 0x56507d63, 0x5677298a, - 0x569dda05, 0x56c48ed3, 0x56eb47f2, 0x57120562, - 0x5738c721, 0x575f8d2f, 0x5786578a, 0x57ad2633, - 0x57d3f927, 0x57fad066, 0x5821abef, 0x58488bc0, - 0x586f6fda, 0x5896583b, 0x58bd44e2, 0x58e435ce, - 0x590b2aff, 0x59322473, 0x59592229, 0x59802420, - 0x59a72a59, 0x59ce34d0, 0x59f54387, 0x5a1c567b, - 0x5a436dac, 0x5a6a8919, 0x5a91a8c1, 0x5ab8cca3, - 0x5adff4be, 0x5b072111, 0x5b2e519c, 0x5b55865e, - 0x5b7cbf54, 0x5ba3fc80, 0x5bcb3ddf, 0x5bf28371, - 0x5c19cd35, 0x5c411b2a, 0x5c686d4f, 0x5c8fc3a4, - 0x5cb71e27, 0x5cde7cd7, 0x5d05dfb4, 0x5d2d46bd, - 0x5d54b1f0, 0x5d7c214e, 0x5da394d4, 0x5dcb0c83, - 0x5df28859, 0x5e1a0856, 0x5e418c78, 0x5e6914be, - 0x5e90a129, 0x5eb831b7, 0x5edfc667, 0x5f075f38, - 0x5f2efc29, 0x5f569d3a, 0x5f7e426a, 0x5fa5ebb7, - 0x5fcd9921, 0x5ff54aa8, 0x601d004a, 0x6044ba06, - 0x606c77dc, 0x609439ca, 0x60bbffd0, 0x60e3c9ee, - 0x610b9821, 0x61336a6a, 0x615b40c8, 0x61831b39, - 0x61aaf9bd, 0x61d2dc53, 0x61fac2fa, 0x6222adb2, - 0x624a9c79, 0x62728f4f, 0x629a8633, 0x62c28123, - 0x62ea8020, 0x63128329, 0x633a8a3c, 0x63629559, - 0x638aa47f, 0x63b2b7ad, 0x63dacee2, 0x6402ea1e, - 0x642b0960, 0x64532ca6, 0x647b53f1, 0x64a37f3f, - 0x64cbae8f, 0x64f3e1e2, 0x651c1935, 0x65445488, - 0x656c93db, 0x6594d72c, 0x65bd1e7b, 0x65e569c7, - 0x660db90f, 0x66360c53, 0x665e6391, 0x6686bec9, - 0x66af1dfa, 0x66d78123, 0x66ffe844, 0x6728535b, - 0x6750c268, 0x6779356b, 0x67a1ac62, 0x67ca274c, - 0x67f2a629, 0x681b28f9, 0x6843afb9, 0x686c3a6a, - 0x6894c90b, 0x68bd5b9b, 0x68e5f219, 0x690e8c84, - 0x69372add, 0x695fcd21, 0x69887350, 0x69b11d6a, - 0x69d9cb6d, 0x6a027d5a, 0x6a2b332f, 0x6a53eceb, - 0x6a7caa8d, 0x6aa56c16, 0x6ace3184, 0x6af6fad6, - 0x6b1fc80c, 0x6b489925, 0x6b716e20, 0x6b9a46fd, - 0x6bc323bb, 0x6bec0458, 0x6c14e8d5, 0x6c3dd130, - 0x6c66bd69, 0x6c8fad80, 0x6cb8a172, 0x6ce19940, - 0x6d0a94e9, 0x6d33946d, 0x6d5c97ca, 0x6d859eff, - 0x6daeaa0d, 0x6dd7b8f1, 0x6e00cbad, 0x6e29e23e, - 0x6e52fca4, 0x6e7c1adf, 0x6ea53cee, 0x6ece62cf, - 0x6ef78c83, 0x6f20ba09, 0x6f49eb5f, 0x6f732085, - 0x6f9c597b, 0x6fc59640, 0x6feed6d3, 0x70181b33, - 0x70416360, 0x706aaf59, 0x7093ff1d, 0x70bd52ab, - 0x70e6aa04, 0x71100525, 0x7139640f, 0x7162c6c1, - 0x718c2d3a, 0x71b5977a, 0x71df057f, 0x72087749, - 0x7231ecd8, 0x725b662a, 0x7284e33f, 0x72ae6417, - 0x72d7e8b0, 0x7301710a, 0x732afd24, 0x73548cfe, - 0x737e2097, 0x73a7b7ee, 0x73d15303, 0x73faf1d5, - 0x74249462, 0x744e3aac, 0x7477e4b0, 0x74a1926e, - 0x74cb43e6, 0x74f4f917, 0x751eb201, 0x75486ea1, - 0x75722ef9, 0x759bf307, 0x75c5baca, 0x75ef8642, - 0x7619556f, 0x7643284f, 0x766cfee2, 0x7696d928, - 0x76c0b71f, 0x76ea98c7, 0x77147e20, 0x773e6728, - 0x776853df, 0x77924445, 0x77bc3858, 0x77e63019, - 0x78102b85, 0x783a2a9e, 0x78642d62, 0x788e33d1, - 0x78b83de9, 0x78e24bab, 0x790c5d15, 0x79367228, - 0x79608ae1, 0x798aa742, 0x79b4c748, 0x79deeaf4, - 0x7a091245, 0x7a333d3a, 0x7a5d6bd2, 0x7a879e0e, - 0x7ab1d3ec, 0x7adc0d6b, 0x7b064a8c, 0x7b308b4d, - 0x7b5acfae, 0x7b8517ae, 0x7baf634c, 0x7bd9b289, - 0x7c040563, 0x7c2e5bda, 0x7c58b5ec, 0x7c83139b, - 0x7cad74e4, 0x7cd7d9c7, 0x7d024244, 0x7d2cae5a, - 0x7d571e09, 0x7d81914f, 0x7dac082d, 0x7dd682a1, - 0x7e0100ac, 0x7e2b824b, 0x7e560780, 0x7e809048, - 0x7eab1ca5, 0x7ed5ac94, 0x7f004015, 0x7f2ad729, + 0x32cbfd4a, 0x32eddd70, 0x330fc339, 0x3331aea3, + 0x33539fac, 0x33759652, 0x33979294, 0x33b99470, + 0x33db9be4, 0x33fda8ed, 0x341fbb8b, 0x3441d3bb, + 0x3463f17c, 0x348614cc, 0x34a83da8, 0x34ca6c10, + 0x34eca001, 0x350ed979, 0x35311877, 0x35535cfa, + 0x3575a6fe, 0x3597f683, 0x35ba4b87, 0x35dca607, + 0x35ff0603, 0x36216b78, 0x3643d665, 0x366646c7, + 0x3688bc9e, 0x36ab37e8, 0x36cdb8a2, 0x36f03ecb, + 0x3712ca62, 0x37355b64, 0x3757f1d1, 0x377a8da5, + 0x379d2ee0, 0x37bfd580, 0x37e28184, 0x380532e8, + 0x3827e9ad, 0x384aa5d0, 0x386d674f, 0x38902e2a, + 0x38b2fa5d, 0x38d5cbe9, 0x38f8a2ca, 0x391b7eff, + 0x393e6088, 0x39614761, 0x3984338a, 0x39a72501, + 0x39ca1bc4, 0x39ed17d1, 0x3a101928, 0x3a331fc6, + 0x3a562baa, 0x3a793cd2, 0x3a9c533d, 0x3abf6ee9, + 0x3ae28fd5, 0x3b05b5ff, 0x3b28e165, 0x3b4c1206, + 0x3b6f47e0, 0x3b9282f2, 0x3bb5c33a, 0x3bd908b7, + 0x3bfc5368, 0x3c1fa349, 0x3c42f85b, 0x3c66529c, + 0x3c89b209, 0x3cad16a2, 0x3cd08065, 0x3cf3ef51, + 0x3d176364, 0x3d3adc9c, 0x3d5e5af8, 0x3d81de77, + 0x3da56717, 0x3dc8f4d6, 0x3dec87b4, 0x3e101fae, + 0x3e33bcc3, 0x3e575ef2, 0x3e7b063a, 0x3e9eb298, + 0x3ec2640c, 0x3ee61a93, 0x3f09d62d, 0x3f2d96d8, + 0x3f515c93, 0x3f75275b, 0x3f98f731, 0x3fbccc11, + 0x3fe0a5fc, 0x400484ef, 0x402868ea, 0x404c51e9, + 0x40703fee, 0x409432f5, 0x40b82afd, 0x40dc2806, + 0x41002a0d, 0x41243111, 0x41483d12, 0x416c4e0d, + 0x41906401, 0x41b47eed, 0x41d89ecf, 0x41fcc3a7, + 0x4220ed72, 0x42451c30, 0x42694fde, 0x428d887d, + 0x42b1c609, 0x42d60883, 0x42fa4fe8, 0x431e9c37, + 0x4342ed70, 0x43674390, 0x438b9e96, 0x43affe82, + 0x43d46351, 0x43f8cd03, 0x441d3b95, 0x4441af08, + 0x44662758, 0x448aa487, 0x44af2690, 0x44d3ad75, + 0x44f83933, 0x451cc9c8, 0x45415f35, 0x4565f977, + 0x458a988d, 0x45af3c76, 0x45d3e531, 0x45f892bc, + 0x461d4516, 0x4641fc3e, 0x4666b832, 0x468b78f2, + 0x46b03e7c, 0x46d508cf, 0x46f9d7e9, 0x471eabca, + 0x47438470, 0x476861d9, 0x478d4406, 0x47b22af3, + 0x47d716a1, 0x47fc070e, 0x4820fc39, 0x4845f620, + 0x486af4c3, 0x488ff820, 0x48b50035, 0x48da0d03, + 0x48ff1e87, 0x492434c0, 0x49494fad, 0x496e6f4d, + 0x4993939f, 0x49b8bca2, 0x49ddea54, 0x4a031cb4, + 0x4a2853c1, 0x4a4d8f7a, 0x4a72cfde, 0x4a9814eb, + 0x4abd5ea1, 0x4ae2acfd, 0x4b080000, 0x4b2d57a8, + 0x4b52b3f3, 0x4b7814e1, 0x4b9d7a70, 0x4bc2e49f, + 0x4be8536e, 0x4c0dc6db, 0x4c333ee4, 0x4c58bb89, + 0x4c7e3cc9, 0x4ca3c2a2, 0x4cc94d14, 0x4ceedc1c, + 0x4d146fbb, 0x4d3a07ef, 0x4d5fa4b6, 0x4d854611, + 0x4daaebfd, 0x4dd09679, 0x4df64585, 0x4e1bf91f, + 0x4e41b146, 0x4e676dfa, 0x4e8d2f38, 0x4eb2f501, + 0x4ed8bf52, 0x4efe8e2b, 0x4f24618a, 0x4f4a3970, + 0x4f7015d9, 0x4f95f6c6, 0x4fbbdc36, 0x4fe1c626, + 0x5007b497, 0x502da787, 0x50539ef5, 0x50799ae1, + 0x509f9b48, 0x50c5a02a, 0x50eba985, 0x5111b75a, + 0x5137c9a6, 0x515de069, 0x5183fba2, 0x51aa1b4f, + 0x51d03f70, 0x51f66803, 0x521c9508, 0x5242c67d, + 0x5268fc62, 0x528f36b5, 0x52b57575, 0x52dbb8a2, + 0x5302003a, 0x53284c3c, 0x534e9ca8, 0x5374f17c, + 0x539b4ab7, 0x53c1a858, 0x53e80a5f, 0x540e70ca, + 0x5434db98, 0x545b4ac8, 0x5481be5a, 0x54a8364b, + 0x54ceb29c, 0x54f5334c, 0x551bb858, 0x554241c1, + 0x5568cf85, 0x558f61a3, 0x55b5f81b, 0x55dc92eb, + 0x56033212, 0x5629d590, 0x56507d63, 0x5677298a, + 0x569dda05, 0x56c48ed3, 0x56eb47f2, 0x57120562, + 0x5738c721, 0x575f8d2f, 0x5786578a, 0x57ad2633, + 0x57d3f927, 0x57fad066, 0x5821abef, 0x58488bc0, + 0x586f6fda, 0x5896583b, 0x58bd44e2, 0x58e435ce, + 0x590b2aff, 0x59322473, 0x59592229, 0x59802420, + 0x59a72a59, 0x59ce34d0, 0x59f54387, 0x5a1c567b, + 0x5a436dac, 0x5a6a8919, 0x5a91a8c1, 0x5ab8cca3, + 0x5adff4be, 0x5b072111, 0x5b2e519c, 0x5b55865e, + 0x5b7cbf54, 0x5ba3fc80, 0x5bcb3ddf, 0x5bf28371, + 0x5c19cd35, 0x5c411b2a, 0x5c686d4f, 0x5c8fc3a4, + 0x5cb71e27, 0x5cde7cd7, 0x5d05dfb4, 0x5d2d46bd, + 0x5d54b1f0, 0x5d7c214e, 0x5da394d4, 0x5dcb0c83, + 0x5df28859, 0x5e1a0856, 0x5e418c78, 0x5e6914be, + 0x5e90a129, 0x5eb831b7, 0x5edfc667, 0x5f075f38, + 0x5f2efc29, 0x5f569d3a, 0x5f7e426a, 0x5fa5ebb7, + 0x5fcd9921, 0x5ff54aa8, 0x601d004a, 0x6044ba06, + 0x606c77dc, 0x609439ca, 0x60bbffd0, 0x60e3c9ee, + 0x610b9821, 0x61336a6a, 0x615b40c8, 0x61831b39, + 0x61aaf9bd, 0x61d2dc53, 0x61fac2fa, 0x6222adb2, + 0x624a9c79, 0x62728f4f, 0x629a8633, 0x62c28123, + 0x62ea8020, 0x63128329, 0x633a8a3c, 0x63629559, + 0x638aa47f, 0x63b2b7ad, 0x63dacee2, 0x6402ea1e, + 0x642b0960, 0x64532ca6, 0x647b53f1, 0x64a37f3f, + 0x64cbae8f, 0x64f3e1e2, 0x651c1935, 0x65445488, + 0x656c93db, 0x6594d72c, 0x65bd1e7b, 0x65e569c7, + 0x660db90f, 0x66360c53, 0x665e6391, 0x6686bec9, + 0x66af1dfa, 0x66d78123, 0x66ffe844, 0x6728535b, + 0x6750c268, 0x6779356b, 0x67a1ac62, 0x67ca274c, + 0x67f2a629, 0x681b28f9, 0x6843afb9, 0x686c3a6a, + 0x6894c90b, 0x68bd5b9b, 0x68e5f219, 0x690e8c84, + 0x69372add, 0x695fcd21, 0x69887350, 0x69b11d6a, + 0x69d9cb6d, 0x6a027d5a, 0x6a2b332f, 0x6a53eceb, + 0x6a7caa8d, 0x6aa56c16, 0x6ace3184, 0x6af6fad6, + 0x6b1fc80c, 0x6b489925, 0x6b716e20, 0x6b9a46fd, + 0x6bc323bb, 0x6bec0458, 0x6c14e8d5, 0x6c3dd130, + 0x6c66bd69, 0x6c8fad80, 0x6cb8a172, 0x6ce19940, + 0x6d0a94e9, 0x6d33946d, 0x6d5c97ca, 0x6d859eff, + 0x6daeaa0d, 0x6dd7b8f1, 0x6e00cbad, 0x6e29e23e, + 0x6e52fca4, 0x6e7c1adf, 0x6ea53cee, 0x6ece62cf, + 0x6ef78c83, 0x6f20ba09, 0x6f49eb5f, 0x6f732085, + 0x6f9c597b, 0x6fc59640, 0x6feed6d3, 0x70181b33, + 0x70416360, 0x706aaf59, 0x7093ff1d, 0x70bd52ab, + 0x70e6aa04, 0x71100525, 0x7139640f, 0x7162c6c1, + 0x718c2d3a, 0x71b5977a, 0x71df057f, 0x72087749, + 0x7231ecd8, 0x725b662a, 0x7284e33f, 0x72ae6417, + 0x72d7e8b0, 0x7301710a, 0x732afd24, 0x73548cfe, + 0x737e2097, 0x73a7b7ee, 0x73d15303, 0x73faf1d5, + 0x74249462, 0x744e3aac, 0x7477e4b0, 0x74a1926e, + 0x74cb43e6, 0x74f4f917, 0x751eb201, 0x75486ea1, + 0x75722ef9, 0x759bf307, 0x75c5baca, 0x75ef8642, + 0x7619556f, 0x7643284f, 0x766cfee2, 0x7696d928, + 0x76c0b71f, 0x76ea98c7, 0x77147e20, 0x773e6728, + 0x776853df, 0x77924445, 0x77bc3858, 0x77e63019, + 0x78102b85, 0x783a2a9e, 0x78642d62, 0x788e33d1, + 0x78b83de9, 0x78e24bab, 0x790c5d15, 0x79367228, + 0x79608ae1, 0x798aa742, 0x79b4c748, 0x79deeaf4, + 0x7a091245, 0x7a333d3a, 0x7a5d6bd2, 0x7a879e0e, + 0x7ab1d3ec, 0x7adc0d6b, 0x7b064a8c, 0x7b308b4d, + 0x7b5acfae, 0x7b8517ae, 0x7baf634c, 0x7bd9b289, + 0x7c040563, 0x7c2e5bda, 0x7c58b5ec, 0x7c83139b, + 0x7cad74e4, 0x7cd7d9c7, 0x7d024244, 0x7d2cae5a, + 0x7d571e09, 0x7d81914f, 0x7dac082d, 0x7dd682a1, + 0x7e0100ac, 0x7e2b824b, 0x7e560780, 0x7e809048, + 0x7eab1ca5, 0x7ed5ac94, 0x7f004015, 0x7f2ad729, 0x7f5571cd, 0x7f801003, 0x7faab1c8, 0x7fd5571d }; const Word32 invSBF[24] = { - 0x3FFD34FC, 0x2D3F8000, 0x24F18C7E, 0x1FFE9A7E, - 0x1C9DF10C, 0x1A1F851A, 0x182FE994, 0x169FC000, - 0x15542AAA, 0x143C31C2, 0x134B1B6C, 0x127920BE, - 0x11BF2FCC, 0x111A749E, 0x1085FC42, 0x0FFFA7BE, - 0x0F855818, 0x0F14EE56, 0x0EAE6A78, 0x0E4EF886, + 0x3FFD34FC, 0x2D3F8000, 0x24F18C7E, 0x1FFE9A7E, + 0x1C9DF10C, 0x1A1F851A, 0x182FE994, 0x169FC000, + 0x15542AAA, 0x143C31C2, 0x134B1B6C, 0x127920BE, + 0x11BF2FCC, 0x111A749E, 0x1085FC42, 0x0FFFA7BE, + 0x0F855818, 0x0F14EE56, 0x0EAE6A78, 0x0E4EF886, 0x0DF69880, 0x0DA49568, 0x0D578542, 0x0D101D0C }; @@ -1353,40 +1353,40 @@ const Word16 pow2tominusNover16[17] = { }; const Word16 sideInfoTabLong[MAX_SFB_LONG + 1] = { - 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, + 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }; const Word16 sideInfoTabShort[MAX_SFB_SHORT + 1] = { - 7, 7, 7, 7, 7, 7, 7, 10, 10, + 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10, 10, 10, 13, 13 }; Word32 specExpMantTableComb_enc[4][14] = { - {0x40000000, 0x50a28be6, 0x6597fa95, 0x40000000, - 0x50a28be6, 0x6597fa95, 0x40000000, 0x50a28be6, - 0x6597fa95, 0x40000000, 0x50a28be6, 0x6597fa95, - 0x40000000, 0x50a28be6}, - - {0x4c1bf829, 0x5fe4435e, 0x78d0df9c, 0x4c1bf829, - 0x5fe4435e, 0x78d0df9c, 0x4c1bf829, 0x5fe4435e, - 0x78d0df9c, 0x4c1bf829, 0x5fe4435e, 0x78d0df9c, - 0x4c1bf829, 0x5fe4435e}, - - {0x5a82799a, 0x7208f81d, 0x47d66b0f, 0x5a82799a, - 0x7208f81d, 0x47d66b0f, 0x5a82799a, 0x7208f81d, - 0x47d66b0f, 0x5a82799a, 0x7208f81d, 0x47d66b0f, - 0x5a82799a, 0x7208f81d}, - - {0x6ba27e65, 0x43ce3e4b, 0x556e0424, 0x6ba27e65, - 0x43ce3e4b, 0x556e0424, 0x6ba27e65, 0x43ce3e4b, - 0x556e0424, 0x6ba27e65, 0x43ce3e4b, 0x556e0424, + {0x40000000, 0x50a28be6, 0x6597fa95, 0x40000000, + 0x50a28be6, 0x6597fa95, 0x40000000, 0x50a28be6, + 0x6597fa95, 0x40000000, 0x50a28be6, 0x6597fa95, + 0x40000000, 0x50a28be6}, + + {0x4c1bf829, 0x5fe4435e, 0x78d0df9c, 0x4c1bf829, + 0x5fe4435e, 0x78d0df9c, 0x4c1bf829, 0x5fe4435e, + 0x78d0df9c, 0x4c1bf829, 0x5fe4435e, 0x78d0df9c, + 0x4c1bf829, 0x5fe4435e}, + + {0x5a82799a, 0x7208f81d, 0x47d66b0f, 0x5a82799a, + 0x7208f81d, 0x47d66b0f, 0x5a82799a, 0x7208f81d, + 0x47d66b0f, 0x5a82799a, 0x7208f81d, 0x47d66b0f, + 0x5a82799a, 0x7208f81d}, + + {0x6ba27e65, 0x43ce3e4b, 0x556e0424, 0x6ba27e65, + 0x43ce3e4b, 0x556e0424, 0x6ba27e65, 0x43ce3e4b, + 0x556e0424, 0x6ba27e65, 0x43ce3e4b, 0x556e0424, 0x6ba27e65, 0x43ce3e4b} }; @@ -1417,12 +1417,12 @@ const Word16 quantRecon[4][3] = { }; const int sampRateTab[NUM_SAMPLE_RATES] = { - 96000, 88200, 64000, 48000, 44100, 32000, + 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000 }; -const int rates[8] = { +const int rates[8] = { 160, 240, 320, 400, 480, 560, 640, 0 }; @@ -1507,7 +1507,7 @@ const short sfBandTabLong[325] = { }; /* - these tables are used only for counting and + these tables are used only for counting and are stored in packed format */ const UWord16 huff_ltab1_2[3][3][3][3]= @@ -2260,12 +2260,12 @@ const UWord32 huff_ctabscf[121]= }; const Word32 m_log2_table[INT_BITS] = { - 0x00000000,0x4ae00d00,0x2934f080,0x15c01a3f, - 0x0b31fb80,0x05aeb4e0,0x02dcf2d0,0x016fe50c, + 0x00000000,0x4ae00d00,0x2934f080,0x15c01a3f, + 0x0b31fb80,0x05aeb4e0,0x02dcf2d0,0x016fe50c, 0x00b84e23,0x005c3e10,0x002e24ca,0x001713d6, 0x000b8a47,0x0005c53b,0x0002e2a3,0x00017153, 0x0000b8aa,0x00005c55,0x00002e2b,0x00001715, - 0x00000b8b,0x000005c5,0x000002e3,0x00000171, + 0x00000b8b,0x000005c5,0x000002e3,0x00000171, 0x000000b9,0x0000005c,0x0000002e,0x00000017, 0x0000000c,0x00000006,0x00000003,0x00000001 }; @@ -2344,7 +2344,7 @@ const Word32 tnsCoeff4Borders[16]= }; -const unsigned char bitrevTab[17 + 129] = +const unsigned char bitrevTab[17 + 129] = { /* 64 */ 0x01, 0x08, 0x02, 0x04, 0x03, 0x0c, 0x05, 0x0a, 0x07, 0x0e, 0x0b, 0x0d, 0x00, 0x06, 0x09, 0x0f, diff --git a/media/libstagefright/codecs/aacenc/src/aacenc.c b/media/libstagefright/codecs/aacenc/src/aacenc.c index 975f598..b5e8a9c 100644 --- a/media/libstagefright/codecs/aacenc/src/aacenc.c +++ b/media/libstagefright/codecs/aacenc/src/aacenc.c @@ -48,7 +48,7 @@ VO_U32 VO_API voAACEncInit(VO_HANDLE * phCodec,VO_AUDIO_CODINGTYPE vType, VO_COD interMem = 0; error = 0; - + /* init the memory operator */ if(pUserData == NULL || pUserData->memflag != VO_IMF_USERMEMOPERATOR || pUserData->memData == NULL ) { @@ -113,7 +113,7 @@ VO_U32 VO_API voAACEncInit(VO_HANDLE * phCodec,VO_AUDIO_CODINGTYPE vType, VO_COD { mem_free(pMemOP, hAacEnc, VO_INDEX_ENC_AAC); hAacEnc = NULL; - } + } *phCodec = NULL; return VO_ERR_OUTOF_MEMORY; } @@ -168,9 +168,9 @@ VO_U32 VO_API voAACEncSetInputData(VO_HANDLE hCodec, VO_CODECBUFFER * pInput) { return VO_ERR_INVALID_ARG; } - + hAacEnc = (AAC_ENCODER *)hCodec; - + /* init input pcm buffer and length*/ hAacEnc->inbuf = (short *)pInput->Buffer; hAacEnc->inlen = pInput->Length / sizeof(short); @@ -178,12 +178,12 @@ VO_U32 VO_API voAACEncSetInputData(VO_HANDLE hCodec, VO_CODECBUFFER * pInput) hAacEnc->encbuf = hAacEnc->inbuf; hAacEnc->enclen = hAacEnc->inlen; - + /* rebuild intra pcm buffer and length*/ if(hAacEnc->intlen) { length = min(hAacEnc->config.nChannelsIn*AACENC_BLOCKSIZE - hAacEnc->intlen, hAacEnc->inlen); - hAacEnc->voMemop->Copy(VO_INDEX_ENC_AAC, hAacEnc->intbuf + hAacEnc->intlen, + hAacEnc->voMemop->Copy(VO_INDEX_ENC_AAC, hAacEnc->intbuf + hAacEnc->intlen, hAacEnc->inbuf, length*sizeof(short)); hAacEnc->encbuf = hAacEnc->intbuf; @@ -192,7 +192,7 @@ VO_U32 VO_API voAACEncSetInputData(VO_HANDLE hCodec, VO_CODECBUFFER * pInput) hAacEnc->inbuf += length; hAacEnc->inlen -= length; } - + return VO_ERR_NONE; } @@ -219,11 +219,11 @@ VO_U32 VO_API voAACEncGetOutputData(VO_HANDLE hCodec, VO_CODECBUFFER * pOutput, /* check the input pcm buffer and length*/ if(NULL == hAacEnc->encbuf || hAacEnc->enclen < inbuflen) { - length = hAacEnc->enclen; + length = hAacEnc->enclen; if(hAacEnc->intlen == 0) - { - hAacEnc->voMemop->Copy(VO_INDEX_ENC_AAC, hAacEnc->intbuf, - hAacEnc->encbuf, length*sizeof(short)); + { + hAacEnc->voMemop->Copy(VO_INDEX_ENC_AAC, hAacEnc->intbuf, + hAacEnc->encbuf, length*sizeof(short)); hAacEnc->uselength += length*sizeof(short); } else @@ -236,7 +236,7 @@ VO_U32 VO_API voAACEncGetOutputData(VO_HANDLE hCodec, VO_CODECBUFFER * pOutput, pOutput->Length = 0; if(pOutInfo) pOutInfo->InputUsed = hAacEnc->uselength; - return VO_ERR_INPUT_BUFFER_SMALL; + return VO_ERR_INPUT_BUFFER_SMALL; } /* check the output aac buffer and length*/ @@ -254,7 +254,7 @@ VO_U32 VO_API voAACEncGetOutputData(VO_HANDLE hCodec, VO_CODECBUFFER * pOutput, /* update the input pcm buffer and length*/ if(hAacEnc->intlen) { - length = inbuflen - hAacEnc->intlen; + length = inbuflen - hAacEnc->intlen; hAacEnc->encbuf = hAacEnc->inbuf; hAacEnc->enclen = hAacEnc->inlen; hAacEnc->uselength += length*sizeof(short); @@ -265,7 +265,7 @@ VO_U32 VO_API voAACEncGetOutputData(VO_HANDLE hCodec, VO_CODECBUFFER * pOutput, hAacEnc->encbuf = hAacEnc->encbuf + inbuflen; hAacEnc->enclen = hAacEnc->enclen - inbuflen; hAacEnc->uselength += inbuflen*sizeof(short); - } + } /* update the output aac information */ if(pOutInfo) @@ -287,7 +287,7 @@ VO_U32 VO_API voAACEncGetOutputData(VO_HANDLE hCodec, VO_CODECBUFFER * pOutput, VO_U32 VO_API voAACEncUninit(VO_HANDLE hCodec) { AAC_ENCODER* hAacEnc = (AAC_ENCODER*)hCodec; - + if(NULL != hAacEnc) { /* close the aac encoder */ @@ -296,7 +296,7 @@ VO_U32 VO_API voAACEncUninit(VO_HANDLE hCodec) /* free the aac encoder handle*/ mem_free(hAacEnc->voMemop, hAacEnc, VO_INDEX_ENC_AAC); hAacEnc = NULL; - } + } return VO_ERR_NONE; } @@ -319,7 +319,7 @@ VO_U32 VO_API voAACEncSetParam(VO_HANDLE hCodec, VO_S32 uParamID, VO_PTR pData) if(NULL == hAacEnc) return VO_ERR_INVALID_ARG; - + switch(uParamID) { case VO_PID_AAC_ENCPARAM: /* init aac encoder parameter*/ @@ -354,11 +354,11 @@ VO_U32 VO_API voAACEncSetParam(VO_HANDLE hCodec, VO_S32 uParamID, VO_PTR pData) SampleRateIdx = i; tmp = 441; - if(config.sampleRate%8000 == 0) + if(config.sampleRate%8000 == 0) tmp =480; /* check the bitrate */ if(config.bitRate!=0 && (config.bitRate/config.nChannelsOut < 4000) || - (config.bitRate/config.nChannelsOut > 160000) || + (config.bitRate/config.nChannelsOut > 160000) || (config.bitRate > config.sampleRate*6*config.nChannelsOut)) { config.bitRate = 640*config.sampleRate/tmp*config.nChannelsOut; @@ -385,7 +385,7 @@ VO_U32 VO_API voAACEncSetParam(VO_HANDLE hCodec, VO_S32 uParamID, VO_PTR pData) /* init aac encoder core */ ret = AacEncOpen(hAacEnc, config); - if(ret) + if(ret) return VO_ERR_AUDIO_UNSFEATURE; break; case VO_PID_AUDIO_FORMAT: /* init pcm channel and samplerate*/ @@ -426,7 +426,7 @@ VO_U32 VO_API voAACEncSetParam(VO_HANDLE hCodec, VO_S32 uParamID, VO_PTR pData) /* update the bitrates */ tmp = 441; - if(config.sampleRate%8000 == 0) + if(config.sampleRate%8000 == 0) tmp =480; config.bitRate = 640*config.sampleRate/tmp*config.nChannelsOut; @@ -449,10 +449,10 @@ VO_U32 VO_API voAACEncSetParam(VO_HANDLE hCodec, VO_S32 uParamID, VO_PTR pData) } config.bandWidth = BandwithCoefTab[i][SampleRateIdx]; - + /* init aac encoder core */ ret = AacEncOpen(hAacEnc, config); - if(ret) + if(ret) return VO_ERR_AUDIO_UNSFEATURE; break; default: @@ -483,7 +483,7 @@ VO_S32 VO_API voGetAACEncAPI(VO_AUDIO_CODECAPI * pDecHandle) { if(pDecHandle == NULL) return VO_ERR_INVALID_ARG; - + pDecHandle->Init = voAACEncInit; pDecHandle->SetInputData = voAACEncSetInputData; pDecHandle->GetOutputData = voAACEncGetOutputData; diff --git a/media/libstagefright/codecs/aacenc/src/aacenc_core.c b/media/libstagefright/codecs/aacenc/src/aacenc_core.c index b69a017..2b3bd48 100644 --- a/media/libstagefright/codecs/aacenc/src/aacenc_core.c +++ b/media/libstagefright/codecs/aacenc/src/aacenc_core.c @@ -43,8 +43,8 @@ void AacInitDefaultConfig(AACENC_CONFIG *config) config->adtsUsed = 1; config->nChannelsIn = 2; config->nChannelsOut = 2; - config->bitRate = 128000; - config->bandWidth = 0; + config->bitRate = 128000; + config->bandWidth = 0; } /******************************************************************************** @@ -63,11 +63,11 @@ Word16 AacEncOpen( AAC_ENCODER* hAacEnc, /* pointer to an encoder Word16 profile = 1; ELEMENT_INFO *elInfo = NULL; - + if (hAacEnc==0) { - error=1; + error=1; } - + if (!error) { hAacEnc->config = config; } @@ -83,7 +83,7 @@ Word16 AacEncOpen( AAC_ENCODER* hAacEnc, /* pointer to an encoder if (!error) { /* use or not tns tool for long and short block */ - Word16 tnsMask=3; + Word16 tnsMask=3; /* init encoder psychoacoustic */ error = psyMainInit(&hAacEnc->psyKernel, @@ -107,10 +107,10 @@ Word16 AacEncOpen( AAC_ENCODER* hAacEnc, /* pointer to an encoder qcInit.elInfo = &hAacEnc->elInfo; qcInit.maxBits = (Word16) (MAXBITS_COEF*elInfo->nChannelsInEl); - qcInit.bitRes = qcInit.maxBits; + qcInit.bitRes = qcInit.maxBits; qcInit.averageBits = (Word16) ((config.bitRate * FRAME_LEN_LONG) / config.sampleRate); - qcInit.padding.paddingRest = config.sampleRate; + qcInit.padding.paddingRest = config.sampleRate; qcInit.meanPe = (Word16) ((10 * FRAME_LEN_LONG * hAacEnc->config.bandWidth) / (config.sampleRate>>1)); @@ -118,17 +118,17 @@ Word16 AacEncOpen( AAC_ENCODER* hAacEnc, /* pointer to an encoder qcInit.maxBitFac = (Word16) ((100 * (MAXBITS_COEF-MINBITS_COEF)* elInfo->nChannelsInEl)/ (qcInit.averageBits?qcInit.averageBits:1)); - qcInit.bitrate = config.bitRate; + qcInit.bitrate = config.bitRate; error = QCInit(&hAacEnc->qcKernel, &qcInit); } /* init bitstream encoder */ if (!error) { - hAacEnc->bseInit.nChannels = elInfo->nChannelsInEl; - hAacEnc->bseInit.bitrate = config.bitRate; - hAacEnc->bseInit.sampleRate = config.sampleRate; - hAacEnc->bseInit.profile = profile; + hAacEnc->bseInit.nChannels = elInfo->nChannelsInEl; + hAacEnc->bseInit.bitrate = config.bitRate; + hAacEnc->bseInit.sampleRate = config.sampleRate; + hAacEnc->bseInit.profile = profile; } return error; @@ -152,14 +152,14 @@ Word16 AacEncEncode(AAC_ENCODER *aacEnc, /*!< an encoder handle */ ELEMENT_INFO *elInfo = &aacEnc->elInfo; Word16 globUsedBits; Word16 ancDataBytes, ancDataBytesLeft; - - ancDataBytes = ancDataBytesLeft = *numAncBytes; + + ancDataBytes = ancDataBytesLeft = *numAncBytes; /* init output aac data buffer and length */ aacEnc->hBitStream = CreateBitBuffer(&aacEnc->bitStream, outBytes, *numOutBytes); /* psychoacoustic process */ - psyMain(aacEnc->config.nChannelsOut, + psyMain(aacEnc->config.nChannelsOut, elInfo, timeSignal, &aacEnc->psyKernel.psyData[elInfo->ChannelIndex[0]], @@ -175,9 +175,9 @@ Word16 AacEncEncode(AAC_ENCODER *aacEnc, /*!< an encoder handle */ AdjustBitrate(&aacEnc->qcKernel, aacEnc->config.bitRate, aacEnc->config.sampleRate); - + /* quantization and coding process */ - QCMain(&aacEnc->qcKernel, + QCMain(&aacEnc->qcKernel, &aacEnc->qcKernel.elementBits, &aacEnc->qcKernel.adjThr.adjThrStateElem, &aacEnc->psyOut.psyOutChannel[elInfo->ChannelIndex[0]], @@ -193,11 +193,11 @@ Word16 AacEncEncode(AAC_ENCODER *aacEnc, /*!< an encoder handle */ &aacEnc->qcOut); /* write bitstream process */ - WriteBitstream(aacEnc->hBitStream, + WriteBitstream(aacEnc->hBitStream, *elInfo, &aacEnc->qcOut, &aacEnc->psyOut, - &globUsedBits, + &globUsedBits, ancBytes, aacEnc->psyKernel.sampleRateIdx); @@ -219,7 +219,7 @@ Word16 AacEncEncode(AAC_ENCODER *aacEnc, /*!< an encoder handle */ **********************************************************************************/ void AacEncClose (AAC_ENCODER* hAacEnc, VO_MEM_OPERATOR *pMemOP) { - if (hAacEnc) { + if (hAacEnc) { QCDelete(&hAacEnc->qcKernel, pMemOP); QCOutDelete(&hAacEnc->qcOut, pMemOP); diff --git a/media/libstagefright/codecs/aacenc/src/adj_thr.c b/media/libstagefright/codecs/aacenc/src/adj_thr.c index 83b43a1..c656f65 100644 --- a/media/libstagefright/codecs/aacenc/src/adj_thr.c +++ b/media/libstagefright/codecs/aacenc/src/adj_thr.c @@ -71,7 +71,7 @@ static void calcThreshExp(Word32 thrExp[MAX_CHANNELS][MAX_GROUPED_SFB], Word32 *pthrExp, *psfbThre; for (ch=0; chsfbCnt; sfbGrp+= psyOutChan->sfbPerGroup) + for(sfbGrp = 0; sfbGrp < psyOutChan->sfbCnt; sfbGrp+= psyOutChan->sfbPerGroup) pthrExp = &(thrExp[ch][sfbGrp]); psfbThre = psyOutChan->sfbThreshold + sfbGrp; for (sfb=0; sfbmaxSfbPerGroup; sfb++) { @@ -96,21 +96,21 @@ static void adaptMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], Word32 nSfb, avgEn; Word16 log_avgEn = 0; Word32 startRatio_x_avgEn = 0; - + for (ch=0; chsfbCnt; sfbOffs+=psyOutChan->sfbPerGroup) { for (sfb=0; sfbmaxSfbPerGroup; sfb++) { avgEn = L_add(avgEn, psyOutChan->sfbEnergy[sfbOffs+sfb]); nSfb = nSfb + 1; } } - + if (nSfb > 0) { avgEn = avgEn / nSfb; @@ -118,7 +118,7 @@ static void adaptMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], startRatio_x_avgEn = fixmul(msaParam->startRatio, avgEn); } - + /* reduce minSnr requirement by minSnr^minSnrRed dependent on avgEn/sfbEn */ for (sfbOffs=0; sfbOffssfbCnt; sfbOffs+=psyOutChan->sfbPerGroup) { for (sfb=0; sfbmaxSfbPerGroup; sfb++) { @@ -126,22 +126,22 @@ static void adaptMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], Word16 dbRatio, minSnrRed; Word32 snrRed; Word16 newMinSnr; - + dbRatio = log_avgEn - logSfbEnergy[ch][sfbOffs+sfb]; dbRatio = dbRatio + (dbRatio << 1); minSnrRed = 110 - ((dbRatio + (dbRatio << 1)) >> 2); - minSnrRed = max(minSnrRed, 20); /* 110: (0.375(redOffs)+1)*80, + minSnrRed = max(minSnrRed, 20); /* 110: (0.375(redOffs)+1)*80, 3: 0.00375(redRatioFac)*80 20: 0.25(maxRed) * 80 */ - snrRed = minSnrRed * iLog4((psyOutChan->sfbMinSnr[sfbOffs+sfb] << 16)); - /* + snrRed = minSnrRed * iLog4((psyOutChan->sfbMinSnr[sfbOffs+sfb] << 16)); + /* snrRedI si now scaled by 80 (minSnrRed) and 4 (ffr_iLog4) */ - + newMinSnr = round16(pow2_xy(snrRed,80*4)); - + psyOutChan->sfbMinSnr[sfbOffs+sfb] = min(newMinSnr, minSnrLimit); } } @@ -169,7 +169,7 @@ static void initAvoidHoleFlag(Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], for (ch=0; chwindowSequence != SHORT_WINDOW) { for(sfbGrp = 0;sfbGrp < psyOutChan->sfbCnt;sfbGrp+= psyOutChan->sfbPerGroup){ psfbSpreadEn = psyOutChan->sfbSpreadedEnergy + sfbGrp; @@ -194,7 +194,7 @@ static void initAvoidHoleFlag(Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], if (ahParam->modifyMinSnr) { for(ch=0; chwindowSequence != SHORT_WINDOW) threshold = HOLE_THR_LONG; else @@ -204,39 +204,39 @@ static void initAvoidHoleFlag(Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], Word16 *psfbMinSnr = psyOutChan->sfbMinSnr + sfbGrp; for (sfb=0; sfbmaxSfbPerGroup; sfb++) { Word32 sfbEn, sfbEnm1, sfbEnp1, avgEn; - + if (sfb > 0) sfbEnm1 = psyOutChan->sfbEnergy[sfbGrp+sfb-1]; else sfbEnm1 = psyOutChan->sfbEnergy[sfbGrp]; - + if (sfb < (psyOutChan->maxSfbPerGroup-1)) sfbEnp1 = psyOutChan->sfbEnergy[sfbGrp+sfb+1]; else sfbEnp1 = psyOutChan->sfbEnergy[sfbGrp+sfb]; avgEn = (sfbEnm1 + sfbEnp1) >> 1; - sfbEn = psyOutChan->sfbEnergy[sfbGrp+sfb]; - + sfbEn = psyOutChan->sfbEnergy[sfbGrp+sfb]; + if (sfbEn > avgEn && avgEn > 0) { Word32 tmpMinSnr; shift = norm_l(sfbEn); tmpMinSnr = Div_32(L_mpy_ls(avgEn, minSnrLimit) << shift, sfbEn << shift ); - tmpMinSnr = max(tmpMinSnr, HOLE_THR_LONG); + tmpMinSnr = max(tmpMinSnr, HOLE_THR_LONG); tmpMinSnr = max(tmpMinSnr, threshold); *psfbMinSnr = min(*psfbMinSnr, tmpMinSnr); } /* valley ? */ - + if ((sfbEn < (avgEn >> 1)) && (sfbEn > 0)) { Word32 tmpMinSnr; - Word32 minSnrEn = L_mpy_wx(avgEn, *psfbMinSnr); - + Word32 minSnrEn = L_mpy_wx(avgEn, *psfbMinSnr); + if(minSnrEn < sfbEn) { shift = norm_l(sfbEn); tmpMinSnr = Div_32( minSnrEn << shift, sfbEn<sfbEnergy[sfb]; Word32 sfbEnS = psyOutChanS->sfbEnergy[sfb]; Word32 maxSfbEn = max(sfbEnM, sfbEnS); - Word32 maxThr = L_mpy_wx(maxSfbEn, psyOutChanM->sfbMinSnr[sfb]) >> 1; - + Word32 maxThr = L_mpy_wx(maxSfbEn, psyOutChanM->sfbMinSnr[sfb]) >> 1; + if(maxThr >= sfbEnM) { - psyOutChanM->sfbMinSnr[sfb] = MAX_16; + psyOutChanM->sfbMinSnr[sfb] = MAX_16; } else { - shift = norm_l(sfbEnM); - psyOutChanM->sfbMinSnr[sfb] = min(max(psyOutChanM->sfbMinSnr[sfb], + shift = norm_l(sfbEnM); + psyOutChanM->sfbMinSnr[sfb] = min(max(psyOutChanM->sfbMinSnr[sfb], round16(Div_32(maxThr<= sfbEnS) { psyOutChanS->sfbMinSnr[sfb] = MAX_16; } else { shift = norm_l(sfbEnS); - psyOutChanS->sfbMinSnr[sfb] = min(max(psyOutChanS->sfbMinSnr[sfb], + psyOutChanS->sfbMinSnr[sfb] = min(max(psyOutChanS->sfbMinSnr[sfb], round16(Div_32(maxThr << shift, sfbEnS << shift))), minSnrLimit); } - + if (sfbEnM > psyOutChanM->sfbSpreadedEnergy[sfb]) psyOutChanS->sfbSpreadedEnergy[sfb] = L_mpy_ls(sfbEnS, MS_THRSPREAD_COEF); - + if (sfbEnS > psyOutChanS->sfbSpreadedEnergy[sfb]) psyOutChanM->sfbSpreadedEnergy[sfb] = L_mpy_ls(sfbEnM, MS_THRSPREAD_COEF); } @@ -297,7 +297,7 @@ static void initAvoidHoleFlag(Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], for(sfbGrp = 0;sfbGrp < psyOutChan->sfbCnt;sfbGrp+= psyOutChan->sfbPerGroup){ Word16 *pahFlag = ahFlag[ch] + sfbGrp; for (sfb=0; sfbmaxSfbPerGroup; sfb++) { - + if ((psyOutChan->sfbSpreadedEnergy[sfbGrp+sfb] > psyOutChan->sfbEnergy[sfbGrp+sfb]) || (psyOutChan->sfbEnergy[sfbGrp+sfb] <= psyOutChan->sfbThreshold[sfbGrp+sfb]) || (psyOutChan->sfbMinSnr[sfbGrp+sfb] == MAX_16)) { @@ -308,7 +308,7 @@ static void initAvoidHoleFlag(Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], } } for (sfb=psyOutChan->maxSfbPerGroup; sfbsfbPerGroup; sfb++) { - *pahFlag++ = NO_AH; + *pahFlag++ = NO_AH; } } } @@ -331,15 +331,15 @@ static void calcPeNoAH(Word16 *pe, Word16 ch, sfb, sfbGrp; int ipe, iconstPart, inActiveLines; - ipe = 0; - iconstPart = 0; - inActiveLines = 0; + ipe = 0; + iconstPart = 0; + inActiveLines = 0; for(ch=0; chpeChannelData[ch]; for(sfbGrp = 0;sfbGrp < psyOutChan->sfbCnt;sfbGrp+= psyOutChan->sfbPerGroup){ for (sfb=0; sfbmaxSfbPerGroup; sfb++) { - + if (ahFlag[ch][sfbGrp+sfb] < AH_ACTIVE) { ipe = ipe + peChanData->sfbPe[sfbGrp+sfb]; iconstPart = iconstPart + peChanData->sfbConstPart[sfbGrp+sfb]; @@ -349,9 +349,9 @@ static void calcPeNoAH(Word16 *pe, } } - *pe = saturate(ipe); - *constPart = saturate(iconstPart); - *nActiveLines = saturate(inActiveLines); + *pe = saturate(ipe); + *constPart = saturate(iconstPart); + *nActiveLines = saturate(inActiveLines); } /******************************************************************************** @@ -367,16 +367,16 @@ static void reduceThresholds(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], const Word32 redVal) { Word32 sfbThrReduced; - Word32 *psfbEn, *psfbThr; + Word32 *psfbEn, *psfbThr; Word16 ch, sfb, sfbGrp; for(ch=0; chsfbCnt; sfbGrp+=psyOutChan->sfbPerGroup) { - psfbEn = psyOutChan->sfbEnergy + sfbGrp; + psfbEn = psyOutChan->sfbEnergy + sfbGrp; psfbThr = psyOutChan->sfbThreshold + sfbGrp; for (sfb=0; sfbmaxSfbPerGroup; sfb++) { - + if (*psfbEn > *psfbThr) { /* threshold reduction formula */ Word32 tmp = thrExp[ch][sfbGrp+sfb] + redVal; @@ -384,11 +384,11 @@ static void reduceThresholds(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], sfbThrReduced = fixmul(tmp, tmp); /* avoid holes */ tmp = L_mpy_ls(*psfbEn, psyOutChan->sfbMinSnr[sfbGrp+sfb]); - - if ((sfbThrReduced > tmp) && + + if ((sfbThrReduced > tmp) && (ahFlag[ch][sfbGrp+sfb] != NO_AH)){ sfbThrReduced = max(tmp, *psfbThr); - ahFlag[ch][sfbGrp+sfb] = AH_ACTIVE; + ahFlag[ch][sfbGrp+sfb] = AH_ACTIVE; } *psfbThr = sfbThrReduced; } @@ -426,7 +426,7 @@ static void correctThresh(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], Word32 sfbThrReduced; /* for each sfb calc relative factors for pe changes */ - normFactor = 1; + normFactor = 1; for(ch=0; chpeChannelData[ch]; @@ -436,22 +436,22 @@ static void correctThresh(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], pahFlag = ahFlag[ch] + sfbGrp; for (sfb=0; sfbmaxSfbPerGroup; sfb++) { Word32 redThrExp = thrExp[ch][sfbGrp+sfb] + redVal; - + if (((*pahFlag < AH_ACTIVE) || (deltaPe > 0)) && (redThrExp > 0) ) { - + *psfbPeFactors = (*psfbNActiveLines) * (0x7fffffff / redThrExp); normFactor = L_add(normFactor, *psfbPeFactors); } else { - *psfbPeFactors = 0; + *psfbPeFactors = 0; } - psfbPeFactors++; + psfbPeFactors++; pahFlag++; psfbNActiveLines++; } } } - + /* calculate new thresholds */ for(ch=0; ch 0) { /* new threshold */ Word32 thrFactor; @@ -476,7 +476,7 @@ static void correctThresh(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], reduce threshold */ thrFactor = pow2_xy(L_negate(deltaSfbPe), (normFactor* (*psfbNActiveLines))); - + sfbThrReduced = L_mpy_ls(sfbThr, round16(thrFactor)); } else { @@ -484,28 +484,28 @@ static void correctThresh(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], increase threshold */ thrFactor = pow2_xy(deltaSfbPe, (normFactor * (*psfbNActiveLines))); - - + + if(thrFactor > sfbThr) { shift = norm_l(thrFactor); sfbThrReduced = Div_32( sfbThr << shift, thrFactor<sfbMinSnr[sfbGrp+sfb]); - + if ((sfbThrReduced > sfbEn) && (*pahFlag == AH_INACTIVE)) { sfbThrReduced = max(sfbEn, sfbThr); - *pahFlag = AH_ACTIVE; + *pahFlag = AH_ACTIVE; } - psyOutChan->sfbThreshold[sfbGrp+sfb] = sfbThrReduced; + psyOutChan->sfbThreshold[sfbGrp+sfb] = sfbThrReduced; } pahFlag++; psfbNActiveLines++; psfbPeFactors++; @@ -521,8 +521,8 @@ static void correctThresh(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], * description: if the desired pe can not be reached, reduce pe by reducing minSnr * **********************************************************************************/ -static void reduceMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], - PE_DATA *peData, +static void reduceMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], + PE_DATA *peData, Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], const Word16 nChannels, const Word16 desiredPe) @@ -531,9 +531,9 @@ static void reduceMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], Word16 deltaPe; /* start at highest freq down to 0 */ - sfbSubWin = psyOutChannel[0].maxSfbPerGroup; + sfbSubWin = psyOutChannel[0].maxSfbPerGroup; while (peData->pe > desiredPe && sfbSubWin > 0) { - + sfbSubWin = sfbSubWin - 1; /* loop over all subwindows */ for (sfb=sfbSubWin; sfbpeChannelData; PSY_OUT_CHANNEL* psyOutCh = psyOutChannel; - for (ch=0; chsfbMinSnr[sfb] < minSnrLimit) { - psyOutCh->sfbMinSnr[sfb] = minSnrLimit; + psyOutCh->sfbMinSnr[sfb] = minSnrLimit; psyOutCh->sfbThreshold[sfb] = L_mpy_ls(psyOutCh->sfbEnergy[sfb], psyOutCh->sfbMinSnr[sfb]); @@ -552,12 +552,12 @@ static void reduceMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], deltaPe = ((peChan->sfbNLines4[sfb] + (peChan->sfbNLines4[sfb] >> 1)) >> 2) - peChan->sfbPe[sfb]; peData->pe = peData->pe + deltaPe; - peChan->pe = peChan->pe + deltaPe; + peChan->pe = peChan->pe + deltaPe; } peChan += 1; psyOutCh += 1; } /* stop if enough has been saved */ - + if (peData->pe <= desiredPe) break; } @@ -567,13 +567,13 @@ static void reduceMinSnr(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], /******************************************************************************** * * function name:allowMoreHoles -* description: if the desired pe can not be reached, some more scalefactor bands +* description: if the desired pe can not be reached, some more scalefactor bands * have to be quantized to zero * **********************************************************************************/ -static void allowMoreHoles(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], +static void allowMoreHoles(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], PSY_OUT_ELEMENT *psyOutElement, - PE_DATA *peData, + PE_DATA *peData, Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB], const AH_PARAM *ahParam, const Word16 nChannels, @@ -582,46 +582,46 @@ static void allowMoreHoles(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], Word16 ch, sfb; Word16 actPe, shift; - actPe = peData->pe; + actPe = peData->pe; /* for MS allow hole in the channel with less energy */ - + if (nChannels==2 && psyOutChannel[0].windowSequence==psyOutChannel[1].windowSequence) { PSY_OUT_CHANNEL *psyOutChanL = &psyOutChannel[0]; PSY_OUT_CHANNEL *psyOutChanR = &psyOutChannel[1]; for (sfb=0; sfbsfbCnt; sfb++) { Word32 minEn; - + if (psyOutElement->toolsInfo.msMask[sfb]) { /* allow hole in side channel ? */ minEn = L_mpy_ls(psyOutChanL->sfbEnergy[sfb], (minSnrLimit * psyOutChanL->sfbMinSnr[sfb]) >> 16); - + if (ahFlag[1][sfb] != NO_AH && minEn > psyOutChanR->sfbEnergy[sfb]) { - ahFlag[1][sfb] = NO_AH; + ahFlag[1][sfb] = NO_AH; psyOutChanR->sfbThreshold[sfb] = L_add(psyOutChanR->sfbEnergy[sfb], psyOutChanR->sfbEnergy[sfb]); actPe = actPe - peData->peChannelData[1].sfbPe[sfb]; } /* allow hole in mid channel ? */ else { minEn = L_mpy_ls(psyOutChanR->sfbEnergy[sfb], (minSnrLimit * psyOutChanR->sfbMinSnr[sfb]) >> 16); - + if (ahFlag[0][sfb]!= NO_AH && minEn > psyOutChanL->sfbEnergy[sfb]) { - ahFlag[0][sfb] = NO_AH; + ahFlag[0][sfb] = NO_AH; psyOutChanL->sfbThreshold[sfb] = L_add(psyOutChanL->sfbEnergy[sfb], psyOutChanL->sfbEnergy[sfb]); actPe = actPe - peData->peChannelData[0].sfbPe[sfb]; } } - + if (actPe < desiredPe) break; } } } - /* subsequently erase bands */ + /* subsequently erase bands */ if (actPe > desiredPe) { Word16 startSfb[2]; Word32 avgEn, minEn; @@ -634,20 +634,20 @@ static void allowMoreHoles(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], /* do not go below startSfb */ for (ch=0; chstartSfbL; else startSfb[ch] = ahParam->startSfbS; } - avgEn = 0; - minEn = MAX_32; - ahCnt = 0; + avgEn = 0; + minEn = MAX_32; + ahCnt = 0; for (ch=0; chsfbCnt; sfb++) { - + if ((ahFlag[ch][sfb] != NO_AH) && (psyOutChan->sfbEnergy[sfb] > psyOutChan->sfbThreshold[sfb])) { minEn = min(minEn, psyOutChan->sfbEnergy[sfb]); @@ -656,7 +656,7 @@ static void allowMoreHoles(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], } } } - + if(ahCnt) { Word32 iahCnt; shift = norm_l(ahCnt); @@ -674,46 +674,46 @@ static void allowMoreHoles(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], /* start with lowest energy border at highest sfb */ maxSfb = psyOutChannel[0].sfbCnt - 1; - minSfb = startSfb[0]; - + minSfb = startSfb[0]; + if (nChannels == 2) { maxSfb = max(maxSfb, (psyOutChannel[1].sfbCnt - 1)); minSfb = min(minSfb, startSfb[1]); } - sfb = maxSfb; - enIdx = 0; - done = 0; + sfb = maxSfb; + enIdx = 0; + done = 0; while (!done) { - + for (ch=0; ch=startSfb[ch] && sfbsfbCnt) { /* sfb energy below border ? */ - + if (ahFlag[ch][sfb] != NO_AH && psyOutChan->sfbEnergy[sfb] < en[enIdx]){ /* allow hole */ - ahFlag[ch][sfb] = NO_AH; + ahFlag[ch][sfb] = NO_AH; psyOutChan->sfbThreshold[sfb] = L_add(psyOutChan->sfbEnergy[sfb], psyOutChan->sfbEnergy[sfb]); actPe = actPe - peData->peChannelData[ch].sfbPe[sfb]; } - + if (actPe < desiredPe) { - done = 1; + done = 1; break; } } } sfb = sfb - 1; - + if (sfb < minSfb) { /* restart with next energy border */ - sfb = maxSfb; + sfb = maxSfb; enIdx = enIdx + 1; - + if (enIdx - 4 >= 0) - done = 1; + done = 1; } } } @@ -748,13 +748,13 @@ static void adaptThresholdsToPe(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], initAvoidHoleFlag(peData->ahFlag, psyOutChannel, psyOutElement, nChannels, ahParam); - noRedPe = peData->pe; - constPart = peData->constPart; - nActiveLines = peData->nActiveLines; + noRedPe = peData->pe; + constPart = peData->constPart; + nActiveLines = peData->nActiveLines; /* first guess of reduction value t^0.25 = 2^((a-pen)/4*b) */ avgThrExp = pow2_xy((constPart - noRedPe), (nActiveLines << 2)); - + /* r1 = 2^((a-per)/4*b) - t^0.25 */ redVal = pow2_xy((constPart - desiredPe), (nActiveLines << 2)) - avgThrExp; @@ -763,40 +763,40 @@ static void adaptThresholdsToPe(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], /* pe after first guess */ calcSfbPe(peData, psyOutChannel, nChannels); - redPe = peData->pe; + redPe = peData->pe; - iter = 0; + iter = 0; do { /* pe for bands where avoid hole is inactive */ calcPeNoAH(&redPeNoAH, &constPartNoAH, &nActiveLinesNoAH, peData, peData->ahFlag, psyOutChannel, nChannels); desiredPeNoAH = desiredPe -(redPe - redPeNoAH); - + if (desiredPeNoAH < 0) { - desiredPeNoAH = 0; + desiredPeNoAH = 0; } /* second guess */ - + if (nActiveLinesNoAH > 0) { - + avgThrExp = pow2_xy((constPartNoAH - redPeNoAH), (nActiveLinesNoAH << 2)); - + redVal = (redVal + pow2_xy((constPartNoAH - desiredPeNoAH), (nActiveLinesNoAH << 2))) - avgThrExp; - + /* reduce thresholds */ reduceThresholds(psyOutChannel, peData->ahFlag, peData->thrExp, nChannels, redVal); } calcSfbPe(peData, psyOutChannel, nChannels); - redPe = peData->pe; + redPe = peData->pe; iter = iter+1; - + } while ((20 * abs_s(redPe - desiredPe) > desiredPe) && (iter < 2)); - + if ((100 * redPe < 115 * desiredPe)) { correctThresh(psyOutChannel, peData->ahFlag, peData, peData->thrExp, redVal, nChannels, desiredPe - redPe); @@ -863,7 +863,7 @@ static Word16 calcBitSpend(Word16 fillLevel, if(clipHigh-clipLow) bitspend = (minBitSpend + ((maxBitSpend - minBitSpend)*(fillLevel - clipLow) / (clipHigh-clipLow))); - + return (bitspend); } @@ -884,19 +884,19 @@ static void adjustPeMinMax(const Word16 currPe, Word16 minFacHi, maxFacHi, minFacLo, maxFacLo; Word16 diff; Word16 minDiff = extract_l(currPe / 6); - minFacHi = 30; - maxFacHi = 100; - minFacLo = 14; - maxFacLo = 7; + minFacHi = 30; + maxFacHi = 100; + minFacLo = 14; + maxFacLo = 7; diff = currPe - *peMax ; - + if (diff > 0) { *peMin = *peMin + ((diff * minFacHi) / 100); *peMax = *peMax + ((diff * maxFacHi) / 100); } else { diff = *peMin - currPe; - + if (diff > 0) { *peMin = *peMin - ((diff * minFacLo) / 100); *peMax = *peMax - ((diff * maxFacLo) / 100); @@ -906,7 +906,7 @@ static void adjustPeMinMax(const Word16 currPe, } } - + if ((*peMax - *peMin) < minDiff) { Word16 partLo, partHi; @@ -969,7 +969,7 @@ static Word16 bitresCalcBitFac( const Word16 bitresBits, (adjThrChan->peMax - adjThrChan->peMin)); else bitresFac = 0x7fff; - + bitresFac = min(bitresFac, (100-30 + extract_l((100 * bitresBits) / avgBits))); @@ -995,23 +995,23 @@ void AdjThrInit(ADJ_THR_STATE *hAdjThr, /* common for all elements: */ /* parameters for bitres control */ - hAdjThr->bresParamLong.clipSaveLow = 20; - hAdjThr->bresParamLong.clipSaveHigh = 95; - hAdjThr->bresParamLong.minBitSave = -5; - hAdjThr->bresParamLong.maxBitSave = 30; - hAdjThr->bresParamLong.clipSpendLow = 20; - hAdjThr->bresParamLong.clipSpendHigh = 95; - hAdjThr->bresParamLong.minBitSpend = -10; - hAdjThr->bresParamLong.maxBitSpend = 40; - - hAdjThr->bresParamShort.clipSaveLow = 20; - hAdjThr->bresParamShort.clipSaveHigh = 75; - hAdjThr->bresParamShort.minBitSave = 0; - hAdjThr->bresParamShort.maxBitSave = 20; - hAdjThr->bresParamShort.clipSpendLow = 20; - hAdjThr->bresParamShort.clipSpendHigh = 75; - hAdjThr->bresParamShort.minBitSpend = -5; - hAdjThr->bresParamShort.maxBitSpend = 50; + hAdjThr->bresParamLong.clipSaveLow = 20; + hAdjThr->bresParamLong.clipSaveHigh = 95; + hAdjThr->bresParamLong.minBitSave = -5; + hAdjThr->bresParamLong.maxBitSave = 30; + hAdjThr->bresParamLong.clipSpendLow = 20; + hAdjThr->bresParamLong.clipSpendHigh = 95; + hAdjThr->bresParamLong.minBitSpend = -10; + hAdjThr->bresParamLong.maxBitSpend = 40; + + hAdjThr->bresParamShort.clipSaveLow = 20; + hAdjThr->bresParamShort.clipSaveHigh = 75; + hAdjThr->bresParamShort.minBitSave = 0; + hAdjThr->bresParamShort.maxBitSave = 20; + hAdjThr->bresParamShort.clipSpendLow = 20; + hAdjThr->bresParamShort.clipSpendHigh = 75; + hAdjThr->bresParamShort.minBitSpend = -5; + hAdjThr->bresParamShort.maxBitSpend = 50; /* specific for each element: */ @@ -1020,7 +1020,7 @@ void AdjThrInit(ADJ_THR_STATE *hAdjThr, atsElem->peMax = extract_l(((120*meanPe) / 100)); /* additional pe offset to correct pe2bits for low bitrates */ - atsElem->peOffset = 0; + atsElem->peOffset = 0; if (chBitrate < 32000) { atsElem->peOffset = max(50, (100 - extract_l((100 * chBitrate) / 32000))); } @@ -1039,24 +1039,24 @@ void AdjThrInit(ADJ_THR_STATE *hAdjThr, /* minSnr adaptation */ /* maximum reduction of minSnr goes down to minSnr^maxRed */ - msaParam->maxRed = 0x20000000; /* *0.25f / + msaParam->maxRed = 0x20000000; /* *0.25f / /* start adaptation of minSnr for avgEn/sfbEn > startRatio */ - msaParam->startRatio = 0x0ccccccd; /* 10 */ + msaParam->startRatio = 0x0ccccccd; /* 10 */ /* maximum minSnr reduction to minSnr^maxRed is reached for avgEn/sfbEn >= maxRatio */ - msaParam->maxRatio = 0x0020c49c; /* 1000 */ + msaParam->maxRatio = 0x0020c49c; /* 1000 */ /* helper variables to interpolate minSnr reduction for avgEn/sfbEn between startRatio and maxRatio */ - msaParam->redRatioFac = 0xfb333333; /* -0.75/20 */ + msaParam->redRatioFac = 0xfb333333; /* -0.75/20 */ + + msaParam->redOffs = 0x30000000; /* msaParam->redRatioFac * 10*log10(msaParam->startRatio) */ - msaParam->redOffs = 0x30000000; /* msaParam->redRatioFac * 10*log10(msaParam->startRatio) */ - /* pe correction */ - atsElem->peLast = 0; - atsElem->dynBitsLast = 0; - atsElem->peCorrectionFactor = 100; /* 1.0 */ + atsElem->peLast = 0; + atsElem->dynBitsLast = 0; + atsElem->peCorrectionFactor = 100; /* 1.0 */ } @@ -1069,20 +1069,20 @@ void AdjThrInit(ADJ_THR_STATE *hAdjThr, *****************************************************************************/ static void calcPeCorrection(Word16 *correctionFac, const Word16 peAct, - const Word16 peLast, - const Word16 bitsLast) + const Word16 peLast, + const Word16 bitsLast) { Word32 peAct100 = 100 * peAct; Word32 peLast100 = 100 * peLast; Word16 peBitsLast = bits2pe(bitsLast); - + if ((bitsLast > 0) && (peAct100 < (150 * peLast)) && (peAct100 > (70 * peLast)) && ((120 * peBitsLast) > peLast100 ) && (( 65 * peBitsLast) < peLast100)) { Word16 newFac = (100 * peLast) / peBitsLast; /* dead zone */ - + if (newFac < 100) { newFac = min(((110 * newFac) / 100), 100); newFac = max(newFac, 85); @@ -1091,13 +1091,13 @@ static void calcPeCorrection(Word16 *correctionFac, newFac = max(((90 * newFac) / 100), 100); newFac = min(newFac, 115); } - + if ((newFac > 100 && *correctionFac < 100) || (newFac < 100 && *correctionFac > 100)) { - *correctionFac = 100; + *correctionFac = 100; } /* faster adaptation towards 1.0, slower in the other direction */ - + if ((*correctionFac < 100 && newFac < *correctionFac) || (*correctionFac > 100 && newFac > *correctionFac)) *correctionFac = (85 * *correctionFac + 15 * newFac) / 100; @@ -1107,7 +1107,7 @@ static void calcPeCorrection(Word16 *correctionFac, *correctionFac = max(*correctionFac, 85); } else { - *correctionFac = 100; + *correctionFac = 100; } } @@ -1123,40 +1123,40 @@ void AdjustThresholds(ADJ_THR_STATE *adjThrState, PSY_OUT_ELEMENT *psyOutElement, Word16 *chBitDistribution, Word16 logSfbEnergy[MAX_CHANNELS][MAX_GROUPED_SFB], - Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB], + Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB], QC_OUT_ELEMENT *qcOE, ELEMENT_BITS *elBits, const Word16 nChannels, const Word16 maxBitFac) { - PE_DATA peData; + PE_DATA peData; Word16 noRedPe, grantedPe, grantedPeCorr; Word16 curWindowSequence; Word16 bitFactor; Word16 avgBits = (elBits->averageBits - (qcOE->staticBitsUsed + qcOE->ancBitsUsed)); - Word16 bitresBits = elBits->bitResLevel; + Word16 bitresBits = elBits->bitResLevel; Word16 maxBitresBits = elBits->maxBits; Word16 sideInfoBits = (qcOE->staticBitsUsed + qcOE->ancBitsUsed); Word16 ch; - + prepareSfbPe(&peData, psyOutChannel, logSfbEnergy, sfbNRelevantLines, nChannels, AdjThrStateElement->peOffset); - + /* pe without reduction */ calcSfbPe(&peData, psyOutChannel, nChannels); - noRedPe = peData.pe; + noRedPe = peData.pe; - curWindowSequence = LONG_WINDOW; - + curWindowSequence = LONG_WINDOW; + if (nChannels == 2) { - + if ((psyOutChannel[0].windowSequence == SHORT_WINDOW) || (psyOutChannel[1].windowSequence == SHORT_WINDOW)) { - curWindowSequence = SHORT_WINDOW; + curWindowSequence = SHORT_WINDOW; } } else { - curWindowSequence = psyOutChannel[0].windowSequence; + curWindowSequence = psyOutChannel[0].windowSequence; } @@ -1170,13 +1170,13 @@ void AdjustThresholds(ADJ_THR_STATE *adjThrState, grantedPe = ((bitFactor * bits2pe(avgBits)) / 100); /* correction of pe value */ - calcPeCorrection(&(AdjThrStateElement->peCorrectionFactor), + calcPeCorrection(&(AdjThrStateElement->peCorrectionFactor), min(grantedPe, noRedPe), - AdjThrStateElement->peLast, + AdjThrStateElement->peLast, AdjThrStateElement->dynBitsLast); grantedPeCorr = (grantedPe * AdjThrStateElement->peCorrectionFactor) / 100; - + if (grantedPeCorr < noRedPe && noRedPe > peData.offset) { /* calc threshold necessary for desired pe */ adaptThresholdsToPe(psyOutChannel, @@ -1192,8 +1192,8 @@ void AdjustThresholds(ADJ_THR_STATE *adjThrState, /* calculate relative distribution */ for (ch=0; ch 0) { Word32 temp = 1000 - (nChannels * 200); chBitDistribution[ch] = chBitDistribution[ch] + @@ -1202,10 +1202,10 @@ void AdjustThresholds(ADJ_THR_STATE *adjThrState, } /* store pe */ - qcOE->pe = noRedPe; + qcOE->pe = noRedPe; /* update last pe */ - AdjThrStateElement->peLast = grantedPe; + AdjThrStateElement->peLast = grantedPe; } /******************************************************************************** @@ -1217,7 +1217,7 @@ void AdjustThresholds(ADJ_THR_STATE *adjThrState, void AdjThrUpdate(ATS_ELEMENT *AdjThrStateElement, const Word16 dynBitsUsed) { - AdjThrStateElement->dynBitsLast = dynBitsUsed; + AdjThrStateElement->dynBitsLast = dynBitsUsed; } diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/AutoCorrelation_v5.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/AutoCorrelation_v5.s index e0885f1..e705197 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/AutoCorrelation_v5.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/AutoCorrelation_v5.s @@ -22,34 +22,34 @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - .section .text + .section .text .global AutoCorrelation AutoCorrelation: stmdb sp!, {r4 - r11, lr} - sub r13, r13, #20 + sub r13, r13, #20 - mov r5, r0 - mov r7, r1 - mov r9, r3 - mov r2, r2, lsl #16 - mov r0, #0 - mov r4, r2, asr #16 - mov r8, #0 - cmp r4, #0 - ble L136 - - cmp r4, #8 - mov r2, #0 - blt L133 + mov r5, r0 + mov r7, r1 + mov r9, r3 + mov r2, r2, lsl #16 + mov r0, #0 + mov r4, r2, asr #16 + mov r8, #0 + cmp r4, #0 + ble L136 - sub r12, r4, #8 -L132: - ldr r6, [r5, r2] + cmp r4, #8 + mov r2, #0 + blt L133 + + sub r12, r4, #8 +L132: + ldr r6, [r5, r2] add r2, r2, #4 smulbb r3, r6, r6 - ldr r1, [r5, r2] + ldr r1, [r5, r2] smultt r10, r6, r6 mov r3, r3, asr #9 smulbb r6, r1, r1 @@ -72,95 +72,95 @@ L132: add r8, r8, #6 qadd r0, r0, r6 - cmp r8, r12 - blt L132 -L133: - ldrsh r6, [r5, r2] - mul r10, r6, r6 - add r2, r2, #2 - mov r1, r10, asr #9 + cmp r8, r12 + blt L132 +L133: + ldrsh r6, [r5, r2] + mul r10, r6, r6 + add r2, r2, #2 + mov r1, r10, asr #9 qadd r0, r0, r1 -L134: - add r8, r8, #1 - cmp r8, r4 - blt L133 -L135: -L136: - str r0, [r7, #0] - cmp r0, #0 - beq L1320 -L137: - mov r2, r9, lsl #16 - mov r8, #1 - mov r2, r2, asr #16 - cmp r2, #1 - ble L1319 -L138: -L139: - sub r4, r4, #1 - mov r14, #0 - mov r3, #0 - cmp r4, #0 - ble L1317 -L1310: - cmp r4, #6 - addlt r6, r5, r8, lsl #1 - blt L1314 -L1311: - add r6, r5, r8, lsl #1 - sub r12, r4, #6 - str r8, [r13, #8] - str r7, [r13, #4] -L1312: - mov r1, r3, lsl #1 - ldrsh r7, [r6, r1] - ldrsh r10, [r5, r1] - add r8, r1, r6 - add r9, r5, r1 +L134: + add r8, r8, #1 + cmp r8, r4 + blt L133 +L135: +L136: + str r0, [r7, #0] + cmp r0, #0 + beq L1320 +L137: + mov r2, r9, lsl #16 + mov r8, #1 + mov r2, r2, asr #16 + cmp r2, #1 + ble L1319 +L138: +L139: + sub r4, r4, #1 + mov r14, #0 + mov r3, #0 + cmp r4, #0 + ble L1317 +L1310: + cmp r4, #6 + addlt r6, r5, r8, lsl #1 + blt L1314 +L1311: + add r6, r5, r8, lsl #1 + sub r12, r4, #6 + str r8, [r13, #8] + str r7, [r13, #4] +L1312: + mov r1, r3, lsl #1 + ldrsh r7, [r6, r1] + ldrsh r10, [r5, r1] + add r8, r1, r6 + add r9, r5, r1 mul r7, r10, r7 - ldrsh r1, [r8, #2] - ldrsh r10, [r8, #4] - add r7, r14, r7, asr #9 - ldrsh r0, [r9, #2] - ldrsh r11, [r9, #4] - mul r1, r0, r1 - ldrsh r14, [r8, #6] - mul r10, r11, r10 - add r7, r7, r1, asr #9 - ldrsh r8, [r8, #8] + ldrsh r1, [r8, #2] + ldrsh r10, [r8, #4] + add r7, r14, r7, asr #9 + ldrsh r0, [r9, #2] + ldrsh r11, [r9, #4] + mul r1, r0, r1 + ldrsh r14, [r8, #6] + mul r10, r11, r10 + add r7, r7, r1, asr #9 + ldrsh r8, [r8, #8] add r3, r3, #5 - ldrsh r11, [r9, #6] - ldrsh r1, [r9, #8] - mul r14, r11, r14 - add r7, r7, r10, asr #9 - mul r1, r1, r8 - add r14, r7, r14, asr #9 - cmp r3, r12 - add r14, r14, r1, asr #9 - ble L1312 -L1313: - ldr r8, [r13, #8] - ldr r7, [r13, #4] -L1314: -L1315: - mov r12, r3, lsl #1 - ldrsh r9, [r6, r12] - ldrsh r12, [r5, r12] - add r3, r3, #1 - cmp r3, r4 - mul r12, r12, r9 - add r14, r14, r12, asr #9 - blt L1315 -L1316: -L1317: - str r14, [r7, +r8, lsl #2] - add r8, r8, #1 - cmp r8, r2 - blt L139 - + ldrsh r11, [r9, #6] + ldrsh r1, [r9, #8] + mul r14, r11, r14 + add r7, r7, r10, asr #9 + mul r1, r1, r8 + add r14, r7, r14, asr #9 + cmp r3, r12 + add r14, r14, r1, asr #9 + ble L1312 +L1313: + ldr r8, [r13, #8] + ldr r7, [r13, #4] +L1314: +L1315: + mov r12, r3, lsl #1 + ldrsh r9, [r6, r12] + ldrsh r12, [r5, r12] + add r3, r3, #1 + cmp r3, r4 + mul r12, r12, r9 + add r14, r14, r12, asr #9 + blt L1315 +L1316: +L1317: + str r14, [r7, +r8, lsl #2] + add r8, r8, #1 + cmp r8, r2 + blt L139 + L1319: L1320: - add r13, r13, #20 + add r13, r13, #20 ldmia sp!, {r4 - r11, pc} @ENDP @ |AutoCorrelation| diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/CalcWindowEnergy_v5.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/CalcWindowEnergy_v5.s index 75b916c..b30e8cb 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/CalcWindowEnergy_v5.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/CalcWindowEnergy_v5.s @@ -22,91 +22,91 @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .section .text - + .global CalcWindowEnergy CalcWindowEnergy: stmdb sp!, {r4 - r11, lr} - sub r13, r13, #20 + sub r13, r13, #20 - mov r3, r3, lsl #16 + mov r3, r3, lsl #16 ldr r10, [r0, #168] @ states0 = blockSwitchingControl->iirStates[0]; - mov r3, r3, asr #16 + mov r3, r3, asr #16 ldr r11, [r0, #172] @ states1 = blockSwitchingControl->iirStates[1]; mov r2, r2, lsl #16 - ldr r12, hiPassCoeff @ Coeff0 = hiPassCoeff[0]; + ldr r12, hiPassCoeff @ Coeff0 = hiPassCoeff[0]; mov r2, r2, asr #16 ldr r14, hiPassCoeff + 4 @ Coeff1 = hiPassCoeff[1]; - + mov r8, #0 @ w=0 mov r5, #0 @ wOffset = 0; - + BLOCK_BEGIN: - mov r6, #0 @ accuUE = 0; - mov r7, #0 @ accuFE = 0; + mov r6, #0 @ accuUE = 0; + mov r7, #0 @ accuFE = 0; mov r4, #0 @ i=0 - - str r8, [r13, #4] - str r0, [r13, #8] + + str r8, [r13, #4] + str r0, [r13, #8] str r3, [r13, #12] - -ENERGY_BEG: - mov r9, r5, lsl #1 + +ENERGY_BEG: + mov r9, r5, lsl #1 ldrsh r9, [r1, r9] @ tempUnfiltered = timeSignal[tidx]; add r5, r5, r2 @ tidx = tidx + chIncrement; - - smulwb r3, r14, r9 @ accu1 = L_mpy_ls(Coeff1, tempUnfiltered); + + smulwb r3, r14, r9 @ accu1 = L_mpy_ls(Coeff1, tempUnfiltered); smull r0, r8, r12, r11 @ accu2 = fixmul( Coeff0, states1 ); - + mov r3, r3, lsl #1 mov r8, r8, lsl #1 - sub r0, r3, r10 @ accu3 = accu1 - states0; + sub r0, r3, r10 @ accu3 = accu1 - states0; sub r8, r0, r8 @ out = accu3 - accu2; mov r10, r3 @ states0 = accu1; - mov r11, r8 @ states1 = out; - - mul r3, r9, r9 + mov r11, r8 @ states1 = out; + + mul r3, r9, r9 mov r8, r8, asr #16 - + add r4, r4, #1 add r6, r6, r3, asr #7 - mul r9, r8, r8 + mul r9, r8, r8 ldr r3, [r13, #12] add r7, r7, r9, asr #7 - - cmp r4, r3 - blt ENERGY_BEG - + + cmp r4, r3 + blt ENERGY_BEG + ldr r0, [r13, #8] ldr r8, [r13, #4] - + ENERGY_END: add r4, r0, r8, lsl #2 - str r6, [r4, #72] - add r8, r8, #1 - str r7, [r4, #136] + str r6, [r4, #72] + add r8, r8, #1 + str r7, [r4, #136] cmp r8, #8 - blt BLOCK_BEGIN + blt BLOCK_BEGIN BLOCK_END: - str r10, [r0, #168] - str r11, [r0, #172] - mov r0, #1 - - add r13, r13, #20 - ldmia sp!, {r4 - r11, pc} + str r10, [r0, #168] + str r11, [r0, #172] + mov r0, #1 + + add r13, r13, #20 + ldmia sp!, {r4 - r11, pc} hiPassCoeff: .word 0xbec8b439 .word 0x609d4952 - + @ENDP .end diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/PrePostMDCT_v5.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/PrePostMDCT_v5.s index 38fe092..103cc91 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/PrePostMDCT_v5.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/PrePostMDCT_v5.s @@ -26,46 +26,46 @@ PreMDCT: stmdb sp!, {r4 - r11, lr} - + add r9, r0, r1, lsl #2 sub r3, r9, #8 movs r1, r1, asr #2 beq PreMDCT_END - + PreMDCT_LOOP: ldr r8, [r2], #4 ldr r9, [r2], #4 - + ldrd r4, [r0] ldrd r6, [r3] - + smull r14, r11, r4, r8 @ MULHIGH(tr1, cosa) smull r10, r12, r7, r8 @ MULHIGH(ti1, cosa) - + smull r14, r8, r7, r9 @ MULHIGH(ti1, sina) - smull r7, r10, r4, r9 @ MULHIGH(tr1, sina) - - add r11, r11, r8 @ MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ + smull r7, r10, r4, r9 @ MULHIGH(tr1, sina) + + add r11, r11, r8 @ MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ sub r7, r12, r10 @ MULHIGH(ti1, cosa) - MULHIGH(tr1, sina) - + ldr r8, [r2], #4 ldr r9, [r2], #4 - + smull r14, r4, r6, r8 @ MULHIGH(tr2, cosa) smull r10, r12, r5, r8 @ MULHIGH(ti2, cosa) - + smull r14, r8, r5, r9 @ MULHIGH(ti2, sina) smull r5, r10, r6, r9 @ MULHIGH(tr2, sina) - + add r8, r8, r4 sub r9, r12, r10 - - mov r6, r11 - strd r6, [r0] + mov r6, r11 + + strd r6, [r0] strd r8, [r3] - + subs r1, r1, #1 sub r3, r3, #8 add r0, r0, #8 @@ -74,52 +74,52 @@ PreMDCT_LOOP: PreMDCT_END: ldmia sp!, {r4 - r11, pc} @ENDP @ |PreMDCT| - + .section .text .global PostMDCT PostMDCT: stmdb sp!, {r4 - r11, lr} - + add r9, r0, r1, lsl #2 sub r3, r9, #8 movs r1, r1, asr #2 beq PostMDCT_END - + PostMDCT_LOOP: - ldr r8, [r2], #4 + ldr r8, [r2], #4 ldr r9, [r2], #4 - + ldrd r4, [r0] ldrd r6, [r3] - + smull r14, r11, r4, r8 @ MULHIGH(tr1, cosa) smull r10, r12, r5, r8 @ MULHIGH(ti1, cosa) - + smull r14, r8, r5, r9 @ MULHIGH(ti1, sina) - smull r5, r10, r4, r9 @ MULHIGH(tr1, sina) - - add r4, r11, r8 @ MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ + smull r5, r10, r4, r9 @ MULHIGH(tr1, sina) + + add r4, r11, r8 @ MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ sub r11, r10, r12 @ MULHIGH(ti1, cosa) - MULHIGH(tr1, sina)@ - + ldr r8, [r2], #4 @ ldr r9, [r2], #4 - + smull r14, r5, r6, r8 @ MULHIGH(tr2, cosa) smull r10, r12, r7, r8 @ MULHIGH(ti2, cosa) - + smull r14, r8, r7, r9 @ MULHIGH(ti2, sina) smull r7, r10, r6, r9 @ MULHIGH(tr2, sina) - + add r6, r8, r5 @ MULHIGH(cosb, tr2) + MULHIGH(sinb, ti2)@ sub r5, r10, r12 @ MULHIGH(sinb, tr2) - MULHIGH(cosb, ti2)@ - - mov r7, r11 + + mov r7, r11 strd r4, [r0] strd r6, [r3] - + subs r1, r1, #1 sub r3, r3, #8 add r0, r0, #8 diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/R4R8First_v5.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/R4R8First_v5.s index b30881a..72cb9a3 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/R4R8First_v5.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/R4R8First_v5.s @@ -26,46 +26,46 @@ Radix4First: stmdb sp!, {r4 - r11, lr} - + movs r10, r1 mov r11, r0 beq Radix4First_END - + Radix4First_LOOP: ldrd r0, [r11] ldrd r2, [r11, #8] ldrd r4, [r11, #16] ldrd r6, [r11, #24] - + add r8, r0, r2 add r9, r1, r3 - + sub r0, r0, r2 sub r1, r1, r3 - + add r2, r4, r6 add r3, r5, r7 - + sub r4, r4, r6 sub r5, r5, r7 - + add r6, r8, r2 add r7, r9, r3 - + sub r8, r8, r2 sub r9, r9, r3 - + add r2, r0, r5 sub r3, r1, r4 - + sub r0, r0, r5 add r1, r1, r4 - + strd r6, [r11] strd r2, [r11, #8] strd r8, [r11, #16] strd r0, [r11, #24] - + subs r10, r10, #1 add r11, r11, #32 bne Radix4First_LOOP @@ -73,180 +73,180 @@ Radix4First_LOOP: Radix4First_END: ldmia sp!, {r4 - r11, pc} @ENDP @ |Radix4First| - + .section .text .global Radix8First Radix8First: stmdb sp!, {r4 - r11, lr} sub sp, sp, #0x24 - + mov r12, r1 mov r14, r0 cmp r12, #0 beq Radix8First_END - + Radix8First_LOOP: - ldrd r0, [r14] + ldrd r0, [r14] ldrd r2, [r14, #8] ldrd r4, [r14, #16] ldrd r6, [r14, #24] - + add r8, r0, r2 @ r0 = buf[0] + buf[2]@ add r9, r1, r3 @ i0 = buf[1] + buf[3]@ - + sub r0, r0, r2 @ r1 = buf[0] - buf[2]@ sub r1, r1, r3 @ i1 = buf[1] - buf[3]@ - + add r2, r4, r6 @ r2 = buf[4] + buf[6]@ add r3, r5, r7 @ i2 = buf[5] + buf[7]@ - + sub r4, r4, r6 @ r3 = buf[4] - buf[6]@ sub r5, r5, r7 @ i3 = buf[5] - buf[7]@ - + add r6, r8, r2 @ r4 = (r0 + r2) >> 1@ add r7, r9, r3 @ i4 = (i0 + i2) >> 1@ - + sub r8, r8, r2 @ r5 = (r0 - r2) >> 1@ sub r9, r9, r3 @ i5 = (i0 - i2) >> 1@ - + sub r2, r0, r5 @ r6 = (r1 - i3) >> 1@ add r3, r1, r4 @ i6 = (i1 + r3) >> 1@ - + add r0, r0, r5 @ r7 = (r1 + i3) >> 1@ sub r1, r1, r4 @ i7 = (i1 - r3) >> 1@ - + mov r6, r6, asr #1 @ mov r7, r7, asr #1 @ - + mov r8, r8, asr #1 mov r9, r9, asr #1 - + mov r2, r2, asr #1 mov r3, r3, asr #1 - + mov r0, r0, asr #1 - mov r1, r1, asr #1 - + mov r1, r1, asr #1 + str r6, [sp] str r7, [sp, #4] - + str r8, [sp, #8] str r9, [sp, #12] - + str r2, [sp, #16] - str r3, [sp, #20] - + str r3, [sp, #20] + str r0, [sp, #24] - str r1, [sp, #28] - - ldrd r2, [r14, #32] + str r1, [sp, #28] + + ldrd r2, [r14, #32] ldrd r4, [r14, #40] ldrd r6, [r14, #48] ldrd r8, [r14, #56] - + add r0, r2, r4 @ r0 = buf[ 8] + buf[10]@ add r1, r3, r5 @ i0 = buf[ 9] + buf[11]@ - + sub r2, r2, r4 @ r1 = buf[ 8] - buf[10]@ sub r3, r3, r5 @ i1 = buf[ 9] - buf[11]@ - + add r4, r6, r8 @ r2 = buf[12] + buf[14]@ add r5, r7, r9 @ i2 = buf[13] + buf[15]@ - + sub r6, r6, r8 @ r3 = buf[12] - buf[14]@ sub r7, r7, r9 @ i3 = buf[13] - buf[15]@ - + add r8, r0, r4 @ t0 = (r0 + r2) add r9, r1, r5 @ t1 = (i0 + i2) - + sub r0, r0, r4 @ t2 = (r0 - r2) sub r1, r1, r5 @ t3 = (i0 - i2) - + mov r8, r8, asr #1 ldr r4, [sp] - + mov r9, r9, asr #1 ldr r5, [sp, #4] - - mov r0, r0, asr #1 + + mov r0, r0, asr #1 mov r1, r1, asr #1 - + add r10, r4, r8 @ buf[ 0] = r4 + t0@ add r11, r5, r9 @ buf[ 1] = i4 + t1@ - + sub r4, r4, r8 @ buf[ 8] = r4 - t0@ sub r5, r5, r9 @ buf[ 9] = i4 - t1@ - + strd r10, [r14] strd r4, [r14, #32] - + ldr r10, [sp, #8] ldr r11, [sp, #12] - + add r4, r10, r1 @ buf[ 4] = r5 + t3@ sub r5, r11, r0 @ buf[ 5] = i5 - t2@ - + sub r10, r10, r1 @ buf[12] = r5 - t3@ add r11, r11, r0 @ buf[13] = i5 + t2@ - + strd r4, [r14, #16] strd r10, [r14, #48] - + sub r0, r2, r7 @ r0 = r1 - i3@ add r1, r3, r6 @ i0 = i1 + r3@ - + ldr r11, DATATab - + add r2, r2, r7 @ r2 = r1 + i3@ sub r3, r3, r6 @ i2 = i1 - r3@ - + sub r4, r0, r1 @ r0 - i0 add r5, r0, r1 @ r0 + i0 - + sub r0, r2, r3 @ r2 - i2 add r1, r2, r3 @ r2 + i2 - - smull r8, r6, r4, r11 - smull r9, r7, r5, r11 - + + smull r8, r6, r4, r11 + smull r9, r7, r5, r11 + ldr r2, [sp, #16] ldr r3, [sp, #20] - - smull r8, r4, r0, r11 - smull r9, r5, r1, r11 - + + smull r8, r4, r0, r11 + smull r9, r5, r1, r11 + ldr r10, [sp, #24] ldr r11, [sp, #28] - + sub r8, r2, r6 sub r9, r3, r7 - + add r2, r2, r6 add r3, r3, r7 - + add r6, r10, r5 sub r7, r11, r4 - + sub r0, r10, r5 add r1, r11, r4 - + strd r6, [r14, #8] strd r8, [r14, #24] strd r0, [r14, #40] strd r2, [r14, #56] - + subs r12, r12, #1 add r14, r14, #64 - + bne Radix8First_LOOP - + Radix8First_END: add sp, sp, #0x24 ldmia sp!, {r4 - r11, pc} - + DATATab: .word 0x5a82799a - + @ENDP @ |Radix8First| .end \ No newline at end of file diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/Radix4FFT_v5.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/Radix4FFT_v5.s index bc069b4..e81c82e 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/Radix4FFT_v5.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/Radix4FFT_v5.s @@ -25,145 +25,145 @@ Radix4FFT: stmdb sp!, {r4 - r11, lr} - sub sp, sp, #32 + sub sp, sp, #32 mov r1, r1, asr #2 - cmp r1, #0 - beq Radix4FFT_END - -Radix4FFT_LOOP1: - mov r14, r0 @ xptr = buf@ + cmp r1, #0 + beq Radix4FFT_END + +Radix4FFT_LOOP1: + mov r14, r0 @ xptr = buf@ mov r10, r1 @ i = num@ mov r9, r2, lsl #3 @ step = 2*bgn@ - cmp r10, #0 - str r0, [sp] - str r1, [sp, #4] + cmp r10, #0 + str r0, [sp] + str r1, [sp, #4] str r2, [sp, #8] - str r3, [sp, #12] - beq Radix4FFT_LOOP1_END - -Radix4FFT_LOOP2: + str r3, [sp, #12] + beq Radix4FFT_LOOP1_END + +Radix4FFT_LOOP2: mov r12, r3 @ csptr = twidTab@ mov r11, r2 @ j = bgn - cmp r11, #0 + cmp r11, #0 str r10, [sp, #16] - beq Radix4FFT_LOOP2_END - -Radix4FFT_LOOP3: - str r11, [sp, #20] - + beq Radix4FFT_LOOP2_END + +Radix4FFT_LOOP3: + str r11, [sp, #20] + ldrd r0, [r14, #0] @ r0 = xptr[0]@ r1 = xptr[1]@ add r14, r14, r9 @ xptr += step@ - - ldrd r10, [r14, #0] @ r2 = xptr[0]@ r3 = xptr[1]@ + + ldrd r10, [r14, #0] @ r2 = xptr[0]@ r3 = xptr[1]@ ldr r8, [r12], #4 @ cosxsinx = csptr[0]@ - + smulwt r4, r10, r8 @ L_mpy_wx(cosx, t0) smulwt r3, r11, r8 @ L_mpy_wx(cosx, t1) - + smlawb r2, r11, r8, r4 @ r2 = L_mpy_wx(cosx, t0) + L_mpy_wx(sinx, t1)@ smulwb r5, r10, r8 @ L_mpy_wx(sinx, t0) - + mov r10, r0, asr #2 @ t0 = r0 >> 2@ mov r11, r1, asr #2 @ t1 = r1 >> 2@ - + sub r3, r3, r5 @ r3 = L_mpy_wx(cosx, t1) - L_mpy_wx(sinx, t0)@ add r14, r14, r9 @ xptr += step@ - + sub r0, r10, r2 @ r0 = t0 - r2@ sub r1, r11, r3 @ r1 = t1 - r3@ - + add r2, r10, r2 @ r2 = t0 + r2@ add r3, r11, r3 @ r3 = t1 + r3@ - + str r2, [sp, #24] str r3, [sp, #28] - + ldrd r10, [r14, #0] @ r4 = xptr[0]@ r5 = xptr[1]@ ldr r8, [r12], #4 @ cosxsinx = csptr[1]@ - + smulwt r6, r10, r8 @ L_mpy_wx(cosx, t0) smulwt r5, r11, r8 @ L_mpy_wx(cosx, t1) - + smlawb r4, r11, r8, r6 @ r4 = L_mpy_wx(cosx, t0) + L_mpy_wx(sinx, t1)@ smulwb r7, r10, r8 @ L_mpy_wx(sinx, t0) - + add r14, r14, r9 @ xptr += step@ sub r5, r5, r7 @ r5 = L_mpy_wx(cosx, t1) - L_mpy_wx(sinx, t0)@ - + ldrd r10, [r14] @ r6 = xptr[0]@ r7 = xptr[1]@ ldr r8, [r12], #4 @ cosxsinx = csptr[1]@ - + smulwt r2, r10, r8 @ L_mpy_wx(cosx, t0) smulwt r7, r11, r8 @ L_mpy_wx(cosx, t1) - + smlawb r6, r11, r8, r2 @ r4 = L_mpy_wx(cosx, t0) + L_mpy_wx(sinx, t1)@ smulwb r3, r10, r8 @ L_mpy_wx(sinx, t0) - + mov r10, r4 @ t0 = r4@ - mov r11, r5 @ t1 = r5@ - + mov r11, r5 @ t1 = r5@ + sub r7, r7, r3 @ r5 = L_mpy_wx(cosx, t1) - L_mpy_wx(sinx, t0)@ - - add r4, r10, r6 @ r4 = t0 + r6@ + + add r4, r10, r6 @ r4 = t0 + r6@ sub r5, r7, r11 @ r5 = r7 - t1@ - + sub r6, r10, r6 @ r6 = t0 - r6@ add r7, r7, r11 @ r7 = r7 + t1@ - + ldr r2, [sp, #24] ldr r3, [sp, #28] - + add r10, r0, r5 @ xptr[0] = r0 + r5@ add r11, r1, r6 @ xptr[0] = r1 + r6 - - strd r10, [r14] + + strd r10, [r14] sub r14, r14, r9 @ xptr -= step@ - + sub r10, r2, r4 @ xptr[0] = r2 - r4@ sub r11, r3, r7 @ xptr[1] = r3 - r7@ - - strd r10, [r14] + + strd r10, [r14] sub r14, r14, r9 @ xptr -= step@ - + sub r10, r0, r5 @ xptr[0] = r0 - r5@ sub r11, r1, r6 @ xptr[0] = r1 - r6 - - strd r10, [r14] + + strd r10, [r14] sub r14, r14, r9 @ xptr -= step@ - + add r10, r2, r4 @ xptr[0] = r2 - r4@ add r11, r3, r7 @ xptr[1] = r3 - r7@ - - strd r10, [r14] + + strd r10, [r14] add r14, r14, #8 @ xptr += 2@ - + ldr r11, [sp, #20] subs r11, r11, #1 - bne Radix4FFT_LOOP3 - -Radix4FFT_LOOP2_END: + bne Radix4FFT_LOOP3 + +Radix4FFT_LOOP2_END: ldr r10, [sp, #16] ldr r3, [sp, #12] ldr r2, [sp, #8] - rsb r8, r9, r9, lsl #2 + rsb r8, r9, r9, lsl #2 sub r10, r10, #1 - add r14, r14, r8 - cmp r10, #0 - bhi Radix4FFT_LOOP2 - -Radix4FFT_LOOP1_END: - ldr r0, [sp] + add r14, r14, r8 + cmp r10, #0 + bhi Radix4FFT_LOOP2 + +Radix4FFT_LOOP1_END: + ldr r0, [sp] ldr r1, [sp, #4] add r3, r3, r8, asr #1 - mov r2, r2, lsl #2 - movs r1, r1, asr #2 - bne Radix4FFT_LOOP1 - -Radix4FFT_END: - add sp, sp, #32 + mov r2, r2, lsl #2 + movs r1, r1, asr #2 + bne Radix4FFT_LOOP1 + +Radix4FFT_END: + add sp, sp, #32 ldmia sp!, {r4 - r11, pc} - + @ENDP @ |Radix4FFT| .end \ No newline at end of file diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/band_nrg_v5.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/band_nrg_v5.s index 3b88810..4789f6d 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/band_nrg_v5.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV5E/band_nrg_v5.s @@ -26,31 +26,31 @@ .global CalcBandEnergy CalcBandEnergy: - stmdb sp!, {r4 - r11, lr} - - mov r2, r2, lsl #16 + stmdb sp!, {r4 - r11, lr} + + mov r2, r2, lsl #16 ldr r12, [r13, #36] mov r9, #0 - mov r5, r2, asr #16 - mov r4, #0 - cmp r5, #0 - ble L212 + mov r5, r2, asr #16 + mov r4, #0 + cmp r5, #0 + ble L212 L22: - mov r2, r4, lsl #1 - ldrsh r10, [r1, r2] - add r11, r1, r2 - ldrsh r2, [r11, #2] - mov r14, #0 - cmp r10, r2 - bge L28 - + mov r2, r4, lsl #1 + ldrsh r10, [r1, r2] + add r11, r1, r2 + ldrsh r2, [r11, #2] + mov r14, #0 + cmp r10, r2 + bge L28 + L23: - ldr r11, [r0, +r10, lsl #2] - add r10, r10, #1 - ldr r6, [r0, +r10, lsl #2] + ldr r11, [r0, +r10, lsl #2] + add r10, r10, #1 + ldr r6, [r0, +r10, lsl #2] smull r11, r7, r11, r11 - add r10, r10, #1 + add r10, r10, #1 smull r6, r8, r6, r6 ldr r11, [r0, +r10, lsl #2] qadd r14, r14, r7 @@ -59,71 +59,71 @@ L23: ldr r6, [r0, +r10, lsl #2] qadd r14, r14, r8 smull r6, r8, r6, r6 - add r10, r10, #1 + add r10, r10, #1 qadd r14, r14, r7 cmp r10, r2 qadd r14, r14, r8 - blt L23 + blt L23 -L28: +L28: qadd r14, r14, r14 str r14, [r3, +r4, lsl #2] - add r4, r4, #1 + add r4, r4, #1 qadd r9, r9, r14 - cmp r4, r5 + cmp r4, r5 - blt L22 + blt L22 -L212: - str r9, [r12, #0] +L212: + str r9, [r12, #0] ldmia sp!, {r4 - r11, pc} - + @ENDP ; |CalcBandEnergy| - + .global CalcBandEnergyMS CalcBandEnergyMS: stmdb sp!, {r4 - r11, lr} sub r13, r13, #24 - - mov r12, #0 - mov r3, r3, lsl #16 - mov r14, #0 - mov r3, r3, asr #16 - cmp r3, #0 - mov r4, #0 - ble L315 - -L32: + + mov r12, #0 + mov r3, r3, lsl #16 + mov r14, #0 + mov r3, r3, asr #16 + cmp r3, #0 + mov r4, #0 + ble L315 + +L32: mov r5, r4, lsl #1 mov r6, #0 ldrsh r10, [r2, r5] add r5, r2, r5 mov r7, #0 - ldrsh r11, [r5, #2] - cmp r10, r11 - bge L39 + ldrsh r11, [r5, #2] + cmp r10, r11 + bge L39 str r3, [r13, #4] str r4, [r13, #8] str r12, [r13, #12] str r14, [r13, #16] -L33: - ldr r8, [r0, +r10, lsl #2] +L33: + ldr r8, [r0, +r10, lsl #2] ldr r9, [r1, +r10, lsl #2] mov r8, r8, asr #1 add r10, r10, #1 mov r9, r9, asr #1 - ldr r12, [r0, +r10, lsl #2] - add r5, r8, r9 + ldr r12, [r0, +r10, lsl #2] + add r5, r8, r9 ldr r14, [r1, +r10, lsl #2] sub r8, r8, r9 - smull r5, r3, r5, r5 + smull r5, r3, r5, r5 mov r12, r12, asr #1 - smull r8, r4, r8, r8 + smull r8, r4, r8, r8 mov r14, r14, asr #1 qadd r6, r6, r3 @@ -131,27 +131,27 @@ L33: qadd r7, r7, r4 sub r8, r12, r14 - smull r5, r3, r5, r5 + smull r5, r3, r5, r5 add r10, r10, #1 - smull r8, r4, r8, r8 - + smull r8, r4, r8, r8 + qadd r6, r6, r3 qadd r7, r7, r4 - ldr r8, [r0, +r10, lsl #2] + ldr r8, [r0, +r10, lsl #2] ldr r9, [r1, +r10, lsl #2] mov r8, r8, asr #1 add r10, r10, #1 mov r9, r9, asr #1 - ldr r12, [r0, +r10, lsl #2] - add r5, r8, r9 + ldr r12, [r0, +r10, lsl #2] + add r5, r8, r9 ldr r14, [r1, +r10, lsl #2] sub r8, r8, r9 - smull r5, r3, r5, r5 + smull r5, r3, r5, r5 mov r12, r12, asr #1 - smull r8, r4, r8, r8 + smull r8, r4, r8, r8 mov r14, r14, asr #1 qadd r6, r6, r3 @@ -159,37 +159,37 @@ L33: qadd r7, r7, r4 sub r8, r12, r14 - smull r5, r3, r5, r5 + smull r5, r3, r5, r5 add r10, r10, #1 - smull r8, r4, r8, r8 - + smull r8, r4, r8, r8 + qadd r6, r6, r3 qadd r7, r7, r4 cmp r10, r11 - + blt L33 ldr r3, [r13, #4] - ldr r4, [r13, #8] + ldr r4, [r13, #8] ldr r12, [r13, #12] ldr r14, [r13, #16] -L39: +L39: qadd r6, r6, r6 - qadd r7, r7, r7 - + qadd r7, r7, r7 + ldr r8, [r13, #60] ldr r9, [r13, #68] qadd r12, r12, r6 qadd r14, r14, r7 - - str r6, [r8, +r4, lsl #2] - str r7, [r9, +r4, lsl #2] - + + str r6, [r8, +r4, lsl #2] + str r7, [r9, +r4, lsl #2] + add r4, r4, #1 cmp r4, r3 - blt L32 + blt L32 L315: ldr r8, [r13, #64] diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s index a04c105..64d767a 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s @@ -26,53 +26,53 @@ PreMDCT: stmdb sp!, {r4 - r11, lr} - + add r9, r0, r1, lsl #2 sub r3, r9, #32 movs r1, r1, asr #2 - beq PreMDCT_END - + beq PreMDCT_END + PreMDCT_LOOP: VLD4.I32 {d0, d2, d4, d6}, [r2]! @ cosa = *csptr++@ sina = *csptr++@ VLD4.I32 {d1, d3, d5, d7}, [r2]! @ cosb = *csptr++@ sinb = *csptr++@ VLD2.I32 {d8, d9, d10, d11}, [r0] @ tr1 = *(buf0 + 0)@ ti2 = *(buf0 + 1)@ VLD2.I32 {d13, d15}, [r3]! @ tr2 = *(buf1 - 1)@ ti1 = *(buf1 + 0)@ VLD2.I32 {d12, d14}, [r3]! @ tr2 = *(buf1 - 1)@ ti1 = *(buf1 + 0)@ - - VREV64.32 Q8, Q7 + + VREV64.32 Q8, Q7 VREV64.32 Q9, Q6 - + VQDMULH.S32 Q10, Q0, Q4 @ MULHIGH(cosa, tr1) VQDMULH.S32 Q11, Q1, Q8 @ MULHIGH(sina, ti1) VQDMULH.S32 Q12, Q0, Q8 @ MULHIGH(cosa, ti1) VQDMULH.S32 Q13, Q1, Q4 @ MULHIGH(sina, tr1) - + VADD.S32 Q0, Q10, Q11 @ *buf0++ = MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ VSUB.S32 Q1, Q12, Q13 @ *buf0++ = MULHIGH(cosa, ti1) - MULHIGH(sina, tr1)@ - + VST2.I32 {d0, d1, d2, d3}, [r0]! sub r3, r3, #32 - + VQDMULH.S32 Q10, Q2, Q9 @ MULHIGH(cosb, tr2) VQDMULH.S32 Q11, Q3, Q5 @ MULHIGH(sinb, ti2) VQDMULH.S32 Q12, Q2, Q5 @ MULHIGH(cosb, ti2) VQDMULH.S32 Q13, Q3, Q9 @ MULHIGH(sinb, tr2) - + VADD.S32 Q0, Q10, Q11 @ MULHIGH(cosa, tr2) + MULHIGH(sina, ti2)@ VSUB.S32 Q1, Q12, Q13 @ MULHIGH(cosa, ti2) - MULHIGH(sina, tr2)@ - + VREV64.32 Q3, Q1 VREV64.32 Q2, Q0 - - VST2.I32 {d5, d7}, [r3]! - VST2.I32 {d4, d6}, [r3]! - + + VST2.I32 {d5, d7}, [r3]! + VST2.I32 {d4, d6}, [r3]! + subs r1, r1, #4 - sub r3, r3, #64 + sub r3, r3, #64 bne PreMDCT_LOOP - + PreMDCT_END: ldmia sp!, {r4 - r11, pc} @ENDP @ |PreMDCT| @@ -82,50 +82,50 @@ PreMDCT_END: PostMDCT: stmdb sp!, {r4 - r11, lr} - + add r9, r0, r1, lsl #2 sub r3, r9, #32 movs r1, r1, asr #2 beq PostMDCT_END - + PostMDCT_LOOP: VLD4.I32 {d0, d2, d4, d6}, [r2]! @ cosa = *csptr++@ sina = *csptr++@ VLD4.I32 {d1, d3, d5, d7}, [r2]! @ cosb = *csptr++@ sinb = *csptr++@ VLD2.I32 {d8, d9, d10, d11}, [r0] @ tr1 = *(zbuf1 + 0)@ ti1 = *(zbuf1 + 1)@ VLD2.I32 {d13, d15}, [r3]! @ tr2 = *(zbuf2 - 1)@ ti2 = *(zbuf2 + 0)@ - VLD2.I32 {d12, d14}, [r3]! @ tr2 = *(zbuf2 - 1)@ ti2 = *(zbuf2 + 0)@ + VLD2.I32 {d12, d14}, [r3]! @ tr2 = *(zbuf2 - 1)@ ti2 = *(zbuf2 + 0)@ + + VREV64.32 Q8, Q6 + VREV64.32 Q9, Q7 - VREV64.32 Q8, Q6 - VREV64.32 Q9, Q7 - VQDMULH.S32 Q10, Q0, Q4 @ MULHIGH(cosa, tr1) VQDMULH.S32 Q11, Q1, Q5 @ MULHIGH(sina, ti1) VQDMULH.S32 Q12, Q0, Q5 @ MULHIGH(cosa, ti1) VQDMULH.S32 Q13, Q1, Q4 @ MULHIGH(sina, tr1) - + VADD.S32 Q0, Q10, Q11 @ *buf0++ = MULHIGH(cosa, tr1) + MULHIGH(sina, ti1)@ VSUB.S32 Q5, Q13, Q12 @ *buf1-- = MULHIGH(sina, tr1) - MULHIGH(cosa, ti1)@ - + VQDMULH.S32 Q10, Q2, Q8 @ MULHIGH(cosb, tr2) VQDMULH.S32 Q11, Q3, Q9 @ MULHIGH(sinb, ti2) VQDMULH.S32 Q12, Q2, Q9 @ MULHIGH(cosb, ti2) VQDMULH.S32 Q13, Q3, Q8 @ MULHIGH(sinb, tr2) - + VADD.S32 Q4, Q10, Q11 @ *buf1-- = MULHIGH(cosa, tr2) + MULHIGH(sina, ti2)@ - VSUB.S32 Q1, Q13, Q12 @ *buf0++ = MULHIGH(sina, tr2) - MULHIGH(cosa, ti2)@ - + VSUB.S32 Q1, Q13, Q12 @ *buf0++ = MULHIGH(sina, tr2) - MULHIGH(cosa, ti2)@ + VREV64.32 Q2, Q4 - VREV64.32 Q3, Q5 - - sub r3, r3, #32 + VREV64.32 Q3, Q5 + + sub r3, r3, #32 VST2.I32 {d0, d1, d2, d3}, [r0]! - - VST2.I32 {d5, d7}, [r3]! - VST2.I32 {d4, d6}, [r3]! - + + VST2.I32 {d5, d7}, [r3]! + VST2.I32 {d4, d6}, [r3]! + subs r1, r1, #4 - sub r3, r3, #64 + sub r3, r3, #64 bne PostMDCT_LOOP PostMDCT_END: diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s index defd45d..7fc5520 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s @@ -29,86 +29,86 @@ Radix8First: ldr r3, SQRT1_2 cmp r1, #0 - - VDUP.I32 Q15, r3 + + VDUP.I32 Q15, r3 beq Radix8First_END - + Radix8First_LOOP: VLD1.I32 {d0, d1, d2, d3}, [r0]! VLD1.I32 {d8, d9, d10, d11}, [r0]! - + VADD.S32 d4, d0, d1 @ r0 = buf[0] + buf[2]@i0 = buf[1] + buf[3]@ - VSUB.S32 d5, d0, d1 @ r1 = buf[0] - buf[2]@i1 = buf[1] - buf[3]@ - VSUB.S32 d7, d2, d3 @ r2 = buf[4] - buf[6]@i2 = buf[5] - buf[7]@ + VSUB.S32 d5, d0, d1 @ r1 = buf[0] - buf[2]@i1 = buf[1] - buf[3]@ + VSUB.S32 d7, d2, d3 @ r2 = buf[4] - buf[6]@i2 = buf[5] - buf[7]@ VADD.S32 d6, d2, d3 @ r3 = buf[4] + buf[6]@i3 = buf[5] + buf[7]@ - VREV64.I32 d7, d7 - + VREV64.I32 d7, d7 + VADD.S32 Q0, Q2, Q3 @ r4 = (r0 + r2)@i4 = (i0 + i2)@i6 = (i1 + r3)@r7 = (r1 + i3) VSUB.S32 Q1, Q2, Q3 @ r5 = (r0 - r2)@i5 = (i0 - i2)@r6 = (r1 - i3)@i7 = (i1 - r3)@ - VREV64.I32 d3, d3 + VREV64.I32 d3, d3 VADD.S32 d4, d8, d9 @ r0 = buf[ 8] + buf[10]@i0 = buf[ 9] + buf[11]@ - VSUB.S32 d7, d10, d11 @ r1 = buf[12] - buf[14]@i1 = buf[13] - buf[15]@ + VSUB.S32 d7, d10, d11 @ r1 = buf[12] - buf[14]@i1 = buf[13] - buf[15]@ VADD.S32 d6, d10, d11 @ r2 = buf[12] + buf[14]@i2 = buf[13] + buf[15]@ - VREV64.I32 d7, d7 + VREV64.I32 d7, d7 VSUB.S32 d5, d8, d9 @ r3 = buf[ 8] - buf[10]@i3 = buf[ 9] - buf[11]@ - - VTRN.32 d1, d3 - + + VTRN.32 d1, d3 + VADD.S32 Q4, Q2, Q3 @ t0 = (r0 + r2) >> 1@t1 = (i0 + i2) >> 1@i0 = i1 + r3@r2 = r1 + i3@ VSUB.S32 Q5, Q2, Q3 @ t2 = (r0 - r2) >> 1@t3 = (i0 - i2) >> 1@r0 = r1 - i3@i2 = i1 - r3@ - + VREV64.I32 d3, d3 - - VSHR.S32 d8, d8, #1 + + VSHR.S32 d8, d8, #1 VSHR.S32 Q0, Q0, #1 VREV64.I32 d10, d10 VTRN.32 d11, d9 VSHR.S32 Q1, Q1, #1 VSHR.S32 d10, d10, #1 VREV64.I32 d9, d9 - + sub r0, r0, #0x40 - + VADD.S32 d12, d0, d8 - VSUB.S32 d16, d0, d8 + VSUB.S32 d16, d0, d8 VADD.S32 d14, d2, d10 VSUB.S32 d18, d2, d10 - + VSUB.S32 d4, d11, d9 VADD.S32 d5, d11, d9 - + VREV64.I32 d18, d18 - + VQDMULH.S32 Q3, Q2, Q15 VTRN.32 d14, d18 VTRN.32 d6, d7 - VREV64.I32 d18, d18 - + VREV64.I32 d18, d18 + VSUB.S32 d15, d3, d6 VREV64.I32 d7, d7 VADD.S32 d19, d3, d6 VADD.S32 d13, d1, d7 VSUB.S32 d17, d1, d7 - + VREV64.I32 d17, d17 VTRN.32 d13, d17 VREV64.I32 d17, d17 - - subs r1, r1, #1 - + + subs r1, r1, #1 + VST1.I32 {d12, d13, d14, d15}, [r0]! - VST1.I32 {d16, d17, d18, d19}, [r0]! + VST1.I32 {d16, d17, d18, d19}, [r0]! bne Radix8First_LOOP - + Radix8First_END: - ldmia sp!, {r4 - r11, pc} + ldmia sp!, {r4 - r11, pc} SQRT1_2: .word 0x2d413ccd - + @ENDP @ |Radix8First| - + .section .text .global Radix4First @@ -117,28 +117,28 @@ Radix4First: cmp r1, #0 beq Radix4First_END - + Radix4First_LOOP: - VLD1.I32 {d0, d1, d2, d3}, [r0] - - VADD.S32 d4, d0, d1 @ r0 = buf[0] + buf[2]@ r1 = buf[1] + buf[3]@ + VLD1.I32 {d0, d1, d2, d3}, [r0] + + VADD.S32 d4, d0, d1 @ r0 = buf[0] + buf[2]@ r1 = buf[1] + buf[3]@ VSUB.S32 d5, d0, d1 @ r2 = buf[0] - buf[2]@ r3 = buf[1] - buf[3]@ VSUB.S32 d7, d2, d3 @ r4 = buf[4] + buf[6]@ r5 = buf[5] + buf[7]@ VADD.S32 d6, d2, d3 @ r6 = buf[4] - buf[6]@ r7 = buf[5] - buf[7]@ - - VREV64.I32 d7, d7 @ - + + VREV64.I32 d7, d7 @ + VADD.S32 Q4, Q2, Q3 VSUB.S32 Q5, Q2, Q3 - + VREV64.I32 d11, d11 VTRN.32 d9, d11 - subs r1, r1, #1 + subs r1, r1, #1 VREV64.I32 d11, d11 VST1.I32 {d8, d9, d10, d11}, [r0]! bne Radix4First_LOOP - + Radix4First_END: ldmia sp!, {r4 - r11, pc} diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s index 84a4a80..b8655ae 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s @@ -28,116 +28,116 @@ Radix4FFT: stmdb sp!, {r4 - r11, lr} mov r1, r1, asr #2 - cmp r1, #0 - beq Radix4FFT_END - -Radix4FFT_LOOP1: - mov r5, r2, lsl #1 - mov r8, r0 - mov r7, r1 - mov r5, r5, lsl #2 - cmp r1, #0 - rsbeq r12, r5, r5, lsl #2 - beq Radix4FFT_LOOP1_END - - rsb r12, r5, r5, lsl #2 - -Radix4FFT_LOOP2: - mov r6, r3 - mov r4, r2 - cmp r2, #0 - beq Radix4FFT_LOOP2_END - -Radix4FFT_LOOP3: + cmp r1, #0 + beq Radix4FFT_END + +Radix4FFT_LOOP1: + mov r5, r2, lsl #1 + mov r8, r0 + mov r7, r1 + mov r5, r5, lsl #2 + cmp r1, #0 + rsbeq r12, r5, r5, lsl #2 + beq Radix4FFT_LOOP1_END + + rsb r12, r5, r5, lsl #2 + +Radix4FFT_LOOP2: + mov r6, r3 + mov r4, r2 + cmp r2, #0 + beq Radix4FFT_LOOP2_END + +Radix4FFT_LOOP3: @r0 = xptr[0]@ @r1 = xptr[1]@ - VLD2.I32 {D0, D1, D2, D3}, [r8] + VLD2.I32 {D0, D1, D2, D3}, [r8] VLD2.I32 {D28, D29, D30, D31}, [r6]! @ cosx = csptr[0]@ sinx = csptr[1]@ - - add r8, r8, r5 @ xptr += step@ + + add r8, r8, r5 @ xptr += step@ VLD2.I32 {D4, D5, D6,D7}, [r8] @ r2 = xptr[0]@ r3 = xptr[1]@ - + VQDMULH.S32 Q10, Q2, Q14 @ MULHIGH(cosx, t0) VQDMULH.S32 Q11, Q3, Q15 @ MULHIGH(sinx, t1) VQDMULH.S32 Q12, Q3, Q14 @ MULHIGH(cosx, t1) VQDMULH.S32 Q13, Q2, Q15 @ MULHIGH(sinx, t0) - + VADD.S32 Q2, Q10, Q11 @ MULHIGH(cosx, t0) + MULHIGH(sinx, t1) VSUB.S32 Q3, Q12, Q13 @ MULHIGH(cosx, t1) - MULHIGH(sinx, t0) - + add r8, r8, r5 @ xptr += step@ VSHR.S32 Q10, Q0, #2 @ t0 = r0 >> 2@ VSHR.S32 Q11, Q1, #2 @ t1 = r1 >> 2@ - + VSUB.S32 Q0, Q10, Q2 @ r0 = t0 - r2@ VSUB.S32 Q1, Q11, Q3 @ r1 = t1 - r3@ VADD.S32 Q2, Q10, Q2 @ r2 = t0 + r2@ VADD.S32 Q3, Q11, Q3 @ r3 = t1 + r3@ - - VLD2.I32 {D8, D9, D10, D11}, [r8] - VLD2.I32 {D28, D29, D30, D31}, [r6]! + + VLD2.I32 {D8, D9, D10, D11}, [r8] + VLD2.I32 {D28, D29, D30, D31}, [r6]! add r8, r8, r5 VQDMULH.S32 Q10, Q4, Q14 @ MULHIGH(cosx, t0) VQDMULH.S32 Q11, Q5, Q15 @ MULHIGH(sinx, t1) VQDMULH.S32 Q12, Q5, Q14 @ MULHIGH(cosx, t1) VQDMULH.S32 Q13, Q4, Q15 @ MULHIGH(sinx, t0) - + VADD.S32 Q8, Q10, Q11 @ MULHIGH(cosx, t0) + MULHIGH(sinx, t1) - VSUB.S32 Q9, Q12, Q13 @ MULHIGH(cosx, t1) - MULHIGH(sinx, t0) - - VLD2.I32 {D12, D13, D14, D15}, [r8] + VSUB.S32 Q9, Q12, Q13 @ MULHIGH(cosx, t1) - MULHIGH(sinx, t0) + + VLD2.I32 {D12, D13, D14, D15}, [r8] VLD2.I32 {D28, D29, D30, D31}, [r6]! - + VQDMULH.S32 Q10, Q6, Q14 @ MULHIGH(cosx, t0) VQDMULH.S32 Q11, Q7, Q15 @ MULHIGH(sinx, t1) VQDMULH.S32 Q12, Q7, Q14 @ MULHIGH(cosx, t1) VQDMULH.S32 Q13, Q6, Q15 @ MULHIGH(sinx, t0) - + VADD.S32 Q6, Q10, Q11 @ MULHIGH(cosx, t0) + MULHIGH(sinx, t1) - VSUB.S32 Q7, Q12, Q13 @ MULHIGH(cosx, t1) - MULHIGH(sinx, t0) - + VSUB.S32 Q7, Q12, Q13 @ MULHIGH(cosx, t1) - MULHIGH(sinx, t0) + VADD.S32 Q4, Q8, Q6 @ r4 = t0 + r6@ VSUB.S32 Q5, Q7, Q9 @ r5 = r7 - t1@ VSUB.S32 Q6, Q8, Q6 @ r6 = t0 - r6@ VADD.S32 Q7, Q7, Q9 @ r7 = r7 + t1@ - + VADD.S32 Q8, Q0, Q5 @ xptr[0] = r0 + r5@ VADD.S32 Q9, Q1, Q6 @ xptr[1] = r1 + r6@ VST2.I32 {D16, D17, D18, D19}, [r8] - + VSUB.S32 Q10, Q2, Q4 @ xptr[0] = r2 - r4@ sub r8, r8, r5 @ xptr -= step@ VSUB.S32 Q11, Q3, Q7 @ xptr[1] = r3 - r7@ VST2.I32 {D20, D21, D22, D23}, [r8] - + VSUB.S32 Q8, Q0, Q5 @ xptr[0] = r0 - r5@ sub r8, r8, r5 @ xptr -= step@ VSUB.S32 Q9, Q1, Q6 @ xptr[1] = r1 - r6@ VST2.I32 {D16, D17, D18, D19}, [r8] - + VADD.S32 Q10, Q2, Q4 @ xptr[0] = r2 + r4@ sub r8, r8, r5 @ xptr -= step@ VADD.S32 Q11, Q3, Q7 @ xptr[1] = r3 + r7@ VST2.I32 {D20, D21, D22, D23}, [r8]! - - subs r4, r4, #4 - bne Radix4FFT_LOOP3 - -Radix4FFT_LOOP2_END: - add r8, r8, r12 - sub r7, r7, #1 + + subs r4, r4, #4 + bne Radix4FFT_LOOP3 + +Radix4FFT_LOOP2_END: + add r8, r8, r12 + sub r7, r7, #1 cmp r7, #0 - bhi Radix4FFT_LOOP2 - -Radix4FFT_LOOP1_END: - add r3, r12, r3 - mov r2, r2, lsl #2 - movs r1, r1, asr #2 - bne Radix4FFT_LOOP1 - -Radix4FFT_END: + bhi Radix4FFT_LOOP2 + +Radix4FFT_LOOP1_END: + add r3, r12, r3 + mov r2, r2, lsl #2 + movs r1, r1, asr #2 + bne Radix4FFT_LOOP1 + +Radix4FFT_END: ldmia sp!, {r4 - r11, pc} - + @ENDP @ |Radix4FFT| .end \ No newline at end of file diff --git a/media/libstagefright/codecs/aacenc/src/band_nrg.c b/media/libstagefright/codecs/aacenc/src/band_nrg.c index 89c39b6..7501af1 100644 --- a/media/libstagefright/codecs/aacenc/src/band_nrg.c +++ b/media/libstagefright/codecs/aacenc/src/band_nrg.c @@ -37,18 +37,18 @@ void CalcBandEnergy(const Word32 *mdctSpectrum, Word32 *bandEnergySum) { Word32 i, j; - Word32 accuSum = 0; + Word32 accuSum = 0; for (i=0; i> 1; @@ -86,17 +86,17 @@ void CalcBandEnergyMS(const Word32 *mdctSpectrumLeft, accuMid = L_add(accuMid, MULHIGH(specm, specm)); accuSide = L_add(accuSide, MULHIGH(specs, specs)); } - + accuMid = L_add(accuMid, accuMid); accuSide = L_add(accuSide, accuSide); - bandEnergyMid[i] = accuMid; + bandEnergyMid[i] = accuMid; accuMidSum = L_add(accuMidSum, accuMid); - bandEnergySide[i] = accuSide; + bandEnergySide[i] = accuSide; accuSideSum = L_add(accuSideSum, accuSide); - + } - *bandEnergyMidSum = accuMidSum; - *bandEnergySideSum = accuSideSum; + *bandEnergyMidSum = accuMidSum; + *bandEnergySideSum = accuSideSum; } #endif \ No newline at end of file diff --git a/media/libstagefright/codecs/aacenc/src/bit_cnt.c b/media/libstagefright/codecs/aacenc/src/bit_cnt.c index 8853efc..9fe511c 100644 --- a/media/libstagefright/codecs/aacenc/src/bit_cnt.c +++ b/media/libstagefright/codecs/aacenc/src/bit_cnt.c @@ -26,14 +26,14 @@ #define HI_LTAB(a) (a>>8) #define LO_LTAB(a) (a & 0xff) -#define EXPAND(a) ((((Word32)(a&0xff00)) << 8)|(Word32)(a&0xff)) +#define EXPAND(a) ((((Word32)(a&0xff00)) << 8)|(Word32)(a&0xff)) /***************************************************************************** * * function name: count1_2_3_4_5_6_7_8_9_10_11 -* description: counts tables 1-11 -* returns: +* description: counts tables 1-11 +* returns: * input: quantized spectrum * output: bitCount for tables 1-11 * @@ -46,51 +46,51 @@ static void count1_2_3_4_5_6_7_8_9_10_11(const Word16 *values, Word32 t0,t1,t2,t3,i; Word32 bc1_2,bc3_4,bc5_6,bc7_8,bc9_10; Word16 bc11,sc; - - bc1_2=0; - bc3_4=0; - bc5_6=0; - bc7_8=0; - bc9_10=0; - bc11=0; - sc=0; + + bc1_2=0; + bc3_4=0; + bc5_6=0; + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; for(i=0;i0) + (t1>0) + (t2>0) + (t3>0); } - + bitCount[1]=extract_h(bc1_2); bitCount[2]=extract_l(bc1_2); bitCount[3]=extract_h(bc3_4) + sc; @@ -108,8 +108,8 @@ static void count1_2_3_4_5_6_7_8_9_10_11(const Word16 *values, /***************************************************************************** * * function name: count3_4_5_6_7_8_9_10_11 -* description: counts tables 3-11 -* returns: +* description: counts tables 3-11 +* returns: * input: quantized spectrum * output: bitCount for tables 3-11 * @@ -122,26 +122,26 @@ static void count3_4_5_6_7_8_9_10_11(const Word16 *values, Word32 t0,t1,t2,t3, i; Word32 bc3_4,bc5_6,bc7_8,bc9_10; Word16 bc11,sc; - - bc3_4=0; - bc5_6=0; - bc7_8=0; - bc9_10=0; - bc11=0; - sc=0; + + bc3_4=0; + bc5_6=0; + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; for(i=0;i0) + (t1>0) + (t2>0) + (t3>0); + + sc = sc + (t0>0) + (t1>0) + (t2>0) + (t3>0); } - - bitCount[1]=INVALID_BITCOUNT; - bitCount[2]=INVALID_BITCOUNT; + + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; bitCount[3]=extract_h(bc3_4) + sc; bitCount[4]=extract_l(bc3_4) + sc; bitCount[5]=extract_h(bc5_6); @@ -175,7 +175,7 @@ static void count3_4_5_6_7_8_9_10_11(const Word16 *values, bitCount[9]=extract_h(bc9_10) + sc; bitCount[10]=extract_l(bc9_10) + sc; bitCount[11]=bc11 + sc; - + } @@ -183,8 +183,8 @@ static void count3_4_5_6_7_8_9_10_11(const Word16 *values, /***************************************************************************** * * function name: count5_6_7_8_9_10_11 -* description: counts tables 5-11 -* returns: +* description: counts tables 5-11 +* returns: * input: quantized spectrum * output: bitCount for tables 5-11 * @@ -198,33 +198,33 @@ static void count5_6_7_8_9_10_11(const Word16 *values, Word32 bc5_6,bc7_8,bc9_10; Word16 bc11,sc; - bc5_6=0; - bc7_8=0; - bc9_10=0; - bc11=0; - sc=0; + bc5_6=0; + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; for(i=0;i0) + (t1>0); } - bitCount[1]=INVALID_BITCOUNT; - bitCount[2]=INVALID_BITCOUNT; - bitCount[3]=INVALID_BITCOUNT; - bitCount[4]=INVALID_BITCOUNT; + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; bitCount[5]=extract_h(bc5_6); bitCount[6]=extract_l(bc5_6); bitCount[7]=extract_h(bc7_8) + sc; @@ -232,15 +232,15 @@ static void count5_6_7_8_9_10_11(const Word16 *values, bitCount[9]=extract_h(bc9_10) + sc; bitCount[10]=extract_l(bc9_10) + sc; bitCount[11]=bc11 + sc; - + } /***************************************************************************** * * function name: count7_8_9_10_11 -* description: counts tables 7-11 -* returns: +* description: counts tables 7-11 +* returns: * input: quantized spectrum * output: bitCount for tables 7-11 * @@ -253,43 +253,43 @@ static void count7_8_9_10_11(const Word16 *values, Word32 t0,t1, i; Word32 bc7_8,bc9_10; Word16 bc11,sc; - - bc7_8=0; - bc9_10=0; - bc11=0; - sc=0; + + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; for(i=0;i0) + (t1>0); } - bitCount[1]=INVALID_BITCOUNT; - bitCount[2]=INVALID_BITCOUNT; - bitCount[3]=INVALID_BITCOUNT; - bitCount[4]=INVALID_BITCOUNT; - bitCount[5]=INVALID_BITCOUNT; - bitCount[6]=INVALID_BITCOUNT; + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; bitCount[7]=extract_h(bc7_8) + sc; bitCount[8]=extract_l(bc7_8) + sc; bitCount[9]=extract_h(bc9_10) + sc; bitCount[10]=extract_l(bc9_10) + sc; bitCount[11]=bc11 + sc; - + } /***************************************************************************** * * function name: count9_10_11 -* description: counts tables 9-11 -* returns: +* description: counts tables 9-11 +* returns: * input: quantized spectrum * output: bitCount for tables 9-11 * @@ -299,45 +299,45 @@ static void count9_10_11(const Word16 *values, Word16 *bitCount) { - Word32 t0,t1,i; + Word32 t0,t1,i; Word32 bc9_10; Word16 bc11,sc; - bc9_10=0; - bc11=0; - sc=0; + bc9_10=0; + bc11=0; + sc=0; for(i=0;i0) + (t1>0); } - bitCount[1]=INVALID_BITCOUNT; - bitCount[2]=INVALID_BITCOUNT; - bitCount[3]=INVALID_BITCOUNT; - bitCount[4]=INVALID_BITCOUNT; - bitCount[5]=INVALID_BITCOUNT; - bitCount[6]=INVALID_BITCOUNT; - bitCount[7]=INVALID_BITCOUNT; - bitCount[8]=INVALID_BITCOUNT; + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=INVALID_BITCOUNT; + bitCount[8]=INVALID_BITCOUNT; bitCount[9]=extract_h(bc9_10) + sc; bitCount[10]=extract_l(bc9_10) + sc; bitCount[11]=bc11 + sc; - + } - + /***************************************************************************** * * function name: count11 -* description: counts table 11 -* returns: +* description: counts table 11 +* returns: * input: quantized spectrum * output: bitCount for table 11 * @@ -347,37 +347,37 @@ static void count9_10_11(const Word16 *values, Word16 *bitCount) { Word32 t0,t1,i; - Word16 bc11,sc; + Word16 bc11,sc; - bc11=0; - sc=0; + bc11=0; + sc=0; for(i=0;i0) + (t1>0); } - bitCount[1]=INVALID_BITCOUNT; - bitCount[2]=INVALID_BITCOUNT; - bitCount[3]=INVALID_BITCOUNT; - bitCount[4]=INVALID_BITCOUNT; - bitCount[5]=INVALID_BITCOUNT; - bitCount[6]=INVALID_BITCOUNT; - bitCount[7]=INVALID_BITCOUNT; - bitCount[8]=INVALID_BITCOUNT; - bitCount[9]=INVALID_BITCOUNT; - bitCount[10]=INVALID_BITCOUNT; + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=INVALID_BITCOUNT; + bitCount[8]=INVALID_BITCOUNT; + bitCount[9]=INVALID_BITCOUNT; + bitCount[10]=INVALID_BITCOUNT; bitCount[11]=bc11 + sc; } /***************************************************************************** * * function name: countEsc -* description: counts table 11 (with Esc) -* returns: +* description: counts table 11 (with Esc) +* returns: * input: quantized spectrum * output: bitCount for tables 11 (with Esc) * @@ -388,31 +388,31 @@ static void countEsc(const Word16 *values, Word16 *bitCount) { Word32 t0,t1,t00,t01,i; - Word16 bc11,ec,sc; + Word16 bc11,ec,sc; - bc11=0; - sc=0; - ec=0; + bc11=0; + sc=0; + ec=0; for(i=0;i0) + (t1>0); t00 = min(t0,16); t01 = min(t1,16); bc11 = bc11 + huff_ltab11[t00][t01]; - - + + if(t0 >= 16){ ec = ec + 5; while(sub(t0=(t0 >> 1), 16) >= 0) { ec = ec + 2; } } - - + + if(t1 >= 16){ ec = ec + 5; while(sub(t1=(t1 >> 1), 16) >= 0) { @@ -420,16 +420,16 @@ static void countEsc(const Word16 *values, } } } - bitCount[1]=INVALID_BITCOUNT; - bitCount[2]=INVALID_BITCOUNT; - bitCount[3]=INVALID_BITCOUNT; - bitCount[4]=INVALID_BITCOUNT; - bitCount[5]=INVALID_BITCOUNT; - bitCount[6]=INVALID_BITCOUNT; - bitCount[7]=INVALID_BITCOUNT; - bitCount[8]=INVALID_BITCOUNT; - bitCount[9]=INVALID_BITCOUNT; - bitCount[10]=INVALID_BITCOUNT; + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=INVALID_BITCOUNT; + bitCount[8]=INVALID_BITCOUNT; + bitCount[9]=INVALID_BITCOUNT; + bitCount[10]=INVALID_BITCOUNT; bitCount[11]=bc11 + sc + ec; } @@ -463,7 +463,7 @@ static COUNT_FUNCTION countFuncTable[CODE_BOOK_ESC_LAV+1] = /***************************************************************************** * * function name: bitCount -* description: count bits +* description: count bits * *****************************************************************************/ Word16 bitCount(const Word16 *values, @@ -474,7 +474,7 @@ Word16 bitCount(const Word16 *values, /* check if we can use codebook 0 */ - + if(maxVal == 0) bitCount[0] = 0; else @@ -489,7 +489,7 @@ Word16 bitCount(const Word16 *values, /***************************************************************************** * * function name: codeValues -* description: write huffum bits +* description: write huffum bits * *****************************************************************************/ Word16 codeValues(Word16 *values, Word16 width, Word16 codeBook, HANDLE_BIT_BUF hBitstream) @@ -499,85 +499,85 @@ Word16 codeValues(Word16 *values, Word16 width, Word16 codeBook, HANDLE_BIT_BUF UWord16 codeWord, codeLength; Word16 sign, signLength; - + switch (codeBook) { case CODE_BOOK_ZERO_NO: break; case CODE_BOOK_1_NO: for(i=0; i= 16){ Word16 n, p; - n=0; - p=t0; + n=0; + p=t0; while(sub(p=(p >> 1), 16) >= 0){ - + WriteBits(hBitstream,1,1); n = n + 1; } @@ -841,13 +841,13 @@ Word16 codeValues(Word16 *values, Word16 width, Word16 codeBook, HANDLE_BIT_BUF n = n + 4; WriteBits(hBitstream,(t0 - (1 << n)),n); } - + if(t1 >= 16){ Word16 n, p; - n=0; - p=t1; + n=0; + p=t1; while(sub(p=(p >> 1), 16) >= 0){ - + WriteBits(hBitstream,1,1); n = n + 1; } @@ -871,15 +871,15 @@ Word16 bitCountScalefactorDelta(Word16 delta) Word16 codeScalefactorDelta(Word16 delta, HANDLE_BIT_BUF hBitstream) { - Word32 codeWord; + Word32 codeWord; Word16 codeLength; - - + + if(delta > CODE_BOOK_SCF_LAV || delta < -CODE_BOOK_SCF_LAV) return(1); - - codeWord = huff_ctabscf[delta + CODE_BOOK_SCF_LAV]; - codeLength = huff_ltabscf[delta + CODE_BOOK_SCF_LAV]; + + codeWord = huff_ctabscf[delta + CODE_BOOK_SCF_LAV]; + codeLength = huff_ltabscf[delta + CODE_BOOK_SCF_LAV]; WriteBits(hBitstream,codeWord,codeLength); return(0); } diff --git a/media/libstagefright/codecs/aacenc/src/bitbuffer.c b/media/libstagefright/codecs/aacenc/src/bitbuffer.c index ef13c13..5615ac3 100644 --- a/media/libstagefright/codecs/aacenc/src/bitbuffer.c +++ b/media/libstagefright/codecs/aacenc/src/bitbuffer.c @@ -32,15 +32,15 @@ static void updateBitBufWordPtr(HANDLE_BIT_BUF hBitBuf, UWord8 **pBitBufWord, Word16 cnt) { - *pBitBufWord += cnt; + *pBitBufWord += cnt; + - if(*pBitBufWord > hBitBuf->pBitBufEnd) { - *pBitBufWord -= (hBitBuf->pBitBufEnd - hBitBuf->pBitBufBase + 1); + *pBitBufWord -= (hBitBuf->pBitBufEnd - hBitBuf->pBitBufBase + 1); } - + if(*pBitBufWord < hBitBuf->pBitBufBase) { - *pBitBufWord += (hBitBuf->pBitBufEnd - hBitBuf->pBitBufBase + 1); + *pBitBufWord += (hBitBuf->pBitBufEnd - hBitBuf->pBitBufBase + 1); } } @@ -57,18 +57,18 @@ HANDLE_BIT_BUF CreateBitBuffer(HANDLE_BIT_BUF hBitBuf, { assert(bitBufSize*8 <= 32768); - hBitBuf->pBitBufBase = pBitBufBase; - hBitBuf->pBitBufEnd = pBitBufBase + bitBufSize - 1; + hBitBuf->pBitBufBase = pBitBufBase; + hBitBuf->pBitBufEnd = pBitBufBase + bitBufSize - 1; - hBitBuf->pWriteNext = pBitBufBase; + hBitBuf->pWriteNext = pBitBufBase; hBitBuf->cache = 0; - - hBitBuf->wBitPos = 0; - hBitBuf->cntBits = 0; - - hBitBuf->size = (bitBufSize << 3); - hBitBuf->isValid = 1; + + hBitBuf->wBitPos = 0; + hBitBuf->cntBits = 0; + + hBitBuf->size = (bitBufSize << 3); + hBitBuf->isValid = 1; return hBitBuf; } @@ -82,8 +82,8 @@ HANDLE_BIT_BUF CreateBitBuffer(HANDLE_BIT_BUF hBitBuf, void DeleteBitBuffer(HANDLE_BIT_BUF *hBitBuf) { if(*hBitBuf) - (*hBitBuf)->isValid = 0; - *hBitBuf = NULL; + (*hBitBuf)->isValid = 0; + *hBitBuf = NULL; } /***************************************************************************** @@ -96,15 +96,15 @@ void ResetBitBuf(HANDLE_BIT_BUF hBitBuf, UWord8 *pBitBufBase, Word16 bitBufSize) { - hBitBuf->pBitBufBase = pBitBufBase; - hBitBuf->pBitBufEnd = pBitBufBase + bitBufSize - 1; + hBitBuf->pBitBufBase = pBitBufBase; + hBitBuf->pBitBufEnd = pBitBufBase + bitBufSize - 1; + - - hBitBuf->pWriteNext = pBitBufBase; + hBitBuf->pWriteNext = pBitBufBase; + + hBitBuf->wBitPos = 0; + hBitBuf->cntBits = 0; - hBitBuf->wBitPos = 0; - hBitBuf->cntBits = 0; - hBitBuf->cache = 0; } @@ -117,7 +117,7 @@ void ResetBitBuf(HANDLE_BIT_BUF hBitBuf, void CopyBitBuf(HANDLE_BIT_BUF hBitBufSrc, HANDLE_BIT_BUF hBitBufDst) { - *hBitBufDst = *hBitBufSrc; + *hBitBufDst = *hBitBufSrc; } /***************************************************************************** @@ -148,25 +148,25 @@ Word16 WriteBits(HANDLE_BIT_BUF hBitBuf, if(noBitsToWrite == 0) return noBitsToWrite; - hBitBuf->cntBits += noBitsToWrite; + hBitBuf->cntBits += noBitsToWrite; wBitPos = hBitBuf->wBitPos; wBitPos += noBitsToWrite; - writeValue <<= 32 - wBitPos; + writeValue <<= 32 - wBitPos; writeValue |= hBitBuf->cache; - - while (wBitPos >= 8) + + while (wBitPos >= 8) { UWord8 tmp; tmp = (UWord8)((writeValue >> 24) & 0xFF); - - *hBitBuf->pWriteNext++ = tmp; + + *hBitBuf->pWriteNext++ = tmp; writeValue <<= 8; wBitPos -= 8; } - + hBitBuf->wBitPos = wBitPos; hBitBuf->cache = writeValue; - + return noBitsToWrite; } diff --git a/media/libstagefright/codecs/aacenc/src/bitenc.c b/media/libstagefright/codecs/aacenc/src/bitenc.c index ea34407..fcc12dd 100644 --- a/media/libstagefright/codecs/aacenc/src/bitenc.c +++ b/media/libstagefright/codecs/aacenc/src/bitenc.c @@ -46,7 +46,7 @@ static Word32 encodeSpectralData(Word16 *sfbOffset, Word16 i,sfb; Word16 dbgVal; SECTION_INFO* psectioninfo; - dbgVal = GetBitsAvail(hBitStream); + dbgVal = GetBitsAvail(hBitStream); for(i=0; inoOfSections; i++) { psectioninfo = &(sectionData->sectionInfo[i]); @@ -100,7 +100,7 @@ static void encodeIcsInfo(Word16 blockType, WriteBits(hBitStream,blockType,2); WriteBits(hBitStream,windowShape,1); - + switch(blockType){ case LONG_WINDOW: case START_WINDOW: @@ -137,30 +137,30 @@ static Word32 encodeSectionData(SECTION_DATA *sectionData, Word16 sectLen; Word16 i; Word16 dbgVal=GetBitsAvail(hBitStream); - - + + switch(sectionData->blockType) { case LONG_WINDOW: case START_WINDOW: case STOP_WINDOW: - sectEscapeVal = SECT_ESC_VAL_LONG; - sectLenBits = SECT_BITS_LONG; + sectEscapeVal = SECT_ESC_VAL_LONG; + sectLenBits = SECT_BITS_LONG; break; case SHORT_WINDOW: - sectEscapeVal = SECT_ESC_VAL_SHORT; - sectLenBits = SECT_BITS_SHORT; + sectEscapeVal = SECT_ESC_VAL_SHORT; + sectLenBits = SECT_BITS_SHORT; break; } for(i=0;inoOfSections;i++) { WriteBits(hBitStream,sectionData->sectionInfo[i].codeBook,4); - sectLen = sectionData->sectionInfo[i].sfbCnt; + sectLen = sectionData->sectionInfo[i].sfbCnt; while(sectLen >= sectEscapeVal) { - + WriteBits(hBitStream,sectEscapeVal,sectLenBits); sectLen = sectLen - sectEscapeVal; } @@ -183,24 +183,24 @@ static Word32 encodeScaleFactorData(UWord16 *maxValueInSfb, { Word16 i,j,lastValScf,deltaScf; Word16 dbgVal = GetBitsAvail(hBitStream); - SECTION_INFO* psectioninfo; + SECTION_INFO* psectioninfo; - lastValScf=scalefac[sectionData->firstScf]; + lastValScf=scalefac[sectionData->firstScf]; for(i=0;inoOfSections;i++){ - psectioninfo = &(sectionData->sectionInfo[i]); + psectioninfo = &(sectionData->sectionInfo[i]); if (psectioninfo->codeBook != CODE_BOOK_ZERO_NO){ for (j=psectioninfo->sfbStart; jsfbStart+psectioninfo->sfbCnt; j++){ - + if(maxValueInSfb[j] == 0) { - deltaScf = 0; + deltaScf = 0; } else { deltaScf = lastValScf - scalefac[j]; - lastValScf = scalefac[j]; + lastValScf = scalefac[j]; } - + if(codeScalefactorDelta(deltaScf,hBitStream)){ return(1); } @@ -227,7 +227,7 @@ static void encodeMSInfo(Word16 sfbCnt, { Word16 sfb, sfbOff; - + switch(msDigest) { case MS_NONE: @@ -242,7 +242,7 @@ static void encodeMSInfo(Word16 sfbCnt, WriteBits(hBitStream,SI_MS_MASK_SOME,2); for(sfbOff = 0; sfbOff < sfbCnt; sfbOff+=grpSfb) { for(sfb=0; sfb 3 || tnsInfo.coef[i*TNS_MAX_ORDER_SHORT+k] < -4) { - coefBits = 4; + coefBits = 4; break; } } } else { - coefBits = 2; + coefBits = 2; for(k=0; k 1 || tnsInfo.coef[i*TNS_MAX_ORDER_SHORT+k] < -2) { - coefBits = 3; + coefBits = 3; break; } } @@ -335,7 +335,7 @@ static void encodeTnsData(TNS_INFO tnsInfo, WriteBits(hBitStream, tnsInfo.coefRes[i] - coefBits, 1); /*coef_compres*/ for (k=0; kfirstScf], hBitStream); - + if(!commonWindow) { encodeIcsInfo(sectionData->blockType, windowShape, groupingMask, sectionData, hBitStream); } @@ -536,7 +536,7 @@ static void writeFillElement( const UWord8 *ancBytes, Write fill Element(s): amount of a fill element can be 7+X*8 Bits, X element of [0..270] */ - + while(totFillBits >= (3+4)) { cnt = min(((totFillBits - (3+4)) >> 3), ((1<<4)-1)); @@ -545,7 +545,7 @@ static void writeFillElement( const UWord8 *ancBytes, totFillBits = totFillBits - (3+4); - + if ((cnt == (1<<4)-1)) { esc_count = min( ((totFillBits >> 3) - ((1<<4)-1)), (1<<8)-1); @@ -555,7 +555,7 @@ static void writeFillElement( const UWord8 *ancBytes, } for(i=0;iqcElement.adtsUsed) /* write adts header*/ { WriteBits(hBitStream, 0xFFF, 12); /* 12 bit Syncword */ @@ -601,23 +601,23 @@ Word16 WriteBitstream (HANDLE_BIT_BUF hBitStream, 6 channels or less, else a channel configuration should be written */ WriteBits(hBitStream, 0, 1); /* original/copy */ - WriteBits(hBitStream, 0, 1); /* home */ - + WriteBits(hBitStream, 0, 1); /* home */ + /* Variable ADTS header */ WriteBits(hBitStream, 0, 1); /* copyr. id. bit */ WriteBits(hBitStream, 0, 1); /* copyr. id. start */ WriteBits(hBitStream, *globUsedBits >> 3, 13); WriteBits(hBitStream, 0x7FF, 11); /* buffer fullness (0x7FF for VBR) */ - WriteBits(hBitStream, 0, 2); /* raw data blocks (0+1=1) */ + WriteBits(hBitStream, 0, 2); /* raw data blocks (0+1=1) */ } - *globUsedBits=0; + *globUsedBits=0; { Word16 *sfbOffset[2]; TNS_INFO tnsInfo[2]; - elementUsedBits = 0; + elementUsedBits = 0; switch (elInfo.elType) { @@ -636,7 +636,7 @@ Word16 WriteBitstream (HANDLE_BIT_BUF hBitStream, { Word16 msDigest; Word16 *msFlags = psyOut->psyOutElement.toolsInfo.msMask; - msDigest = psyOut->psyOutElement.toolsInfo.msDigest; + msDigest = psyOut->psyOutElement.toolsInfo.msDigest; sfbOffset[0] = psyOut->psyOutChannel[elInfo.ChannelIndex[0]].sfbOffsets; sfbOffset[1] = @@ -668,20 +668,20 @@ Word16 WriteBitstream (HANDLE_BIT_BUF hBitStream, } writeFillElement(NULL, - qcOut->totFillBits, + qcOut->totFillBits, hBitStream); WriteBits(hBitStream,ID_END,3); /* byte alignement */ - WriteBits(hBitStream,0, (8 - (hBitStream->cntBits & 7)) & 7); - + WriteBits(hBitStream,0, (8 - (hBitStream->cntBits & 7)) & 7); + *globUsedBits = *globUsedBits- bitMarkUp; - bitMarkUp = GetBitsAvail(hBitStream); + bitMarkUp = GetBitsAvail(hBitStream); *globUsedBits = *globUsedBits + bitMarkUp; frameBits = frameBits + *globUsedBits; - + if (frameBits != (qcOut->totStaticBitsUsed+qcOut->totDynBitsUsed + qcOut->totAncBitsUsed + qcOut->totFillBits + qcOut->alignBits)) { return(-1); diff --git a/media/libstagefright/codecs/aacenc/src/block_switch.c b/media/libstagefright/codecs/aacenc/src/block_switch.c index d54e32f..47fd15e 100644 --- a/media/libstagefright/codecs/aacenc/src/block_switch.c +++ b/media/libstagefright/codecs/aacenc/src/block_switch.c @@ -52,7 +52,7 @@ CalcWindowEnergy(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, IIR high pass coeffs */ Word32 hiPassCoeff[BLOCK_SWITCHING_IIR_LEN] = { - 0xbec8b439, 0x609d4952 /* -0.5095f, 0.7548f */ + 0xbec8b439, 0x609d4952 /* -0.5095f, 0.7548f */ }; static const Word32 accWindowNrgFac = 0x26666666; /* factor for accumulating filtered window energies 0.3 */ @@ -76,8 +76,8 @@ Word16 InitBlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, const Word32 bitRate, const Word16 nChannels) { /* select attackRatio */ - - if ((sub(nChannels,1)==0 && L_sub(bitRate, 24000) > 0) || + + if ((sub(nChannels,1)==0 && L_sub(bitRate, 24000) > 0) || (sub(nChannels,1)>0 && bitRate > (nChannels * 16000))) { blockSwitchingControl->invAttackRatio = invAttackRatioHighBr; } @@ -116,7 +116,7 @@ Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, /* Reset grouping info */ for (i=0; igroupLen[i] = 0; + blockSwitchingControl->groupLen[i] = 0; } @@ -125,21 +125,21 @@ Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, &blockSwitchingControl->attackIndex, BLOCK_SWITCH_WINDOWS); - blockSwitchingControl->attackIndex = blockSwitchingControl->lastAttackIndex; + blockSwitchingControl->attackIndex = blockSwitchingControl->lastAttackIndex; /* Set grouping info */ - blockSwitchingControl->noOfGroups = MAX_NO_OF_GROUPS; + blockSwitchingControl->noOfGroups = MAX_NO_OF_GROUPS; for (i=0; igroupLen[i] = suggestedGroupingTable[blockSwitchingControl->attackIndex][i]; + blockSwitchingControl->groupLen[i] = suggestedGroupingTable[blockSwitchingControl->attackIndex][i]; } - + /* if the samplerate is less than 16000, it should be all the short block, avoid pre&post echo */ if(sampleRate >= 16000) { /* Save current window energy as last window energy */ for (w=0; wwindowNrg[0][w] = blockSwitchingControl->windowNrg[1][w]; - blockSwitchingControl->windowNrgF[0][w] = blockSwitchingControl->windowNrgF[1][w]; + blockSwitchingControl->windowNrg[0][w] = blockSwitchingControl->windowNrg[1][w]; + blockSwitchingControl->windowNrgF[0][w] = blockSwitchingControl->windowNrgF[1][w]; } @@ -147,10 +147,10 @@ Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, CalcWindowEnergy(blockSwitchingControl, timeSignal, chIncrement, BLOCK_SWITCH_WINDOW_LEN); /* reset attack */ - blockSwitchingControl->attack = FALSE; + blockSwitchingControl->attack = FALSE; - enMax = 0; - enM1 = blockSwitchingControl->windowNrgF[0][BLOCK_SWITCH_WINDOWS-1]; + enMax = 0; + enM1 = blockSwitchingControl->windowNrgF[0][BLOCK_SWITCH_WINDOWS-1]; for (w=0; winvAttackRatio) >> windowNrgF_Shf) > blockSwitchingControl->accWindowNrg ) { - blockSwitchingControl->attack = TRUE; - blockSwitchingControl->lastAttackIndex = w; + blockSwitchingControl->attack = TRUE; + blockSwitchingControl->lastAttackIndex = w; } - enM1 = blockSwitchingControl->windowNrgF[1][w]; + enM1 = blockSwitchingControl->windowNrgF[1][w]; enMax = max(enMax, enM1); } if (enMax < minAttackNrg) { - blockSwitchingControl->attack = FALSE; + blockSwitchingControl->attack = FALSE; } } else @@ -188,22 +188,22 @@ Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, blockSwitchingControl->attack = TRUE; } - /* Check if attack spreads over frame border */ + /* Check if attack spreads over frame border */ if ((!blockSwitchingControl->attack) && (blockSwitchingControl->lastattack)) { - + if (blockSwitchingControl->attackIndex == TRANS_FAC-1) { - blockSwitchingControl->attack = TRUE; + blockSwitchingControl->attack = TRUE; } - blockSwitchingControl->lastattack = FALSE; + blockSwitchingControl->lastattack = FALSE; } else { - blockSwitchingControl->lastattack = blockSwitchingControl->attack; + blockSwitchingControl->lastattack = blockSwitchingControl->attack; } - blockSwitchingControl->windowSequence = blockSwitchingControl->nextwindowSequence; + blockSwitchingControl->windowSequence = blockSwitchingControl->nextwindowSequence; + - if (blockSwitchingControl->attack) { blockSwitchingControl->nextwindowSequence = SHORT_WINDOW; } @@ -211,27 +211,27 @@ Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, blockSwitchingControl->nextwindowSequence = LONG_WINDOW; } - /* update short block group */ + /* update short block group */ if (blockSwitchingControl->nextwindowSequence == SHORT_WINDOW) { - + if (blockSwitchingControl->windowSequence== LONG_WINDOW) { - blockSwitchingControl->windowSequence = START_WINDOW; + blockSwitchingControl->windowSequence = START_WINDOW; } - + if (blockSwitchingControl->windowSequence == STOP_WINDOW) { - blockSwitchingControl->windowSequence = SHORT_WINDOW; - blockSwitchingControl->noOfGroups = 3; - blockSwitchingControl->groupLen[0] = 3; - blockSwitchingControl->groupLen[1] = 3; - blockSwitchingControl->groupLen[2] = 2; + blockSwitchingControl->windowSequence = SHORT_WINDOW; + blockSwitchingControl->noOfGroups = 3; + blockSwitchingControl->groupLen[0] = 3; + blockSwitchingControl->groupLen[1] = 3; + blockSwitchingControl->groupLen[2] = 2; } } - /* update block type */ + /* update block type */ if (blockSwitchingControl->nextwindowSequence == LONG_WINDOW) { - + if (blockSwitchingControl->windowSequence == SHORT_WINDOW) { - blockSwitchingControl->nextwindowSequence = STOP_WINDOW; + blockSwitchingControl->nextwindowSequence = STOP_WINDOW; } } @@ -252,17 +252,17 @@ static Word32 SrchMaxWithIndex(const Word32 in[], Word16 *index, Word16 n) Word32 i, idx; /* Search maximum value in array and return index and value */ - max = 0; - idx = 0; + max = 0; + idx = 0; for (i = 0; i < n; i++) { - + if (in[i+1] > max) { - max = in[i+1]; - idx = i; + max = in[i+1]; + idx = i; } } - *index = idx; + *index = idx; return(max); } @@ -292,11 +292,11 @@ Word32 CalcWindowEnergy(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, states1 = blockSwitchingControl->iirStates[1]; Coeff0 = hiPassCoeff[0]; Coeff1 = hiPassCoeff[1]; - tidx = 0; + tidx = 0; for (w=0; w < BLOCK_SWITCH_WINDOWS; w++) { - accuUE = 0; - accuFE = 0; + accuUE = 0; + accuFE = 0; for(i=0; i> ENERGY_SHIFT; accuFE += (tempFiltered * tempFiltered) >> ENERGY_SHIFT; } - blockSwitchingControl->windowNrg[1][w] = accuUE; - blockSwitchingControl->windowNrgF[1][w] = accuFE; + blockSwitchingControl->windowNrg[1][w] = accuUE; + blockSwitchingControl->windowNrgF[1][w] = accuFE; } @@ -346,8 +346,8 @@ static Word16 IIRFilter(const Word16 in, const Word32 coeff[], Word32 states[]) accu2 = fixmul( coeff[0], states[1] ); out = accu3 - accu2; - states[0] = accu1; - states[1] = out; + states[0] = accu1; + states[1] = out; return round16(out); } @@ -374,54 +374,54 @@ Word16 SyncBlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControlLeft, const Word16 nChannels) { Word16 i; - Word16 patchType = LONG_WINDOW; + Word16 patchType = LONG_WINDOW; + - if (nChannels == 1) { /* Mono */ if (blockSwitchingControlLeft->windowSequence != SHORT_WINDOW) { - blockSwitchingControlLeft->noOfGroups = 1; - blockSwitchingControlLeft->groupLen[0] = 1; + blockSwitchingControlLeft->noOfGroups = 1; + blockSwitchingControlLeft->groupLen[0] = 1; for (i=1; igroupLen[i] = 0; + blockSwitchingControlLeft->groupLen[i] = 0; } } } else { /* Stereo common Window */ - patchType = synchronizedBlockTypeTable[patchType][blockSwitchingControlLeft->windowSequence]; - patchType = synchronizedBlockTypeTable[patchType][blockSwitchingControlRight->windowSequence]; + patchType = synchronizedBlockTypeTable[patchType][blockSwitchingControlLeft->windowSequence]; + patchType = synchronizedBlockTypeTable[patchType][blockSwitchingControlRight->windowSequence]; /* Set synchronized Blocktype */ - blockSwitchingControlLeft->windowSequence = patchType; - blockSwitchingControlRight->windowSequence = patchType; + blockSwitchingControlLeft->windowSequence = patchType; + blockSwitchingControlRight->windowSequence = patchType; - /* Synchronize grouping info */ + /* Synchronize grouping info */ if(patchType != SHORT_WINDOW) { /* Long Blocks */ /* Set grouping info */ - blockSwitchingControlLeft->noOfGroups = 1; - blockSwitchingControlRight->noOfGroups = 1; - blockSwitchingControlLeft->groupLen[0] = 1; - blockSwitchingControlRight->groupLen[0] = 1; + blockSwitchingControlLeft->noOfGroups = 1; + blockSwitchingControlRight->noOfGroups = 1; + blockSwitchingControlLeft->groupLen[0] = 1; + blockSwitchingControlRight->groupLen[0] = 1; for (i=1; igroupLen[i] = 0; - blockSwitchingControlRight->groupLen[i] = 0; + blockSwitchingControlLeft->groupLen[i] = 0; + blockSwitchingControlRight->groupLen[i] = 0; } } else { - + if (blockSwitchingControlLeft->maxWindowNrg > blockSwitchingControlRight->maxWindowNrg) { /* Left Channel wins */ - blockSwitchingControlRight->noOfGroups = blockSwitchingControlLeft->noOfGroups; + blockSwitchingControlRight->noOfGroups = blockSwitchingControlLeft->noOfGroups; for (i=0; igroupLen[i] = blockSwitchingControlLeft->groupLen[i]; + blockSwitchingControlRight->groupLen[i] = blockSwitchingControlLeft->groupLen[i]; } } else { /* Right Channel wins */ - blockSwitchingControlLeft->noOfGroups = blockSwitchingControlRight->noOfGroups; + blockSwitchingControlLeft->noOfGroups = blockSwitchingControlRight->noOfGroups; for (i=0; igroupLen[i] = blockSwitchingControlRight->groupLen[i]; + blockSwitchingControlLeft->groupLen[i] = blockSwitchingControlRight->groupLen[i]; } } } diff --git a/media/libstagefright/codecs/aacenc/src/channel_map.c b/media/libstagefright/codecs/aacenc/src/channel_map.c index 2d41f8c..f6552ed 100644 --- a/media/libstagefright/codecs/aacenc/src/channel_map.c +++ b/media/libstagefright/codecs/aacenc/src/channel_map.c @@ -29,32 +29,32 @@ static const Word16 maxChannelBits = MAXBITS_COEF; static Word16 initElement(ELEMENT_INFO* elInfo, ELEMENT_TYPE elType) { - Word16 error=0; + Word16 error=0; - elInfo->elType=elType; + elInfo->elType=elType; switch(elInfo->elType) { case ID_SCE: - elInfo->nChannelsInEl=1; + elInfo->nChannelsInEl=1; - elInfo->ChannelIndex[0]=0; + elInfo->ChannelIndex[0]=0; - elInfo->instanceTag=0; + elInfo->instanceTag=0; break; case ID_CPE: - elInfo->nChannelsInEl=2; + elInfo->nChannelsInEl=2; - elInfo->ChannelIndex[0]=0; - elInfo->ChannelIndex[1]=1; + elInfo->ChannelIndex[0]=0; + elInfo->ChannelIndex[1]=1; - elInfo->instanceTag=0; + elInfo->instanceTag=0; break; default: - error=1; + error=1; } return error; @@ -64,11 +64,11 @@ static Word16 initElement(ELEMENT_INFO* elInfo, ELEMENT_TYPE elType) Word16 InitElementInfo (Word16 nChannels, ELEMENT_INFO* elInfo) { Word16 error; - error = 0; + error = 0; switch(nChannels) { - case 1: + case 1: initElement(elInfo, ID_SCE); break; @@ -77,7 +77,7 @@ Word16 InitElementInfo (Word16 nChannels, ELEMENT_INFO* elInfo) break; default: - error=4; + error=4; } return error; @@ -91,18 +91,18 @@ Word16 InitElementBits(ELEMENT_BITS *elementBits, Word16 staticBitsTot) { Word16 error; - error = 0; + error = 0; switch(elInfo.nChannelsInEl) { case 1: - elementBits->chBitrate = bitrateTot; + elementBits->chBitrate = bitrateTot; elementBits->averageBits = averageBitsTot - staticBitsTot; - elementBits->maxBits = maxChannelBits; + elementBits->maxBits = maxChannelBits; elementBits->maxBitResBits = maxChannelBits - averageBitsTot; - elementBits->maxBitResBits = elementBits->maxBitResBits - (elementBits->maxBitResBits & 7); - elementBits->bitResLevel = elementBits->maxBitResBits; - elementBits->relativeBits = 0x4000; /* 1.0f/2 */ + elementBits->maxBitResBits = elementBits->maxBitResBits - (elementBits->maxBitResBits & 7); + elementBits->bitResLevel = elementBits->maxBitResBits; + elementBits->relativeBits = 0x4000; /* 1.0f/2 */ break; case 2: @@ -111,13 +111,13 @@ Word16 InitElementBits(ELEMENT_BITS *elementBits, elementBits->maxBits = maxChannelBits << 1; elementBits->maxBitResBits = (maxChannelBits << 1) - averageBitsTot; - elementBits->maxBitResBits = elementBits->maxBitResBits - (elementBits->maxBitResBits & 7); - elementBits->bitResLevel = elementBits->maxBitResBits; - elementBits->relativeBits = 0x4000; /* 1.0f/2 */ + elementBits->maxBitResBits = elementBits->maxBitResBits - (elementBits->maxBitResBits & 7); + elementBits->bitResLevel = elementBits->maxBitResBits; + elementBits->relativeBits = 0x4000; /* 1.0f/2 */ break; default: - error = 1; + error = 1; } return error; } diff --git a/media/libstagefright/codecs/aacenc/src/dyn_bits.c b/media/libstagefright/codecs/aacenc/src/dyn_bits.c index f3b3e02..3d2efdc 100644 --- a/media/libstagefright/codecs/aacenc/src/dyn_bits.c +++ b/media/libstagefright/codecs/aacenc/src/dyn_bits.c @@ -45,12 +45,12 @@ buildBitLookUp(const Word16 *quantSpectrum, for (i=0; i maxMergeGain) { - maxMergeGain = mergeGainLookUp[i]; - *maxNdx = i; + maxMergeGain = mergeGainLookUp[i]; + *maxNdx = i; } } return extract_l(maxMergeGain); @@ -159,7 +159,7 @@ gmStage0(SECTION_INFO * sectionInfo, for (i=0; icodeBook != sectionInfo_e->codeBook) break; sectionInfo_s->sfbCnt += 1; @@ -196,11 +196,11 @@ gmStage1(SECTION_INFO * sectionInfo, } sectionInfo_s->sectionBits += sideInfoTab[sectionInfo_s->sfbCnt]; - sectionInfo[mergeEnd - 1].sfbStart = sectionInfo_s->sfbStart; /* speed up prev search */ + sectionInfo[mergeEnd - 1].sfbStart = sectionInfo_s->sfbStart; /* speed up prev search */ + + mergeStart = mergeEnd; - mergeStart = mergeEnd; - } while (mergeStart - maxSfb < 0); } @@ -230,7 +230,7 @@ gmStage2(SECTION_INFO *sectionInfo, maxMergeGain = findMaxMerge(mergeGainLookUp, sectionInfo, maxSfb, &maxNdx); - + if (maxMergeGain <= 0) break; @@ -244,7 +244,7 @@ gmStage2(SECTION_INFO *sectionInfo, mergeBitLookUp(bitLookUp[maxNdx], bitLookUp[maxNdxNext]); - + if (maxNdx != 0) { maxNdxLast = sectionInfo[maxNdx - 1].sfbStart; mergeGainLookUp[maxNdxLast] = CalcMergeGain(sectionInfo, @@ -255,9 +255,9 @@ gmStage2(SECTION_INFO *sectionInfo, } maxNdxNext = maxNdx + sectionInfo[maxNdx].sfbCnt; - sectionInfo[maxNdxNext - 1].sfbStart = sectionInfo[maxNdx].sfbStart; + sectionInfo[maxNdxNext - 1].sfbStart = sectionInfo[maxNdx].sfbStart; + - if (maxNdxNext - maxSfb < 0) { mergeGainLookUp[maxNdx] = CalcMergeGain(sectionInfo, bitLookUp, @@ -286,7 +286,7 @@ noiselessCounter(SECTION_DATA *sectionData, /* use appropriate side info table - */ + */ switch (blockType) { case LONG_WINDOW: @@ -300,11 +300,11 @@ noiselessCounter(SECTION_DATA *sectionData, } - sectionData->noOfSections = 0; - sectionData->huffmanBits = 0; - sectionData->sideInfoBits = 0; + sectionData->noOfSections = 0; + sectionData->huffmanBits = 0; + sectionData->sideInfoBits = 0; + - if (sectionData->maxSfbPerGroup == 0) return; @@ -353,7 +353,7 @@ noiselessCounter(SECTION_DATA *sectionData, sectionData->huffmanBits = (sectionData->huffmanBits + (sectionInfo[i].sectionBits - sideInfoTab[sectionInfo[i].sfbCnt])); sectionData->sideInfoBits = (sectionData->sideInfoBits + sideInfoTab[sectionInfo[i].sfbCnt]); - sectionData->sectionInfo[sectionData->noOfSections] = sectionInfo[i]; + sectionData->sectionInfo[sectionData->noOfSections] = sectionInfo[i]; sectionData->noOfSections = sectionData->noOfSections + 1; } } @@ -386,25 +386,25 @@ static void scfCount(const Word16 *scalefacGain, Word32 lastValScf = 0; Word32 deltaScf = 0; Flag found = 0; - Word32 scfSkipCounter = 0; - + Word32 scfSkipCounter = 0; + + + sectionData->scalefacBits = 0; - sectionData->scalefacBits = 0; - if (scalefacGain == NULL) { return; } - lastValScf = 0; - sectionData->firstScf = 0; - + lastValScf = 0; + sectionData->firstScf = 0; + psectionInfo = sectionData->sectionInfo; for (i=0; inoOfSections; i++) { - + if (psectionInfo->codeBook != CODE_BOOK_ZERO_NO) { - sectionData->firstScf = psectionInfo->sfbStart; - lastValScf = scalefacGain[sectionData->firstScf]; + sectionData->firstScf = psectionInfo->sfbStart; + lastValScf = scalefacGain[sectionData->firstScf]; break; } psectionInfo += 1; @@ -412,38 +412,38 @@ static void scfCount(const Word16 *scalefacGain, psectionInfo = sectionData->sectionInfo; for (i=0; inoOfSections; i++, psectionInfo += 1) { - + if (psectionInfo->codeBook != CODE_BOOK_ZERO_NO && psectionInfo->codeBook != CODE_BOOK_PNS_NO) { for (j = psectionInfo->sfbStart; j < (psectionInfo->sfbStart + psectionInfo->sfbCnt); j++) { /* check if we can repeat the last value to save bits */ - + if (maxValueInSfb[j] == 0) { - found = 0; - + found = 0; + if (scfSkipCounter == 0) { /* end of section */ - + if (j - ((psectionInfo->sfbStart + psectionInfo->sfbCnt) - 1) == 0) { - found = 0; + found = 0; } else { for (k = j + 1; k < psectionInfo->sfbStart + psectionInfo->sfbCnt; k++) { - + if (maxValueInSfb[k] != 0) { int tmp = L_abs(scalefacGain[k] - lastValScf); - found = 1; - + found = 1; + if ( tmp < CODE_BOOK_SCF_LAV) { /* save bits */ - deltaScf = 0; + deltaScf = 0; } else { /* do not save bits */ deltaScf = lastValScf - scalefacGain[j]; - lastValScf = scalefacGain[j]; - scfSkipCounter = 0; + lastValScf = scalefacGain[j]; + scfSkipCounter = 0; } break; } @@ -451,26 +451,26 @@ static void scfCount(const Word16 *scalefacGain, scfSkipCounter = scfSkipCounter + 1; } } - + psectionInfom = psectionInfo + 1; /* search for the next maxValueInSfb[] != 0 in all other sections */ for (m = i + 1; (m < sectionData->noOfSections) && (found == 0); m++) { - + if ((psectionInfom->codeBook != CODE_BOOK_ZERO_NO) && (psectionInfom->codeBook != CODE_BOOK_PNS_NO)) { for (n = psectionInfom->sfbStart; n < (psectionInfom->sfbStart + psectionInfom->sfbCnt); n++) { - + if (maxValueInSfb[n] != 0) { - found = 1; - + found = 1; + if ( (abs_s(scalefacGain[n] - lastValScf) < CODE_BOOK_SCF_LAV)) { - deltaScf = 0; + deltaScf = 0; } else { deltaScf = (lastValScf - scalefacGain[j]); - lastValScf = scalefacGain[j]; - scfSkipCounter = 0; + lastValScf = scalefacGain[j]; + scfSkipCounter = 0; } break; } @@ -481,20 +481,20 @@ static void scfCount(const Word16 *scalefacGain, psectionInfom += 1; } - + if (found == 0) { - deltaScf = 0; - scfSkipCounter = 0; + deltaScf = 0; + scfSkipCounter = 0; } } else { - deltaScf = 0; + deltaScf = 0; scfSkipCounter = scfSkipCounter - 1; } } else { deltaScf = lastValScf - scalefacGain[j]; - lastValScf = scalefacGain[j]; + lastValScf = scalefacGain[j]; } sectionData->scalefacBits += bitCountScalefactorDelta(deltaScf); } @@ -517,14 +517,14 @@ dynBitCount(const Word16 *quantSpectrum, const Word16 *sfbOffset, SECTION_DATA *sectionData) { - sectionData->blockType = blockType; - sectionData->sfbCnt = sfbCnt; - sectionData->sfbPerGroup = sfbPerGroup; + sectionData->blockType = blockType; + sectionData->sfbCnt = sfbCnt; + sectionData->sfbPerGroup = sfbPerGroup; if(sfbPerGroup) - sectionData->noOfGroups = sfbCnt/sfbPerGroup; + sectionData->noOfGroups = sfbCnt/sfbPerGroup; else sectionData->noOfGroups = 0x7fff; - sectionData->maxSfbPerGroup = maxSfbPerGroup; + sectionData->maxSfbPerGroup = maxSfbPerGroup; noiselessCounter(sectionData, sectionData->mergeGainLookUp, @@ -539,7 +539,7 @@ dynBitCount(const Word16 *quantSpectrum, sectionData); - return (sectionData->huffmanBits + sectionData->sideInfoBits + + return (sectionData->huffmanBits + sectionData->sideInfoBits + sectionData->scalefacBits); } diff --git a/media/libstagefright/codecs/aacenc/src/grp_data.c b/media/libstagefright/codecs/aacenc/src/grp_data.c index fb88654..7861e1c 100644 --- a/media/libstagefright/codecs/aacenc/src/grp_data.c +++ b/media/libstagefright/codecs/aacenc/src/grp_data.c @@ -57,29 +57,29 @@ groupShortData(Word32 *mdctSpectrum, /* for short: regroup and */ /* cumulate energies und thresholds group-wise . */ - + /* calculate sfbCnt */ - highestSfb = 0; + highestSfb = 0; for (wnd=0; wnd=highestSfb; sfb--) { for (line=(sfbOffset[sfb + 1] - 1); line>=sfbOffset[sfb]; line--) { - - if (mdctSpectrum[wnd*FRAME_LEN_SHORT+line] != 0) break; + + if (mdctSpectrum[wnd*FRAME_LEN_SHORT+line] != 0) break; } - + if (line >= sfbOffset[sfb]) break; } highestSfb = max(highestSfb, sfb); } - + if (highestSfb < 0) { - highestSfb = 0; + highestSfb = 0; } *maxSfbPerGroup = highestSfb + 1; /* calculate sfbOffset */ - i = 0; - offset = 0; + i = 0; + offset = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { groupedSfbOffset[i] = offset + sfbOffset[sfb] * groupLen[grp]; @@ -87,15 +87,15 @@ groupShortData(Word32 *mdctSpectrum, } offset += groupLen[grp] * FRAME_LEN_SHORT; } - groupedSfbOffset[i] = FRAME_LEN_LONG; + groupedSfbOffset[i] = FRAME_LEN_LONG; i += 1; /* calculate minSnr */ - i = 0; - offset = 0; + i = 0; + offset = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { - groupedSfbMinSnr[i] = sfbMinSnr[sfb]; + groupedSfbMinSnr[i] = sfbMinSnr[sfb]; i += 1; } offset += groupLen[grp] * FRAME_LEN_SHORT; @@ -103,74 +103,74 @@ groupShortData(Word32 *mdctSpectrum, /* sum up sfbThresholds */ - wnd = 0; - i = 0; + wnd = 0; + i = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { - Word32 thresh = sfbThreshold->sfbShort[wnd][sfb]; + Word32 thresh = sfbThreshold->sfbShort[wnd][sfb]; for (j=1; jsfbShort[wnd+j][sfb]); } - sfbThreshold->sfbLong[i] = thresh; + sfbThreshold->sfbLong[i] = thresh; i += 1; } wnd += groupLen[grp]; } /* sum up sfbEnergies left/right */ - wnd = 0; - i = 0; + wnd = 0; + i = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { - Word32 energy = sfbEnergy->sfbShort[wnd][sfb]; + Word32 energy = sfbEnergy->sfbShort[wnd][sfb]; for (j=1; jsfbShort[wnd+j][sfb]); } - sfbEnergy->sfbLong[i] = energy; + sfbEnergy->sfbLong[i] = energy; i += 1; } wnd += groupLen[grp]; } /* sum up sfbEnergies mid/side */ - wnd = 0; - i = 0; + wnd = 0; + i = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { - Word32 energy = sfbEnergyMS->sfbShort[wnd][sfb]; + Word32 energy = sfbEnergyMS->sfbShort[wnd][sfb]; for (j=1; jsfbShort[wnd+j][sfb]); } - sfbEnergyMS->sfbLong[i] = energy; + sfbEnergyMS->sfbLong[i] = energy; i += 1; } wnd += groupLen[grp]; } /* sum up sfbSpreadedEnergies */ - wnd = 0; - i = 0; + wnd = 0; + i = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { - Word32 energy = sfbSpreadedEnergy->sfbShort[wnd][sfb]; + Word32 energy = sfbSpreadedEnergy->sfbShort[wnd][sfb]; for (j=1; jsfbShort[wnd+j][sfb]); } - sfbSpreadedEnergy->sfbLong[i] = energy; + sfbSpreadedEnergy->sfbLong[i] = energy; i += 1; } wnd += groupLen[grp]; } /* re-group spectrum */ - wnd = 0; - i = 0; + wnd = 0; + i = 0; for (grp = 0; grp < noOfGroups; grp++) { for (sfb = 0; sfb < sfbCnt; sfb++) { for (j = 0; j < groupLen[grp]; j++) { Word16 lineOffset = FRAME_LEN_SHORT * (wnd + j); for (line = lineOffset + sfbOffset[sfb]; line < lineOffset + sfbOffset[sfb+1]; line++) { - tmpSpectrum[i] = mdctSpectrum[line]; + tmpSpectrum[i] = mdctSpectrum[line]; i = i + 1; } } @@ -179,10 +179,10 @@ groupShortData(Word32 *mdctSpectrum, } for(i=0;imaxSfbPerGroup = maxSfbPerGroup; - psyOutCh->sfbCnt = groupedSfbCnt; + psyOutCh->maxSfbPerGroup = maxSfbPerGroup; + psyOutCh->sfbCnt = groupedSfbCnt; if(noOfGroups) psyOutCh->sfbPerGroup = groupedSfbCnt/ noOfGroups; else psyOutCh->sfbPerGroup = 0x7fff; - psyOutCh->windowSequence = windowSequence; - psyOutCh->windowShape = windowShape; - psyOutCh->mdctScale = mdctScale; + psyOutCh->windowSequence = windowSequence; + psyOutCh->windowShape = windowShape; + psyOutCh->mdctScale = mdctScale; psyOutCh->mdctSpectrum = groupedMdctSpectrum; psyOutCh->sfbEnergy = groupedSfbEnergy->sfbLong; psyOutCh->sfbThreshold = groupedSfbThreshold->sfbLong; psyOutCh->sfbSpreadedEnergy = groupedSfbSpreadedEnergy->sfbLong; - + tmpV = psyOutCh->sfbOffsets; for(j=0; jsfbMinSnr; for(j=0;jgroupingMask = mask; - + psyOutCh->groupingMask = mask; + if (windowSequence != SHORT_WINDOW) { - psyOutCh->sfbEnSumLR = sfbEnergySumLR.sfbLong; - psyOutCh->sfbEnSumMS = sfbEnergySumMS.sfbLong; + psyOutCh->sfbEnSumLR = sfbEnergySumLR.sfbLong; + psyOutCh->sfbEnSumMS = sfbEnergySumMS.sfbLong; } else { Word32 i; Word32 accuSumMS=0; - Word32 accuSumLR=0; + Word32 accuSumLR=0; Word32 *pSumMS = sfbEnergySumMS.sfbShort; Word32 *pSumLR = sfbEnergySumLR.sfbShort; @@ -106,7 +106,7 @@ void BuildInterface(Word32 *groupedMdctSpectrum, accuSumLR = L_add(accuSumLR, *pSumLR); pSumLR++; accuSumMS = L_add(accuSumMS, *pSumMS); pSumMS++; } - psyOutCh->sfbEnSumMS = accuSumMS; - psyOutCh->sfbEnSumLR = accuSumLR; + psyOutCh->sfbEnSumMS = accuSumMS; + psyOutCh->sfbEnSumLR = accuSumLR; } } diff --git a/media/libstagefright/codecs/aacenc/src/line_pe.c b/media/libstagefright/codecs/aacenc/src/line_pe.c index 5e93cd0..480dc28 100644 --- a/media/libstagefright/codecs/aacenc/src/line_pe.c +++ b/media/libstagefright/codecs/aacenc/src/line_pe.c @@ -45,20 +45,20 @@ void prepareSfbPe(PE_DATA *peData, const Word16 peOffset) { Word32 sfbGrp, sfb; - Word32 ch; + Word32 ch; for(ch=0; chpeChannelData[ch]; for(sfbGrp=0;sfbGrpsfbCnt; sfbGrp+=psyOutChan->sfbPerGroup){ for (sfb=0; sfbmaxSfbPerGroup; sfb++) { - peChanData->sfbNLines4[sfbGrp+sfb] = sfbNRelevantLines[ch][sfbGrp+sfb]; - sfbNRelevantLines[ch][sfbGrp+sfb] = sfbNRelevantLines[ch][sfbGrp+sfb] >> 2; - peChanData->sfbLdEnergy[sfbGrp+sfb] = logSfbEnergy[ch][sfbGrp+sfb]; + peChanData->sfbNLines4[sfbGrp+sfb] = sfbNRelevantLines[ch][sfbGrp+sfb]; + sfbNRelevantLines[ch][sfbGrp+sfb] = sfbNRelevantLines[ch][sfbGrp+sfb] >> 2; + peChanData->sfbLdEnergy[sfbGrp+sfb] = logSfbEnergy[ch][sfbGrp+sfb]; } } } - peData->offset = peOffset; + peData->offset = peOffset; } @@ -78,23 +78,23 @@ void calcSfbPe(PE_DATA *peData, Word32 ldThr, ldRatio; Word32 pe, constPart, nActiveLines; - peData->pe = peData->offset; - peData->constPart = 0; - peData->nActiveLines = 0; + peData->pe = peData->offset; + peData->constPart = 0; + peData->nActiveLines = 0; for(ch=0; chpeChannelData[ch]; const Word32 *sfbEnergy = psyOutChan->sfbEnergy; const Word32 *sfbThreshold = psyOutChan->sfbThreshold; - pe = 0; - constPart = 0; - nActiveLines = 0; + pe = 0; + constPart = 0; + nActiveLines = 0; for(sfbGrp=0; sfbGrpsfbCnt; sfbGrp+=psyOutChan->sfbPerGroup) { for (sfb=0; sfbmaxSfbPerGroup; sfb++) { - Word32 nrg = sfbEnergy[sfbGrp+sfb]; - Word32 thres = sfbThreshold[sfbGrp+sfb]; + Word32 nrg = sfbEnergy[sfbGrp+sfb]; + Word32 thres = sfbThreshold[sfbGrp+sfb]; Word32 sfbLDEn = peChanData->sfbLdEnergy[sfbGrp+sfb]; if (nrg > thres) { @@ -102,8 +102,8 @@ void calcSfbPe(PE_DATA *peData, ldRatio = sfbLDEn - ldThr; - nLines4 = peChanData->sfbNLines4[sfbGrp+sfb]; - + nLines4 = peChanData->sfbNLines4[sfbGrp+sfb]; + /* sfbPe = nl*log2(en/thr)*/ if (ldRatio >= C1_I) { peChanData->sfbPe[sfbGrp+sfb] = (nLines4*ldRatio + 8) >> 4; @@ -120,26 +120,26 @@ void calcSfbPe(PE_DATA *peData, peChanData->sfbNActiveLines[sfbGrp+sfb] = nLines4 >> 2; } else { - peChanData->sfbPe[sfbGrp+sfb] = 0; - peChanData->sfbConstPart[sfbGrp+sfb] = 0; - peChanData->sfbNActiveLines[sfbGrp+sfb] = 0; + peChanData->sfbPe[sfbGrp+sfb] = 0; + peChanData->sfbConstPart[sfbGrp+sfb] = 0; + peChanData->sfbNActiveLines[sfbGrp+sfb] = 0; } pe = pe + peChanData->sfbPe[sfbGrp+sfb]; constPart = constPart + peChanData->sfbConstPart[sfbGrp+sfb]; nActiveLines = nActiveLines + peChanData->sfbNActiveLines[sfbGrp+sfb]; } } - - peChanData->pe = saturate(pe); - peChanData->constPart = saturate(constPart); - peChanData->nActiveLines = saturate(nActiveLines); - + peChanData->pe = saturate(pe); + peChanData->constPart = saturate(constPart); + peChanData->nActiveLines = saturate(nActiveLines); + + pe += peData->pe; - peData->pe = saturate(pe); + peData->pe = saturate(pe); constPart += peData->constPart; - peData->constPart = saturate(constPart); + peData->constPart = saturate(constPart); nActiveLines += peData->nActiveLines; peData->nActiveLines = saturate(nActiveLines); - } + } } diff --git a/media/libstagefright/codecs/aacenc/src/memalign.c b/media/libstagefright/codecs/aacenc/src/memalign.c index 44dd4ba..bb266dc 100644 --- a/media/libstagefright/codecs/aacenc/src/memalign.c +++ b/media/libstagefright/codecs/aacenc/src/memalign.c @@ -32,7 +32,7 @@ /***************************************************************************** * * function name: mem_malloc -* description: malloc the alignments memory +* description: malloc the alignments memory * returns: the point of the memory * **********************************************************************************/ diff --git a/media/libstagefright/codecs/aacenc/src/ms_stereo.c b/media/libstagefright/codecs/aacenc/src/ms_stereo.c index 44d45cc..2e34f14 100644 --- a/media/libstagefright/codecs/aacenc/src/ms_stereo.c +++ b/media/libstagefright/codecs/aacenc/src/ms_stereo.c @@ -30,7 +30,7 @@ * * function name: MsStereoProcessing * description: detect use ms stereo or not -* if ((min(thrLn, thrRn)*min(thrLn, thrRn))/(enMn*enSn)) +* if ((min(thrLn, thrRn)*min(thrLn, thrRn))/(enMn*enSn)) * >= ((thrLn *thrRn)/(enLn*enRn)) then ms stereo * **********************************************************************************/ @@ -51,7 +51,7 @@ void MsStereoProcessing(Word32 *sfbEnergyLeft, const Word16 maxSfbPerGroup, const Word16 *sfbOffset) { Word32 temp; - Word32 sfb,sfboffs, j; + Word32 sfb,sfboffs, j; Word32 msMaskTrueSomewhere = 0; Word32 msMaskFalseSomewhere = 0; @@ -64,12 +64,12 @@ void MsStereoProcessing(Word32 *sfbEnergyLeft, Word32 thrL, thrR, nrgL, nrgR; Word32 idx, shift; - idx = sfb + sfboffs; + idx = sfb + sfboffs; - thrL = sfbThresholdLeft[idx]; - thrR = sfbThresholdRight[idx]; - nrgL = sfbEnergyLeft[idx]; - nrgR = sfbEnergyRight[idx]; + thrL = sfbThresholdLeft[idx]; + thrR = sfbThresholdRight[idx]; + nrgL = sfbEnergyLeft[idx]; + nrgR = sfbEnergyRight[idx]; minThreshold = min(thrL, thrR); @@ -82,8 +82,8 @@ void MsStereoProcessing(Word32 *sfbEnergyLeft, pnlr = fixmul(nrgL, nrgR); - nrgL = sfbEnergyMid[idx]; - nrgR = sfbEnergySide[idx]; + nrgL = sfbEnergyMid[idx]; + nrgR = sfbEnergySide[idx]; nrgL = max(nrgL,minThreshold) + 1; shift = norm_l(nrgL); @@ -97,42 +97,42 @@ void MsStereoProcessing(Word32 *sfbEnergyLeft, temp = (pnlr + 1) / ((pnms >> 8) + 1); - temp = pnms - pnlr; + temp = pnms - pnlr; if( temp > 0 ){ - msMask[idx] = 1; - msMaskTrueSomewhere = 1; + msMask[idx] = 1; + msMaskTrueSomewhere = 1; for (j=sfbOffset[idx]; j> 1); right = (mdctSpectrumRight[j] >> 1); - mdctSpectrumLeft[j] = left + right; - mdctSpectrumRight[j] = left - right; + mdctSpectrumLeft[j] = left + right; + mdctSpectrumRight[j] = left - right; } - - sfbThresholdLeft[idx] = minThreshold; - sfbThresholdRight[idx] = minThreshold; - sfbEnergyLeft[idx] = sfbEnergyMid[idx]; - sfbEnergyRight[idx] = sfbEnergySide[idx]; - - sfbSpreadedEnRight[idx] = min(sfbSpreadedEnLeft[idx],sfbSpreadedEnRight[idx]) >> 1; - sfbSpreadedEnLeft[idx] = sfbSpreadedEnRight[idx]; - + + sfbThresholdLeft[idx] = minThreshold; + sfbThresholdRight[idx] = minThreshold; + sfbEnergyLeft[idx] = sfbEnergyMid[idx]; + sfbEnergyRight[idx] = sfbEnergySide[idx]; + + sfbSpreadedEnRight[idx] = min(sfbSpreadedEnLeft[idx],sfbSpreadedEnRight[idx]) >> 1; + sfbSpreadedEnLeft[idx] = sfbSpreadedEnRight[idx]; + } else { - msMask[idx] = 0; - msMaskFalseSomewhere = 1; + msMask[idx] = 0; + msMaskFalseSomewhere = 1; } - } - if ( msMaskTrueSomewhere ) { + } + if ( msMaskTrueSomewhere ) { if(msMaskFalseSomewhere ) { - *msDigest = SI_MS_MASK_SOME; + *msDigest = SI_MS_MASK_SOME; } else { - *msDigest = SI_MS_MASK_ALL; + *msDigest = SI_MS_MASK_ALL; } } else { - *msDigest = SI_MS_MASK_NONE; + *msDigest = SI_MS_MASK_NONE; } } diff --git a/media/libstagefright/codecs/aacenc/src/pre_echo_control.c b/media/libstagefright/codecs/aacenc/src/pre_echo_control.c index 1e818a2..1406e11 100644 --- a/media/libstagefright/codecs/aacenc/src/pre_echo_control.c +++ b/media/libstagefright/codecs/aacenc/src/pre_echo_control.c @@ -29,7 +29,7 @@ /***************************************************************************** * -* function name:InitPreEchoControl +* function name:InitPreEchoControl * description: init pre echo control parameter * *****************************************************************************/ @@ -40,13 +40,13 @@ void InitPreEchoControl(Word32 *pbThresholdNm1, Word16 pb; for(pb=0; pb 0 ) { for(i = 0; i < numPb; i++) { tmpThreshold1 = pbThresholdNm1[i] >> (scaling-1); tmpThreshold2 = L_mpy_ls(pbThreshold[i], minRemainingThresholdFactor); /* copy thresholds to internal memory */ - pbThresholdNm1[i] = pbThreshold[i]; + pbThresholdNm1[i] = pbThreshold[i]; + - if(pbThreshold[i] > tmpThreshold1) { - pbThreshold[i] = tmpThreshold1; + pbThreshold[i] = tmpThreshold1; } - + if(tmpThreshold2 > pbThreshold[i]) { - pbThreshold[i] = tmpThreshold2; + pbThreshold[i] = tmpThreshold2; } } @@ -96,15 +96,15 @@ void PreEchoControl(Word32 *pbThresholdNm1, tmpThreshold2 = L_mpy_ls(pbThreshold[i], minRemainingThresholdFactor); /* copy thresholds to internal memory */ - pbThresholdNm1[i] = pbThreshold[i]; + pbThresholdNm1[i] = pbThreshold[i]; + - if(((pbThreshold[i] >> scaling) > tmpThreshold1)) { pbThreshold[i] = tmpThreshold1 << scaling; } - + if(tmpThreshold2 > pbThreshold[i]) { - pbThreshold[i] = tmpThreshold2; + pbThreshold[i] = tmpThreshold2; } } diff --git a/media/libstagefright/codecs/aacenc/src/psy_configuration.c b/media/libstagefright/codecs/aacenc/src/psy_configuration.c index 8e599b0..02d92ab 100644 --- a/media/libstagefright/codecs/aacenc/src/psy_configuration.c +++ b/media/libstagefright/codecs/aacenc/src/psy_configuration.c @@ -88,17 +88,17 @@ Word32 GetSRIndex(Word32 sampleRate) * * function name: atan_1000 * description: calculates 1000*atan(x/1000) -* based on atan approx for x > 0 +* based on atan approx for x > 0 * atan(x) = x/((float)1.0f+(float)0.280872f*x*x) if x < 1 * = pi/2 - x/((float)0.280872f +x*x) if x >= 1 * return: 1000*atan(x/1000) * **********************************************************************************/ -static Word16 atan_1000(Word32 val) +static Word16 atan_1000(Word32 val) { Word32 y; - + if(L_sub(val, 1000) < 0) { y = extract_l(((1000 * val) / (1000 + ((val * val) / ATAN_COEF1)))); } @@ -126,9 +126,9 @@ static Word16 BarcLineValue(Word16 noOfLines, Word16 fftLine, Word32 samplingFre /* center frequency of fft line */ center_freq = (fftLine * samplingFreq) / (noOfLines << 1); temp = atan_1000((center_freq << 2) / (3*10)); - bvalFFTLine = + bvalFFTLine = (26600 * atan_1000((center_freq*76) / 100) + 7*temp*temp) / (2*1000*1000 / BARC_SCALE); - + return saturate(bvalFFTLine); } @@ -148,17 +148,17 @@ static void initThrQuiet(Word16 numPb, for(i=0; i0) bv1 = (pbBarcVal[i] + pbBarcVal[i-1]) >> 1; else bv1 = pbBarcVal[i] >> 1; - + if (i < (numPb - 1)) bv2 = (pbBarcVal[i] + pbBarcVal[i+1]) >> 1; else { - bv2 = pbBarcVal[i]; + bv2 = pbBarcVal[i]; } bv1 = min((bv1 / BARC_SCALE), max_bark); @@ -166,9 +166,9 @@ static void initThrQuiet(Word16 numPb, barcThrQuiet = min(BARC_THR_QUIET[bv1], BARC_THR_QUIET[bv2]); - + /* - we calculate + we calculate pow(10.0f,(float)(barcThrQuiet - ABS_LEV)*0.1)*(float)ABS_LOW*(pbOffset[i+1] - pbOffset[i]); */ @@ -196,47 +196,47 @@ static void initSpreading(Word16 numPb, Word16 i; Word16 maskLowSprEn, maskHighSprEn; - + if (sub(blockType, SHORT_WINDOW) != 0) { - maskLowSprEn = maskLowSprEnLong; - + maskLowSprEn = maskLowSprEnLong; + if (bitrate > 22000) maskHighSprEn = maskHighSprEnLong; else maskHighSprEn = maskHighSprEnLongLowBr; } else { - maskLowSprEn = maskLowSprEnShort; - maskHighSprEn = maskHighSprEnShort; + maskLowSprEn = maskLowSprEnShort; + maskHighSprEn = maskHighSprEnShort; } for(i=0; i 0) { Word32 dbVal; Word16 dbark = pbBarcValue[i] - pbBarcValue[i-1]; /* - we calulate pow(10.0f, -0.1*dbVal/BARC_SCALE) + we calulate pow(10.0f, -0.1*dbVal/BARC_SCALE) */ dbVal = (maskHigh * dbark); pbMaskHiFactor[i] = round16(pow2_xy(L_negate(dbVal), (Word32)LOG2_1000)); /* 0.301 log10(2) */ - + dbVal = (maskLow * dbark); - pbMaskLoFactor[i-1] = round16(pow2_xy(L_negate(dbVal),(Word32)LOG2_1000)); - - + pbMaskLoFactor[i-1] = round16(pow2_xy(L_negate(dbVal),(Word32)LOG2_1000)); + + dbVal = (maskHighSprEn * dbark); - pbMaskHiFactorSprEn[i] = round16(pow2_xy(L_negate(dbVal),(Word32)LOG2_1000)); + pbMaskHiFactorSprEn[i] = round16(pow2_xy(L_negate(dbVal),(Word32)LOG2_1000)); dbVal = (maskLowSprEn * dbark); pbMaskLoFactorSprEn[i-1] = round16(pow2_xy(L_negate(dbVal),(Word32)LOG2_1000)); } else { - pbMaskHiFactor[i] = 0; - pbMaskLoFactor[numPb-1] = 0; + pbMaskHiFactor[i] = 0; + pbMaskLoFactor[numPb-1] = 0; - pbMaskHiFactorSprEn[i] = 0; - pbMaskLoFactorSprEn[numPb-1] = 0; + pbMaskHiFactorSprEn[i] = 0; + pbMaskLoFactorSprEn[numPb-1] = 0; } } @@ -258,12 +258,12 @@ static void initBarcValues(Word16 numPb, Word16 i; Word16 pbBval0, pbBval1; - pbBval0 = 0; + pbBval0 = 0; for(i=0; i> 1; - pbBval0 = pbBval1; + pbBval0 = pbBval1; } } @@ -295,38 +295,38 @@ static void initMinSnr(const Word32 bitrate, pePerWindow = bits2pe(extract_l((bitrate * numLines) / samplerate)); - pbVal0 = 0; + pbVal0 = 0; for (sfb=0; sfb 0x00008000) { shift = norm_l(snr); - snr = Div_32(0x00008000 << shift, snr << shift); + snr = Div_32(0x00008000 << shift, snr << shift); } else { snr = 0x7fffffff; } - + /* upper limit is -1 dB */ snr = min(snr, c_maxsnr); /* lower limit is -25 dB */ @@ -354,7 +354,7 @@ Word16 InitPsyConfigurationLong(Word32 bitrate, /* init sfb table */ - samplerateindex = GetSRIndex(samplerate); + samplerateindex = GetSRIndex(samplerate); psyConf->sfbCnt = sfBandTotalLong[samplerateindex]; psyConf->sfbOffset = sfBandTabLong + sfBandTabLongOffset[samplerateindex]; psyConf->sampRateIdx = samplerateindex; @@ -391,19 +391,19 @@ Word16 InitPsyConfigurationLong(Word32 bitrate, /* init ratio */ - psyConf->ratio = c_ratio; + psyConf->ratio = c_ratio; - psyConf->maxAllowedIncreaseFactor = 2; - psyConf->minRemainingThresholdFactor = c_minRemainingThresholdFactor; /* 0.01 *(1 << 15)*/ + psyConf->maxAllowedIncreaseFactor = 2; + psyConf->minRemainingThresholdFactor = c_minRemainingThresholdFactor; /* 0.01 *(1 << 15)*/ - psyConf->clipEnergy = c_maxClipEnergyLong; + psyConf->clipEnergy = c_maxClipEnergyLong; psyConf->lowpassLine = extract_l((bandwidth<<1) * FRAME_LEN_LONG / samplerate); for (sfb = 0; sfb < psyConf->sfbCnt; sfb++) { if (sub(psyConf->sfbOffset[sfb], psyConf->lowpassLine) >= 0) break; } - psyConf->sfbActive = sfb; + psyConf->sfbActive = sfb; /* calculate minSnr @@ -429,7 +429,7 @@ Word16 InitPsyConfigurationLong(Word32 bitrate, Word16 InitPsyConfigurationShort(Word32 bitrate, Word32 samplerate, Word16 bandwidth, - PSY_CONFIGURATION_SHORT *psyConf) + PSY_CONFIGURATION_SHORT *psyConf) { Word32 samplerateindex; Word16 sfbBarcVal[MAX_SFB_SHORT]; @@ -437,7 +437,7 @@ Word16 InitPsyConfigurationShort(Word32 bitrate, /* init sfb table */ - samplerateindex = GetSRIndex(samplerate); + samplerateindex = GetSRIndex(samplerate); psyConf->sfbCnt = sfBandTotalShort[samplerateindex]; psyConf->sfbOffset = sfBandTabShort + sfBandTabShortOffset[samplerateindex]; psyConf->sampRateIdx = samplerateindex; @@ -473,21 +473,21 @@ Word16 InitPsyConfigurationShort(Word32 bitrate, /* init ratio */ - psyConf->ratio = c_ratio; + psyConf->ratio = c_ratio; - psyConf->maxAllowedIncreaseFactor = 2; - psyConf->minRemainingThresholdFactor = c_minRemainingThresholdFactor; + psyConf->maxAllowedIncreaseFactor = 2; + psyConf->minRemainingThresholdFactor = c_minRemainingThresholdFactor; - psyConf->clipEnergy = c_maxClipEnergyShort; + psyConf->clipEnergy = c_maxClipEnergyShort; psyConf->lowpassLine = extract_l(((bandwidth << 1) * FRAME_LEN_SHORT) / samplerate); - + for (sfb = 0; sfb < psyConf->sfbCnt; sfb++) { - + if (psyConf->sfbOffset[sfb] >= psyConf->lowpassLine) break; } - psyConf->sfbActive = sfb; + psyConf->sfbActive = sfb; /* calculate minSnr diff --git a/media/libstagefright/codecs/aacenc/src/psy_main.c b/media/libstagefright/codecs/aacenc/src/psy_main.c index 3d0a355..085acb8 100644 --- a/media/libstagefright/codecs/aacenc/src/psy_main.c +++ b/media/libstagefright/codecs/aacenc/src/psy_main.c @@ -81,7 +81,7 @@ Word16 PsyNew(PSY_KERNEL *hPsy, Word32 nChan, VO_MEM_OPERATOR *pMemOP) Word32 *mdctSpectrum; Word32 *scratchTNS; Word16 *mdctDelayBuffer; - + mdctSpectrum = (Word32 *)mem_malloc(pMemOP, nChan * FRAME_LEN_LONG * sizeof(Word32), 32, VO_INDEX_ENC_AAC); if(NULL == mdctSpectrum) return 1; @@ -99,7 +99,7 @@ Word16 PsyNew(PSY_KERNEL *hPsy, Word32 nChan, VO_MEM_OPERATOR *pMemOP) } for (i=0; ipsyData[i].mdctDelayBuffer = mdctDelayBuffer + i*BLOCK_SWITCHING_OFFSET; + hPsy->psyData[i].mdctDelayBuffer = mdctDelayBuffer + i*BLOCK_SWITCHING_OFFSET; hPsy->psyData[i].mdctSpectrum = mdctSpectrum + i*FRAME_LEN_LONG; } @@ -124,12 +124,12 @@ Word16 PsyDelete(PSY_KERNEL *hPsy, VO_MEM_OPERATOR *pMemOP) { if(hPsy->psyData[0].mdctDelayBuffer) mem_free(pMemOP, hPsy->psyData[0].mdctDelayBuffer, VO_INDEX_ENC_AAC); - + if(hPsy->psyData[0].mdctSpectrum) mem_free(pMemOP, hPsy->psyData[0].mdctSpectrum, VO_INDEX_ENC_AAC); for (nch=0; nchpsyData[nch].mdctDelayBuffer = NULL; + hPsy->psyData[nch].mdctDelayBuffer = NULL; hPsy->psyData[nch].mdctSpectrum = NULL; } @@ -216,14 +216,14 @@ Word16 psyMainInit(PSY_KERNEL *hPsy, if (!err) for(ch=0;ch < channels;ch++){ - + InitBlockSwitching(&hPsy->psyData[ch].blockSwitchingControl, bitRate, channels); InitPreEchoControl(hPsy->psyData[ch].sfbThresholdnm1, hPsy->psyConfLong.sfbCnt, hPsy->psyConfLong.sfbThresholdQuiet); - hPsy->psyData[ch].mdctScalenm1 = 0; + hPsy->psyData[ch].mdctScalenm1 = 0; } return(err); @@ -241,7 +241,7 @@ Word16 psyMainInit(PSY_KERNEL *hPsy, Word16 psyMain(Word16 nChannels, ELEMENT_INFO *elemInfo, - Word16 *timeSignal, + Word16 *timeSignal, PSY_DATA psyData[MAX_CHANNELS], TNS_DATA tnsData[MAX_CHANNELS], PSY_CONFIGURATION_LONG *hPsyConfLong, @@ -260,8 +260,8 @@ Word16 psyMain(Word16 nChannels, Word16 channels; Word16 maxScale; - channels = elemInfo->nChannelsInEl; - maxScale = 0; + channels = elemInfo->nChannelsInEl; + maxScale = 0; /* block switching */ for(ch = 0; ch < channels; ch++) { @@ -291,7 +291,7 @@ Word16 psyMain(Word16 nChannels, /* common scaling for all channels */ for (ch=0; ch 0) { Word32 *Spectrum = psyData[ch].mdctSpectrum; for(line=0; linesfbCnt-1; sfb>=0; sfb--) { for (line=hPsyConfLong->sfbOffset[sfb+1] - 1; line>=hPsyConfLong->sfbOffset[sfb]; line--) { - + if (psyData[ch].mdctSpectrum[line] != 0) break; } if (line >= hPsyConfLong->sfbOffset[sfb]) break; @@ -326,7 +326,7 @@ Word16 psyMain(Word16 nChannels, /* Calc bandwise energies for mid and side channel Do it only if 2 channels exist */ - + if (ch == 1) advancePsychLongMS(psyData, hPsyConfLong); } @@ -341,7 +341,7 @@ Word16 psyMain(Word16 nChannels, /* Calc bandwise energies for mid and side channel Do it only if 2 channels exist */ - + if (ch == 1) advancePsychShortMS (psyData, hPsyConfShort); } @@ -349,7 +349,7 @@ Word16 psyMain(Word16 nChannels, /* group short data */ for(ch=0; chtoolsInfo.msDigest = MS_NONE; + psyOutElement->toolsInfo.msDigest = MS_NONE; maxSfbPerGroup[0] = maxSfbPerGroup[1] = max(maxSfbPerGroup[0], maxSfbPerGroup[1]); - + if (psyData[0].blockSwitchingControl.windowSequence != SHORT_WINDOW) MsStereoProcessing(psyData[0].sfbEnergy.sfbLong, psyData[1].sfbEnergy.sfbLong, @@ -420,7 +420,7 @@ Word16 psyMain(Word16 nChannels, build output */ for(ch=0;chmdctSpectrum + hPsyConfLong->lowpassLine; for(i=hPsyConfLong->lowpassLine; iblockSwitchingControl.windowSequence, psyData->sfbEnergy.sfbLong); - /* TnsSync */ + /* TnsSync */ if (ch == 1) { TnsSync(tnsData, tnsData2, @@ -514,7 +514,7 @@ static Word16 advancePsychLong(PSY_DATA* psyData, psyData->blockSwitchingControl.windowSequence); } - /* Tns Encoder */ + /* Tns Encoder */ TnsEncode(&psyOutChannel->tnsInfo, tnsData, hPsyConfLong->sfbCnt, @@ -532,15 +532,15 @@ static Word16 advancePsychLong(PSY_DATA* psyData, *data1++ = min(tdata, clipEnergy); } - /* Calc sfb-bandwise mdct-energies for left and right channel again */ + /* Calc sfb-bandwise mdct-energies for left and right channel again */ if (tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive!=0) { - Word16 tnsStartBand = hPsyConfLong->tnsConf.tnsStartBand; + Word16 tnsStartBand = hPsyConfLong->tnsConf.tnsStartBand; CalcBandEnergy( psyData->mdctSpectrum, hPsyConfLong->sfbOffset+tnsStartBand, hPsyConfLong->sfbActive - tnsStartBand, psyData->sfbEnergy.sfbLong+tnsStartBand, &psyData->sfbEnergySum.sfbLong); - + data0 = psyData->sfbEnergy.sfbLong; tdata = psyData->sfbEnergySum.sfbLong; for (i=0; iblockSwitchingControl.windowSequence == STOP_WINDOW) { data0 = psyData->sfbThresholdnm1; for (i=hPsyConfLong->sfbCnt; i; i--) { - *data0++ = MAX_32; + *data0++ = MAX_32; } - psyData->mdctScalenm1 = 0; + psyData->mdctScalenm1 = 0; } PreEchoControl( psyData->sfbThresholdnm1, @@ -581,15 +581,15 @@ static Word16 advancePsychLong(PSY_DATA* psyData, psyData->sfbThreshold.sfbLong, psyData->mdctScale, psyData->mdctScalenm1); - psyData->mdctScalenm1 = psyData->mdctScale; + psyData->mdctScalenm1 = psyData->mdctScale; + - if (psyData->blockSwitchingControl.windowSequence== START_WINDOW) { data0 = psyData->sfbThresholdnm1; for (i=hPsyConfLong->sfbCnt; i; i--) { - *data0++ = MAX_32; + *data0++ = MAX_32; } - psyData->mdctScalenm1 = 0; + psyData->mdctScalenm1 = 0; } /* apply tns mult table on cb thresholds */ @@ -603,13 +603,13 @@ static Word16 advancePsychLong(PSY_DATA* psyData, data0 = psyData->sfbSpreadedEnergy.sfbLong; data1 = psyData->sfbEnergy.sfbLong; for (i=hPsyConfLong->sfbCnt; i; i--) { - //psyData->sfbSpreadedEnergy.sfbLong[i] = psyData->sfbEnergy.sfbLong[i]; + //psyData->sfbSpreadedEnergy.sfbLong[i] = psyData->sfbEnergy.sfbLong[i]; *data0++ = *data1++; } /* spreading energy */ SpreadingMax(hPsyConfLong->sfbCnt, - hPsyConfLong->sfbMaskLowFactorSprEn, + hPsyConfLong->sfbMaskLowFactorSprEn, hPsyConfLong->sfbMaskHighFactorSprEn, psyData->sfbSpreadedEnergy.sfbLong); @@ -619,7 +619,7 @@ static Word16 advancePsychLong(PSY_DATA* psyData, /***************************************************************************** * * function name: advancePsychLongMS -* description: update mdct-energies for left add or minus right channel +* description: update mdct-energies for left add or minus right channel * for long block * *****************************************************************************/ @@ -657,7 +657,7 @@ static Word16 advancePsychShort(PSY_DATA* psyData, Word32 w; Word32 normEnergyShift = (psyData->mdctScale + 1) << 1; /* in reference code, mdct spectrum must be multipied with 2, so +1 */ Word32 clipEnergy = hPsyConfShort->clipEnergy >> normEnergyShift; - Word32 wOffset = 0; + Word32 wOffset = 0; Word32 *data0, *data1; for(w = 0; w < TRANS_FAC; w++) { @@ -666,7 +666,7 @@ static Word16 advancePsychShort(PSY_DATA* psyData, /* low pass */ data0 = psyData->mdctSpectrum + wOffset + hPsyConfShort->lowpassLine; for(i=hPsyConfShort->lowpassLine; idataRaw.tnsShort.subBlockInfo[w].tnsActive != 0) { - Word16 tnsStartBand = hPsyConfShort->tnsConf.tnsStartBand; + Word16 tnsStartBand = hPsyConfShort->tnsConf.tnsStartBand; CalcBandEnergy( psyData->mdctSpectrum+wOffset, hPsyConfShort->sfbOffset+tnsStartBand, (hPsyConfShort->sfbActive - tnsStartBand), @@ -748,7 +748,7 @@ static Word16 advancePsychShort(PSY_DATA* psyData, } - /* preecho */ + /* preecho */ PreEchoControl( psyData->sfbThresholdnm1, hPsyConfShort->sfbCnt, hPsyConfShort->maxAllowedIncreaseFactor, @@ -770,14 +770,14 @@ static Word16 advancePsychShort(PSY_DATA* psyData, *data0++ = *data1++; } SpreadingMax(hPsyConfShort->sfbCnt, - hPsyConfShort->sfbMaskLowFactorSprEn, + hPsyConfShort->sfbMaskLowFactorSprEn, hPsyConfShort->sfbMaskHighFactorSprEn, psyData->sfbSpreadedEnergy.sfbShort[w]); wOffset += FRAME_LEN_SHORT; } /* for TRANS_FAC */ - psyData->mdctScalenm1 = psyData->mdctScale; + psyData->mdctScalenm1 = psyData->mdctScale; return 0; } @@ -785,7 +785,7 @@ static Word16 advancePsychShort(PSY_DATA* psyData, /***************************************************************************** * * function name: advancePsychShortMS -* description: update mdct-energies for left add or minus right channel +* description: update mdct-energies for left add or minus right channel * for short block * *****************************************************************************/ @@ -793,7 +793,7 @@ static Word16 advancePsychShortMS (PSY_DATA psyData[MAX_CHANNELS], const PSY_CONFIGURATION_SHORT *hPsyConfShort) { Word32 w, wOffset; - wOffset = 0; + wOffset = 0; for(w=0; w> 3) * bitRate; quot = result / sampleRate; - + if (mode == FRAME_LEN_BYTES_MODULO) { result -= quot * sampleRate; } else { /* FRAME_LEN_BYTES_INT */ - result = quot; + result = quot; } return result; @@ -83,7 +83,7 @@ static Word16 calcFrameLen(Word32 bitRate, * * function name:framePadding * description: Calculates if padding is needed for actual frame -* returns: paddingOn or not +* returns: paddingOn or not * *****************************************************************************/ static Word16 framePadding(Word32 bitRate, @@ -93,16 +93,16 @@ static Word16 framePadding(Word32 bitRate, Word16 paddingOn; Word16 difference; - paddingOn = 0; + paddingOn = 0; difference = calcFrameLen( bitRate, sampleRate, FRAME_LEN_BYTES_MODULO ); *paddingRest = *paddingRest - difference; - + if (*paddingRest <= 0 ) { - paddingOn = 1; + paddingOn = 1; *paddingRest = *paddingRest + sampleRate; } @@ -123,12 +123,12 @@ Word16 QCOutNew(QC_OUT *hQC, Word16 nChannels, VO_MEM_OPERATOR *pMemOP) Word32 i; Word16 *quantSpec; Word16 *scf; - UWord16 *maxValueInSfb; - + UWord16 *maxValueInSfb; + quantSpec = (Word16 *)mem_malloc(pMemOP, nChannels * FRAME_LEN_LONG * sizeof(Word16), 32, VO_INDEX_ENC_AAC); if(NULL == quantSpec) return 1; - scf = (Word16 *)mem_malloc(pMemOP, nChannels * MAX_GROUPED_SFB * sizeof(Word16), 32, VO_INDEX_ENC_AAC); + scf = (Word16 *)mem_malloc(pMemOP, nChannels * MAX_GROUPED_SFB * sizeof(Word16), 32, VO_INDEX_ENC_AAC); if(NULL == scf) { return 1; @@ -141,12 +141,12 @@ Word16 QCOutNew(QC_OUT *hQC, Word16 nChannels, VO_MEM_OPERATOR *pMemOP) for (i=0; iqcChannel[i].quantSpec = quantSpec + i*FRAME_LEN_LONG; - + hQC->qcChannel[i].maxValueInSfb = maxValueInSfb + i*MAX_GROUPED_SFB; - + hQC->qcChannel[i].scf = scf + i*MAX_GROUPED_SFB; } - + return 0; } @@ -165,21 +165,21 @@ void QCOutDelete(QC_OUT* hQC, VO_MEM_OPERATOR *pMemOP) { if(hQC->qcChannel[0].quantSpec); mem_free(pMemOP, hQC->qcChannel[0].quantSpec, VO_INDEX_ENC_AAC); - + if(hQC->qcChannel[0].maxValueInSfb) mem_free(pMemOP, hQC->qcChannel[0].maxValueInSfb, VO_INDEX_ENC_AAC); - + if(hQC->qcChannel[0].scf) mem_free(pMemOP, hQC->qcChannel[0].scf, VO_INDEX_ENC_AAC); for (i=0; iqcChannel[i].quantSpec = NULL; - + hQC->qcChannel[i].maxValueInSfb = NULL; - + hQC->qcChannel[i].scf = NULL; } - } + } } /********************************************************************************* @@ -204,8 +204,8 @@ Word16 QCNew(QC_STATE *hQC, VO_MEM_OPERATOR *pMemOP) **********************************************************************************/ void QCDelete(QC_STATE *hQC, VO_MEM_OPERATOR *pMemOP) { - - /* + + /* nothing to do */ hQC=NULL; @@ -221,15 +221,15 @@ void QCDelete(QC_STATE *hQC, VO_MEM_OPERATOR *pMemOP) Word16 QCInit(QC_STATE *hQC, struct QC_INIT *init) { - hQC->nChannels = init->elInfo->nChannelsInEl; - hQC->maxBitsTot = init->maxBits; + hQC->nChannels = init->elInfo->nChannelsInEl; + hQC->maxBitsTot = init->maxBits; hQC->bitResTot = sub(init->bitRes, init->averageBits); - hQC->averageBitsTot = init->averageBits; - hQC->maxBitFac = init->maxBitFac; + hQC->averageBitsTot = init->averageBits; + hQC->maxBitFac = init->maxBitFac; - hQC->padding.paddingRest = init->padding.paddingRest; + hQC->padding.paddingRest = init->padding.paddingRest; - hQC->globStatBits = 3; /* for ID_END */ + hQC->globStatBits = 3; /* for ID_END */ /* channel elements init */ InitElementBits(&hQC->elementBits, @@ -248,13 +248,13 @@ Word16 QCInit(QC_STATE *hQC, /********************************************************************************* -* +* * function name: QCMain * description: quantization and coding the spectrum * returns: 0 if success * **********************************************************************************/ -Word16 QCMain(QC_STATE* hQC, +Word16 QCMain(QC_STATE* hQC, ELEMENT_BITS* elBits, ATS_ELEMENT* adjThrStateElement, PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], /* may be modified in-place */ @@ -262,34 +262,34 @@ Word16 QCMain(QC_STATE* hQC, QC_OUT_CHANNEL qcOutChannel[MAX_CHANNELS], /* out */ QC_OUT_ELEMENT* qcOutElement, Word16 nChannels, - Word16 ancillaryDataBytes) + Word16 ancillaryDataBytes) { Word16 maxChDynBits[MAX_CHANNELS]; - Word16 chBitDistribution[MAX_CHANNELS]; + Word16 chBitDistribution[MAX_CHANNELS]; Word32 ch; - + if (elBits->bitResLevel < 0) { return -1; } - + if (elBits->bitResLevel > elBits->maxBitResBits) { return -1; } qcOutElement->staticBitsUsed = countStaticBitdemand(psyOutChannel, psyOutElement, - nChannels, + nChannels, qcOutElement->adtsUsed); - + if (ancillaryDataBytes) { qcOutElement->ancBitsUsed = 7 + (ancillaryDataBytes << 3); - + if (ancillaryDataBytes >= 15) qcOutElement->ancBitsUsed = qcOutElement->ancBitsUsed + 8; } else { - qcOutElement->ancBitsUsed = 0; + qcOutElement->ancBitsUsed = 0; } CalcFormFactor(hQC->logSfbFormFactor, hQC->sfbNRelevantLines, hQC->logSfbEnergy, psyOutChannel, nChannels); @@ -301,7 +301,7 @@ Word16 QCMain(QC_STATE* hQC, psyOutElement, chBitDistribution, hQC->logSfbEnergy, - hQC->sfbNRelevantLines, + hQC->sfbNRelevantLines, qcOutElement, elBits, nChannels, @@ -323,14 +323,14 @@ Word16 QCMain(QC_STATE* hQC, maxChDynBits[ch] = extract_l(chBitDistribution[ch] * maxDynBits / 1000); } - qcOutElement->dynBitsUsed = 0; + qcOutElement->dynBitsUsed = 0; for (ch = 0; ch < nChannels; ch++) { Word32 chDynBits; Flag constraintsFulfilled; Word32 iter; - iter = 0; + iter = 0; do { - constraintsFulfilled = 1; + constraintsFulfilled = 1; QuantizeSpectrum(psyOutChannel[ch].sfbCnt, psyOutChannel[ch].maxSfbPerGroup, @@ -340,14 +340,14 @@ Word16 QCMain(QC_STATE* hQC, qcOutChannel[ch].globalGain, qcOutChannel[ch].scf, qcOutChannel[ch].quantSpec); - + if (calcMaxValueInSfb(psyOutChannel[ch].sfbCnt, psyOutChannel[ch].maxSfbPerGroup, psyOutChannel[ch].sfbPerGroup, psyOutChannel[ch].sfbOffsets, qcOutChannel[ch].quantSpec, qcOutChannel[ch].maxValueInSfb) > MAX_QUANT) { - constraintsFulfilled = 0; + constraintsFulfilled = 0; } chDynBits = dynBitCount(qcOutChannel[ch].quantSpec, @@ -359,24 +359,24 @@ Word16 QCMain(QC_STATE* hQC, psyOutChannel[ch].sfbPerGroup, psyOutChannel[ch].sfbOffsets, &qcOutChannel[ch].sectionData); - + if (chDynBits >= maxChDynBits[ch]) { - constraintsFulfilled = 0; + constraintsFulfilled = 0; } - + if (!constraintsFulfilled) { qcOutChannel[ch].globalGain = qcOutChannel[ch].globalGain + 1; } iter = iter + 1; - + } while(!constraintsFulfilled); qcOutElement->dynBitsUsed = qcOutElement->dynBitsUsed + chDynBits; - qcOutChannel[ch].mdctScale = psyOutChannel[ch].mdctScale; - qcOutChannel[ch].groupingMask = psyOutChannel[ch].groupingMask; - qcOutChannel[ch].windowShape = psyOutChannel[ch].windowShape; + qcOutChannel[ch].mdctScale = psyOutChannel[ch].mdctScale; + qcOutChannel[ch].groupingMask = psyOutChannel[ch].groupingMask; + qcOutChannel[ch].windowShape = psyOutChannel[ch].windowShape; } /* save dynBitsUsed for correction of bits2pe relation */ @@ -411,13 +411,13 @@ static Word16 calcMaxValueInSfb(Word16 sfbCnt, Word16 sfbOffs, sfb; Word16 maxValueAll; - maxValueAll = 0; + maxValueAll = 0; for(sfbOffs=0;sfbOffsbitResTot = 0; + + qcKernel->bitResTot = 0; elBits = &qcKernel->elementBits; - + if (elBits->averageBits > 0) { /* constant bitrate */ Word16 bitsUsed; @@ -460,8 +460,8 @@ void updateBitres(QC_STATE* qcKernel, } else { /* variable bitrate */ - elBits->bitResLevel = elBits->maxBits; - qcKernel->bitResTot = qcKernel->maxBitsTot; + elBits->bitResLevel = elBits->maxBits; + qcKernel->bitResTot = qcKernel->maxBitsTot; } } @@ -476,55 +476,55 @@ Word16 FinalizeBitConsumption(QC_STATE *qcKernel, { Word32 nFullFillElem; Word32 totFillBits; - Word16 diffBits; + Word16 diffBits; Word16 bitsUsed; - totFillBits = 0; + totFillBits = 0; - qcOut->totStaticBitsUsed = qcKernel->globStatBits; + qcOut->totStaticBitsUsed = qcKernel->globStatBits; qcOut->totStaticBitsUsed += qcOut->qcElement.staticBitsUsed; qcOut->totDynBitsUsed = qcOut->qcElement.dynBitsUsed; qcOut->totAncBitsUsed = qcOut->qcElement.ancBitsUsed; qcOut->totFillBits = qcOut->qcElement.fillBits; - + if (qcOut->qcElement.fillBits) { totFillBits += qcOut->qcElement.fillBits; } nFullFillElem = (max((qcOut->totFillBits - 1), 0) / maxFillElemBits) * maxFillElemBits; - + qcOut->totFillBits = qcOut->totFillBits - nFullFillElem; /* check fill elements */ - + if (qcOut->totFillBits > 0) { /* minimum Fillelement contains 7 (TAG + byte cnt) bits */ qcOut->totFillBits = max(7, qcOut->totFillBits); /* fill element size equals n*8 + 7 */ - qcOut->totFillBits = qcOut->totFillBits + ((8 - ((qcOut->totFillBits - 7) & 0x0007)) & 0x0007); + qcOut->totFillBits = qcOut->totFillBits + ((8 - ((qcOut->totFillBits - 7) & 0x0007)) & 0x0007); } qcOut->totFillBits = qcOut->totFillBits + nFullFillElem; /* now distribute extra fillbits and alignbits over channel elements */ qcOut->alignBits = 7 - ((qcOut->totDynBitsUsed + qcOut->totStaticBitsUsed + - qcOut->totAncBitsUsed + qcOut->totFillBits - 1) & 0x0007); + qcOut->totAncBitsUsed + qcOut->totFillBits - 1) & 0x0007); + - if ( (qcOut->alignBits + qcOut->totFillBits - totFillBits == 8) && (qcOut->totFillBits > 8)) qcOut->totFillBits = qcOut->totFillBits - 8; - + diffBits = qcOut->alignBits + qcOut->totFillBits - totFillBits; - + if(diffBits>=0) { qcOut->qcElement.fillBits += diffBits; } bitsUsed = qcOut->totDynBitsUsed + qcOut->totStaticBitsUsed + qcOut->totAncBitsUsed; bitsUsed = bitsUsed + qcOut->totFillBits + qcOut->alignBits; - + if (bitsUsed > qcKernel->maxBitsTot) { return -1; } @@ -564,9 +564,9 @@ Word16 AdjustBitrate(QC_STATE *hQC, codeBitsLast = hQC->averageBitsTot - hQC->globStatBits; codeBits = frameLen - hQC->globStatBits; - /* calculate bits for every channel element */ + /* calculate bits for every channel element */ if (codeBits != codeBitsLast) { - Word16 totalBits = 0; + Word16 totalBits = 0; hQC->elementBits.averageBits = (hQC->elementBits.relativeBits * codeBits) >> 16; /* relativeBits was scaled down by 2 */ totalBits += hQC->elementBits.averageBits; @@ -574,7 +574,7 @@ Word16 AdjustBitrate(QC_STATE *hQC, hQC->elementBits.averageBits = hQC->elementBits.averageBits + (codeBits - totalBits); } - hQC->averageBitsTot = frameLen; + hQC->averageBitsTot = frameLen; return 0; } diff --git a/media/libstagefright/codecs/aacenc/src/quantize.c b/media/libstagefright/codecs/aacenc/src/quantize.c index 973554e..54add2f 100644 --- a/media/libstagefright/codecs/aacenc/src/quantize.c +++ b/media/libstagefright/codecs/aacenc/src/quantize.c @@ -34,32 +34,32 @@ static const Word32 XROUND = 0x33e425af; /* final rounding constant (-0.0946f+ 0 /***************************************************************************** * -* function name:pow34 -* description: calculate $x^{\frac{3}{4}}, for 0.5 < x < 1.0$. +* function name:pow34 +* description: calculate $x^{\frac{3}{4}}, for 0.5 < x < 1.0$. * *****************************************************************************/ __inline Word32 pow34(Word32 x) { /* index table using MANT_DIGITS bits, but mask out the sign bit and the MSB - which is always one */ + which is always one */ return mTab_3_4[(x >> (INT_BITS-2-MANT_DIGITS)) & (MANT_SIZE-1)]; } /***************************************************************************** * -* function name:quantizeSingleLine -* description: quantizes spectrum -* quaSpectrum = mdctSpectrum^3/4*2^(-(3/16)*gain) +* function name:quantizeSingleLine +* description: quantizes spectrum +* quaSpectrum = mdctSpectrum^3/4*2^(-(3/16)*gain) * *****************************************************************************/ static Word16 quantizeSingleLine(const Word16 gain, const Word32 absSpectrum) { Word32 e, minusFinalExp, finalShift; Word32 x; - Word16 qua = 0; + Word16 qua = 0; + - if (absSpectrum) { e = norm_l(absSpectrum); x = pow34(absSpectrum << e); @@ -71,7 +71,7 @@ static Word16 quantizeSingleLine(const Word16 gain, const Word32 absSpectrum) /* separate the exponent into a shift, and a multiply */ finalShift = minusFinalExp >> 4; - + if (finalShift < INT_BITS) { x = L_mpy_wx(x, pow2tominusNover16[minusFinalExp & 15]); @@ -84,7 +84,7 @@ static Word16 quantizeSingleLine(const Word16 gain, const Word32 absSpectrum) x >>= finalShift; else x <<= (-finalShift); - + qua = saturate(x); } } @@ -94,10 +94,10 @@ static Word16 quantizeSingleLine(const Word16 gain, const Word32 absSpectrum) /***************************************************************************** * -* function name:quantizeLines -* description: quantizes spectrum lines -* quaSpectrum = mdctSpectrum^3/4*2^(-(3/16)*gain) -* input: global gain, number of lines to process, spectral data +* function name:quantizeLines +* description: quantizes spectrum lines +* quaSpectrum = mdctSpectrum^3/4*2^(-(3/16)*gain) +* input: global gain, number of lines to process, spectral data * output: quantized spectrum * *****************************************************************************/ @@ -116,15 +116,15 @@ static void quantizeLines(const Word16 gain, pquat = quantBorders[m]; g += 16; - + if(g >= 0) { for (line=0; line> g; if (saShft > pquat[0]) { - + if (saShft < pquat[1]) { - + qua = mdctSpeL>0 ? 1 : -1; } else { - + if (saShft < pquat[2]) { - + qua = mdctSpeL>0 ? 2 : -2; } else { - + if (saShft < pquat[3]) { - + qua = mdctSpeL>0 ? 3 : -3; } else { qua = quantizeSingleLine(gain, sa); /* adjust the sign. Since 0 < qua < 1, this cannot overflow. */ - + if (mdctSpeL < 0) qua = -qua; } @@ -162,17 +162,17 @@ static void quantizeLines(const Word16 gain, } } } - quaSpectrum[line] = qua ; + quaSpectrum[line] = qua ; } } else { for (line=0; line pquat[0]) { - + if (saShft < pquat[1]) { - + qua = mdctSpeL>0 ? 1 : -1; } else { - + if (saShft < pquat[2]) { - + qua = mdctSpeL>0 ? 2 : -2; } else { - + if (saShft < pquat[3]) { - + qua = mdctSpeL>0 ? 3 : -3; } else { qua = quantizeSingleLine(gain, sa); /* adjust the sign. Since 0 < qua < 1, this cannot overflow. */ - + if (mdctSpeL < 0) qua = -qua; } @@ -209,8 +209,8 @@ static void quantizeLines(const Word16 gain, } } } - quaSpectrum[line] = qua ; - } + quaSpectrum[line] = qua ; + } } } @@ -218,10 +218,10 @@ static void quantizeLines(const Word16 gain, /***************************************************************************** * -* function name:iquantizeLines +* function name:iquantizeLines * description: iquantizes spectrum lines without sign -* mdctSpectrum = iquaSpectrum^4/3 *2^(0.25*gain) -* input: global gain, number of lines to process,quantized spectrum +* mdctSpectrum = iquaSpectrum^4/3 *2^(0.25*gain) +* input: global gain, number of lines to process,quantized spectrum * output: spectral data * *****************************************************************************/ @@ -234,11 +234,11 @@ static void iquantizeLines(const Word16 gain, Word32 iquantizershift; Word32 line; - iquantizermod = gain & 3; + iquantizermod = gain & 3; iquantizershift = gain >> 2; for (line=0; line> (INT_BITS-2-MANT_DIGITS)) & (~MANT_SIZE); + tabIndex = (accu >> (INT_BITS-2-MANT_DIGITS)) & (~MANT_SIZE); /* calculate "mantissa" ^4/3 */ - s = mTab_4_3[tabIndex]; + s = mTab_4_3[tabIndex]; /* get approperiate exponent multiplier for specExp^3/4 combined with scfMod */ - t = specExpMantTableComb_enc[iquantizermod][specExp]; + t = specExpMantTableComb_enc[iquantizermod][specExp]; /* multiply "mantissa" ^4/3 with exponent multiplier */ accu = MULHIGH(s, t); /* get approperiate exponent shifter */ - specExp = specExpTableComb_enc[iquantizermod][specExp]; + specExp = specExpTableComb_enc[iquantizermod][specExp]; specExp += iquantizershift + 1; if(specExp >= 0) @@ -273,7 +273,7 @@ static void iquantizeLines(const Word16 gain, mdctSpectrum[line] = accu >> (-specExp); } else { - mdctSpectrum[line] = 0; + mdctSpectrum[line] = 0; } } } @@ -301,7 +301,7 @@ void QuantizeSpectrum(Word16 sfbCnt, for(sfbOffs=0;sfbOffs= 0) - { + { g2 = -g2; - for(line=0; line> g2; } else { - + if (saShft < pquat[1]) { diff = saShft - repquat[0]; distSingle = (diff * diff) >> g2; } else { - + if (saShft < pquat[2]) { diff = saShft - repquat[1]; distSingle = (diff * diff) >> g2; } else { - + if (saShft < pquat[3]) { diff = saShft - repquat[2]; distSingle = (diff * diff) >> g2; @@ -387,15 +387,15 @@ Word32 calcSfbDist(const Word32 *spec, } } } - + dist = L_add(dist, distSingle); } } } else { - for(line=0; line> 1; @@ -74,12 +74,12 @@ __inline Word32 formfac_sqrt(Word32 x) else y = x >> (-preshift); y = formfac_sqrttable[y-32]; - + if(postshift >= 0) y = y >> postshift; else y = y << (-postshift); - + return y; } @@ -100,19 +100,19 @@ CalcFormFactorChannel(Word16 *logSfbFormFactor, Word32 sfbw, sfbw1; Word32 i, j; Word32 sfbOffs, sfb, shift; - + sfbw = sfbw1 = 0; for (sfbOffs=0; sfbOffssfbCnt; sfbOffs+=psyOutChan->sfbPerGroup){ for (sfb=0; sfbmaxSfbPerGroup; sfb++) { - i = sfbOffs+sfb; - + i = sfbOffs+sfb; + if (psyOutChan->sfbEnergy[i] > psyOutChan->sfbThreshold[i]) { Word32 accu, avgFormFactor,iSfbWidth; Word32 *mdctSpec; sfbw = psyOutChan->sfbOffsets[i+1] - psyOutChan->sfbOffsets[i]; iSfbWidth = invSBF[(sfbw >> 2) - 1]; mdctSpec = psyOutChan->mdctSpectrum + psyOutChan->sfbOffsets[i]; - accu = 0; + accu = 0; /* calc sum of sqrt(spec) */ for (j=sfbw; j; j--) { accu += formfac_sqrt(L_abs(*mdctSpec)); mdctSpec++; @@ -129,7 +129,7 @@ CalcFormFactorChannel(Word16 *logSfbFormFactor, } else { /* set number of lines to zero */ - sfbNRelevantLines[i] = 0; + sfbNRelevantLines[i] = 0; } } } @@ -141,68 +141,68 @@ CalcFormFactorChannel(Word16 *logSfbFormFactor, * description: find better scalefactor with analysis by synthesis * **********************************************************************************/ -static Word16 improveScf(Word32 *spec, - Word16 sfbWidth, - Word32 thresh, +static Word16 improveScf(Word32 *spec, + Word16 sfbWidth, + Word32 thresh, Word16 scf, Word16 minScf, - Word32 *dist, + Word32 *dist, Word16 *minScfCalculated) { Word32 cnt; Word32 sfbDist; Word32 scfBest; Word32 thresh125 = L_add(thresh, (thresh >> 2)); - - scfBest = scf; - + + scfBest = scf; + /* calc real distortion */ sfbDist = calcSfbDist(spec, sfbWidth, scf); - *minScfCalculated = scf; + *minScfCalculated = scf; if(!sfbDist) return scfBest; - + if (sfbDist > thresh125) { Word32 scfEstimated; Word32 sfbDistBest; - scfEstimated = scf; - sfbDistBest = sfbDist; - - cnt = 0; + scfEstimated = scf; + sfbDistBest = sfbDist; + + cnt = 0; while (sfbDist > thresh125 && (cnt < 3)) { - + scf = scf + 1; sfbDist = calcSfbDist(spec, sfbWidth, scf); - + if (sfbDist < sfbDistBest) { - scfBest = scf; - sfbDistBest = sfbDist; + scfBest = scf; + sfbDistBest = sfbDist; } cnt = cnt + 1; } - cnt = 0; - scf = scfEstimated; - sfbDist = sfbDistBest; + cnt = 0; + scf = scfEstimated; + sfbDist = sfbDistBest; while ((sfbDist > thresh125) && (cnt < 1) && (scf > minScf)) { - + scf = scf - 1; sfbDist = calcSfbDist(spec, sfbWidth, scf); - + if (sfbDist < sfbDistBest) { - scfBest = scf; - sfbDistBest = sfbDist; + scfBest = scf; + sfbDistBest = sfbDist; } - *minScfCalculated = scf; + *minScfCalculated = scf; cnt = cnt + 1; } - *dist = sfbDistBest; + *dist = sfbDistBest; } else { - Word32 sfbDistBest; + Word32 sfbDistBest; Word32 sfbDistAllowed; Word32 thresh08 = fixmul(COEF08_31, thresh); - sfbDistBest = sfbDist; - + sfbDistBest = sfbDist; + if (sfbDist < thresh08) sfbDistAllowed = sfbDist; else @@ -210,16 +210,16 @@ static Word16 improveScf(Word32 *spec, for (cnt=0; cnt<3; cnt++) { scf = scf + 1; sfbDist = calcSfbDist(spec, sfbWidth, scf); - + if (fixmul(COEF08_31,sfbDist) < sfbDistAllowed) { *minScfCalculated = scfBest + 1; - scfBest = scf; - sfbDistBest = sfbDist; + scfBest = scf; + sfbDistBest = sfbDist; } } - *dist = sfbDistBest; + *dist = sfbDistBest; } - + /* return best scalefactor */ return scfBest; } @@ -233,10 +233,10 @@ static Word16 improveScf(Word32 *spec, static Word16 countSingleScfBits(Word16 scf, Word16 scfLeft, Word16 scfRight) { Word16 scfBits; - + scfBits = bitCountScalefactorDelta(scfLeft - scf) + bitCountScalefactorDelta(scf - scfRight); - + return scfBits; } @@ -245,7 +245,7 @@ static Word16 countSingleScfBits(Word16 scf, Word16 scfLeft, Word16 scfRight) * function name: calcSingleSpecPe * description: ldRatio = log2(en(n)) - 0,375*scfGain(n) * nbits = 0.7*nLines*ldRation for ldRation >= c1 -* nbits = 0.7*nLines*(c2 + c3*ldRatio) for ldRation < c1 +* nbits = 0.7*nLines*(c2 + c3*ldRatio) for ldRation < c1 * **********************************************************************************/ static Word16 calcSingleSpecPe(Word16 scf, Word16 sfbConstPePart, Word16 nLines) @@ -253,18 +253,18 @@ static Word16 calcSingleSpecPe(Word16 scf, Word16 sfbConstPePart, Word16 nLines) Word32 specPe; Word32 ldRatio; Word32 scf3; - + ldRatio = sfbConstPePart << 3; /* (sfbConstPePart -0.375*scf)*8 */ scf3 = scf + scf + scf; ldRatio = ldRatio - scf3; - + if (ldRatio < PE_C1_8) { - /* 21 : 2*8*PE_C2, 2*PE_C3 ~ 1*/ + /* 21 : 2*8*PE_C2, 2*PE_C3 ~ 1*/ ldRatio = (ldRatio + PE_C2_16) >> 1; } specPe = nLines * ldRatio; specPe = (specPe * PE_SCALE) >> 14; - + return saturate(specPe); } @@ -275,53 +275,53 @@ static Word16 calcSingleSpecPe(Word16 scf, Word16 sfbConstPePart, Word16 nLines) * description: count different scf bits used * **********************************************************************************/ -static Word16 countScfBitsDiff(Word16 *scfOld, Word16 *scfNew, +static Word16 countScfBitsDiff(Word16 *scfOld, Word16 *scfNew, Word16 sfbCnt, Word16 startSfb, Word16 stopSfb) { Word32 scfBitsDiff; Word32 sfb, sfbLast; Word32 sfbPrev, sfbNext; - - scfBitsDiff = 0; - sfb = 0; - + + scfBitsDiff = 0; + sfb = 0; + /* search for first relevant sfb */ - sfbLast = startSfb; + sfbLast = startSfb; while (sfbLast < stopSfb && scfOld[sfbLast] == VOAAC_SHRT_MIN) { - + sfbLast = sfbLast + 1; } /* search for previous relevant sfb and count diff */ sfbPrev = startSfb - 1; while ((sfbPrev>=0) && scfOld[sfbPrev] == VOAAC_SHRT_MIN) { - + sfbPrev = sfbPrev - 1; } - + if (sfbPrev>=0) { scfBitsDiff += bitCountScalefactorDelta(scfNew[sfbPrev] - scfNew[sfbLast]) - bitCountScalefactorDelta(scfOld[sfbPrev] - scfOld[sfbLast]); } /* now loop through all sfbs and count diffs of relevant sfbs */ for (sfb=sfbLast+1; sfb> 2; } - - + + ldRatioOld = sfbConstPePart[sfb] << 3; scf3 = scfOld[sfb] + scfOld[sfb] + scfOld[sfb]; ldRatioOld = ldRatioOld - scf3; ldRatioNew = sfbConstPePart[sfb] << 3; scf3 = scfNew[sfb] + scfNew[sfb] + scfNew[sfb]; ldRatioNew = ldRatioNew - scf3; - + if (ldRatioOld < PE_C1_8) { /* 21 : 2*8*PE_C2, 2*PE_C3 ~ 1*/ ldRatioOld = (ldRatioOld + PE_C2_16) >> 1; } - + if (ldRatioNew < PE_C1_8) { /* 21 : 2*8*PE_C2, 2*PE_C3 ~ 1*/ ldRatioNew = (ldRatioNew + PE_C2_16) >> 1; } - + specPeDiff += sfbNRelevantLines[sfb] * (ldRatioNew - ldRatioOld); } } - + specPeDiff = (specPeDiff * PE_SCALE) >> 14; - + return saturate(specPeDiff); } @@ -390,9 +390,9 @@ static Word16 calcSpecPeDiff(Word16 *scfOld, * **********************************************************************************/ static void assimilateSingleScf(PSY_OUT_CHANNEL *psyOutChan, - Word16 *scf, + Word16 *scf, Word16 *minScf, - Word32 *sfbDist, + Word32 *sfbDist, Word16 *sfbConstPePart, Word16 *logSfbEnergy, Word16 *logSfbFormFactor, @@ -411,94 +411,94 @@ static void assimilateSingleScf(PSY_OUT_CHANNEL *psyOutChan, Word16 *prevScfNext = psyOutChan->prevScfNext; Word16 *deltaPeLast = psyOutChan->deltaPeLast; Flag updateMinScfCalculated; - - success = 0; - deltaPe = 0; - + + success = 0; + deltaPe = 0; + for(j=0;jsfbCnt;j++){ - prevScfLast[j] = MAX_16; - prevScfNext[j] = MAX_16; - deltaPeLast[j] = MAX_16; + prevScfLast[j] = MAX_16; + prevScfNext[j] = MAX_16; + deltaPeLast[j] = MAX_16; } - - sfbLast = -1; - sfbAct = -1; - sfbNext = -1; + + sfbLast = -1; + sfbAct = -1; + sfbNext = -1; scfLast = 0; scfNext = 0; - scfMin = MAX_16; + scfMin = MAX_16; do { /* search for new relevant sfb */ sfbNext = sfbNext + 1; while (sfbNext < psyOutChan->sfbCnt && scf[sfbNext] == MIN_16) { - + sfbNext = sfbNext + 1; } - + if ((sfbLast>=0) && (sfbAct>=0) && sfbNext < psyOutChan->sfbCnt) { /* relevant scfs to the left and to the right */ - scfAct = scf[sfbAct]; + scfAct = scf[sfbAct]; scfLast = scf + sfbLast; scfNext = scf + sfbNext; scfMin = min(*scfLast, *scfNext); } else { - + if (sfbLast == -1 && (sfbAct>=0) && sfbNext < psyOutChan->sfbCnt) { /* first relevant scf */ - scfAct = scf[sfbAct]; + scfAct = scf[sfbAct]; scfLast = &scfAct; scfNext = scf + sfbNext; - scfMin = *scfNext; + scfMin = *scfNext; } else { - + if ((sfbLast>=0) && (sfbAct>=0) && sfbNext == psyOutChan->sfbCnt) { /* last relevant scf */ - scfAct = scf[sfbAct]; + scfAct = scf[sfbAct]; scfLast = scf + sfbLast; scfNext = &scfAct; - scfMin = *scfLast; + scfMin = *scfLast; } } } - + if (sfbAct>=0) scfMin = max(scfMin, minScf[sfbAct]); - - if ((sfbAct >= 0) && - (sfbLast>=0 || sfbNext < psyOutChan->sfbCnt) && - scfAct > scfMin && - (*scfLast != prevScfLast[sfbAct] || - *scfNext != prevScfNext[sfbAct] || + + if ((sfbAct >= 0) && + (sfbLast>=0 || sfbNext < psyOutChan->sfbCnt) && + scfAct > scfMin && + (*scfLast != prevScfLast[sfbAct] || + *scfNext != prevScfNext[sfbAct] || deltaPe < deltaPeLast[sfbAct])) { - success = 0; - - /* estimate required bits for actual scf */ + success = 0; + + /* estimate required bits for actual scf */ if (sfbConstPePart[sfbAct] == MIN_16) { sfbConstPePart[sfbAct] = logSfbEnergy[sfbAct] - logSfbFormFactor[sfbAct] + 11-8*4; /* 4*log2(6.75) - 32 */ - + if (sfbConstPePart[sfbAct] < 0) sfbConstPePart[sfbAct] = sfbConstPePart[sfbAct] + 3; sfbConstPePart[sfbAct] = sfbConstPePart[sfbAct] >> 2; } - + sfbPeOld = calcSingleSpecPe(scfAct, sfbConstPePart[sfbAct], sfbNRelevantLines[sfbAct]) + countSingleScfBits(scfAct, *scfLast, *scfNext); - deltaPeNew = deltaPe; - updateMinScfCalculated = 1; + deltaPeNew = deltaPe; + updateMinScfCalculated = 1; do { scfAct = scfAct - 1; /* check only if the same check was not done before */ - + if (scfAct < minScfCalculated[sfbAct]) { sfbPeNew = calcSingleSpecPe(scfAct, sfbConstPePart[sfbAct], sfbNRelevantLines[sfbAct]) + countSingleScfBits(scfAct, *scfLast, *scfNext); - /* use new scf if no increase in pe and + /* use new scf if no increase in pe and quantization error is smaller */ deltaPeTmp = deltaPe + sfbPeNew - sfbPeOld; - + if (deltaPeTmp < 10) { sfbDistNew = calcSfbDist(psyOutChan->mdctSpectrum+ psyOutChan->sfbOffsets[sfbAct], @@ -506,46 +506,46 @@ static void assimilateSingleScf(PSY_OUT_CHANNEL *psyOutChan, scfAct); if (sfbDistNew < sfbDist[sfbAct]) { /* success, replace scf by new one */ - scf[sfbAct] = scfAct; - sfbDist[sfbAct] = sfbDistNew; - deltaPeNew = deltaPeTmp; - success = 1; + scf[sfbAct] = scfAct; + sfbDist[sfbAct] = sfbDistNew; + deltaPeNew = deltaPeTmp; + success = 1; } /* mark as already checked */ - + if (updateMinScfCalculated) { - minScfCalculated[sfbAct] = scfAct; + minScfCalculated[sfbAct] = scfAct; } } else { - updateMinScfCalculated = 0; + updateMinScfCalculated = 0; } } - + } while (scfAct > scfMin); - deltaPe = deltaPeNew; + deltaPe = deltaPeNew; /* save parameters to avoid multiple computations of the same sfb */ - prevScfLast[sfbAct] = *scfLast; - prevScfNext[sfbAct] = *scfNext; - deltaPeLast[sfbAct] = deltaPe; + prevScfLast[sfbAct] = *scfLast; + prevScfNext[sfbAct] = *scfNext; + deltaPeLast[sfbAct] = deltaPe; } - + if (success && restartOnSuccess) { /* start again at first sfb */ - sfbLast = -1; - sfbAct = -1; - sfbNext = -1; + sfbLast = -1; + sfbAct = -1; + sfbNext = -1; scfLast = 0; scfNext = 0; - scfMin = MAX_16; - success = 0; + scfMin = MAX_16; + success = 0; } else { /* shift sfbs for next band */ - sfbLast = sfbAct; - sfbAct = sfbNext; + sfbLast = sfbAct; + sfbAct = sfbNext; } - + } while (sfbNext < psyOutChan->sfbCnt); } @@ -557,9 +557,9 @@ static void assimilateSingleScf(PSY_OUT_CHANNEL *psyOutChan, * **********************************************************************************/ static void assimilateMultipleScf(PSY_OUT_CHANNEL *psyOutChan, - Word16 *scf, + Word16 *scf, Word16 *minScf, - Word32 *sfbDist, + Word32 *sfbDist, Word16 *sfbConstPePart, Word16 *logSfbEnergy, Word16 *logSfbFormFactor, @@ -574,95 +574,95 @@ static void assimilateMultipleScf(PSY_OUT_CHANNEL *psyOutChan, Word32 *sfbDistNew = psyOutChan->sfbDistNew; Word16 *scfTmp = psyOutChan->prevScfLast; - deltaPe = 0; - sfbCnt = psyOutChan->sfbCnt; - + deltaPe = 0; + sfbCnt = psyOutChan->sfbCnt; + /* calc min and max scalfactors */ - scfMin = MAX_16; - scfMax = MIN_16; + scfMin = MAX_16; + scfMax = MIN_16; for (sfb=0; sfb scfAct)) { sfb = sfb + 1; } - stopSfb = sfb; - - possibleRegionFound = 0; - + stopSfb = sfb; + + possibleRegionFound = 0; + if (startSfb < sfbCnt) { - possibleRegionFound = 1; + possibleRegionFound = 1; for (sfb=startSfb; sfbmdctSpectrum + - psyOutChan->sfbOffsets[sfb], + psyOutChan->sfbOffsets[sfb], (psyOutChan->sfbOffsets[sfb+1] - psyOutChan->sfbOffsets[sfb]), scfAct); - - + + if (sfbDistNew[sfb] > psyOutChan->sfbThreshold[sfb]) { distNewSum = distOldSum << 1; break; @@ -670,20 +670,20 @@ static void assimilateMultipleScf(PSY_OUT_CHANNEL *psyOutChan, distNewSum = L_add(distNewSum, sfbDistNew[sfb]); } } - + if (distNewSum < distOldSum) { - deltaPe = deltaPeNew; + deltaPe = deltaPeNew; for (sfb=startSfb; sfb scfMin); } } @@ -710,125 +710,125 @@ EstimateScaleFactorsChannel(PSY_OUT_CHANNEL *psyOutChan, Word32 *sfbDist = psyOutChan->sfbDist; Word16 *minSfMaxQuant = psyOutChan->minSfMaxQuant; Word16 *minScfCalculated = psyOutChan->minScfCalculated; - - + + for (i=0; isfbCnt; i++) { Word32 sbfwith, sbfStart; Word32 *mdctSpec; - thresh = psyOutChan->sfbThreshold[i]; - energy = psyOutChan->sfbEnergy[i]; - + thresh = psyOutChan->sfbThreshold[i]; + energy = psyOutChan->sfbEnergy[i]; + sbfStart = psyOutChan->sfbOffsets[i]; sbfwith = psyOutChan->sfbOffsets[i+1] - sbfStart; mdctSpec = psyOutChan->mdctSpectrum+sbfStart; - - maxSpec = 0; + + maxSpec = 0; /* maximum of spectrum */ for (j=sbfwith; j; j-- ) { Word32 absSpec = L_abs(*mdctSpec); mdctSpec++; - maxSpec |= absSpec; + maxSpec |= absSpec; } - + /* scfs without energy or with thresh>energy are marked with MIN_16 */ - scf[i] = MIN_16; - minSfMaxQuant[i] = MIN_16; - + scf[i] = MIN_16; + minSfMaxQuant[i] = MIN_16; + if ((maxSpec > 0) && (energy > thresh)) { - - energyPart = logSfbFormFactor[i]; - thresholdPart = iLog4(thresh); + + energyPart = logSfbFormFactor[i]; + thresholdPart = iLog4(thresh); /* -20 = 4*log2(6.75) - 32 */ scfInt = ((thresholdPart - energyPart - 20) * SCALE_ESTIMATE_COEF) >> 15; - + minSfMaxQuant[i] = iLog4(maxSpec) - 68; /* 68 -16/3*log(MAX_QUANT+0.5-logCon)/log(2) + 1 */ - - + + if (minSfMaxQuant[i] > scfInt) { - scfInt = minSfMaxQuant[i]; + scfInt = minSfMaxQuant[i]; } - + /* find better scalefactor with analysis by synthesis */ scfInt = improveScf(psyOutChan->mdctSpectrum+sbfStart, sbfwith, - thresh, scfInt, minSfMaxQuant[i], + thresh, scfInt, minSfMaxQuant[i], &sfbDist[i], &minScfCalculated[i]); - - scf[i] = scfInt; + + scf[i] = scfInt; } } - - + + /* scalefactor differece reduction */ { Word16 sfbConstPePart[MAX_GROUPED_SFB]; for(i=0;isfbCnt;i++) { - sfbConstPePart[i] = MIN_16; + sfbConstPePart[i] = MIN_16; } - - assimilateSingleScf(psyOutChan, scf, + + assimilateSingleScf(psyOutChan, scf, minSfMaxQuant, sfbDist, sfbConstPePart, logSfbEnergy, logSfbFormFactor, sfbNRelevantLines, minScfCalculated, 1); - - assimilateMultipleScf(psyOutChan, scf, + + assimilateMultipleScf(psyOutChan, scf, minSfMaxQuant, sfbDist, sfbConstPePart, logSfbEnergy, logSfbFormFactor, sfbNRelevantLines); } /* get max scalefac for global gain */ - maxScf = MIN_16; - minScf = MAX_16; + maxScf = MIN_16; + minScf = MAX_16; for (i=0; isfbCnt; i++) { - + if (maxScf < scf[i]) { - maxScf = scf[i]; + maxScf = scf[i]; } - + if ((scf[i] != MIN_16) && (minScf > scf[i])) { - minScf = scf[i]; + minScf = scf[i]; } } /* limit scf delta */ maxAllowedScf = minScf + MAX_SCF_DELTA; for(i=0; isfbCnt; i++) { - + if ((scf[i] != MIN_16) && (maxAllowedScf < scf[i])) { - scf[i] = maxAllowedScf; + scf[i] = maxAllowedScf; } } /* new maxScf if any scf has been limited */ - + if (maxAllowedScf < maxScf) { - maxScf = maxAllowedScf; + maxScf = maxAllowedScf; } - + /* calc loop scalefactors */ - + if (maxScf > MIN_16) { - *globalGain = maxScf; - lastSf = 0; - + *globalGain = maxScf; + lastSf = 0; + for(i=0; isfbCnt; i++) { - + if (scf[i] == MIN_16) { - scf[i] = lastSf; + scf[i] = lastSf; /* set band explicitely to zero */ for (j=psyOutChan->sfbOffsets[i]; jsfbOffsets[i+1]; j++) { - psyOutChan->mdctSpectrum[j] = 0; + psyOutChan->mdctSpectrum[j] = 0; } } else { scf[i] = maxScf - scf[i]; - lastSf = scf[i]; + lastSf = scf[i]; } } } else{ - *globalGain = 0; + *globalGain = 0; /* set spectrum explicitely to zero */ for(i=0; isfbCnt; i++) { - scf[i] = 0; + scf[i] = 0; for (j=psyOutChan->sfbOffsets[i]; jsfbOffsets[i+1]; j++) { - psyOutChan->mdctSpectrum[j] = 0; + psyOutChan->mdctSpectrum[j] = 0; } } } @@ -848,7 +848,7 @@ CalcFormFactor(Word16 logSfbFormFactor[MAX_CHANNELS][MAX_GROUPED_SFB], const Word16 nChannels) { Word16 j; - + for (j=0; jmsDigest) { case MS_NONE: case MS_ALL: @@ -85,34 +85,34 @@ static Word16 tnsCount(TNS_INFO *tnsInfo, Word16 blockType) Word32 coefBits; Word16 *ptcoef; - count = 0; - + count = 0; + if (blockType == 2) numOfWindows = 8; else numOfWindows = 1; - tnsPresent = 0; + tnsPresent = 0; for (i=0; itnsActive[i]!=0) { - tnsPresent = 1; + tnsPresent = 1; } } - + if (tnsPresent) { /* there is data to be written*/ /*count += 1; */ for (i=0; itnsActive[i]) { count += 1; - + if (blockType == 2) { count += 4; count += 3; @@ -121,29 +121,29 @@ static Word16 tnsCount(TNS_INFO *tnsInfo, Word16 blockType) count += 6; count += 5; } - + if (tnsInfo->order[i]) { count += 1; /*direction*/ - count += 1; /*coef_compression */ - + count += 1; /*coef_compression */ + if (tnsInfo->coefRes[i] == 4) { ptcoef = tnsInfo->coef + i*TNS_MAX_ORDER_SHORT; - coefBits = 3; + coefBits = 3; for(k=0; korder[i]; k++) { - + if ((ptcoef[k] > 3) || (ptcoef[k] < -4)) { - coefBits = 4; + coefBits = 4; break; } } } else { - coefBits = 2; + coefBits = 2; ptcoef = tnsInfo->coef + i*TNS_MAX_ORDER_SHORT; for(k=0; korder[i]; k++) { - + if ((ptcoef[k] > 1) || (ptcoef[k] < -2)) { - coefBits = 3; + coefBits = 3; break; } } @@ -155,14 +155,14 @@ static Word16 tnsCount(TNS_INFO *tnsInfo, Word16 blockType) } } } - + return count; } /********************************************************************************** * * function name: countTnsBits -* description: count tns bit demand +* description: count tns bit demand * **********************************************************************************/ static Word16 countTnsBits(TNS_INFO *tnsInfo,Word16 blockType) @@ -173,29 +173,29 @@ static Word16 countTnsBits(TNS_INFO *tnsInfo,Word16 blockType) /********************************************************************************* * * function name: countStaticBitdemand -* description: count static bit demand include tns +* description: count static bit demand include tns * **********************************************************************************/ Word16 countStaticBitdemand(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], PSY_OUT_ELEMENT *psyOutElement, - Word16 channels, + Word16 channels, Word16 adtsUsed) { Word32 statBits; Word32 ch; - - statBits = 0; + + statBits = 0; /* if adts used, add 56 bits */ if(adtsUsed) statBits += 56; - + switch (channels) { case 1: statBits += SI_ID_BITS+SI_SCE_BITS+SI_ICS_BITS; statBits += countTnsBits(&(psyOutChannel[0].tnsInfo), psyOutChannel[0].windowSequence); - + switch(psyOutChannel[0].windowSequence){ case LONG_WINDOW: case START_WINDOW: @@ -215,7 +215,7 @@ Word16 countStaticBitdemand(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], psyOutChannel[0].sfbPerGroup, psyOutChannel[0].maxSfbPerGroup, &psyOutElement->toolsInfo); - + switch (psyOutChannel[0].windowSequence) { case LONG_WINDOW: case START_WINDOW: diff --git a/media/libstagefright/codecs/aacenc/src/tns.c b/media/libstagefright/codecs/aacenc/src/tns.c index 473e0a0..455a864 100644 --- a/media/libstagefright/codecs/aacenc/src/tns.c +++ b/media/libstagefright/codecs/aacenc/src/tns.c @@ -100,20 +100,20 @@ static Word16 FreqToBandWithRounding(Word32 freq, /*!< frequen /* assert(freq >= 0); */ shift = norm_l(fs); lineNumber = (extract_l(fixmul((bandStartOffset[numOfBands] << 2),Div_32(freq << shift,fs << shift))) + 1) >> 1; - + /* freq > fs/2 */ - temp = lineNumber - bandStartOffset[numOfBands] ; + temp = lineNumber - bandStartOffset[numOfBands] ; if (temp >= 0) return numOfBands; /* find band the line number lies in */ for (band=0; band 0) break; } temp = (lineNumber - bandStartOffset[band]); - temp = (temp - (bandStartOffset[band + 1] - lineNumber)); + temp = (temp - (bandStartOffset[band + 1] - lineNumber)); if ( temp > 0 ) { band = band + 1; @@ -139,25 +139,25 @@ Word16 InitTnsConfigurationLong(Word32 bitRate, /*!< bitrate */ { Word32 bitratePerChannel; - tC->maxOrder = TNS_MAX_ORDER; + tC->maxOrder = TNS_MAX_ORDER; tC->tnsStartFreq = 1275; - tC->coefRes = 4; - + tC->coefRes = 4; + /* to avoid integer division */ - if ( sub(channels,2) == 0 ) { - bitratePerChannel = bitRate >> 1; + if ( sub(channels,2) == 0 ) { + bitratePerChannel = bitRate >> 1; } else { - bitratePerChannel = bitRate; + bitratePerChannel = bitRate; } tC->tnsMaxSfb = tnsMaxBandsLongMainLow[pC->sampRateIdx]; - tC->tnsActive = active; + tC->tnsActive = active; /* now calc band and line borders */ tC->tnsStopBand = min(pC->sfbCnt, tC->tnsMaxSfb); - tC->tnsStopLine = pC->sfbOffset[tC->tnsStopBand]; + tC->tnsStopLine = pC->sfbOffset[tC->tnsStopBand]; tC->tnsStartBand = FreqToBandWithRounding(tC->tnsStartFreq, sampleRate, pC->sfbCnt, (const Word16*)pC->sfbOffset); @@ -173,18 +173,18 @@ Word16 InitTnsConfigurationLong(Word32 bitRate, /*!< bitrate */ (const Word16*)pC->sfbOffset); - tC->tnsStartLine = pC->sfbOffset[tC->tnsStartBand]; + tC->tnsStartLine = pC->sfbOffset[tC->tnsStartBand]; tC->lpcStopBand = tnsMaxBandsLongMainLow[pC->sampRateIdx]; tC->lpcStopBand = min(tC->lpcStopBand, pC->sfbActive); - tC->lpcStopLine = pC->sfbOffset[tC->lpcStopBand]; - + tC->lpcStopLine = pC->sfbOffset[tC->lpcStopBand]; + tC->lpcStartBand = tnsMinBandNumberLong[pC->sampRateIdx]; - tC->lpcStartLine = pC->sfbOffset[tC->lpcStartBand]; + tC->lpcStartLine = pC->sfbOffset[tC->lpcStartBand]; - tC->threshold = TNS_GAIN_THRESH; + tC->threshold = TNS_GAIN_THRESH; return(0); @@ -207,23 +207,23 @@ Word16 InitTnsConfigurationShort(Word32 bitRate, /*!< bitrate */ Word32 bitratePerChannel; tC->maxOrder = TNS_MAX_ORDER_SHORT; tC->tnsStartFreq = 2750; - tC->coefRes = 3; - + tC->coefRes = 3; + /* to avoid integer division */ if ( sub(channels,2) == 0 ) { - bitratePerChannel = L_shr(bitRate,1); + bitratePerChannel = L_shr(bitRate,1); } else { - bitratePerChannel = bitRate; + bitratePerChannel = bitRate; } tC->tnsMaxSfb = tnsMaxBandsShortMainLow[pC->sampRateIdx]; - tC->tnsActive = active; + tC->tnsActive = active; /* now calc band and line borders */ tC->tnsStopBand = min(pC->sfbCnt, tC->tnsMaxSfb); - tC->tnsStopLine = pC->sfbOffset[tC->tnsStopBand]; + tC->tnsStopLine = pC->sfbOffset[tC->tnsStopBand]; tC->tnsStartBand=FreqToBandWithRounding(tC->tnsStartFreq, sampleRate, pC->sfbCnt, (const Word16*)pC->sfbOffset); @@ -239,19 +239,19 @@ Word16 InitTnsConfigurationShort(Word32 bitRate, /*!< bitrate */ (const Word16*)pC->sfbOffset); - tC->tnsStartLine = pC->sfbOffset[tC->tnsStartBand]; + tC->tnsStartLine = pC->sfbOffset[tC->tnsStartBand]; tC->lpcStopBand = tnsMaxBandsShortMainLow[pC->sampRateIdx]; tC->lpcStopBand = min(tC->lpcStopBand, pC->sfbActive); - tC->lpcStopLine = pC->sfbOffset[tC->lpcStopBand]; + tC->lpcStopLine = pC->sfbOffset[tC->lpcStopBand]; tC->lpcStartBand = tnsMinBandNumberShort[pC->sampRateIdx]; - tC->lpcStartLine = pC->sfbOffset[tC->lpcStartBand]; + tC->lpcStartLine = pC->sfbOffset[tC->lpcStartBand]; - tC->threshold = TNS_GAIN_THRESH; + tC->threshold = TNS_GAIN_THRESH; return(0); } @@ -259,7 +259,7 @@ Word16 InitTnsConfigurationShort(Word32 bitRate, /*!< bitrate */ /** * * function name: TnsDetect -* description: Calculate TNS filter and decide on TNS usage +* description: Calculate TNS filter and decide on TNS usage * returns: 0 if success * */ @@ -278,7 +278,7 @@ Word32 TnsDetect(TNS_DATA* tnsData, /*!< tns data structure (modified) */ Word32* pWork32 = &pScratchTns[subBlockNumber >> 8]; Word16* pWeightedSpectrum = (Word16 *)&pScratchTns[subBlockNumber >> 8]; - + if (tC.tnsActive) { CalcWeightedSpectrum(spectrum, pWeightedSpectrum, @@ -290,7 +290,7 @@ Word32 TnsDetect(TNS_DATA* tnsData, /*!< tns data structure (modified) */ tC.lpcStopBand, pWork32); - temp = blockType - SHORT_WINDOW; + temp = blockType - SHORT_WINDOW; if ( temp != 0 ) { predictionGain = CalcTnsFilter( &pWeightedSpectrum[tC.lpcStartLine], tC.acfWindow, @@ -299,15 +299,15 @@ Word32 TnsDetect(TNS_DATA* tnsData, /*!< tns data structure (modified) */ tnsData->dataRaw.tnsLong.subBlockInfo.parcor); - temp = predictionGain - tC.threshold; + temp = predictionGain - tC.threshold; if ( temp > 0 ) { - tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive = 1; + tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive = 1; } else { - tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive = 0; + tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive = 0; } - tnsData->dataRaw.tnsLong.subBlockInfo.predictionGain = predictionGain; + tnsData->dataRaw.tnsLong.subBlockInfo.predictionGain = predictionGain; } else{ @@ -317,28 +317,28 @@ Word32 TnsDetect(TNS_DATA* tnsData, /*!< tns data structure (modified) */ tC.maxOrder, tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].parcor); - temp = predictionGain - tC.threshold; + temp = predictionGain - tC.threshold; if ( temp > 0 ) { - tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].tnsActive = 1; + tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].tnsActive = 1; } else { - tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].tnsActive = 0; + tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].tnsActive = 0; } - tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].predictionGain = predictionGain; + tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].predictionGain = predictionGain; } } else{ - temp = blockType - SHORT_WINDOW; + temp = blockType - SHORT_WINDOW; if ( temp != 0 ) { - tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive = 0; - tnsData->dataRaw.tnsLong.subBlockInfo.predictionGain = 0; + tnsData->dataRaw.tnsLong.subBlockInfo.tnsActive = 0; + tnsData->dataRaw.tnsLong.subBlockInfo.predictionGain = 0; } else { - tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].tnsActive = 0; - tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].predictionGain = 0; + tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].tnsActive = 0; + tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber].predictionGain = 0; } } @@ -362,21 +362,21 @@ void TnsSync(TNS_DATA *tnsDataDest, const TNS_SUBBLOCK_INFO *sbInfoSrc; Word32 i, temp; - temp = blockType - SHORT_WINDOW; + temp = blockType - SHORT_WINDOW; if ( temp != 0 ) { - sbInfoDest = &tnsDataDest->dataRaw.tnsLong.subBlockInfo; - sbInfoSrc = &tnsDataSrc->dataRaw.tnsLong.subBlockInfo; + sbInfoDest = &tnsDataDest->dataRaw.tnsLong.subBlockInfo; + sbInfoSrc = &tnsDataSrc->dataRaw.tnsLong.subBlockInfo; } else { - sbInfoDest = &tnsDataDest->dataRaw.tnsShort.subBlockInfo[subBlockNumber]; - sbInfoSrc = &tnsDataSrc->dataRaw.tnsShort.subBlockInfo[subBlockNumber]; + sbInfoDest = &tnsDataDest->dataRaw.tnsShort.subBlockInfo[subBlockNumber]; + sbInfoSrc = &tnsDataSrc->dataRaw.tnsShort.subBlockInfo[subBlockNumber]; } if (100*abs_s(sbInfoDest->predictionGain - sbInfoSrc->predictionGain) < (3 * sbInfoDest->predictionGain)) { - sbInfoDest->tnsActive = sbInfoSrc->tnsActive; + sbInfoDest->tnsActive = sbInfoSrc->tnsActive; for ( i=0; i< tC.maxOrder; i++) { - sbInfoDest->parcor[i] = sbInfoSrc->parcor[i]; + sbInfoDest->parcor[i] = sbInfoSrc->parcor[i]; } } } @@ -402,11 +402,11 @@ Word16 TnsEncode(TNS_INFO* tnsInfo, /*!< tns info structure (modified) */ Word32 temp; TNS_SUBBLOCK_INFO *psubBlockInfo; - temp_s = blockType - SHORT_WINDOW; - if ( temp_s != 0) { + temp_s = blockType - SHORT_WINDOW; + if ( temp_s != 0) { psubBlockInfo = &tnsData->dataRaw.tnsLong.subBlockInfo; if (psubBlockInfo->tnsActive == 0) { - tnsInfo->tnsActive[subBlockNumber] = 0; + tnsInfo->tnsActive[subBlockNumber] = 0; return(0); } else { @@ -422,22 +422,22 @@ Word16 TnsEncode(TNS_INFO* tnsInfo, /*!< tns info structure (modified) */ tC.coefRes); for (i=tC.maxOrder - 1; i>=0; i--) { - temp = psubBlockInfo->parcor[i] - TNS_PARCOR_THRESH; + temp = psubBlockInfo->parcor[i] - TNS_PARCOR_THRESH; if ( temp > 0 ) break; - temp = psubBlockInfo->parcor[i] + TNS_PARCOR_THRESH; + temp = psubBlockInfo->parcor[i] + TNS_PARCOR_THRESH; if ( temp < 0 ) break; } - tnsInfo->order[subBlockNumber] = i + 1; + tnsInfo->order[subBlockNumber] = i + 1; - tnsInfo->tnsActive[subBlockNumber] = 1; + tnsInfo->tnsActive[subBlockNumber] = 1; for (i=subBlockNumber+1; itnsActive[i] = 0; + tnsInfo->tnsActive[i] = 0; } - tnsInfo->coefRes[subBlockNumber] = tC.coefRes; - tnsInfo->length[subBlockNumber] = numOfSfb - tC.tnsStartBand; + tnsInfo->coefRes[subBlockNumber] = tC.coefRes; + tnsInfo->length[subBlockNumber] = numOfSfb - tC.tnsStartBand; AnalysisFilterLattice(&(spectrum[tC.tnsStartLine]), @@ -448,10 +448,10 @@ Word16 TnsEncode(TNS_INFO* tnsInfo, /*!< tns info structure (modified) */ } } /* if (blockType!=SHORT_WINDOW) */ - else /*short block*/ { + else /*short block*/ { psubBlockInfo = &tnsData->dataRaw.tnsShort.subBlockInfo[subBlockNumber]; if (psubBlockInfo->tnsActive == 0) { - tnsInfo->tnsActive[subBlockNumber] = 0; + tnsInfo->tnsActive[subBlockNumber] = 0; return(0); } else { @@ -466,19 +466,19 @@ Word16 TnsEncode(TNS_INFO* tnsInfo, /*!< tns info structure (modified) */ tC.maxOrder, tC.coefRes); for (i=(tC.maxOrder - 1); i>=0; i--) { - temp = psubBlockInfo->parcor[i] - TNS_PARCOR_THRESH; + temp = psubBlockInfo->parcor[i] - TNS_PARCOR_THRESH; if ( temp > 0 ) break; - temp = psubBlockInfo->parcor[i] + TNS_PARCOR_THRESH; + temp = psubBlockInfo->parcor[i] + TNS_PARCOR_THRESH; if ( temp < 0 ) break; } - tnsInfo->order[subBlockNumber] = i + 1; + tnsInfo->order[subBlockNumber] = i + 1; - tnsInfo->tnsActive[subBlockNumber] = 1; - tnsInfo->coefRes[subBlockNumber] = tC.coefRes; - tnsInfo->length[subBlockNumber] = numOfSfb - tC.tnsStartBand; + tnsInfo->tnsActive[subBlockNumber] = 1; + tnsInfo->coefRes[subBlockNumber] = tC.coefRes; + tnsInfo->length[subBlockNumber] = numOfSfb - tC.tnsStartBand; AnalysisFilterLattice(&(spectrum[tC.tnsStartLine]), (tC.tnsStopLine - tC.tnsStartLine), @@ -507,14 +507,14 @@ static Word32 m_pow2_cordic(Word32 x, Word16 scale) { Word32 k; - Word32 accu_y = 0x40000000; + Word32 accu_y = 0x40000000; accu_y = L_shr(accu_y,scale); for(k=1; k= 0) { - + x = L_sub(x, z); accu_y = L_add(accu_y, (accu_y >> k)); } @@ -548,43 +548,43 @@ static void CalcWeightedSpectrum(const Word32 spectrum[], /*!< input sp Word32 maxWS; Word32 tnsSfbMean[MAX_SFB]; /* length [lpcStopBand-lpcStartBand] should be sufficient here */ - maxWS = 0; - + maxWS = 0; + /* calc 1.0*2^-INT_BITS/2/sqrt(en) */ for( sfb = lpcStartBand; sfb < lpcStopBand; sfb++) { - tmp2 = sfbEnergy[sfb] - 2; + tmp2 = sfbEnergy[sfb] - 2; if( tmp2 > 0) { tmp = rsqrt(sfbEnergy[sfb], INT_BITS); - if(tmp > INT_BITS_SCAL) + if(tmp > INT_BITS_SCAL) { shift = norm_l(tmp); - tmp = Div_32( INT_BITS_SCAL << shift, tmp << shift ); + tmp = Div_32( INT_BITS_SCAL << shift, tmp << shift ); } else { - tmp = 0x7fffffff; + tmp = 0x7fffffff; } } else { - tmp = 0x7fffffff; - } - tnsSfbMean[sfb] = tmp; + tmp = 0x7fffffff; + } + tnsSfbMean[sfb] = tmp; } /* spread normalized values from sfbs to lines */ - sfb = lpcStartBand; - tmp = tnsSfbMean[sfb]; + sfb = lpcStartBand; + tmp = tnsSfbMean[sfb]; for ( i=lpcStartLine; i=lpcStartLine; i--){ @@ -597,8 +597,8 @@ static void CalcWeightedSpectrum(const Word32 spectrum[], /*!< input sp /* weight and normalize */ for (i=lpcStartLine; i> scf)); } - corr[0] = accu; + corr[0] = accu; /* early termination if all corr coeffs are likely going to be zero */ if(corr[0] == 0) return ; @@ -694,13 +694,13 @@ void AutoCorrelation(const Word16 input[], /* calc all other corrCoef: R[j] = sum { t[i] * t[i+j] } ; i = 0..(N-j-1), j=1..p */ for(i=1; i> scf)); } - corr[i] = accu; + corr[i] = accu; } -} +} #endif /***************************************************************************** @@ -720,20 +720,20 @@ static Word16 AutoToParcor(Word32 workBuffer[], Word32 reflCoeff[], Word16 numOf Word32 predictionGain = 0; Word32 num, denom; Word32 temp, workBuffer0; - - num = workBuffer[0]; - temp = workBuffer[numOfCoeff]; + + num = workBuffer[0]; + temp = workBuffer[numOfCoeff]; for(i=0; i 0) - index=i; + index=i; } return extract_l(index - 4); } @@ -788,12 +788,12 @@ static Word16 Search4(Word32 parcor) Word32 index = 0; Word32 i; Word32 temp; - + for (i=0;i<16;i++) { - temp = L_sub(parcor, tnsCoeff4Borders[i]); + temp = L_sub(parcor, tnsCoeff4Borders[i]); if (temp > 0) - index=i; + index=i; } return extract_l(index - 8); } @@ -814,12 +814,12 @@ static void Parcor2Index(const Word32 parcor[], /*!< parcor coefficients */ Word32 temp; for(i=0; i> 1; - tmpSave = x; + tmpSave = x; for (i=0; i<(order - 1); i++) { tmp = L_add(fixmul(coef_par[i], x), state_par[i]); x = L_add(fixmul(coef_par[i], state_par[i]), x); - state_par[i] = tmpSave; - tmpSave = tmp; + state_par[i] = tmpSave; + tmpSave = tmp; } /* last stage: only need half operations */ accu = fixmul(state_par[order - 1], coef_par[(order - 1)]); - state_par[(order - 1)] = tmpSave; + state_par[(order - 1)] = tmpSave; x = L_add(accu, x); x = L_add(x, x); @@ -903,11 +903,11 @@ static void AnalysisFilterLattice(const Word32 signal[], /*!< input spectrum * Word32 j; for ( j=0; j> 2); + thresholds[i] = (thresholds[i] >> 2); } } } diff --git a/media/libstagefright/codecs/aacenc/src/transform.c b/media/libstagefright/codecs/aacenc/src/transform.c index 4d11f78..a154a2f 100644 --- a/media/libstagefright/codecs/aacenc/src/transform.c +++ b/media/libstagefright/codecs/aacenc/src/transform.c @@ -31,7 +31,7 @@ #define swap2(p0,p1) \ t = p0; t1 = *(&(p0)+1); \ p0 = p1; *(&(p0)+1) = *(&(p1)+1); \ - p1 = t; *(&(p1)+1) = t1 + p1 = t; *(&(p1)+1) = t1 /********************************************************************************* * @@ -47,18 +47,18 @@ static void Shuffle(int *buf, int num, const unsigned char* bitTab) part0 = buf; part1 = buf + num; - + while ((i = *bitTab++) != 0) { j = *bitTab++; - swap2(part0[4*i+0], part0[4*j+0]); - swap2(part0[4*i+2], part1[4*j+0]); - swap2(part1[4*i+0], part0[4*j+2]); - swap2(part1[4*i+2], part1[4*j+2]); + swap2(part0[4*i+0], part0[4*j+0]); + swap2(part0[4*i+2], part1[4*j+0]); + swap2(part1[4*i+0], part0[4*j+2]); + swap2(part1[4*i+2], part1[4*j+2]); } do { - swap2(part0[4*i+2], part1[4*i+0]); + swap2(part0[4*i+2], part1[4*i+0]); } while ((i = *bitTab++) != 0); } @@ -74,8 +74,8 @@ static void Radix4First(int *buf, int num) { int r0, r1, r2, r3; int r4, r5, r6, r7; - - for (; num != 0; num--) + + for (; num != 0; num--) { r0 = buf[0] + buf[2]; r1 = buf[1] + buf[3]; @@ -113,7 +113,7 @@ static void Radix8First(int *buf, int num) int i4, i5, i6, i7; int t0, t1, t2, t3; - for ( ; num != 0; num--) + for ( ; num != 0; num--) { r0 = buf[0] + buf[2]; i0 = buf[1] + buf[3]; @@ -194,23 +194,23 @@ static void Radix4FFT(int *buf, int num, int bgn, int *twidTab) int i, j, step; int *xptr, *csptr; - for (num >>= 2; num != 0; num >>= 2) + for (num >>= 2; num != 0; num >>= 2) { step = 2*bgn; xptr = buf; - for (i = num; i != 0; i--) + for (i = num; i != 0; i--) { csptr = twidTab; - for (j = bgn; j != 0; j--) + for (j = bgn; j != 0; j--) { r0 = xptr[0]; r1 = xptr[1]; xptr += step; - + t0 = xptr[0]; - t1 = xptr[1]; + t1 = xptr[1]; cosx = csptr[0]; sinx = csptr[1]; r2 = MULHIGH(cosx, t0) + MULHIGH(sinx, t1); /* cos*br + sin*bi */ @@ -223,7 +223,7 @@ static void Radix4FFT(int *buf, int num, int bgn, int *twidTab) r1 = t1 - r3; r2 = t0 + r2; r3 = t1 + r3; - + t0 = xptr[0]; t1 = xptr[1]; cosx = csptr[2]; @@ -231,7 +231,7 @@ static void Radix4FFT(int *buf, int num, int bgn, int *twidTab) r4 = MULHIGH(cosx, t0) + MULHIGH(sinx, t1); /* cos*cr + sin*ci */ r5 = MULHIGH(cosx, t1) - MULHIGH(sinx, t0); /* cos*ci - sin*cr */ xptr += step; - + t0 = xptr[0]; t1 = xptr[1]; cosx = csptr[4]; @@ -282,25 +282,25 @@ static void PreMDCT(int *buf0, int num, const int *csptr) int tr1, ti1, tr2, ti2; int cosa, sina, cosb, sinb; int *buf1; - + buf1 = buf0 + num - 1; for(i = num >> 2; i != 0; i--) { - cosa = *csptr++; - sina = *csptr++; - cosb = *csptr++; - sinb = *csptr++; + cosa = *csptr++; + sina = *csptr++; + cosb = *csptr++; + sinb = *csptr++; tr1 = *(buf0 + 0); ti2 = *(buf0 + 1); tr2 = *(buf1 - 1); ti1 = *(buf1 + 0); - + *buf0++ = MULHIGH(cosa, tr1) + MULHIGH(sina, ti1); - *buf0++ = MULHIGH(cosa, ti1) - MULHIGH(sina, tr1); - - *buf1-- = MULHIGH(cosb, ti2) - MULHIGH(sinb, tr2); + *buf0++ = MULHIGH(cosa, ti1) - MULHIGH(sina, tr1); + + *buf1-- = MULHIGH(cosb, ti2) - MULHIGH(sinb, tr2); *buf1-- = MULHIGH(cosb, tr2) + MULHIGH(sinb, ti2); } } @@ -319,12 +319,12 @@ static void PostMDCT(int *buf0, int num, const int *csptr) int *buf1; buf1 = buf0 + num - 1; - + for(i = num >> 2; i != 0; i--) { - cosa = *csptr++; - sina = *csptr++; - cosb = *csptr++; + cosa = *csptr++; + sina = *csptr++; + cosb = *csptr++; sinb = *csptr++; tr1 = *(buf0 + 0); @@ -333,10 +333,10 @@ static void PostMDCT(int *buf0, int num, const int *csptr) tr2 = *(buf1 - 1); *buf0++ = MULHIGH(cosa, tr1) + MULHIGH(sina, ti1); - *buf1-- = MULHIGH(sina, tr1) - MULHIGH(cosa, ti1); - + *buf1-- = MULHIGH(sina, tr1) - MULHIGH(cosa, ti1); + *buf0++ = MULHIGH(sinb, tr2) - MULHIGH(cosb, ti2); - *buf1-- = MULHIGH(cosb, tr2) + MULHIGH(sinb, ti2); + *buf1-- = MULHIGH(cosb, tr2) + MULHIGH(sinb, ti2); } } #endif @@ -353,17 +353,17 @@ void Mdct_Long(int *buf) PreMDCT(buf, 1024, cossintab + 128); Shuffle(buf, 512, bitrevTab + 17); - Radix8First(buf, 512 >> 3); + Radix8First(buf, 512 >> 3); Radix4FFT(buf, 512 >> 3, 8, (int *)twidTab512); - PostMDCT(buf, 1024, cossintab + 128); + PostMDCT(buf, 1024, cossintab + 128); } /********************************************************************************** * * function name: Mdct_Short -* description: the short block mdct +* description: the short block mdct * **********************************************************************************/ void Mdct_Short(int *buf) @@ -371,10 +371,10 @@ void Mdct_Short(int *buf) PreMDCT(buf, 128, cossintab); Shuffle(buf, 64, bitrevTab); - Radix4First(buf, 64 >> 2); - Radix4FFT(buf, 64 >> 2, 4, (int *)twidTab64); + Radix4First(buf, 64 >> 2); + Radix4FFT(buf, 64 >> 2, 4, (int *)twidTab64); - PostMDCT(buf, 128, cossintab); + PostMDCT(buf, 128, cossintab); } @@ -382,7 +382,7 @@ void Mdct_Short(int *buf) * * function name: shiftMdctDelayBuffer * description: the mdct delay buffer has a size of 1600, -* so the calculation of LONG,STOP must be spilt in two +* so the calculation of LONG,STOP must be spilt in two * passes with 1024 samples and a mid shift, * the SHORT transforms can be completed in the delay buffer, * and afterwards a shift @@ -409,7 +409,7 @@ static void shiftMdctDelayBuffer(Word16 *mdctDelayBuffer, /*! start of mdct dela dsBuf = timeSignal; for(i=0; i> 16); timeSignalSample = (*dctIn1--) << minSf; ws2 = timeSignalSample * (*winPtr & 0xffff); @@ -499,30 +499,30 @@ void Transform_Real(Word16 *mdctDelayBuffer, /* shift 2 to avoid overflow next */ *outData0++ = (ws1 >> 2) - (ws2 >> 2); } - + shiftMdctDelayBuffer(mdctDelayBuffer,timeSignal,chIncrement); - + /* add windows and pre add for mdct to new buffer*/ dctIn0 = mdctDelayBuffer; dctIn1 = mdctDelayBuffer + FRAME_LEN_LONG - 1; - outData0 = realOut + FRAME_LEN_LONG/2 - 1; + outData0 = realOut + FRAME_LEN_LONG/2 - 1; winPtr = (int *)LongWindowKBD; - for(i=0;i> 16); winPtr++; /* shift 2 to avoid overflow next */ - *outData0-- = -((ws1 >> 2) + (ws2 >> 2)); + *outData0-- = -((ws1 >> 2) + (ws2 >> 2)); } Mdct_Long(realOut); /* update scale factor */ minSf = 14 - minSf; - *mdctScale=minSf; + *mdctScale=minSf; break; - + case START_WINDOW: /* we access BLOCK_SWITCHING_OFFSET (1600 ) delay buffer samples + no timeSignal samples @@ -533,7 +533,7 @@ void Transform_Real(Word16 *mdctDelayBuffer, dctIn0 = mdctDelayBuffer; dctIn1 = mdctDelayBuffer + FRAME_LEN_LONG - 1; - outData0 = realOut + FRAME_LEN_LONG/2; + outData0 = realOut + FRAME_LEN_LONG/2; winPtr = (int *)LongWindowKBD; /* add windows and pre add for mdct to last buffer*/ @@ -545,18 +545,18 @@ void Transform_Real(Word16 *mdctDelayBuffer, winPtr ++; *outData0++ = (ws1 >> 2) - (ws2 >> 2); /* shift 2 to avoid overflow next */ } - + shiftMdctDelayBuffer(mdctDelayBuffer,timeSignal,chIncrement); - - outData0 = realOut + FRAME_LEN_LONG/2 - 1; + + outData0 = realOut + FRAME_LEN_LONG/2 - 1; for(i=0;i> 2) - (ws2 >> 2); /* shift 2 to avoid overflow next */ } - + shiftMdctDelayBuffer(mdctDelayBuffer,timeSignal,chIncrement); - + /* add windows and pre add for mdct to new buffer*/ dctIn0 = mdctDelayBuffer; dctIn1 = mdctDelayBuffer + FRAME_LEN_LONG - 1; - outData0 = realOut + FRAME_LEN_LONG/2 - 1; + outData0 = realOut + FRAME_LEN_LONG/2 - 1; winPtr = (int *)LongWindowKBD; for(i=0;i> 2) + (ws2 >> 2)); /* shift 2 to avoid overflow next */ winPtr++; } - + Mdct_Long(realOut); minSf = 14 - minSf; *mdctScale= minSf; /* update scale factor */ break; - + case SHORT_WINDOW: /* we access BLOCK_SWITCHING_OFFSET (1600 ) delay buffer samples + no new timeSignal samples and get the biggest scale factor for next calculate more precise - */ + */ minSf = getScalefactorOfShortVectorStride(mdctDelayBuffer+TRANSFORM_OFFSET_SHORT,9*FRAME_LEN_SHORT,1); minSf = min(minSf,10); - - + + for(w=0;w> 2) - (ws2 >> 2); /* shift 2 to avoid overflow next */ - + timeSignalSample= *(dctIn0 + FRAME_LEN_SHORT) << minSf; ws1 = timeSignalSample * (*winPtr & 0xffff); timeSignalSample= *(dctIn1 + FRAME_LEN_SHORT) << minSf; @@ -661,10 +661,10 @@ void Transform_Real(Word16 *mdctDelayBuffer, Mdct_Short(realOut); realOut += FRAME_LEN_SHORT; } - + minSf = 11 - minSf; *mdctScale = minSf; /* update scale factor */ - + shiftMdctDelayBuffer(mdctDelayBuffer,timeSignal,chIncrement); break; } diff --git a/media/libstagefright/codecs/amrwbenc/Android.mk b/media/libstagefright/codecs/amrwbenc/Android.mk index 5179380..ae43870 100644 --- a/media/libstagefright/codecs/amrwbenc/Android.mk +++ b/media/libstagefright/codecs/amrwbenc/Android.mk @@ -3,7 +3,7 @@ include $(CLEAR_VARS) include frameworks/base/media/libstagefright/codecs/common/Config.mk - + LOCAL_SRC_FILES := \ AMRWBEncoder.cpp \ src/autocorr.c \ @@ -91,7 +91,7 @@ LOCAL_MODULE := libstagefright_amrwbenc LOCAL_ARM_MODE := arm -LOCAL_STATIC_LIBRARIES := +LOCAL_STATIC_LIBRARIES := LOCAL_SHARED_LIBRARIES := diff --git a/media/libstagefright/codecs/amrwbenc/inc/basic_op.h b/media/libstagefright/codecs/amrwbenc/inc/basic_op.h index 7734913..c23dce6 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/basic_op.h +++ b/media/libstagefright/codecs/amrwbenc/inc/basic_op.h @@ -33,7 +33,7 @@ #define static_vo static __inline__ #else #define static_vo static __inline -#endif +#endif #define saturate(L_var1) (((L_var1) > 0X00007fffL) ? (MAX_16): (((L_var1) < (Word32) 0xffff8000L) ? (MIN_16): ((L_var1) & 0xffff))) @@ -87,7 +87,7 @@ static_vo Word32 L_shr (Word32 L_var1, Word16 var2); /* Long shift right static_vo Word32 L_shr_r (Word32 L_var1, Word16 var2); /* Long shift right with round, 3 */ static_vo Word16 norm_s (Word16 var1); /* Short norm, 15 */ static_vo Word16 div_s (Word16 var1, Word16 var2); /* Short division, 18 */ -static_vo Word16 norm_l (Word32 L_var1); /* Long norm, 30 */ +static_vo Word16 norm_l (Word32 L_var1); /* Long norm, 30 */ /*___________________________________________________________________________ | | @@ -1030,8 +1030,8 @@ static_vo Word16 div_s (Word16 var1, Word16 var2) L_num <<= 1; if (L_num >= L_denom) { - L_num -= L_denom; - var_out += 1; + L_num -= L_denom; + var_out += 1; } } } diff --git a/media/libstagefright/codecs/amrwbenc/inc/homing.tab b/media/libstagefright/codecs/amrwbenc/inc/homing.tab index edcccdd..e399fb8 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/homing.tab +++ b/media/libstagefright/codecs/amrwbenc/inc/homing.tab @@ -33,89 +33,89 @@ static const Word16 dfh_M7k[PRMN_7k] = { - 3168, 29954, 29213, 16121, - 64, 13440, 30624, 16430, + 3168, 29954, 29213, 16121, + 64, 13440, 30624, 16430, 19008 }; static const Word16 dfh_M9k[PRMN_9k] = { - 3168, 31665, 9943, 9123, - 15599, 4358, 20248, 2048, + 3168, 31665, 9943, 9123, + 15599, 4358, 20248, 2048, 17040, 27787, 16816, 13888 }; static const Word16 dfh_M12k[PRMN_12k] = { - 3168, 31665, 9943, 9128, - 3647, 8129, 30930, 27926, - 18880, 12319, 496, 1042, - 4061, 20446, 25629, 28069, + 3168, 31665, 9943, 9128, + 3647, 8129, 30930, 27926, + 18880, 12319, 496, 1042, + 4061, 20446, 25629, 28069, 13948 }; static const Word16 dfh_M14k[PRMN_14k] = { - 3168, 31665, 9943, 9131, - 24815, 655, 26616, 26764, - 7238, 19136, 6144, 88, - 4158, 25733, 30567, 30494, + 3168, 31665, 9943, 9131, + 24815, 655, 26616, 26764, + 7238, 19136, 6144, 88, + 4158, 25733, 30567, 30494, 221, 20321, 17823 }; static const Word16 dfh_M16k[PRMN_16k] = { - 3168, 31665, 9943, 9131, - 24815, 700, 3824, 7271, - 26400, 9528, 6594, 26112, - 108, 2068, 12867, 16317, - 23035, 24632, 7528, 1752, + 3168, 31665, 9943, 9131, + 24815, 700, 3824, 7271, + 26400, 9528, 6594, 26112, + 108, 2068, 12867, 16317, + 23035, 24632, 7528, 1752, 6759, 24576 }; static const Word16 dfh_M18k[PRMN_18k] = { - 3168, 31665, 9943, 9135, - 14787, 14423, 30477, 24927, - 25345, 30154, 916, 5728, - 18978, 2048, 528, 16449, - 2436, 3581, 23527, 29479, - 8237, 16810, 27091, 19052, + 3168, 31665, 9943, 9135, + 14787, 14423, 30477, 24927, + 25345, 30154, 916, 5728, + 18978, 2048, 528, 16449, + 2436, 3581, 23527, 29479, + 8237, 16810, 27091, 19052, 0 }; static const Word16 dfh_M20k[PRMN_20k] = { - 3168, 31665, 9943, 9129, - 8637, 31807, 24646, 736, - 28643, 2977, 2566, 25564, - 12930, 13960, 2048, 834, - 3270, 4100, 26920, 16237, - 31227, 17667, 15059, 20589, + 3168, 31665, 9943, 9129, + 8637, 31807, 24646, 736, + 28643, 2977, 2566, 25564, + 12930, 13960, 2048, 834, + 3270, 4100, 26920, 16237, + 31227, 17667, 15059, 20589, 30249, 29123, 0 }; static const Word16 dfh_M23k[PRMN_23k] = { - 3168, 31665, 9943, 9132, - 16748, 3202, 28179, 16317, - 30590, 15857, 19960, 8818, - 21711, 21538, 4260, 16690, - 20224, 3666, 4194, 9497, - 16320, 15388, 5755, 31551, - 14080, 3574, 15932, 50, + 3168, 31665, 9943, 9132, + 16748, 3202, 28179, 16317, + 30590, 15857, 19960, 8818, + 21711, 21538, 4260, 16690, + 20224, 3666, 4194, 9497, + 16320, 15388, 5755, 31551, + 14080, 3574, 15932, 50, 23392, 26053, 31216 }; static const Word16 dfh_M24k[PRMN_24k] = { - 3168, 31665, 9943, 9134, - 24776, 5857, 18475, 28535, - 29662, 14321, 16725, 4396, - 29353, 10003, 17068, 20504, - 720, 0, 8465, 12581, - 28863, 24774, 9709, 26043, - 7941, 27649, 13965, 15236, + 3168, 31665, 9943, 9134, + 24776, 5857, 18475, 28535, + 29662, 14321, 16725, 4396, + 29353, 10003, 17068, 20504, + 720, 0, 8465, 12581, + 28863, 24774, 9709, 26043, + 7941, 27649, 13965, 15236, 18026, 22047, 16681, 3968 }; diff --git a/media/libstagefright/codecs/amrwbenc/inc/isp_isf.tab b/media/libstagefright/codecs/amrwbenc/inc/isp_isf.tab index 2322845..97c3b68 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/isp_isf.tab +++ b/media/libstagefright/codecs/amrwbenc/inc/isp_isf.tab @@ -42,7 +42,7 @@ const static Word16 table[129] = { /* slope in Q11 used to compute y = acos(x) */ -const static Word16 slope[128] = { +const static Word16 slope[128] = { -26214, -9039, -5243, -3799, -2979, -2405, -2064, -1771, -1579, -1409, -1279, -1170, -1079, -1004, -933, -880, -827, -783, -743, -708, -676, -647, -621, -599, diff --git a/media/libstagefright/codecs/amrwbenc/inc/log2.h b/media/libstagefright/codecs/amrwbenc/inc/log2.h index 6a35019..b065eb4 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/log2.h +++ b/media/libstagefright/codecs/amrwbenc/inc/log2.h @@ -25,20 +25,20 @@ */ #ifndef __LOG2_H__ #define __LOG2_H__ - + /* ******************************************************************************** * INCLUDE FILES ******************************************************************************** */ #include "typedef.h" - + /* ******************************************************************************** * DEFINITION OF DATA TYPES ******************************************************************************** */ - + /* ******************************************************************************** * DECLARATION OF PROTOTYPES diff --git a/media/libstagefright/codecs/amrwbenc/inc/mime_io.tab b/media/libstagefright/codecs/amrwbenc/inc/mime_io.tab index 5f85dd0..7b485ea 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/mime_io.tab +++ b/media/libstagefright/codecs/amrwbenc/inc/mime_io.tab @@ -98,7 +98,7 @@ static Word16 sort_1265[253] = { 244, 61, 111, 164, 214, 65, 115, 168, 218, 70, 120, 173, 223, 74, 124, 177, 227, 79, 129, 182, 232, 83, 133, 186, 236, 88, 138, 191, 241, 92, - 142, 195, 245 + 142, 195, 245 }; static Word16 sort_1425[285] = { @@ -205,7 +205,7 @@ static Word16 sort_1825[365] = { 257, 243, 229, 356, 159, 119, 67, 187, 173, 145, 240, 77, 304, 332, 314, 342, 109, 254, 81, 278, 105, 91, 346, 318, 183, 250, 197, 328, 95, 155, - 169, 268, 226, 236, 264 + 169, 268, 226, 236, 264 }; static Word16 sort_1985[397] = { @@ -248,7 +248,7 @@ static Word16 sort_1985[397] = { 128, 118, 303, 104, 379, 182, 114, 375, 200, 96, 293, 172, 214, 365, 279, 86, 289, 351, 347, 357, 261, 186, 176, 271, 90, 100, 147, 322, 275, 361, - 71, 332, 61, 265, 157, 246, 236 + 71, 332, 61, 265, 157, 246, 236 }; static Word16 sort_2305[461] = { @@ -349,7 +349,7 @@ static Word16 sort_2385[477] = { 132, 453, 336, 425, 325, 347, 126, 104, 137, 458, 352, 243, 447, 115, 341, 210, 330, 221, 232, 436, 465, 319, 359, 111, 454, 228, 217, 122, 443, 348, - 239, 250, 133, 144, 432, 337, 326 + 239, 250, 133, 144, 432, 337, 326 }; static Word16 sort_SID[35] = { diff --git a/media/libstagefright/codecs/amrwbenc/inc/stream.h b/media/libstagefright/codecs/amrwbenc/inc/stream.h index 3e5336a..4c1d0f0 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/stream.h +++ b/media/libstagefright/codecs/amrwbenc/inc/stream.h @@ -26,7 +26,7 @@ Contains: VOME API Buffer Operator Implement Header #define __STREAM_H__ #include "voMem.h" -#define Frame_Maxsize 1024 * 2 //Work Buffer 10K +#define Frame_Maxsize 1024 * 2 //Work Buffer 10K #define Frame_MaxByte 640 //AMR_WB Encoder one frame 320 samples = 640 Bytes #define MIN(a,b) ((a) < (b)? (a) : (b)) @@ -35,7 +35,7 @@ typedef struct{ unsigned char *frame_ptr; unsigned char *frame_ptr_bk; int set_len; - int framebuffer_len; + int framebuffer_len; int frame_storelen; int used_len; }FrameStream; diff --git a/media/libstagefright/codecs/amrwbenc/inc/typedef.h b/media/libstagefright/codecs/amrwbenc/inc/typedef.h index 533e68b..f08a678 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/typedef.h +++ b/media/libstagefright/codecs/amrwbenc/inc/typedef.h @@ -31,7 +31,7 @@ /* * this is the original code from the ETSI file typedef.h */ - + #if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(_MSC_VER) || defined(__ZTC__) typedef signed char Word8; typedef short Word16; diff --git a/media/libstagefright/codecs/amrwbenc/inc/typedefs.h b/media/libstagefright/codecs/amrwbenc/inc/typedefs.h index f30d255..0062584 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/typedefs.h +++ b/media/libstagefright/codecs/amrwbenc/inc/typedefs.h @@ -45,7 +45,7 @@ * OSF only defined if the current platform is an Alpha * PC only defined if the current platform is a PC * SUN only defined if the current platform is a Sun -* +* * LSBFIRST is defined if the byte order on this platform is * "least significant byte first" -> defined on DEC Alpha * and PC, undefined on Sun @@ -68,7 +68,7 @@ /* ******************************************************************************** -* DEFINITION OF CONSTANTS +* DEFINITION OF CONSTANTS ******************************************************************************** */ /* @@ -197,7 +197,7 @@ typedef int Bool; #define Syn_filt_32 voAWB_Syn_filt_32 #define Isf_isp voAWB_Isf_isp #define Levinson voAWB_Levinson -#define median5 voAWB_median5 +#define median5 voAWB_median5 #define Pred_lt4 voAWB_Pred_lt4 #define Reorder_isf voAWB_Reorder_isf #define Dpisf_2s_36b voAWB_Dpisf_2s_36b diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Deemph_32_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Deemph_32_opt.s index c1c74e6..282db92 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Deemph_32_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Deemph_32_opt.s @@ -30,10 +30,10 @@ .section .text .global Deemph_32_asm - + Deemph_32_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} MOV r4, #2 @i=0 LDRSH r6, [r0], #2 @load x_hi[0] LDRSH r7, [r1], #2 @load x_lo[0] @@ -47,9 +47,9 @@ Deemph_32_asm: ADD r12, r10, r7, LSL #4 @L_tmp += x_lo[0] << 4 MOV r10, r12, LSL #3 @L_tmp <<= 3 MUL r9, r5, r8 - LDRSH r6, [r0], #2 @load x_hi[1] + LDRSH r6, [r0], #2 @load x_hi[1] QDADD r10, r10, r9 - LDRSH r7, [r1], #2 @load x_lo[1] + LDRSH r7, [r1], #2 @load x_lo[1] MOV r12, r10, LSL #1 @L_tmp = L_mac(L_tmp, *mem, fac) QADD r10, r12, r11 MOV r14, r10, ASR #16 @y[0] = round(L_tmp) @@ -94,9 +94,9 @@ LOOP: BLT LOOP STR r14, [r3] - STRH r14, [r2] + STRH r14, [r2] - LDMFD r13!, {r4 - r12, r15} + LDMFD r13!, {r4 - r12, r15} @ENDP .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Dot_p_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Dot_p_opt.s index 02bdcab..4aa317e 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Dot_p_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Dot_p_opt.s @@ -31,7 +31,7 @@ Dot_product12_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} MOV r4, #0 @ L_sum = 0 MOV r5, #0 @ i = 0 @@ -41,13 +41,13 @@ LOOP: LDR r8, [r0], #4 SMLABB r4, r6, r7, r4 LDR r9, [r1], #4 - SMLATT r4, r6, r7, r4 + SMLATT r4, r6, r7, r4 LDR r6, [r0], #4 SMLABB r4, r8, r9, r4 LDR r7, [r1], #4 - SMLATT r4, r8, r9, r4 + SMLATT r4, r8, r9, r4 LDR r8, [r0], #4 SMLABB r4, r6, r7, r4 @@ -58,7 +58,7 @@ LOOP: CMP r5, r2 SMLATT r4, r8, r9, r4 BLT LOOP - + MOV r12, r4, LSL #1 ADD r12, r12, #1 @ L_sum = (L_sum << 1) + 1 MOV r4, r12 @@ -69,12 +69,12 @@ LOOP: SUB r10, r10, #1 @ sft = norm_l(L_sum) MOV r0, r12, LSL r10 @ L_sum = L_sum << sft RSB r11, r10, #30 @ *exp = 30 - sft - STRH r11, [r3] + STRH r11, [r3] Dot_product12_end: - - LDMFD r13!, {r4 - r12, r15} + + LDMFD r13!, {r4 - r12, r15} @ENDFUNC .END - + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Filt_6k_7k_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Filt_6k_7k_opt.s index 1ce2a85..856ada8 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Filt_6k_7k_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Filt_6k_7k_opt.s @@ -23,7 +23,7 @@ @****************************************************************** @ r0 --- signal[] @ r1 --- lg -@ r2 --- mem[] +@ r2 --- mem[] .section .text .global Filt_6k_7k_asm @@ -32,7 +32,7 @@ Filt_6k_7k_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r13, r13, #240 @ x[L_SUBFR16k + (L_FIR - 1)] MOV r8, r0 @ copy signal[] address MOV r4, r1 @ copy lg address @@ -43,9 +43,9 @@ Filt_6k_7k_asm: MOV r2, #30 @ L_FIR - 1 BL voAWB_Copy @ memcpy(x, mem, (L_FIR - 1)<<1) - LDR r10, Lable1 @ get fir_7k address + LDR r10, Lable1 @ get fir_7k address - MOV r14, #0 + MOV r14, #0 MOV r3, r8 @ change myMemCopy to Copy, due to Copy will change r3 content ADD r6, r13, #60 @ get x[L_FIR - 1] address MOV r7, r3 @ get signal[i] @@ -76,14 +76,14 @@ LOOP1: STRH r12, [r6], #2 ADD r14, r14, #8 CMP r14, #80 - BLT LOOP1 + BLT LOOP1 STR r5, [sp, #-4] @ PUSH r5 to stack @ not use registers: r4, r10, r12, r14, r5 - MOV r4, r13 - MOV r5, #0 @ i = 0 + MOV r4, r13 + MOV r5, #0 @ i = 0 LOOP2: LDR r0, [r10] @@ -111,13 +111,13 @@ LOOP2: LDRSH r8, [r4, #10] @ load x[i+5] LDRSH r9, [r4, #50] @ load x[i+25] SMLABT r14, r1, r0, r14 @ (x[i+3] + x[i+27]) * fir_7k[3] - ADD r8, r8, r9 @ x[i+5] + x[i+25] - + ADD r8, r8, r9 @ x[i+5] + x[i+25] + LDR r0, [r10, #8] LDRSH r1, [r4, #12] @ x[i+6] LDRSH r2, [r4, #48] @ x[i+24] SMLABB r14, r6, r0, r14 @ (x[i+4] + x[i+26]) * fir_7k[4] - LDRSH r6, [r4, #14] @ x[i+7] + LDRSH r6, [r4, #14] @ x[i+7] LDRSH r7, [r4, #46] @ x[i+23] SMLABT r14, r8, r0, r14 @ (x[i+5] + x[i+25]) * fir_7k[5] LDR r0, [r10, #12] @@ -125,8 +125,8 @@ LOOP2: ADD r6, r6, r7 @ (x[i+7] + x[i+23]) SMLABB r14, r1, r0, r14 @ (x[i+6] + x[i+24]) * fir_7k[6] LDRSH r8, [r4, #16] @ x[i+8] - LDRSH r9, [r4, #44] @ x[i+22] - SMLABT r14, r6, r0, r14 @ (x[i+7] + x[i+23]) * fir_7k[7] + LDRSH r9, [r4, #44] @ x[i+22] + SMLABT r14, r6, r0, r14 @ (x[i+7] + x[i+23]) * fir_7k[7] LDR r0, [r10, #16] LDRSH r1, [r4, #18] @ x[i+9] LDRSH r2, [r4, #42] @ x[i+21] @@ -144,7 +144,7 @@ LOOP2: LDRSH r2, [r4, #36] @ x[i+18] SMLABB r14, r6, r0, r14 @ (x[i+10] + x[i+20]) * fir_7k[10] LDRSH r6, [r4, #26] @ x[i+13] - ADD r8, r8, r9 @ (x[i+11] + x[i+19]) + ADD r8, r8, r9 @ (x[i+11] + x[i+19]) LDRSH r7, [r4, #34] @ x[i+17] SMLABT r14, r8, r0, r14 @ (x[i+11] + x[i+19]) * fir_7k[11] LDR r0, [r10, #24] @@ -152,31 +152,31 @@ LOOP2: LDRSH r8, [r4, #28] @ x[i+14] SMLABB r14, r1, r0, r14 @ (x[i+12] + x[i+18]) * fir_7k[12] ADD r6, r6, r7 @ (x[i+13] + x[i+17]) - LDRSH r9, [r4, #32] @ x[i+16] + LDRSH r9, [r4, #32] @ x[i+16] SMLABT r14, r6, r0, r14 @ (x[i+13] + x[i+17]) * fir_7k[13] - LDR r0, [r10, #28] + LDR r0, [r10, #28] ADD r8, r8, r9 @ (x[i+14] + x[i+16]) LDRSH r1, [r4, #30] @ x[i+15] SMLABB r14, r8, r0, r14 @ (x[i+14] + x[i+16]) * fir_7k[14] - SMLABT r14, r1, r0, r14 @ x[i+15] * fir_7k[15] + SMLABT r14, r1, r0, r14 @ x[i+15] * fir_7k[15] ADD r5, r5, #1 ADD r14, r14, #0x4000 - ADD r4, r4, #2 + ADD r4, r4, #2 MOV r1, r14, ASR #15 CMP r5, #80 STRH r1, [r3], #2 @signal[i] = (L_tmp + 0x4000) >> 15 - BLT LOOP2 - + BLT LOOP2 + LDR r1, [sp, #-4] @mem address ADD r0, r13, #160 @x + lg MOV r2, #30 BL voAWB_Copy - + Filt_6k_7k_end: - ADD r13, r13, #240 - LDMFD r13!, {r4 - r12, r15} - + ADD r13, r13, #240 + LDMFD r13!, {r4 - r12, r15} + Lable1: .word fir_6k_7k @ENDFUNC diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Norm_Corr_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Norm_Corr_opt.s index b440a31..49bdc2b 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Norm_Corr_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Norm_Corr_opt.s @@ -32,8 +32,8 @@ @ r6 --- corr_norm[] - .section .text - .global Norm_corr_asm + .section .text + .global Norm_corr_asm .extern Convolve_asm .extern Isqrt_n @****************************** @@ -47,17 +47,17 @@ .equ T_MIN , 212 .equ T_MAX , 216 .equ CORR_NORM , 220 - + Norm_corr_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r13, r13, #voSTACK - + ADD r8, r13, #20 @get the excf[L_SUBFR] LDR r4, [r13, #T_MIN] @get t_min RSB r11, r4, #0 @k = -t_min - ADD r5, r0, r11, LSL #1 @get the &exc[k] - + ADD r5, r0, r11, LSL #1 @get the &exc[k] + @transfer Convolve function STMFD sp!, {r0 - r3} MOV r0, r5 @@ -68,7 +68,7 @@ Norm_corr_asm: @ r8 --- excf[] - MOV r14, r1 @copy xn[] address + MOV r14, r1 @copy xn[] address MOV r5, #64 MOV r6, #0 @L_tmp = 0 MOV r7, #1 @@ -93,21 +93,21 @@ LOOP1: CLZ r7, r9 SUB r6, r7, #1 @exp = norm_l(L_tmp) RSB r7, r6, #32 @exp = 32 - exp - MOV r6, r7, ASR #1 + MOV r6, r7, ASR #1 RSB r7, r6, #0 @scale = -(exp >> 1) - + @loop for every possible period @for(t = t_min@ t <= t_max@ t++) @r7 --- scale r4 --- t_min r8 --- excf[] -LOOPFOR: +LOOPFOR: MOV r5, #0 @L_tmp = 0 MOV r6, #0 @L_tmp1 = 0 - MOV r9, #64 + MOV r9, #64 MOV r12, r1 @copy of xn[] ADD r14, r13, #20 @copy of excf[] MOV r8, #0x8000 - + LOOPi: LDR r11, [r14], #4 @load excf[i], excf[i+1] LDR r10, [r12], #4 @load xn[i], xn[i+1] @@ -128,13 +128,13 @@ LOOPi: MOV r10, #1 ADD r5, r10, r5, LSL #1 @L_tmp = (L_tmp << 1) + 1 ADD r6, r10, r6, LSL #1 @L_tmp1 = (L_tmp1 << 1) + 1 - - CLZ r10, r5 + + CLZ r10, r5 CMP r5, #0 RSBLT r11, r5, #0 CLZLT r10, r11 SUB r10, r10, #1 @exp = norm_l(L_tmp) - + MOV r5, r5, LSL r10 @L_tmp = (L_tmp << exp) RSB r10, r10, #30 @exp_corr = 30 - exp MOV r11, r5, ASR #16 @corr = extract_h(L_tmp) @@ -150,7 +150,7 @@ LOOPi: @Isqrt_n(&L_tmp, &exp_norm) MOV r14, r0 - MOV r12, r1 + MOV r12, r1 STMFD sp!, {r0 - r4, r7 - r12, r14} ADD r1, sp, #4 @@ -168,7 +168,7 @@ LOOPi: MOV r6, r6, ASR #16 @norm = extract_h(L_tmp) MUL r12, r6, r11 ADD r12, r12, r12 @L_tmp = vo_L_mult(corr, norm) - + ADD r6, r10, r5 ADD r6, r6, r7 @exp_corr + exp_norm + scale @@ -187,9 +187,9 @@ LOOPi: CMP r4, r6 BEQ Norm_corr_asm_end - + ADD r4, r4, #1 @ t_min ++ - + RSB r5, r4, #0 @ k MOV r6, #63 @ i = 63 @@ -216,16 +216,16 @@ LOOPK: MUL r14, r11, r8 LDR r6, [r13, #T_MAX] @ get t_max MOV r8, r14, ASR #15 - STRH r8, [r10] + STRH r8, [r10] CMP r4, r6 BLE LOOPFOR -Norm_corr_asm_end: - - ADD r13, r13, #voSTACK +Norm_corr_asm_end: + + ADD r13, r13, #voSTACK LDMFD r13!, {r4 - r12, r15} - + .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Syn_filt_32_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Syn_filt_32_opt.s index 70464e4..3f4930c 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Syn_filt_32_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/Syn_filt_32_opt.s @@ -38,7 +38,7 @@ Syn_filt_32_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} LDR r4, [r13, #40] @ get sig_hi[] address LDR r5, [r13, #44] @ get sig_lo[] address @@ -55,7 +55,7 @@ Syn_filt_32_asm: AND r8, r8, r14 ORR r10, r6, r7, LSL #16 @ Aq[2] -- Aq[1] ORR r11, r8, r9, LSL #16 @ Aq[4] -- Aq[3] - STR r10, [r13, #-4] + STR r10, [r13, #-4] STR r11, [r13, #-8] LDRSH r6, [r0, #10] @ load Aq[5] @@ -73,12 +73,12 @@ Syn_filt_32_asm: LDRSH r7, [r0, #20] @ load Aq[10] LDRSH r8, [r0, #22] @ load Aq[11] LDRSH r9, [r0, #24] @ load Aq[12] - AND r6, r6, r14 + AND r6, r6, r14 AND r8, r8, r14 ORR r10, r6, r7, LSL #16 @ Aq[10] -- Aq[9] ORR r11, r8, r9, LSL #16 @ Aq[12] -- Aq[11] STR r10, [r13, #-20] - STR r11, [r13, #-24] + STR r11, [r13, #-24] LDRSH r6, [r0, #26] @ load Aq[13] LDRSH r7, [r0, #28] @ load Aq[14] @@ -90,14 +90,14 @@ Syn_filt_32_asm: ORR r11, r8, r9, LSL #16 @ Aq[16] -- Aq[15] STR r10, [r13, #-28] STR r11, [r13, #-32] - + MOV r8, #0 @ i = 0 - -LOOP: + +LOOP: LDRSH r6, [r5, #-2] @ load sig_lo[i-1] LDRSH r7, [r5, #-4] @ load sig_lo[i-2] - LDR r11, [r13, #-4] @ Aq[2] -- Aq[1] + LDR r11, [r13, #-4] @ Aq[2] -- Aq[1] LDRSH r9, [r5, #-6] @ load sig_lo[i-3] LDRSH r10, [r5, #-8] @ load sig_lo[i-4] @@ -135,12 +135,12 @@ LOOP: LDRSH r10, [r5, #-32] @ load sig_lo[i-16] SMLABB r12, r6, r11, r12 @ sig_lo[i-13] * Aq[13] SMLABT r12, r7, r11, r12 @ sig_lo[i-14] * Aq[14] - + LDR r11, [r13, #-32] @ Aq[16] -- Aq[15] - LDRSH r6, [r2],#2 @ load exc[i] + LDRSH r6, [r2],#2 @ load exc[i] SMLABB r12, r9, r11, r12 @ sig_lo[i-15] * Aq[15] SMLABT r12, r10, r11, r12 @ sig_lo[i-16] * Aq[16] - MUL r7, r6, r3 @ exc[i] * a0 + MUL r7, r6, r3 @ exc[i] * a0 RSB r14, r12, #0 @ L_tmp MOV r14, r14, ASR #11 @ L_tmp >>= 11 ADD r14, r14, r7, LSL #1 @ L_tmp += (exc[i] * a0) << 1 @@ -149,7 +149,7 @@ LOOP: LDRSH r6, [r4, #-2] @ load sig_hi[i-1] LDRSH r7, [r4, #-4] @ load sig_hi[i-2] - LDR r11, [r13, #-4] @ Aq[2] -- Aq[1] + LDR r11, [r13, #-4] @ Aq[2] -- Aq[1] LDRSH r9, [r4, #-6] @ load sig_hi[i-3] LDRSH r10, [r4, #-8] @ load sig_hi[i-4] SMULBB r12, r6, r11 @ sig_hi[i-1] * Aq[1] @@ -198,14 +198,14 @@ LOOP: LDRSH r10, [r4, #-32] @ load sig_hi[i-16] SMLABB r12, r6, r11, r12 @ sig_hi[i-13] * Aq[13] SMLABT r12, r7, r11, r12 @ sig_hi[i-14] * Aq[14] - + LDR r11, [r13, #-32] @ Aq[16] -- Aq[15] SMLABB r12, r9, r11, r12 @ sig_hi[i-15] * Aq[15] - SMLABT r12, r10, r11, r12 @ sig_hi[i-16] * Aq[16] + SMLABT r12, r10, r11, r12 @ sig_hi[i-16] * Aq[16] ADD r6, r12, r12 @ r12 << 1 - SUB r14, r14, r6 + SUB r14, r14, r6 MOV r14, r14, LSL #3 @ L_tmp <<=3 - + MOV r7, r14, ASR #16 @ L_tmp >> 16 MOV r14, r14, ASR #4 @ L_tmp >>=4 @@ -213,14 +213,14 @@ LOOP: SUB r9, r14, r7, LSL #12 @ sig_lo[i] = L_tmp - (sig_hi[i] << 12) ADD r8, r8, #1 - STRH r9, [r5], #2 + STRH r9, [r5], #2 CMP r8, #64 - BLT LOOP - + BLT LOOP + Syn_filt_32_end: - - LDMFD r13!, {r4 - r12, r15} + + LDMFD r13!, {r4 - r12, r15} @ENDFUNC .END - + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/convolve_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/convolve_opt.s index 0228bda..71bb532 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/convolve_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/convolve_opt.s @@ -27,24 +27,24 @@ @ r3 --- L .section .text - .global Convolve_asm + .global Convolve_asm Convolve_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} MOV r3, #0 @ n MOV r11, #0x8000 - -LOOP: + +LOOP: ADD r4, r1, r3, LSL #1 @ tmpH address ADD r5, r3, #1 @ i = n + 1 MOV r6, r0 @ tmpX = x LDRSH r9, [r6], #2 @ *tmpX++ LDRSH r10, [r4], #-2 @ *tmpH-- SUB r5, r5, #1 - MUL r8, r9, r10 + MUL r8, r9, r10 -LOOP1: +LOOP1: CMP r5, #0 BLE L1 LDRSH r9, [r6], #2 @ *tmpX++ @@ -58,12 +58,12 @@ LOOP1: LDRSH r12, [r6], #2 @ *tmpX++ LDRSH r14, [r4], #-2 @ *tmpH-- MLA r8, r9, r10, r8 - SUBS r5, r5, #4 + SUBS r5, r5, #4 MLA r8, r12, r14, r8 - - B LOOP1 -L1: + B LOOP1 + +L1: ADD r5, r11, r8, LSL #1 MOV r5, r5, LSR #16 @extract_h(s) @@ -75,14 +75,14 @@ L1: ADD r5, r3, #1 MOV r6, r0 LDRSH r9, [r6], #2 @ *tmpX++ - LDRSH r10, [r4], #-2 + LDRSH r10, [r4], #-2 LDRSH r12, [r6], #2 LDRSH r14, [r4], #-2 MUL r8, r9, r10 SUB r5, r5, #2 MLA r8, r12, r14, r8 - + LOOP2: CMP r5, #0 BLE L2 @@ -97,14 +97,14 @@ LOOP2: LDRSH r12, [r6], #2 @ *tmpX++ LDRSH r14, [r4], #-2 @ *tmpH-- MLA r8, r9, r10, r8 - SUBS r5, r5, #4 + SUBS r5, r5, #4 MLA r8, r12, r14, r8 B LOOP2 L2: ADD r8, r11, r8, LSL #1 MOV r8, r8, LSR #16 @extract_h(s) - ADD r3, r3, #1 + ADD r3, r3, #1 STRH r8, [r2], #2 @y[n] ADD r4, r1, r3, LSL #1 @@ -117,7 +117,7 @@ L2: MUL r8, r9, r10 LDRSH r9, [r6], #2 LDRSH r10, [r4], #-2 - MLA r8, r12, r14, r8 + MLA r8, r12, r14, r8 SUB r5, r5, #3 MLA r8, r9, r10, r8 @@ -135,9 +135,9 @@ LOOP3: LDRSH r12, [r6], #2 @ *tmpX++ LDRSH r14, [r4], #-2 @ *tmpH-- MLA r8, r9, r10, r8 - SUBS r5, r5, #4 - MLA r8, r12, r14, r8 - B LOOP3 + SUBS r5, r5, #4 + MLA r8, r12, r14, r8 + B LOOP3 L3: ADD r8, r11, r8, LSL #1 @@ -150,7 +150,7 @@ L3: MOV r6, r0 MOV r8, #0 -LOOP4: +LOOP4: CMP r5, #0 BLE L4 LDRSH r9, [r6], #2 @ *tmpX++ @@ -164,22 +164,22 @@ LOOP4: LDRSH r12, [r6], #2 @ *tmpX++ LDRSH r14, [r4], #-2 @ *tmpH-- MLA r8, r9, r10, r8 - SUBS r5, r5, #4 - MLA r8, r12, r14, r8 - B LOOP4 -L4: + SUBS r5, r5, #4 + MLA r8, r12, r14, r8 + B LOOP4 +L4: ADD r5, r11, r8, LSL #1 MOV r5, r5, LSR #16 @extract_h(s) ADD r3, r3, #1 STRH r5, [r2], #2 @y[n] - + CMP r3, #64 BLT LOOP - -Convolve_asm_end: - + +Convolve_asm_end: + LDMFD r13!, {r4 - r12, r15} - + @ENDFUNC .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/cor_h_vec_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/cor_h_vec_opt.s index 8f32733..2d4c7cc 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/cor_h_vec_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/cor_h_vec_opt.s @@ -51,12 +51,12 @@ LOOPi: RSB r11, r2, #62 @j=62-pos LOOPj1: - LDRSH r12, [r10], #2 + LDRSH r12, [r10], #2 LDRSH r8, [r9], #2 LDRSH r14, [r9] SUBS r11, r11, #1 MLA r5, r12, r8, r5 - MLA r6, r12, r14, r6 + MLA r6, r12, r14, r6 BGE LOOPj1 LDRSH r12, [r10], #2 @*p1++ @@ -64,7 +64,7 @@ LOOPj1: MLA r5, r12, r14, r5 MOV r14, #0x8000 MOV r5, r5, LSL #2 @L_sum1 = (L_sum1 << 2) - ADD r10, r6, r14 + ADD r10, r6, r14 ADD r9, r5, r14 MOV r5, r9, ASR #16 MOV r6, r10, ASR #16 @@ -76,7 +76,7 @@ LOOPj1: MUL r14, r6, r11 MOV r5, r12, ASR #15 MOV r6, r14, ASR #15 - LDR r9, [r13, #44] + LDR r9, [r13, #44] LDR r12, [r13, #48] LDRSH r10, [r7], #2 @*p0++ LDRSH r11, [r8] @*p3++ @@ -88,7 +88,7 @@ LOOPj1: STRH r6, [r12] ADD r2, r2, #4 - + MOV r5, #0 @L_sum1 = 0 MOV r6, #0 @L_sum2 = 0 ADD r9, r1, r2, LSL #1 @p2 = &vec[pos] @@ -97,12 +97,12 @@ LOOPj1: ADD r4, r4, #1 @i++ LOOPj2: - LDRSH r12, [r10], #2 + LDRSH r12, [r10], #2 LDRSH r8, [r9], #2 LDRSH r14, [r9] SUBS r11, r11, #1 MLA r5, r12, r8, r5 - MLA r6, r12, r14, r6 + MLA r6, r12, r14, r6 BGE LOOPj2 LDRSH r12, [r10], #2 @*p1++ @@ -110,7 +110,7 @@ LOOPj2: MLA r5, r12, r14, r5 MOV r14, #0x8000 MOV r5, r5, LSL #2 @L_sum1 = (L_sum1 << 2) - ADD r10, r6, r14 + ADD r10, r6, r14 ADD r9, r5, r14 MOV r5, r9, ASR #16 @@ -123,7 +123,7 @@ LOOPj2: MUL r14, r6, r11 MOV r5, r12, ASR #15 MOV r6, r14, ASR #15 - LDR r9, [r13, #44] + LDR r9, [r13, #44] LDR r12, [r13, #48] LDRSH r10, [r7], #2 @*p0++ LDRSH r11, [r8] @*p3++ @@ -136,16 +136,16 @@ LOOPj2: ADD r4, r4, #1 @i+1 ADD r2, r2, #4 @pos += STEP CMP r4, #16 - + BLT LOOPi - + the_end: LDMFD r13!, {r4 - r12, r15} - + @ENDFUNC - .END - - - + .END + + + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s index d7b4509..e0b338d 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/pred_lt4_1_opt.s @@ -35,7 +35,7 @@ pred_lt4_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} RSB r4, r1, #0 @-T0 RSB r2, r2, #0 @frac = -frac ADD r5, r0, r4, LSL #1 @x = exc - T0 @@ -45,7 +45,7 @@ pred_lt4_asm: SUB r5, r5, #30 @x -= 15 RSB r4, r2, #3 @k = 3 - frac LDR r6, Table - MOV r8, r4, LSL #6 + MOV r8, r4, LSL #6 @MOV r7, #0 @j = 0 ADD r8, r6, r8 @ptr2 = &(inter4_2[k][0]) @@ -63,7 +63,7 @@ THREE_LOOP: LDRSH r6, [r1], #2 @x[1] LDRSH r9, [r1], #2 @x[2] - SMULBB r10, r4, r3 @x[0] * h[0] + SMULBB r10, r4, r3 @x[0] * h[0] SMULBB r11, r6, r3 @x[1] * h[0] SMULBB r12, r9, r3 @x[2] * h[0] @@ -285,7 +285,7 @@ Last2LOOP: SMLABB r10, r9, r3, r10 @x[2] * h[2] SMLABB r11, r4, r3, r11 @x[3] * h[2] - + SMLABT r10, r4, r3, r10 @x[3] * h[3] SMLABT r11, r6, r3, r11 @x[4] * h[3] @@ -435,7 +435,7 @@ Last2LOOP: MOV r11, r11, LSL #1 QADD r10, r10, r10 - QADD r11, r11, r11 + QADD r11, r11, r11 QADD r10, r10, r5 QADD r11, r11, r5 diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s index 86b3bd6..5ff0964 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/residu_asm_opt.s @@ -34,12 +34,12 @@ Residu_opt: LDRH r5, [r0], #2 LDRH r6, [r0], #2 - ORR r5, r6, r5, LSL #16 @r5 --- a0, a1 + ORR r5, r6, r5, LSL #16 @r5 --- a0, a1 LDRH r6, [r0], #2 LDRH r7, [r0], #2 ORR r6, r7, r6, LSL #16 @r6 --- a2, a3 - + LDRH r7, [r0], #2 LDRH r8, [r0], #2 ORR r7, r8, r7, LSL #16 @r7 --- a4, a5 @@ -59,13 +59,13 @@ Residu_opt: LDRH r11, [r0], #2 LDRH r12, [r0], #2 ORR r11, r12, r11, LSL #16 @r11 --- a12, a13 - + LDRH r12, [r0], #2 LDRH r4, [r0], #2 ORR r12, r4, r12, LSL #16 @r12 --- a14, a15 - - STMFD r13!, {r8 - r12} @store r8-r12 + + STMFD r13!, {r8 - r12} @store r8-r12 LDRH r4, [r0], #2 @load a16 MOV r14, r3, ASR #2 @one loop get 4 outputs ADD r1, r1, #4 @@ -78,7 +78,7 @@ residu_loop: LDR r2, [r1], #-4 @r2 --- x[1], x[0] SMULTB r3, r5, r2 @i1(0) --- r3 = x[0] * a0 - SMULTT r4, r5, r2 @i2(0) --- r4 = x[1] * a0 + SMULTT r4, r5, r2 @i2(0) --- r4 = x[1] * a0 SMULTB r11, r5, r10 @i3(0) --- r11 = x[2] * a0 SMULTT r12, r5, r10 @i4(0) --- r12 = x[3] * a0 @@ -88,20 +88,20 @@ residu_loop: SMLATB r11, r6, r2, r11 @i3(2) --- r11 += x[0] * a2 SMLATT r12, r6, r2, r12 @i4(2) --- r12 += x[1] * a2 - SMLABB r12, r6, r2, r12 @i4(3) --- r12 += x[0] * a3 - + SMLABB r12, r6, r2, r12 @i4(3) --- r12 += x[0] * a3 + LDR r2, [r1], #-4 @r2 ---- x[-1], x[-2] SMLABT r3, r5, r2, r3 @i1(1) --- r3 += x[-1] * a1 SMLATT r4, r6, r2, r4 @i2(2) --- r4 += x[-1] * a2 SMLABT r11, r6, r2, r11 @i3(3) --- r11 += x[-1] * a3 SMLATT r12, r7, r2, r12 @i4(4) --- r12 += x[-1] * a4 - SMLATB r3, r6, r2, r3 @i1(2) --- r3 += x[-2] * a2 + SMLATB r3, r6, r2, r3 @i1(2) --- r3 += x[-2] * a2 SMLABB r4, r6, r2, r4 @ i2 (3) SMLATB r11,r7, r2, r11 @ i3 (4) SMLABB r12,r7, r2, r12 @ i4 (5) - + LDR r2,[r1],#-4 SMLABT r3, r6, r2, r3 @ i1 (3) SMLATT r4, r7, r2, r4 @ i2 (4) @@ -111,7 +111,7 @@ residu_loop: SMLABB r4, r7, r2, r4 @ i2 (5) SMLATB r11,r8, r2, r11 @ i3 (6) SMLABB r12,r8, r2, r12 @ i4 (7) - + LDR r2,[r1],#-4 SMLABT r3, r7, r2, r3 @ i1 (5) SMLATT r4, r8, r2, r4 @ i2 (6) @@ -122,7 +122,7 @@ residu_loop: SMLATB r11,r9, r2, r11 @ i3 (8) SMLABB r12,r9, r2, r12 @ i4 (9) LDR r10, [r13, #8] @ [ a10 | a11] - + LDR r2,[r1],#-4 SMLABT r3, r8, r2, r3 @ i1 (7) SMLATT r4, r9, r2, r4 @ i2 (8) @@ -133,7 +133,7 @@ residu_loop: SMLATB r11,r10, r2, r11 @ i3 (10) SMLABB r12,r10, r2, r12 @ i4 (11) LDR r8, [r13, #12] @ [ a12 | a13 ] - + LDR r2,[r1],#-4 SMLABT r3, r9, r2, r3 @ i1 (9) SMLATT r4, r10, r2, r4 @ i2 (10) @@ -144,7 +144,7 @@ residu_loop: SMLATB r11,r8, r2, r11 @ i3 (12) SMLABB r12,r8, r2, r12 @ i4 (13) LDR r9, [r13, #16] @ [ a14 | a15 ] - + LDR r2,[r1],#-4 SMLABT r3, r10, r2, r3 @ i1 (11) SMLATT r4, r8, r2, r4 @ i2 (12) @@ -154,7 +154,7 @@ residu_loop: SMLABB r4, r8, r2, r4 @ i2 (13) SMLATB r11,r9, r2, r11 @ i3 (14) SMLABB r12,r9, r2, r12 @ i4 (15) - + LDR r2,[r1],#-4 SMLABT r3, r8, r2, r3 @ i1 (13) @@ -165,64 +165,64 @@ residu_loop: SMLABB r4, r9, r2, r4 @ i2 (15) SMLABB r11,r14, r2, r11 @ i3 (16) LDR r8, [r13] @ [ a6 | a7 ] - + LDR r2,[r1],#44 @ Change SMLABT r3, r9, r2, r3 SMLABB r3, r14, r2, r3 SMLABT r4, r14, r2, r4 LDR r9, [r13, #4] @ [ a8 | a9 ] - - - QADD r3,r3,r3 - QADD r4,r4,r4 - QADD r11,r11,r11 - QADD r12,r12,r12 - - QADD r3,r3,r3 - QADD r4,r4,r4 - QADD r11,r11,r11 - QADD r12,r12,r12 - - QADD r3,r3,r3 - QADD r4,r4,r4 - QADD r11,r11,r11 - QADD r12,r12,r12 - - QADD r3,r3,r3 - QADD r4,r4,r4 - QADD r11,r11,r11 - QADD r12,r12,r12 - - MOV r2,#32768 - - QDADD r3,r2,r3 - QDADD r4,r2,r4 - QDADD r11,r2,r11 - QDADD r12,r2,r12 - - + + + QADD r3,r3,r3 + QADD r4,r4,r4 + QADD r11,r11,r11 + QADD r12,r12,r12 + + QADD r3,r3,r3 + QADD r4,r4,r4 + QADD r11,r11,r11 + QADD r12,r12,r12 + + QADD r3,r3,r3 + QADD r4,r4,r4 + QADD r11,r11,r11 + QADD r12,r12,r12 + + QADD r3,r3,r3 + QADD r4,r4,r4 + QADD r11,r11,r11 + QADD r12,r12,r12 + + MOV r2,#32768 + + QDADD r3,r2,r3 + QDADD r4,r2,r4 + QDADD r11,r2,r11 + QDADD r12,r2,r12 + + MOV r3,r3,asr #16 MOV r4,r4,asr #16 MOV r11,r11,asr #16 MOV r12,r12,asr #16 - + STRH r3,[r0],#2 STRH r4,[r0],#2 STRH r11,[r0],#2 STRH r12,[r0],#2 - + MOV r2,r14,asr #16 SUB r14, r14, #0x10000 SUBS r2,r2,#1 - BNE residu_loop + BNE residu_loop end: - LDMFD r13!, {r8 -r12} + LDMFD r13!, {r8 -r12} LDMFD r13!, {r4 -r12,pc} @ENDFUNC - .END - - - + .END + + + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/scale_sig_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/scale_sig_opt.s index f83e688..b300224 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/scale_sig_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/scale_sig_opt.s @@ -38,7 +38,7 @@ Scale_sig_opt: MOV r8, #0x7fffffff MOV r9, #0x8000 BLE LOOP2 - + LOOP1: LDRSH r5, [r4] @load x[i] @@ -65,11 +65,11 @@ LOOP2: The_end: LDMFD r13!, {r4 - r12, r15} - + @ENDFUNC - .END - - - + .END + + + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/syn_filt_opt.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/syn_filt_opt.s index f4700cd..0c287a4 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/syn_filt_opt.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV5E/syn_filt_opt.s @@ -33,18 +33,18 @@ Syn_filt_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r13, r13, #700 @ y_buf[L_FRAME16k + M16k] - + MOV r4, r3 @ copy mem[] address MOV r5, r13 @ copy yy = y_buf address @ for(i = 0@ i < m@ i++) @{ @ *yy++ = mem[i]@ - @} + @} - LDRH r6, [r4], #2 + LDRH r6, [r4], #2 LDRH r7, [r4], #2 LDRH r8, [r4], #2 LDRH r9, [r4], #2 @@ -62,7 +62,7 @@ Syn_filt_asm: STRH r12, [r5], #2 STRH r14, [r5], #2 - LDRH r6, [r4], #2 + LDRH r6, [r4], #2 LDRH r7, [r4], #2 LDRH r8, [r4], #2 LDRH r9, [r4], #2 @@ -92,45 +92,45 @@ Syn_filt_asm: LDRSH r9, [r0, #6] @ load a[3] LDRSH r11,[r0, #8] @ load a[4] AND r6, r6, r14 - AND r9, r9, r14 + AND r9, r9, r14 ORR r10, r6, r7, LSL #16 @ -a[2] -- -a[1] ORR r12, r9, r11, LSL #16 @ -a[4] -- -a[3] STR r10, [r13, #-4] STR r12, [r13, #-8] - + LDRSH r6, [r0, #10] @ load a[5] LDRSH r7, [r0, #12] @ load a[6] LDRSH r9, [r0, #14] @ load a[7] LDRSH r11,[r0, #16] @ load a[8] AND r6, r6, r14 - AND r9, r9, r14 + AND r9, r9, r14 ORR r10, r6, r7, LSL #16 @ -a[6] -- -a[5] ORR r12, r9, r11, LSL #16 @ -a[8] -- -a[7] STR r10, [r13, #-12] - STR r12, [r13, #-16] - + STR r12, [r13, #-16] + LDRSH r6, [r0, #18] @ load a[9] LDRSH r7, [r0, #20] @ load a[10] LDRSH r9, [r0, #22] @ load a[11] LDRSH r11,[r0, #24] @ load a[12] AND r6, r6, r14 - AND r9, r9, r14 + AND r9, r9, r14 ORR r10, r6, r7, LSL #16 @ -a[10] -- -a[9] ORR r12, r9, r11, LSL #16 @ -a[12] -- -a[11] STR r10, [r13, #-20] - STR r12, [r13, #-24] + STR r12, [r13, #-24] LDRSH r6, [r0, #26] @ load a[13] LDRSH r7, [r0, #28] @ load a[14] LDRSH r9, [r0, #30] @ load a[15] LDRSH r11,[r0, #32] @ load a[16] AND r6, r6, r14 - AND r9, r9, r14 + AND r9, r9, r14 ORR r10, r6, r7, LSL #16 @ -a[14] -- -a[13] ORR r12, r9, r11, LSL #16 @ -a[16] -- -a[15] STR r10, [r13, #-28] - STR r12, [r13, #-32] - + STR r12, [r13, #-32] + ADD r4, r13, #32 LOOP: LDRSH r6, [r1], #2 @ load x[i] @@ -155,8 +155,8 @@ LOOP: SMLABB r14, r6, r7, r14 @ -a[3] * (*(temp_p -3)) LDRSH r9, [r10, #-10] @ *(temp_p - 5) - - SMLABT r14, r11, r7, r14 @ -a[4] * (*(temp_p -4)) + + SMLABT r14, r11, r7, r14 @ -a[4] * (*(temp_p -4)) LDR r7, [r13, #-12] @ -a[6] -a[5] LDRSH r12, [r10, #-12] @ *(temp_p - 6) @@ -169,13 +169,13 @@ LOOP: LDR r7, [r13, #-16] @ -a[8] -a[7] LDRSH r11, [r10, #-16] @ *(temp_p - 8) - + SMLABB r14, r6, r7, r14 @ -a[7] * (*(temp_p -7)) LDRSH r9, [r10, #-18] @ *(temp_p - 9) - SMLABT r14, r11, r7, r14 @ -a[8] * (*(temp_p -8)) - + SMLABT r14, r11, r7, r14 @ -a[8] * (*(temp_p -8)) + LDR r7, [r13, #-20] @ -a[10] -a[9] LDRSH r12, [r10, #-20] @ *(temp_p - 10) @@ -192,11 +192,11 @@ LOOP: LDRSH r9, [r10, #-26] @ *(temp_p - 13) - SMLABT r14, r11, r7, r14 @ -a[12] * (*(temp_p -12)) + SMLABT r14, r11, r7, r14 @ -a[12] * (*(temp_p -12)) LDR r7, [r13, #-28] @ -a[14] -a[13] LDRSH r12, [r10, #-28] @ *(temp_p - 14) - + SMLABB r14, r9, r7, r14 @ -a[13] * (*(temp_p -13)) LDRSH r6, [r10, #-30] @ *(temp_p - 15) @@ -211,28 +211,28 @@ LOOP: SMLABT r14, r11, r7, r14 @ -a[16] * (*(temp_p -16)) RSB r14, r14, r0 - + MOV r7, r14, LSL #4 @ L_tmp <<=4 ADD r8, r8, #1 - ADD r14, r7, #0x8000 + ADD r14, r7, #0x8000 MOV r7, r14, ASR #16 @ (L_tmp + 0x8000) >> 16 CMP r8, #80 STRH r7, [r10] @ yy[i] STRH r7, [r2], #2 @ y[i] BLT LOOP - + @ update mem[] ADD r5, r13, #160 @ yy[64] address MOV r1, r3 MOV r0, r5 MOV r2, #16 - BL voAWB_Copy + BL voAWB_Copy Syn_filt_asm_end: - - ADD r13, r13, #700 - LDMFD r13!, {r4 - r12, r15} + + ADD r13, r13, #700 + LDMFD r13!, {r4 - r12, r15} @ENDFUNC .END - + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Deemph_32_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Deemph_32_neon.s index 2afc146..1d5893f 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Deemph_32_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Deemph_32_neon.s @@ -30,10 +30,10 @@ .section .text .global Deemph_32_asm - + Deemph_32_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} MOV r4, #2 @i=0 LDRSH r6, [r0], #2 @load x_hi[0] LDRSH r7, [r1], #2 @load x_lo[0] @@ -47,9 +47,9 @@ Deemph_32_asm: ADD r12, r10, r7, LSL #4 @L_tmp += x_lo[0] << 4 MOV r10, r12, LSL #3 @L_tmp <<= 3 MUL r9, r5, r8 - LDRSH r6, [r0], #2 @load x_hi[1] + LDRSH r6, [r0], #2 @load x_hi[1] QDADD r10, r10, r9 - LDRSH r7, [r1], #2 @load x_lo[1] + LDRSH r7, [r1], #2 @load x_lo[1] MOV r12, r10, LSL #1 @L_tmp = L_mac(L_tmp, *mem, fac) QADD r10, r12, r11 MOV r14, r10, ASR #16 @y[0] = round(L_tmp) @@ -94,9 +94,9 @@ LOOP: BLT LOOP STR r14, [r3] - STRH r14, [r2] + STRH r14, [r2] - LDMFD r13!, {r4 - r12, r15} + LDMFD r13!, {r4 - r12, r15} .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Dot_p_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Dot_p_neon.s index 678f1d0..8230944 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Dot_p_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Dot_p_neon.s @@ -45,14 +45,14 @@ Dot_product12_asm: VLD1.S16 {Q12, Q13}, [r1]! @load 16 Word16 y[] VMULL.S16 Q15, D16, D0 - VMLAL.S16 Q15, D17, D1 + VMLAL.S16 Q15, D17, D1 VMLAL.S16 Q15, D18, D2 VMLAL.S16 Q15, D19, D3 - VLD1.S16 {Q0, Q1}, [r1]! @load 16 Word16 y[] - VMLAL.S16 Q15, D20, D4 + VLD1.S16 {Q0, Q1}, [r1]! @load 16 Word16 y[] + VMLAL.S16 Q15, D20, D4 VMLAL.S16 Q15, D21, D5 VMLAL.S16 Q15, D22, D6 - VMLAL.S16 Q15, D23, D7 + VMLAL.S16 Q15, D23, D7 VMLAL.S16 Q15, D24, D8 VMLAL.S16 Q15, D25, D9 VMLAL.S16 Q15, D26, D10 @@ -64,9 +64,9 @@ Dot_product12_asm: CMP r2, #64 BEQ Lable1 - VLD1.S16 {Q0, Q1}, [r0]! @load 16 Word16 x[] - VLD1.S16 {Q2, Q3}, [r1]! - VMLAL.S16 Q15, D4, D0 + VLD1.S16 {Q0, Q1}, [r0]! @load 16 Word16 x[] + VLD1.S16 {Q2, Q3}, [r1]! + VMLAL.S16 Q15, D4, D0 VMLAL.S16 Q15, D5, D1 VMLAL.S16 Q15, D6, D2 VMLAL.S16 Q15, D7, D3 @@ -102,11 +102,11 @@ LOOP_EQ: VMLAL.S16 Q15, D2, D2 VMLAL.S16 Q15, D3, D3 -Lable1: +Lable1: VQADD.S32 D30, D30, D31 VPADD.S32 D30, D30, D30 - VMOV.S32 r12, D30[0] + VMOV.S32 r12, D30[0] ADD r12, r12, r12 ADD r12, r12, #1 @ L_sum = (L_sum << 1) + 1 @@ -117,11 +117,11 @@ Lable1: SUB r10, r10, #1 @ sft = norm_l(L_sum) MOV r0, r12, LSL r10 @ L_sum = L_sum << sft RSB r11, r10, #30 @ *exp = 30 - sft - STRH r11, [r3] + STRH r11, [r3] Dot_product12_end: - - LDMFD r13!, {r4 - r12, r15} + + LDMFD r13!, {r4 - r12, r15} .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Filt_6k_7k_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Filt_6k_7k_neon.s index 5389a1c..14ba828 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Filt_6k_7k_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Filt_6k_7k_neon.s @@ -13,7 +13,7 @@ @ ** See the License for the specific language governing permissions and @ ** limitations under the License. @ */ -@ +@ @**********************************************************************/ @void Filt_6k_7k( @ Word16 signal[], /* input: signal */ @@ -23,7 +23,7 @@ @*********************************************************************** @ r0 --- signal[] @ r1 --- lg -@ r2 --- mem[] +@ r2 --- mem[] .section .text .global Filt_6k_7k_asm @@ -31,7 +31,7 @@ Filt_6k_7k_asm: - STMFD r13!, {r0 - r12, r14} + STMFD r13!, {r0 - r12, r14} SUB r13, r13, #240 @ x[L_SUBFR16k + (L_FIR - 1)] MOV r8, r0 @ copy signal[] address MOV r5, r2 @ copy mem[] address @@ -49,7 +49,7 @@ Filt_6k_7k_asm: - LDR r10, Lable1 @ get fir_7k address + LDR r10, Lable1 @ get fir_7k address MOV r3, r8 @ change myMemCopy to Copy, due to Copy will change r3 content ADD r6, r13, #60 @ get x[L_FIR - 1] address MOV r7, r3 @ get signal[i] @@ -81,9 +81,9 @@ Filt_6k_7k_asm: MOV r12, r5 @STR r5, [sp, #-4] @ PUSH r5 to stack @ not use registers: r4, r10, r12, r14, r5 - MOV r4, r13 - MOV r5, #0 @ i = 0 - + MOV r4, r13 + MOV r5, #0 @ i = 0 + @ r4 --- x[i], r10 ---- fir_6k_7k VLD1.S16 {Q0, Q1}, [r10]! @fir_6k_7k[0] ~ fir_6k_7k[15] VLD1.S16 {Q2, Q3}, [r10]! @fir_6k_7k[16] ~ fir_6k_7k[31] @@ -91,20 +91,20 @@ Filt_6k_7k_asm: VLD1.S16 {Q4, Q5}, [r4]! @x[0] ~ x[15] VLD1.S16 {Q6, Q7}, [r4]! @x[16] ~ X[31] - VLD1.S16 {Q8}, [r4]! - VMOV.S16 Q15, #0 - + VLD1.S16 {Q8}, [r4]! + VMOV.S16 Q15, #0 + LOOP_6K7K: - VMULL.S16 Q9,D8,D0[0] - VMULL.S16 Q10,D9,D1[0] - VMULL.S16 Q11,D9,D0[0] + VMULL.S16 Q9,D8,D0[0] + VMULL.S16 Q10,D9,D1[0] + VMULL.S16 Q11,D9,D0[0] VMULL.S16 Q12,D10,D1[0] VEXT.8 Q4,Q4,Q5,#2 VMLAL.S16 Q9,D10,D2[0] VMLAL.S16 Q10,D11,D3[0] VMLAL.S16 Q11,D11,D2[0] - VMLAL.S16 Q12,D12,D3[0] + VMLAL.S16 Q12,D12,D3[0] VEXT.8 Q5,Q5,Q6,#2 VMLAL.S16 Q9,D12,D4[0] VMLAL.S16 Q10,D13,D5[0] @@ -115,18 +115,18 @@ LOOP_6K7K: VMLAL.S16 Q10,D15,D7[0] VMLAL.S16 Q11,D15,D6[0] VMLAL.S16 Q12,D16,D7[0] - VEXT.8 Q7,Q7,Q8,#2 + VEXT.8 Q7,Q7,Q8,#2 - VMLAL.S16 Q9,D8,D0[1] + VMLAL.S16 Q9,D8,D0[1] VMLAL.S16 Q10,D9,D1[1] - VEXT.8 Q8,Q8,Q15,#2 - VMLAL.S16 Q11,D9,D0[1] + VEXT.8 Q8,Q8,Q15,#2 + VMLAL.S16 Q11,D9,D0[1] VMLAL.S16 Q12,D10,D1[1] VEXT.8 Q4,Q4,Q5,#2 VMLAL.S16 Q9,D10,D2[1] VMLAL.S16 Q10,D11,D3[1] VMLAL.S16 Q11,D11,D2[1] - VMLAL.S16 Q12,D12,D3[1] + VMLAL.S16 Q12,D12,D3[1] VEXT.8 Q5,Q5,Q6,#2 VMLAL.S16 Q9,D12,D4[1] VMLAL.S16 Q10,D13,D5[1] @@ -137,18 +137,18 @@ LOOP_6K7K: VMLAL.S16 Q10,D15,D7[1] VMLAL.S16 Q11,D15,D6[1] VMLAL.S16 Q12,D16,D7[1] - VEXT.8 Q7,Q7,Q8,#2 + VEXT.8 Q7,Q7,Q8,#2 - VMLAL.S16 Q9,D8,D0[2] + VMLAL.S16 Q9,D8,D0[2] VMLAL.S16 Q10,D9,D1[2] - VEXT.8 Q8,Q8,Q15,#2 - VMLAL.S16 Q11,D9,D0[2] + VEXT.8 Q8,Q8,Q15,#2 + VMLAL.S16 Q11,D9,D0[2] VMLAL.S16 Q12,D10,D1[2] VEXT.8 Q4,Q4,Q5,#2 VMLAL.S16 Q9,D10,D2[2] VMLAL.S16 Q10,D11,D3[2] VMLAL.S16 Q11,D11,D2[2] - VMLAL.S16 Q12,D12,D3[2] + VMLAL.S16 Q12,D12,D3[2] VEXT.8 Q5,Q5,Q6,#2 VMLAL.S16 Q9,D12,D4[2] VMLAL.S16 Q10,D13,D5[2] @@ -159,18 +159,18 @@ LOOP_6K7K: VMLAL.S16 Q10,D15,D7[2] VMLAL.S16 Q11,D15,D6[2] VMLAL.S16 Q12,D16,D7[2] - VEXT.8 Q7,Q7,Q8,#2 + VEXT.8 Q7,Q7,Q8,#2 - VMLAL.S16 Q9,D8,D0[3] + VMLAL.S16 Q9,D8,D0[3] VMLAL.S16 Q10,D9,D1[3] - VEXT.8 Q8,Q8,Q15,#2 - VMLAL.S16 Q11,D9,D0[3] + VEXT.8 Q8,Q8,Q15,#2 + VMLAL.S16 Q11,D9,D0[3] VMLAL.S16 Q12,D10,D1[3] VEXT.8 Q4,Q4,Q5,#2 VMLAL.S16 Q9,D10,D2[3] VMLAL.S16 Q10,D11,D3[3] VMLAL.S16 Q11,D11,D2[3] - VMLAL.S16 Q12,D12,D3[3] + VMLAL.S16 Q12,D12,D3[3] VEXT.8 Q5,Q5,Q6,#2 VMLAL.S16 Q9,D12,D4[3] VMLAL.S16 Q10,D13,D5[3] @@ -181,10 +181,10 @@ LOOP_6K7K: VMLAL.S16 Q10,D15,D7[3] VMLAL.S16 Q11,D15,D6[3] VMLAL.S16 Q12,D16,D7[3] - VEXT.8 Q7,Q7,Q8,#2 + VEXT.8 Q7,Q7,Q8,#2 VMOV.S16 D8,D9 - VEXT.8 Q8,Q8,Q15,#2 + VEXT.8 Q8,Q8,Q15,#2 VMOV.S16 D9,D10 VADD.S32 Q9,Q9,Q10 VMOV.S16 D10,D11 @@ -214,12 +214,12 @@ LOOP_6K7K: VST1.S16 {D4, D5, D6}, [r1]! VST1.S16 D7[0], [r1]! VST1.S16 D7[1], [r1]! - + Filt_6k_7k_end: - ADD r13, r13, #240 - LDMFD r13!, {r0 - r12, r15} - + ADD r13, r13, #240 + LDMFD r13!, {r0 - r12, r15} + Lable1: .word fir_6k_7k @ENDFUNC diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Norm_Corr_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Norm_Corr_neon.s index 60e9ade..4263cd4 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Norm_Corr_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Norm_Corr_neon.s @@ -33,7 +33,7 @@ .section .text - .global Norm_corr_asm + .global Norm_corr_asm .extern Convolve_asm .extern Isqrt_n @****************************** @@ -47,17 +47,17 @@ .equ T_MIN , 212 .equ T_MAX , 216 .equ CORR_NORM , 220 - + Norm_corr_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r13, r13, #voSTACK - + ADD r8, r13, #20 @get the excf[L_SUBFR] LDR r4, [r13, #T_MIN] @get t_min RSB r11, r4, #0 @k = -t_min - ADD r5, r0, r11, LSL #1 @get the &exc[k] - + ADD r5, r0, r11, LSL #1 @get the &exc[k] + @transfer Convolve function STMFD sp!, {r0 - r3} MOV r0, r5 @@ -68,7 +68,7 @@ Norm_corr_asm: @ r8 --- excf[] - MOV r14, r1 @copy xn[] address + MOV r14, r1 @copy xn[] address MOV r7, #1 VLD1.S16 {Q0, Q1}, [r14]! VLD1.S16 {Q2, Q3}, [r14]! @@ -95,34 +95,34 @@ Norm_corr_asm: VQADD.S32 D20, D20, D21 VMOV.S32 r9, D20[0] VMOV.S32 r10, D20[1] - QADD r6, r9, r10 + QADD r6, r9, r10 QADD r6, r6, r6 QADD r9, r6, r7 @L_tmp = (L_tmp << 1) + 1; CLZ r7, r9 SUB r6, r7, #1 @exp = norm_l(L_tmp) RSB r7, r6, #32 @exp = 32 - exp - MOV r6, r7, ASR #1 + MOV r6, r7, ASR #1 RSB r7, r6, #0 @scale = -(exp >> 1) - + @loop for every possible period @for(t = t_min@ t <= t_max@ t++) @r7 --- scale r4 --- t_min r8 --- excf[] -LOOPFOR: +LOOPFOR: ADD r14, r13, #20 @copy of excf[] MOV r12, r1 @copy of xn[] MOV r8, #0x8000 VLD1.S16 {Q0, Q1}, [r14]! @ load 16 excf[] - VLD1.S16 {Q2, Q3}, [r14]! @ load 16 excf[] + VLD1.S16 {Q2, Q3}, [r14]! @ load 16 excf[] VLD1.S16 {Q4, Q5}, [r12]! @ load 16 x[] VLD1.S16 {Q6, Q7}, [r12]! @ load 16 x[] VMULL.S16 Q10, D0, D0 @L_tmp1 += excf[] * excf[] - VMULL.S16 Q11, D0, D8 @L_tmp += x[] * excf[] + VMULL.S16 Q11, D0, D8 @L_tmp += x[] * excf[] VMLAL.S16 Q10, D1, D1 VMLAL.S16 Q11, D1, D9 VMLAL.S16 Q10, D2, D2 - VMLAL.S16 Q11, D2, D10 + VMLAL.S16 Q11, D2, D10 VMLAL.S16 Q10, D3, D3 VMLAL.S16 Q11, D3, D11 VMLAL.S16 Q10, D4, D4 @@ -143,7 +143,7 @@ LOOPFOR: VMLAL.S16 Q10, D1, D1 VMLAL.S16 Q11, D1, D9 VMLAL.S16 Q10, D2, D2 - VMLAL.S16 Q11, D2, D10 + VMLAL.S16 Q11, D2, D10 VMLAL.S16 Q10, D3, D3 VMLAL.S16 Q11, D3, D11 VMLAL.S16 Q10, D4, D4 @@ -162,19 +162,19 @@ LOOPFOR: VPADD.S32 D22, D22, D22 @D22[0] --- L_tmp << 1 VMOV.S32 r6, D20[0] - VMOV.S32 r5, D22[0] + VMOV.S32 r5, D22[0] @r5 --- L_tmp, r6 --- L_tmp1 MOV r10, #1 ADD r5, r10, r5, LSL #1 @L_tmp = (L_tmp << 1) + 1 ADD r6, r10, r6, LSL #1 @L_tmp1 = (L_tmp1 << 1) + 1 - - CLZ r10, r5 + + CLZ r10, r5 CMP r5, #0 RSBLT r11, r5, #0 CLZLT r10, r11 SUB r10, r10, #1 @exp = norm_l(L_tmp) - + MOV r5, r5, LSL r10 @L_tmp = (L_tmp << exp) RSB r10, r10, #30 @exp_corr = 30 - exp MOV r11, r5, ASR #16 @corr = extract_h(L_tmp) @@ -190,7 +190,7 @@ LOOPFOR: @Isqrt_n(&L_tmp, &exp_norm) MOV r14, r0 - MOV r12, r1 + MOV r12, r1 STMFD sp!, {r0 - r4, r7 - r12, r14} ADD r1, sp, #4 @@ -208,7 +208,7 @@ LOOPFOR: MOV r6, r6, ASR #16 @norm = extract_h(L_tmp) MUL r12, r6, r11 ADD r12, r12, r12 @L_tmp = vo_L_mult(corr, norm) - + ADD r6, r10, r5 ADD r6, r6, r7 @exp_corr + exp_norm + scale @@ -227,8 +227,8 @@ LOOPFOR: CMP r4, r6 BEQ Norm_corr_asm_end - - ADD r4, r4, #1 @ t_min ++ + + ADD r4, r4, #1 @ t_min ++ RSB r5, r4, #0 @ k MOV r6, #63 @ i = 63 @@ -255,16 +255,16 @@ LOOPK: MUL r14, r11, r8 LDR r6, [r13, #T_MAX] @ get t_max MOV r8, r14, ASR #15 - STRH r8, [r10] + STRH r8, [r10] CMP r4, r6 BLE LOOPFOR -Norm_corr_asm_end: - - ADD r13, r13, #voSTACK +Norm_corr_asm_end: + + ADD r13, r13, #voSTACK LDMFD r13!, {r4 - r12, r15} - + .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Syn_filt_32_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Syn_filt_32_neon.s index 1e65efa..e786dde 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Syn_filt_32_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/Syn_filt_32_neon.s @@ -33,12 +33,12 @@ @ sig_lo[] --- r5 @ lg --- r6 - .section .text + .section .text .global Syn_filt_32_asm Syn_filt_32_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} LDR r4, [r13, #40] @ get sig_hi[] address LDR r5, [r13, #44] @ get sig_lo[] address @@ -49,8 +49,8 @@ Syn_filt_32_asm: SUB r10, r4, #32 @ sig_hi[-16] address SUB r11, r5, #32 @ sig_lo[-16] address - VLD1.S16 {D0, D1, D2, D3}, [r0]! @a[1] ~ a[16] - + VLD1.S16 {D0, D1, D2, D3}, [r0]! @a[1] ~ a[16] + MOV r8, #0 @ i = 0 VLD1.S16 {D4, D5, D6, D7}, [r10]! @ sig_hi[-16] ~ sig_hi[-1] @@ -58,9 +58,9 @@ Syn_filt_32_asm: VREV64.16 D1, D1 VLD1.S16 {D8, D9, D10, D11}, [r11]! @ sig_lo[-16] ~ sig_lo[-1] VREV64.16 D2, D2 - VREV64.16 D3, D3 + VREV64.16 D3, D3 VDUP.S32 Q15, r8 - + SYN_LOOP: LDRSH r6, [r2], #2 @exc[i] @@ -73,12 +73,12 @@ SYN_LOOP: VEXT.8 D9, D9, D10, #2 VEXT.8 D10, D10, D11, #2 - + VPADD.S32 D28, D20, D21 MUL r12, r6, r3 @exc[i] * a0 VPADD.S32 D29, D28, D28 VDUP.S32 Q10, D29[0] @result1 - + VMULL.S16 Q11, D4, D3 VMLAL.S16 Q11, D5, D2 VSUB.S32 Q10, Q15, Q10 @@ -101,7 +101,7 @@ SYN_LOOP: VSHR.S32 Q10, Q10, #11 @result1 >>= 11 VSHL.S32 Q11, Q11, #1 @result2 <<= 1 - VDUP.S32 Q12, r14 + VDUP.S32 Q12, r14 VADD.S32 Q12, Q12, Q10 @L_tmp = L_tmp - (result1 >>= 11) - (result2 <<= 1) VSUB.S32 Q12, Q12, Q11 @@ -122,12 +122,12 @@ SYN_LOOP: STRH r12, [r5], #2 @stroe sig_lo[i] CMP r8, #64 - BLT SYN_LOOP - + BLT SYN_LOOP + Syn_filt_32_end: - - LDMFD r13!, {r4 - r12, r15} + + LDMFD r13!, {r4 - r12, r15} @ENDFUNC .END - + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/convolve_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/convolve_neon.s index 189e33b..8efa9fb 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/convolve_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/convolve_neon.s @@ -20,22 +20,22 @@ @* Word16 y[], /* (o) : output vector */ @* Word16 L /* (i) : vector size */ @*) -@ +@ @ r0 --- x[] @ r1 --- h[] @ r2 --- y[] @ r3 --- L - .section .text - .global Convolve_asm + .section .text + .global Convolve_asm Convolve_asm: - STMFD r13!, {r4 - r12, r14} - MOV r3, #0 + STMFD r13!, {r4 - r12, r14} + MOV r3, #0 MOV r11, #0x8000 - -LOOP: + +LOOP: @MOV r8, #0 @ s = 0 ADD r4, r1, r3, LSL #1 @ tmpH address ADD r5, r3, #1 @ i = n + 1 @@ -43,21 +43,21 @@ LOOP: LDRSH r9, [r6], #2 @ *tmpX++ LDRSH r10, [r4] @ *tmpH-- SUB r5, r5, #1 - VMOV.S32 Q10, #0 - MUL r8, r9, r10 + VMOV.S32 Q10, #0 + MUL r8, r9, r10 -LOOP1: +LOOP1: CMP r5, #0 BLE L1 SUB r4, r4, #8 MOV r9, r4 - VLD1.S16 D0, [r6]! + VLD1.S16 D0, [r6]! VLD1.S16 D1, [r9]! VREV64.16 D1, D1 - SUBS r5, r5, #4 - VMLAL.S16 Q10, D0, D1 - B LOOP1 -L1: + SUBS r5, r5, #4 + VMLAL.S16 Q10, D0, D1 + B LOOP1 +L1: VADD.S32 D20, D20, D21 VPADD.S32 D20, D20, D20 VMOV.S32 r5, D20[0] @@ -73,25 +73,25 @@ L1: ADD r5, r3, #1 MOV r6, r0 LDRSH r9, [r6], #2 @ *tmpX++ - LDRSH r10, [r4], #-2 + LDRSH r10, [r4], #-2 LDRSH r12, [r6], #2 LDRSH r14, [r4] MUL r8, r9, r10 SUB r5, r5, #2 MLA r8, r12, r14, r8 - + VMOV.S32 Q10, #0 LOOP2: CMP r5, #0 BLE L2 SUB r4, r4, #8 MOV r9, r4 - VLD1.S16 D0, [r6]! + VLD1.S16 D0, [r6]! VLD1.S16 D1, [r9]! SUBS r5, r5, #4 VREV64.16 D1, D1 - VMLAL.S16 Q10, D0, D1 + VMLAL.S16 Q10, D0, D1 B LOOP2 L2: VADD.S32 D20, D20, D21 @@ -100,7 +100,7 @@ L2: ADD r8, r8, r5 ADD r8, r11, r8, LSL #1 MOV r8, r8, LSR #16 @extract_h(s) - ADD r3, r3, #1 + ADD r3, r3, #1 STRH r8, [r2], #2 @y[n] @@ -115,7 +115,7 @@ L2: MUL r8, r9, r10 LDRSH r9, [r6], #2 LDRSH r10, [r4] - MLA r8, r12, r14, r8 + MLA r8, r12, r14, r8 SUB r5, r5, #3 MLA r8, r9, r10, r8 @@ -125,12 +125,12 @@ LOOP3: BLE L3 SUB r4, r4, #8 MOV r9, r4 - VLD1.S16 D0, [r6]! + VLD1.S16 D0, [r6]! VLD1.S16 D1, [r9]! VREV64.16 D1, D1 SUBS r5, r5, #4 - VMLAL.S16 Q10, D0, D1 - B LOOP3 + VMLAL.S16 Q10, D0, D1 + B LOOP3 L3: VADD.S32 D20, D20, D21 @@ -146,18 +146,18 @@ L3: ADD r4, r1, r5, LSL #1 @ tmpH address MOV r6, r0 VMOV.S32 Q10, #0 -LOOP4: +LOOP4: CMP r5, #0 BLE L4 SUB r4, r4, #8 MOV r9, r4 - VLD1.S16 D0, [r6]! + VLD1.S16 D0, [r6]! VLD1.S16 D1, [r9]! VREV64.16 D1, D1 - SUBS r5, r5, #4 - VMLAL.S16 Q10, D0, D1 - B LOOP4 -L4: + SUBS r5, r5, #4 + VMLAL.S16 Q10, D0, D1 + B LOOP4 +L4: VADD.S32 D20, D20, D21 VPADD.S32 D20, D20, D20 VMOV.S32 r5, D20[0] @@ -165,14 +165,14 @@ L4: MOV r5, r5, LSR #16 @extract_h(s) ADD r3, r3, #1 STRH r5, [r2], #2 @y[n] - + CMP r3, #64 BLT LOOP - -Convolve_asm_end: - + +Convolve_asm_end: + LDMFD r13!, {r4 - r12, r15} - + @ENDFUNC .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/cor_h_vec_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/cor_h_vec_neon.s index c314a88..8904289 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/cor_h_vec_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/cor_h_vec_neon.s @@ -31,7 +31,7 @@ @r5 ---- cor_1[] @r6 ---- cor_2[] - .section .text + .section .text .global cor_h_vec_012_asm cor_h_vec_012_asm: @@ -52,12 +52,12 @@ LOOPi: RSB r11, r2, #62 @j=62-pos LOOPj1: - LDRSH r12, [r10], #2 + LDRSH r12, [r10], #2 LDRSH r8, [r9], #2 LDRSH r14, [r9] SUBS r11, r11, #1 MLA r5, r12, r8, r5 - MLA r6, r12, r14, r6 + MLA r6, r12, r14, r6 BGE LOOPj1 LDRSH r12, [r10], #2 @*p1++ @@ -65,7 +65,7 @@ LOOPj1: MLA r5, r12, r14, r5 MOV r14, #0x8000 MOV r5, r5, LSL #2 @L_sum1 = (L_sum1 << 2) - ADD r10, r6, r14 + ADD r10, r6, r14 ADD r9, r5, r14 MOV r5, r9, ASR #16 MOV r6, r10, ASR #16 @@ -77,7 +77,7 @@ LOOPj1: MUL r14, r6, r11 MOV r5, r12, ASR #15 MOV r6, r14, ASR #15 - LDR r9, [r13, #44] + LDR r9, [r13, #44] LDR r12, [r13, #48] LDRSH r10, [r7], #2 @*p0++ LDRSH r11, [r8] @*p3++ @@ -89,7 +89,7 @@ LOOPj1: STRH r6, [r12] ADD r2, r2, #4 - + MOV r5, #0 @L_sum1 = 0 MOV r6, #0 @L_sum2 = 0 ADD r9, r1, r2, LSL #1 @p2 = &vec[pos] @@ -98,12 +98,12 @@ LOOPj1: ADD r4, r4, #1 @i++ LOOPj2: - LDRSH r12, [r10], #2 + LDRSH r12, [r10], #2 LDRSH r8, [r9], #2 LDRSH r14, [r9] SUBS r11, r11, #1 MLA r5, r12, r8, r5 - MLA r6, r12, r14, r6 + MLA r6, r12, r14, r6 BGE LOOPj2 LDRSH r12, [r10], #2 @*p1++ @@ -111,7 +111,7 @@ LOOPj2: MLA r5, r12, r14, r5 MOV r14, #0x8000 MOV r5, r5, LSL #2 @L_sum1 = (L_sum1 << 2) - ADD r10, r6, r14 + ADD r10, r6, r14 ADD r9, r5, r14 MOV r5, r9, ASR #16 @@ -124,7 +124,7 @@ LOOPj2: MUL r14, r6, r11 MOV r5, r12, ASR #15 MOV r6, r14, ASR #15 - LDR r9, [r13, #44] + LDR r9, [r13, #44] LDR r12, [r13, #48] LDRSH r10, [r7], #2 @*p0++ LDRSH r11, [r8] @*p3++ @@ -137,15 +137,15 @@ LOOPj2: ADD r4, r4, #1 @i+1 ADD r2, r2, #4 @pos += STEP CMP r4, #16 - + BLT LOOPi - + the_end: LDMFD r13!, {r4 - r12, r15} - - .END - - - + + .END + + + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/pred_lt4_1_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/pred_lt4_1_neon.s index dffb750..6b782cb 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/pred_lt4_1_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/pred_lt4_1_neon.s @@ -25,14 +25,14 @@ @ r1 --- T0 @ r2 --- frac @ r3 --- L_subfr - - .section .text + + .section .text .global pred_lt4_asm .extern inter4_2 pred_lt4_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r4, r0, r1, LSL #1 @ x = exc - T0 RSB r2, r2, #0 @ frac = - frac SUB r4, r4, #30 @ x -= L_INTERPOL2 - 1 @@ -47,8 +47,8 @@ pred_lt4_asm: VLD1.S16 {Q0, Q1}, [r11]! VLD1.S16 {Q2, Q3}, [r11]! - - MOV r6, #0x8000 + + MOV r6, #0x8000 VLD1.S16 {Q4, Q5}, [r4]! @load 16 x[] VLD1.S16 {Q6, Q7}, [r4]! @load 16 x[] @@ -58,14 +58,14 @@ LOOP: VQDMLAL.S16 Q15, D9, D1 VQDMLAL.S16 Q15, D10, D2 VQDMLAL.S16 Q15, D11, D3 - + VQDMLAL.S16 Q15, D12, D4 VQDMLAL.S16 Q15, D13, D5 VQDMLAL.S16 Q15, D14, D6 VQDMLAL.S16 Q15, D15, D7 - LDRSH r12, [r4], #2 - + LDRSH r12, [r4], #2 + VEXT.S16 D8, D8, D9, #1 VEXT.S16 D9, D9, D10, #1 VEXT.S16 D10, D10, D11, #1 @@ -73,26 +73,26 @@ LOOP: VDUP.S16 D24, r12 VEXT.S16 D12, D12, D13, #1 VEXT.S16 D13, D13, D14, #1 - + VQADD.S32 D30, D30, D31 - MOV r11, #0x8000 + MOV r11, #0x8000 VPADD.S32 D30, D30, D30 ADD r8, r8, #1 VMOV.S32 r12, D30[0] - VEXT.S16 D14, D14, D15, #1 + VEXT.S16 D14, D14, D15, #1 QADD r1, r12, r12 @ L_sum = (L_sum << 2) VEXT.S16 D15, D15, D24, #1 - QADD r5, r1, r6 + QADD r5, r1, r6 MOV r1, r5, ASR #16 CMP r8, r3 STRH r1, [r0], #2 @ exc[j] = (L_sum + 0x8000) >> 16 BLT LOOP - + pred_lt4_end: - - LDMFD r13!, {r4 - r12, r15} - + + LDMFD r13!, {r4 - r12, r15} + Lable1: .word inter4_2 @ENDFUNC diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/residu_asm_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/residu_asm_neon.s index b9e6b23..394fa83 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/residu_asm_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/residu_asm_neon.s @@ -26,17 +26,17 @@ @lg RN r3 .section .text - .global Residu_opt + .global Residu_opt Residu_opt: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r7, r3, #4 @i = lg - 4 - - VLD1.S16 {D0, D1, D2, D3}, [r0]! @get all a[] + + VLD1.S16 {D0, D1, D2, D3}, [r0]! @get all a[] VLD1.S16 {D4}, [r0]! VMOV.S32 Q8, #0x8000 - + LOOP1: ADD r9, r1, r7, LSL #1 @copy the address ADD r10, r2, r7, LSL #1 @@ -45,7 +45,7 @@ LOOP1: VQDMULL.S16 Q10, D5, D0[0] @finish the first L_mult SUB r8, r9, #2 @get the x[i-1] address - VLD1.S16 D5, [r8]! + VLD1.S16 D5, [r8]! VQDMLAL.S16 Q10, D5, D0[1] SUB r8, r9, #4 @load the x[i-2] address @@ -53,36 +53,36 @@ LOOP1: VQDMLAL.S16 Q10, D5, D0[2] SUB r8, r9, #6 @load the x[i-3] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D0[3] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D0[3] SUB r8, r9, #8 @load the x[i-4] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D1[0] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D1[0] SUB r8, r9, #10 @load the x[i-5] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D1[1] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D1[1] SUB r8, r9, #12 @load the x[i-6] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D1[2] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D1[2] SUB r8, r9, #14 @load the x[i-7] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D1[3] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D1[3] SUB r8, r9, #16 @load the x[i-8] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D2[0] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D2[0] SUB r8, r9, #18 @load the x[i-9] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D2[1] - + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D2[1] + SUB r8, r9, #20 @load the x[i-10] address - VLD1.S16 D5, [r8]! - VQDMLAL.S16 Q10, D5, D2[2] + VLD1.S16 D5, [r8]! + VQDMLAL.S16 Q10, D5, D2[2] SUB r8, r9, #22 @load the x[i-11] address VLD1.S16 D5, [r8]! @@ -117,10 +117,10 @@ LOOP1: BGE LOOP1 -Residu_asm_end: - +Residu_asm_end: + LDMFD r13!, {r4 - r12, r15} - + @ENDFUNC .END diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/scale_sig_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/scale_sig_neon.s index bbd354d..e45daac 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/scale_sig_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/scale_sig_neon.s @@ -13,7 +13,7 @@ @ ** See the License for the specific language governing permissions and @ ** limitations under the License. @ */ -@ +@ @**********************************************************************/ @void Scale_sig( @ Word16 x[], /* (i/o) : signal to scale */ @@ -25,16 +25,16 @@ @ lg --- r1 @ exp --- r2 - .section .text + .section .text .global Scale_sig_opt Scale_sig_opt: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} MOV r4, #4 - VMOV.S32 Q15, #0x8000 - VDUP.S32 Q14, r2 - MOV r5, r0 @ copy x[] address + VMOV.S32 Q15, #0x8000 + VDUP.S32 Q14, r2 + MOV r5, r0 @ copy x[] address CMP r1, #64 MOVEQ r4, #1 BEQ LOOP @@ -48,7 +48,7 @@ Scale_sig_opt: BEQ LOOP1 LOOP1: - VLD1.S16 {Q0, Q1}, [r5]! @load 16 Word16 x[] + VLD1.S16 {Q0, Q1}, [r5]! @load 16 Word16 x[] VSHLL.S16 Q10, D0, #16 VSHLL.S16 Q11, D1, #16 VSHLL.S16 Q12, D2, #16 @@ -63,7 +63,7 @@ LOOP1: VADDHN.S32 D19, Q13, Q15 VST1.S16 {Q8, Q9}, [r0]! @store 16 Word16 x[] -LOOP: +LOOP: VLD1.S16 {Q0, Q1}, [r5]! @load 16 Word16 x[] VLD1.S16 {Q2, Q3}, [r5]! @load 16 Word16 x[] VLD1.S16 {Q4, Q5}, [r5]! @load 16 Word16 x[] @@ -72,7 +72,7 @@ LOOP: VSHLL.S16 Q8, D0, #16 VSHLL.S16 Q9, D1, #16 VSHLL.S16 Q10, D2, #16 - VSHLL.S16 Q11, D3, #16 + VSHLL.S16 Q11, D3, #16 VSHL.S32 Q8, Q8, Q14 VSHL.S32 Q9, Q9, Q14 VSHL.S32 Q10, Q10, Q14 @@ -83,7 +83,7 @@ LOOP: VADDHN.S32 D19, Q11, Q15 VST1.S16 {Q8, Q9}, [r0]! @store 16 Word16 x[] - + VSHLL.S16 Q12, D4, #16 VSHLL.S16 Q13, D5, #16 VSHLL.S16 Q10, D6, #16 @@ -112,7 +112,7 @@ LOOP: VADDHN.S32 D19, Q13, Q15 VST1.S16 {Q8, Q9}, [r0]! @store 16 Word16 x[] - VSHLL.S16 Q10, D12, #16 + VSHLL.S16 Q10, D12, #16 VSHLL.S16 Q11, D13, #16 VSHLL.S16 Q12, D14, #16 VSHLL.S16 Q13, D15, #16 @@ -123,16 +123,16 @@ LOOP: VADDHN.S32 D16, Q10, Q15 VADDHN.S32 D17, Q11, Q15 VADDHN.S32 D18, Q12, Q15 - VADDHN.S32 D19, Q13, Q15 - VST1.S16 {Q8, Q9}, [r0]! @store 16 Word16 x[] + VADDHN.S32 D19, Q13, Q15 + VST1.S16 {Q8, Q9}, [r0]! @store 16 Word16 x[] SUBS r4, r4, #1 - BGT LOOP - - + BGT LOOP + + Scale_sig_asm_end: - LDMFD r13!, {r4 - r12, r15} + LDMFD r13!, {r4 - r12, r15} @ENDFUNC .END - + diff --git a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/syn_filt_neon.s b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/syn_filt_neon.s index db4559c..5731bdb 100644 --- a/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/syn_filt_neon.s +++ b/media/libstagefright/codecs/amrwbenc/src/asm/ARMV7/syn_filt_neon.s @@ -27,21 +27,21 @@ @ mem[] --- r3 @ m --- 16 lg --- 80 update --- 1 - .section .text + .section .text .global Syn_filt_asm Syn_filt_asm: - STMFD r13!, {r4 - r12, r14} + STMFD r13!, {r4 - r12, r14} SUB r13, r13, #700 @ y_buf[L_FRAME16k + M16k] - + MOV r4, r3 @ copy mem[] address MOV r5, r13 @ copy yy = y_buf address @ for(i = 0@ i < m@ i++) @{ @ *yy++ = mem[i]@ - @} + @} VLD1.S16 {D0, D1, D2, D3}, [r4]! @load 16 mems VST1.S16 {D0, D1, D2, D3}, [r5]! @store 16 mem[] to *yy @@ -54,7 +54,7 @@ Syn_filt_asm: VREV64.16 D0, D0 VREV64.16 D1, D1 VREV64.16 D2, D2 - VREV64.16 D3, D3 + VREV64.16 D3, D3 MOV r8, #0 @ loop times MOV r10, r13 @ temp = y_buf ADD r4, r13, #32 @ yy[i] address @@ -68,7 +68,7 @@ SYN_LOOP: ADD r10, r4, r8, LSL #1 @ y[i], yy[i] address VDUP.S32 Q10, r12 - VMULL.S16 Q5, D3, D4 + VMULL.S16 Q5, D3, D4 VMLAL.S16 Q5, D2, D5 VMLAL.S16 Q5, D1, D6 VMLAL.S16 Q5, D0, D7 @@ -82,25 +82,25 @@ SYN_LOOP: VDUP.S32 Q7, D10[0] VSUB.S32 Q9, Q10, Q7 - VQRSHRN.S32 D20, Q9, #12 + VQRSHRN.S32 D20, Q9, #12 VMOV.S16 r9, D20[0] VEXT.8 D7, D7, D20, #2 CMP r8, #80 STRH r9, [r10] @ yy[i] - STRH r9, [r2], #2 @ y[i] - + STRH r9, [r2], #2 @ y[i] + BLT SYN_LOOP - + @ update mem[] ADD r5, r13, #160 @ yy[64] address VLD1.S16 {D0, D1, D2, D3}, [r5]! - VST1.S16 {D0, D1, D2, D3}, [r3]! + VST1.S16 {D0, D1, D2, D3}, [r3]! Syn_filt_asm_end: - - ADD r13, r13, #700 - LDMFD r13!, {r4 - r12, r15} + + ADD r13, r13, #700 + LDMFD r13!, {r4 - r12, r15} @ENDFUNC .END - + diff --git a/media/libstagefright/codecs/amrwbenc/src/autocorr.c b/media/libstagefright/codecs/amrwbenc/src/autocorr.c index 9baa937..8c477ca 100644 --- a/media/libstagefright/codecs/amrwbenc/src/autocorr.c +++ b/media/libstagefright/codecs/amrwbenc/src/autocorr.c @@ -70,19 +70,19 @@ void Autocorr( p1 = y; for (i = 0; i < L_WINDOW; i+=4) { - *p1 = vo_shr_r(*p1, shift); + *p1 = vo_shr_r(*p1, shift); p1++; - *p1 = vo_shr_r(*p1, shift); + *p1 = vo_shr_r(*p1, shift); p1++; *p1 = vo_shr_r(*p1, shift); p1++; - *p1 = vo_shr_r(*p1, shift); + *p1 = vo_shr_r(*p1, shift); p1++; } } /* Compute and normalize r[0] */ - L_sum = 1; + L_sum = 1; for (i = 0; i < L_WINDOW; i+=4) { L_sum += vo_L_mult(y[i], y[i]); diff --git a/media/libstagefright/codecs/amrwbenc/src/az_isp.c b/media/libstagefright/codecs/amrwbenc/src/az_isp.c index 9333d19..43db27a 100644 --- a/media/libstagefright/codecs/amrwbenc/src/az_isp.c +++ b/media/libstagefright/codecs/amrwbenc/src/az_isp.c @@ -90,9 +90,9 @@ void Az_isp( f1[i] = vo_round(t0 + (a[M - i] << 15)); /* =(a[i]+a[M-i])/2 */ f2[i] = vo_round(t0 - (a[M - i] << 15)); /* =(a[i]-a[M-i])/2 */ } - f1[NC] = a[NC]; + f1[NC] = a[NC]; for (i = 2; i < NC; i++) /* Divide by (1-z^-2) */ - f2[i] = add1(f2[i], f2[i - 2]); + f2[i] = add1(f2[i], f2[i - 2]); /*---------------------------------------------------------------------* * Find the ISPs (roots of F1(z) and F2(z) ) using the * @@ -107,17 +107,17 @@ void Az_isp( *---------------------------------------------------------------------*/ nf = 0; /* number of found frequencies */ ip = 0; /* indicator for f1 or f2 */ - coef = f1; - order = NC; - xlow = vogrid[0]; + coef = f1; + order = NC; + xlow = vogrid[0]; ylow = Chebps2(xlow, coef, order); j = 0; while ((nf < M - 1) && (j < GRID_POINTS)) { j ++; - xhigh = xlow; - yhigh = ylow; - xlow = vogrid[j]; + xhigh = xlow; + yhigh = ylow; + xlow = vogrid[j]; ylow = Chebps2(xlow, coef, order); if ((ylow * yhigh) <= (Word32) 0) { @@ -128,12 +128,12 @@ void Az_isp( ymid = Chebps2(xmid, coef, order); if ((ylow * ymid) <= (Word32) 0) { - yhigh = ymid; - xhigh = xmid; + yhigh = ymid; + xhigh = xmid; } else { - ylow = ymid; - xlow = xmid; + ylow = ymid; + xlow = xmid; } } /*-------------------------------------------------------------* @@ -144,10 +144,10 @@ void Az_isp( y = yhigh - ylow; if (y == 0) { - xint = xlow; + xint = xlow; } else { - sign = y; + sign = y; y = abs_s(y); exp = norm_s(y); y = y << exp; @@ -161,19 +161,19 @@ void Az_isp( t0 = (t0 >> 10); /* result in Q15 */ xint = vo_sub(xlow, vo_extract_l(t0)); /* xint = xlow - ylow*y */ } - isp[nf] = xint; - xlow = xint; - nf++; + isp[nf] = xint; + xlow = xint; + nf++; if (ip == 0) { - ip = 1; - coef = f2; - order = NC - 1; + ip = 1; + coef = f2; + order = NC - 1; } else { - ip = 0; - coef = f1; - order = NC; + ip = 0; + coef = f1; + order = NC; } ylow = Chebps2(xlow, coef, order); } @@ -183,7 +183,7 @@ void Az_isp( { for (i = 0; i < M; i++) { - isp[i] = old_isp[i]; + isp[i] = old_isp[i]; } } else { @@ -243,9 +243,9 @@ static __inline Word16 Chebps2(Word16 x, Word16 f[], Word32 n) b0_l = (t0 & 0xffff) >> 1; b2_l = b1_l; /* b2 = b1; */ - b2_h = b1_h; + b2_h = b1_h; b1_l = b0_l; /* b1 = b0; */ - b1_h = b0_h; + b1_h = b0_h; } t0 = ((b1_h * x)<<1) + (((b1_l * x)>>15)<<1); diff --git a/media/libstagefright/codecs/amrwbenc/src/bits.c b/media/libstagefright/codecs/amrwbenc/src/bits.c index 61cac3d..e78dc1f 100644 --- a/media/libstagefright/codecs/amrwbenc/src/bits.c +++ b/media/libstagefright/codecs/amrwbenc/src/bits.c @@ -34,8 +34,8 @@ int PackBits(Word16 prms[], /* i: analysis parameters */ Word16 coding_mode, /* i: coding bit-stream ratio mode */ - Word16 mode, /* i: coding bit-stream ratio mode*/ - Coder_State *st /*i/o: coder global parameters struct */ + Word16 mode, /* i: coding bit-stream ratio mode*/ + Coder_State *st /*i/o: coder global parameters struct */ ) { Word16 i, frame_type; @@ -46,7 +46,7 @@ int PackBits(Word16 prms[], /* i: analysis parameters */ unsigned short* dataOut = st->outputStream; if (coding_mode == MRDTX) - { + { st->sid_update_counter--; if (st->prev_ft == TX_SPEECH) @@ -92,7 +92,7 @@ int PackBits(Word16 prms[], /* i: analysis parameters */ } else { if (bitstreamformat == 1) /* ITU file format */ - { + { *(dataOut) = 0x6b21; if(frame_type != TX_NO_DATA && frame_type != TX_SID_FIRST) { @@ -100,17 +100,17 @@ int PackBits(Word16 prms[], /* i: analysis parameters */ for (i = 0; i < nb_of_bits[coding_mode]; i++) { if(prms[i] == BIT_0){ - *(dataOut + 2 + i) = BIT_0_ITU; + *(dataOut + 2 + i) = BIT_0_ITU; } else{ *(dataOut + 2 + i) = BIT_1_ITU; } } - return (2 + nb_of_bits[coding_mode])<<1; + return (2 + nb_of_bits[coding_mode])<<1; } else { *(dataOut + 1) = 0; - return 2<<1; + return 2<<1; } } else /* MIME/storage file format */ { @@ -191,7 +191,7 @@ void Parm_serial( ) { Word16 i, bit; - *prms += no_of_bits; + *prms += no_of_bits; for (i = 0; i < no_of_bits; i++) { bit = (Word16) (value & 0x0001); /* get lsb */ @@ -199,9 +199,9 @@ void Parm_serial( *--(*prms) = BIT_0; else *--(*prms) = BIT_1; - value >>= 1; + value >>= 1; } - *prms += no_of_bits; + *prms += no_of_bits; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/c2t64fx.c b/media/libstagefright/codecs/amrwbenc/src/c2t64fx.c index 80990d9..18698e2 100644 --- a/media/libstagefright/codecs/amrwbenc/src/c2t64fx.c +++ b/media/libstagefright/codecs/amrwbenc/src/c2t64fx.c @@ -79,7 +79,7 @@ void ACELP_2t64_fx( #endif Isqrt_n(&s, &exp); - s = L_shl(s, add1(exp, 5)); + s = L_shl(s, add1(exp, 5)); k_cn = vo_round(s); /* set k_dn = 32..512 (ener_dn = 2^30..2^22) */ @@ -107,22 +107,22 @@ void ACELP_2t64_fx( s = (k_cn* (*p0++))+(k_dn * (*p1++)); *p2++ = s >> 7; s = (k_cn* (*p0++))+(k_dn * (*p1++)); - *p2++ = s >> 7; + *p2++ = s >> 7; } /* set sign according to dn2[] = k_cn*cn[] + k_dn*dn[] */ for (i = 0; i < L_SUBFR; i ++) { - val = dn[i]; - ps = dn2[i]; + val = dn[i]; + ps = dn2[i]; if (ps >= 0) { sign[i] = 32767; /* sign = +1 (Q12) */ - vec[i] = -32768; + vec[i] = -32768; } else { sign[i] = -32768; /* sign = -1 (Q12) */ - vec[i] = 32767; + vec[i] = 32767; dn[i] = -val; } } @@ -130,13 +130,13 @@ void ACELP_2t64_fx( * Compute h_inv[i]. * *------------------------------------------------------------*/ /* impulse response buffer for fast computation */ - h = h_buf + L_SUBFR; - h_inv = h + (L_SUBFR<<1); + h = h_buf + L_SUBFR; + h_inv = h + (L_SUBFR<<1); for (i = 0; i < L_SUBFR; i++) { - h[i] = H[i]; - h_inv[i] = vo_negate(h[i]); + h[i] = H[i]; + h_inv[i] = vo_negate(h[i]); } /*------------------------------------------------------------* @@ -144,46 +144,46 @@ void ACELP_2t64_fx( * Result is multiplied by 0.5 * *------------------------------------------------------------*/ /* Init pointers to last position of rrixix[] */ - p0 = &rrixix[0][NB_POS - 1]; - p1 = &rrixix[1][NB_POS - 1]; + p0 = &rrixix[0][NB_POS - 1]; + p1 = &rrixix[1][NB_POS - 1]; - ptr_h1 = h; + ptr_h1 = h; cor = 0x00010000L; /* for rounding */ for (i = 0; i < NB_POS; i++) { cor += ((*ptr_h1) * (*ptr_h1) << 1); ptr_h1++; - *p1-- = (extract_h(cor) >> 1); + *p1-- = (extract_h(cor) >> 1); cor += ((*ptr_h1) * (*ptr_h1) << 1); ptr_h1++; - *p0-- = (extract_h(cor) >> 1); + *p0-- = (extract_h(cor) >> 1); } /*------------------------------------------------------------* * Compute rrixiy[][] needed for the codebook search. * *------------------------------------------------------------*/ - pos = MSIZE - 1; - pos2 = MSIZE - 2; - ptr_hf = h + 1; + pos = MSIZE - 1; + pos2 = MSIZE - 2; + ptr_hf = h + 1; for (k = 0; k < NB_POS; k++) { - p1 = &rrixiy[pos]; - p0 = &rrixiy[pos2]; + p1 = &rrixiy[pos]; + p0 = &rrixiy[pos2]; cor = 0x00008000L; /* for rounding */ - ptr_h1 = h; - ptr_h2 = ptr_hf; + ptr_h1 = h; + ptr_h2 = ptr_hf; for (i = (k + 1); i < NB_POS; i++) { cor += ((*ptr_h1) * (*ptr_h2))<<1; ptr_h1++; ptr_h2++; - *p1 = extract_h(cor); + *p1 = extract_h(cor); cor += ((*ptr_h1) * (*ptr_h2))<<1; ptr_h1++; ptr_h2++; - *p0 = extract_h(cor); + *p0 = extract_h(cor); p1 -= (NB_POS + 1); p0 -= (NB_POS + 1); @@ -191,7 +191,7 @@ void ACELP_2t64_fx( cor += ((*ptr_h1) * (*ptr_h2))<<1; ptr_h1++; ptr_h2++; - *p1 = extract_h(cor); + *p1 = extract_h(cor); pos -= NB_POS; pos2--; @@ -201,17 +201,17 @@ void ACELP_2t64_fx( /*------------------------------------------------------------* * Modification of rrixiy[][] to take signs into account. * *------------------------------------------------------------*/ - p0 = rrixiy; + p0 = rrixiy; for (i = 0; i < L_SUBFR; i += STEP) { - psign = sign; + psign = sign; if (psign[i] < 0) { - psign = vec; + psign = vec; } for (j = 1; j < L_SUBFR; j += STEP) { - *p0 = vo_mult(*p0, psign[j]); + *p0 = vo_mult(*p0, psign[j]); p0++; } } @@ -220,20 +220,20 @@ void ACELP_2t64_fx( * ~@~~~~~~~~~~~~~~ * * 32 pos x 32 pos = 1024 tests (all combinaisons is tested) * *-------------------------------------------------------------------*/ - p0 = rrixix[0]; - p1 = rrixix[1]; - p2 = rrixiy; + p0 = rrixix[0]; + p1 = rrixix[1]; + p2 = rrixiy; - psk = -1; - alpk = 1; - ix = 0; - iy = 1; + psk = -1; + alpk = 1; + ix = 0; + iy = 1; for (i0 = 0; i0 < L_SUBFR; i0 += STEP) { - ps1 = dn[i0]; - alp1 = (*p0++); - pos = -1; + ps1 = dn[i0]; + alp1 = (*p0++); + pos = -1; for (i1 = 1; i1 < L_SUBFR; i1 += STEP) { ps2 = add1(ps1, dn[i1]); @@ -242,16 +242,16 @@ void ACELP_2t64_fx( s = vo_L_mult(alpk, sq) - ((psk * alp2)<<1); if (s > 0) { - psk = sq; - alpk = alp2; - pos = i1; + psk = sq; + alpk = alp2; + pos = i1; } } p1 -= NB_POS; if (pos >= 0) { - ix = i0; - iy = pos; + ix = i0; + iy = pos; } } /*-------------------------------------------------------------------* @@ -260,7 +260,7 @@ void ACELP_2t64_fx( for (i = 0; i < L_SUBFR; i++) { - code[i] = 0; + code[i] = 0; } i0 = (ix >> 1); /* pos of pulse 1 (0..31) */ @@ -268,24 +268,24 @@ void ACELP_2t64_fx( if (sign[ix] > 0) { code[ix] = 512; /* codeword in Q9 format */ - p0 = h - ix; + p0 = h - ix; } else { - code[ix] = -512; - i0 += NB_POS; - p0 = h_inv - ix; + code[ix] = -512; + i0 += NB_POS; + p0 = h_inv - ix; } if (sign[iy] > 0) { - code[iy] = 512; - p1 = h - iy; + code[iy] = 512; + p1 = h - iy; } else { - code[iy] = -512; - i1 += NB_POS; - p1 = h_inv - iy; + code[iy] = -512; + i1 += NB_POS; + p1 = h_inv - iy; } - *index = add1((i0 << 6), i1); + *index = add1((i0 << 6), i1); for (i = 0; i < L_SUBFR; i++) { y[i] = vo_shr_r(add1((*p0++), (*p1++)), 3); diff --git a/media/libstagefright/codecs/amrwbenc/src/c4t64fx.c b/media/libstagefright/codecs/amrwbenc/src/c4t64fx.c index 17f3d47..1ecc11f 100644 --- a/media/libstagefright/codecs/amrwbenc/src/c4t64fx.c +++ b/media/libstagefright/codecs/amrwbenc/src/c4t64fx.c @@ -151,58 +151,58 @@ void ACELP_4t64_fx( case 20: /* 20 bits, 4 pulses, 4 tracks */ nbiter = 4; /* 4x16x16=1024 loop */ alp = 8192; /* alp = 2.0 (Q12) */ - nb_pulse = 4; - nbpos[0] = 4; - nbpos[1] = 8; + nb_pulse = 4; + nbpos[0] = 4; + nbpos[1] = 8; break; case 36: /* 36 bits, 8 pulses, 4 tracks */ nbiter = 4; /* 4x20x16=1280 loop */ alp = 4096; /* alp = 1.0 (Q12) */ - nb_pulse = 8; - nbpos[0] = 4; - nbpos[1] = 8; - nbpos[2] = 8; + nb_pulse = 8; + nbpos[0] = 4; + nbpos[1] = 8; + nbpos[2] = 8; break; case 44: /* 44 bits, 10 pulses, 4 tracks */ nbiter = 4; /* 4x26x16=1664 loop */ alp = 4096; /* alp = 1.0 (Q12) */ - nb_pulse = 10; - nbpos[0] = 4; - nbpos[1] = 6; - nbpos[2] = 8; - nbpos[3] = 8; + nb_pulse = 10; + nbpos[0] = 4; + nbpos[1] = 6; + nbpos[2] = 8; + nbpos[3] = 8; break; case 52: /* 52 bits, 12 pulses, 4 tracks */ nbiter = 4; /* 4x26x16=1664 loop */ alp = 4096; /* alp = 1.0 (Q12) */ - nb_pulse = 12; - nbpos[0] = 4; - nbpos[1] = 6; - nbpos[2] = 8; - nbpos[3] = 8; + nb_pulse = 12; + nbpos[0] = 4; + nbpos[1] = 6; + nbpos[2] = 8; + nbpos[3] = 8; break; case 64: /* 64 bits, 16 pulses, 4 tracks */ nbiter = 3; /* 3x36x16=1728 loop */ alp = 3277; /* alp = 0.8 (Q12) */ - nb_pulse = 16; - nbpos[0] = 4; - nbpos[1] = 4; - nbpos[2] = 6; - nbpos[3] = 6; - nbpos[4] = 8; - nbpos[5] = 8; + nb_pulse = 16; + nbpos[0] = 4; + nbpos[1] = 4; + nbpos[2] = 6; + nbpos[3] = 6; + nbpos[4] = 8; + nbpos[5] = 8; break; case 72: /* 72 bits, 18 pulses, 4 tracks */ nbiter = 3; /* 3x35x16=1680 loop */ alp = 3072; /* alp = 0.75 (Q12) */ - nb_pulse = 18; - nbpos[0] = 2; - nbpos[1] = 3; - nbpos[2] = 4; - nbpos[3] = 5; - nbpos[4] = 6; - nbpos[5] = 7; - nbpos[6] = 8; + nb_pulse = 18; + nbpos[0] = 2; + nbpos[1] = 3; + nbpos[2] = 4; + nbpos[3] = 5; + nbpos[4] = 6; + nbpos[5] = 7; + nbpos[6] = 8; break; case 88: /* 88 bits, 24 pulses, 4 tracks */ if(ser_size > 462) @@ -211,17 +211,17 @@ void ACELP_4t64_fx( nbiter = 2; /* 2x53x16=1696 loop */ alp = 2048; /* alp = 0.5 (Q12) */ - nb_pulse = 24; - nbpos[0] = 2; - nbpos[1] = 2; - nbpos[2] = 3; - nbpos[3] = 4; - nbpos[4] = 5; - nbpos[5] = 6; - nbpos[6] = 7; - nbpos[7] = 8; - nbpos[8] = 8; - nbpos[9] = 8; + nb_pulse = 24; + nbpos[0] = 2; + nbpos[1] = 2; + nbpos[2] = 3; + nbpos[3] = 4; + nbpos[4] = 5; + nbpos[5] = 6; + nbpos[6] = 7; + nbpos[7] = 8; + nbpos[8] = 8; + nbpos[9] = 8; break; default: nbiter = 0; @@ -231,7 +231,7 @@ void ACELP_4t64_fx( for (i = 0; i < nb_pulse; i++) { - codvec[i] = i; + codvec[i] = i; } /*----------------------------------------------------------------* @@ -246,7 +246,7 @@ void ACELP_4t64_fx( #endif Isqrt_n(&s, &exp); - s = L_shl(s, (exp + 5)); + s = L_shl(s, (exp + 5)); k_cn = extract_h(L_add(s, 0x8000)); /* set k_dn = 32..512 (ener_dn = 2^30..2^22) */ @@ -274,22 +274,22 @@ void ACELP_4t64_fx( s = (k_cn* (*p0++))+(k_dn * (*p1++)); *p2++ = s >> 7; s = (k_cn* (*p0++))+(k_dn * (*p1++)); - *p2++ = s >> 7; + *p2++ = s >> 7; } /* set sign according to dn2[] = k_cn*cn[] + k_dn*dn[] */ for(i = 0; i < L_SUBFR; i++) { - val = dn[i]; - ps = dn2[i]; + val = dn[i]; + ps = dn2[i]; if (ps >= 0) { sign[i] = 32767; /* sign = +1 (Q12) */ - vec[i] = -32768; + vec[i] = -32768; } else { sign[i] = -32768; /* sign = -1 (Q12) */ - vec[i] = 32767; + vec[i] = 32767; dn[i] = -val; dn2[i] = -ps; } @@ -302,19 +302,19 @@ void ACELP_4t64_fx( { for (k = 0; k < NB_MAX; k++) { - ps = -1; + ps = -1; for (j = i; j < L_SUBFR; j += STEP) { if(dn2[j] > ps) { - ps = dn2[j]; - pos = j; + ps = dn2[j]; + pos = j; } } dn2[pos] = (k - NB_MAX); /* dn2 < 0 when position is selected */ if (k == 0) { - pos_max[i] = pos; + pos_max[i] = pos; } } } @@ -335,22 +335,22 @@ void ACELP_4t64_fx( /* impulse response buffer for fast computation */ - h = h_buf; - h_inv = h_buf + (2 * L_SUBFR); + h = h_buf; + h_inv = h_buf + (2 * L_SUBFR); L_tmp = 0; for (i = 0; i < L_SUBFR; i++) { - *h++ = 0; - *h_inv++ = 0; + *h++ = 0; + *h_inv++ = 0; L_tmp += (H[i] * H[i]) << 1; } /* scale h[] down (/2) when energy of h[] is high with many pulses used */ val = extract_h(L_tmp); - h_shift = 0; + h_shift = 0; if ((nb_pulse >= 12) && (val > 1024)) { - h_shift = 1; + h_shift = 1; } p0 = H; p1 = h; @@ -358,14 +358,14 @@ void ACELP_4t64_fx( for (i = 0; i < L_SUBFR/4; i++) { - *p1 = *p0++ >> h_shift; - *p2++ = -(*p1++); - *p1 = *p0++ >> h_shift; - *p2++ = -(*p1++); - *p1 = *p0++ >> h_shift; - *p2++ = -(*p1++); - *p1 = *p0++ >> h_shift; - *p2++ = -(*p1++); + *p1 = *p0++ >> h_shift; + *p2++ = -(*p1++); + *p1 = *p0++ >> h_shift; + *p2++ = -(*p1++); + *p1 = *p0++ >> h_shift; + *p2++ = -(*p1++); + *p1 = *p0++ >> h_shift; + *p2++ = -(*p1++); } /*------------------------------------------------------------* @@ -377,27 +377,27 @@ void ACELP_4t64_fx( /* storage order --> i3i3, i2i2, i1i1, i0i0 */ /* Init pointers to last position of rrixix[] */ - p0 = &rrixix[0][NB_POS - 1]; - p1 = &rrixix[1][NB_POS - 1]; - p2 = &rrixix[2][NB_POS - 1]; - p3 = &rrixix[3][NB_POS - 1]; + p0 = &rrixix[0][NB_POS - 1]; + p1 = &rrixix[1][NB_POS - 1]; + p2 = &rrixix[2][NB_POS - 1]; + p3 = &rrixix[3][NB_POS - 1]; - ptr_h1 = h; + ptr_h1 = h; cor = 0x00008000L; /* for rounding */ for (i = 0; i < NB_POS; i++) { cor += vo_L_mult((*ptr_h1), (*ptr_h1)); ptr_h1++; - *p3-- = extract_h(cor); + *p3-- = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h1)); ptr_h1++; - *p2-- = extract_h(cor); + *p2-- = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h1)); ptr_h1++; - *p1-- = extract_h(cor); + *p1-- = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h1)); ptr_h1++; - *p0-- = extract_h(cor); + *p0-- = extract_h(cor); } /*------------------------------------------------------------* @@ -409,38 +409,38 @@ void ACELP_4t64_fx( /* storage order --> i2i3, i1i2, i0i1, i3i0 */ - pos = MSIZE - 1; - ptr_hf = h + 1; + pos = MSIZE - 1; + ptr_hf = h + 1; for (k = 0; k < NB_POS; k++) { - p3 = &rrixiy[2][pos]; - p2 = &rrixiy[1][pos]; - p1 = &rrixiy[0][pos]; - p0 = &rrixiy[3][pos - NB_POS]; + p3 = &rrixiy[2][pos]; + p2 = &rrixiy[1][pos]; + p1 = &rrixiy[0][pos]; + p0 = &rrixiy[3][pos - NB_POS]; cor = 0x00008000L; /* for rounding */ - ptr_h1 = h; - ptr_h2 = ptr_hf; + ptr_h1 = h; + ptr_h2 = ptr_hf; for (i = k + 1; i < NB_POS; i++) { cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p3 = extract_h(cor); + *p3 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p2 = extract_h(cor); + *p2 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p1 = extract_h(cor); + *p1 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p0 = extract_h(cor); + *p0 = extract_h(cor); p3 -= (NB_POS + 1); p2 -= (NB_POS + 1); @@ -450,15 +450,15 @@ void ACELP_4t64_fx( cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p3 = extract_h(cor); + *p3 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p2 = extract_h(cor); + *p2 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p1 = extract_h(cor); + *p1 = extract_h(cor); pos -= NB_POS; ptr_hf += STEP; @@ -466,38 +466,38 @@ void ACELP_4t64_fx( /* storage order --> i3i0, i2i3, i1i2, i0i1 */ - pos = MSIZE - 1; - ptr_hf = h + 3; + pos = MSIZE - 1; + ptr_hf = h + 3; for (k = 0; k < NB_POS; k++) { - p3 = &rrixiy[3][pos]; - p2 = &rrixiy[2][pos - 1]; - p1 = &rrixiy[1][pos - 1]; - p0 = &rrixiy[0][pos - 1]; + p3 = &rrixiy[3][pos]; + p2 = &rrixiy[2][pos - 1]; + p1 = &rrixiy[1][pos - 1]; + p0 = &rrixiy[0][pos - 1]; cor = 0x00008000L; /* for rounding */ - ptr_h1 = h; - ptr_h2 = ptr_hf; + ptr_h1 = h; + ptr_h2 = ptr_hf; for (i = k + 1; i < NB_POS; i++) { cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p3 = extract_h(cor); + *p3 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p2 = extract_h(cor); + *p2 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p1 = extract_h(cor); + *p1 = extract_h(cor); cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p0 = extract_h(cor); + *p0 = extract_h(cor); p3 -= (NB_POS + 1); p2 -= (NB_POS + 1); @@ -507,7 +507,7 @@ void ACELP_4t64_fx( cor += vo_L_mult((*ptr_h1), (*ptr_h2)); ptr_h1++; ptr_h2++; - *p3 = extract_h(cor); + *p3 = extract_h(cor); pos--; ptr_hf += STEP; @@ -517,22 +517,22 @@ void ACELP_4t64_fx( * Modification of rrixiy[][] to take signs into account. * *------------------------------------------------------------*/ - p0 = &rrixiy[0][0]; + p0 = &rrixiy[0][0]; for (k = 0; k < NB_TRACK; k++) { j_temp = (k + 1)&0x03; for (i = k; i < L_SUBFR; i += STEP) { - psign = sign; + psign = sign; if (psign[i] < 0) { - psign = vec; + psign = vec; } j = j_temp; for (; j < L_SUBFR; j += STEP) { - *p0 = vo_mult(*p0, psign[j]); + *p0 = vo_mult(*p0, psign[j]); p0++; } } @@ -542,8 +542,8 @@ void ACELP_4t64_fx( * Deep first search * *-------------------------------------------------------------------*/ - psk = -1; - alpk = 1; + psk = -1; + alpk = 1; for (k = 0; k < nbiter; k++) { @@ -553,12 +553,12 @@ void ACELP_4t64_fx( if(nbbits == 20) { - pos = 0; - ps = 0; - alp = 0; + pos = 0; + ps = 0; + alp = 0; for (i = 0; i < L_SUBFR; i++) { - vec[i] = 0; + vec[i] = 0; } } else if ((nbbits == 36) || (nbbits == 44)) { @@ -591,18 +591,18 @@ void ACELP_4t64_fx( if(nbbits == 44) { - ipos[8] = 0; - ipos[9] = 1; + ipos[8] = 0; + ipos[9] = 1; } } else { /* first stage: fix 4 pulses */ pos = 4; - ix = ind[0] = pos_max[ipos[0]]; - iy = ind[1] = pos_max[ipos[1]]; - i = ind[2] = pos_max[ipos[2]]; - j = ind[3] = pos_max[ipos[3]]; + ix = ind[0] = pos_max[ipos[0]]; + iy = ind[1] = pos_max[ipos[1]]; + i = ind[2] = pos_max[ipos[2]]; + j = ind[3] = pos_max[ipos[3]]; ps = add1(add1(add1(dn[ix], dn[iy]), dn[i]), dn[j]); if (sign[ix] < 0) @@ -636,8 +636,8 @@ void ACELP_4t64_fx( if(nbbits == 72) { - ipos[16] = 0; - ipos[17] = 1; + ipos[16] = 0; + ipos[17] = 1; } } @@ -668,8 +668,8 @@ void ACELP_4t64_fx( search_ixiy(nbpos[st], ipos[j], ipos[j + 1], &ps, &alp, &ix, &iy, dn, dn2, cor_x, cor_y, rrixiy); - ind[j] = ix; - ind[j + 1] = iy; + ind[j] = ix; + ind[j + 1] = iy; if (sign[ix] < 0) p0 = h_inv - ix; @@ -682,10 +682,10 @@ void ACELP_4t64_fx( for (i = 0; i < L_SUBFR; i+=4) { - vec[i] += add1((*p0++), (*p1++)); - vec[i+1] += add1((*p0++), (*p1++)); - vec[i+2] += add1((*p0++), (*p1++)); - vec[i+3] += add1((*p0++), (*p1++)); + vec[i] += add1((*p0++), (*p1++)); + vec[i+1] += add1((*p0++), (*p1++)); + vec[i+2] += add1((*p0++), (*p1++)); + vec[i+3] += add1((*p0++), (*p1++)); } } /* memorise the best codevector */ @@ -693,15 +693,15 @@ void ACELP_4t64_fx( s = vo_L_msu(vo_L_mult(alpk, ps), psk, alp); if (s > 0) { - psk = ps; - alpk = alp; + psk = ps; + alpk = alp; for (i = 0; i < nb_pulse; i++) { - codvec[i] = ind[i]; + codvec[i] = ind[i]; } for (i = 0; i < L_SUBFR; i++) { - y[i] = vec[i]; + y[i] = vec[i]; } } } @@ -710,11 +710,11 @@ void ACELP_4t64_fx( *-------------------------------------------------------------------*/ for (i = 0; i < NPMAXPT * NB_TRACK; i++) { - ind[i] = -1; + ind[i] = -1; } for (i = 0; i < L_SUBFR; i++) { - code[i] = 0; + code[i] = 0; y[i] = vo_shr_r(y[i], 3); /* Q12 to Q9 */ } val = (512 >> h_shift); /* codeword in Q9 format */ @@ -727,12 +727,12 @@ void ACELP_4t64_fx( if (j > 0) { - code[i] += val; - codvec[k] += 128; + code[i] += val; + codvec[k] += 128; } else { - code[i] -= val; - index += NB_POS; + code[i] -= val; + index += NB_POS; } i = (Word16)((vo_L_mult(track, NPMAXPT) >> 1)); @@ -741,10 +741,10 @@ void ACELP_4t64_fx( { i += 1; } - ind[i] = index; + ind[i] = index; } - k = 0; + k = 0; /* Build index of codevector */ if(nbbits == 20) { @@ -849,20 +849,20 @@ void cor_h_vec_30( p2 = &vec[pos]; for (j=pos;j < L_SUBFR; j++) { - L_sum1 += *p1 * *p2; + L_sum1 += *p1 * *p2; p2-=3; - L_sum2 += *p1++ * *p2; + L_sum2 += *p1++ * *p2; p2+=4; } p2-=3; - L_sum2 += *p1++ * *p2++; - L_sum2 += *p1++ * *p2++; - L_sum2 += *p1++ * *p2++; + L_sum2 += *p1++ * *p2++; + L_sum2 += *p1++ * *p2++; + L_sum2 += *p1++ * *p2++; L_sum1 = (L_sum1 << 2); L_sum2 = (L_sum2 << 2); - corr = vo_round(L_sum1); + corr = vo_round(L_sum1); *cor_x++ = vo_mult(corr, sign[pos]) + (*p0++); corr = vo_round(L_sum2); *cor_y++ = vo_mult(corr, sign[pos-3]) + (*p3++); @@ -873,20 +873,20 @@ void cor_h_vec_30( p2 = &vec[pos]; for (j=pos;j < L_SUBFR; j++) { - L_sum1 += *p1 * *p2; + L_sum1 += *p1 * *p2; p2-=3; - L_sum2 += *p1++ * *p2; + L_sum2 += *p1++ * *p2; p2+=4; } p2-=3; - L_sum2 += *p1++ * *p2++; - L_sum2 += *p1++ * *p2++; - L_sum2 += *p1++ * *p2++; + L_sum2 += *p1++ * *p2++; + L_sum2 += *p1++ * *p2++; + L_sum2 += *p1++ * *p2++; L_sum1 = (L_sum1 << 2); L_sum2 = (L_sum2 << 2); - corr = vo_round(L_sum1); + corr = vo_round(L_sum1); *cor_x++ = vo_mult(corr, sign[pos]) + (*p0++); corr = vo_round(L_sum2); *cor_y++ = vo_mult(corr, sign[pos-3]) + (*p3++); @@ -982,17 +982,17 @@ void search_ixiy( Word16 *p0, *p1, *p2; Word32 s, alp0, alp1, alp2; - p0 = cor_x; - p1 = cor_y; - p2 = rrixiy[track_x]; + p0 = cor_x; + p1 = cor_y; + p2 = rrixiy[track_x]; thres_ix = nb_pos_ix - NB_MAX; alp0 = L_deposit_h(*alp); alp0 = (alp0 + 0x00008000L); /* for rounding */ - sqk = -1; - alpk = 1; + sqk = -1; + alpk = 1; for (x = track_x; x < L_SUBFR; x += STEP) { @@ -1014,17 +1014,17 @@ void search_ixiy( if (s > 0) { - sqk = sq; - alpk = alp_16; - pos = y; + sqk = sq; + alpk = alp_16; + pos = y; } } p1 -= NB_POS; if (pos >= 0) { - *ix = x; - *iy = pos; + *ix = x; + *iy = pos; } } else { @@ -1032,8 +1032,8 @@ void search_ixiy( } } - *ps = add1(*ps, add1(dn[*ix], dn[*iy])); - *alp = alpk; + *ps = add1(*ps, add1(dn[*ix], dn[*iy])); + *alp = alpk; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/convolve.c b/media/libstagefright/codecs/amrwbenc/src/convolve.c index 4f7fd8a..acba532 100644 --- a/media/libstagefright/codecs/amrwbenc/src/convolve.c +++ b/media/libstagefright/codecs/amrwbenc/src/convolve.c @@ -49,7 +49,7 @@ void Convolve ( s += vo_mult32((*tmpX++), (*tmpH--)); i -= 4; } - y[n] = ((s<<1) + 0x8000)>>16; + y[n] = ((s<<1) + 0x8000)>>16; n++; tmpH = h+n; @@ -66,7 +66,7 @@ void Convolve ( s += vo_mult32((*tmpX++), (*tmpH--)); i -= 4; } - y[n] = ((s<<1) + 0x8000)>>16; + y[n] = ((s<<1) + 0x8000)>>16; n++; tmpH = h+n; @@ -84,7 +84,7 @@ void Convolve ( s += vo_mult32((*tmpX++), (*tmpH--)); i -= 4; } - y[n] = ((s<<1) + 0x8000)>>16; + y[n] = ((s<<1) + 0x8000)>>16; n++; s = 0; @@ -99,8 +99,8 @@ void Convolve ( s += vo_mult32((*tmpX++), (*tmpH--)); i -= 4; } - y[n] = ((s<<1) + 0x8000)>>16; - n++; + y[n] = ((s<<1) + 0x8000)>>16; + n++; } return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/cor_h_x.c b/media/libstagefright/codecs/amrwbenc/src/cor_h_x.c index b645fa3..d9245ed 100644 --- a/media/libstagefright/codecs/amrwbenc/src/cor_h_x.c +++ b/media/libstagefright/codecs/amrwbenc/src/cor_h_x.c @@ -18,7 +18,7 @@ * File: cor_h_x.c * * * * Description:Compute correlation between target "x[]" and "h[]" * -* Designed for codebook search (24 pulses, 4 tracks, * +* Designed for codebook search (24 pulses, 4 tracks, * * 4 pulses per track, 16 positions in each track) to * * avoid saturation. * * * @@ -44,8 +44,8 @@ void cor_h_x( Word32 *p3; Word32 L_max, L_max1, L_max2, L_max3; /* first keep the result on 32 bits and find absolute maximum */ - L_tot = 1; - L_max = 0; + L_tot = 1; + L_max = 0; L_max1 = 0; L_max2 = 0; L_max3 = 0; @@ -57,11 +57,11 @@ void cor_h_x( for (j = i; j < L_SUBFR; j++) L_tmp += vo_L_mult(*p1++, *p2++); - y32[i] = L_tmp; + y32[i] = L_tmp; L_tmp = (L_tmp > 0)? L_tmp:-L_tmp; if(L_tmp > L_max) { - L_max = L_tmp; + L_max = L_tmp; } L_tmp = 1L; @@ -70,11 +70,11 @@ void cor_h_x( for (j = i+1; j < L_SUBFR; j++) L_tmp += vo_L_mult(*p1++, *p2++); - y32[i+1] = L_tmp; + y32[i+1] = L_tmp; L_tmp = (L_tmp > 0)? L_tmp:-L_tmp; if(L_tmp > L_max1) { - L_max1 = L_tmp; + L_max1 = L_tmp; } L_tmp = 1; @@ -83,11 +83,11 @@ void cor_h_x( for (j = i+2; j < L_SUBFR; j++) L_tmp += vo_L_mult(*p1++, *p2++); - y32[i+2] = L_tmp; + y32[i+2] = L_tmp; L_tmp = (L_tmp > 0)? L_tmp:-L_tmp; if(L_tmp > L_max2) { - L_max2 = L_tmp; + L_max2 = L_tmp; } L_tmp = 1; @@ -96,11 +96,11 @@ void cor_h_x( for (j = i+3; j < L_SUBFR; j++) L_tmp += vo_L_mult(*p1++, *p2++); - y32[i+3] = L_tmp; + y32[i+3] = L_tmp; L_tmp = (L_tmp > 0)? L_tmp:-L_tmp; if(L_tmp > L_max3) { - L_max3 = L_tmp; + L_max3 = L_tmp; } } /* tot += 3*max / 8 */ diff --git a/media/libstagefright/codecs/amrwbenc/src/decim54.c b/media/libstagefright/codecs/amrwbenc/src/decim54.c index 7bc5576..3b88514 100644 --- a/media/libstagefright/codecs/amrwbenc/src/decim54.c +++ b/media/libstagefright/codecs/amrwbenc/src/decim54.c @@ -136,8 +136,8 @@ static void Down_samp( L_sum += vo_mult32((*x++),(*y++)); L_sum += vo_mult32((*x),(*y)); - L_sum = L_shl2(L_sum, 2); - sig_d[j] = extract_h(L_add(L_sum, 0x8000)); + L_sum = L_shl2(L_sum, 2); + sig_d[j] = extract_h(L_add(L_sum, 0x8000)); pos += FAC5; /* pos + 5/4 */ } return; diff --git a/media/libstagefright/codecs/amrwbenc/src/deemph.c b/media/libstagefright/codecs/amrwbenc/src/deemph.c index 4ee1449..0c49d6b 100644 --- a/media/libstagefright/codecs/amrwbenc/src/deemph.c +++ b/media/libstagefright/codecs/amrwbenc/src/deemph.c @@ -39,16 +39,16 @@ void Deemph( L_tmp = L_deposit_h(x[0]); L_tmp = L_mac(L_tmp, *mem, mu); - x[0] = vo_round(L_tmp); + x[0] = vo_round(L_tmp); for (i = 1; i < L; i++) { L_tmp = L_deposit_h(x[i]); L_tmp = L_mac(L_tmp, x[i - 1], mu); - x[i] = voround(L_tmp); + x[i] = voround(L_tmp); } - *mem = x[L - 1]; + *mem = x[L - 1]; return; } @@ -65,14 +65,14 @@ void Deemph2( Word32 L_tmp; L_tmp = x[0] << 15; L_tmp += ((*mem) * mu)<<1; - x[0] = (L_tmp + 0x8000)>>16; + x[0] = (L_tmp + 0x8000)>>16; for (i = 1; i < L; i++) { L_tmp = x[i] << 15; L_tmp += (x[i - 1] * mu)<<1; - x[i] = (L_tmp + 0x8000)>>16; + x[i] = (L_tmp + 0x8000)>>16; } - *mem = x[L - 1]; + *mem = x[L - 1]; return; } @@ -95,8 +95,8 @@ void Deemph_32( L_tmp += (x_lo[0] * 8)<<1; L_tmp = (L_tmp << 3); L_tmp += ((*mem) * fac)<<1; - L_tmp = (L_tmp << 1); - y[0] = (L_tmp + 0x8000)>>16; + L_tmp = (L_tmp << 1); + y[0] = (L_tmp + 0x8000)>>16; for (i = 1; i < L; i++) { @@ -104,11 +104,11 @@ void Deemph_32( L_tmp += (x_lo[i] * 8)<<1; L_tmp = (L_tmp << 3); L_tmp += (y[i - 1] * fac)<<1; - L_tmp = (L_tmp << 1); - y[i] = (L_tmp + 0x8000)>>16; + L_tmp = (L_tmp << 1); + y[i] = (L_tmp + 0x8000)>>16; } - *mem = y[L - 1]; + *mem = y[L - 1]; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/dtx.c b/media/libstagefright/codecs/amrwbenc/src/dtx.c index df53131..2cfaced 100644 --- a/media/libstagefright/codecs/amrwbenc/src/dtx.c +++ b/media/libstagefright/codecs/amrwbenc/src/dtx.c @@ -105,30 +105,30 @@ Word16 dtx_enc_reset(dtx_encState * st, Word16 isf_init[]) fprintf(stderr, "dtx_enc_reset: invalid parameter\n"); return -1; } - st->hist_ptr = 0; - st->log_en_index = 0; + st->hist_ptr = 0; + st->log_en_index = 0; /* Init isf_hist[] */ for (i = 0; i < DTX_HIST_SIZE; i++) { Copy(isf_init, &st->isf_hist[i * M], M); } - st->cng_seed = RANDOM_INITSEED; + st->cng_seed = RANDOM_INITSEED; /* Reset energy history */ Set_zero(st->log_en_hist, DTX_HIST_SIZE); - st->dtxHangoverCount = DTX_HANG_CONST; - st->decAnaElapsedCount = 32767; + st->dtxHangoverCount = DTX_HANG_CONST; + st->decAnaElapsedCount = 32767; for (i = 0; i < 28; i++) { - st->D[i] = 0; + st->D[i] = 0; } for (i = 0; i < DTX_HIST_SIZE - 1; i++) { - st->sumD[i] = 0; + st->sumD[i] = 0; } return 1; @@ -279,7 +279,7 @@ Word16 dtx_enc( for (i = 0; i < L_FRAME; i++) { tmp = mult(exc2[i], gain); /* Q0 * Q15 */ - exc2[i] = shl(tmp, exp); + exc2[i] = shl(tmp, exp); } return 0; @@ -301,7 +301,7 @@ Word16 dtx_buffer( Word16 log_en_e; Word16 log_en_m; - st->hist_ptr = add(st->hist_ptr, 1); + st->hist_ptr = add(st->hist_ptr, 1); if(st->hist_ptr == DTX_HIST_SIZE) { st->hist_ptr = 0; @@ -345,7 +345,7 @@ void tx_dtx_handler(dtx_encState * st, /* i/o : State struct */ { /* this state machine is in synch with the GSMEFR txDtx machine */ - st->decAnaElapsedCount = add(st->decAnaElapsedCount, 1); + st->decAnaElapsedCount = add(st->decAnaElapsedCount, 1); if (vad_flag != 0) { @@ -354,8 +354,8 @@ void tx_dtx_handler(dtx_encState * st, /* i/o : State struct */ { /* non-speech */ if (st->dtxHangoverCount == 0) { /* out of decoder analysis hangover */ - st->decAnaElapsedCount = 0; - *usedMode = MRDTX; + st->decAnaElapsedCount = 0; + *usedMode = MRDTX; } else { /* in possible analysis hangover */ st->dtxHangoverCount = sub(st->dtxHangoverCount, 1); @@ -394,8 +394,8 @@ static void aver_isf_history( { for (i = 0; i < M; i++) { - isf_tmp[k * M + i] = isf_old[indices[k] * M + i]; - isf_old[indices[k] * M + i] = isf_old[indices[2] * M + i]; + isf_tmp[k * M + i] = isf_old[indices[k] * M + i]; + isf_old[indices[k] * M + i] = isf_old[indices[2] * M + i]; } } } @@ -403,13 +403,13 @@ static void aver_isf_history( /* Perform the ISF averaging */ for (j = 0; j < M; j++) { - L_tmp = 0; + L_tmp = 0; for (i = 0; i < DTX_HIST_SIZE; i++) { L_tmp = L_add(L_tmp, L_deposit_l(isf_old[i * M + j])); } - isf_aver[j] = L_tmp; + isf_aver[j] = L_tmp; } /* Retrieve from isf_tmp[][] the ISF vectors saved prior to averaging */ @@ -441,12 +441,12 @@ static void find_frame_indices( /* sum sumD[0..DTX_HIST_SIZE-1]. sumD[DTX_HIST_SIZE] is */ /* not updated since it will be removed later. */ - tmp = DTX_HIST_SIZE_MIN_ONE; - j = -1; + tmp = DTX_HIST_SIZE_MIN_ONE; + j = -1; for (i = 0; i < DTX_HIST_SIZE_MIN_ONE; i++) { j = add(j, tmp); - st->sumD[i] = L_sub(st->sumD[i], st->D[j]); + st->sumD[i] = L_sub(st->sumD[i], st->D[j]); tmp = sub(tmp, 1); } @@ -458,86 +458,86 @@ static void find_frame_indices( for (i = DTX_HIST_SIZE_MIN_ONE; i > 0; i--) { - st->sumD[i] = st->sumD[i - 1]; + st->sumD[i] = st->sumD[i - 1]; } - st->sumD[0] = 0; + st->sumD[0] = 0; /* Remove the oldest frame from the distance matrix. */ /* Note that the distance matrix is replaced by a one- */ /* dimensional array to save static memory. */ - tmp = 0; + tmp = 0; for (i = 27; i >= 12; i = (Word16) (i - tmp)) { tmp = add(tmp, 1); for (j = tmp; j > 0; j--) { - st->D[i - j + 1] = st->D[i - j - tmp]; + st->D[i - j + 1] = st->D[i - j - tmp]; } } /* Compute the first column of the distance matrix D */ /* (squared Euclidean distances from isf1[] to isf_old_tx[][]). */ - ptr = st->hist_ptr; + ptr = st->hist_ptr; for (i = 1; i < DTX_HIST_SIZE; i++) { /* Compute the distance between the latest isf and the other isfs. */ ptr = sub(ptr, 1); if (ptr < 0) { - ptr = DTX_HIST_SIZE_MIN_ONE; + ptr = DTX_HIST_SIZE_MIN_ONE; } - L_tmp = 0; + L_tmp = 0; for (j = 0; j < M; j++) { tmp = sub(isf_old_tx[st->hist_ptr * M + j], isf_old_tx[ptr * M + j]); L_tmp = L_mac(L_tmp, tmp, tmp); } - st->D[i - 1] = L_tmp; + st->D[i - 1] = L_tmp; /* Update also the column sums. */ - st->sumD[0] = L_add(st->sumD[0], st->D[i - 1]); - st->sumD[i] = L_add(st->sumD[i], st->D[i - 1]); + st->sumD[0] = L_add(st->sumD[0], st->D[i - 1]); + st->sumD[i] = L_add(st->sumD[i], st->D[i - 1]); } /* Find the minimum and maximum distances */ - summax = st->sumD[0]; - summin = st->sumD[0]; - indices[0] = 0; - indices[2] = 0; + summax = st->sumD[0]; + summin = st->sumD[0]; + indices[0] = 0; + indices[2] = 0; for (i = 1; i < DTX_HIST_SIZE; i++) { if (L_sub(st->sumD[i], summax) > 0) { - indices[0] = i; - summax = st->sumD[i]; + indices[0] = i; + summax = st->sumD[i]; } if (L_sub(st->sumD[i], summin) < 0) { - indices[2] = i; - summin = st->sumD[i]; + indices[2] = i; + summin = st->sumD[i]; } } /* Find the second largest distance */ - summax2nd = -2147483647L; - indices[1] = -1; + summax2nd = -2147483647L; + indices[1] = -1; for (i = 0; i < DTX_HIST_SIZE; i++) { if ((L_sub(st->sumD[i], summax2nd) > 0) && (sub(i, indices[0]) != 0)) { - indices[1] = i; - summax2nd = st->sumD[i]; + indices[1] = i; + summax2nd = st->sumD[i]; } } for (i = 0; i < 3; i++) { - indices[i] = sub(st->hist_ptr, indices[i]); + indices[i] = sub(st->hist_ptr, indices[i]); if (indices[i] < 0) { - indices[i] = add(indices[i], DTX_HIST_SIZE); + indices[i] = add(indices[i], DTX_HIST_SIZE); } } @@ -549,7 +549,7 @@ static void find_frame_indices( L_tmp = L_mult(voround(summax), INV_MED_THRESH); if(L_tmp <= summin) { - indices[0] = -1; + indices[0] = -1; } /* If second largest distance/MED_THRESH is smaller than */ /* minimum distance then the median ISF vector replacement is */ @@ -558,7 +558,7 @@ static void find_frame_indices( L_tmp = L_mult(voround(summax2nd), INV_MED_THRESH); if(L_tmp <= summin) { - indices[1] = -1; + indices[1] = -1; } return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/g_pitch.c b/media/libstagefright/codecs/amrwbenc/src/g_pitch.c index f5112c5..d681f2e 100644 --- a/media/libstagefright/codecs/amrwbenc/src/g_pitch.c +++ b/media/libstagefright/codecs/amrwbenc/src/g_pitch.c @@ -48,10 +48,10 @@ Word16 G_pitch( /* (o) Q14 : Gain of pitch lag satura #endif - g_coeff[0] = yy; - g_coeff[1] = exp_yy; - g_coeff[2] = xy; - g_coeff[3] = exp_xy; + g_coeff[0] = yy; + g_coeff[1] = exp_yy; + g_coeff[2] = xy; + g_coeff[3] = exp_xy; /* If (xy < 0) gain = 0 */ if (xy < 0) @@ -65,12 +65,12 @@ Word16 G_pitch( /* (o) Q14 : Gain of pitch lag satura i = exp_xy; i -= exp_yy; - gain = shl(gain, i); + gain = shl(gain, i); /* if (gain > 1.2) gain = 1.2 in Q14 */ if(gain > 19661) { - gain = 19661; + gain = 19661; } return (gain); } diff --git a/media/libstagefright/codecs/amrwbenc/src/gpclip.c b/media/libstagefright/codecs/amrwbenc/src/gpclip.c index 24158e3..800b3f9 100644 --- a/media/libstagefright/codecs/amrwbenc/src/gpclip.c +++ b/media/libstagefright/codecs/amrwbenc/src/gpclip.c @@ -22,7 +22,7 @@ * case occurs * * a resonance on LPC filter(lp_disp < 60Hz) * * a good pitch prediction (lp_gp > 0.95) * -* * +* * ***************************************************************************/ #include "typedef.h" #include "basic_op.h" @@ -38,8 +38,8 @@ void Init_gp_clip( Word16 mem[] /* (o) : memory of gain of pitch clipping algorithm */ ) { - mem[0] = DIST_ISF_MAX; - mem[1] = GAIN_PIT_MIN; + mem[0] = DIST_ISF_MAX; + mem[1] = GAIN_PIT_MIN; } @@ -49,7 +49,7 @@ Word16 Gp_clip( { Word16 clip = 0; if ((mem[0] < DIST_ISF_THRES) && (mem[1] > GAIN_PIT_THRES)) - clip = 1; + clip = 1; return (clip); } @@ -70,7 +70,7 @@ void Gp_clip_test_isf( dist = vo_sub(isf[i], isf[i - 1]); if(dist < dist_min) { - dist_min = dist; + dist_min = dist; } } @@ -78,9 +78,9 @@ void Gp_clip_test_isf( if (dist > DIST_ISF_MAX) { - dist = DIST_ISF_MAX; + dist = DIST_ISF_MAX; } - mem[0] = dist; + mem[0] = dist; return; } @@ -100,9 +100,9 @@ void Gp_clip_test_gain_pit( if(gain < GAIN_PIT_MIN) { - gain = GAIN_PIT_MIN; + gain = GAIN_PIT_MIN; } - mem[1] = gain; + mem[1] = gain; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/hp400.c b/media/libstagefright/codecs/amrwbenc/src/hp400.c index fa66f1a..a6f9701 100644 --- a/media/libstagefright/codecs/amrwbenc/src/hp400.c +++ b/media/libstagefright/codecs/amrwbenc/src/hp400.c @@ -68,8 +68,8 @@ void HP400_12k8( y2_lo = *mem++; y1_hi = *mem++; y1_lo = *mem++; - x0 = *mem++; - x1 = *mem; + x0 = *mem++; + x1 = *mem; num = (Word32)lg; do { @@ -98,7 +98,7 @@ void HP400_12k8( *mem-- = y1_lo; *mem-- = y1_hi; *mem-- = y2_lo; - *mem = y2_hi; + *mem = y2_hi; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/hp50.c b/media/libstagefright/codecs/amrwbenc/src/hp50.c index 36dd1f1..c1c7b83 100644 --- a/media/libstagefright/codecs/amrwbenc/src/hp50.c +++ b/media/libstagefright/codecs/amrwbenc/src/hp50.c @@ -70,7 +70,7 @@ void HP50_12k8( y2_lo = *mem++; y1_hi = *mem++; y1_lo = *mem++; - x0 = *mem++; + x0 = *mem++; x1 = *mem; num = (Word32)lg; do @@ -98,7 +98,7 @@ void HP50_12k8( *mem-- = y1_lo; *mem-- = y1_hi; *mem-- = y2_lo; - *mem-- = y2_hi; + *mem-- = y2_hi; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/hp6k.c b/media/libstagefright/codecs/amrwbenc/src/hp6k.c index 578633a..8e66eb0 100644 --- a/media/libstagefright/codecs/amrwbenc/src/hp6k.c +++ b/media/libstagefright/codecs/amrwbenc/src/hp6k.c @@ -20,7 +20,7 @@ * Description:15th order band pass 6kHz to 7kHz FIR filter * * frequency: 4kHz 5kHz 5.5kHz 6kHz 6.5kHz 7kHz 7.5kHz 8kHz * * dB loss: -60dB -45dB -13dB -3dB 0dB -3dB -13dB -45dB * -* * +* * ************************************************************************/ #include "typedef.h" @@ -63,7 +63,7 @@ void Filt_6k_7k( for (i = lg - 1; i >= 0; i--) { x[i + L_FIR - 1] = signal[i] >> 2; /* gain of filter = 4 */ - } + } for (i = 0; i < lg; i++) { L_tmp = (x[i] + x[i+ 30]) * fir_6k_7k[0]; diff --git a/media/libstagefright/codecs/amrwbenc/src/hp_wsp.c b/media/libstagefright/codecs/amrwbenc/src/hp_wsp.c index 3510272..bc1ec49 100644 --- a/media/libstagefright/codecs/amrwbenc/src/hp_wsp.c +++ b/media/libstagefright/codecs/amrwbenc/src/hp_wsp.c @@ -88,22 +88,22 @@ void Hp_wsp( Word16 y3_hi, y3_lo, y2_hi, y2_lo, y1_hi, y1_lo; Word32 i, L_tmp; - y3_hi = mem[0]; - y3_lo = mem[1]; - y2_hi = mem[2]; - y2_lo = mem[3]; - y1_hi = mem[4]; - y1_lo = mem[5]; - x0 = mem[6]; - x1 = mem[7]; - x2 = mem[8]; + y3_hi = mem[0]; + y3_lo = mem[1]; + y2_hi = mem[2]; + y2_lo = mem[3]; + y1_hi = mem[4]; + y1_lo = mem[5]; + x0 = mem[6]; + x1 = mem[7]; + x2 = mem[8]; for (i = 0; i < lg; i++) { - x3 = x2; - x2 = x1; - x1 = x0; - x0 = wsp[i]; + x3 = x2; + x2 = x1; + x1 = x0; + x0 = wsp[i]; /* y[i] = b[0]*x[i] + b[1]*x[i-1] + b140[2]*x[i-2] + b[3]*x[i-3] */ /* + a[1]*y[i-1] + a[2] * y[i-2] + a[3]*y[i-3] */ @@ -122,25 +122,25 @@ void Hp_wsp( L_tmp = L_tmp << 2; - y3_hi = y2_hi; - y3_lo = y2_lo; - y2_hi = y1_hi; - y2_lo = y1_lo; + y3_hi = y2_hi; + y3_lo = y2_lo; + y2_hi = y1_hi; + y2_lo = y1_lo; y1_hi = L_tmp >> 16; y1_lo = (L_tmp & 0xffff) >>1; - hp_wsp[i] = (L_tmp + 0x4000)>>15; + hp_wsp[i] = (L_tmp + 0x4000)>>15; } - mem[0] = y3_hi; - mem[1] = y3_lo; - mem[2] = y2_hi; - mem[3] = y2_lo; - mem[4] = y1_hi; - mem[5] = y1_lo; - mem[6] = x0; - mem[7] = x1; - mem[8] = x2; + mem[0] = y3_hi; + mem[1] = y3_lo; + mem[2] = y2_hi; + mem[3] = y2_lo; + mem[4] = y1_hi; + mem[5] = y1_lo; + mem[6] = x0; + mem[7] = x1; + mem[8] = x2; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/int_lpc.c b/media/libstagefright/codecs/amrwbenc/src/int_lpc.c index 88285e8..1119bc7 100644 --- a/media/libstagefright/codecs/amrwbenc/src/int_lpc.c +++ b/media/libstagefright/codecs/amrwbenc/src/int_lpc.c @@ -36,21 +36,21 @@ void Int_isp( Word16 Az[] /* output: LP coefficients in 4 subframes */ ) { - Word32 i, k; + Word32 i, k; Word16 fac_old, fac_new; Word16 isp[M]; Word32 L_tmp; for (k = 0; k < 3; k++) { - fac_new = frac[k]; + fac_new = frac[k]; fac_old = (32767 - fac_new) + 1; /* 1.0 - fac_new */ for (i = 0; i < M; i++) { L_tmp = (isp_old[i] * fac_old)<<1; L_tmp += (isp_new[i] * fac_new)<<1; - isp[i] = (L_tmp + 0x8000)>>16; + isp[i] = (L_tmp + 0x8000)>>16; } Isp_Az(isp, Az, M, 0); Az += MP1; diff --git a/media/libstagefright/codecs/amrwbenc/src/isp_az.c b/media/libstagefright/codecs/amrwbenc/src/isp_az.c index c235c5d..30a8bbd 100644 --- a/media/libstagefright/codecs/amrwbenc/src/isp_az.c +++ b/media/libstagefright/codecs/amrwbenc/src/isp_az.c @@ -42,7 +42,7 @@ void Isp_Az( /* 1 : adaptive scaling enabled */ ) { - Word32 i, j; + Word32 i, j; Word16 hi, lo; Word32 f1[NC16k + 1], f2[NC16k]; Word16 nc; @@ -92,14 +92,14 @@ void Isp_Az( lo = (f1[i] & 0xffff)>>1; t0 = Mpy_32_16(hi, lo, isp[m - 1]); - f1[i] = vo_L_add(f1[i], t0); + f1[i] = vo_L_add(f1[i], t0); /* f2[i] *= (1.0 - isp[M-1]); */ hi = f2[i] >> 16; lo = (f2[i] & 0xffff)>>1; t0 = Mpy_32_16(hi, lo, isp[m - 1]); - f2[i] = vo_L_sub(f2[i], t0); + f2[i] = vo_L_sub(f2[i], t0); } /*-----------------------------------------------------* @@ -108,20 +108,20 @@ void Isp_Az( *-----------------------------------------------------*/ /* a[0] = 1.0; */ - a[0] = 4096; - tmax = 1; + a[0] = 4096; + tmax = 1; for (i = 1, j = m - 1; i < nc; i++, j--) { /* a[i] = 0.5*(f1[i] + f2[i]); */ t0 = vo_L_add(f1[i], f2[i]); /* f1[i] + f2[i] */ - tmax |= L_abs(t0); + tmax |= L_abs(t0); a[i] = (Word16)(vo_L_shr_r(t0, 12)); /* from Q23 to Q12 and * 0.5 */ /* a[j] = 0.5*(f1[i] - f2[i]); */ t0 = vo_L_sub(f1[i], f2[i]); /* f1[i] - f2[i] */ - tmax |= L_abs(t0); + tmax |= L_abs(t0); a[j] = (Word16)(vo_L_shr_r(t0, 12)); /* from Q23 to Q12 and * 0.5 */ } @@ -144,12 +144,12 @@ void Isp_Az( t0 = vo_L_sub(f1[i], f2[i]); /* f1[i] - f2[i] */ a[j] = (Word16)(vo_L_shr_r(t0, q_sug)); /* from Q23 to Q12 and * 0.5 */ } - a[0] = shr(a[0], q); + a[0] = shr(a[0], q); } else { - q_sug = 12; - q = 0; + q_sug = 12; + q = 0; } /* a[NC] = 0.5*f1[NC]*(1.0 + isp[M-1]); */ hi = f1[nc] >> 16; @@ -196,7 +196,7 @@ static void Get_isp_pol(Word16 * isp, Word32 * f, Word16 n) isp += 2; /* Advance isp pointer */ for (i = 2; i <= n; i++) { - *f = f[-2]; + *f = f[-2]; for (j = 1; j < i; j++, f--) { hi = f[-1]>>16; @@ -228,7 +228,7 @@ static void Get_isp_pol_16kHz(Word16 * isp, Word32 * f, Word16 n) for (i = 2; i <= n; i++) { - *f = f[-2]; + *f = f[-2]; for (j = 1; j < i; j++, f--) { VO_L_Extract(f[-1], &hi, &lo); diff --git a/media/libstagefright/codecs/amrwbenc/src/isp_isf.c b/media/libstagefright/codecs/amrwbenc/src/isp_isf.c index fbe80eb..b4ba408 100644 --- a/media/libstagefright/codecs/amrwbenc/src/isp_isf.c +++ b/media/libstagefright/codecs/amrwbenc/src/isp_isf.c @@ -51,9 +51,9 @@ void Isp_isf( /* acos(isp[i])= ind*128 + ( ( isp[i]-table[ind] ) * slope[ind] )/2048 */ L_tmp = vo_L_mult(vo_sub(isp[i], table[ind]), slope[ind]); isf[i] = vo_round((L_tmp << 4)); /* (isp[i]-table[ind])*slope[ind])>>11 */ - isf[i] = add1(isf[i], (ind << 7)); + isf[i] = add1(isf[i], (ind << 7)); } - isf[m - 1] = (isf[m - 1] >> 1); + isf[m - 1] = (isf[m - 1] >> 1); return; } @@ -69,7 +69,7 @@ void Isf_isp( for (i = 0; i < m - 1; i++) { - isp[i] = isf[i]; + isp[i] = isf[i]; } isp[m - 1] = (isf[m - 1] << 1); @@ -80,7 +80,7 @@ void Isf_isp( /* isp[i] = table[ind]+ ((table[ind+1]-table[ind])*offset) / 128 */ L_tmp = vo_L_mult(vo_sub(table[ind + 1], table[ind]), offset); - isp[i] = add1(table[ind], (Word16)((L_tmp >> 8))); + isp[i] = add1(table[ind], (Word16)((L_tmp >> 8))); } return; diff --git a/media/libstagefright/codecs/amrwbenc/src/levinson.c b/media/libstagefright/codecs/amrwbenc/src/levinson.c index a68845f..4b2f8ed 100644 --- a/media/libstagefright/codecs/amrwbenc/src/levinson.c +++ b/media/libstagefright/codecs/amrwbenc/src/levinson.c @@ -122,8 +122,8 @@ void Levinson( Word16 *old_A, *old_rc; /* Last A(z) for case of unstable filter */ - old_A = mem; - old_rc = mem + M; + old_A = mem; + old_rc = mem + M; /* K = A[1] = -R[1] / R[0] */ @@ -135,7 +135,7 @@ void Levinson( Kh = t0 >> 16; Kl = (t0 & 0xffff)>>1; - rc[0] = Kh; + rc[0] = Kh; t0 = (t0 >> 4); /* A[1] in Q27 */ Ah[1] = t0 >> 16; @@ -163,7 +163,7 @@ void Levinson( for (i = 2; i <= M; i++) { /* t0 = SUM ( R[j]*A[i-j] ,j=1,i-1 ) + R[i] */ - t0 = 0; + t0 = 0; for (j = 1; j < i; j++) t0 = vo_L_add(t0, Mpy_32(Rh[j], Rl[j], Ah[i - j], Al[i - j])); @@ -182,14 +182,14 @@ void Levinson( Kh = t2 >> 16; Kl = (t2 & 0xffff)>>1; - rc[i - 1] = Kh; + rc[i - 1] = Kh; /* Test for unstable filter. If unstable keep old A(z) */ if (abs_s(Kh) > 32750) { A[0] = 4096; /* Ai[0] not stored (always 1.0) */ for (j = 0; j < M; j++) { - A[j + 1] = old_A[j]; + A[j + 1] = old_A[j]; } rc[0] = old_rc[0]; /* only two rc coefficients are needed */ rc[1] = old_rc[1]; @@ -229,19 +229,19 @@ void Levinson( /* A[j] = An[j] */ for (j = 1; j <= i; j++) { - Ah[j] = Anh[j]; - Al[j] = Anl[j]; + Ah[j] = Anh[j]; + Al[j] = Anl[j]; } } /* Truncate A[i] in Q27 to Q12 with rounding */ - A[0] = 4096; + A[0] = 4096; for (i = 1; i <= M; i++) { t0 = (Ah[i] << 16) + (Al[i] << 1); - old_A[i - 1] = A[i] = vo_round((t0 << 1)); + old_A[i - 1] = A[i] = vo_round((t0 << 1)); } - old_rc[0] = rc[0]; - old_rc[1] = rc[1]; + old_rc[0] = rc[0]; + old_rc[1] = rc[1]; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/log2.c b/media/libstagefright/codecs/amrwbenc/src/log2.c index 646d6af..0f65541 100644 --- a/media/libstagefright/codecs/amrwbenc/src/log2.c +++ b/media/libstagefright/codecs/amrwbenc/src/log2.c @@ -64,11 +64,11 @@ void Log2_norm ( Word32 L_y; if (L_x <= (Word32) 0) { - *exponent = 0; - *fraction = 0; + *exponent = 0; + *fraction = 0; return; } - *exponent = (30 - exp); + *exponent = (30 - exp); L_x = (L_x >> 9); i = extract_h (L_x); /* Extract b25-b31 */ L_x = (L_x >> 1); @@ -78,7 +78,7 @@ void Log2_norm ( L_y = L_deposit_h (table[i]); /* table[i] << 16 */ tmp = vo_sub(table[i], table[i + 1]); /* table[i] - table[i+1] */ L_y = vo_L_msu (L_y, tmp, a); /* L_y -= tmp*a*2 */ - *fraction = extract_h (L_y); + *fraction = extract_h (L_y); return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/lp_dec2.c b/media/libstagefright/codecs/amrwbenc/src/lp_dec2.c index 29bd46b..1d5d076 100644 --- a/media/libstagefright/codecs/amrwbenc/src/lp_dec2.c +++ b/media/libstagefright/codecs/amrwbenc/src/lp_dec2.c @@ -42,25 +42,25 @@ void LP_Decim2( Word32 i, j; Word32 L_tmp; /* copy initial filter states into buffer */ - p_x = x_buf; + p_x = x_buf; for (i = 0; i < L_MEM; i++) { - *p_x++ = mem[i]; - mem[i] = x[l - L_MEM + i]; + *p_x++ = mem[i]; + mem[i] = x[l - L_MEM + i]; } for (i = 0; i < l; i++) { - *p_x++ = x[i]; + *p_x++ = x[i]; } for (i = 0, j = 0; i < l; i += 2, j++) { - p_x = &x_buf[i]; + p_x = &x_buf[i]; L_tmp = ((*p_x++) * h_fir[0]); L_tmp += ((*p_x++) * h_fir[1]); L_tmp += ((*p_x++) * h_fir[2]); L_tmp += ((*p_x++) * h_fir[3]); L_tmp += ((*p_x++) * h_fir[4]); - x[j] = (L_tmp + 0x4000)>>15; + x[j] = (L_tmp + 0x4000)>>15; } return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/math_op.c b/media/libstagefright/codecs/amrwbenc/src/math_op.c index 1a7b513..7affbb2 100644 --- a/media/libstagefright/codecs/amrwbenc/src/math_op.c +++ b/media/libstagefright/codecs/amrwbenc/src/math_op.c @@ -106,21 +106,21 @@ void Isqrt_n( if (*frac <= (Word32) 0) { - *exp = 0; - *frac = 0x7fffffffL; + *exp = 0; + *frac = 0x7fffffffL; return; } if((*exp & 1) == 1) /*If exponant odd -> shift right */ *frac = (*frac) >> 1; - *exp = negate((*exp - 1) >> 1); + *exp = negate((*exp - 1) >> 1); - *frac = (*frac >> 9); + *frac = (*frac >> 9); i = extract_h(*frac); /* Extract b25-b31 */ - *frac = (*frac >> 1); + *frac = (*frac >> 1); a = (Word16)(*frac); /* Extract b10-b24 */ - a = (Word16) (a & (Word16) 0x7fff); + a = (Word16) (a & (Word16) 0x7fff); i -= 16; *frac = L_deposit_h(table_isqrt[i]); /* table[i] << 16 */ tmp = vo_sub(table_isqrt[i], table_isqrt[i + 1]); /* table[i] - table[i+1]) */ @@ -167,7 +167,7 @@ Word32 Pow2( /* (o) Q0 : result (range: 0<= i = extract_h(L_x); /* Extract b10-b16 of fraction */ L_x =L_x >> 1; a = (Word16)(L_x); /* Extract b0-b9 of fraction */ - a = (Word16) (a & (Word16) 0x7fff); + a = (Word16) (a & (Word16) 0x7fff); L_x = L_deposit_h(table_pow2[i]); /* table[i] << 16 */ tmp = vo_sub(table_pow2[i], table_pow2[i + 1]); /* table[i] - table[i+1] */ diff --git a/media/libstagefright/codecs/amrwbenc/src/mem_align.c b/media/libstagefright/codecs/amrwbenc/src/mem_align.c index e58915a..a29baf3 100644 --- a/media/libstagefright/codecs/amrwbenc/src/mem_align.c +++ b/media/libstagefright/codecs/amrwbenc/src/mem_align.c @@ -27,7 +27,7 @@ /***************************************************************************** * * function name: mem_malloc -* description: malloc the alignments memory +* description: malloc the alignments memory * returns: the point of the memory * **********************************************************************************/ diff --git a/media/libstagefright/codecs/amrwbenc/src/p_med_ol.c b/media/libstagefright/codecs/amrwbenc/src/p_med_ol.c index 08f430f..b8174b9 100644 --- a/media/libstagefright/codecs/amrwbenc/src/p_med_ol.c +++ b/media/libstagefright/codecs/amrwbenc/src/p_med_ol.c @@ -18,7 +18,7 @@ * File: p_med_ol.c * * * * Description: Compute the open loop pitch lag * -* output: open loop pitch lag * +* output: open loop pitch lag * ************************************************************************/ #include "typedef.h" @@ -29,7 +29,7 @@ #include "p_med_ol.tab" Word16 Pitch_med_ol( - Word16 wsp[], /* i: signal used to compute the open loop pitch*/ + Word16 wsp[], /* i: signal used to compute the open loop pitch*/ /* wsp[-pit_max] to wsp[-1] should be known */ Coder_State *st, /* i/o: codec global structure */ Word16 L_frame /* i: length of frame to compute pitch */ @@ -52,8 +52,8 @@ Word16 Pitch_med_ol( ww = &corrweight[198]; we = &corrweight[98 + L_max - L_0]; - max = MIN_32; - Tm = 0; + max = MIN_32; + Tm = 0; for (i = L_max; i > L_min; i--) { /* Compute the correlation */ @@ -65,7 +65,7 @@ Word16 Pitch_med_ol( R0 += vo_L_mult((*p1++), (*p2++)); R0 += vo_L_mult((*p1++), (*p2++)); R0 += vo_L_mult((*p1++), (*p2++)); - R0 += vo_L_mult((*p1++), (*p2++)); + R0 += vo_L_mult((*p1++), (*p2++)); } /* Weighting of the correlation function. */ hi = R0>>16; @@ -90,13 +90,13 @@ Word16 Pitch_med_ol( } /* Hypass the wsp[] vector */ - hp_wsp = old_hp_wsp + L_max; + hp_wsp = old_hp_wsp + L_max; Hp_wsp(wsp, hp_wsp, L_frame, hp_wsp_mem); /* Compute normalize correlation at delay Tm */ - R0 = 0; - R1 = 0; - R2 = 0; + R0 = 0; + R1 = 0; + R2 = 0; p1 = hp_wsp; p2 = hp_wsp - Tm; for (j = 0; j < L_frame; j+=4) @@ -174,57 +174,57 @@ Word16 median5(Word16 x[]) Word16 x1, x2, x3, x4, x5; Word16 tmp; - x1 = x[-2]; - x2 = x[-1]; - x3 = x[0]; - x4 = x[1]; - x5 = x[2]; + x1 = x[-2]; + x2 = x[-1]; + x3 = x[0]; + x4 = x[1]; + x5 = x[2]; if (x2 < x1) { tmp = x1; x1 = x2; - x2 = tmp; + x2 = tmp; } if (x3 < x1) { tmp = x1; x1 = x3; - x3 = tmp; + x3 = tmp; } if (x4 < x1) { tmp = x1; x1 = x4; - x4 = tmp; + x4 = tmp; } if (x5 < x1) { - x5 = x1; + x5 = x1; } if (x3 < x2) { tmp = x2; x2 = x3; - x3 = tmp; + x3 = tmp; } if (x4 < x2) { tmp = x2; x2 = x4; - x4 = tmp; + x4 = tmp; } if (x5 < x2) { - x5 = x2; + x5 = x2; } if (x4 < x3) { - x3 = x4; + x3 = x4; } if (x5 < x3) { - x3 = x5; + x3 = x5; } return (x3); } @@ -241,10 +241,10 @@ Word16 Med_olag( /* output : median of 5 previous ope for (i = 4; i > 0; i--) { - old_ol_lag[i] = old_ol_lag[i - 1]; + old_ol_lag[i] = old_ol_lag[i - 1]; } - old_ol_lag[0] = prev_ol_lag; + old_ol_lag[0] = prev_ol_lag; i = median5(&old_ol_lag[2]); diff --git a/media/libstagefright/codecs/amrwbenc/src/pitch_f4.c b/media/libstagefright/codecs/amrwbenc/src/pitch_f4.c index 41d7413..0d66c31 100644 --- a/media/libstagefright/codecs/amrwbenc/src/pitch_f4.c +++ b/media/libstagefright/codecs/amrwbenc/src/pitch_f4.c @@ -90,7 +90,7 @@ Word16 Pitch_fr4( /* (o) : pitch period. Norm_corr_asm(exc, xn, h, L_subfr, t_min, t_max, corr); #else Norm_Corr(exc, xn, h, L_subfr, t_min, t_max, corr); -#endif +#endif /* Find integer pitch */ @@ -100,8 +100,8 @@ Word16 Pitch_fr4( /* (o) : pitch period. { if (corr[i] >= max) { - max = corr[i]; - t0 = i; + max = corr[i]; + t0 = i; } } /* If first subframe and t0 >= t0_fr1, do not search fractionnal pitch */ @@ -182,7 +182,7 @@ static void Norm_Corr( #endif /* Compute rounded down 1/sqrt(energy of xn[]) */ - L_tmp = 0; + L_tmp = 0; for (i = 0; i < 64; i+=4) { L_tmp += (xn[i] * xn[i]); @@ -202,7 +202,7 @@ static void Norm_Corr( for (t = t_min; t <= t_max; t++) { /* Compute correlation between xn[] and excf[] */ - L_tmp = 0; + L_tmp = 0; L_tmp1 = 0; for (i = 0; i < 64; i+=4) { @@ -246,7 +246,7 @@ static void Norm_Corr( L_tmp = L_tmp << L_tmp2; } - corr_norm[t] = vo_round(L_tmp); + corr_norm[t] = vo_round(L_tmp); /* modify the filtered excitation excf[] for the next iteration */ if(t != t_max) @@ -310,10 +310,10 @@ static Word16 Interpol_4( /* (o) : interpolated value */ L_sum += vo_mult32(x[1], (*ptr++)); L_sum += vo_mult32(x[2], (*ptr++)); L_sum += vo_mult32(x[3], (*ptr++)); - L_sum += vo_mult32(x[4], (*ptr++)); + L_sum += vo_mult32(x[4], (*ptr++)); L_sum += vo_mult32(x[5], (*ptr++)); L_sum += vo_mult32(x[6], (*ptr++)); - L_sum += vo_mult32(x[7], (*ptr++)); + L_sum += vo_mult32(x[7], (*ptr++)); sum = extract_h(L_add(L_shl2(L_sum, 2), 0x8000)); return (sum); diff --git a/media/libstagefright/codecs/amrwbenc/src/pred_lt4.c b/media/libstagefright/codecs/amrwbenc/src/pred_lt4.c index b359651..8404cf9 100644 --- a/media/libstagefright/codecs/amrwbenc/src/pred_lt4.c +++ b/media/libstagefright/codecs/amrwbenc/src/pred_lt4.c @@ -60,13 +60,13 @@ void Pred_lt4( Word16 *ptr, *ptr1; Word16 *ptr2; - x = exc - T0; + x = exc - T0; frac = -frac; if (frac < 0) { frac += UP_SAMP; x--; - } + } x -= 15; /* x = L_INTERPOL2 - 1 */ k = 3 - frac; /* k = UP_SAMP - 1 - frac */ diff --git a/media/libstagefright/codecs/amrwbenc/src/preemph.c b/media/libstagefright/codecs/amrwbenc/src/preemph.c index 5408617..c867bf7 100644 --- a/media/libstagefright/codecs/amrwbenc/src/preemph.c +++ b/media/libstagefright/codecs/amrwbenc/src/preemph.c @@ -35,20 +35,20 @@ void Preemph( Word16 temp; Word32 i, L_tmp; - temp = x[lg - 1]; + temp = x[lg - 1]; for (i = lg - 1; i > 0; i--) { L_tmp = L_deposit_h(x[i]); L_tmp -= (x[i - 1] * mu)<<1; - x[i] = (L_tmp + 0x8000)>>16; + x[i] = (L_tmp + 0x8000)>>16; } L_tmp = L_deposit_h(x[0]); L_tmp -= ((*mem) * mu)<<1; - x[0] = (L_tmp + 0x8000)>>16; + x[0] = (L_tmp + 0x8000)>>16; - *mem = temp; + *mem = temp; return; } @@ -64,22 +64,22 @@ void Preemph2( Word16 temp; Word32 i, L_tmp; - temp = x[lg - 1]; + temp = x[lg - 1]; for (i = (Word16) (lg - 1); i > 0; i--) { L_tmp = L_deposit_h(x[i]); L_tmp -= (x[i - 1] * mu)<<1; L_tmp = (L_tmp << 1); - x[i] = (L_tmp + 0x8000)>>16; + x[i] = (L_tmp + 0x8000)>>16; } L_tmp = L_deposit_h(x[0]); L_tmp -= ((*mem) * mu)<<1; L_tmp = (L_tmp << 1); - x[0] = (L_tmp + 0x8000)>>16; + x[0] = (L_tmp + 0x8000)>>16; - *mem = temp; + *mem = temp; return; } diff --git a/media/libstagefright/codecs/amrwbenc/src/q_gain2.c b/media/libstagefright/codecs/amrwbenc/src/q_gain2.c index 7bc299f..e8ca043 100644 --- a/media/libstagefright/codecs/amrwbenc/src/q_gain2.c +++ b/media/libstagefright/codecs/amrwbenc/src/q_gain2.c @@ -83,7 +83,7 @@ Word16 Q_gain2( /* Return index of quantization. Word32 i, j, L_tmp, dist_min; Word16 *past_qua_en, *t_qua_gain; - past_qua_en = mem; + past_qua_en = mem; /*-----------------------------------------------------------------* * - Find the initial quantization pitch index * @@ -91,9 +91,9 @@ Word16 Q_gain2( /* Return index of quantization. *-----------------------------------------------------------------*/ if (nbits == 6) { - t_qua_gain = t_qua_gain6b; - min_ind = 0; - size = RANGE; + t_qua_gain = t_qua_gain6b; + min_ind = 0; + size = RANGE; if(gp_clip == 1) { @@ -101,18 +101,18 @@ Word16 Q_gain2( /* Return index of quantization. } } else { - t_qua_gain = t_qua_gain7b; + t_qua_gain = t_qua_gain7b; p = t_qua_gain7b + RANGE; /* pt at 1/4th of table */ - j = nb_qua_gain7b - RANGE; + j = nb_qua_gain7b - RANGE; if (gp_clip == 1) { j = j - 27; /* limit gain pitch to 1.0 */ } - min_ind = 0; - g_pitch = *gain_pit; + min_ind = 0; + g_pitch = *gain_pit; for (i = 0; i < j; i++, p += 2) { @@ -121,7 +121,7 @@ Word16 Q_gain2( /* Return index of quantization. min_ind = min_ind + 1; } } - size = RANGE; + size = RANGE; } /*------------------------------------------------------------------* @@ -137,10 +137,10 @@ Word16 Q_gain2( /* Return index of quantization. * are in vector g_coeff[]. * *------------------------------------------------------------------*/ - coeff[0] = g_coeff[0]; - exp_coeff[0] = g_coeff[1]; + coeff[0] = g_coeff[0]; + exp_coeff[0] = g_coeff[1]; coeff[1] = negate(g_coeff[2]); /* coeff[1] = -2 xn y1 */ - exp_coeff[1] = g_coeff[3] + 1; + exp_coeff[1] = g_coeff[3] + 1; /* Compute scalar product */ #ifdef ASM_OPT /* asm optimization branch */ @@ -242,20 +242,20 @@ Word16 Q_gain2( /* Return index of quantization. *-------------------------------------------------------------------------*/ exp_code = (exp_gcode0 + 4); - exp_max[0] = (exp_coeff[0] - 13); - exp_max[1] = (exp_coeff[1] - 14); - exp_max[2] = (exp_coeff[2] + (15 + (exp_code << 1))); - exp_max[3] = (exp_coeff[3] + exp_code); - exp_max[4] = (exp_coeff[4] + (1 + exp_code)); + exp_max[0] = (exp_coeff[0] - 13); + exp_max[1] = (exp_coeff[1] - 14); + exp_max[2] = (exp_coeff[2] + (15 + (exp_code << 1))); + exp_max[3] = (exp_coeff[3] + exp_code); + exp_max[4] = (exp_coeff[4] + (1 + exp_code)); /* Find maximum exponant */ - e_max = exp_max[0]; + e_max = exp_max[0]; for (i = 1; i < 5; i++) { if(exp_max[i] > e_max) { - e_max = exp_max[i]; + e_max = exp_max[i]; } } @@ -271,14 +271,14 @@ Word16 Q_gain2( /* Return index of quantization. } /* Codebook search */ - dist_min = MAX_32; - p = &t_qua_gain[min_ind << 1]; + dist_min = MAX_32; + p = &t_qua_gain[min_ind << 1]; - index = 0; + index = 0; for (i = 0; i < size; i++) { - g_pitch = *p++; - g_code = *p++; + g_pitch = *p++; + g_code = *p++; g_code = ((g_code * gcode0) + 0x4000)>>15; g2_pitch = ((g_pitch * g_pitch) + 0x4000)>>15; @@ -302,14 +302,14 @@ Word16 Q_gain2( /* Return index of quantization. if(L_tmp < dist_min) { - dist_min = L_tmp; - index = i; + dist_min = L_tmp; + index = i; } } /* Read the quantized gains */ index = index + min_ind; - p = &t_qua_gain[(index + index)]; + p = &t_qua_gain[(index + index)]; *gain_pit = *p++; /* selected pitch gain in Q14 */ g_code = *p++; /* selected code gain in Q11 */ @@ -333,10 +333,10 @@ Word16 Q_gain2( /* Return index of quantization. /* update table of past quantized energies */ - past_qua_en[3] = past_qua_en[2]; - past_qua_en[2] = past_qua_en[1]; - past_qua_en[1] = past_qua_en[0]; - past_qua_en[0] = qua_ener; + past_qua_en[3] = past_qua_en[2]; + past_qua_en[2] = past_qua_en[1]; + past_qua_en[1] = past_qua_en[0]; + past_qua_en[0] = qua_ener; return (index); } diff --git a/media/libstagefright/codecs/amrwbenc/src/q_pulse.c b/media/libstagefright/codecs/amrwbenc/src/q_pulse.c index 496ca80..80a0b73 100644 --- a/media/libstagefright/codecs/amrwbenc/src/q_pulse.c +++ b/media/libstagefright/codecs/amrwbenc/src/q_pulse.c @@ -82,7 +82,7 @@ Word32 quant_2p_2N1( /* (o) return (2*N)+1 bits */ if (vo_sub((Word16) (pos1 & mask), (Word16) (pos2 & mask)) <= 0) { /* index = ((pos2 & mask) << N) + (pos1 & mask); */ - index = L_deposit_l(add1((((Word16) (pos2 & mask)) << N), ((Word16) (pos1 & mask)))); + index = L_deposit_l(add1((((Word16) (pos2 & mask)) << N), ((Word16) (pos1 & mask)))); if ((pos2 & NB_POS) != 0) { tmp = (N << 1); /* index += 1 << (2*N); */ @@ -91,7 +91,7 @@ Word32 quant_2p_2N1( /* (o) return (2*N)+1 bits */ } else { /* index = ((pos1 & mask) << N) + (pos2 & mask); */ - index = L_deposit_l(add1((((Word16) (pos1 & mask)) << N), ((Word16) (pos2 & mask)))); + index = L_deposit_l(add1((((Word16) (pos1 & mask)) << N), ((Word16) (pos2 & mask)))); if ((pos1 & NB_POS) != 0) { tmp = (N << 1); @@ -120,14 +120,14 @@ Word32 quant_3p_3N1( /* (o) return (3*N)+1 bits */ { index = quant_2p_2N1(pos1, pos2, sub(N, 1)); /* index = quant_2p_2N1(pos1, pos2, (N-1)); */ /* index += (pos1 & nb_pos) << N; */ - index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); + index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); /* index += quant_1p_N1(pos3, N) << (2*N); */ index = vo_L_add(index, (quant_1p_N1(pos3, N)<<(N << 1))); } else if (((pos1 ^ pos3) & nb_pos) == 0) { index = quant_2p_2N1(pos1, pos3, sub(N, 1)); /* index = quant_2p_2N1(pos1, pos3, (N-1)); */ - index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); + index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); /* index += (pos1 & nb_pos) << N; */ index = vo_L_add(index, (quant_1p_N1(pos2, N) << (N << 1))); /* index += quant_1p_N1(pos2, N) << @@ -136,7 +136,7 @@ Word32 quant_3p_3N1( /* (o) return (3*N)+1 bits */ { index = quant_2p_2N1(pos2, pos3, (N - 1)); /* index = quant_2p_2N1(pos2, pos3, (N-1)); */ /* index += (pos2 & nb_pos) << N; */ - index = vo_L_add(index, (L_deposit_l((Word16) (pos2 & nb_pos)) << N)); + index = vo_L_add(index, (L_deposit_l((Word16) (pos2 & nb_pos)) << N)); /* index += quant_1p_N1(pos1, N) << (2*N); */ index = vo_L_add(index, (quant_1p_N1(pos1, N) << (N << 1))); } @@ -162,21 +162,21 @@ Word32 quant_4p_4N1( /* (o) return (4*N)+1 bits */ { index = quant_2p_2N1(pos1, pos2, sub(N, 1)); /* index = quant_2p_2N1(pos1, pos2, (N-1)); */ /* index += (pos1 & nb_pos) << N; */ - index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); + index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); /* index += quant_2p_2N1(pos3, pos4, N) << (2*N); */ index = vo_L_add(index, (quant_2p_2N1(pos3, pos4, N) << (N << 1))); } else if (((pos1 ^ pos3) & nb_pos) == 0) { index = quant_2p_2N1(pos1, pos3, (N - 1)); /* index += (pos1 & nb_pos) << N; */ - index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); + index = vo_L_add(index, (L_deposit_l((Word16) (pos1 & nb_pos)) << N)); /* index += quant_2p_2N1(pos2, pos4, N) << (2*N); */ index = vo_L_add(index, (quant_2p_2N1(pos2, pos4, N) << (N << 1))); } else { index = quant_2p_2N1(pos2, pos3, (N - 1)); /* index += (pos2 & nb_pos) << N; */ - index = vo_L_add(index, (L_deposit_l((Word16) (pos2 & nb_pos)) << N)); + index = vo_L_add(index, (L_deposit_l((Word16) (pos2 & nb_pos)) << N)); /* index += quant_2p_2N1(pos1, pos4, N) << (2*N); */ index = vo_L_add(index, (quant_2p_2N1(pos1, pos4, N) << (N << 1))); } @@ -192,20 +192,20 @@ Word32 quant_4p_4N( /* (o) return 4*N bits */ Word16 posA[4], posB[4]; Word32 i, j, k, index; - n_1 = (Word16) (N - 1); + n_1 = (Word16) (N - 1); nb_pos = (1 << n_1); /* nb_pos = (1< it doesn't need to be operated by Basic Operators */ - n_1 = (Word16) (N - 1); + n_1 = (Word16) (N - 1); nb_pos = (1 << n_1); /* nb_pos = (1< 0; j--) { - isf_buf[j * M + i] = isf_buf[(j - 1) * M + i]; + isf_buf[j * M + i] = isf_buf[(j - 1) * M + i]; } - isf_buf[i] = isf_q[i]; + isf_buf[i] = isf_q[i]; } } } else @@ -293,14 +293,14 @@ void Dpisf_2s_46b( /* use the past ISFs slightly shifted towards their mean */ for (i = 0; i < ORDER; i++) { - isf_q[i] = add1(vo_mult(ALPHA, isfold[i]), vo_mult(ONE_ALPHA, ref_isf[i])); + isf_q[i] = add1(vo_mult(ALPHA, isfold[i]), vo_mult(ONE_ALPHA, ref_isf[i])); } /* estimate past quantized residual to be used in next frame */ for (i = 0; i < ORDER; i++) { tmp = add1(ref_isf[i], vo_mult(past_isfq[i], MU)); /* predicted ISF */ - past_isfq[i] = vo_sub(isf_q[i], tmp); + past_isfq[i] = vo_sub(isf_q[i], tmp); past_isfq[i] = (past_isfq[i] >> 1); /* past_isfq[i] *= 0.5 */ } } @@ -332,32 +332,32 @@ void Dpisf_2s_36b( { for (i = 0; i < 9; i++) { - isf_q[i] = dico1_isf[indice[0] * 9 + i]; + isf_q[i] = dico1_isf[indice[0] * 9 + i]; } for (i = 0; i < 7; i++) { - isf_q[i + 9] = dico2_isf[indice[1] * 7 + i]; + isf_q[i + 9] = dico2_isf[indice[1] * 7 + i]; } for (i = 0; i < 5; i++) { - isf_q[i] = add1(isf_q[i], dico21_isf_36b[indice[2] * 5 + i]); + isf_q[i] = add1(isf_q[i], dico21_isf_36b[indice[2] * 5 + i]); } for (i = 0; i < 4; i++) { - isf_q[i + 5] = add1(isf_q[i + 5], dico22_isf_36b[indice[3] * 4 + i]); + isf_q[i + 5] = add1(isf_q[i + 5], dico22_isf_36b[indice[3] * 4 + i]); } for (i = 0; i < 7; i++) { - isf_q[i + 9] = add1(isf_q[i + 9], dico23_isf_36b[indice[4] * 7 + i]); + isf_q[i + 9] = add1(isf_q[i + 9], dico23_isf_36b[indice[4] * 7 + i]); } for (i = 0; i < ORDER; i++) { tmp = isf_q[i]; - isf_q[i] = add1(tmp, mean_isf[i]); - isf_q[i] = add1(isf_q[i], vo_mult(MU, past_isfq[i])); - past_isfq[i] = tmp; + isf_q[i] = add1(tmp, mean_isf[i]); + isf_q[i] = add1(isf_q[i], vo_mult(MU, past_isfq[i])); + past_isfq[i] = tmp; } @@ -367,9 +367,9 @@ void Dpisf_2s_36b( { for (j = (L_MEANBUF - 1); j > 0; j--) { - isf_buf[j * M + i] = isf_buf[(j - 1) * M + i]; + isf_buf[j * M + i] = isf_buf[(j - 1) * M + i]; } - isf_buf[i] = isf_q[i]; + isf_buf[i] = isf_q[i]; } } } else @@ -381,20 +381,20 @@ void Dpisf_2s_36b( { L_tmp += (isf_buf[j * M + i] << 14); } - ref_isf[i] = vo_round(L_tmp); + ref_isf[i] = vo_round(L_tmp); } /* use the past ISFs slightly shifted towards their mean */ for (i = 0; i < ORDER; i++) { - isf_q[i] = add1(vo_mult(ALPHA, isfold[i]), vo_mult(ONE_ALPHA, ref_isf[i])); + isf_q[i] = add1(vo_mult(ALPHA, isfold[i]), vo_mult(ONE_ALPHA, ref_isf[i])); } /* estimate past quantized residual to be used in next frame */ for (i = 0; i < ORDER; i++) { tmp = add1(ref_isf[i], vo_mult(past_isfq[i], MU)); /* predicted ISF */ - past_isfq[i] = vo_sub(isf_q[i], tmp); + past_isfq[i] = vo_sub(isf_q[i], tmp); past_isfq[i] = past_isfq[i] >> 1; /* past_isfq[i] *= 0.5 */ } } @@ -424,15 +424,15 @@ void Reorder_isf( Word16 n /* (i) : number of ISF */ ) { - Word32 i; + Word32 i; Word16 isf_min; - isf_min = min_dist; + isf_min = min_dist; for (i = 0; i < n - 1; i++) { if(isf[i] < isf_min) { - isf[i] = isf_min; + isf[i] = isf_min; } isf_min = (isf[i] + min_dist); } @@ -452,13 +452,13 @@ Word16 Sub_VQ( /* output: return quantization index Word32 i, j, index; Word32 dist_min, dist; - dist_min = MAX_32; - p_dico = dico; + dist_min = MAX_32; + p_dico = dico; - index = 0; + index = 0; for (i = 0; i < dico_size; i++) { - dist = 0; + dist = 0; for (j = 0; j < dim; j++) { @@ -468,18 +468,18 @@ Word16 Sub_VQ( /* output: return quantization index if(dist < dist_min) { - dist_min = dist; - index = i; + dist_min = dist; + index = i; } } - *distance = dist_min; + *distance = dist_min; /* Reading the selected vector */ - p_dico = &dico[index * dim]; + p_dico = &dico[index * dim]; for (j = 0; j < dim; j++) { - x[j] = *p_dico++; + x[j] = *p_dico++; } return index; @@ -508,11 +508,11 @@ static void VQ_stage1( index[2] = 2; index[3] = 3; - p_dico = dico; + p_dico = dico; for (i = 0; i < dico_size; i++) { - dist = 0; + dist = 0; for (j = 0; j < dim; j++) { temp = x[j] - (*p_dico++); @@ -525,11 +525,11 @@ static void VQ_stage1( { for (l = surv - 1; l > k; l--) { - dist_min[l] = dist_min[l - 1]; - index[l] = index[l - 1]; + dist_min[l] = dist_min[l - 1]; + index[l] = index[l - 1]; } - dist_min[k] = dist; - index[k] = i; + dist_min[k] = dist; + index[k] = i; break; } } diff --git a/media/libstagefright/codecs/amrwbenc/src/residu.c b/media/libstagefright/codecs/amrwbenc/src/residu.c index 328aed2..b0c04b5 100644 --- a/media/libstagefright/codecs/amrwbenc/src/residu.c +++ b/media/libstagefright/codecs/amrwbenc/src/residu.c @@ -56,7 +56,7 @@ void Residu( s += vo_mult32((*p1++), (*p2--)); s += vo_mult32((*p1), (*p2)); - s = L_shl2(s, 5); + s = L_shl2(s, 5); y[i] = extract_h(L_add(s, 0x8000)); } diff --git a/media/libstagefright/codecs/amrwbenc/src/scale.c b/media/libstagefright/codecs/amrwbenc/src/scale.c index b203bec..418cc06 100644 --- a/media/libstagefright/codecs/amrwbenc/src/scale.c +++ b/media/libstagefright/codecs/amrwbenc/src/scale.c @@ -36,8 +36,8 @@ void Scale_sig( { for (i = lg - 1 ; i >= 0; i--) { - L_tmp = L_shl2(x[i], 16 + exp); - x[i] = extract_h(L_add(L_tmp, 0x8000)); + L_tmp = L_shl2(x[i], 16 + exp); + x[i] = extract_h(L_add(L_tmp, 0x8000)); } } else @@ -46,8 +46,8 @@ void Scale_sig( for (i = lg - 1; i >= 0; i--) { L_tmp = x[i] << 16; - L_tmp >>= exp; - x[i] = (L_tmp + 0x8000)>>16; + L_tmp >>= exp; + x[i] = (L_tmp + 0x8000)>>16; } } return; diff --git a/media/libstagefright/codecs/amrwbenc/src/stream.c b/media/libstagefright/codecs/amrwbenc/src/stream.c index bdf0d46..780f009 100644 --- a/media/libstagefright/codecs/amrwbenc/src/stream.c +++ b/media/libstagefright/codecs/amrwbenc/src/stream.c @@ -29,11 +29,11 @@ void voAWB_InitFrameBuffer(FrameStream *stream) stream->frame_ptr_bk = stream->frame_ptr; stream->set_len = 0; stream->framebuffer_len = 0; - stream->frame_storelen = 0; + stream->frame_storelen = 0; } void voAWB_UpdateFrameBuffer( - FrameStream *stream, + FrameStream *stream, VO_MEM_OPERATOR *pMemOP ) { @@ -53,6 +53,6 @@ void voAWB_FlushFrameBuffer(FrameStream *stream) stream->frame_ptr_bk = stream->frame_ptr; stream->set_len = 0; stream->framebuffer_len = 0; - stream->frame_storelen = 0; + stream->frame_storelen = 0; } diff --git a/media/libstagefright/codecs/amrwbenc/src/syn_filt.c b/media/libstagefright/codecs/amrwbenc/src/syn_filt.c index 90fafb0..1bda05a 100644 --- a/media/libstagefright/codecs/amrwbenc/src/syn_filt.c +++ b/media/libstagefright/codecs/amrwbenc/src/syn_filt.c @@ -39,11 +39,11 @@ void Syn_filt( Word16 y_buf[L_SUBFR16k + M16k]; Word32 L_tmp; Word16 *yy, *p1, *p2; - yy = &y_buf[0]; + yy = &y_buf[0]; /* copy initial filter states into synthesis buffer */ for (i = 0; i < 16; i++) { - *yy++ = mem[i]; + *yy++ = mem[i]; } a0 = (a[0] >> 1); /* input / 2 */ /* Do the filtering. */ @@ -70,7 +70,7 @@ void Syn_filt( L_tmp -= vo_mult32((*p1), (*p2)); L_tmp = L_shl2(L_tmp, 4); - y[i] = yy[i] = extract_h(L_add(L_tmp, 0x8000)); + y[i] = yy[i] = extract_h(L_add(L_tmp, 0x8000)); } /* Update memory if required */ if (update) @@ -99,7 +99,7 @@ void Syn_filt_32( /* Do the filtering. */ for (i = 0; i < lg; i++) { - L_tmp = 0; + L_tmp = 0; L_tmp1 = 0; p1 = a; p2 = &sig_lo[i - 1]; @@ -138,18 +138,18 @@ void Syn_filt_32( L_tmp -= vo_mult32((*p2--), (*p1)); L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp = L_tmp >> 11; + L_tmp = L_tmp >> 11; L_tmp += vo_L_mult(exc[i], a0); /* sig_hi = bit16 to bit31 of synthesis */ L_tmp = L_tmp - (L_tmp1<<1); L_tmp = L_tmp >> 3; /* ai in Q12 */ - sig_hi[i] = extract_h(L_tmp); + sig_hi[i] = extract_h(L_tmp); /* sig_lo = bit4 to bit15 of synthesis */ L_tmp >>= 4; /* 4 : sig_lo[i] >> 4 */ - sig_lo[i] = (Word16)((L_tmp - (sig_hi[i] << 13))); + sig_lo[i] = (Word16)((L_tmp - (sig_hi[i] << 13))); } return; diff --git a/media/libstagefright/codecs/amrwbenc/src/updt_tar.c b/media/libstagefright/codecs/amrwbenc/src/updt_tar.c index eda2b1c..96779fd 100644 --- a/media/libstagefright/codecs/amrwbenc/src/updt_tar.c +++ b/media/libstagefright/codecs/amrwbenc/src/updt_tar.c @@ -39,7 +39,7 @@ void Updt_tar( { L_tmp = x[i] << 15; L_tmp -= (y[i] * gain)<<1; - x2[i] = extract_h(L_shl2(L_tmp, 1)); + x2[i] = extract_h(L_shl2(L_tmp, 1)); } return; diff --git a/media/libstagefright/codecs/amrwbenc/src/voAMRWBEnc.c b/media/libstagefright/codecs/amrwbenc/src/voAMRWBEnc.c index bac00dd..0f4d689 100644 --- a/media/libstagefright/codecs/amrwbenc/src/voAMRWBEnc.c +++ b/media/libstagefright/codecs/amrwbenc/src/voAMRWBEnc.c @@ -84,11 +84,11 @@ void Reset_encoder(void *st, Word16 reset_all) Set_zero(cod_state->old_exc, PIT_MAX + L_INTERPOL); Set_zero(cod_state->mem_syn, M); Set_zero(cod_state->past_isfq, M); - cod_state->mem_w0 = 0; - cod_state->tilt_code = 0; - cod_state->first_frame = 1; + cod_state->mem_w0 = 0; + cod_state->tilt_code = 0; + cod_state->first_frame = 1; Init_gp_clip(cod_state->gp_clip); - cod_state->L_gc_thres = 0; + cod_state->L_gc_thres = 0; if (reset_all != 0) { /* Static vectors to zero */ @@ -105,21 +105,21 @@ void Reset_encoder(void *st, Word16 reset_all) Copy(isp_init, cod_state->ispold, M); Copy(isp_init, cod_state->ispold_q, M); /* variable initialization */ - cod_state->mem_preemph = 0; - cod_state->mem_wsp = 0; - cod_state->Q_old = 15; - cod_state->Q_max[0] = 15; - cod_state->Q_max[1] = 15; - cod_state->old_wsp_max = 0; - cod_state->old_wsp_shift = 0; + cod_state->mem_preemph = 0; + cod_state->mem_wsp = 0; + cod_state->Q_old = 15; + cod_state->Q_max[0] = 15; + cod_state->Q_max[1] = 15; + cod_state->old_wsp_max = 0; + cod_state->old_wsp_shift = 0; /* pitch ol initialization */ - cod_state->old_T0_med = 40; - cod_state->ol_gain = 0; - cod_state->ada_w = 0; - cod_state->ol_wght_flg = 0; + cod_state->old_T0_med = 40; + cod_state->ol_gain = 0; + cod_state->ada_w = 0; + cod_state->ol_wght_flg = 0; for (i = 0; i < 5; i++) { - cod_state->old_ol_lag[i] = 40; + cod_state->old_ol_lag[i] = 40; } Set_zero(cod_state->old_hp_wsp, (L_FRAME / 2) / OPL_DECIM + (PIT_MAX / OPL_DECIM)); Set_zero(cod_state->mem_syn_hf, M); @@ -129,10 +129,10 @@ void Reset_encoder(void *st, Word16 reset_all) Init_Filt_6k_7k(cod_state->mem_hf); Init_HP400_12k8(cod_state->mem_hp400); Copy(isf_init, cod_state->isfold, M); - cod_state->mem_deemph = 0; - cod_state->seed2 = 21845; + cod_state->mem_deemph = 0; + cod_state->seed2 = 21845; Init_Filt_6k_7k(cod_state->mem_hf2); - cod_state->gain_alpha = 32767; + cod_state->gain_alpha = 32767; cod_state->vad_hist = 0; wb_vad_reset(cod_state->vadSt); dtx_enc_reset(cod_state->dtx_encSt, isf_init); @@ -212,8 +212,8 @@ void coder( st = (Coder_State *) spe_state; - *ser_size = nb_of_bits[*mode]; - codec_mode = *mode; + *ser_size = nb_of_bits[*mode]; + codec_mode = *mode; /*--------------------------------------------------------------------------* * Initialize pointers to speech vector. * @@ -233,10 +233,10 @@ void coder( new_speech = old_speech + L_TOTAL - L_FRAME - L_FILT; /* New speech */ speech = old_speech + L_TOTAL - L_FRAME - L_NEXT; /* Present frame */ - p_window = old_speech + L_TOTAL - L_WINDOW; + p_window = old_speech + L_TOTAL - L_WINDOW; - exc = old_exc + PIT_MAX + L_INTERPOL; - wsp = old_wsp + (PIT_MAX / OPL_DECIM); + exc = old_exc + PIT_MAX + L_INTERPOL; + wsp = old_wsp + (PIT_MAX / OPL_DECIM); /* copy coder memory state into working space */ Copy(st->old_speech, old_speech, L_TOTAL - L_FRAME); @@ -287,7 +287,7 @@ void coder( L_tmp = L_abs(L_tmp); if(L_tmp > L_max) { - L_max = L_tmp; + L_max = L_tmp; } } @@ -297,50 +297,50 @@ void coder( tmp = extract_h(L_max); if (tmp == 0) { - shift = Q_MAX; + shift = Q_MAX; } else { shift = norm_s(tmp) - 1; if (shift < 0) { - shift = 0; + shift = 0; } if (shift > Q_MAX) { - shift = Q_MAX; + shift = Q_MAX; } } - Q_new = shift; + Q_new = shift; if (Q_new > st->Q_max[0]) { - Q_new = st->Q_max[0]; + Q_new = st->Q_max[0]; } if (Q_new > st->Q_max[1]) { - Q_new = st->Q_max[1]; + Q_new = st->Q_max[1]; } exp = (Q_new - st->Q_old); - st->Q_old = Q_new; - st->Q_max[1] = st->Q_max[0]; - st->Q_max[0] = shift; + st->Q_old = Q_new; + st->Q_max[1] = st->Q_max[0]; + st->Q_max[0] = shift; /* preemphasis with scaling (L_FRAME+L_FILT) */ - tmp = new_speech[L_FRAME - 1]; + tmp = new_speech[L_FRAME - 1]; for (i = L_FRAME + L_FILT - 1; i > 0; i--) { L_tmp = new_speech[i] << 15; L_tmp -= (new_speech[i - 1] * mu)<<1; L_tmp = (L_tmp << Q_new); - new_speech[i] = vo_round(L_tmp); + new_speech[i] = vo_round(L_tmp); } L_tmp = new_speech[0] << 15; L_tmp -= (st->mem_preemph * mu)<<1; L_tmp = (L_tmp << Q_new); - new_speech[0] = vo_round(L_tmp); + new_speech[0] = vo_round(L_tmp); - st->mem_preemph = tmp; + st->mem_preemph = tmp; /* scale previous samples and memory */ @@ -364,13 +364,13 @@ void coder( Scale_sig(buf, L_FRAME, 1 - Q_new); #endif - vad_flag = wb_vad(st->vadSt, buf); /* Voice Activity Detection */ + vad_flag = wb_vad(st->vadSt, buf); /* Voice Activity Detection */ if (vad_flag == 0) { - st->vad_hist = (st->vad_hist + 1); + st->vad_hist = (st->vad_hist + 1); } else { - st->vad_hist = 0; + st->vad_hist = 0; } /* DTX processing */ @@ -378,7 +378,7 @@ void coder( { /* Note that mode may change here */ tx_dtx_handler(st->dtx_encSt, vad_flag, mode); - *ser_size = nb_of_bits[*mode]; + *ser_size = nb_of_bits[*mode]; } if(*mode != MRDTX) @@ -423,7 +423,7 @@ void coder( * - scale wsp[] to avoid overflow in pitch estimation * * - Find open loop pitch lag for whole speech frame * *----------------------------------------------------------------------*/ - p_A = A; + p_A = A; for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR) { /* Weighting of LPC coefficients */ @@ -435,27 +435,27 @@ void coder( Residu(Ap, &speech[i_subfr], &wsp[i_subfr], L_SUBFR); #endif - p_A += (M + 1); + p_A += (M + 1); } Deemph2(wsp, TILT_FAC, L_FRAME, &(st->mem_wsp)); /* find maximum value on wsp[] for 12 bits scaling */ - max = 0; + max = 0; for (i = 0; i < L_FRAME; i++) { tmp = abs_s(wsp[i]); if(tmp > max) { - max = tmp; + max = tmp; } } - tmp = st->old_wsp_max; + tmp = st->old_wsp_max; if(max > tmp) { tmp = max; /* tmp = max(wsp_max, old_wsp_max) */ } - st->old_wsp_max = max; + st->old_wsp_max = max; shift = norm_s(tmp) - 3; if (shift > 0) @@ -494,8 +494,8 @@ void coder( if(st->ol_gain > 19661) /* 0.6 in Q15 */ { - st->old_T0_med = Med_olag(T_op, st->old_ol_lag); - st->ada_w = 32767; + st->old_T0_med = Med_olag(T_op, st->old_ol_lag); + st->ada_w = 32767; } else { st->ada_w = vo_mult(st->ada_w, 29491); @@ -507,7 +507,7 @@ void coder( st->ol_wght_flg = 1; wb_vad_tone_detection(st->vadSt, st->ol_gain); - T_op *= OPL_DECIM; + T_op *= OPL_DECIM; if(*ser_size != NBBITS_7k) { @@ -516,11 +516,11 @@ void coder( if(st->ol_gain > 19661) /* 0.6 in Q15 */ { - st->old_T0_med = Med_olag(T_op2, st->old_ol_lag); - st->ada_w = 32767; + st->old_T0_med = Med_olag(T_op2, st->old_ol_lag); + st->ada_w = 32767; } else { - st->ada_w = mult(st->ada_w, 29491); + st->ada_w = mult(st->ada_w, 29491); } if(st->ada_w < 26214) @@ -530,11 +530,11 @@ void coder( wb_vad_tone_detection(st->vadSt, st->ol_gain); - T_op2 *= OPL_DECIM; + T_op2 *= OPL_DECIM; } else { - T_op2 = T_op; + T_op2 = T_op; } /*----------------------------------------------------------------------* * DTX-CNG * @@ -550,10 +550,10 @@ void coder( for (i = 0; i < L_FRAME; i++) { - exc2[i] = shr(exc[i], Q_new); + exc2[i] = shr(exc[i], Q_new); } - L_tmp = 0; + L_tmp = 0; for (i = 0; i < L_FRAME; i++) L_tmp += (exc2[i] * exc2[i])<<1; @@ -617,23 +617,23 @@ void coder( /* Check stability on isf : distance between old isf and current isf */ - L_tmp = 0; + L_tmp = 0; for (i = 0; i < M - 1; i++) { tmp = vo_sub(isf[i], st->isfold[i]); L_tmp += (tmp * tmp)<<1; } - tmp = extract_h(L_shl2(L_tmp, 8)); + tmp = extract_h(L_shl2(L_tmp, 8)); tmp = vo_mult(tmp, 26214); /* tmp = L_tmp*0.8/256 */ tmp = vo_sub(20480, tmp); /* 1.25 - tmp (in Q14) */ - stab_fac = shl(tmp, 1); + stab_fac = shl(tmp, 1); if (stab_fac < 0) { - stab_fac = 0; + stab_fac = 0; } Copy(isf, st->isfold, M); @@ -642,7 +642,7 @@ void coder( if (st->first_frame != 0) { - st->first_frame = 0; + st->first_frame = 0; Copy(ispnew_q, st->ispold_q, M); } /* Find the interpolated ISPs and convert to a[] for all subframes */ @@ -660,7 +660,7 @@ void coder( #else Residu(p_Aq, &speech[i_subfr], &exc[i_subfr], L_SUBFR); #endif - p_Aq += (M + 1); + p_Aq += (M + 1); } /* Buffer isf's and energy for dtx on non-speech frame */ @@ -670,7 +670,7 @@ void coder( { exc2[i] = exc[i] >> Q_new; } - L_tmp = 0; + L_tmp = 0; for (i = 0; i < L_FRAME; i++) L_tmp += (exc2[i] * exc2[i])<<1; L_tmp >>= 1; @@ -682,14 +682,14 @@ void coder( T0_min = T_op - 8; if (T0_min < PIT_MIN) { - T0_min = PIT_MIN; + T0_min = PIT_MIN; } T0_max = (T0_min + 15); if(T0_max > PIT_MAX) { - T0_max = PIT_MAX; - T0_min = T0_max - 15; + T0_max = PIT_MAX; + T0_min = T0_max - 15; } /*------------------------------------------------------------------------* * Loop for every subframe in the analysis frame * @@ -711,25 +711,25 @@ void coder( * - update states of weighting filter * * - find excitation and synthesis speech * *------------------------------------------------------------------------*/ - p_A = A; - p_Aq = Aq; + p_A = A; + p_Aq = Aq; for (i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR) { - pit_flag = i_subfr; + pit_flag = i_subfr; if ((i_subfr == 2 * L_SUBFR) && (*ser_size > NBBITS_7k)) { - pit_flag = 0; + pit_flag = 0; /* range for closed loop pitch search in 3rd subframe */ T0_min = (T_op2 - 8); if (T0_min < PIT_MIN) { - T0_min = PIT_MIN; + T0_min = PIT_MIN; } T0_max = (T0_min + 15); if (T0_max > PIT_MAX) { - T0_max = PIT_MAX; + T0_max = PIT_MAX; T0_min = (T0_max - 15); } } @@ -776,7 +776,7 @@ void coder( /* first half: xn[] --> cn[] */ Set_zero(code, M); Copy(xn, code + M, L_SUBFR / 2); - tmp = 0; + tmp = 0; Preemph2(code + M, TILT_FAC, L_SUBFR / 2, &tmp); Weight_a(p_A, Ap, GAMMA1, M); Syn_filt(Ap,code + M, code + M, L_SUBFR / 2, code, 0); @@ -791,7 +791,7 @@ void coder( Copy(&exc[i_subfr + (L_SUBFR / 2)], cn + (L_SUBFR / 2), L_SUBFR / 2); /*---------------------------------------------------------------* - * Compute impulse response, h1[], of weighted synthesis filter * + * Compute impulse response, h1[], of weighted synthesis filter * *---------------------------------------------------------------*/ Set_zero(error, M + L_SUBFR); @@ -814,7 +814,7 @@ void coder( *vo_p3++ = *vo_p0++ = vo_round((L_tmp <<4)); } /* deemph without division by 2 -> Q14 to Q15 */ - tmp = 0; + tmp = 0; Deemph2(h1, TILT_FAC, L_SUBFR, &tmp); /* h1 in Q14 */ /* h2 in Q12 for codebook search */ @@ -917,7 +917,7 @@ void coder( T0_min = (T0 - 8); if (T0_min < PIT_MIN) { - T0_min = PIT_MIN; + T0_min = PIT_MIN; } T0_max = T0_min + 15; @@ -964,18 +964,18 @@ void coder( Convolve_asm(&exc[i_subfr], h1, y1, L_SUBFR); #else Convolve(&exc[i_subfr], h1, y1, L_SUBFR); -#endif +#endif gain1 = G_pitch(xn, y1, g_coeff, L_SUBFR); /* clip gain if necessary to avoid problem at decoder */ if ((clip_gain != 0) && (gain1 > GP_CLIP)) { - gain1 = GP_CLIP; + gain1 = GP_CLIP; } /* find energy of new target xn2[] */ Updt_tar(xn, dn, y1, gain1, L_SUBFR); /* dn used temporary */ } else { - gain1 = 0; + gain1 = 0; } /*-----------------------------------------------------------------* * - find pitch excitation filtered by 1st order LP filter. * @@ -1002,7 +1002,7 @@ void coder( Convolve_asm(code, h1, y2, L_SUBFR); #else Convolve(code, h1, y2, L_SUBFR); -#endif +#endif gain2 = G_pitch(xn, y2, g_coeff2, L_SUBFR); @@ -1016,7 +1016,7 @@ void coder( /*-----------------------------------------------------------------* * use the best prediction (minimise quadratic error). * *-----------------------------------------------------------------*/ - select = 0; + select = 0; if(*ser_size > NBBITS_9k) { L_tmp = 0L; @@ -1036,7 +1036,7 @@ void coder( if (L_tmp <= 0) { - select = 1; + select = 1; } Parm_serial(select, 1, &prms); } @@ -1154,7 +1154,7 @@ void coder( /*-------------------------------------------------------* * - Add the fixed-gain pitch contribution to code[]. * *-------------------------------------------------------*/ - tmp = 0; + tmp = 0; Preemph(code, st->tilt_code, L_SUBFR, &tmp); Pit_shrp(code, T0, PIT_SHARP, L_SUBFR); /*----------------------------------------------------------* @@ -1175,7 +1175,7 @@ void coder( /* test quantized gain of pitch for pitch clipping algorithm */ Gp_clip_test_gain_pit(gain_pit, st->gp_clip); - L_tmp = L_shl(L_gain_code, Q_new); + L_tmp = L_shl(L_gain_code, Q_new); gain_code = extract_h(L_add(L_tmp, 0x8000)); /*----------------------------------------------------------* @@ -1218,7 +1218,7 @@ void coder( L_tmp = (gain_code * code[i])<<1; L_tmp = (L_tmp << 5); L_tmp += (exc[i + i_subfr] * gain_pit)<<1; - L_tmp = L_shl2(L_tmp, 1); + L_tmp = L_shl2(L_tmp, 1); exc[i + i_subfr] = extract_h(L_add(L_tmp, 0x8000)); } @@ -1242,7 +1242,7 @@ void coder( *------------------------------------------------------------*/ tmp = (16384 - (voice_fac >> 1)); /* 1=unvoiced, 0=voiced */ fac = vo_mult(stab_fac, tmp); - L_tmp = L_gain_code; + L_tmp = L_gain_code; if(L_tmp < st->L_gc_thres) { L_tmp = vo_L_add(L_tmp, Mpy_32_16(gain_code, gain_code_lo, 6226)); @@ -1276,19 +1276,19 @@ void coder( L_tmp = L_deposit_h(code[0]); L_tmp -= (code[1] * tmp)<<1; - code2[0] = vo_round(L_tmp); + code2[0] = vo_round(L_tmp); for (i = 1; i < L_SUBFR - 1; i++) { L_tmp = L_deposit_h(code[i]); L_tmp -= (code[i + 1] * tmp)<<1; L_tmp -= (code[i - 1] * tmp)<<1; - code2[i] = vo_round(L_tmp); + code2[i] = vo_round(L_tmp); } L_tmp = L_deposit_h(code[L_SUBFR - 1]); L_tmp -= (code[L_SUBFR - 2] * tmp)<<1; - code2[L_SUBFR - 1] = vo_round(L_tmp); + code2[L_SUBFR - 1] = vo_round(L_tmp); /* build excitation */ gain_code = vo_round(L_shl(L_gain_code, Q_new)); @@ -1381,7 +1381,7 @@ static Word16 synthesis( /* Original speech signal as reference for high band gain quantisation */ for (i = 0; i < L_SUBFR16k; i++) { - HF_SP[i] = synth16k[i]; + HF_SP[i] = synth16k[i]; } /*------------------------------------------------------* @@ -1454,7 +1454,7 @@ static Word16 synthesis( fac = div_s(tmp, ener); } else { - fac = 0; + fac = 0; } /* modify energy of white noise according to synthesis tilt */ @@ -1550,7 +1550,7 @@ static Word16 synthesis( /************************************************* * -* Breif: Codec main function +* Breif: Codec main function * **************************************************/ @@ -1622,7 +1622,7 @@ VO_U32 VO_API voAMRWB_Init(VO_HANDLE * phCodec, /* o: the audi else { pMemOP = (VO_MEM_OPERATOR *)pUserData->memData; - } + } /*-------------------------------------------------------------------------* * Memory allocation for coder state. * *-------------------------------------------------------------------------*/ @@ -1631,8 +1631,8 @@ VO_U32 VO_API voAMRWB_Init(VO_HANDLE * phCodec, /* o: the audi return VO_ERR_OUTOF_MEMORY; } - st->vadSt = NULL; - st->dtx_encSt = NULL; + st->vadSt = NULL; + st->dtx_encSt = NULL; st->sid_update_counter = 3; st->sid_handover_debt = 0; st->prev_ft = TX_SPEECH; @@ -1764,7 +1764,7 @@ VO_U32 VO_API voAMRWB_GetOutputData( { pAudioFormat->Format.Channels = 1; pAudioFormat->Format.SampleRate = 8000; - pAudioFormat->Format.SampleBits = 16; + pAudioFormat->Format.SampleBits = 16; pAudioFormat->InputUsed = stream->used_len; } return VO_ERR_NONE; @@ -1792,14 +1792,14 @@ VO_U32 VO_API voAMRWB_SetParam( /* setting AMR-WB frame type*/ case VO_PID_AMRWB_FRAMETYPE: if(*lValue < VOAMRWB_DEFAULT || *lValue > VOAMRWB_RFC3267) - return VO_ERR_WRONG_PARAM_ID; + return VO_ERR_WRONG_PARAM_ID; gData->frameType = *lValue; break; /* setting AMR-WB bit rate */ case VO_PID_AMRWB_MODE: { if(*lValue < VOAMRWB_MD66 || *lValue > VOAMRWB_MD2385) - return VO_ERR_WRONG_PARAM_ID; + return VO_ERR_WRONG_PARAM_ID; gData->mode = *lValue; } break; @@ -1839,7 +1839,7 @@ VO_U32 VO_API voAMRWB_GetParam( int temp; Coder_State* gData = (Coder_State*)hCodec; - if (gData==NULL) + if (gData==NULL) return VO_ERR_INVALID_ARG; switch(uParamID) { diff --git a/media/libstagefright/codecs/amrwbenc/src/voicefac.c b/media/libstagefright/codecs/amrwbenc/src/voicefac.c index 17e4e55..d890044 100644 --- a/media/libstagefright/codecs/amrwbenc/src/voicefac.c +++ b/media/libstagefright/codecs/amrwbenc/src/voicefac.c @@ -18,7 +18,7 @@ * File: voicefac.c * * * * Description: Find the voicing factors (1 = voice to -1 = unvoiced) * -* * +* * ************************************************************************/ #include "typedef.h" diff --git a/media/libstagefright/codecs/amrwbenc/src/wb_vad.c b/media/libstagefright/codecs/amrwbenc/src/wb_vad.c index 7e1d673..13dd2aa 100644 --- a/media/libstagefright/codecs/amrwbenc/src/wb_vad.c +++ b/media/libstagefright/codecs/amrwbenc/src/wb_vad.c @@ -52,7 +52,7 @@ static Word16 ilog2( /* return: output value of the log2 * if (mant <= 0) { - mant = 1; + mant = 1; } ex = norm_s(mant); mant = mant << ex; @@ -88,14 +88,14 @@ static void filter5( temp0 = vo_sub(*in0, vo_mult(COEFF5_1, data[0])); temp1 = add1(data[0], vo_mult(COEFF5_1, temp0)); - data[0] = temp0; + data[0] = temp0; temp0 = vo_sub(*in1, vo_mult(COEFF5_2, data[1])); temp2 = add1(data[1], vo_mult(COEFF5_2, temp0)); - data[1] = temp0; + data[1] = temp0; - *in0 = extract_h((vo_L_add(temp1, temp2) << 15)); - *in1 = extract_h((vo_L_sub(temp1, temp2) << 15)); + *in0 = extract_h((vo_L_add(temp1, temp2) << 15)); + *in1 = extract_h((vo_L_sub(temp1, temp2) << 15)); } /****************************************************************************** @@ -116,10 +116,10 @@ static void filter3( temp1 = vo_sub(*in1, vo_mult(COEFF3, *data)); temp2 = add1(*data, vo_mult(COEFF3, temp1)); - *data = temp1; + *data = temp1; - *in1 = extract_h((vo_L_sub(*in0, temp2) << 15)); - *in0 = extract_h((vo_L_add(*in0, temp2) << 15)); + *in1 = extract_h((vo_L_sub(*in0, temp2) << 15)); + *in0 = extract_h((vo_L_add(*in0, temp2) << 15)); } /****************************************************************************** @@ -149,14 +149,14 @@ static Word16 level_calculation( /* return: signal level */ Word32 i, l_temp1, l_temp2; Word16 level; - l_temp1 = 0L; + l_temp1 = 0L; for (i = count1; i < count2; i++) { l_temp1 += (abs_s(data[ind_m * i + ind_a])<<1); } l_temp2 = vo_L_add(l_temp1, L_shl(*sub_level, 16 - scale)); - *sub_level = extract_h(L_shl(l_temp1, scale)); + *sub_level = extract_h(L_shl(l_temp1, scale)); for (i = 0; i < count1; i++) { @@ -187,7 +187,7 @@ static void filter_bank( /* shift input 1 bit down for safe scaling */ for (i = 0; i < FRAME_LEN; i++) { - tmp_buf[i] = in[i] >> 1; + tmp_buf[i] = in[i] >> 1; } /* run the filter bank */ @@ -222,29 +222,29 @@ static void filter_bank( /* calculate levels in each frequency band */ /* 4800 - 6400 Hz */ - level[11] = level_calculation(tmp_buf, &st->sub_level[11], 16, 64, 4, 1, 14); + level[11] = level_calculation(tmp_buf, &st->sub_level[11], 16, 64, 4, 1, 14); /* 4000 - 4800 Hz */ - level[10] = level_calculation(tmp_buf, &st->sub_level[10], 8, 32, 8, 7, 15); + level[10] = level_calculation(tmp_buf, &st->sub_level[10], 8, 32, 8, 7, 15); /* 3200 - 4000 Hz */ - level[9] = level_calculation(tmp_buf, &st->sub_level[9],8, 32, 8, 3, 15); + level[9] = level_calculation(tmp_buf, &st->sub_level[9],8, 32, 8, 3, 15); /* 2400 - 3200 Hz */ - level[8] = level_calculation(tmp_buf, &st->sub_level[8],8, 32, 8, 2, 15); + level[8] = level_calculation(tmp_buf, &st->sub_level[8],8, 32, 8, 2, 15); /* 2000 - 2400 Hz */ - level[7] = level_calculation(tmp_buf, &st->sub_level[7],4, 16, 16, 14, 16); + level[7] = level_calculation(tmp_buf, &st->sub_level[7],4, 16, 16, 14, 16); /* 1600 - 2000 Hz */ - level[6] = level_calculation(tmp_buf, &st->sub_level[6],4, 16, 16, 6, 16); + level[6] = level_calculation(tmp_buf, &st->sub_level[6],4, 16, 16, 6, 16); /* 1200 - 1600 Hz */ - level[5] = level_calculation(tmp_buf, &st->sub_level[5],4, 16, 16, 4, 16); + level[5] = level_calculation(tmp_buf, &st->sub_level[5],4, 16, 16, 4, 16); /* 800 - 1200 Hz */ - level[4] = level_calculation(tmp_buf, &st->sub_level[4],4, 16, 16, 12, 16); + level[4] = level_calculation(tmp_buf, &st->sub_level[4],4, 16, 16, 12, 16); /* 600 - 800 Hz */ - level[3] = level_calculation(tmp_buf, &st->sub_level[3],2, 8, 32, 8, 17); + level[3] = level_calculation(tmp_buf, &st->sub_level[3],2, 8, 32, 8, 17); /* 400 - 600 Hz */ - level[2] = level_calculation(tmp_buf, &st->sub_level[2],2, 8, 32, 24, 17); + level[2] = level_calculation(tmp_buf, &st->sub_level[2],2, 8, 32, 24, 17); /* 200 - 400 Hz */ - level[1] = level_calculation(tmp_buf, &st->sub_level[1],2, 8, 32, 16, 17); + level[1] = level_calculation(tmp_buf, &st->sub_level[1],2, 8, 32, 16, 17); /* 0 - 200 Hz */ - level[0] = level_calculation(tmp_buf, &st->sub_level[0],2, 8, 32, 0, 17); + level[0] = level_calculation(tmp_buf, &st->sub_level[0],2, 8, 32, 0, 17); } /****************************************************************************** @@ -266,31 +266,31 @@ static void update_cntrl( /* if a tone has been detected for a while, initialize stat_count */ if (sub((Word16) (st->tone_flag & 0x7c00), 0x7c00) == 0) { - st->stat_count = STAT_COUNT; + st->stat_count = STAT_COUNT; } else { /* if 8 last vad-decisions have been "0", reinitialize stat_count */ if ((st->vadreg & 0x7f80) == 0) { - st->stat_count = STAT_COUNT; + st->stat_count = STAT_COUNT; } else { - stat_rat = 0; + stat_rat = 0; for (i = 0; i < COMPLEN; i++) { if(level[i] > st->ave_level[i]) { - num = level[i]; - denom = st->ave_level[i]; + num = level[i]; + denom = st->ave_level[i]; } else { num = st->ave_level[i]; - denom = level[i]; + denom = level[i]; } /* Limit nimimum value of num and denom to STAT_THR_LEVEL */ if(num < STAT_THR_LEVEL) { - num = STAT_THR_LEVEL; + num = STAT_THR_LEVEL; } if(denom < STAT_THR_LEVEL) { @@ -307,7 +307,7 @@ static void update_cntrl( /* compare stat_rat with a threshold and update stat_count */ if(stat_rat > STAT_THR) { - st->stat_count = STAT_COUNT; + st->stat_count = STAT_COUNT; } else { if ((st->vadreg & 0x4000) != 0) @@ -315,7 +315,7 @@ static void update_cntrl( if (st->stat_count != 0) { - st->stat_count = st->stat_count - 1; + st->stat_count = st->stat_count - 1; } } } @@ -323,17 +323,17 @@ static void update_cntrl( } /* Update average amplitude estimate for stationarity estimation */ - alpha = ALPHA4; + alpha = ALPHA4; if(st->stat_count == STAT_COUNT) { - alpha = 32767; + alpha = 32767; } else if ((st->vadreg & 0x4000) == 0) { - alpha = ALPHA5; + alpha = ALPHA5; } for (i = 0; i < COMPLEN; i++) { - st->ave_level[i] = add1(st->ave_level[i], vo_mult_r(alpha, vo_sub(level[i], st->ave_level[i]))); + st->ave_level[i] = add1(st->ave_level[i], vo_mult_r(alpha, vo_sub(level[i], st->ave_level[i]))); } } @@ -354,25 +354,25 @@ static Word16 hangover_addition( /* return: VAD_flag indica /* if the input power (pow_sum) is lower than a threshold, clear counters and set VAD_flag to "0" */ if (low_power != 0) { - st->burst_count = 0; - st->hang_count = 0; + st->burst_count = 0; + st->hang_count = 0; return 0; } /* update the counters (hang_count, burst_count) */ if ((st->vadreg & 0x4000) != 0) { - st->burst_count = st->burst_count + 1; + st->burst_count = st->burst_count + 1; if(st->burst_count >= burst_len) { - st->hang_count = hang_len; + st->hang_count = hang_len; } return 1; } else { - st->burst_count = 0; + st->burst_count = 0; if (st->hang_count > 0) { - st->hang_count = st->hang_count - 1; + st->hang_count = st->hang_count - 1; return 1; } } @@ -391,7 +391,7 @@ static void noise_estimate_update( Word16 level[] /* i : sub-band levels of the input frame */ ) { - Word32 i; + Word32 i; Word16 alpha_up, alpha_down, bckr_add = 2; /* Control update of bckr_est[] */ @@ -400,19 +400,19 @@ static void noise_estimate_update( /* Choose update speed */ if ((0x7800 & st->vadreg) == 0) { - alpha_up = ALPHA_UP1; - alpha_down = ALPHA_DOWN1; + alpha_up = ALPHA_UP1; + alpha_down = ALPHA_DOWN1; } else { if ((st->stat_count == 0)) { - alpha_up = ALPHA_UP2; - alpha_down = ALPHA_DOWN2; + alpha_up = ALPHA_UP2; + alpha_down = ALPHA_DOWN2; } else { - alpha_up = 0; - alpha_down = ALPHA3; - bckr_add = 0; + alpha_up = 0; + alpha_down = ALPHA3; + bckr_add = 0; } } @@ -424,20 +424,20 @@ static void noise_estimate_update( if (temp < 0) { /* update downwards */ - st->bckr_est[i] = add1(-2, add(st->bckr_est[i],vo_mult_r(alpha_down, temp))); + st->bckr_est[i] = add1(-2, add(st->bckr_est[i],vo_mult_r(alpha_down, temp))); /* limit minimum value of the noise estimate to NOISE_MIN */ if(st->bckr_est[i] < NOISE_MIN) { - st->bckr_est[i] = NOISE_MIN; + st->bckr_est[i] = NOISE_MIN; } } else { /* update upwards */ - st->bckr_est[i] = add1(bckr_add, add1(st->bckr_est[i],vo_mult_r(alpha_up, temp))); + st->bckr_est[i] = add1(bckr_add, add1(st->bckr_est[i],vo_mult_r(alpha_up, temp))); /* limit maximum value of the noise estimate to NOISE_MAX */ if(st->bckr_est[i] > NOISE_MAX) { - st->bckr_est[i] = NOISE_MAX; + st->bckr_est[i] = NOISE_MAX; } } } @@ -445,7 +445,7 @@ static void noise_estimate_update( /* Update signal levels of the previous frame (old_level) */ for (i = 0; i < COMPLEN; i++) { - st->old_level[i] = level[i]; + st->old_level[i] = level[i]; } } @@ -473,7 +473,7 @@ static Word16 vad_decision( /* return value : VAD_flag /* Calculate squared sum of the input levels (level) divided by the background noise components * (bckr_est). */ - L_snr_sum = 0; + L_snr_sum = 0; for (i = 0; i < COMPLEN; i++) { Word16 exp; @@ -486,7 +486,7 @@ static Word16 vad_decision( /* return value : VAD_flag } /* Calculate average level of estimated background noise */ - L_temp = 0; + L_temp = 0; for (i = 1; i < COMPLEN; i++) /* ignore lowest band */ { L_temp = vo_L_add(L_temp, st->bckr_est[i]); @@ -498,7 +498,7 @@ static Word16 vad_decision( /* return value : VAD_flag if(st->speech_level < temp) { - st->speech_level = temp; + st->speech_level = temp; } ilog2_noise_level = ilog2(noise_level); @@ -511,33 +511,33 @@ static Word16 vad_decision( /* return value : VAD_flag temp2 = add1(SP_CH_MIN, vo_mult(SP_SLOPE, (ilog2_speech_level - SP_P1))); if (temp2 < SP_CH_MIN) { - temp2 = SP_CH_MIN; + temp2 = SP_CH_MIN; } if (temp2 > SP_CH_MAX) { - temp2 = SP_CH_MAX; + temp2 = SP_CH_MAX; } vad_thr = temp + temp2; if(vad_thr < THR_MIN) { - vad_thr = THR_MIN; + vad_thr = THR_MIN; } /* Shift VAD decision register */ - st->vadreg = (st->vadreg >> 1); + st->vadreg = (st->vadreg >> 1); /* Make intermediate VAD decision */ if(L_snr_sum > vo_L_mult(vad_thr, (512 * COMPLEN))) { - st->vadreg = (Word16) (st->vadreg | 0x4000); + st->vadreg = (Word16) (st->vadreg | 0x4000); } /* check if the input power (pow_sum) is lower than a threshold" */ if(pow_sum < VAD_POW_LOW) { - low_power_flag = 1; + low_power_flag = 1; } else { - low_power_flag = 0; + low_power_flag = 0; } /* Update background noise estimates */ noise_estimate_update(st, level); @@ -546,7 +546,7 @@ static Word16 vad_decision( /* return value : VAD_flag hang_len = add1(vo_mult(HANG_SLOPE, (vad_thr - HANG_P1)), HANG_HIGH); if(hang_len < HANG_LOW) { - hang_len = HANG_LOW; + hang_len = HANG_LOW; } burst_len = add1(vo_mult(BURST_SLOPE, (vad_thr - BURST_P1)), BURST_HIGH); @@ -575,20 +575,20 @@ static void Estimate_Speech( /* if the required activity count cannot be achieved, reset counters */ if((st->sp_est_cnt - st->sp_max_cnt) > (SP_EST_COUNT - SP_ACTIVITY_COUNT)) { - st->sp_est_cnt = 0; - st->sp_max = 0; - st->sp_max_cnt = 0; + st->sp_est_cnt = 0; + st->sp_max = 0; + st->sp_max_cnt = 0; } - st->sp_est_cnt += 1; + st->sp_est_cnt += 1; if (((st->vadreg & 0x4000)||(in_level > st->speech_level)) && (in_level > MIN_SPEECH_LEVEL1)) { /* update sp_max */ if(in_level > st->sp_max) { - st->sp_max = in_level; + st->sp_max = in_level; } - st->sp_max_cnt += 1; + st->sp_max_cnt += 1; if(st->sp_max_cnt >= SP_ACTIVITY_COUNT) { @@ -599,19 +599,19 @@ static void Estimate_Speech( /* select update speed */ if(tmp > st->speech_level) { - alpha = ALPHA_SP_UP; + alpha = ALPHA_SP_UP; } else { - alpha = ALPHA_SP_DOWN; + alpha = ALPHA_SP_DOWN; } if(tmp > MIN_SPEECH_LEVEL2) { - st->speech_level = add1(st->speech_level, vo_mult_r(alpha, vo_sub(tmp, st->speech_level))); + st->speech_level = add1(st->speech_level, vo_mult_r(alpha, vo_sub(tmp, st->speech_level))); } /* clear all counters used for speech estimation */ - st->sp_max = 0; - st->sp_max_cnt = 0; - st->sp_est_cnt = 0; + st->sp_max = 0; + st->sp_max_cnt = 0; + st->sp_est_cnt = 0; } } } @@ -767,22 +767,22 @@ Word16 wb_vad( /* Return value : VAD Decision, 1 Word32 L_temp, pow_sum; /* Calculate power of the input frame. */ - L_temp = 0L; + L_temp = 0L; for (i = 0; i < FRAME_LEN; i++) { L_temp = L_mac(L_temp, in_buf[i], in_buf[i]); } /* pow_sum = power of current frame and previous frame */ - pow_sum = L_add(L_temp, st->prev_pow_sum); + pow_sum = L_add(L_temp, st->prev_pow_sum); /* save power of current frame for next call */ - st->prev_pow_sum = L_temp; + st->prev_pow_sum = L_temp; /* If input power is very low, clear tone flag */ if (pow_sum < POW_TONE_THR) { - st->tone_flag = (Word16) (st->tone_flag & 0x1fff); + st->tone_flag = (Word16) (st->tone_flag & 0x1fff); } /* Run the filter bank and calculate signal levels at each band */ filter_bank(st, in_buf, level); @@ -791,7 +791,7 @@ Word16 wb_vad( /* Return value : VAD Decision, 1 VAD_flag = vad_decision(st, level, pow_sum); /* Calculate input level */ - L_temp = 0; + L_temp = 0; for (i = 1; i < COMPLEN; i++) /* ignore lowest band */ { L_temp = vo_L_add(L_temp, level[i]); diff --git a/media/libstagefright/codecs/amrwbenc/src/weight_a.c b/media/libstagefright/codecs/amrwbenc/src/weight_a.c index 8f0fb39..a02b48d 100644 --- a/media/libstagefright/codecs/amrwbenc/src/weight_a.c +++ b/media/libstagefright/codecs/amrwbenc/src/weight_a.c @@ -19,7 +19,7 @@ * * * Description:Weighting of LPC coefficients * * ap[i] = a[i] * (gamma ** i) * -* * +* * ************************************************************************/ #include "typedef.h" diff --git a/media/libstagefright/codecs/common/Config.mk b/media/libstagefright/codecs/common/Config.mk index 3d754e7..187f25c 100644 --- a/media/libstagefright/codecs/common/Config.mk +++ b/media/libstagefright/codecs/common/Config.mk @@ -1,8 +1,8 @@ -# +# # This configure file is just for Linux projects against Android # -VOPRJ := +VOPRJ := VONJ := # WARNING: @@ -20,5 +20,5 @@ endif VOTEST := 0 -VO_CFLAGS:=-DLINUX +VO_CFLAGS:=-DLINUX diff --git a/media/libstagefright/codecs/common/include/voAMRWB.h b/media/libstagefright/codecs/common/include/voAMRWB.h index 13290c7..d3eb537 100644 --- a/media/libstagefright/codecs/common/include/voAMRWB.h +++ b/media/libstagefright/codecs/common/include/voAMRWB.h @@ -29,20 +29,20 @@ extern "C" { #pragma pack(push, 4) /*!* the bit rate the codec supports*/ -typedef enum { +typedef enum { VOAMRWB_MDNONE = -1, /*!< Invalid mode */ VOAMRWB_MD66 = 0, /*!< 6.60kbps */ - VOAMRWB_MD885 = 1, /*!< 8.85kbps */ + VOAMRWB_MD885 = 1, /*!< 8.85kbps */ VOAMRWB_MD1265 = 2, /*!< 12.65kbps */ VOAMRWB_MD1425 = 3, /*!< 14.25kbps */ VOAMRWB_MD1585 = 4, /*!< 15.85bps */ VOAMRWB_MD1825 = 5, /*!< 18.25bps */ VOAMRWB_MD1985 = 6, /*!< 19.85kbps */ VOAMRWB_MD2305 = 7, /*!< 23.05kbps */ - VOAMRWB_MD2385 = 8, /*!< 23.85kbps> */ + VOAMRWB_MD2385 = 8, /*!< 23.85kbps> */ VOAMRWB_N_MODES = 9, /*!< Invalid mode */ VOAMRWB_MODE_MAX = VO_MAX_ENUM_VALUE - + }VOAMRWBMODE; /*!* the frame format the codec supports*/ @@ -51,17 +51,17 @@ typedef enum { /*One word (2-byte) for sync word (0x6b21)*/ /*One word (2-byte) for frame length N.*/ /*N words (2-byte) containing N bits (bit 0 = 0x007f, bit 1 = 0x0081).*/ - VOAMRWB_ITU = 1, + VOAMRWB_ITU = 1, /*One word (2-byte) for sync word (0x6b21).*/ - /*One word (2-byte) to indicate the frame type.*/ + /*One word (2-byte) to indicate the frame type.*/ /*One word (2-byte) to indicate the mode.*/ /*N words (2-byte) containing N bits (bit 0 = 0xff81, bit 1 = 0x007f).*/ - VOAMRWB_RFC3267 = 2, /* see RFC 3267 */ - VOAMRWB_TMAX = VO_MAX_ENUM_VALUE + VOAMRWB_RFC3267 = 2, /* see RFC 3267 */ + VOAMRWB_TMAX = VO_MAX_ENUM_VALUE }VOAMRWBFRAMETYPE; -#define VO_PID_AMRWB_Module 0x42261000 +#define VO_PID_AMRWB_Module 0x42261000 #define VO_PID_AMRWB_FORMAT (VO_PID_AMRWB_Module | 0x0002) #define VO_PID_AMRWB_CHANNELS (VO_PID_AMRWB_Module | 0x0003) #define VO_PID_AMRWB_SAMPLERATE (VO_PID_AMRWB_Module | 0x0004) diff --git a/media/libstagefright/codecs/common/include/voAudio.h b/media/libstagefright/codecs/common/include/voAudio.h index 21d0cf6..d8628ee 100644 --- a/media/libstagefright/codecs/common/include/voAudio.h +++ b/media/libstagefright/codecs/common/include/voAudio.h @@ -135,7 +135,7 @@ typedef struct VO_AUDIO_CODECAPI * \param pOutInfo [OUT] The codec fills audio format and the input data size used in current call. * pOutInfo->InputUsed is total used input data size in byte. * \retval VO_ERR_NONE Succeeded. - * VO_ERR_INPUT_BUFFER_SMALL. The input was finished or the input data was not enought. Continue to input + * VO_ERR_INPUT_BUFFER_SMALL. The input was finished or the input data was not enought. Continue to input * data before next call. */ VO_U32 (VO_API * GetOutputData) (VO_HANDLE hCodec, VO_CODECBUFFER * pOutBuffer, VO_AUDIO_OUTPUTINFO * pOutInfo); diff --git a/media/libstagefright/codecs/common/include/voIndex.h b/media/libstagefright/codecs/common/include/voIndex.h index a409a6e..320a2f8 100644 --- a/media/libstagefright/codecs/common/include/voIndex.h +++ b/media/libstagefright/codecs/common/include/voIndex.h @@ -173,7 +173,7 @@ enum // Module own error ID #define VO_ERR_Module 0x8xxx0X00 */ - + #define VO_PID_COMMON_BASE 0x40000000 /*!< The base of common param ID */ #define VO_PID_COMMON_QUERYMEM (VO_PID_COMMON_BASE | 0X0001) /*!< Query the memory needed; Reserved. */ #define VO_PID_COMMON_INPUTTYPE (VO_PID_COMMON_BASE | 0X0002) /*!< Set or get the input buffer type. VO_INPUT_TYPE */ -- cgit v1.1