[FFmpeg-devel] [PATCH] Add asrc_anullsrc - null audio source
Stefano Sabatini
stefano.sabatini-lala
Fri Aug 20 01:03:27 CEST 2010
On date Friday 2010-08-20 00:41:57 +0200, Michael Niedermayer encoded:
> On Thu, Aug 19, 2010 at 06:08:21AM -0700, S.N. Hemanth Meenakshisundaram wrote:
> > Null audio source and doc
> >
> > ---
> > doc/filters.texi | 19 ++++++++++
> > libavfilter/Makefile | 1 +
> > libavfilter/allfilters.c | 1 +
> > libavfilter/asrc_anullsrc.c | 82 +++++++++++++++++++++++++++++++++++++++++++
> > 4 files changed, 103 insertions(+), 0 deletions(-)
> > create mode 100644 libavfilter/asrc_anullsrc.c
> >
> >
> >
>
> > doc/filters.texi | 19 ++++++++++
> > libavfilter/Makefile | 1
> > libavfilter/allfilters.c | 1
> > libavfilter/asrc_anullsrc.c | 82 ++++++++++++++++++++++++++++++++++++++++++++
> > 4 files changed, 103 insertions(+)
> > 6ef0b890e7e28a23fb16be68cec03423aa1c688c 0001-Add-asrc_anullsrc-null-audio-source.patch
> > diff --git a/doc/filters.texi b/doc/filters.texi
> > index 92d8814..7dd3120 100644
> > --- a/doc/filters.texi
> > +++ b/doc/filters.texi
> > @@ -303,6 +303,25 @@ Since the sample format with name "s16" corresponds to the number
> > abuffer=1
> > @end example
> >
> > + at section anullsrc
> > +
> > +Null audio source, never return audio frames. It is mainly useful as a
> > +template and to be employed in analysis / debugging tools.
> > +
> > +It accepts as optional parameter a string of the form
> > + at var{sample_rate}:@var{channel_layout}, where @var{sample_rate} and
> > + at var{channel_layout} specify the properties of the configured audio source.
> > +
> > +The default values of @var{sample_rate} and @var{channel_layout} are
> > +respectively 44100 and 3 respectively. A channel layout value of 3
> > +corresponds to CH_LAYOUT_STEREO (check the channel_layout_map definition in
> > + at file{libavcodec/audioconvert.h}).
> > +
> > + at example
> > +anullsrc=48000:4
> > + at end example
> > +will set the sample rate to 48000 Hz and the channel layout to CH_LAYOUT_MONO.
> > +
> > @c man end AUDIO SOURCES
> >
> > @chapter Video Sources
> > diff --git a/libavfilter/Makefile b/libavfilter/Makefile
> > index 5396434..beb8be8 100644
> > --- a/libavfilter/Makefile
> > +++ b/libavfilter/Makefile
> > @@ -34,6 +34,7 @@ OBJS-$(CONFIG_UNSHARP_FILTER) += vf_unsharp.o
> > OBJS-$(CONFIG_VFLIP_FILTER) += vf_vflip.o
> >
> > OBJS-$(CONFIG_ABUFFER_FILTER) += asrc_abuffer.o
> > +OBJS-$(CONFIG_ANULLSRC_FILTER) += asrc_anullsrc.o
> >
> > OBJS-$(CONFIG_BUFFER_FILTER) += vsrc_buffer.o
> > OBJS-$(CONFIG_COLOR_FILTER) += vf_pad.o
> > diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c
> > index 8f4124c..3460c29 100644
> > --- a/libavfilter/allfilters.c
> > +++ b/libavfilter/allfilters.c
> > @@ -54,6 +54,7 @@ void avfilter_register_all(void)
> > REGISTER_FILTER (VFLIP, vflip, vf);
> >
> > REGISTER_FILTER (ABUFFER, abuffer, asrc);
> > + REGISTER_FILTER (ANULLSRC, anullsrc, asrc);
> >
> > REGISTER_FILTER (BUFFER, buffer, vsrc);
> > REGISTER_FILTER (COLOR, color, vsrc);
> > diff --git a/libavfilter/asrc_anullsrc.c b/libavfilter/asrc_anullsrc.c
> > new file mode 100644
> > index 0000000..9b2096f
> > --- /dev/null
> > +++ b/libavfilter/asrc_anullsrc.c
> > @@ -0,0 +1,82 @@
> > +/*
> > + * 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
> > + */
> > +
> > +/**
> > + * @file
> > + * null audio source
> > + */
> > +
> > +#include "avfilter.h"
> > +
> > +typedef struct {
> > + int64_t channel_layout;
> > + int64_t sample_rate;
> > +} ANullContext;
> > +
> > +static int init(AVFilterContext *ctx, const char *args, void *opaque)
> > +{
> > + ANullContext *priv = ctx->priv;
> > +
> > + priv->sample_rate = 44100;
> > + priv->channel_layout = CH_LAYOUT_STEREO;
> > +
> > + if (args)
> > + sscanf(args, "%ld:%ld", &priv->sample_rate, &priv->channel_layout);
>
> reading channel layout like this is maybe not ideal
Please elaborate.
> > +
> > + if (priv->sample_rate < 0 || priv->channel_layout < 3) {
> > + av_log(ctx, AV_LOG_ERROR,
> > + "Invalid value for sample format or channel layout .\n");
> > + return AVERROR(EINVAL);
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static int config_props(AVFilterLink *outlink)
> > +{
> > + ANullContext *priv = outlink->src->priv;
> > +
> > + outlink->sample_rate = priv->sample_rate;
> > + outlink->channel_layout = priv->channel_layout;
> > +
> > + av_log(outlink->src, AV_LOG_INFO, "sample_rate:%ld channel_layout:%ld\n",
> > + priv->sample_rate, priv->channel_layout);
> > +
> > + return 0;
> > +}
> > +
>
> > +static int request_frame(AVFilterLink *link)
> > +{
> > + return -1;
> > +}
>
> this appears a little pointless whats the point of this filter then if it
> generates no output
To test the setup of a filterchain, e.g. with graph2dot.
Regards.
--
FFmpeg = Fabulous and Frightening Magnificient Perennial Extended God
More information about the ffmpeg-devel
mailing list