diff intercom/ilbc/iLBC_define.h @ 2:13be24d74cd2

import intercom-0.4.1
author Peter Meerwald <pmeerw@cosy.sbg.ac.at>
date Fri, 25 Jun 2010 09:57:52 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/intercom/ilbc/iLBC_define.h	Fri Jun 25 09:57:52 2010 +0200
@@ -0,0 +1,216 @@
+
+   /******************************************************************
+
+       iLBC Speech Coder ANSI-C Source Code
+
+       iLBC_define.h
+
+       Copyright (C) The Internet Society (2004).
+       All Rights Reserved.
+
+   ******************************************************************/
+#include <string.h>
+
+#ifndef __iLBC_ILBCDEFINE_H
+#define __iLBC_ILBCDEFINE_H
+
+   /* general codec settings */
+
+#define FS                      (float)8000.0
+#define BLOCKL_20MS             160
+#define BLOCKL_30MS             240
+#define BLOCKL_MAX              240
+#define NSUB_20MS               4
+#define NSUB_30MS               6
+#define NSUB_MAX            6
+#define NASUB_20MS              2
+
+
+
+
+
+#define NASUB_30MS              4
+#define NASUB_MAX               4
+#define SUBL                40
+#define STATE_LEN               80
+#define STATE_SHORT_LEN_30MS    58
+#define STATE_SHORT_LEN_20MS    57
+
+   /* LPC settings */
+
+#define LPC_FILTERORDER         10
+#define LPC_CHIRP_SYNTDENUM     (float)0.9025
+#define LPC_CHIRP_WEIGHTDENUM   (float)0.4222
+#define LPC_LOOKBACK        60
+#define LPC_N_20MS              1
+#define LPC_N_30MS              2
+#define LPC_N_MAX               2
+#define LPC_ASYMDIFF        20
+#define LPC_BW                  (float)60.0
+#define LPC_WN                  (float)1.0001
+#define LSF_NSPLIT              3
+#define LSF_NUMBER_OF_STEPS     4
+#define LPC_HALFORDER           (LPC_FILTERORDER/2)
+
+   /* cb settings */
+
+#define CB_NSTAGES              3
+#define CB_EXPAND               2
+#define CB_MEML                 147
+#define CB_FILTERLEN        2*4
+#define CB_HALFFILTERLEN    4
+#define CB_RESRANGE             34
+#define CB_MAXGAIN              (float)1.3
+
+   /* enhancer */
+
+#define ENH_BLOCKL              80      /* block length */
+#define ENH_BLOCKL_HALF         (ENH_BLOCKL/2)
+#define ENH_HL                  3       /* 2*ENH_HL+1 is number blocks
+                                           in said second sequence */
+#define ENH_SLOP            2   /* max difference estimated and
+                                   correct pitch period */
+#define ENH_PLOCSL              20      /* pitch-estimates and pitch-
+                                           locations buffer length */
+#define ENH_OVERHANG        2
+#define ENH_UPS0            4   /* upsampling rate */
+#define ENH_FL0                 3       /* 2*FLO+1 is the length of
+                                           each filter */
+#define ENH_VECTL               (ENH_BLOCKL+2*ENH_FL0)
+
+
+
+
+
+#define ENH_CORRDIM             (2*ENH_SLOP+1)
+#define ENH_NBLOCKS             (BLOCKL_MAX/ENH_BLOCKL)
+#define ENH_NBLOCKS_EXTRA       5
+#define ENH_NBLOCKS_TOT         8       /* ENH_NBLOCKS +
+                                           ENH_NBLOCKS_EXTRA */
+#define ENH_BUFL            (ENH_NBLOCKS_TOT)*ENH_BLOCKL
+#define ENH_ALPHA0              (float)0.05
+
+   /* Down sampling */
+
+#define FILTERORDER_DS          7
+#define DELAY_DS            3
+#define FACTOR_DS               2
+
+   /* bit stream defs */
+
+#define NO_OF_BYTES_20MS    38
+#define NO_OF_BYTES_30MS    50
+#define NO_OF_WORDS_20MS    19
+#define NO_OF_WORDS_30MS    25
+#define STATE_BITS              3
+#define BYTE_LEN            8
+#define ULP_CLASSES             3
+
+   /* help parameters */
+
+#define FLOAT_MAX               (float)1.0e37
+#define EPS                     (float)2.220446049250313e-016
+#define PI                      (float)3.14159265358979323846
+#define MIN_SAMPLE              -32768
+#define MAX_SAMPLE              32767
+#define TWO_PI                  (float)6.283185307
+#define PI2                     (float)0.159154943
+
+   /* type definition encoder instance */
+typedef struct iLBC_ULP_Inst_t_ {
+  int lsf_bits[6][ULP_CLASSES + 2];
+  int start_bits[ULP_CLASSES + 2];
+  int startfirst_bits[ULP_CLASSES + 2];
+  int scale_bits[ULP_CLASSES + 2];
+  int state_bits[ULP_CLASSES + 2];
+  int extra_cb_index[CB_NSTAGES][ULP_CLASSES + 2];
+  int extra_cb_gain[CB_NSTAGES][ULP_CLASSES + 2];
+  int cb_index[NSUB_MAX][CB_NSTAGES][ULP_CLASSES + 2];
+  int cb_gain[NSUB_MAX][CB_NSTAGES][ULP_CLASSES + 2];
+} iLBC_ULP_Inst_t;
+
+   /* type definition encoder instance */
+
+
+
+
+
+typedef struct iLBC_Enc_Inst_t_ {
+
+  /* flag for frame size mode */
+  int mode;
+
+  /* basic parameters for different frame sizes */
+  int blockl;
+  int nsub;
+  int nasub;
+  int no_of_bytes, no_of_words;
+  int lpc_n;
+  int state_short_len;
+  const iLBC_ULP_Inst_t *ULP_inst;
+
+  /* analysis filter state */
+  float anaMem[LPC_FILTERORDER];
+
+  /* old lsf parameters for interpolation */
+  float lsfold[LPC_FILTERORDER];
+  float lsfdeqold[LPC_FILTERORDER];
+
+  /* signal buffer for LP analysis */
+  float lpc_buffer[LPC_LOOKBACK + BLOCKL_MAX];
+
+  /* state of input HP filter */
+  float hpimem[4];
+
+} iLBC_Enc_Inst_t;
+
+   /* type definition decoder instance */
+typedef struct iLBC_Dec_Inst_t_ {
+
+  /* flag for frame size mode */
+  int mode;
+
+  /* basic parameters for different frame sizes */
+  int blockl;
+  int nsub;
+  int nasub;
+  int no_of_bytes, no_of_words;
+  int lpc_n;
+  int state_short_len;
+  const iLBC_ULP_Inst_t *ULP_inst;
+
+  /* synthesis filter state */
+  float syntMem[LPC_FILTERORDER];
+
+  /* old LSF for interpolation */
+
+
+
+
+
+  float lsfdeqold[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[LPC_FILTERORDER + 1];
+  float prevResidual[NSUB_MAX * SUBL];
+  float per;
+  unsigned long seed;
+
+  /* previous synthesis filter parameters */
+  float old_syntdenum[(LPC_FILTERORDER + 1) * NSUB_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_Dec_Inst_t;
+
+#endif

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.