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

📄 preemph.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             : preemph.c*      Purpose          : Preemphasis filtering*      Description      : Filtering through 1 - g z^-1 **********************************************************************************//**********************************************************************************                         MODULE INCLUDE FILE AND VERSION ID*********************************************************************************/#include "preemph.h"const char preemph_id[] = "@(#)$Id $" preemph_h;/**********************************************************************************                         INCLUDE FILES*********************************************************************************/#include <stdlib.h>#include <stdio.h>#include "typedef.h"#include "basic_op.h"#include "count.h"/**********************************************************************************                         LOCAL VARIABLES AND TABLES*********************************************************************************//**********************************************************************************                         PUBLIC PROGRAM CODE*********************************************************************************//***************************************************************************  Function:   Post_Filter_init*  Purpose:    Allocates memory for filter structure and initializes*              state memory****************************************************************************/int preemphasis_init (preemphasisState **state){  preemphasisState* s;   if (state == (preemphasisState **) NULL){      fprintf(stderr, "preemphasis_init: invalid parameter\n");      return -1;  }  *state = NULL;   /* allocate memory */  if ((s= (preemphasisState *) malloc(sizeof(preemphasisState))) == NULL){      fprintf(stderr, "preemphasis_init: can not malloc state structure\n");      return -1;  }    preemphasis_reset(s);  *state = s;    return 0;}/***************************************************************************  Function:   preemphasis_reset*  Purpose:    Initializes state memory to zero****************************************************************************/int preemphasis_reset (preemphasisState *state){  if (state == (preemphasisState *) NULL){      fprintf(stderr, "preemphasis_reset: invalid parameter\n");      return -1;  }    state->mem_pre = 0;   return 0;} /***************************************************************************  Function:   preemphasis_exit*  Purpose:    The memory used for state memory is freed****************************************************************************/void preemphasis_exit (preemphasisState **state){  if (state == NULL || *state == NULL)      return;   /* deallocate memory */  free(*state);  *state = NULL;    return;} /****************************************************************************  Function:  preemphasis*  Purpose:   Filtering through 1 - g z^-1 ****************************************************************************/int preemphasis (    preemphasisState *st, /* (i/o)  : preemphasis filter state    */    Word16 *signal, /* (i/o)   : input signal overwritten by the output */    Word16 g,       /* (i)     : preemphasis coefficient                */    Word16 L        /* (i)     : size of filtering                      */){    Word16 *p1, *p2, temp, i;    p1 = signal + L - 1;                    move16 ();     p2 = p1 - 1;                            move16 ();     temp = *p1;                             move16 ();     for (i = 0; i <= L - 2; i++)    {        *p1 = sub (*p1, mult (g, *p2--));   move16 ();         p1--;    }    *p1 = sub (*p1, mult (g, st->mem_pre));     move16 ();     st->mem_pre = temp;                         move16 ();     return 0;}

⌨️ 快捷键说明

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