History

lavfi: add asplit filter

Stefano Sabatini committed 14 years ago

Commit 440e9841 parent ae217766 files · +72 −1Browse files

Unified · Split

6 files
  1. Changelog +1 −0
  2. doc/filters.texi +13 −0
  3. libavfilter/Makefile +1 −0
  4. libavfilter/af_asplit.c +55 −0
  5. libavfilter/allfilters.c +1 −0
  6. libavfilter/avfilter.h +1 −1
Changelog+1−0
@@ -10,6 +10,7 @@ version next: · 9 unmodified lines
10- dv: add timecode to metadata10- dv: add timecode to metadata
11- thumbnail video filter11- thumbnail video filter
12- XML output in ffprobe12- XML output in ffprobe
13- asplit audio filter
13 14
14 15
15version 0.9:16version 0.9:
doc/filters.texi+13−0
@@ -224,6 +224,19 @@ expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3} @var{c4} @var{c5} · 223 unmodified lines
224@var{c6} @var{c7}]"224@var{c6} @var{c7}]"
225@end table225@end table
226 226
227@section asplit
228
229Pass on the input audio to two outputs. Both outputs are identical to
230the input audio.
231
232For example:
233@example
234[in] asplit[out0], showaudio[out1]
235@end example
236
237will create two separate outputs from the same input, one cropped and
238one padded.
239
227@section earwax240@section earwax
228 241
229Make audio easier to listen to on headphones.242Make audio easier to listen to on headphones.
libavfilter/Makefile+1−0
@@ -29,6 +29,7 @@ OBJS-$(CONFIG_AFORMAT_FILTER) += af_aformat.o · 28 unmodified lines
29OBJS-$(CONFIG_ANULL_FILTER) += af_anull.o29OBJS-$(CONFIG_ANULL_FILTER) += af_anull.o
30OBJS-$(CONFIG_ARESAMPLE_FILTER) += af_aresample.o30OBJS-$(CONFIG_ARESAMPLE_FILTER) += af_aresample.o
31OBJS-$(CONFIG_ASHOWINFO_FILTER) += af_ashowinfo.o31OBJS-$(CONFIG_ASHOWINFO_FILTER) += af_ashowinfo.o
32OBJS-$(CONFIG_ASPLIT_FILTER) += af_asplit.o
32OBJS-$(CONFIG_EARWAX_FILTER) += af_earwax.o33OBJS-$(CONFIG_EARWAX_FILTER) += af_earwax.o
33OBJS-$(CONFIG_PAN_FILTER) += af_pan.o34OBJS-$(CONFIG_PAN_FILTER) += af_pan.o
34OBJS-$(CONFIG_VOLUME_FILTER) += af_volume.o35OBJS-$(CONFIG_VOLUME_FILTER) += af_volume.o
libavfilter/af_asplit.c+55−0
@@ -0,0 +1,55 @@
1/*
2 * Copyright (c) 2011 Stefano Sabatini
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21/**
22 * @file
23 * audio splitter
24 */
25
26#include "avfilter.h"
27
28static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
29{
30 avfilter_filter_samples(inlink->dst->outputs[0],
31 avfilter_ref_buffer(insamples, ~AV_PERM_WRITE));
32 avfilter_filter_samples(inlink->dst->outputs[1],
33 avfilter_ref_buffer(insamples, ~AV_PERM_WRITE));
34 avfilter_unref_buffer(insamples);
35}
36
37AVFilter avfilter_af_asplit = {
38 .name = "asplit",
39 .description = NULL_IF_CONFIG_SMALL("Pass on the audio input to two outputs."),
40
41 .inputs = (const AVFilterPad[]) {
42 { .name = "default",
43 .type = AVMEDIA_TYPE_AUDIO,
44 .get_audio_buffer = avfilter_null_get_audio_buffer,
45 .filter_samples = filter_samples, },
46 { .name = NULL}
47 },
48 .outputs = (const AVFilterPad[]) {
49 { .name = "output1",
50 .type = AVMEDIA_TYPE_AUDIO, },
51 { .name = "output2",
52 .type = AVMEDIA_TYPE_AUDIO, },
53 { .name = NULL}
54 },
55};
libavfilter/allfilters.c+1−0
@@ -39,6 +39,7 @@ void avfilter_register_all(void) · 38 unmodified lines
39 REGISTER_FILTER (ANULL, anull, af);39 REGISTER_FILTER (ANULL, anull, af);
40 REGISTER_FILTER (ARESAMPLE, aresample, af);40 REGISTER_FILTER (ARESAMPLE, aresample, af);
41 REGISTER_FILTER (ASHOWINFO, ashowinfo, af);41 REGISTER_FILTER (ASHOWINFO, ashowinfo, af);
42 REGISTER_FILTER (ASPLIT, asplit, af);
42 REGISTER_FILTER (EARWAX, earwax, af);43 REGISTER_FILTER (EARWAX, earwax, af);
43 REGISTER_FILTER (PAN, pan, af);44 REGISTER_FILTER (PAN, pan, af);
44 REGISTER_FILTER (VOLUME, volume, af);45 REGISTER_FILTER (VOLUME, volume, af);
libavfilter/avfilter.h+1−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
30#include "libavcodec/avcodec.h"30#include "libavcodec/avcodec.h"
31 31
32#define LIBAVFILTER_VERSION_MAJOR 232#define LIBAVFILTER_VERSION_MAJOR 2
33#define LIBAVFILTER_VERSION_MINOR 5433#define LIBAVFILTER_VERSION_MINOR 55
34#define LIBAVFILTER_VERSION_MICRO 10034#define LIBAVFILTER_VERSION_MICRO 100
35 35
36#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \36#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t