Commit 440e984b authored by Stefano Sabatini's avatar Stefano Sabatini

lavfi: add asplit filter

parent ae217762
......@@ -10,6 +10,7 @@ version next:
- dv: add timecode to metadata
- thumbnail video filter
- XML output in ffprobe
- asplit audio filter
version 0.9:
......
......@@ -224,6 +224,19 @@ expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3} @var{c4} @var{c5}
@var{c6} @var{c7}]"
@end table
@section asplit
Pass on the input audio to two outputs. Both outputs are identical to
the input audio.
For example:
@example
[in] asplit[out0], showaudio[out1]
@end example
will create two separate outputs from the same input, one cropped and
one padded.
@section earwax
Make audio easier to listen to on headphones.
......
......@@ -29,6 +29,7 @@ OBJS-$(CONFIG_AFORMAT_FILTER) += af_aformat.o
OBJS-$(CONFIG_ANULL_FILTER) += af_anull.o
OBJS-$(CONFIG_ARESAMPLE_FILTER) += af_aresample.o
OBJS-$(CONFIG_ASHOWINFO_FILTER) += af_ashowinfo.o
OBJS-$(CONFIG_ASPLIT_FILTER) += af_asplit.o
OBJS-$(CONFIG_EARWAX_FILTER) += af_earwax.o
OBJS-$(CONFIG_PAN_FILTER) += af_pan.o
OBJS-$(CONFIG_VOLUME_FILTER) += af_volume.o
......
/*
* Copyright (c) 2011 Stefano Sabatini
*
* 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
*/
/**
* @file
* audio splitter
*/
#include "avfilter.h"
static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
{
avfilter_filter_samples(inlink->dst->outputs[0],
avfilter_ref_buffer(insamples, ~AV_PERM_WRITE));
avfilter_filter_samples(inlink->dst->outputs[1],
avfilter_ref_buffer(insamples, ~AV_PERM_WRITE));
avfilter_unref_buffer(insamples);
}
AVFilter avfilter_af_asplit = {
.name = "asplit",
.description = NULL_IF_CONFIG_SMALL("Pass on the audio input to two outputs."),
.inputs = (const AVFilterPad[]) {
{ .name = "default",
.type = AVMEDIA_TYPE_AUDIO,
.get_audio_buffer = avfilter_null_get_audio_buffer,
.filter_samples = filter_samples, },
{ .name = NULL}
},
.outputs = (const AVFilterPad[]) {
{ .name = "output1",
.type = AVMEDIA_TYPE_AUDIO, },
{ .name = "output2",
.type = AVMEDIA_TYPE_AUDIO, },
{ .name = NULL}
},
};
......@@ -39,6 +39,7 @@ void avfilter_register_all(void)
REGISTER_FILTER (ANULL, anull, af);
REGISTER_FILTER (ARESAMPLE, aresample, af);
REGISTER_FILTER (ASHOWINFO, ashowinfo, af);
REGISTER_FILTER (ASPLIT, asplit, af);
REGISTER_FILTER (EARWAX, earwax, af);
REGISTER_FILTER (PAN, pan, af);
REGISTER_FILTER (VOLUME, volume, af);
......
......@@ -30,7 +30,7 @@
#include "libavcodec/avcodec.h"
#define LIBAVFILTER_VERSION_MAJOR 2
#define LIBAVFILTER_VERSION_MINOR 54
#define LIBAVFILTER_VERSION_MINOR 55
#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment