|
|
|
@ -1668,12 +1668,18 @@ void ff_sbr_apply(AACContext *ac, SpectralBandReplication *sbr, int id_aac, |
|
|
|
|
sbr_qmf_analysis(&ac->fdsp, &sbr->mdct_ana, &sbr->dsp, ch ? R : L, sbr->data[ch].analysis_filterbank_samples, |
|
|
|
|
(float*)sbr->qmf_filter_scratch, |
|
|
|
|
sbr->data[ch].W, sbr->data[ch].Ypos); |
|
|
|
|
sbr_lf_gen(ac, sbr, sbr->X_low, sbr->data[ch].W, sbr->data[ch].Ypos); |
|
|
|
|
sbr_lf_gen(ac, sbr, sbr->X_low, |
|
|
|
|
(const float (*)[32][32][2]) sbr->data[ch].W, |
|
|
|
|
sbr->data[ch].Ypos); |
|
|
|
|
sbr->data[ch].Ypos ^= 1; |
|
|
|
|
if (sbr->start) { |
|
|
|
|
sbr_hf_inverse_filter(&sbr->dsp, sbr->alpha0, sbr->alpha1, sbr->X_low, sbr->k[0]); |
|
|
|
|
sbr_hf_inverse_filter(&sbr->dsp, sbr->alpha0, sbr->alpha1, |
|
|
|
|
(const float (*)[40][2]) sbr->X_low, sbr->k[0]); |
|
|
|
|
sbr_chirp(sbr, &sbr->data[ch]); |
|
|
|
|
sbr_hf_gen(ac, sbr, sbr->X_high, sbr->X_low, sbr->alpha0, sbr->alpha1, |
|
|
|
|
sbr_hf_gen(ac, sbr, sbr->X_high, |
|
|
|
|
(const float (*)[40][2]) sbr->X_low, |
|
|
|
|
(const float (*)[2]) sbr->alpha0, |
|
|
|
|
(const float (*)[2]) sbr->alpha1, |
|
|
|
|
sbr->data[ch].bw_array, sbr->data[ch].t_env, |
|
|
|
|
sbr->data[ch].bs_num_env); |
|
|
|
|
|
|
|
|
@ -1683,16 +1689,17 @@ void ff_sbr_apply(AACContext *ac, SpectralBandReplication *sbr, int id_aac, |
|
|
|
|
sbr_env_estimate(sbr->e_curr, sbr->X_high, sbr, &sbr->data[ch]); |
|
|
|
|
sbr_gain_calc(ac, sbr, &sbr->data[ch], sbr->data[ch].e_a); |
|
|
|
|
sbr_hf_assemble(sbr->data[ch].Y[sbr->data[ch].Ypos], |
|
|
|
|
sbr->X_high, sbr, &sbr->data[ch], |
|
|
|
|
(const float (*)[40][2]) sbr->X_high, |
|
|
|
|
sbr, &sbr->data[ch], |
|
|
|
|
sbr->data[ch].e_a); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* synthesis */ |
|
|
|
|
sbr_x_gen(sbr, sbr->X[ch], |
|
|
|
|
sbr->data[ch].Y[1-sbr->data[ch].Ypos], |
|
|
|
|
sbr->data[ch].Y[ sbr->data[ch].Ypos], |
|
|
|
|
sbr->X_low, ch); |
|
|
|
|
(const float (*)[64][2]) sbr->data[ch].Y[1-sbr->data[ch].Ypos], |
|
|
|
|
(const float (*)[64][2]) sbr->data[ch].Y[ sbr->data[ch].Ypos], |
|
|
|
|
(const float (*)[40][2]) sbr->X_low, ch); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (ac->oc[1].m4ac.ps == 1) { |
|
|
|
|