From da87897b1b5778e1ef7cc6b5c0de95bd2a887fa7 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 9 Mar 2010 19:19:32 +0000 Subject: Improve handling of 0-size ogg packets. Fixes bug 1664. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30878 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_ogg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c index dabac757d9..dcb74c7bc3 100644 --- a/libmpdemux/demux_ogg.c +++ b/libmpdemux/demux_ogg.c @@ -262,6 +262,7 @@ static int demux_ogg_get_page_stream(ogg_demuxer_t* ogg_d,ogg_stream_state** os static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,float* pts,int* flags, int samplesize) { unsigned char* data = pack->packet; + int size = pack->bytes; *pts = 0; *flags = 0; @@ -300,7 +301,7 @@ static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,fl /* header packets begin on 1-bit: thus check (*data&0x80). We don't have theora_state st, until all header packets were passed to the decoder. */ - if (!(*data&0x80)) + if (!size || !(*data&0x80)) { int keyframe_granule_shift=_ilog(os->keyframe_frequency_force-1); int64_t iframemask = (1 << keyframe_granule_shift) - 1; -- cgit v1.2.3 From e03ff1e0ef9be7da0fbd1e4d6b2bad72b1610278 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 9 Mar 2010 19:21:39 +0000 Subject: Return MP_NOPTS_VALUE if we can't figure out the pts, not 0. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30879 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_ogg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c index dcb74c7bc3..180769a352 100644 --- a/libmpdemux/demux_ogg.c +++ b/libmpdemux/demux_ogg.c @@ -264,7 +264,7 @@ static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,fl unsigned char* data = pack->packet; int size = pack->bytes; - *pts = 0; + *pts = MP_NOPTS_VALUE; *flags = 0; if(os->vorbis) { -- cgit v1.2.3