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

📄 gainquant.cpp

📁 KphoneSI (kpsi) is a SIP (Session Initiation Protocol) user agent for Linux, with which you can in
💻 CPP
字号:
   /******************************************************************       iLBC Speech Coder ANSI-C Source Code       gainquant.c       Copyright (C) The Internet Society (2004).       All Rights Reserved.   ******************************************************************/   #include <string.h>   #include <math.h>   #include "constants.h"   #include "filter.h"   /*----------------------------------------------------------------*    *  quantizer for the gain in the gain-shape coding of residual    *---------------------------------------------------------------*/   float gainquant(/* (o) quantized gain value */       float in,       /* (i) gain value */       float maxIn,/* (i) maximum of gain value */       int cblen,      /* (i) number of quantization indices */       int *index      /* (o) quantization index */   ){       int i, tindex;       float minmeasure,measure, *cb, scale;       /* ensure a lower bound on the scaling factor */       scale=maxIn;       if (scale<0.1) {           scale=(float)0.1;       }       /* select the quantization table */       if (cblen == 8) {           cb = gain_sq3Tbl;       } else if (cblen == 16) {           cb = gain_sq4Tbl;       } else  {           cb = gain_sq5Tbl;       }       /* select the best index in the quantization table */       minmeasure=10000000.0;       tindex=0;       for (i=0; i<cblen; i++) {           measure=(in-scale*cb[i])*(in-scale*cb[i]);           if (measure<minmeasure) {               tindex=i;               minmeasure=measure;           }       }       *index=tindex;       /* return the quantized value */       return scale*cb[tindex];   }   /*----------------------------------------------------------------*    *  decoder for quantized gains in the gain-shape coding of    *  residual    *---------------------------------------------------------------*/   float gaindequant(  /* (o) quantized gain value */       int index,      /* (i) quantization index */       float maxIn,/* (i) maximum of unquantized gain */       int cblen       /* (i) number of quantization indices */   ){       float scale;       /* obtain correct scale factor */       scale=(float)fabs(maxIn);       if (scale<0.1) {           scale=(float)0.1;       }       /* select the quantization table and return the decoded value */       if (cblen==8) {           return scale*gain_sq3Tbl[index];       } else if (cblen==16) {           return scale*gain_sq4Tbl[index];       }       else if (cblen==32) {           return scale*gain_sq5Tbl[index];       }       return 0.0;   }

⌨️ 快捷键说明

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