[MPlayer-dev-eng] [PATCH] Fixed Ogm-on-XCD seeking
Moritz Bunkus
moritz at bunkus.org
Sun Jan 5 10:55:41 CET 2003
Hi.
Fixed the Ogg seeking if the Ogg is read from a XCD. movi_start is now
set correctly to stream->start_pos and not to 0, and the rest of the
caculations also take into account that the movie does not necessarily
start at 0 in the stream.
Ok to commit?
--
==> Ciao, Mosu (Moritz Bunkus)
-------------- next part --------------
Index: demux_ogg.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_ogg.c,v
retrieving revision 1.24
diff -u -r1.24 demux_ogg.c
--- demux_ogg.c 4 Jan 2003 22:56:56 -0000 1.24
+++ demux_ogg.c 5 Jan 2003 09:55:11 -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);
More information about the MPlayer-dev-eng
mailing list