⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autocorr.c

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 C
字号:
/***********************************************************************************      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             : autocorr.c**********************************************************************************//**********************************************************************************                         MODULE INCLUDE FILE AND VERSION ID*********************************************************************************/#include "autocorr.h"const char autocorr_id[] = "@(#)$Id $" autocorr_h; /**********************************************************************************                         INCLUDE FILES*********************************************************************************/#include "typedef.h"#include "basic_op.h"#include "oper_32b.h"#include "count.h"#include "cnst.h"/**********************************************************************************                         LOCAL VARIABLES AND TABLES*********************************************************************************/ /**********************************************************************************                         PUBLIC PROGRAM CODE*********************************************************************************//*****************************************************************************  Function    : autocorr*  Purpose     : Compute autocorrelations of signal with windowing****************************************************************************/Word16 Autocorr (    Word16 x[],            /* (i)    : Input signal (L_WINDOW)            */    Word16 m,              /* (i)    : LPC order                          */    Word16 r_h[],          /* (o)    : Autocorrelations  (msb)            */    Word16 r_l[],          /* (o)    : Autocorrelations  (lsb)            */    const Word16 wind[]    /* (i)    : window for LPC analysis (L_WINDOW) */){    Word16 i, j, norm;    Word16 y[L_WINDOW];    Word32 sum;    Word16 overfl, overfl_shft;    /* Windowing of signal */    for (i = 0; i < L_WINDOW; i++)    {        y[i] = mult_r (x[i], wind[i]); move16 ();     }    /* Compute r[0] and test for overflow */    overfl_shft = 0;                   move16 ();     do    {        overfl = 0;                    move16 ();         sum = 0L;                      move32 ();        for (i = 0; i < L_WINDOW; i++)        {            sum = L_mac (sum, y[i], y[i]);        }        /* If overflow divide y[] by 4 */        test ();         if (L_sub (sum, MAX_32) == 0L)        {            overfl_shft = add (overfl_shft, 4);            overfl = 1;                move16 (); /* Set the overflow flag */            for (i = 0; i < L_WINDOW; i++)            {                y[i] = shr (y[i], 2);  move16 ();             }        }        test ();     }    while (overfl != 0);    sum = L_add (sum, 1L);             /* Avoid the case of all zeros */    /* Normalization of r[0] */    norm = norm_l (sum);    sum = L_shl (sum, norm);    L_Extract (sum, &r_h[0], &r_l[0]); /* Put in DPF format (see oper_32b) */    /* r[1] to r[m] */    for (i = 1; i <= m; i++)    {        sum = 0;                       move32 ();         for (j = 0; j < L_WINDOW - i; j++)        {            sum = L_mac (sum, y[j], y[j + i]);        }        sum = L_shl (sum, norm);        L_Extract (sum, &r_h[i], &r_l[i]);    }    norm = sub (norm, overfl_shft);    return norm;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -