mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
Merged revisions 110880 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r110880 | kpfleming | 2008-03-26 09:42:35 -0700 (Wed, 26 Mar 2008) | 10 lines Merged revisions 110869 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r110869 | kpfleming | 2008-03-26 08:53:46 -0700 (Wed, 26 Mar 2008) | 2 lines due to licensing restrictions, we cannot distribute the source code for iLBC encoding and decoding... so remove it, and add instructions on how the user can obtain it themselves ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@110881 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1,108 +0,0 @@
|
||||
|
||||
/******************************************************************
|
||||
|
||||
iLBC Speech Coder ANSI-C Source Code
|
||||
|
||||
iCBConstruct.c
|
||||
|
||||
Copyright (C) The Internet Society (2004).
|
||||
All Rights Reserved.
|
||||
|
||||
******************************************************************/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "iLBC_define.h"
|
||||
#include "iCBConstruct.h"
|
||||
#include "gainquant.h"
|
||||
#include "getCBvec.h"
|
||||
|
||||
/*----------------------------------------------------------------*
|
||||
* Convert the codebook indexes to make the search easier
|
||||
*---------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
void index_conv_enc(
|
||||
int *index /* (i/o) Codebook indexes */
|
||||
){
|
||||
int k;
|
||||
|
||||
for (k=1; k<CB_NSTAGES; k++) {
|
||||
|
||||
if ((index[k]>=108)&&(index[k]<172)) {
|
||||
index[k]-=64;
|
||||
} else if (index[k]>=236) {
|
||||
index[k]-=128;
|
||||
} else {
|
||||
/* ERROR */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void index_conv_dec(
|
||||
int *index /* (i/o) Codebook indexes */
|
||||
){
|
||||
int k;
|
||||
|
||||
for (k=1; k<CB_NSTAGES; k++) {
|
||||
|
||||
if ((index[k]>=44)&&(index[k]<108)) {
|
||||
index[k]+=64;
|
||||
} else if ((index[k]>=108)&&(index[k]<128)) {
|
||||
index[k]+=128;
|
||||
} else {
|
||||
/* ERROR */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------*
|
||||
* Construct decoded vector from codebook and gains.
|
||||
*---------------------------------------------------------------*/
|
||||
|
||||
void iCBConstruct(
|
||||
float *decvector, /* (o) Decoded vector */
|
||||
int *index, /* (i) Codebook indices */
|
||||
int *gain_index,/* (i) Gain quantization indices */
|
||||
float *mem, /* (i) Buffer for codevector construction */
|
||||
int lMem, /* (i) Length of buffer */
|
||||
int veclen, /* (i) Length of vector */
|
||||
int nStages /* (i) Number of codebook stages */
|
||||
){
|
||||
int j,k;
|
||||
float gain[CB_NSTAGES];
|
||||
float cbvec[SUBL];
|
||||
|
||||
/* gain de-quantization */
|
||||
|
||||
gain[0] = gaindequant(gain_index[0], 1.0, 32);
|
||||
|
||||
|
||||
if (nStages > 1) {
|
||||
gain[1] = gaindequant(gain_index[1],
|
||||
(float)fabs(gain[0]), 16);
|
||||
}
|
||||
if (nStages > 2) {
|
||||
gain[2] = gaindequant(gain_index[2],
|
||||
(float)fabs(gain[1]), 8);
|
||||
}
|
||||
|
||||
/* codebook vector construction and construction of
|
||||
total vector */
|
||||
|
||||
getCBvec(cbvec, mem, index[0], lMem, veclen);
|
||||
for (j=0;j<veclen;j++){
|
||||
decvector[j] = gain[0]*cbvec[j];
|
||||
}
|
||||
if (nStages > 1) {
|
||||
for (k=1; k<nStages; k++) {
|
||||
getCBvec(cbvec, mem, index[k], lMem, veclen);
|
||||
for (j=0;j<veclen;j++) {
|
||||
decvector[j] += gain[k]*cbvec[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user