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

📄 lsp_avg.c

📁 arm音频编解码库
💻 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             : lsp_avg.c*      Purpose:         : LSP averaging and history*******************************************************************************/  /*******************************************************************************                         MODULE INCLUDE FILE AND VERSION ID******************************************************************************/#include "lsp_avg.h"const char lsp_avg_id[] = "@(#)$Id $" lsp_avg_h; /*******************************************************************************                         INCLUDE FILES******************************************************************************/#include <stdlib.h>#include <stdio.h>#include "basic_op.h"#include "oper_32b.h"#include "count.h"#include "q_plsf_5.tab"#include "copy.h"/*******************************************************************************                         LOCAL VARIABLES AND TABLES******************************************************************************//*******************************************************************************                         PUBLIC PROGRAM CODE******************************************************************************//*****************************************************************************  Function    : lsp_avg_init*  Purpose     : Allocates memory and initializes state variables****************************************************************************/int lsp_avg_init (lsp_avgState **state){  lsp_avgState* s;   if (state == (lsp_avgState **) NULL){      fprintf(stderr, "lsp_avg_init: invalid parameter\n");      return -1;  }  *state = NULL;   /* allocate memory */  if ((s = (lsp_avgState *) malloc(sizeof(lsp_avgState))) == NULL){      fprintf(stderr, "lsp_avg_init: can not malloc state structure\n");      return -1;  }  lsp_avg_reset(s);  *state = s;    return 0;} /*****************************************************************************  Function    : lsp_avg_reset*  Purpose     : Resets state memory****************************************************************************/int lsp_avg_reset (lsp_avgState *st){   if (st == (lsp_avgState *) NULL){      fprintf(stderr, "lsp_avg_reset: invalid parameter\n");      return -1;  }  Copy(mean_lsf, &st->lsp_meanSave[0], M);    return 0;} /*****************************************************************************  Function    : lsp_avg_exit*  Purpose     : The memory used for state memory is freed****************************************************************************/void lsp_avg_exit (lsp_avgState **state){  if (state == NULL || *state == NULL)      return;  /* deallocate memory */  free(*state);  *state = NULL;    return;}/*****************************************************************************  Function    : lsp_avg*  Purpose     : Calculate the LSP averages****************************************************************************/void lsp_avg (    lsp_avgState *st,         /* i/o : State struct                 Q15 */    Word16 *lsp               /* i   : state of the state machine   Q15 */){    Word16 i;    Word32 L_tmp;            /* Q31 */    for (i = 0; i < M; i++) {       /* mean = 0.84*mean */       L_tmp = L_deposit_h(st->lsp_meanSave[i]);       L_tmp = L_msu(L_tmp, EXPCONST, st->lsp_meanSave[i]);       /* Add 0.16 of newest LSPs to mean */       L_tmp = L_mac(L_tmp, EXPCONST, lsp[i]);       /* Save means */       st->lsp_meanSave[i] = round(L_tmp);          move16();   /* Q15 */    }    return;}

⌨️ 快捷键说明

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