Bug#655890: [libav-devel] Bug#655890: libavcodec53: Breaks decoding using gst-ffmpeg

Anton Khirnov anton at khirnov.net
Sun Jan 15 15:41:27 UTC 2012


On Sun, 15 Jan 2012 16:18:51 +0100, Reinhard Tartler <siretart at tauware.de> wrote:
> forwarded 655890 justin.ruggles at gmail.com
> stop
> 
> On Sa, Jan 14, 2012 at 16:51:27 (CET), reiter.christoph at gmail.com wrote:
> 
> > Package: libavcodec53
> > Version: 4:0.8~beta2-1
> > Severity: important
> >
> > The recent upload of 0.8 to sid broke gst-ffmpeg and more specific WMA decoding
> > since gst-ffmpeg is used for this in totem etc. by default (playbin)
> >
> > I get lots of
> >
> > ffmpeg :0:: A custom get_buffer() cannot be used with avcodec_decode_audio3()
> >
> > Downgrading libav to 0.7 fixes it.
> 
> Using git blame, I have identified the following commit, which
> introduces the error message cited above to libavcodec/utils.c:
> 
> commit 0eea212943544d40f99b05571aa7159d78667154
> Author: Justin Ruggles <justin.ruggles at gmail.com>
> Date:   Tue Sep 6 12:17:45 2011 -0400
> 
>     Add avcodec_decode_audio4().
>     
>     Deprecate avcodec_decode_audio3().
>     Implement audio support in avcodec_default_get_buffer().
>     Implement the new audio decoder API in all audio decoders.
> 
> 
> This commits adds the following entries to doc/APIchanges:
> 
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -13,6 +13,13 @@ libavutil:   2011-04-18
>  
>  API changes, most recent first:
>  
> +2011-xx-xx - xxxxxxx - lavc 53.25.0
> +  Add nb_samples and extended_data fields to AVFrame.
> +  Deprecate AVCODEC_MAX_AUDIO_FRAME_SIZE.
> +  Deprecate avcodec_decode_audio3() in favor of avcodec_decode_audio4().
> +  avcodec_decode_audio4() writes output samples to an AVFrame, which allows
> +  audio decoders to use get_buffer().
> +
>  2011-xx-xx - xxxxxxx - lavc 53.24.0
>    Change AVFrame.data[4]/base[4]/linesize[4]/error[4] to [8] at next major bump.
>    Change AVPicture.data[4]/linesize[4] to [8] at next major bump.
> 
> 
> Justin, it seems that additionally to what is documented above, this
> change breaks applications such as gst-ffmpeg, which have successfully
> used avcodec_decode_audio3() with a custom get_buffer(). If this is
> correct, what can we do to restore this functionality? Would the
> following patch be likely to unbreak gst-ffmpeg?

Setting custom get_buffer() for audio was not valid before
avcodec_decode_audio3(), so IMO the proper solution would be to simply
not do that for non-video streams.

-- 
Anton Khirnov





More information about the pkg-multimedia-maintainers mailing list