123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
-
- #include <string.h>
- #include <math.h>
- #include "constants.h"
- #include "filter.h"
-
- float gainquant(
- float in,
- float maxIn,
- int cblen,
- int *index
- ){
- int i, tindex;
- float minmeasure,measure, *cb, scale;
-
- scale=maxIn;
- if (scale<0.1) {
- scale=(float)0.1;
- }
-
- if (cblen == 8) {
- cb = gain_sq3Tbl;
- } else if (cblen == 16) {
- cb = gain_sq4Tbl;
- } else {
- cb = gain_sq5Tbl;
- }
-
- 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 scale*cb[tindex];
- }
-
- float gaindequant(
- int index,
- float maxIn,
- int cblen
- ){
- float scale;
-
- scale=(float)fabs(maxIn);
- if (scale<0.1) {
- scale=(float)0.1;
- }
-
- 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;
- }
|