From 0c84bbed7e70eaf34e4b8cccbc460163a6cdda79 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Thu, 17 Feb 2005 10:27:41 +0000 Subject: [PATCH] mkv.cpp: finer granularity for seeking (useful for long files) --- modules/demux/mkv.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/demux/mkv.cpp b/modules/demux/mkv.cpp index 9cab57f134..e8d54c97fe 100644 --- a/modules/demux/mkv.cpp +++ b/modules/demux/mkv.cpp @@ -132,7 +132,7 @@ vlc_module_end(); *****************************************************************************/ static int Demux ( demux_t * ); static int Control( demux_t *, int, va_list ); -static void Seek ( demux_t *, mtime_t i_date, int i_percent ); +static void Seek ( demux_t *, mtime_t i_date, double f_percent ); #ifdef HAVE_ZLIB_H block_t *block_zlib_decompress( vlc_object_t *p_this, block_t *p_in_block ) { @@ -1092,7 +1092,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) case DEMUX_SET_POSITION: f = (double)va_arg( args, double ); - Seek( p_demux, -1, (int)(100.0 * f) ); + Seek( p_demux, -1, f ); return VLC_SUCCESS; case DEMUX_GET_TIME: @@ -1378,7 +1378,7 @@ static void BlockDecode( demux_t *p_demux, KaxBlock *block, mtime_t i_pts, #undef tk } -static void Seek( demux_t *p_demux, mtime_t i_date, int i_percent) +static void Seek( demux_t *p_demux, mtime_t i_date, double f_percent) { demux_sys_t *p_sys = p_demux->p_sys; @@ -1391,27 +1391,27 @@ static void Seek( demux_t *p_demux, mtime_t i_date, int i_percent) int i_track_skipping; int i_track; - msg_Dbg( p_demux, "seek request to "I64Fd" (%d%%)", i_date, i_percent ); - if( i_date < 0 && i_percent < 0 ) + msg_Dbg( p_demux, "seek request to "I64Fd" (%f%%)", i_date, f_percent ); + if( i_date < 0 && f_percent < 0 ) { return; } - if( i_percent > 100 ) i_percent = 100; + if( f_percent > 1.0 ) f_percent = 1.0; delete p_sys->ep; p_sys->ep = new EbmlParser( p_sys->es, p_sys->segment ); p_sys->cluster = NULL; /* seek without index or without date */ - if( i_percent >= 0 && (config_GetInt( p_demux, "mkv-seek-percent" ) || !p_sys->b_cues || i_date < 0 )) + if( f_percent >= 0 && (config_GetInt( p_demux, "mkv-seek-percent" ) || !p_sys->b_cues || i_date < 0 )) { if (p_sys->f_duration >= 0) { - i_date = i_percent * p_sys->f_duration * 10; + i_date = f_percent * p_sys->f_duration * 1000; } else { - int64_t i_pos = i_percent * stream_Size( p_demux->s ) / 100; + int64_t i_pos = f_percent * stream_Size( p_demux->s ); msg_Dbg( p_demux, "inacurate way of seeking" ); for( i_index = 0; i_index < p_sys->i_index; i_index++ ) -- 2.39.5