summaryrefslogtreecommitdiff
path: root/src/demuxers/demux_ogg.c
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2007-11-23 19:32:35 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2007-11-23 19:32:35 +0000
commit740cb399dcf72420ac0c8a6048dca8fac09daf3d (patch)
tree92b18c4be7212b84b99ecb94e1d81be8027a03f8 /src/demuxers/demux_ogg.c
parentff8930972b4242d31e540a38f1d8053e846d68e6 (diff)
parentc1f730ab426636b5fea1dc657d2278950ace5de6 (diff)
downloadxine-lib-740cb399dcf72420ac0c8a6048dca8fac09daf3d.tar.gz
xine-lib-740cb399dcf72420ac0c8a6048dca8fac09daf3d.tar.bz2
Merge.
Diffstat (limited to 'src/demuxers/demux_ogg.c')
-rw-r--r--src/demuxers/demux_ogg.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/demuxers/demux_ogg.c b/src/demuxers/demux_ogg.c
index eb4f7ba5a..2c06f14ca 100644
--- a/src/demuxers/demux_ogg.c
+++ b/src/demuxers/demux_ogg.c
@@ -233,13 +233,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;
}
@@ -1346,7 +1352,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 */