diff options
Diffstat (limited to 'media/libstagefright/codecs/amrwbenc/src/syn_filt.c')
-rw-r--r-- | media/libstagefright/codecs/amrwbenc/src/syn_filt.c | 240 |
1 files changed, 120 insertions, 120 deletions
diff --git a/media/libstagefright/codecs/amrwbenc/src/syn_filt.c b/media/libstagefright/codecs/amrwbenc/src/syn_filt.c index 961aadc..7eba12f 100644 --- a/media/libstagefright/codecs/amrwbenc/src/syn_filt.c +++ b/media/libstagefright/codecs/amrwbenc/src/syn_filt.c @@ -29,134 +29,134 @@ #define UNUSED(x) (void)(x) void Syn_filt( - Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients */ - Word16 x[], /* (i) : input signal */ - Word16 y[], /* (o) : output signal */ - Word16 lg, /* (i) : size of filtering */ - Word16 mem[], /* (i/o) : memory associated with this filtering. */ - Word16 update /* (i) : 0=no update, 1=update of memory. */ - ) + Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients */ + Word16 x[], /* (i) : input signal */ + Word16 y[], /* (o) : output signal */ + Word16 lg, /* (i) : size of filtering */ + Word16 mem[], /* (i/o) : memory associated with this filtering. */ + Word16 update /* (i) : 0=no update, 1=update of memory. */ + ) { - Word32 i, a0; - Word16 y_buf[L_SUBFR16k + M16k]; - Word32 L_tmp; - Word16 *yy, *p1, *p2; - yy = &y_buf[0]; - /* copy initial filter states into synthesis buffer */ - for (i = 0; i < 16; i++) - { - *yy++ = mem[i]; - } - a0 = (a[0] >> 1); /* input / 2 */ - /* Do the filtering. */ - for (i = 0; i < lg; i++) - { - p1 = &a[1]; - p2 = &yy[i-1]; - L_tmp = vo_mult32(a0, x[i]); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1++), (*p2--)); - L_tmp -= vo_mult32((*p1), (*p2)); - - L_tmp = L_shl2(L_tmp, 4); - y[i] = yy[i] = extract_h(L_add(L_tmp, 0x8000)); - } - /* Update memory if required */ - if (update) - for (i = 0; i < 16; i++) - { - mem[i] = yy[lg - 16 + i]; - } - return; + Word32 i, a0; + Word16 y_buf[L_SUBFR16k + M16k]; + Word32 L_tmp; + Word16 *yy, *p1, *p2; + yy = &y_buf[0]; + /* copy initial filter states into synthesis buffer */ + for (i = 0; i < 16; i++) + { + *yy++ = mem[i]; + } + a0 = (a[0] >> 1); /* input / 2 */ + /* Do the filtering. */ + for (i = 0; i < lg; i++) + { + p1 = &a[1]; + p2 = &yy[i-1]; + L_tmp = vo_mult32(a0, x[i]); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1++), (*p2--)); + L_tmp -= vo_mult32((*p1), (*p2)); + + L_tmp = L_shl2(L_tmp, 4); + y[i] = yy[i] = extract_h(L_add(L_tmp, 0x8000)); + } + /* Update memory if required */ + if (update) + for (i = 0; i < 16; i++) + { + mem[i] = yy[lg - 16 + i]; + } + return; } void Syn_filt_32( - Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients */ - Word16 m, /* (i) : order of LP filter */ - Word16 exc[], /* (i) Qnew: excitation (exc[i] >> Qnew) */ - Word16 Qnew, /* (i) : exc scaling = 0(min) to 8(max) */ - Word16 sig_hi[], /* (o) /16 : synthesis high */ - Word16 sig_lo[], /* (o) /16 : synthesis low */ - Word16 lg /* (i) : size of filtering */ - ) + Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients */ + Word16 m, /* (i) : order of LP filter */ + Word16 exc[], /* (i) Qnew: excitation (exc[i] >> Qnew) */ + Word16 Qnew, /* (i) : exc scaling = 0(min) to 8(max) */ + Word16 sig_hi[], /* (o) /16 : synthesis high */ + Word16 sig_lo[], /* (o) /16 : synthesis low */ + Word16 lg /* (i) : size of filtering */ + ) { - Word32 i,a0; - Word32 L_tmp, L_tmp1; - Word16 *p1, *p2, *p3; + Word32 i,a0; + Word32 L_tmp, L_tmp1; + Word16 *p1, *p2, *p3; UNUSED(m); - a0 = a[0] >> (4 + Qnew); /* input / 16 and >>Qnew */ - /* Do the filtering. */ - for (i = 0; i < lg; i++) - { - L_tmp = 0; - L_tmp1 = 0; - p1 = a; - p2 = &sig_lo[i - 1]; - p3 = &sig_hi[i - 1]; - - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - L_tmp -= vo_mult32((*p2--), (*p1)); - L_tmp1 -= vo_mult32((*p3--), (*p1++)); - - 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_lo = bit4 to bit15 of synthesis */ - L_tmp >>= 4; /* 4 : sig_lo[i] >> 4 */ - sig_lo[i] = (Word16)((L_tmp - (sig_hi[i] << 13))); - } - - return; + a0 = a[0] >> (4 + Qnew); /* input / 16 and >>Qnew */ + /* Do the filtering. */ + for (i = 0; i < lg; i++) + { + L_tmp = 0; + L_tmp1 = 0; + p1 = a; + p2 = &sig_lo[i - 1]; + p3 = &sig_hi[i - 1]; + + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + L_tmp -= vo_mult32((*p2--), (*p1)); + L_tmp1 -= vo_mult32((*p3--), (*p1++)); + + 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_lo = bit4 to bit15 of synthesis */ + L_tmp >>= 4; /* 4 : sig_lo[i] >> 4 */ + sig_lo[i] = (Word16)((L_tmp - (sig_hi[i] << 13))); + } + + return; } |