| @@ -395,6 +395,11 @@ How much to use compressed signal in output. Default is 1. | |||||
| Range is between 0 and 1. | Range is between 0 and 1. | ||||
| @end table | @end table | ||||
| @section acopy | |||||
| Copy the input audio source unchanged to the output. This is mainly useful for | |||||
| testing purposes. | |||||
| @section acrossfade | @section acrossfade | ||||
| Apply cross fade from one input audio stream to another input audio stream. | 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 - | |||||
| @section copy | @section copy | ||||
| Copy the input source unchanged to the output. This is mainly useful for | |||||
| Copy the input video source unchanged to the output. This is mainly useful for | |||||
| testing purposes. | testing purposes. | ||||
| @anchor{coreimage} | @anchor{coreimage} | ||||
| @@ -29,6 +29,7 @@ OBJS-$(HAVE_THREADS) += pthread.o | |||||
| # audio filters | # audio filters | ||||
| OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o | OBJS-$(CONFIG_ABENCH_FILTER) += f_bench.o | ||||
| OBJS-$(CONFIG_ACOMPRESSOR_FILTER) += af_sidechaincompress.o | OBJS-$(CONFIG_ACOMPRESSOR_FILTER) += af_sidechaincompress.o | ||||
| OBJS-$(CONFIG_ACOPY_FILTER) += af_acopy.o | |||||
| OBJS-$(CONFIG_ACROSSFADE_FILTER) += af_afade.o | OBJS-$(CONFIG_ACROSSFADE_FILTER) += af_afade.o | ||||
| OBJS-$(CONFIG_ACRUSHER_FILTER) += af_acrusher.o | OBJS-$(CONFIG_ACRUSHER_FILTER) += af_acrusher.o | ||||
| OBJS-$(CONFIG_ADELAY_FILTER) += af_adelay.o | OBJS-$(CONFIG_ADELAY_FILTER) += af_adelay.o | ||||
| @@ -0,0 +1,60 @@ | |||||
| /* | |||||
| * 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 | |||||
| */ | |||||
| #include "audio.h" | |||||
| #include "avfilter.h" | |||||
| #include "internal.h" | |||||
| static int filter_frame(AVFilterLink *inlink, AVFrame *in) | |||||
| { | |||||
| AVFilterLink *outlink = inlink->dst->outputs[0]; | |||||
| AVFrame *out = ff_get_audio_buffer(outlink, in->nb_samples); | |||||
| if (!out) { | |||||
| av_frame_free(&in); | |||||
| return AVERROR(ENOMEM); | |||||
| } | |||||
| av_frame_copy_props(out, in); | |||||
| av_frame_copy(out, in); | |||||
| av_frame_free(&in); | |||||
| return ff_filter_frame(outlink, out); | |||||
| } | |||||
| static const AVFilterPad acopy_inputs[] = { | |||||
| { | |||||
| .name = "default", | |||||
| .type = AVMEDIA_TYPE_AUDIO, | |||||
| .filter_frame = filter_frame, | |||||
| }, | |||||
| { NULL } | |||||
| }; | |||||
| static const AVFilterPad acopy_outputs[] = { | |||||
| { | |||||
| .name = "default", | |||||
| .type = AVMEDIA_TYPE_AUDIO, | |||||
| }, | |||||
| { NULL } | |||||
| }; | |||||
| AVFilter ff_af_acopy = { | |||||
| .name = "acopy", | |||||
| .description = NULL_IF_CONFIG_SMALL("Copy the input audio unchanged to the output."), | |||||
| .inputs = acopy_inputs, | |||||
| .outputs = acopy_outputs, | |||||
| }; | |||||
| @@ -42,6 +42,7 @@ static void register_all(void) | |||||
| { | { | ||||
| REGISTER_FILTER(ABENCH, abench, af); | REGISTER_FILTER(ABENCH, abench, af); | ||||
| REGISTER_FILTER(ACOMPRESSOR, acompressor, af); | REGISTER_FILTER(ACOMPRESSOR, acompressor, af); | ||||
| REGISTER_FILTER(ACOPY, acopy, af); | |||||
| REGISTER_FILTER(ACROSSFADE, acrossfade, af); | REGISTER_FILTER(ACROSSFADE, acrossfade, af); | ||||
| REGISTER_FILTER(ACRUSHER, acrusher, af); | REGISTER_FILTER(ACRUSHER, acrusher, af); | ||||
| REGISTER_FILTER(ADELAY, adelay, af); | REGISTER_FILTER(ADELAY, adelay, af); | ||||