[FFmpeg-devel] [PATCH] libavfilter/af_atempo: Fix uninitialized memory access

Pavel Koshevoy pkoshevoy at gmail.com
Fri Apr 19 02:21:15 CEST 2013


On Apr 18, 2013 1:21 PM, "Michael Niedermayer" <michaelni at gmx.at> wrote:
>
> On Wed, Apr 17, 2013 at 10:33:34PM -0600, pkoshevoy at gmail.com wrote:
> > From: Pavel Koshevoy <pkoshevoy at gmail.com>
> >
> > valgrind reported uninitialized memory access which was caused by
> > incorrect number of samples being passed to push_samples(..)
> >
> > Signed-off-by: Pavel Koshevoy <pkoshevoy at gmail.com>
> > ---
> >  libavfilter/af_atempo.c |    6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
> > index 3e2bc06..f5c5da8 100644
> > --- a/libavfilter/af_atempo.c
> > +++ b/libavfilter/af_atempo.c
> > @@ -1061,7 +1061,7 @@ static int filter_frame(AVFilterLink *inlink,
AVFrame *src_buffer)
> >      ATempoContext *atempo = ctx->priv;
> >      AVFilterLink *outlink = ctx->outputs[0];
> >
> > -    int ret = 0;
> > +    int ret = AVERROR(EAGAIN);
> >      int n_in = src_buffer->nb_samples;
> >      int n_out = (int)(0.5 + ((double)n_in) / atempo->tempo);
> >
>
> this looks odd, what is the intent of this change ?

The intent was not to return 0 unless at least one output frame of samples
has been produced.  I don't really know what return value a filter is
supposed to use while it is still buffering the input samples.  I thought
EAGAIN was expected.  You can drop that change if it is inappropriate.

Pavel


More information about the ffmpeg-devel mailing list