Unified · Split
| @@ -395,6 +395,11 @@ How much to use compressed signal in output. Default is 1. · 394 unmodified lines | |||
| 395 | Range is between 0 and 1. | 395 | Range is between 0 and 1. |
| 396 | @end table | 396 | @end table |
| 397 | 397 | ||
| 398 | @section acopy | ||
| 399 | |||
| 400 | Copy the input audio source unchanged to the output. This is mainly useful for | ||
| 401 | testing purposes. | ||
| 402 | |||
| 398 | @section acrossfade | 403 | @section acrossfade |
| 399 | 404 | ||
| 400 | Apply cross fade from one input audio stream to another input audio stream. | 405 | 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 | |||
| 5665 | 5670 | ||
| 5666 | @section copy | 5671 | @section copy |
| 5667 | 5672 | ||
| 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 |
| 5669 | testing purposes. | 5674 | testing purposes. |
| 5670 | 5675 | ||
| 5671 | @anchor{coreimage} | 5676 | @anchor{coreimage} |
| @@ -29,6 +29,7 @@ OBJS-$(HAVE_THREADS) += pthread.o · 28 unmodified lines | |||
| 29 | # audio filters | 29 | # audio filters |
| 30 | OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o | 30 | OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o |
| 31 | OBJS-$(CONFIG_ACOMPRESSOR_FILTER) += af_sidechaincompress.o | 31 | OBJS-$(CONFIG_ACOMPRESSOR_FILTER) += af_sidechaincompress.o |
| 32 | OBJS-$(CONFIG_ACOPY_FILTER) += af_acopy.o | ||
| 32 | OBJS-$(CONFIG_ACROSSFADE_FILTER) += af_afade.o | 33 | OBJS-$(CONFIG_ACROSSFADE_FILTER) += af_afade.o |
| 33 | OBJS-$(CONFIG_ACRUSHER_FILTER) += af_acrusher.o | 34 | OBJS-$(CONFIG_ACRUSHER_FILTER) += af_acrusher.o |
| 34 | OBJS-$(CONFIG_ADELAY_FILTER) += af_adelay.o | 35 | OBJS-$(CONFIG_ADELAY_FILTER) += af_adelay.o |
| @@ -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 | }; | ||
| @@ -42,6 +42,7 @@ static void register_all(void) · 41 unmodified lines | |||
| 42 | { | 42 | { |
| 43 | REGISTER_FILTER(ABENCH, abench, af); | 43 | REGISTER_FILTER(ABENCH, abench, af); |
| 44 | REGISTER_FILTER(ACOMPRESSOR, acompressor, af); | 44 | REGISTER_FILTER(ACOMPRESSOR, acompressor, af); |
| 45 | REGISTER_FILTER(ACOPY, acopy, af); | ||
| 45 | REGISTER_FILTER(ACROSSFADE, acrossfade, af); | 46 | REGISTER_FILTER(ACROSSFADE, acrossfade, af); |
| 46 | REGISTER_FILTER(ACRUSHER, acrusher, af); | 47 | REGISTER_FILTER(ACRUSHER, acrusher, af); |
| 47 | REGISTER_FILTER(ADELAY, adelay, af); | 48 | REGISTER_FILTER(ADELAY, adelay, af); |