On Fri, Apr 08, 2011 at 01:30:12PM +0200, Luca Barbato wrote: > On 4/8/11 12:58 PM, Clément Bœsch wrote: > >On Thu, Apr 07, 2011 at 10:32:23AM +0200, Luca Barbato wrote: > >>On 04/07/2011 10:23 AM, Clément Bœsch wrote: > >>>--- > >>> libavformat/oggdec.c | 16 ++++++++++++++++ > >>> libavformat/oggdec.h | 1 + > >>> 2 files changed, 17 insertions(+), 0 deletions(-) > >>> > >> > >>Looks fine, I hope there aren't ogg files that break because somebody > >>decided putting streams around would be fun. > >> > > > >Let me know what I could/should/have to test for this to get approved. It > >works here with my webradio, and with ogg with multiple audio channels. Of > >course, it's certainly not enough to assert it does not break anything. > > > > I'd push it this night or tomorrow night. >
Thanks for pushing it, but I just realized this code might be overkill; we can reuse the ogg headers attribute. Patch attached. Also, I'm still unable to reload the metadata on track change… -- Clément B.
From 417111b8e66986d51f9c08d61aefdf79a01cf348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= <[email protected]> Date: Sun, 10 Apr 2011 09:26:43 +0200 Subject: [PATCH] oggdec: simplify audio chained ogg streams support --- libavformat/oggdec.c | 8 +------- libavformat/oggdec.h | 1 - 2 files changed, 1 insertions(+), 8 deletions(-) diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index 5cf4faa..ce1152d 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -164,7 +164,6 @@ 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) @@ -242,8 +241,7 @@ 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) { + if (ogg->headers) { int n; for (n = 0; n < ogg->nstreams; n++) { @@ -252,8 +250,6 @@ ogg_read_page (AVFormatContext * s, int *str) } ogg->curidx = -1; ogg->nstreams = 0; - break; - } } idx = ogg_new_stream (s, serial); if (idx < 0) @@ -261,8 +257,6 @@ ogg_read_page (AVFormatContext * s, int *str) } os = ogg->streams + idx; - if (!(flags & OGG_FLAG_BOS)) - os->page_begin = 0; os->page_pos = avio_tell(bc) - 27; if(os->psize > 0) diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h index 785cd81..7d66cd5 100644 --- a/libavformat/oggdec.h +++ b/libavformat/oggdec.h @@ -75,7 +75,6 @@ struct ogg_stream { int incomplete; ///< whether we're expecting a continuation in the next page int page_end; ///< current packet is the last one completed in the page int keyframe_seek; - int page_begin; ///< set to 1 if the stream only received a begin-of-stream packet, otherwise 0 void *private; }; -- 1.7.4.4
pgpeX8jCqbaSV.pgp
Description: PGP signature
_______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
