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

📄 hp_max.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             : hp_max.c*      Purpose          : Find the maximum correlation of scal_sig[] in a given*                         delay range.**********************************************************************************//**********************************************************************************                         MODULE INCLUDE FILE AND VERSION ID*********************************************************************************/#include "hp_max.h"const char hp_max_id[] = "@(#)$Id $" hp_max_h;/**********************************************************************************                         INCLUDE FILES*********************************************************************************/#include <stdio.h>#include <stdlib.h>#include "typedef.h"#include "basic_op.h"#include "oper_32b.h"#include "count.h"#include "cnst.h"/**********************************************************************************                         PUBLIC PROGRAM CODE*********************************************************************************/Word16 hp_max (      Word32 corr[],      /* i   : correlation vector.                      */    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                              */    Word16 *cor_hp_max) /* o   : max high-pass filtered norm. correlation */{    Word16 i;    Word16 *p, *p1;    Word32 max, t0, t1;    Word16 max16, t016, cor_max;    Word16 shift, shift1, shift2;        max = MIN_32;               move32 ();     t0 = 0L;                    move32 ();           for (i = lag_max-1; i > lag_min; i--)    {       /* high-pass filtering */       t0 = L_sub (L_sub(L_shl(corr[-i], 1), corr[-i-1]), corr[-i+1]);          t0 = L_abs (t0);              test ();        if (L_sub (t0, max) >= 0)       {          max = t0;             move32 ();        }    }    /* compute energy */    p = scal_sig;               move16 ();     p1 = &scal_sig[0];          move16 ();     t0 = 0L;                    move32 ();     for (i = 0; i < L_frame; i++, p++, p1++)    {       t0 = L_mac (t0, *p, *p1);    }    p = scal_sig;               move16 ();     p1 = &scal_sig[-1];         move16 ();     t1 = 0L;                    move32 ();     for (i = 0; i < L_frame; i++, p++, p1++)    {       t1 = L_mac (t1, *p, *p1);    }        /* high-pass filtering */    t0 = L_sub(L_shl(t0, 1), L_shl(t1, 1));    t0 = L_abs (t0);    /* max/t0 */    shift1 = sub(norm_l(max), 1);                     max16  = extract_h(L_shl(max, shift1));           shift2 = norm_l(t0);                              t016 =  extract_h(L_shl(t0, shift2));             test ();    if (t016 != 0)    {       cor_max = div_s(max16, t016);                  }    else    {       cor_max = 0;                                move16 ();    }        shift = sub(shift1, shift2);           test ();    if (shift >= 0)    {       *cor_hp_max = shr(cor_max, shift);          move16 (); /* Q15 */    }    else    {       *cor_hp_max = shl(cor_max, negate(shift));  move16 (); /* Q15 */    }    return 0;}

⌨️ 快捷键说明

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