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_OFF 0 |
input has reached EOF | |
#define | INPUT_ON 1 |
input is active | |
#define | INPUT_INACTIVE 2 |
input is on, but is currently inactive | |
#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. | |
static int | config_output (AVFilterLink *outlink) |
static int | output_frame (AVFilterLink *outlink, int nb_samples) |
Read samples from the input FIFOs, mix, and write to the output link. | |
static int | get_available_samples (MixContext *s) |
Returns the smallest number of samples available in the input FIFOs other than that of the first input. | |
static int | request_samples (AVFilterContext *ctx, int min_samples) |
Requests a frame, if needed, from each input link other than the first. | |
static int | calc_active_inputs (MixContext *s) |
Calculates the number of active inputs and determines EOF based on the duration option. | |
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_OFF 0 |
input has reached EOF
Definition at line 47 of file af_amix.c.
Referenced by calc_active_inputs(), get_available_samples(), request_frame(), and request_samples().
#define INPUT_ON 1 |
input is active
Definition at line 48 of file af_amix.c.
Referenced by calculate_scales(), config_output(), and output_frame().
#define INPUT_INACTIVE 2 |
#define DURATION_SHORTEST 1 |
Definition at line 52 of file af_amix.c.
Referenced by calc_active_inputs().
#define DURATION_FIRST 2 |
Definition at line 53 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 77 of file af_amix.c.
Referenced by frame_list_remove_samples(), and uninit().
|
static |
Definition at line 91 of file af_amix.c.
Referenced by request_frame().
|
static |
Definition at line 98 of file af_amix.c.
Referenced by request_frame().
Definition at line 105 of file af_amix.c.
Referenced by request_frame().
|
static |
Definition at line 132 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 202 of file af_amix.c.
Referenced by config_output(), and output_frame().
|
static |
|
static |
Read samples from the input FIFOs, mix, and write to the output link.
Definition at line 270 of file af_amix.c.
Referenced by request_frame().
|
static |
Returns the smallest number of samples available in the input FIFOs other than that of the first input.
Definition at line 320 of file af_amix.c.
Referenced by request_frame().
|
static |
Requests a frame, if needed, from each input link other than the first.
Definition at line 342 of file af_amix.c.
Referenced by request_frame().
|
static |
Calculates the number of active inputs and determines EOF based on the duration option.
Definition at line 372 of file af_amix.c.
Referenced by request_frame().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
AVFilter ff_af_amix |