59 #define OFFSET(x) offsetof(AudioFIRSourceContext, x) 60 #define FLAGS AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM 176 (*items)[(*nb_items)++] =
av_strtod(tail, &tail);
177 new_items =
av_fast_realloc(*items, items_size, (*nb_items + 1) *
sizeof(
float));
183 }
while (tail && *tail);
194 for (
int i = 0;
i < minterp;
i++) {
195 for (
int j = 1; j < m; j++) {
196 const float x =
i / (float)minterp;
199 const float mg = (x - freq[j-1]) / (freq[j] - freq[j-1]) * (magnitude[j] - magnitude[j-1]) + magnitude[j-1];
200 const float ph = (x - freq[j-1]) / (freq[j] - freq[j-1]) * (phase[j] - phase[j-1]) + phase[j-1];
202 complexf[
i].
re = mg *
cosf(ph);
203 complexf[
i].
im = mg *
sinf(ph);
214 float overlap, scale = 1.f, compensation;
215 int fft_size, middle, ret;
232 av_log(ctx,
AV_LOG_ERROR,
"Number of frequencies, magnitudes and phases must be same and >= 2.\n");
237 if (
i == 0 && s->
freq[
i] != 0.f) {
276 compensation = 2.f / fft_size;
279 for (
int i = 0;
i <= middle;
i++) {
303 memcpy(frame->
data[0], s->
taps + s->
pts, nb_samples *
sizeof(
float));
329 .priv_class = &afirsrc_class,
av_cold void av_tx_uninit(AVTXContext **ctx)
Frees a context and sets ctx to NULL, does nothing when ctx == NULL.
static av_cold int config_output(AVFilterLink *outlink)
This structure describes decoded (raw) audio or video data.
static void lininterp(AVComplexFloat *complexf, const float *freq, const float *magnitude, const float *phase, int m, int minterp)
#define AV_LOG_WARNING
Something somehow does not look correct.
Main libavfilter public API header.
static void generate_window_func(float *lut, int N, int win_func, float *overlap)
void * av_calloc(size_t nmemb, size_t size)
Non-inlined equivalent of av_mallocz_array().
static av_cold void uninit(AVFilterContext *ctx)
const char * name
Pad name.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
#define AVERROR_EOF
End of file.
A filter pad used for either input or output.
static int request_frame(AVFilterLink *outlink)
A link between two filters.
#define i(width, name, range_min, range_max)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void(* av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride)
Function pointer to a function to perform the transform.
AVFrame * ff_get_audio_buffer(AVFilterLink *link, int nb_samples)
Request an audio samples buffer with a specific set of permissions.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter
Standard complex to complex FFT with sample data type AVComplexFloat.
static int parse_string(char *str, float **items, int *nb_items, int *items_size)
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given buffer if it is not large enough, otherwise do nothing.
AVFilterContext * src
source filter
static const AVFilterPad inputs[]
static const AVFilterPad outputs[]
A list of supported channel layouts.
double av_strtod(const char *numstr, char **tail)
Parse the string in numstr and return its value as a double.
AVSampleFormat
Audio sample formats.
Describe the class of an AVClass context structure.
const char * name
Filter name.
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 Currently power of two lengths from 2 to ...
enum MovChannelLayoutTag * layouts
AVFILTER_DEFINE_CLASS(afirsrc)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static const AVOption afirsrc_options[]
static const AVFilterPad afirsrc_outputs[]
static av_cold int query_formats(AVFilterContext *ctx)
static enum AVSampleFormat sample_fmts[]
AVComplexFloat * complexf
#define AV_CH_LAYOUT_MONO
static av_cold int init(AVFilterContext *ctx)
simple arithmetic expression evaluator