diff options
Diffstat (limited to 'media/libstagefright/codecs/amrwbenc/src/voicefac.c')
-rw-r--r-- | media/libstagefright/codecs/amrwbenc/src/voicefac.c | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/media/libstagefright/codecs/amrwbenc/src/voicefac.c b/media/libstagefright/codecs/amrwbenc/src/voicefac.c index d890044..c9f48c2 100644 --- a/media/libstagefright/codecs/amrwbenc/src/voicefac.c +++ b/media/libstagefright/codecs/amrwbenc/src/voicefac.c @@ -26,65 +26,65 @@ #include "math_op.h" Word16 voice_factor( /* (o) Q15 : factor (-1=unvoiced to 1=voiced) */ - Word16 exc[], /* (i) Q_exc : pitch excitation */ - Word16 Q_exc, /* (i) : exc format */ - Word16 gain_pit, /* (i) Q14 : gain of pitch */ - Word16 code[], /* (i) Q9 : Fixed codebook excitation */ - Word16 gain_code, /* (i) Q0 : gain of code */ - Word16 L_subfr /* (i) : subframe length */ - ) + Word16 exc[], /* (i) Q_exc : pitch excitation */ + Word16 Q_exc, /* (i) : exc format */ + Word16 gain_pit, /* (i) Q14 : gain of pitch */ + Word16 code[], /* (i) Q9 : Fixed codebook excitation */ + Word16 gain_code, /* (i) Q0 : gain of code */ + Word16 L_subfr /* (i) : subframe length */ + ) { - Word16 tmp, exp, ener1, exp1, ener2, exp2; - Word32 i, L_tmp; + Word16 tmp, exp, ener1, exp1, ener2, exp2; + Word32 i, L_tmp; #ifdef ASM_OPT /* asm optimization branch */ - ener1 = extract_h(Dot_product12_asm(exc, exc, L_subfr, &exp1)); + ener1 = extract_h(Dot_product12_asm(exc, exc, L_subfr, &exp1)); #else - ener1 = extract_h(Dot_product12(exc, exc, L_subfr, &exp1)); + ener1 = extract_h(Dot_product12(exc, exc, L_subfr, &exp1)); #endif - exp1 = exp1 - (Q_exc + Q_exc); - L_tmp = vo_L_mult(gain_pit, gain_pit); - exp = norm_l(L_tmp); - tmp = extract_h(L_tmp << exp); - ener1 = vo_mult(ener1, tmp); - exp1 = exp1 - exp - 10; /* 10 -> gain_pit Q14 to Q9 */ + exp1 = exp1 - (Q_exc + Q_exc); + L_tmp = vo_L_mult(gain_pit, gain_pit); + exp = norm_l(L_tmp); + tmp = extract_h(L_tmp << exp); + ener1 = vo_mult(ener1, tmp); + exp1 = exp1 - exp - 10; /* 10 -> gain_pit Q14 to Q9 */ #ifdef ASM_OPT /* asm optimization branch */ - ener2 = extract_h(Dot_product12_asm(code, code, L_subfr, &exp2)); + ener2 = extract_h(Dot_product12_asm(code, code, L_subfr, &exp2)); #else - ener2 = extract_h(Dot_product12(code, code, L_subfr, &exp2)); + ener2 = extract_h(Dot_product12(code, code, L_subfr, &exp2)); #endif - exp = norm_s(gain_code); - tmp = gain_code << exp; - tmp = vo_mult(tmp, tmp); - ener2 = vo_mult(ener2, tmp); - exp2 = exp2 - (exp + exp); + exp = norm_s(gain_code); + tmp = gain_code << exp; + tmp = vo_mult(tmp, tmp); + ener2 = vo_mult(ener2, tmp); + exp2 = exp2 - (exp + exp); - i = exp1 - exp2; + i = exp1 - exp2; - if (i >= 0) - { - ener1 = ener1 >> 1; - ener2 = ener2 >> (i + 1); - } else - { - ener1 = ener1 >> (1 - i); - ener2 = ener2 >> 1; - } + if (i >= 0) + { + ener1 = ener1 >> 1; + ener2 = ener2 >> (i + 1); + } else + { + ener1 = ener1 >> (1 - i); + ener2 = ener2 >> 1; + } - tmp = vo_sub(ener1, ener2); - ener1 = add1(add1(ener1, ener2), 1); + tmp = vo_sub(ener1, ener2); + ener1 = add1(add1(ener1, ener2), 1); - if (tmp >= 0) - { - tmp = div_s(tmp, ener1); - } else - { - tmp = vo_negate(div_s(vo_negate(tmp), ener1)); - } + if (tmp >= 0) + { + tmp = div_s(tmp, ener1); + } else + { + tmp = vo_negate(div_s(vo_negate(tmp), ener1)); + } - return (tmp); + return (tmp); } |