/* g729a_pst - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package javaforce.codec.g729a;
final class g729a_pst implements g729a_constants
{
static void g729a_pst(g729a_decode_speech var_g729a_decode_speech,
g729a_decode_internal var_g729a_decode_internal,
g729a_decode_filters var_g729a_decode_filters,
float[] fs, int i) {
g729a_sinthesis_filter var_g729a_sinthesis_filter
= var_g729a_decode_filters.residual;
g729a_sinthesis_filter var_g729a_sinthesis_filter_0_
= var_g729a_decode_filters.shortterm;
g729a_tilt_filter var_g729a_tilt_filter
= var_g729a_decode_filters.tilt;
float[] fs_1_ = var_g729a_decode_internal.s;
float[] fs_2_ = var_g729a_decode_internal.sf;
float[] fs_3_ = var_g729a_decode_speech.residual;
float f = var_g729a_decode_speech.past_g;
float[] fs_4_ = new float[40];
float[] fs_5_ = new float[11];
float[] fs_6_ = new float[40];
float[] fs_7_ = new float[40];
g729a_sinthesis_filter var_g729a_sinthesis_filter_8_
= new g729a_sinthesis_filter();
if (i > 140)
i = 140;
fs_4_[0] = 1.0F;
fs_4_[1] = 0.55F * fs[0];
fs_4_[2] = 0.3025F * fs[1];
fs_4_[3] = 0.16637501F * fs[2];
fs_4_[4] = 0.09150626F * fs[3];
fs_4_[5] = 0.05032844F * fs[4];
fs_4_[6] = 0.027680643F * fs[5];
fs_4_[7] = 0.015224354F * fs[6];
fs_4_[8] = 0.008373395F * fs[7];
fs_4_[9] = 0.0046053673F * fs[8];
fs_4_[10] = 0.002532952F * fs[9];
fs_5_[0] = 0.7F * fs[0];
fs_5_[1] = 0.48999998F * fs[1];
fs_5_[2] = 0.343F * fs[2];
fs_5_[3] = 0.2401F * fs[3];
fs_5_[4] = 0.16806999F * fs[4];
fs_5_[5] = 0.11764899F * fs[5];
fs_5_[6] = 0.08235429F * fs[6];
fs_5_[7] = 0.057648003F * fs[7];
fs_5_[8] = 0.0403536F * fs[8];
fs_5_[9] = 0.02824752F * fs[9];
g729a_common.g729a_FIR(fs_3_, 144, fs_1_, fs_4_, 1,
var_g729a_sinthesis_filter);
int i_9_ = i - 3;
float f_10_ = g729a_common.g729a_correl(fs_3_, 144, fs_3_, 144 - i_9_);
for (int i_11_ = i - 2; i_11_ < i + 4; i_11_++) {
float f_12_
= g729a_common.g729a_correl(fs_3_, 144, fs_3_, 144 - i_11_);
if (f_12_ > f_10_) {
f_10_ = f_12_;
i_9_ = i_11_;
}
}
float f_13_ = g729a_common.g729a_norma(fs_3_, 144);
float f_14_ = g729a_common.g729a_norma(fs_3_, 144 - i_9_);
float f_15_;
if (f_13_ == 0.0F || f_14_ == 0.0F)
f_15_ = 0.0F;
else
f_15_ = f_10_ * f_10_ / (f_14_ * f_13_);
float f_16_;
if (f_15_ < 0.5F)
f_16_ = 0.0F;
else {
f_16_ = f_10_ / f_13_;
var_g729a_decode_speech.periodic |= 0x1;
}
if (f_16_ < 0.0F)
f_16_ = 0.0F;
if (f_16_ > 1.0F)
f_16_ = 1.0F;
float f_17_ = f_16_ * 0.5F;
float f_18_ = 1.0F / (1.0F + f_17_);
float f_19_ = f_17_ / (1.0F + f_17_);
for (int i_20_ = 0; i_20_ < 40; i_20_++)
fs_7_[i_20_] = (f_18_ * fs_3_[i_20_ + 144]
+ f_19_ * fs_3_[i_20_ + 144 - i_9_]);
g729a_utils.g729a_set_0(fs_4_, 11, 29);
g729a_utils.g729a_set_0(var_g729a_sinthesis_filter_8_.delay, 10);
g729a_common.g729a_IIR(fs_6_, fs_4_, fs_5_,
var_g729a_sinthesis_filter_8_);
float f_21_ = 0.0F;
for (int i_22_ = 0; i_22_ < 22; i_22_++)
f_21_ += fs_6_[i_22_] * fs_6_[i_22_];
float f_23_ = 0.0F;
for (int i_24_ = 0; i_24_ < 21; i_24_++)
f_23_ += fs_6_[i_24_] * fs_6_[i_24_ + 1];
float f_25_ = -f_23_ / f_21_;
float f_26_;
if (f_25_ < 0.0F)
f_26_ = 0.8F;
else
f_26_ = 0.0F;
f_26_ *= f_25_;
float f_27_ = var_g729a_tilt_filter.x1;
for (int i_28_ = 0; i_28_ < 40; i_28_++) {
float f_29_ = fs_7_[i_28_];
fs_7_[i_28_] = f_29_ + f_26_ * f_27_;
f_27_ = f_29_;
}
var_g729a_tilt_filter.x1 = f_27_;
g729a_common.g729a_IIR(fs_2_, fs_7_, fs_5_,
var_g729a_sinthesis_filter_0_);
f_13_ = g729a_common.g729a_norma(fs_1_);
f_10_ = g729a_common.g729a_norma(fs_2_);
float f_30_;
if (f_10_ == 0.0F)
f_30_ = 0.0F;
else
f_30_ = (float) (Math.sqrt((double) (f_13_ / f_10_))
* 0.10000000149011612);
for (int i_31_ = 0; i_31_ < 40; i_31_++) {
fs_2_[i_31_] *= f;
f = 0.9F * f + f_30_;
}
var_g729a_decode_speech.past_g = f;
for (int i_32_ = 0; i_32_ < 144; i_32_++)
fs_3_[i_32_] = fs_3_[i_32_ + 40];
}
}