2
/******************************************************************
4
iLBC Speech Coder ANSI-C Source Code
13
Copyright (C) The Internet Society (2004).
16
******************************************************************/
20
#include "constants.h"
23
/*----------------------------------------------------------------*
24
* quantizer for the gain in the gain-shape coding of residual
25
*---------------------------------------------------------------*/
27
float gainquant(/* (o) quantized gain value */
28
float in, /* (i) gain value */
29
float maxIn,/* (i) maximum of gain value */
30
int cblen, /* (i) number of quantization indices */
31
int *index /* (o) quantization index */
34
float minmeasure,measure, *cb, scale;
36
/* ensure a lower bound on the scaling factor */
44
/* select the quantization table */
48
} else if (cblen == 16) {
54
/* select the best index in the quantization table */
56
minmeasure=10000000.0;
58
for (i=0; i<cblen; i++) {
64
measure=(in-scale*cb[i])*(in-scale*cb[i]);
66
if (measure<minmeasure) {
73
/* return the quantized value */
75
return scale*cb[tindex];
78
/*----------------------------------------------------------------*
79
* decoder for quantized gains in the gain-shape coding of
81
*---------------------------------------------------------------*/
83
float gaindequant( /* (o) quantized gain value */
84
int index, /* (i) quantization index */
85
float maxIn,/* (i) maximum of unquantized gain */
86
int cblen /* (i) number of quantization indices */
90
/* obtain correct scale factor */
92
scale=(float)fabs(maxIn);
98
/* select the quantization table and return the decoded value */
101
return scale*gain_sq3Tbl[index];
102
} else if (cblen==16) {
103
return scale*gain_sq4Tbl[index];
105
else if (cblen==32) {
106
return scale*gain_sq5Tbl[index];