Commit 5708e0cd authored by Laurent Aimar's avatar Laurent Aimar

Fixed seeking while paused (visible with high caching).

parent db4b1b44
...@@ -395,9 +395,6 @@ void input_clock_ChangeSystemOrigin( input_clock_t *cl, mtime_t i_system ) ...@@ -395,9 +395,6 @@ void input_clock_ChangeSystemOrigin( input_clock_t *cl, mtime_t i_system )
cl->ref.i_system += i_offset; cl->ref.i_system += i_offset;
cl->last.i_system += i_offset; cl->last.i_system += i_offset;
if( cl->b_paused )
cl->i_pause_date = i_system;
vlc_mutex_unlock( &cl->lock ); vlc_mutex_unlock( &cl->lock );
} }
......
...@@ -147,6 +147,7 @@ struct es_out_sys_t ...@@ -147,6 +147,7 @@ struct es_out_sys_t
/* */ /* */
bool b_paused; bool b_paused;
mtime_t i_pause_date;
/* Current preroll */ /* Current preroll */
mtime_t i_preroll_end; mtime_t i_preroll_end;
...@@ -301,6 +302,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate ) ...@@ -301,6 +302,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate )
p_sys->i_spu_delay = 0; p_sys->i_spu_delay = 0;
p_sys->b_paused = false; p_sys->b_paused = false;
p_sys->i_pause_date = -1;
p_sys->i_rate = i_rate; p_sys->i_rate = i_rate;
...@@ -556,6 +558,7 @@ static void EsOutChangePause( es_out_t *out, bool b_paused, mtime_t i_date ) ...@@ -556,6 +558,7 @@ static void EsOutChangePause( es_out_t *out, bool b_paused, mtime_t i_date )
EsOutProgramsChangeRate( out ); EsOutProgramsChangeRate( out );
} }
p_sys->b_paused = b_paused; p_sys->b_paused = b_paused;
p_sys->i_pause_date = i_date;
} }
static void EsOutChangeRate( es_out_t *out, int i_rate ) static void EsOutChangeRate( es_out_t *out, int i_rate )
...@@ -654,10 +657,10 @@ static void EsOutDecodersStopBuffering( es_out_t *out, bool b_forced ) ...@@ -654,10 +657,10 @@ static void EsOutDecodersStopBuffering( es_out_t *out, bool b_forced )
msg_Dbg( p_sys->p_input, "Decoder buffering done in %d ms", msg_Dbg( p_sys->p_input, "Decoder buffering done in %d ms",
(int)(mdate() - i_decoder_buffering_start)/1000 ); (int)(mdate() - i_decoder_buffering_start)/1000 );
const mtime_t i_ts_delay = 10*1000 + /* FIXME CLEANUP thread wake up time*/ const mtime_t i_wakeup_delay = 10*1000; /* FIXME CLEANUP thread wake up time*/
mdate(); const mtime_t i_current_date = p_sys->b_paused ? p_sys->i_pause_date : mdate();
//msg_Dbg( p_sys->p_input, "==> %lld", i_ts_delay - p_sys->p_input->i_pts_delay );
input_clock_ChangeSystemOrigin( p_sys->p_pgrm->p_clock, i_ts_delay - i_buffering_duration ); input_clock_ChangeSystemOrigin( p_sys->p_pgrm->p_clock, i_current_date + i_wakeup_delay - i_buffering_duration );
for( int i = 0; i < p_sys->i_es; i++ ) for( int i = 0; i < p_sys->i_es; i++ )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment