⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ilbc_constants.java

📁 java的ilbc语音编码器,实现了其全部功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package net.java.sip.communicator.impl.media.codec.audio.ilbc;

/**
 * @author Jean Lorchat
 */
class ilbc_constants {
    /* general codec settings */

    static float FS = (float)8000.0f;
    static int BLOCKL_20MS = 160;
    static int BLOCKL_30MS = 240;
    static int BLOCKL_MAX = 240;
    static int NSUB_20MS = 4;
    static int NSUB_30MS = 6;
    static int NSUB_MAX = 6;
    static int NASUB_20MS = 2;
    static int NASUB_30MS = 4;
    static int NASUB_MAX = 4;
    static int SUBL = 40;
    static int STATE_LEN = 80;
    static int STATE_SHORT_LEN_30MS = 58;
    static int STATE_SHORT_LEN_20MS = 57;

    /* LPC settings */

    static int  LPC_FILTERORDER = 10;
    static float LPC_CHIRP_SYNTDENUM = (float)0.9025;
    static float LPC_CHIRP_WEIGHTDENUM = (float)0.4222;
    static int LPC_LOOKBACK = 60;
    static int LPC_N_20MS = 1;
    static int LPC_N_30MS = 2;
    static int LPC_N_MAX = 2;
    static int LPC_ASYMDIFF = 20;
    static float LPC_BW = (float)60.0f;
    static float LPC_WN = (float)1.0001f;
    static int LSF_NSPLIT = 3;
    static int LSF_NUMBER_OF_STEPS = 4;
    static int LPC_HALFORDER = (LPC_FILTERORDER/2);

    /* cb settings */

    static int CB_NSTAGES = 3;
    static int CB_EXPAND = 2;
    static int CB_MEML = 147;
    static int CB_HALFFILTERLEN = 4;
    static int CB_FILTERLEN = 2*CB_HALFFILTERLEN;
    static int CB_RESRANGE = 34;
    static float CB_MAXGAIN = (float)1.3;

    /* enhancer */

    static int ENH_BLOCKL = 80;  /* block length */
    static int ENH_BLOCKL_HALF = (ENH_BLOCKL/2);
    static int ENH_HL = 3;   /* 2*ENH_HL+1 is number blocks
				in said second sequence */
    static int ENH_SLOP = 2;   /* max difference estimated and
				  correct pitch period */
    static int ENH_PLOCSL = 20;  /* pitch-estimates and pitch-
				    locations buffer length */
    static int ENH_OVERHANG = 2;
    static int ENH_UPS0 = 4;   /* upsampling rate */
    static int ENH_FL0 = 3;   /* 2*FLO+1 is the length of
				 each filter */
    static int ENH_VECTL = (ENH_BLOCKL+2*ENH_FL0);
    static int ENH_CORRDIM = (2*ENH_SLOP+1);
    static int ENH_NBLOCKS = (BLOCKL_MAX/ENH_BLOCKL);
    static int ENH_NBLOCKS_EXTRA = 5;
    static int ENH_NBLOCKS_TOT = 8;   /* ENH_NBLOCKS +
					 ENH_NBLOCKS_EXTRA */
    static int ENH_BUFL = (ENH_NBLOCKS_TOT)*ENH_BLOCKL;
    static float ENH_ALPHA0 = (float)0.05f;

    /* Down sampling */

    static int FILTERORDER_DS = 7;
    static int DELAY_DS = 3;
    static int FACTOR_DS = 2;

    /* bit stream defs */

    static int NO_OF_BYTES_20MS = 38;
    static int NO_OF_BYTES_30MS = 50;
    static int NO_OF_WORDS_20MS = 19;
    static int NO_OF_WORDS_30MS = 25;
    static int STATE_BITS = 3;
    static int BYTE_LEN = 8;
    static int ULP_CLASSES = 3;

    /* help parameters */

    static float DOUBLE_MAX = (float)1.0e37;
    static float EPS = (float)2.220446049250313e-016;
    static float PI = (float)3.14159265358979323846;
    static int MIN_SAMPLE = -32768;
    static int MAX_SAMPLE = 32767;
    static float TWO_PI = (float)6.283185307;
    static float PI2 = (float)0.159154943;

    /* */

    static int lsf_bits_20ms[][] = {   {6,0,0,0,0}, {7,0,0,0,0}, {7,0,0,0,0},
				       {0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}};
    static int start_bits_20ms[] = {2,0,0,0,0};
    static int startfirst_bits_20ms[] = {1,0,0,0,0};
    static int scale_bits_20ms[] = {6,0,0,0,0};
    static int state_bits_20ms[] = {0,1,2,0,0};

    static int extra_cb_index_20ms[][] = {{6,0,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}};
    static int extra_cb_gain_20ms[][] = {{2,0,3,0,0}, {1,1,2,0,0}, {0,0,3,0,0}};

    static int cb_index_20ms[][][] = {   {{7,0,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}},
					 {{0,0,8,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},
					 {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},
					 {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}};

    static int cb_gain_20ms[][][] = {   {{1,2,2,0,0}, {1,1,2,0,0}, {0,0,3,0,0}},
					{{1,1,3,0,0}, {0,2,2,0,0}, {0,0,3,0,0}},
					{{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},
					{{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}};


    static int lsf_bits_30ms[][] = {   {6,0,0,0,0}, {7,0,0,0,0}, {7,0,0,0,0},
				       {6,0,0,0,0}, {7,0,0,0,0}, {7,0,0,0,0}};
    static int start_bits_30ms[] = {3,0,0,0,0};
    static int startfirst_bits_30ms[] = {1,0,0,0,0};
    static int scale_bits_30ms[] = {6,0,0,0,0};
    static int state_bits_30ms[] = {0,1,2,0,0};

    static int extra_cb_index_30ms[][] = {{4,2,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}};
    static int extra_cb_gain_30ms[][] = {{1,1,3,0,0}, {1,1,2,0,0}, {0,0,3,0,0}};

    static int cb_index_30ms[][][] = {   {{6,1,1,0,0}, {0,0,7,0,0}, {0,0,7,0,0}},
					 {{0,7,1,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},
					 {{0,7,1,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},
					 {{0,7,1,0,0}, {0,0,8,0,0}, {0,0,8,0,0}},
					 {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},
					 {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}};

    static int cb_gain_30ms[][][] = {   {{1,2,2,0,0}, {1,2,1,0,0}, {0,0,3,0,0}},
					{{0,2,3,0,0}, {0,2,2,0,0}, {0,0,3,0,0}},
					{{0,1,4,0,0}, {0,1,3,0,0}, {0,0,3,0,0}},
					{{0,1,4,0,0}, {0,1,3,0,0}, {0,0,3,0,0}},
					{{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}},
					{{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}};

    /* HP filters */
    static float hpi_zero_coefsTbl[] = {(float)0.92727436f, (float)-1.8544941f, (float)0.92727436f};
    static float hpi_pole_coefsTbl[] = {(float)1.0f, (float)-1.9059465f, (float)0.9114024f};
    static float hpo_zero_coefsTbl[] = {(float)0.93980581f, (float)-1.8795834f, (float)0.93980581f};
    static float hpo_pole_coefsTbl[] = {(float)1.0f, (float)-1.9330735f, (float)0.93589199f};

    /* LP Filter */

    static float lpFilt_coefsTbl[] = {(float)-0.066650, (float)0.125000,
				       (float)0.316650, (float)0.414063,
				       (float)0.316650, (float)0.125000,
				       (float)-0.066650};

    /* State quantization tables */

    static float state_sq3Tbl[] = {
	(float)-3.719849, (float)-2.177490, (float)-1.130005,
	(float)-0.309692, (float)0.444214, (float)1.329712,
	(float)2.436279, (float)3.983887
    };

    static float state_frgqTbl[] = {
	(float)1.000085, (float)1.071695, (float)1.140395,
	(float)1.206868, (float)1.277188, (float)1.351503,
	(float)1.429380, (float)1.500727, (float)1.569049,
	(float)1.639599, (float)1.707071, (float)1.781531,
	(float)1.840799, (float)1.901550, (float)1.956695,
	(float)2.006750, (float)2.055474, (float)2.102787,
	(float)2.142819, (float)2.183592, (float)2.217962,
	(float)2.257177, (float)2.295739, (float)2.332967,
	(float)2.369248, (float)2.402792, (float)2.435080,
	(float)2.468598, (float)2.503394, (float)2.539284,
	(float)2.572944, (float)2.605036, (float)2.636331,
	(float)2.668939, (float)2.698780, (float)2.729101,
	(float)2.759786, (float)2.789834, (float)2.818679,
	(float)2.848074, (float)2.877470, (float)2.906899,
	(float)2.936655, (float)2.967804, (float)3.000115,
	(float)3.033367, (float)3.066355, (float)3.104231,
	(float)3.141499, (float)3.183012, (float)3.222952,
	(float)3.265433, (float)3.308441, (float)3.350823,
	(float)3.395275, (float)3.442793, (float)3.490801,
	(float)3.542514, (float)3.604064, (float)3.666050,
	(float)3.740994, (float)3.830749, (float)3.938770,
	(float)4.101764
    };

    /* CB tables */

    static int search_rangeTbl[][]={{58,58,58}, {108,44,44},
				    {108,108,108}, {108,108,108}, {108,108,108}};
    static int stMemLTbl=85;
    static int memLfTbl[]={147,147,147,147};

    /* expansion filter(s) */

    static float cbfiltersTbl[]={
	(float)-0.034180, (float)0.108887, (float)-0.184326,
	(float)0.806152,  (float)0.713379, (float)-0.144043,
	(float)0.083740,  (float)-0.033691
    };

    /* Gain Quantization */

    static float gain_sq3Tbl[]={
	(float)-1.000000,  (float)-0.659973,  (float)-0.330017,
	(float)0.000000, (float)0.250000, (float)0.500000,
	(float)0.750000, (float)1.00000};

    static float gain_sq4Tbl[]={
	(float)-1.049988, (float)-0.900024, (float)-0.750000,
	(float)-0.599976, (float)-0.450012, (float)-0.299988,
	(float)-0.150024, (float)0.000000, (float)0.150024,
	(float)0.299988, (float)0.450012, (float)0.599976,
	(float)0.750000, (float)0.900024, (float)1.049988,
	(float)1.200012};

    static float gain_sq5Tbl[]={
	(float)0.037476, (float)0.075012, (float)0.112488,
	(float)0.150024, (float)0.187500, (float)0.224976,
	(float)0.262512, (float)0.299988, (float)0.337524,
	(float)0.375000, (float)0.412476, (float)0.450012,
	(float)0.487488, (float)0.525024, (float)0.562500,
	(float)0.599976, (float)0.637512, (float)0.674988,
	(float)0.712524, (float)0.750000, (float)0.787476,
	(float)0.825012, (float)0.862488, (float)0.900024,
	(float)0.937500, (float)0.974976, (float)1.012512,
	(float)1.049988, (float)1.087524, (float)1.125000,
	(float)1.162476, (float)1.200012};

    /* Enhancer - Upsamling a factor 4 (ENH_UPS0 = 4) */
    static float polyphaserTbl[]={
	(float)0.000000, (float)0.000000, (float)0.000000,
	(float)1.000000,
	(float)0.000000, (float)0.000000, (float)0.000000,
	(float)0.015625, (float)-0.076904, (float)0.288330,
	(float)0.862061,
	(float)-0.106445, (float)0.018799, (float)-0.015625,
	(float)0.023682, (float)-0.124268, (float)0.601563,
	(float)0.601563,
	(float)-0.124268, (float)0.023682, (float)-0.023682,
	(float)0.018799, (float)-0.106445, (float)0.862061,
	(float)0.288330,
	(float)-0.076904, (float)0.015625, (float)-0.018799};

    static float enh_plocsTbl[] = {(float)40.0f, (float)120.0f,
				    (float)200.0f, (float)280.0f, (float)360.0f,
				    (float)440.0f, (float)520.0f, (float)600.0};

    /* LPC analysis and quantization */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -