FreeCalypso > hg > gsm-codec-lib
diff libtwamr/calc_cor.c @ 325:67c31802392b
libtwamr: integrate calc_cor.c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 18 Apr 2024 20:12:48 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtwamr/calc_cor.c Thu Apr 18 20:12:48 2024 +0000 @@ -0,0 +1,78 @@ +/* +******************************************************************************** +* +* GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001 +* R99 Version 3.3.0 +* REL-4 Version 4.1.0 +* +******************************************************************************** +* +* File : calc_cor.c +* Purpose : Calculate all correlations for prior the OL LTP +* +******************************************************************************** +*/ + +/* +******************************************************************************** +* MODULE INCLUDE FILE AND VERSION ID +******************************************************************************** +*/ +#include "namespace.h" +#include "calc_cor.h" + +/* +******************************************************************************** +* INCLUDE FILES +******************************************************************************** +*/ +#include "typedef.h" +#include "basic_op.h" +#include "oper_32b.h" +#include "no_count.h" +#include "cnst.h" + +/* +******************************************************************************** +* PUBLIC PROGRAM CODE +******************************************************************************** +*/ +/************************************************************************* + * + * FUNCTION: comp_corr + * + * PURPOSE: Calculate all correlations of scal_sig[] in a given delay + * range. + * + * DESCRIPTION: + * The correlation is given by + * cor[t] = <scal_sig[n],scal_sig[n-t]>, t=lag_min,...,lag_max + * The functions outputs the all correlations + * + *************************************************************************/ +void comp_corr ( + Word16 scal_sig[], /* i : scaled signal. */ + Word16 L_frame, /* i : length of frame to compute pitch */ + Word16 lag_max, /* i : maximum lag */ + Word16 lag_min, /* i : minimum lag */ + Word32 corr[]) /* o : correlation of selected lag */ +{ + Word16 i, j; + Word16 *p, *p1; + Word32 t0; + + for (i = lag_max; i >= lag_min; i--) + { + p = scal_sig; move16 (); + p1 = &scal_sig[-i]; move16 (); + t0 = 0; move32 (); + + for (j = 0; j < L_frame; j++, p++, p1++) + { + t0 = L_mac (t0, *p, *p1); + } + corr[-i] = t0; move32 (); + } + + return; +}