|
|
|
@ -155,7 +155,7 @@ static int frame_list_add_frame(FrameList *frame_list, int nb_samples, int64_t p |
|
|
|
|
|
|
|
|
|
typedef struct MixContext { |
|
|
|
|
const AVClass *class; /**< class for AVOptions */ |
|
|
|
|
AVFloatDSPContext fdsp; |
|
|
|
|
AVFloatDSPContext *fdsp; |
|
|
|
|
|
|
|
|
|
int nb_inputs; /**< number of inputs */ |
|
|
|
|
int active_inputs; /**< number of input currently active */ |
|
|
|
@ -298,7 +298,7 @@ static int output_frame(AVFilterLink *outlink, int nb_samples) |
|
|
|
|
plane_size = FFALIGN(plane_size, 16); |
|
|
|
|
|
|
|
|
|
for (p = 0; p < planes; p++) { |
|
|
|
|
s->fdsp.vector_fmac_scalar((float *)out_buf->extended_data[p], |
|
|
|
|
s->fdsp->vector_fmac_scalar((float *)out_buf->extended_data[p], |
|
|
|
|
(float *) in_buf->extended_data[p], |
|
|
|
|
s->input_scale[i], plane_size); |
|
|
|
|
} |
|
|
|
@ -501,7 +501,9 @@ static av_cold int init(AVFilterContext *ctx) |
|
|
|
|
ff_insert_inpad(ctx, i, &pad); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
avpriv_float_dsp_init(&s->fdsp, 0); |
|
|
|
|
s->fdsp = avpriv_float_dsp_alloc(0); |
|
|
|
|
if (!s->fdsp) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
@ -520,6 +522,7 @@ static av_cold void uninit(AVFilterContext *ctx) |
|
|
|
|
av_freep(&s->frame_list); |
|
|
|
|
av_freep(&s->input_state); |
|
|
|
|
av_freep(&s->input_scale); |
|
|
|
|
av_freep(&s->fdsp); |
|
|
|
|
|
|
|
|
|
for (i = 0; i < ctx->nb_inputs; i++) |
|
|
|
|
av_freep(&ctx->input_pads[i].name); |
|
|
|
|