FFmpeg
|
Audio Mix Filter. More...
#include "libavutil/attributes.h"
#include "libavutil/audio_fifo.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/samplefmt.h"
#include "audio.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"
Go to the source code of this file.
Data Structures | |
struct | FrameInfo |
struct | FrameList |
Linked list used to store timestamps and frame sizes of all frames in the FIFO for the first input. More... | |
struct | MixContext |
Macros | |
#define | INPUT_ON 1 |
input is active More... | |
#define | INPUT_EOF 2 |
input has reached EOF (may still be active) More... | |
#define | DURATION_LONGEST 0 |
#define | DURATION_SHORTEST 1 |
#define | DURATION_FIRST 2 |
#define | OFFSET(x) offsetof(MixContext, x) |
#define | A AV_OPT_FLAG_AUDIO_PARAM |
#define | F AV_OPT_FLAG_FILTERING_PARAM |
Functions | |
static void | frame_list_clear (FrameList *frame_list) |
static int | frame_list_next_frame_size (FrameList *frame_list) |
static int64_t | frame_list_next_pts (FrameList *frame_list) |
static void | frame_list_remove_samples (FrameList *frame_list, int nb_samples) |
static int | frame_list_add_frame (FrameList *frame_list, int nb_samples, int64_t pts) |
AVFILTER_DEFINE_CLASS (amix) | |
static void | calculate_scales (MixContext *s, int nb_samples) |
Update the scaling factors to apply to each input during mixing. More... | |
static int | config_output (AVFilterLink *outlink) |
static int | calc_active_inputs (MixContext *s) |
Calculates the number of active inputs and determines EOF based on the duration option. More... | |
static int | output_frame (AVFilterLink *outlink) |
Read samples from the input FIFOs, mix, and write to the output link. More... | |
static int | request_samples (AVFilterContext *ctx, int min_samples) |
Requests a frame, if needed, from each input link other than the first. More... | |
static int | request_frame (AVFilterLink *outlink) |
static int | filter_frame (AVFilterLink *inlink, AVFrame *buf) |
static av_cold int | init (AVFilterContext *ctx) |
static av_cold void | uninit (AVFilterContext *ctx) |
static int | query_formats (AVFilterContext *ctx) |
Variables | |
static const AVOption | amix_options [] |
static const AVFilterPad | avfilter_af_amix_outputs [] |
AVFilter | ff_af_amix |
Audio Mix Filter.
Mixes audio from multiple sources into a single output. The channel layout, sample rate, and sample format will be the same for all inputs and the output.
Definition in file af_amix.c.
#define INPUT_ON 1 |
input is active
Definition at line 47 of file af_amix.c.
Referenced by calc_active_inputs(), calculate_scales(), config_output(), output_frame(), request_frame(), and request_samples().
#define INPUT_EOF 2 |
input has reached EOF (may still be active)
Definition at line 48 of file af_amix.c.
Referenced by output_frame(), and request_samples().
#define DURATION_SHORTEST 1 |
Definition at line 51 of file af_amix.c.
Referenced by calc_active_inputs().
#define DURATION_FIRST 2 |
Definition at line 52 of file af_amix.c.
Referenced by calc_active_inputs().
#define OFFSET | ( | x | ) | offsetof(MixContext, x) |
#define A AV_OPT_FLAG_AUDIO_PARAM |
#define F AV_OPT_FLAG_FILTERING_PARAM |
Definition at line 76 of file af_amix.c.
Referenced by frame_list_remove_samples(), and uninit().
|
static |
Definition at line 90 of file af_amix.c.
Referenced by output_frame(), and request_frame().
|
static |
Definition at line 97 of file af_amix.c.
Referenced by output_frame().
Definition at line 104 of file af_amix.c.
Referenced by output_frame().
|
static |
Definition at line 131 of file af_amix.c.
Referenced by filter_frame().
AVFILTER_DEFINE_CLASS | ( | amix | ) |
|
static |
Update the scaling factors to apply to each input during mixing.
This balances the full volume range between active inputs and handles volume transitions when EOF is encountered on an input but mixing continues with the remaining inputs.
Definition at line 201 of file af_amix.c.
Referenced by config_output(), and output_frame().
|
static |
|
static |
Calculates the number of active inputs and determines EOF based on the duration option.
Definition at line 387 of file af_amix.c.
Referenced by output_frame(), and request_frame().
|
static |
Read samples from the input FIFOs, mix, and write to the output link.
Definition at line 271 of file af_amix.c.
Referenced by filter_frame(), request_frame(), and request_samples().
|
static |
Requests a frame, if needed, from each input link other than the first.
Definition at line 355 of file af_amix.c.
Referenced by request_frame().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
AVFilter ff_af_amix |