📄 gainquant.c
字号:
/****************************************************************** 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 "gainquant.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 + -