[FFmpeg-cvslog] oggdec: fix demuxing chained audio streams

Reimar Döffinger Reimar.Doeffinger at gmx.de
Mon Apr 11 07:48:48 CEST 2011



On 11 Apr 2011, at 04:12, git at videolan.org (Clément Bœsch) wrote:

> ffmpeg | branch: master | Clément Bœsch <ubitux at gmail.com> | Tue Apr  5 00:29:01 2011 +0200| [47dec30edb8565b7e0e8716dc6d0dc36d5b7bc40] | committer: Luca Barbato
> 
> oggdec: fix demuxing chained audio streams
> 
> Chained ogg served by icecast and mpd should demux
> properly now.
> 
> Fixes issue2337
> 
> Signed-off-by: Luca Barbato <lu_zero at gentoo.org>
> 
>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=47dec30edb8565b7e0e8716dc6d0dc36d5b7bc40
> ---
> 
> libavformat/oggdec.c |   16 ++++++++++++++++
> libavformat/oggdec.h |    1 +
> 2 files changed, 17 insertions(+), 0 deletions(-)
> 
> diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
> index cd866d4..5cf4faa 100644
> --- a/libavformat/oggdec.c
> +++ b/libavformat/oggdec.c
> @@ -164,6 +164,7 @@ ogg_new_stream (AVFormatContext * s, uint32_t serial)
>     os->bufsize = DECODER_BUFFER_SIZE;
>     os->buf = av_malloc(os->bufsize);
>     os->header = -1;
> +    os->page_begin = 1;
> 
>     st = av_new_stream (s, idx);
>     if (!st)
> @@ -241,12 +242,27 @@ ogg_read_page (AVFormatContext * s, int *str)
> 
>     idx = ogg_find_stream (ogg, serial);
>     if (idx < 0){
> +        for (i = 0; i < ogg->nstreams; i++) {
> +            if (!ogg->streams[i].page_begin) {
> +                int n;
> +
> +                for (n = 0; n < ogg->nstreams; n++) {
> +                    av_free(ogg->streams[n].buf);
> +                    av_free(ogg->streams[n].private);

Shouldn't this use av_freep?


More information about the ffmpeg-cvslog mailing list