+static void uninit_segment(AVFilterContext *ctx, AudioFIRSegment *seg)
+{
+ AudioFIRContext *s = ctx->priv;
+
+ if (seg->rdft) {
+ for (int ch = 0; ch < s->nb_channels; ch++) {
+ av_rdft_end(seg->rdft[ch]);
+ }
+ }
+ av_freep(&seg->rdft);
+
+ if (seg->irdft) {
+ for (int ch = 0; ch < s->nb_channels; ch++) {
+ av_rdft_end(seg->irdft[ch]);
+ }
+ }
+ av_freep(&seg->irdft);
+
+ av_freep(&seg->output_offset);
+ av_freep(&seg->part_index);
+
+ av_frame_free(&seg->block);
+ av_frame_free(&seg->sum);
+ av_frame_free(&seg->buffer);
+ av_frame_free(&seg->coeff);
+ av_frame_free(&seg->input);
+ av_frame_free(&seg->output);
+ seg->input_size = 0;
+}
+