summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpdemux/demuxer.c5
-rw-r--r--mencoder.c3
2 files changed, 5 insertions, 3 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index c46ba9d43d..25c66f92ed 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -242,7 +242,7 @@ demuxer_t *new_demuxer(stream_t *stream, int type, int a_id, int v_id,
d->movi_end = stream->end_pos;
d->seekable = 1;
d->synced = 0;
- d->filepos = 0;
+ d->filepos = -1;
d->audio = new_demuxer_stream(d, a_id);
d->video = new_demuxer_stream(d, v_id);
d->sub = new_demuxer_stream(d, s_id);
@@ -1262,8 +1262,9 @@ int demuxer_get_percent_pos(demuxer_t *demuxer)
int res = demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans);
int len = (demuxer->movi_end - demuxer->movi_start) / 100;
if (res <= 0) {
+ off_t pos = demuxer->filepos > 0 ? demuxer->filepos : stream_tell(demuxer->stream);
if (len > 0)
- ans = (demuxer->filepos - demuxer->movi_start) / len;
+ ans = (pos - demuxer->movi_start) / len;
else
ans = 0;
}
diff --git a/mencoder.c b/mencoder.c
index 9129df7c9a..5b569bb5fd 100644
--- a/mencoder.c
+++ b/mencoder.c
@@ -1399,7 +1399,8 @@ if(sh_audio && !demuxer2){
{ float t=(GetTimerMS()-timer_start)*0.001f;
float len=(demuxer->movi_end-demuxer->movi_start);
- float p=len>1000 ? (float)(demuxer->filepos-demuxer->movi_start) / len :
+ off_t pos = demuxer->filepos >= 0 ? demuxer->filepos : stream_tell(demuxer->stream);
+ float p=len>1000 ? (float)(pos-demuxer->movi_start) / len :
(demuxer_get_percent_pos(demuxer) / 100.0);
#if 0
if(!len && sh_audio && sh_audio->audio.dwLength>100){