/* g729a_reconstruct - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package javaforce.codec.g729a;
final class g729a_reconstruct implements g729a_constants
{
static void g729a_lspdec(g729a_decode_lp var_g729a_decode_lp,
G729aCode g729acode) {
int i = g729acode.getL0();
int i_0_ = g729acode.getL1();
int i_1_ = g729acode.getL2();
int i_2_ = g729acode.getL3();
float[] fs = new float[10];
float[] fs_3_ = new float[10];
var_g729a_decode_lp.past_MA = i;
float[] fs_4_ = var_g729a_decode_lp.fg_l_quant_sum;
int i_5_ = 10 * i;
float[] fs_6_ = g729a_tables.g729a_fg_sum;
int i_7_ = 10 * i;
for (int i_8_ = 0; i_8_ < 5; i_8_++)
fs[i_8_] = (g729a_tables.g729a_lspcb1[10 * i_0_ + i_8_]
+ g729a_tables.g729a_lspcb2[10 * i_1_ + i_8_]);
for (int i_9_ = 5; i_9_ < 10; i_9_++)
fs[i_9_] = (g729a_tables.g729a_lspcb1[10 * i_0_ + i_9_]
+ g729a_tables.g729a_lspcb2[10 * i_2_ + i_9_]);
g729a_common.g729a_rearrange(fs, 0.0012207031F, 10);
g729a_common.g729a_rearrange(fs, 6.1035156E-4F, 10);
g729a_common.g729a_reconstracte(fs_3_, fs, fs_4_, i_5_, i_7_, 10);
g729a_common.g729a_check_stability(fs_3_);
float[] fs_10_ = var_g729a_decode_lp.l_quant_past_frame_4;
var_g729a_decode_lp.l_quant_past_frame_4
= var_g729a_decode_lp.l_quant_past_frame_3;
var_g729a_decode_lp.l_quant_past_frame_3
= var_g729a_decode_lp.l_quant_past_frame_2;
var_g729a_decode_lp.l_quant_past_frame_2
= var_g729a_decode_lp.l_quant_past_frame_1;
var_g729a_decode_lp.l_quant_past_frame_1 = fs_10_;
for (int i_11_ = 0; i_11_ < 10; i_11_++)
fs_10_[i_11_] = fs[i_11_];
float[] fs_12_ = var_g729a_decode_lp.l_quant_past_frame_1;
float[] fs_13_ = var_g729a_decode_lp.l_quant_past_frame_2;
float[] fs_14_ = var_g729a_decode_lp.l_quant_past_frame_3;
float[] fs_15_ = var_g729a_decode_lp.l_quant_past_frame_4;
for (int i_16_ = 0; i_16_ < 2; i_16_++) {
fs_4_ = var_g729a_decode_lp.fg_l_quant_sum;
i_5_ = 10 * i_16_;
float[] fs_17_ = g729a_tables.g729a_fg;
int i_18_ = 40 * i_16_;
for (int i_19_ = 0; i_19_ < 10; i_19_++)
fs_4_[i_5_ + i_19_]
= (fs_17_[i_18_ + i_19_] * fs_12_[i_19_]
+ fs_17_[i_18_ + 10 + i_19_] * fs_13_[i_19_]
+ fs_17_[i_18_ + 20 + i_19_] * fs_14_[i_19_]
+ fs_17_[i_18_ + 30 + i_19_] * fs_15_[i_19_]);
}
for (int i_20_ = 0; i_20_ < 10; i_20_++)
var_g729a_decode_lp.past_omega[i_20_] = fs_3_[i_20_];
for (int i_21_ = 0; i_21_ < 10; i_21_++)
var_g729a_decode_lp.q_quant_present_subframe_2[i_21_]
= (float) Math.cos((double) fs_3_[i_21_]);
}
static void g729a_lspdec_erased(g729a_decode_lp var_g729a_decode_lp) {
float[] fs = new float[10];
float[] fs_22_ = new float[10];
float[] fs_23_ = var_g729a_decode_lp.fg_l_quant_sum;
int i = 10 * var_g729a_decode_lp.past_MA;
float[] fs_24_ = g729a_tables.g729a_fg_sum;
int i_25_ = 10 * var_g729a_decode_lp.past_MA;
float[] fs_26_ = g729a_tables.g729a_fg_sum_inv;
int i_27_ = 10 * var_g729a_decode_lp.past_MA;
float[] fs_28_ = var_g729a_decode_lp.past_omega;
for (int i_29_ = 0; i_29_ < 10; i_29_++)
fs[i_29_]
= (fs_28_[i_29_] - fs_23_[i + i_29_]) * fs_26_[i_27_ + i_29_];
g729a_common.g729a_rearrange(fs, 0.0012207031F, 10);
g729a_common.g729a_rearrange(fs, 6.1035156E-4F, 10);
g729a_common.g729a_reconstracte(fs_22_, fs, fs_23_, i, i_25_, 10);
g729a_common.g729a_check_stability(fs_22_);
for (int i_30_ = 0; i_30_ < 10; i_30_++)
var_g729a_decode_lp.q_quant_present_subframe_2[i_30_]
= (float) Math.cos((double) fs_22_[i_30_]);
}
static void g729a_dec_lag3_1
(G729aCode g729acode, g729a_decode_internal var_g729a_decode_internal,
g729a_decode_speech var_g729a_decode_speech) {
float[] fs = var_g729a_decode_internal.v;
float[] fs_31_ = var_g729a_decode_speech.excitation;
int i = g729acode.getP0();
int i_32_ = g729acode.getP1();
int i_33_
= (i_32_ >> 2 & 0x1 ^ i_32_ >> 3 & 0x1 ^ i_32_ >> 4 & 0x1
^ i_32_ >> 5 & 0x1 ^ i_32_ >> 6 & 0x1 ^ i_32_ >> 7 & 0x1 ^ 0x1);
int i_34_;
int i_35_;
if (i_33_ != i) {
i_34_ = var_g729a_decode_speech.T2;
i_35_ = 0;
} else if (i_32_ < 197) {
i_34_ = (i_32_ + 2) / 3 + 19;
i_35_ = i_32_ - 3 * i_34_ + 58;
} else {
i_34_ = i_32_ - 112;
i_35_ = 0;
}
var_g729a_decode_internal.T1 = i_34_;
if (i_35_ == 1) {
i_35_ = -2;
i_34_++;
}
g729a_common.g729a_generation_adaptive_vector(fs, fs_31_, i_34_,
i_35_);
}
static void g729a_dec_lag3_2
(G729aCode g729acode, g729a_decode_internal var_g729a_decode_internal,
g729a_decode_speech var_g729a_decode_speech) {
float[] fs = var_g729a_decode_internal.v;
float[] fs_36_ = var_g729a_decode_speech.excitation;
int i = g729acode.getP2();
int i_37_ = var_g729a_decode_internal.T1;
int i_38_ = i_37_ - 5;
if (i_38_ < 20)
i_38_ = 20;
int i_39_ = i_38_ + 9;
if (i_39_ > 143) {
i_39_ = 143;
i_38_ = i_39_ - 9;
}
int i_40_ = (i + 2) / 3 - 1 + i_38_;
int i_41_ = i - 2 - 3 * (i_40_ - i_38_);
var_g729a_decode_speech.T2 = i_40_;
if (i_41_ == 1) {
i_41_ = -2;
i_40_++;
}
g729a_common.g729a_generation_adaptive_vector(fs, fs_36_, i_40_,
i_41_);
}
static void g729a_de_acelp(g729a_decode_internal var_g729a_decode_internal,
int i, float f) {
float[] fs = var_g729a_decode_internal.c;
int i_42_ = var_g729a_decode_internal.S;
int i_43_ = var_g729a_decode_internal.C;
int i_44_ = i_42_ & 0x1;
i_44_ = i_44_ - 1 + (i_44_ & 0x1);
int i_45_ = i_42_ >> 1 & 0x1;
i_45_ = i_45_ - 1 + (i_45_ & 0x1);
int i_46_ = i_42_ >> 2 & 0x1;
i_46_ = i_46_ - 1 + (i_46_ & 0x1);
int i_47_ = i_42_ >> 3 & 0x1;
i_47_ = i_47_ - 1 + (i_47_ & 0x1);
g729a_utils.g729a_set_0(fs, 40);
int i_48_ = (i_43_ & 0x7) * 5;
int i_49_ = (i_43_ >> 3 & 0x7) * 5 + 1;
int i_50_ = (i_43_ >> 6 & 0x7) * 5 + 2;
int i_51_ = (i_43_ >> 9 & 0x1) + 3;
int i_52_ = (i_43_ >> 10 & 0x7) * 5 + i_51_;
fs[i_48_] = (float) i_44_;
fs[i_49_] = (float) i_45_;
fs[i_50_] = (float) i_46_;
fs[i_52_] = (float) i_47_;
if (f < 0.2000122F)
f = 0.2000122F;
if (f > 0.7944946F)
f = 0.7944946F;
for (i_48_ = i; i_48_ < 40; i_48_++)
fs[i_48_] += f * fs[i_48_ - i];
}
static void g729a_dec_gain(g729a_decode_internal var_g729a_decode_internal,
g729a_decode_speech var_g729a_decode_speech) {
float[] fs = var_g729a_decode_internal.c;
float[] fs_53_ = var_g729a_decode_speech.U;
byte i = g729a_tables.g729a_imap1[var_g729a_decode_internal.GA];
byte i_54_ = g729a_tables.g729a_imap2[var_g729a_decode_internal.GB];
float f = g729a_common.g729a_norma(fs);
f = 1.0F / (float) Math.sqrt((double) (f / 40.0F));
float f_55_ = ((0.68F * fs_53_[0] + 0.58F * fs_53_[1]
+ 0.34F * fs_53_[2] + 0.19F * fs_53_[3] + 30.0F)
/ 20.0F);
float f_56_
= (float) ((double) f * Math.exp((double) (2.3025851F * f_55_)));
var_g729a_decode_speech.past_quan_gp
= var_g729a_decode_internal.gp_quan
= (g729a_tables.g729a_gbk1[i][0]
+ g729a_tables.g729a_gbk2[i_54_][0]);
float f_57_ = (g729a_tables.g729a_gbk1[i][1]
+ g729a_tables.g729a_gbk2[i_54_][1]);
var_g729a_decode_speech.past_quan_gc
= var_g729a_decode_internal.gc_quan = f_56_ * f_57_;
fs_53_[3] = fs_53_[2];
fs_53_[2] = fs_53_[1];
fs_53_[1] = fs_53_[0];
fs_53_[0]
= (float) (20.0 * Math.log((double) f_57_) * 0.4342944819032518);
}
static void g729a_reconstruct_speech
(g729a_decode_internal var_g729a_decode_internal,
g729a_decode_speech var_g729a_decode_speech,
g729a_decode_filters var_g729a_decode_filters, float[] fs) {
float[] fs_58_ = var_g729a_decode_speech.excitation;
float[] fs_59_ = var_g729a_decode_internal.v;
float[] fs_60_ = var_g729a_decode_internal.c;
float[] fs_61_ = var_g729a_decode_internal.s;
float f = var_g729a_decode_internal.gc_quan;
float f_62_ = var_g729a_decode_internal.gp_quan;
g729a_sinthesis_filter var_g729a_sinthesis_filter
= var_g729a_decode_filters.sinthesis;
for (int i = 0; i < 40; i++)
fs_58_[i + 154] = f_62_ * fs_59_[i] + f * fs_60_[i];
g729a_common.g729a_IIR(fs_61_, fs_58_, 154, fs,
var_g729a_sinthesis_filter);
for (int i = -114; i < 40; i++)
fs_58_[154 + i - 40] = fs_58_[154 + i];
}
}