swap to new ilbc library

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12095 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris committed 2009-02-17 16:28:01 +00:00
1 parent d6993cb472
commit 749114b704
191 files changed
+60584 -19045

No files matched your search

+159
View File
@@ -0,0 +1,159 @@
/*
* iLBC - a library for the iLBC codec
*
* ilbc.h - The iLBC low bit rate speech codec.
*
* Adapted by Steve Underwood <steveu@coppice.org> from the reference
* iLBC code supplied in RFC3951.
*
* Copyright (C) The Internet Society (2004).
* All Rights Reserved.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: ilbc.h,v 1.1.1.1 2008/02/15 12:15:55 steveu Exp $
*/
#if !defined(_ILBC_ILBC_H_)
#define _ILBC_ILBC_H_
#define ILBC_BLOCK_LEN_20MS 160
#define ILBC_BLOCK_LEN_30MS 240
#define ILBC_BLOCK_LEN_MAX 240
#define ILBC_NO_OF_BYTES_20MS 38
#define ILBC_NO_OF_BYTES_30MS 50
#define ILBC_NO_OF_BYTES_MAX 50
#define ILBC_NUM_SUB_MAX 6
#define SUBL 40
#define ENH_BLOCKL 80 /* block length */
#define ENH_NBLOCKS_TOT 8 /* ENH_NBLOCKS + ENH_NBLOCKS_EXTRA */
#define ENH_BUFL (ENH_NBLOCKS_TOT*ENH_BLOCKL)
#define ILBC_LPC_FILTERORDER 10
#define LPC_LOOKBACK 60
#define CB_NSTAGES 3
#define STATE_BITS 3
#define BYTE_LEN 8
#define ILBC_ULP_CLASSES 3
typedef struct
{
int lsf_bits[6][ILBC_ULP_CLASSES + 2];
int start_bits[ILBC_ULP_CLASSES + 2];
int startfirst_bits[ILBC_ULP_CLASSES + 2];
int scale_bits[ILBC_ULP_CLASSES + 2];
int state_bits[ILBC_ULP_CLASSES + 2];
int extra_cb_index[CB_NSTAGES][ILBC_ULP_CLASSES + 2];
int extra_cb_gain[CB_NSTAGES][ILBC_ULP_CLASSES + 2];
int cb_index[ILBC_NUM_SUB_MAX][CB_NSTAGES][ILBC_ULP_CLASSES + 2];
int cb_gain[ILBC_NUM_SUB_MAX][CB_NSTAGES][ILBC_ULP_CLASSES + 2];
} ilbc_ulp_inst_t;
/* Type definition encoder instance */
typedef struct
{
/* flag for frame size mode */
int mode;
/* basic parameters for different frame sizes */
int blockl;
int nsub;
int nasub;
int no_of_bytes;
int lpc_n;
int state_short_len;
const ilbc_ulp_inst_t *ULP_inst;
/* analysis filter state */
float anaMem[ILBC_LPC_FILTERORDER];
/* old lsf parameters for interpolation */
float lsfold[ILBC_LPC_FILTERORDER];
float lsfdeqold[ILBC_LPC_FILTERORDER];
/* signal buffer for LP analysis */
float lpc_buffer[LPC_LOOKBACK + ILBC_BLOCK_LEN_MAX];
/* state of input HP filter */
float hpimem[4];
} ilbc_encode_state_t;
/* Type definition decoder instance */
typedef struct
{
/* Flag for frame size mode */
int mode;
/* Basic parameters for different frame sizes */
int blockl;
int nsub;
int nasub;
int no_of_bytes;
int lpc_n;
int state_short_len;
const ilbc_ulp_inst_t *ULP_inst;
/* Synthesis filter state */
float syntMem[ILBC_LPC_FILTERORDER];
/* Old LSF for interpolation */
float lsfdeqold[ILBC_LPC_FILTERORDER];
/* Pitch lag estimated in enhancer and used in PLC */
int last_lag;
/* PLC state information */
int prevLag, consPLICount, prevPLI, prev_enh_pl;
float prevLpc[ILBC_LPC_FILTERORDER + 1];
float prevResidual[ILBC_NUM_SUB_MAX*SUBL];
float per;
unsigned long seed;
/* Previous synthesis filter parameters */
float old_syntdenum[(ILBC_LPC_FILTERORDER + 1)*ILBC_NUM_SUB_MAX];
/* State of output HP filter */
float hpomem[4];
/* Enhancer state information */
int use_enhancer;
float enh_buf[ENH_BUFL];
float enh_period[ENH_NBLOCKS_TOT];
} ilbc_decode_state_t;
ilbc_encode_state_t *ilbc_encode_init(ilbc_encode_state_t *s, /* (i/o) Encoder instance */
int mode); /* (i) frame size mode */
int ilbc_encode(ilbc_encode_state_t *s, /* (i/o) the general encoder state */
uint8_t bytes[], /* (o) encoded data bits iLBC */
const int16_t amp[], /* (o) speech vector to encode */
int len);
ilbc_decode_state_t *ilbc_decode_init(ilbc_decode_state_t *s, /* (i/o) Decoder instance */
int mode, /* (i) frame size mode */
int use_enhancer); /* (i) 1 to use enhancer
0 to run without enhancer */
int ilbc_decode(ilbc_decode_state_t *s, /* (i/o) the decoder state structure */
int16_t amp[], /* (o) decoded signal block */
const uint8_t bytes[], /* (i) encoded signal bits */
int len);
int ilbc_fillin(ilbc_decode_state_t *s, /* (i/o) the decoder state structure */
int16_t amp[], /* (o) decoded signal block */
int len);
#endif
+37
View File
@@ -0,0 +1,37 @@
/*
* SpanDSP - a series of DSP components for telephony
*
* version.h - A tag file, so the exact installed revision can be assertained.
*
* Written by Steve Underwood <steveu@coppice.org>
*
* Copyright (C) 2007 Steve Underwood
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the Lesser GNU General Public License version 2.1, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: version.h.in,v 1.1.1.1 2008/02/15 12:15:55 steveu Exp $
*/
#if !defined(_VOIPCODECS_VERSION_H_)
#define _VOIPCODECS_VERSION_H_
/* The date and time of the version are in UTC form. */
#define VOIPCODECS_RELEASE_DATE $VOIPCODECS_RELEASE_DATE
#define VOIPCODECS_RELEASE_TIME $VOIPCODECS_RELEASE_TIME
#endif
/*- End of file ------------------------------------------------------------*/
+37
View File
@@ -0,0 +1,37 @@
/*
* SpanDSP - a series of DSP components for telephony
*
* version.h - A tag file, so the exact installed revision can be assertained.
*
* Written by Steve Underwood <steveu@coppice.org>
*
* Copyright (C) 2007 Steve Underwood
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the Lesser GNU General Public License version 2.1, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: version.h.in,v 1.1.1.1 2008/02/15 12:15:55 steveu Exp $
*/
#if !defined(_VOIPCODECS_VERSION_H_)
#define _VOIPCODECS_VERSION_H_
/* The date and time of the version are in UTC form. */
#define VOIPCODECS_RELEASE_DATE $VOIPCODECS_RELEASE_DATE
#define VOIPCODECS_RELEASE_TIME $VOIPCODECS_RELEASE_TIME
#endif
/*- End of file ------------------------------------------------------------*/