|
|
|
@ -305,14 +305,15 @@ static void hybrid2_re(float (*in)[2], float (*out)[32][2], const float filter[8 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Split one subband into 6 subsubbands with a complex filter */ |
|
|
|
|
static void hybrid6_cx(PSDSPContext *dsp, float (*in)[2], float (*out)[32][2], const float (*filter)[8][2], int len) |
|
|
|
|
static void hybrid6_cx(PSDSPContext *dsp, float (*in)[2], float (*out)[32][2], |
|
|
|
|
TABLE_CONST float (*filter)[8][2], int len) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
int N = 8; |
|
|
|
|
LOCAL_ALIGNED_16(float, temp, [8], [2]); |
|
|
|
|
|
|
|
|
|
for (i = 0; i < len; i++, in++) { |
|
|
|
|
dsp->hybrid_analysis(temp, in, filter, 1, N); |
|
|
|
|
dsp->hybrid_analysis(temp, in, (const float (*)[8][2]) filter, 1, N); |
|
|
|
|
out[0][i][0] = temp[6][0]; |
|
|
|
|
out[0][i][1] = temp[6][1]; |
|
|
|
|
out[1][i][0] = temp[7][0]; |
|
|
|
@ -328,12 +329,14 @@ static void hybrid6_cx(PSDSPContext *dsp, float (*in)[2], float (*out)[32][2], c |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void hybrid4_8_12_cx(PSDSPContext *dsp, float (*in)[2], float (*out)[32][2], const float (*filter)[8][2], int N, int len) |
|
|
|
|
static void hybrid4_8_12_cx(PSDSPContext *dsp, |
|
|
|
|
float (*in)[2], float (*out)[32][2], |
|
|
|
|
TABLE_CONST float (*filter)[8][2], int N, int len) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < len; i++, in++) { |
|
|
|
|
dsp->hybrid_analysis(out[0] + i, in, filter, 32, N); |
|
|
|
|
dsp->hybrid_analysis(out[0] + i, in, (const float (*)[8][2]) filter, 32, N); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -669,7 +672,8 @@ static void decorrelation(PSContext *ps, float (*out)[32][2], const float (*s)[3 |
|
|
|
|
memcpy(ap_delay[k][m], ap_delay[k][m]+numQMFSlots, 5*sizeof(ap_delay[k][m][0])); |
|
|
|
|
} |
|
|
|
|
ps->dsp.decorrelate(out[k], delay[k] + PS_MAX_DELAY - 2, ap_delay[k], |
|
|
|
|
phi_fract[is34][k], Q_fract_allpass[is34][k], |
|
|
|
|
phi_fract[is34][k], |
|
|
|
|
(const float (*)[2]) Q_fract_allpass[is34][k], |
|
|
|
|
transient_gain[b], g_decay_slope, nL - n0); |
|
|
|
|
} |
|
|
|
|
for (; k < SHORT_DELAY_BAND[is34]; k++) { |
|
|
|
@ -747,7 +751,7 @@ static void stereo_processing(PSContext *ps, float (*l)[32][2], float (*r)[32][2 |
|
|
|
|
int8_t (*ipd_mapped)[PS_MAX_NR_IIDICC] = ipd_mapped_buf; |
|
|
|
|
int8_t (*opd_mapped)[PS_MAX_NR_IIDICC] = opd_mapped_buf; |
|
|
|
|
const int8_t *k_to_i = is34 ? k_to_i_34 : k_to_i_20; |
|
|
|
|
const float (*H_LUT)[8][4] = (PS_BASELINE || ps->icc_mode < 3) ? HA : HB; |
|
|
|
|
TABLE_CONST float (*H_LUT)[8][4] = (PS_BASELINE || ps->icc_mode < 3) ? HA : HB; |
|
|
|
|
|
|
|
|
|
//Remapping
|
|
|
|
|
if (ps->num_env_old) { |
|
|
|
@ -897,7 +901,7 @@ int ff_ps_apply(AVCodecContext *avctx, PSContext *ps, float L[2][38][64], float |
|
|
|
|
memset(ps->ap_delay + top, 0, (NR_ALLPASS_BANDS[is34] - top)*sizeof(ps->ap_delay[0])); |
|
|
|
|
|
|
|
|
|
hybrid_analysis(&ps->dsp, Lbuf, ps->in_buf, L, is34, len); |
|
|
|
|
decorrelation(ps, Rbuf, Lbuf, is34); |
|
|
|
|
decorrelation(ps, Rbuf, (const float (*)[32][2]) Lbuf, is34); |
|
|
|
|
stereo_processing(ps, Lbuf, Rbuf, is34); |
|
|
|
|
hybrid_synthesis(&ps->dsp, L, Lbuf, is34, len); |
|
|
|
|
hybrid_synthesis(&ps->dsp, R, Rbuf, is34, len); |
|
|
|
|