aboutsummaryrefslogtreecommitdiffstats
path: root/codecs/ilbc/gainquant.c
diff options
context:
space:
mode:
Diffstat (limited to 'codecs/ilbc/gainquant.c')
-rwxr-xr-xcodecs/ilbc/gainquant.c208
1 files changed, 105 insertions, 103 deletions
diff --git a/codecs/ilbc/gainquant.c b/codecs/ilbc/gainquant.c
index e0085c688..a23ce05b4 100755
--- a/codecs/ilbc/gainquant.c
+++ b/codecs/ilbc/gainquant.c
@@ -1,104 +1,106 @@
-
-/******************************************************************
-
- iLBC Speech Coder ANSI-C Source Code
-
- gainquant.c
-
- Copyright (c) 2001,
- Global IP Sound AB.
- All rights reserved.
-
-******************************************************************/
-
-#include <string.h>
-#include <math.h>
-#include "constants.h"
-#include "filter.h"
-#include "gainquant.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;
+
+/******************************************************************
+
+ 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]);
- /* 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;
-}
-
-
+ 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;
+}
+
+