On Tue, Nov 24, 2015 at 01:18:20PM +0100, Paul B Mahol wrote: > Subject: [PATCH] avfilter: add compensation delay line filter > > Signed-off-by: Paul B Mahol <one...@gmail.com> > --- > doc/filters.texi | 42 ++++++++ > libavfilter/Makefile | 1 + > libavfilter/af_compensationdelay.c | 196 > +++++++++++++++++++++++++++++++++++++ > libavfilter/allfilters.c | 1 + > 4 files changed, 240 insertions(+) > create mode 100644 libavfilter/af_compensationdelay.c > > diff --git a/doc/filters.texi b/doc/filters.texi > index f351390..d8b2fb5 100644 > --- a/doc/filters.texi > +++ b/doc/filters.texi > @@ -1628,6 +1628,48 @@ > compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1 > @end example > @end itemize > > +@section compensationdelay > + > +Compensation Delay Line is a metric based delay to compensate differing > +positions of microphones or speakers. > + > +For example, you have recorded guitar with two microphones placed in > +different location. Because the front of sound wave has fixed speed in > +normal conditions, the phasing of microphones can vary and depends on > +their location and interposition. The best sound mix you will get when > +these microphones are in phase (synchronized). Note that distance of > +~30 cm between microphones makes one microphone to capture signal in > +antiphase to another microphone. That makes the final mix sounding moody. > +This filter helps to solve phasing problems by adding different delays > +to each microphone track and make them synchronized. > + > +The best result can be reached when you take one track as base and > +synchronize other tracks one by one with it. > +Remember that synchronization/delay tolerance depends on sample rate, too. > +Higher sample rates will give more tolerance. > + > +It accepts the following parameters: > + > +@table @option > +@item mm > +Set millimeters distance. This is compensation distance for fine tuning. > + > +@item cm > +Set cm distance. This is compensation distance for tighten distance setup. > + > +@item m > +Set meters distance. This is compensation distance for hard distance setup. > + > +@item dry > +Set dry amount. Amount of unprocessed (dry) signal. > + > +@item wet > +Set wet amount. Amount of processed (wet) signal. > + > +@item temp > +Set temperature degree in Celzius. This is the temperature of the > environment. > +@end table > + > @section dcshift > Apply a DC shift to the audio. > > diff --git a/libavfilter/Makefile b/libavfilter/Makefile > index 1f4abeb..c896374 100644 > --- a/libavfilter/Makefile > +++ b/libavfilter/Makefile > @@ -64,6 +64,7 @@ OBJS-$(CONFIG_CHANNELMAP_FILTER) += > af_channelmap.o > OBJS-$(CONFIG_CHANNELSPLIT_FILTER) += af_channelsplit.o > OBJS-$(CONFIG_CHORUS_FILTER) += af_chorus.o > generate_wave_table.o > OBJS-$(CONFIG_COMPAND_FILTER) += af_compand.o > +OBJS-$(CONFIG_COMPENSATIONDELAY_FILTER) += af_compensationdelay.o > OBJS-$(CONFIG_DCSHIFT_FILTER) += af_dcshift.o > OBJS-$(CONFIG_DYNAUDNORM_FILTER) += af_dynaudnorm.o > OBJS-$(CONFIG_EARWAX_FILTER) += af_earwax.o > diff --git a/libavfilter/af_compensationdelay.c > b/libavfilter/af_compensationdelay.c > new file mode 100644 > index 0000000..1a32879 > --- /dev/null > +++ b/libavfilter/af_compensationdelay.c > @@ -0,0 +1,196 @@ > +/* > + * Copyright (c) 2001-2010 Krzysztof Foltman, Markus Schmidt, Thor > Harald Johansen, Vladimir Sadovnikov and others > + * Copyright (c) 2015 Paul B Mahol > + * > + * 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 "libavutil/opt.h" > +#include "libavutil/samplefmt.h" > +#include "avfilter.h" > +#include "audio.h" > +#include "internal.h" > + > +typedef struct CompensationDelayContext { > + const AVClass *class; > + int distance_mm; > + int distance_cm; > + int distance_m; > + double dry, wet; > + int temp; > + > + unsigned delay; > + unsigned w_ptr; > + unsigned buf_size; > + AVFrame *delay_frame; > +} CompensationDelayContext; > + > +#define OFFSET(x) offsetof(CompensationDelayContext, x) > +#define A AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM > + > +static const AVOption compensationdelay_options[] = { > + { "mm", "set mm distance", OFFSET(distance_mm), > AV_OPT_TYPE_INT, {.i64=0}, 0, 10, A }, > + { "cm", "set cm distance", OFFSET(distance_cm), > AV_OPT_TYPE_INT, {.i64=0}, 0, 100, A }, > + { "m", "set meter distance", OFFSET(distance_m), > AV_OPT_TYPE_INT, {.i64=0}, 0, 100, A }, > + { "dry", "set dry amount", OFFSET(dry), > AV_OPT_TYPE_DOUBLE, {.dbl=0.000244140625}, 0.000244140625, 1, A }, > + { "wet", "set wet amount", OFFSET(wet),
I tried to apply this to test but it corrupted by newlines Applying: avfilter: add compensation delay line filter fatal: corrupt patch at line 14 Repository lacks necessary blobs to fall back on 3-way merge. Cannot fall back to three-way merge. Patch failed at 0001 avfilter: add compensation delay line filter When you have resolved this problem run "git am --resolved". If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort". [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB it is not once nor twice but times without number that the same ideas make their appearance in the world. -- Aristotle
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel