Mercurial > mplayer.hg
changeset 8795:b4512aa07711
mosu: Fixed OGG/OGM seeking for XCDs in which the OGG/OGM does not start at pos 0 in the stream
author | mosu |
---|---|
date | Sun, 05 Jan 2003 13:48:13 +0000 |
parents | 056fc0a8b3d2 |
children | 7785c0cf0492 |
files | libmpdemux/demux_ogg.c |
diffstat | 1 files changed, 6 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/demux_ogg.c Sun Jan 05 13:32:57 2003 +0000 +++ b/libmpdemux/demux_ogg.c Sun Jan 05 13:48:13 2003 +0000 @@ -725,7 +725,7 @@ if(!s->end_pos) demuxer->seekable = 0; else { - demuxer->movi_start = 0; + demuxer->movi_start = s->start_pos; // Needed for XCD (Ogg written in MODE2) demuxer->movi_end = s->end_pos; demuxer->seekable = 1; if(index_mode == 2) @@ -965,19 +965,18 @@ pos = ogg_d->syncpoints[sp].page_pos; } else { - pos = flags & 1 ? demuxer->movi_start : ogg_d->pos; + pos = flags & 1 ? 0 : ogg_d->pos; if(flags & 2) pos += (demuxer->movi_end - demuxer->movi_start) * rel_seek_secs; else pos += rel_seek_secs * ogg_d->pos / (os->lastpos / rate); - - if(pos < demuxer->movi_start) - pos = demuxer->movi_start; - else if(pos > demuxer->movi_end) + if (pos < 0) + pos = 0; + else if (pos > (demuxer->movi_end - demuxer->movi_start)) return; } - stream_seek(demuxer->stream,pos); + stream_seek(demuxer->stream,pos+demuxer->movi_start); ogg_sync_reset(sync); for(i = 0 ; i < ogg_d->num_sub ; i++) { ogg_stream_reset(&ogg_d->subs[i].stream);