From 7ccd46a8a014e991d23e34fdc169ae621036eb2b Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Fri, 16 Jan 2009 21:06:30 +0100 Subject: [PATCH] Privatized i_pts_delay (input_thread_t). --- include/vlc_input.h | 3 --- src/input/decoder.c | 4 ++-- src/input/es_out.c | 8 ++++---- src/input/input.c | 14 +++++++------- src/input/input_internal.h | 3 +++ src/input/var.c | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/vlc_input.h b/include/vlc_input.h index 553c90690f..eeb0c0eaae 100644 --- a/include/vlc_input.h +++ b/include/vlc_input.h @@ -415,9 +415,6 @@ struct input_thread_t bool b_can_pace_control; int64_t i_time; /* Current time */ - /* Internal caching common to all inputs */ - mtime_t i_pts_delay; - /* All other data is input_thread is PRIVATE. You can't access it * outside of src/input */ input_thread_private_t *p; diff --git a/src/input/decoder.c b/src/input/decoder.c index 9aecc3612c..bcaebb86cb 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -653,7 +653,7 @@ static mtime_t DecoderGetDisplayDate( decoder_t *p_dec, mtime_t i_ts ) if( !p_owner->p_clock || !i_ts ) return i_ts; - return input_clock_GetTS( p_owner->p_clock, NULL, p_owner->p_input->i_pts_delay, i_ts ); + return input_clock_GetTS( p_owner->p_clock, NULL, p_owner->p_input->p->i_pts_delay, i_ts ); } static int DecoderGetDisplayRate( decoder_t *p_dec ) { @@ -1044,7 +1044,7 @@ static void DecoderFixTs( decoder_t *p_dec, mtime_t *pi_ts0, mtime_t *pi_ts1, vlc_assert_locked( &p_owner->lock ); - const mtime_t i_ts_delay = p_owner->p_input->i_pts_delay; + const mtime_t i_ts_delay = p_owner->p_input->p->i_pts_delay; const mtime_t i_es_delay = p_owner->i_ts_delay; if( p_clock ) diff --git a/src/input/es_out.c b/src/input/es_out.c index fc9e64b2fb..d736f63828 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -545,7 +545,7 @@ static void EsOutChangePause( es_out_t *out, bool b_paused, mtime_t i_date ) if( !i_ret ) { /* FIXME pcr != exactly what wanted */ - const mtime_t i_used = /*(i_stream_duration - p_sys->p_input->i_pts_delay)*/ p_sys->i_buffering_extra_system - p_sys->i_buffering_extra_initial; + const mtime_t i_used = /*(i_stream_duration - p_sys->p_input->p->i_pts_delay)*/ p_sys->i_buffering_extra_system - p_sys->i_buffering_extra_initial; i_date -= i_used; } p_sys->i_buffering_extra_initial = 0; @@ -622,7 +622,7 @@ static void EsOutDecodersStopBuffering( es_out_t *out, bool b_forced ) if( p_sys->i_preroll_end >= 0 ) i_preroll_duration = __MAX( p_sys->i_preroll_end - i_stream_start, 0 ); - const mtime_t i_buffering_duration = p_sys->p_input->i_pts_delay + + const mtime_t i_buffering_duration = p_sys->p_input->p->i_pts_delay + i_preroll_duration + p_sys->i_buffering_extra_stream - p_sys->i_buffering_extra_initial; @@ -787,7 +787,7 @@ static void EsOutFrameNext( es_out_t *out ) if( i_ret ) return; - p_sys->i_buffering_extra_initial = 1 + i_stream_duration - p_sys->p_input->i_pts_delay; /* FIXME < 0 ? */ + p_sys->i_buffering_extra_initial = 1 + i_stream_duration - p_sys->p_input->p->i_pts_delay; /* FIXME < 0 ? */ p_sys->i_buffering_extra_system = p_sys->i_buffering_extra_stream = p_sys->i_buffering_extra_initial; } @@ -842,7 +842,7 @@ static mtime_t EsOutGetBuffering( es_out_t *out ) } const mtime_t i_consumed = i_system_duration * INPUT_RATE_DEFAULT / p_sys->i_rate - i_stream_duration; - i_delay = p_sys->p_input->i_pts_delay - i_consumed; + i_delay = p_sys->p_input->p->i_pts_delay - i_consumed; } if( i_delay < 0 ) return 0; diff --git a/src/input/input.c b/src/input/input.c index 3e726a9576..968049754a 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -183,7 +183,7 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item, p_input->p->p_es_out = NULL; p_input->p->p_sout = NULL; p_input->p->b_out_pace_control = false; - p_input->i_pts_delay = 0; + p_input->p->i_pts_delay = 0; p_input->p->i_cr_average = 0; vlc_gc_incref( p_item ); /* Released in Destructor() */ @@ -906,17 +906,17 @@ static void InitTitle( input_thread_t * p_input ) p_input->p->b_can_rate_control = p_master->b_can_rate_control; /* Fix pts delay */ - if( p_input->i_pts_delay < 0 ) - p_input->i_pts_delay = 0; + if( p_input->p->i_pts_delay < 0 ) + p_input->p->i_pts_delay = 0; /* If the desynchronisation requested by the user is < 0, we need to * cache more data. */ const int i_desynch = var_GetInteger( p_input, "audio-desync" ); if( i_desynch < 0 ) - p_input->i_pts_delay -= i_desynch * 1000; + p_input->p->i_pts_delay -= i_desynch * 1000; /* Update cr_average depending on the caching */ - p_input->p->i_cr_average *= (10 * p_input->i_pts_delay / 200000); + p_input->p->i_cr_average *= (10 * p_input->p->i_pts_delay / 200000); p_input->p->i_cr_average /= 10; if( p_input->p->i_cr_average < 10 ) p_input->p->i_cr_average = 10; @@ -2344,7 +2344,7 @@ static int InputSourceInit( input_thread_t *p_input, /* Get infos from access_demux */ demux_Control( in->p_demux, DEMUX_GET_PTS_DELAY, &i_pts_delay ); - p_input->i_pts_delay = __MAX( p_input->i_pts_delay, i_pts_delay ); + p_input->p->i_pts_delay = __MAX( p_input->p->i_pts_delay, i_pts_delay ); in->b_title_demux = true; if( demux_Control( in->p_demux, DEMUX_GET_TITLE_INFO, @@ -2418,7 +2418,7 @@ static int InputSourceInit( input_thread_t *p_input, { access_Control( in->p_access, ACCESS_GET_PTS_DELAY, &i_pts_delay ); - p_input->i_pts_delay = __MAX( p_input->i_pts_delay, i_pts_delay ); + p_input->p->i_pts_delay = __MAX( p_input->p->i_pts_delay, i_pts_delay ); in->b_title_demux = false; if( access_Control( in->p_access, ACCESS_GET_TITLE_INFO, diff --git a/src/input/input_internal.h b/src/input/input_internal.h index c6f5488aec..ff409ec699 100644 --- a/src/input/input_internal.h +++ b/src/input/input_internal.h @@ -80,6 +80,9 @@ struct input_thread_private_t bool b_can_rate_control; double f_fps; + /* Internal caching common to all sources */ + mtime_t i_pts_delay; + /* Current state */ int i_rate; bool b_recording; diff --git a/src/input/var.c b/src/input/var.c index 4de97a5659..3ffe2b0249 100644 --- a/src/input/var.c +++ b/src/input/var.c @@ -777,7 +777,7 @@ static int EsDelayCallback ( vlc_object_t *p_this, char const *psz_cmd, /* Change i_pts_delay to make sure es are decoded in time */ if( newval.i_int < 0 || oldval.i_int < 0 ) { - p_input->i_pts_delay -= newval.i_int - oldval.i_int; + p_input->p->i_pts_delay -= newval.i_int - oldval.i_int; } input_ControlPush( p_input, INPUT_CONTROL_SET_AUDIO_DELAY, &newval ); } -- 2.39.2