diff options
author | Paul B Mahol <onemda@gmail.com> | 2022-05-14 10:28:49 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2022-05-15 13:34:50 +0200 |
commit | 163e737c1793eeea9c2df15298253ffc04906afe (patch) | |
tree | b9adcc5b238908c6ad6f69ea951a42b7e9b3db89 /libavfilter/af_afir.h | |
parent | e6f0cec88041449475f37b82b76699d2f7b5b124 (diff) |
avfilter/af_afir: add support for double sample format
Diffstat (limited to 'libavfilter/af_afir.h')
-rw-r--r-- | libavfilter/af_afir.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/libavfilter/af_afir.h b/libavfilter/af_afir.h new file mode 100644 index 0000000000..e82fc58589 --- /dev/null +++ b/libavfilter/af_afir.h @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2017 Paul B Mahol + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFILTER_AFIR_H +#define AVFILTER_AFIR_H + +#include "libavutil/float_dsp.h" +#include "libavutil/frame.h" +#include "libavutil/rational.h" +#include "libavutil/tx.h" +#include "avfilter.h" +#include "af_afirdsp.h" + +typedef struct AudioFIRSegment { + int nb_partitions; + int part_size; + int block_size; + int fft_length; + int coeff_size; + int input_size; + int input_offset; + + int *output_offset; + int *part_index; + + AVFrame *sumin; + AVFrame *sumout; + AVFrame *blockin; + AVFrame *blockout; + AVFrame *buffer; + AVFrame *coeff; + AVFrame *input; + AVFrame *output; + + AVTXContext **tx, **itx; + av_tx_fn tx_fn, itx_fn; +} AudioFIRSegment; + +typedef struct AudioFIRContext { + const AVClass *class; + + float wet_gain; + float dry_gain; + float length; + int gtype; + float ir_gain; + int ir_format; + float max_ir_len; + int response; + int w, h; + AVRational frame_rate; + int ir_channel; + int minp; + int maxp; + int nb_irs; + int selir; + int precision; + int format; + + double gain; + + int eof_coeffs[32]; + int have_coeffs; + int nb_taps; + int nb_channels; + int nb_coef_channels; + int one2many; + + AudioFIRSegment seg[1024]; + int nb_segments; + + AVFrame *in; + AVFrame *ir[32]; + AVFrame *video; + int min_part_size; + int64_t pts; + + AudioFIRDSPContext afirdsp; + AVFloatDSPContext *fdsp; +} AudioFIRContext; + +#endif /* AVFILTER_AFIR_H */ |