From 81d1b2797aa3945c529d57f9ddf6179ec2b392a4 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sat, 7 Apr 2007 12:47:34 +0000 Subject: Moved ilbc to third_party directory git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/split-3rd-party@1169 74dad513-b988-da41-8d7b-12977e46ad98 --- third_party/ilbc/gainquant.c | 116 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 third_party/ilbc/gainquant.c (limited to 'third_party/ilbc/gainquant.c') diff --git a/third_party/ilbc/gainquant.c b/third_party/ilbc/gainquant.c new file mode 100644 index 00000000..0e74ff82 --- /dev/null +++ b/third_party/ilbc/gainquant.c @@ -0,0 +1,116 @@ + + /****************************************************************** + + iLBC Speech Coder ANSI-C Source Code + + + + + + + gainquant.c + + Copyright (C) The Internet Society (2004). + All Rights Reserved. + + ******************************************************************/ + + #include + #include + #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