From 6e28f63e36321ad554646b9598f2b1f258620b84 Mon Sep 17 00:00:00 2001 From: nicodvb Date: Sun, 12 Nov 2006 17:19:56 +0000 Subject: consistency fix: STREAM_CTRL_GET_TIME_LENGTH and STREAM_CTRL_GET_CURRENT_TIME now return time in (double) seconds git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20867 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mpg.c | 8 ++------ libmpdemux/demuxer.c | 10 +++++----- stream/stream_dvd.c | 5 ++--- stream/stream_dvdnav.c | 2 +- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c index 7bae4f3f74..07de9882bd 100644 --- a/libmpdemux/demux_mpg.c +++ b/libmpdemux/demux_mpg.c @@ -802,15 +802,11 @@ void demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,float audio_delay, in int demux_mpg_control(demuxer_t *demuxer,int cmd, void *arg){ mpg_demuxer_t *mpg_d=(mpg_demuxer_t*)demuxer->priv; - int msec = 0; switch(cmd) { case DEMUXER_CTRL_GET_TIME_LENGTH: - msec = stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, arg); - if(msec != STREAM_UNSUPORTED) { - msec = *((unsigned int*)arg); - *((double *)arg)=(double)msec/1000.0f; - mp_msg(MSGT_DEMUXER,MSGL_DBG2,"\r\nDEMUX_MPG_CTRL, stream len: %d (%.3lf)\r\n", msec, *((double*)arg)); + if(stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, arg) != STREAM_UNSUPORTED) { + mp_msg(MSGT_DEMUXER,MSGL_DBG2,"\r\nDEMUX_MPG_CTRL, (%.3lf)\r\n", *((double*)arg)); return DEMUXER_CTRL_GUESS; } if (mpg_d && mpg_d->has_valid_timestamps) { diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 2517e3dbcc..d65456cfd6 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -881,7 +881,7 @@ int demux_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flag demux_stream_t *d_video=demuxer->video; sh_audio_t *sh_audio=d_audio->sh; sh_video_t *sh_video=d_video->sh; - unsigned int tmp = 0; + double tmp = 0; double pts; if(!demuxer->seekable){ @@ -916,13 +916,13 @@ if(!demuxer->seekable){ else { if(stream_control(demuxer->stream, STREAM_CTRL_GET_CURRENT_TIME, &tmp) == STREAM_UNSUPORTED) goto dmx_seek; - pts = (double)tmp / 1000.0f; + pts = tmp; } if(flags & 2) { // percent seek if(stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, &tmp) == STREAM_UNSUPORTED) goto dmx_seek; - pts += (double)tmp / 1000.0f * rel_seek_secs; + pts += tmp * rel_seek_secs; } else pts += rel_seek_secs; @@ -1032,10 +1032,10 @@ double demuxer_get_time_length(demuxer_t *demuxer){ */ int demuxer_get_current_time(demuxer_t *demuxer){ double get_time_ans = 0; - unsigned tm; + double tm; sh_video_t *sh_video = demuxer->video->sh; if(stream_control(demuxer->stream, STREAM_CTRL_GET_CURRENT_TIME,(void *)&tm)!=STREAM_UNSUPORTED) { - get_time_ans = (double) tm / 1000.0f; + get_time_ans = tm; } else if(sh_video) get_time_ans = sh_video->pts; return (int) get_time_ans; } diff --git a/stream/stream_dvd.c b/stream/stream_dvd.c index c7a5946457..ddbe637880 100644 --- a/stream/stream_dvd.c +++ b/stream/stream_dvd.c @@ -633,7 +633,7 @@ static int control(stream_t *stream,int cmd,void* arg) { case STREAM_CTRL_GET_TIME_LENGTH: { - *((unsigned int *)arg) = mp_get_titleset_length(d->vts_file, d->tt_srpt, d->cur_title-1); + *((double *)arg) = (double) mp_get_titleset_length(d->vts_file, d->tt_srpt, d->cur_title-1)/1000.0; return 1; } case STREAM_CTRL_GET_NUM_CHAPTERS: @@ -663,8 +663,7 @@ static int control(stream_t *stream,int cmd,void* arg) if(stream_cache_size > 0) return STREAM_UNSUPORTED; tm = dvd_get_current_time(stream, 0); if(tm != -1) { - tm *= 1000.0f; - *((unsigned int *)arg) = (unsigned int) tm; + *((double *)arg) = tm; return 1; } break; diff --git a/stream/stream_dvdnav.c b/stream/stream_dvdnav.c index 4d2f2686b5..57e2de633c 100644 --- a/stream/stream_dvdnav.c +++ b/stream/stream_dvdnav.c @@ -279,7 +279,7 @@ static int control(stream_t *stream, int cmd, void* arg) { { if(priv->duration) { - *((unsigned int *)arg) = priv->duration; + *((double *)arg) = (double)priv->duration / 1000.0; return 1; } break; -- cgit v1.2.3