diff options
author | Matthias Kretz <kretz@kde.org> | 2007-11-23 18:00:34 +0100 |
---|---|---|
committer | Matthias Kretz <kretz@kde.org> | 2007-11-23 18:00:34 +0100 |
commit | cce0fd6bbc99da33f4064abeb453ade4ca11b05e (patch) | |
tree | dba118f18c91b707594abd1a84c5bcdfdc75f126 | |
parent | e4d811b726b85b7de83fafee24b5c1d05061bc1e (diff) | |
download | xine-lib-cce0fd6bbc99da33f4064abeb453ade4ca11b05e.tar.gz xine-lib-cce0fd6bbc99da33f4064abeb453ade4ca11b05e.tar.bz2 |
fix read_ogg_packet to really read all of the data; don't go into DEMUX_FINISHED from send_header
-rw-r--r-- | src/demuxers/demux_ogg.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/demuxers/demux_ogg.c b/src/demuxers/demux_ogg.c index a23bfa6b6..d38b2de7a 100644 --- a/src/demuxers/demux_ogg.c +++ b/src/demuxers/demux_ogg.c @@ -236,13 +236,19 @@ static int64_t get_pts (demux_ogg_t *this, int stream_num , int64_t granulepos ) static int read_ogg_packet (demux_ogg_t *this) { char *buffer; long bytes; + long total = 0; while (ogg_sync_pageout(&this->oy,&this->og)!=1) { buffer = ogg_sync_buffer(&this->oy, CHUNKSIZE); bytes = this->input->read(this->input, buffer, CHUNKSIZE); - ogg_sync_wrote(&this->oy, bytes); - if (bytes < CHUNKSIZE/2) { - return 0; + if (bytes == 0) { + if (total == 0) { + printf("read_ogg_packet read nothing\n"); + return 0; + } + break; } + ogg_sync_wrote(&this->oy, bytes); + total += bytes; } return 1; } @@ -1349,7 +1355,6 @@ static void send_header (demux_ogg_t *this) { while (!done) { if (!read_ogg_packet(this)) { - this->status = DEMUX_FINISHED; return; } /* now we've got at least one new page */ |