/* g729a_pitch - Decompiled by JODE * Visit http://jode.sourceforge.net/ */ package javaforce.codec.g729a; final class g729a_pitch implements g729a_constants { static int g729a_opla(float[] fs) { float[] fs_0_ = new float[40]; g729a_utils.g729a_corel_10(fs_0_, 0, fs, -2); g729a_utils.g729a_corel_10(fs_0_, 10, fs, -22); g729a_utils.g729a_corel_10(fs_0_, 20, fs, -42); float f = 0.0F; float f_1_ = 0.0F; float f_2_ = fs[62]; for (int i = 0; i < 80; i += 2) { float f_3_ = fs[64 + i]; float f_4_ = fs[144 + i]; f += f_4_ * f_2_; f_1_ += f_4_ * f_3_; f_2_ = f_3_; } fs_0_[30] = f; fs_0_[31] = f_1_; float f_5_ = fs_0_[31]; int i = 31; for (int i_6_ = 30; i_6_ >= 0; i_6_--) { if (fs_0_[i_6_] > f_5_ + 3.0517578E-5F) { f_5_ = fs_0_[i_6_]; i = i_6_; } } i = 142 - i * 2; int i_7_ = i; f = 0.0F; f_1_ = 0.0F; f_2_ = fs[144 - i_7_ - 1]; for (int i_8_ = 0; i_8_ < 80; i_8_ += 2) { float f_9_ = fs[144 - i_7_ + 1 + i_8_]; float f_10_ = fs[144 + i_8_]; f += f_10_ * f_2_; f_1_ += f_10_ * f_9_; f_2_ = f_9_; } if (f > f_5_ + 3.0517578E-5F) { f_5_ = f; i = i_7_ + 1; } if (f_1_ > f_5_ + 3.0517578E-5F) { f_5_ = f_1_; i = i_7_ - 1; } g729a_utils.g729a_corel_10(fs_0_, 0, fs, -66); g729a_utils.g729a_corel_10(fs_0_, 10, fs, -86); g729a_utils.g729a_corel_10(fs_0_, 20, fs, -65); g729a_utils.g729a_corel_10(fs_0_, 30, fs, -85); float f_11_ = fs_0_[19]; int i_12_ = 19; for (int i_13_ = 18; i_13_ >= 0; i_13_--) { if (fs_0_[i_13_] > f_11_ + 3.0517578E-5F) { f_11_ = fs_0_[i_13_]; i_12_ = i_13_; } } for (int i_14_ = 39; i_14_ >= 20; i_14_--) { if (fs_0_[i_14_] > f_11_ + 3.0517578E-5F) { f_11_ = fs_0_[i_14_]; i_12_ = i_14_; } } if (i_12_ >= 20) { i_12_ = 119 - i_12_ * 2; } else { i_12_ = 78 - i_12_ * 2; } g729a_utils.g729a_corel_10(fs_0_, 0, fs, -106); g729a_utils.g729a_corel_10(fs_0_, 10, fs, -105); float f_15_ = fs_0_[9]; int i_16_ = 9; for (int i_17_ = 8; i_17_ >= 0; i_17_--) { if (fs_0_[i_17_] > f_15_ + 3.0517578E-5F) { f_15_ = fs_0_[i_17_]; i_16_ = i_17_; } } for (int i_18_ = 19; i_18_ >= 10; i_18_--) { if (fs_0_[i_18_] > f_15_ + 3.0517578E-5F) { f_15_ = fs_0_[i_18_]; i_16_ = i_18_; } } if (i_16_ >= 10) { i_16_ = 59 - i_16_ * 2; } else { i_16_ = 38 - i_16_ * 2; } float f_19_ = 0.0F; for (int i_20_ = 0; i_20_ < 40; i_20_++) { f_19_ += fs[144 + 2 * i_20_ - i] * fs[144 + 2 * i_20_ - i]; } if (f_19_ == 0.0F) { f_5_ = 0.0F; } else { f_5_ /= Math.sqrt((double) f_19_); } f_19_ = 0.0F; for (int i_21_ = 0; i_21_ < 40; i_21_++) { f_19_ += fs[144 + 2 * i_21_ - i_12_] * fs[144 + 2 * i_21_ - i_12_]; } if (f_19_ == 0.0F) { f_11_ = 0.0F; } else { f_11_ /= Math.sqrt((double) f_19_); } f_19_ = 0.0F; for (int i_22_ = 0; i_22_ < 40; i_22_++) { f_19_ += fs[144 + 2 * i_22_ - i_16_] * fs[144 + 2 * i_22_ - i_16_]; } if (f_19_ == 0.0F) { f_15_ = 0.0F; } else { f_15_ /= Math.sqrt((double) f_19_); } if (Math.abs((float) (i_12_ * 2 - i)) < 5.0F) { f_11_ += (double) f_5_ * 0.25; } if (Math.abs((float) (i_12_ * 3 - i)) < 7.0F) { f_11_ += (double) f_5_ * 0.25; } if (Math.abs((float) (i_16_ * 2 - i_12_)) < 5.0F) { f_15_ += (double) f_11_ * 0.2; } if (Math.abs((float) (i_16_ * 3 - i_12_)) < 7.0F) { f_15_ += (double) f_11_ * 0.2; } if (f_15_ < f_11_) { f_15_ = f_11_; i_16_ = i_12_; } if (f_15_ < f_5_) { i_16_ = i; } int i_23_ = i_16_; return i_23_; } static void g729a_impulse_response(g729a_encode_internal var_g729a_encode_internal, float[] fs) { float[] fs_24_ = var_g729a_encode_internal.h; float[] fs_25_ = var_g729a_encode_internal.a_gamma; float f = fs_25_[0] = 0.75F * fs[0]; float f_26_ = fs_25_[1] = 0.5625F * fs[1]; float f_27_ = fs_25_[2] = 0.421875F * fs[2]; float f_28_ = fs_25_[3] = 0.31640625F * fs[3]; float f_29_ = fs_25_[4] = 0.23730469F * fs[4]; float f_30_ = fs_25_[5] = 0.17797852F * fs[5]; float f_31_ = fs_25_[6] = 0.13348389F * fs[6]; float f_32_ = fs_25_[7] = 0.100112915F * fs[7]; float f_33_ = fs_25_[8] = 0.07508469F * fs[8]; float f_34_ = fs_25_[9] = 0.056313515F * fs[9]; fs_24_[0] = 1.0F; float f_35_ = 1.0F; float f_36_ = 0.0F; float f_37_ = 0.0F; float f_38_ = 0.0F; float f_39_ = 0.0F; float f_40_ = 0.0F; float f_41_ = 0.0F; float f_42_ = 0.0F; float f_43_ = 0.0F; float f_44_ = 0.0F; for (int i = 1; i < 40; i++) { float f_45_ = (-f_34_ * f_44_ - f_33_ * f_43_ - f_32_ * f_42_ - f_31_ * f_41_ - f_30_ * f_40_ - f_29_ * f_39_ - f_28_ * f_38_ - f_27_ * f_37_ - f_26_ * f_36_ - f * f_35_); f_44_ = f_43_; f_43_ = f_42_; f_42_ = f_41_; f_41_ = f_40_; f_40_ = f_39_; f_39_ = f_38_; f_38_ = f_37_; f_37_ = f_36_; f_36_ = f_35_; f_35_ = f_45_; fs_24_[i] = f_45_; } } static void g729a_target(g729a_encode_internal var_g729a_encode_internal, g729a_encode_speech var_g729a_encode_speech, g729a_encode_filters var_g729a_encode_filters) { float[] fs = var_g729a_encode_internal.x; float[] fs_46_ = var_g729a_encode_speech.excitation; g729a_sinthesis_filter var_g729a_sinthesis_filter = var_g729a_encode_filters.weghted_sinthesis; g729a_common.g729a_IIR(fs, fs_46_, 154, var_g729a_encode_internal.a_gamma, var_g729a_sinthesis_filter); } static void g729a_ad_cod_search_1(G729aCode g729acode, g729a_encode_internal var_g729a_encode_internal, g729a_encode_speech var_g729a_encode_speech, float[][] fs) { float[] fs_47_ = var_g729a_encode_speech.excitation; float[] fs_48_ = var_g729a_encode_internal.x; float[] fs_49_ = new float[40]; int i = var_g729a_encode_internal.T_opt - 3; if (i < 20) { i = 20; } int i_50_ = i + 6; if (i_50_ > 143) { i_50_ = 143; i = i_50_ - 6; } g729a_backward(fs_49_, fs_48_, var_g729a_encode_internal.a_gamma); float f = 0.0F; int i_51_ = i; for (int i_52_ = 0; i_52_ < 40; i_52_++) { f += fs_49_[i_52_] * fs_47_[154 + i_52_ - i]; } for (int i_53_ = i + 1; i_53_ <= i_50_; i_53_++) { float f_54_ = 0.0F; for (int i_55_ = 0; i_55_ < 40; i_55_++) { f_54_ += fs_49_[i_55_] * fs_47_[154 + i_55_ - i_53_]; } if (f_54_ > f + 3.0517578E-5F) { f = f_54_; i_51_ = i_53_; } } int i_56_; int i_57_; if (i_51_ < 85) { g729a_common.g729a_generation_adaptive_vector(fs[1], fs_47_, i_51_, 0); i_56_ = 0; f = 0.0F; for (int i_58_ = 0; i_58_ < 40; i_58_++) { f += fs_49_[i_58_] * fs[1][i_58_]; } g729a_common.g729a_generation_adaptive_vector(fs[0], fs_47_, i_51_, -1); float f_59_ = 0.0F; for (int i_60_ = 0; i_60_ < 40; i_60_++) { f_59_ += fs_49_[i_60_] * fs[0][i_60_]; } if (f_59_ > f + 3.0517578E-5F) { i_56_ = -1; f = f_59_; } g729a_common.g729a_generation_adaptive_vector(fs[2], fs_47_, i_51_ + 1, -2); f_59_ = 0.0F; for (int i_61_ = 0; i_61_ < 40; i_61_++) { f_59_ += fs_49_[i_61_] * fs[2][i_61_]; } if (f_59_ > f + 3.0517578E-5F) { i_56_ = 1; } i_57_ = 3 * (i_51_ - 19) + i_56_ - 1; } else { i_56_ = 0; g729a_common.g729a_generation_adaptive_vector(fs[1], fs_47_, i_51_, 0); i_57_ = i_51_ - 85 + 197; } g729acode.setP0((short) (i_57_ >> 2 & 0x1 ^ i_57_ >> 3 & 0x1 ^ i_57_ >> 4 & 0x1 ^ i_57_ >> 5 & 0x1 ^ i_57_ >> 6 & 0x1 ^ i_57_ >> 7 & 0x1 ^ 0x1)); g729acode.setP1((short) i_57_); var_g729a_encode_internal.T1 = i_51_; var_g729a_encode_internal.frac_T1 = i_56_; var_g729a_encode_internal.v = fs[i_56_ + 1]; } static void g729a_ad_cod_search_2(G729aCode g729acode, g729a_encode_internal var_g729a_encode_internal, g729a_encode_speech var_g729a_encode_speech, float[][] fs) { float[] fs_62_ = var_g729a_encode_speech.excitation; float[] fs_63_ = var_g729a_encode_internal.x; float[] fs_64_ = new float[40]; int i = var_g729a_encode_internal.T1; int i_65_ = i - 5; if (i_65_ < 20) { i_65_ = 20; } int i_66_ = i_65_ + 9; if (i_66_ > 143) { i_66_ = 143; i_65_ = i_66_ - 9; } g729a_backward(fs_64_, fs_63_, var_g729a_encode_internal.a_gamma); float f = 0.0F; int i_67_ = i_65_; for (int i_68_ = 0; i_68_ < 40; i_68_++) { f += fs_64_[i_68_] * fs_62_[154 + i_68_ - i_65_]; } for (int i_69_ = i_65_ + 1; i_69_ <= i_66_; i_69_++) { float f_70_ = 0.0F; for (int i_71_ = 0; i_71_ < 40; i_71_++) { f_70_ += fs_64_[i_71_] * fs_62_[154 + i_71_ - i_69_]; } if (f_70_ > f + 3.0517578E-5F) { f = f_70_; i_67_ = i_69_; } } g729a_common.g729a_generation_adaptive_vector(fs[1], fs_62_, i_67_, 0); int i_72_ = 0; f = 0.0F; for (int i_73_ = 0; i_73_ < 40; i_73_++) { f += fs_64_[i_73_] * fs[1][i_73_]; } g729a_common.g729a_generation_adaptive_vector(fs[0], fs_62_, i_67_, -1); float f_74_ = 0.0F; for (int i_75_ = 0; i_75_ < 40; i_75_++) { f_74_ += fs_64_[i_75_] * fs[0][i_75_]; } if (f_74_ > f + 3.0517578E-5F) { i_72_ = -1; f = f_74_; } g729a_common.g729a_generation_adaptive_vector(fs[2], fs_62_, i_67_ + 1, -2); f_74_ = 0.0F; for (int i_76_ = 0; i_76_ < 40; i_76_++) { f_74_ += fs_64_[i_76_] * fs[2][i_76_]; } if (f_74_ > f + 3.0517578E-5F) { i_72_ = 1; } g729acode.setP2((short) (3 * (i_67_ - i_65_) + i_72_ + 2)); var_g729a_encode_internal.T2 = i_67_; var_g729a_encode_internal.frac_T2 = i_72_; var_g729a_encode_internal.v = fs[i_72_ + 1]; } static void g729a_backward(float[] fs, float[] fs_77_, float[] fs_78_) { float[] fs_79_ = new float[40]; float[] fs_80_ = new float[40]; g729a_sinthesis_filter var_g729a_sinthesis_filter = new g729a_sinthesis_filter(); for (int i = 0; i < 40; i++) { fs_79_[i] = fs_77_[39 - i]; } g729a_utils.g729a_set_0(var_g729a_sinthesis_filter.delay, 10); g729a_common.g729a_IIR(fs_80_, fs_79_, fs_78_, var_g729a_sinthesis_filter); for (int i = 0; i < 40; i++) { fs[i] = fs_80_[39 - i]; } } static void g729a_adcb_gain(g729a_encode_internal var_g729a_encode_internal) { float[] fs = var_g729a_encode_internal.y; float[] fs_81_ = var_g729a_encode_internal.x; float[] fs_82_ = var_g729a_encode_internal.v; g729a_sinthesis_filter var_g729a_sinthesis_filter = new g729a_sinthesis_filter(); g729a_utils.g729a_set_0(var_g729a_sinthesis_filter.delay, 10); g729a_common.g729a_IIR(fs, fs_82_, var_g729a_encode_internal.a_gamma, var_g729a_sinthesis_filter); float f; var_g729a_encode_internal.xy = f = g729a_common.g729a_correl(fs_81_, 0, fs, 0); float f_83_; var_g729a_encode_internal.yy = f_83_ = g729a_common.g729a_norma(fs); float f_84_; if (f_83_ == 0.0F) { f_84_ = 0.0F; } else { f_84_ = f / f_83_; } if (f_84_ < 0.0F) { f_84_ = 0.0F; } if (f_84_ > 1.2000122F) { f_84_ = 1.2000122F; } var_g729a_encode_internal.gp = f_84_; } static int g729a_test_err(float[] fs, int i, int i_85_) { if (i_85_ == 1) { i++; } int i_86_ = i - 50; if (i_86_ < 0) { i_86_ = 0; } int i_87_ = g729a_tables.g729a_tab_zone[i_86_]; int i_88_ = g729a_tables.g729a_tab_zone[i + 10 - 2]; float f = -1.0F; int i_89_ = 0; for (i_86_ = i_88_; i_86_ >= i_87_; i_86_--) { if (fs[i_86_] > f) { f = fs[i_86_]; } } if (f > 60000.0F) { i_89_ = 1; } return i_89_; } static void g729a_update_exc_err(float[] fs, float f, int i) { float f_90_ = -1.0F; if (i < 40) { float f_91_ = f * fs[0] + 1.0F; if (f_91_ > f_90_) { f_90_ = f_91_; } f_91_ = f * f_91_ + 1.0F; if (f_91_ > f_90_) { f_90_ = f_91_; } } else { int i_92_ = g729a_tables.g729a_tab_zone[i - 40]; int i_93_ = g729a_tables.g729a_tab_zone[i - 1]; for (int i_94_ = i_92_; i_94_ <= i_93_; i_94_++) { float f_95_ = f * fs[i_94_] + 1.0F; if (f_95_ > f_90_) { f_90_ = f_95_; } } } for (int i_96_ = 3; i_96_ >= 1; i_96_--) { fs[i_96_] = fs[i_96_ - 1]; } fs[0] = f_90_; } }