/****************************************************************** iLBC Speech Coder ANSI-C Source Code gainquant.c Copyright (C) The Internet Society (2004). All Rights Reserved. ******************************************************************/ #include #include #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