[FFmpeg-devel] [PATCH] Add 'asetframesize' audiofilter
Clément Bœsch
ubitux at gmail.com
Mon Jun 11 00:29:19 CEST 2012
On Mon, Jun 11, 2012 at 12:09:05AM +0200, Stefano Sabatini wrote:
> On date Saturday 2012-02-25 01:00:03 +0100, Stefano Sabatini encoded:
> > On date Thursday 2012-02-23 17:49:10 +0200, Andrey Utkin encoded:
> > > Filter that changes number of samples on single output operation
> > > ---
> > > libavfilter/Makefile | 1 +
> > > libavfilter/af_asetframesize.c | 191 ++++++++++++++++++++++++++++++++++++++++
> > > libavfilter/allfilters.c | 1 +
> > > 3 files changed, 193 insertions(+), 0 deletions(-)
> > > create mode 100644 libavfilter/af_asetframesize.c
>
> Updated against latest API, and making use of the nifty
> libavutil/audio_buffer.
>
> I'm not very satifisfied with the name of the filter, alternative
> names which I also somehow dislike but which seem more proper are:
> - asetnbsamples
> - asetnsamples
> - asetsamplesn
> - asetsamplesnb
Agreed, another alternative: asetwinsize (for audio window size).
>
> Also I don't know if I should add an option for padding the last
> packet in order to have all the packets with the same size (this can
> be added later though).
This kind of filter is especially useful when you want a fixed window size
(for FFT for instance), where padding with silence is very welcome since
you can use the output unconditionally; I would make it the default
actually. It shouldn't be hard to add it with the help of
lavu:av_samples_set_silence().
> --
> FFmpeg = Fiendish & Funny Minimalistic Practical Enlightened Guru
> From a58c7db8d5c627d7b454d2798cda83e1b1dbd190 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Fri, 25 May 2012 13:14:53 +0200
> Subject: [PATCH] lavfi: add asetframesize audio filter
>
> The asetframesize filter changes the number of samples on single output
> operation.
>
> Based on a patch by Andrey Utkin <andrey.krieger.utkin at gmail.com>.
> ---
> libavfilter/Makefile | 1 +
> libavfilter/af_asetframesize.c | 176 ++++++++++++++++++++++++++++++++++++++++
> libavfilter/allfilters.c | 1 +
> 3 files changed, 178 insertions(+), 0 deletions(-)
> create mode 100644 libavfilter/af_asetframesize.c
>
> diff --git a/libavfilter/Makefile b/libavfilter/Makefile
> index 2a0a283..d97c52a 100644
> --- a/libavfilter/Makefile
> +++ b/libavfilter/Makefile
> @@ -50,6 +50,7 @@ OBJS-$(CONFIG_AMERGE_FILTER) += af_amerge.o
> OBJS-$(CONFIG_AMIX_FILTER) += af_amix.o
> OBJS-$(CONFIG_ANULL_FILTER) += af_anull.o
> OBJS-$(CONFIG_ARESAMPLE_FILTER) += af_aresample.o
> +OBJS-$(CONFIG_ASETFRAMESIZE_FILTER) += af_asetframesize.o
> OBJS-$(CONFIG_ASHOWINFO_FILTER) += af_ashowinfo.o
> OBJS-$(CONFIG_ASPLIT_FILTER) += split.o
> OBJS-$(CONFIG_ASTREAMSYNC_FILTER) += af_astreamsync.o
> diff --git a/libavfilter/af_asetframesize.c b/libavfilter/af_asetframesize.c
> new file mode 100644
> index 0000000..d46a87c
> --- /dev/null
> +++ b/libavfilter/af_asetframesize.c
> @@ -0,0 +1,176 @@
> +/*
> + * Copyright (c) 2012 Andrey Utkin
> + *
Maybe you could add yourself too?
> + * 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
> + * Filter that changes number of samples on single output operation
> + */
> +
> +#include "libavutil/audio_fifo.h"
> +#include "libavutil/avassert.h"
> +#include "avfilter.h"
> +#include "audio.h"
> +#include "formats.h"
> +
> +typedef struct {
> + int nb_out_samples; ///< how many samples to output
> + AVAudioFifo *fifo; ///< samples are queued here
nit+: align the comments
[...]
> +
> +AVFilter avfilter_af_asetframesize = {
> + .name = "asetframesize",
> + .description = NULL_IF_CONFIG_SMALL("Set the number of samples for the output audio frames."),
Total number of samples, or samples per channel?
[...]
Just curious: how do you plan to use this? By making some filters (such as
af_show* filters) request a particular window size and auto insert the
filter?
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120611/fd0c6c1e/attachment.asc>
More information about the ffmpeg-devel
mailing list