[FFmpeg-devel] [PATCH] examples: add resampling_audio.c file
Michael Niedermayer
michaelni at gmx.at
Wed Dec 5 23:43:48 CET 2012
On Tue, Dec 04, 2012 at 10:55:24PM +0100, Stefano Sabatini wrote:
> On date Tuesday 2012-12-04 18:14:53 +0100, Michael Niedermayer encoded:
> > On Tue, Dec 04, 2012 at 10:58:48AM +0100, Stefano Sabatini wrote:
> [...]
> > > > > And I'm not sure why swr_get_delay() is useful/required.
> > > >
> > > > If you ever feed "more" in than take out then these samples get
> > > > buffered. Such samples would be stuck in there until flushing
> > > > at the end without the swr_get_delay().
> > >
> > > I realized that the swr_get_delay() in the example is useless, since it
> > > is called before the first conversion is performed (so it is always
> > > 0). On the other hand the destination size is computed so that it
> > > should contain *all* the converted samples, so I assume that if the
> > > output buffer is big enough then no buffering will occurr at all. Is
> > > this correct?
> >
> > resampling needs a delay and this delay may vary slightly due filter
> > parameters and timestamp drift.
> > this variation may occasionally cause a tiny bit more samples to be
> > available than the rounded up value.
>
> Updated.
> --
> FFmpeg = Frenzy and Faithless Mastodontic Peaceless Enlightened Gigant
> Makefile | 1
> resampling_audio.c | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 224 insertions(+)
> 62217adca41e0f174aec7a2e45556450d002afe2 0001-examples-add-resampling_audio.c-file.patch
> From 27783bea1d83b3358d70d8ad78bcc06f5174787c Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Fri, 30 Nov 2012 13:51:40 +0100
> Subject: [PATCH] examples: add resampling_audio.c file
>
> ---
> doc/examples/Makefile | 1 +
> doc/examples/resampling_audio.c | 223 +++++++++++++++++++++++++++++++++++++++
> 2 files changed, 224 insertions(+)
> create mode 100644 doc/examples/resampling_audio.c
>
> diff --git a/doc/examples/Makefile b/doc/examples/Makefile
> index 36c949a..c849daa 100644
> --- a/doc/examples/Makefile
> +++ b/doc/examples/Makefile
> @@ -17,6 +17,7 @@ EXAMPLES= decoding_encoding \
> filtering_audio \
> metadata \
> muxing \
> + resampling_audio \
> scaling_video \
>
> OBJS=$(addsuffix .o,$(EXAMPLES))
> diff --git a/doc/examples/resampling_audio.c b/doc/examples/resampling_audio.c
> new file mode 100644
> index 0000000..a2f3be9
> --- /dev/null
> +++ b/doc/examples/resampling_audio.c
> @@ -0,0 +1,223 @@
> +/*
> + * Copyright (c) 2012 Stefano Sabatini
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a copy
> + * of this software and associated documentation files (the "Software"), to deal
> + * in the Software without restriction, including without limitation the rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +/**
> + * @file
> + * libswresample API use example.
> + */
might make sense to point to
libswresample/swresample-test.c
as another example
[...]
> +/**
> + * Fill dst buffer with nb_samples, generated starting from t.
> + */
> +void fill_samples(double *dst, int nb_samples, int nb_channels, int sample_rate, double *t)
> +{
> + int i, j;
> + double tincr = (double)1 / sample_rate, *dstp = dst;
1.0
> + const double c = 2 * M_PI * (double)440.0;
the double cast is unneeded
[..]
> + if (src_data[0])
> + av_freep(&src_data[0]);
the if() looks unneeded
no more comments from me
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20121205/a88b037a/attachment.asc>
More information about the ffmpeg-devel
mailing list