History

avfilter: add acopy filter

Paul B Mahol committed 9 years ago

Commit eaf644e1 parent 6899e6e4 files · +68 −1Browse files

Unified · Split

4 files
  1. doc/filters.texi +6 −1
  2. libavfilter/Makefile +1 −0
  3. libavfilter/af_acopy.c +60 −0
  4. libavfilter/allfilters.c +1 −0
doc/filters.texi+6−1
@@ -395,6 +395,11 @@ How much to use compressed signal in output. Default is 1. · 394 unmodified lines
395395 Range is between 0 and 1.
396396 @end table
397397
398+@section acopy
399+
400+Copy the input audio source unchanged to the output. This is mainly useful for
401+testing purposes.
402+
398403 @section acrossfade
399404
400405 Apply cross fade from one input audio stream to another input audio stream.
@@ -5665,7 +5670,7 @@ convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 - · 5264 unmodified lines
56655670
56665671 @section copy
56675672
5668−Copy the input source unchanged to the output. This is mainly useful for
5673+Copy the input video source unchanged to the output. This is mainly useful for
56695674 testing purposes.
56705675
56715676 @anchor{coreimage}
libavfilter/Makefile+1−0
@@ -29,6 +29,7 @@ OBJS-$(HAVE_THREADS) += pthread.o · 28 unmodified lines
2929 # audio filters
3030 OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o
3131 OBJS-$(CONFIG_ACOMPRESSOR_FILTER) += af_sidechaincompress.o
32+OBJS-$(CONFIG_ACOPY_FILTER) += af_acopy.o
3233 OBJS-$(CONFIG_ACROSSFADE_FILTER) += af_afade.o
3334 OBJS-$(CONFIG_ACRUSHER_FILTER) += af_acrusher.o
3435 OBJS-$(CONFIG_ADELAY_FILTER) += af_adelay.o
libavfilter/af_acopy.c+60−0
@@ -0,0 +1,60 @@
1+/*
2+ * This file is part of FFmpeg.
3+ *
4+ * FFmpeg is free software; you can redistribute it and/or
5+ * modify it under the terms of the GNU Lesser General Public
6+ * License as published by the Free Software Foundation; either
7+ * version 2.1 of the License, or (at your option) any later version.
8+ *
9+ * FFmpeg is distributed in the hope that it will be useful,
10+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12+ * Lesser General Public License for more details.
13+ *
14+ * You should have received a copy of the GNU Lesser General Public
15+ * License along with FFmpeg; if not, write to the Free Software
16+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17+ */
18+
19+#include "audio.h"
20+#include "avfilter.h"
21+#include "internal.h"
22+
23+static int filter_frame(AVFilterLink *inlink, AVFrame *in)
24+{
25+ AVFilterLink *outlink = inlink->dst->outputs[0];
26+ AVFrame *out = ff_get_audio_buffer(outlink, in->nb_samples);
27+
28+ if (!out) {
29+ av_frame_free(&in);
30+ return AVERROR(ENOMEM);
31+ }
32+ av_frame_copy_props(out, in);
33+ av_frame_copy(out, in);
34+ av_frame_free(&in);
35+ return ff_filter_frame(outlink, out);
36+}
37+
38+static const AVFilterPad acopy_inputs[] = {
39+ {
40+ .name = "default",
41+ .type = AVMEDIA_TYPE_AUDIO,
42+ .filter_frame = filter_frame,
43+ },
44+ { NULL }
45+};
46+
47+static const AVFilterPad acopy_outputs[] = {
48+ {
49+ .name = "default",
50+ .type = AVMEDIA_TYPE_AUDIO,
51+ },
52+ { NULL }
53+};
54+
55+AVFilter ff_af_acopy = {
56+ .name = "acopy",
57+ .description = NULL_IF_CONFIG_SMALL("Copy the input audio unchanged to the output."),
58+ .inputs = acopy_inputs,
59+ .outputs = acopy_outputs,
60+};
libavfilter/allfilters.c+1−0
@@ -42,6 +42,7 @@ static void register_all(void) · 41 unmodified lines
4242 {
4343 REGISTER_FILTER(ABENCH, abench, af);
4444 REGISTER_FILTER(ACOMPRESSOR, acompressor, af);
45+ REGISTER_FILTER(ACOPY, acopy, af);
4546 REGISTER_FILTER(ACROSSFADE, acrossfade, af);
4647 REGISTER_FILTER(ACRUSHER, acrusher, af);
4748 REGISTER_FILTER(ADELAY, adelay, af);

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