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