204 ftype *center = (
ftype *)
s->center_frame->extended_data[0];
205 ftype *center_prev = (
ftype *)
s->center_frame->extended_data[1];
206 ftype *left_in = (
ftype *)
s->in_frame->extended_data[0];
207 ftype *right_in = (
ftype *)
s->in_frame->extended_data[1];
208 ftype *left_out = (
ftype *)
s->out_dist_frame->extended_data[0];
209 ftype *right_out = (
ftype *)
s->out_dist_frame->extended_data[1];
210 ftype *left_samples = (
ftype *)
s->in->extended_data[0];
211 ftype *right_samples = (
ftype *)
s->in->extended_data[1];
212 ftype *windowed_left = (
ftype *)
s->windowed_frame->extended_data[0];
213 ftype *windowed_right = (
ftype *)
s->windowed_frame->extended_data[1];
214 ftype *windowed_oleft = (
ftype *)
s->windowed_out->extended_data[0];
215 ftype *windowed_oright = (
ftype *)
s->windowed_out->extended_data[1];
216 ftype *windowed_pleft = (
ftype *)
s->windowed_prev->extended_data[0];
217 ftype *windowed_pright = (
ftype *)
s->windowed_prev->extended_data[1];
221 const int overlap =
s->overlap;
222 const int offset =
s->fft_size - overlap;
223 const int nb_samples =
FFMIN(overlap,
s->in->nb_samples);
227 memmove(left_in, &left_in[overlap],
offset *
sizeof(
ftype));
228 memmove(right_in, &right_in[overlap],
offset *
sizeof(
ftype));
229 memmove(left_out, &left_out[overlap],
offset *
sizeof(
ftype));
230 memmove(right_out, &right_out[overlap],
offset *
sizeof(
ftype));
232 memcpy(&left_in[
offset], left_samples, nb_samples *
sizeof(
ftype));
233 memcpy(&right_in[
offset], right_samples, nb_samples *
sizeof(
ftype));
234 memset(&left_out[
offset], 0, overlap *
sizeof(
ftype));
235 memset(&right_out[
offset], 0, overlap *
sizeof(
ftype));
240 s->tx_fn(
s->tx_ctx[0], windowed_oleft, windowed_left,
sizeof(
ftype));
241 s->tx_fn(
s->tx_ctx[1], windowed_oright, windowed_right,
sizeof(
ftype));
244 (
ctype *)windowed_oright,
246 s->fft_size / 2 + 1);
249 fn(
fluxlr)(windowed_oleft, windowed_pleft,
250 windowed_oright, windowed_pright,
s->fft_size / 2 + 1),
s->voice);
251 vad = vad * 0.1 + 0.9 *
fn(
s->prev_vad);
252 fn(
s->prev_vad) = vad;
254 memcpy(center_prev, center,
s->fft_size *
sizeof(
ftype));
255 memcpy(windowed_pleft, windowed_oleft,
s->fft_size *
sizeof(
ftype));
256 memcpy(windowed_pright, windowed_oright,
s->fft_size *
sizeof(
ftype));
258 fn(
get_final)(center, windowed_oleft, windowed_oright, vad,
s->fft_size / 2 + 1,
259 s->original,
s->enhance);
261 s->itx_fn(
s->itx_ctx, windowed_oleft, center,
sizeof(
ctype));
265 memcpy(left_osamples, left_in, overlap *
sizeof(
ftype));
266 memcpy(right_osamples, right_in, overlap *
sizeof(
ftype));
268 if (
ctx->is_disabled)
269 memset(center_osamples, 0, overlap *
sizeof(
ftype));
271 memcpy(center_osamples, left_out, overlap *
sizeof(
ftype));
static float * lpf(float Fn, float Fc, float tbw, int *num_taps, float att, float *beta, int round)
av_cold int av_tx_init(AVTXContext **ctx, av_tx_fn *tx, enum AVTXType type, int inv, int len, const void *scale, uint64_t flags)
Initialize a transform context with the given configuration (i)MDCTs with an odd length are currently...