[vlc-devel] [PATCH] Inproved buffering accuracy and no rebuffering on ignored
Rémi Denis-Courmont
remi at remlab.net
Fri Oct 4 18:32:40 CEST 2013
Le mardi 1 octobre 2013 10:40:31 David Robison a écrit :
> Here is the final patch, Any comments?
Sorry for the delay but this is, well, a component that has proven hard to
validate.
Is it so that you want to just pause playback without changing buffering when
there is an underrun?
> diff --git a/src/input/es_out.c b/src/input/es_out.c
> index 68acf5e..c2431ba 100644
> --- a/src/input/es_out.c
> +++ b/src/input/es_out.c
> @@ -2309,14 +2309,14 @@ static int EsOutControlLocked( es_out_t *out, int
> i_query, va_list args ) EsOutIsExtraBufferingAllowed( out ),
> i_pcr, mdate() );
>
> - if( p_pgrm == p_sys->p_pgrm )
> + if( p_sys->b_buffering )
> {
> - if( p_sys->b_buffering )
> - {
> - /* Check buffering state on master clock update */
> - EsOutDecodersStopBuffering( out, false );
> - }
> - else if( b_late && ( !p_sys->p_input->p->p_sout ||
> + /* Check buffering state on master clock update */
> + EsOutDecodersStopBuffering( out, false );
> + }
> + else if( p_pgrm == p_sys->p_pgrm )
> + {
Won't this potentially needless break playback if an unselected program has
buffering problems? I would think there was a reason for the check.
> + if( b_late && ( !p_sys->p_input->p->p_sout ||
> !p_sys->p_input->p->b_out_pace_control ) )
> {
> const mtime_t i_pts_delay_base = p_sys->i_pts_delay -
> p_sys->i_pts_jitter; @@ -2330,19 +2330,23 @@ static int EsOutControlLocked(
> es_out_t *out, int i_query, va_list args ) "ES_OUT_SET_(GROUP_)PCR is
> called too late (jitter of %d ms ignored)", (int)(i_pts_delay -
> i_pts_delay_base) / 1000 ); i_pts_delay = p_sys->i_pts_delay;
> +
> + /* reset clock */
> + for( int i = 0; i < p_sys->i_pgrm; i++ )
> + input_clock_Reset( p_sys->pgrm[i]->p_clock );
> }
> else
> {
> msg_Err( p_sys->p_input,
> "ES_OUT_SET_(GROUP_)PCR is called too late
> (pts_delay increased to %d ms)", (int)(i_pts_delay/1000) );
> - }
>
> - /* Force a rebufferization when we are too late */
> + /* Force a rebufferization when we are too late */
>
> - /* It is not really good, as we throw away already buffered
> data - * TODO have a mean to correctly reenter
> bufferization */ - es_out_Control( out, ES_OUT_RESET_PCR );
> + /* It is not really good, as we throw away already
> buffered data + * TODO have a mean to correctly reenter
> bufferization */ + es_out_Control( out, ES_OUT_RESET_PCR
> );
> + }
>
> es_out_SetJitter( out, i_pts_delay_base, i_pts_delay -
> i_pts_delay_base, p_sys->i_cr_average ); }
> --
> 1.7.9.5
>
> _____
> From: Rémi Denis-Courmont [mailto:remi at remlab.net]
> To: Mailing list for VLC media player developers
> [mailto:vlc-devel at videolan.org] Sent: Thu, 26 Sep 2013 10:03:03 -0400
> Subject: Re: [vlc-devel] [PATCH] Do not rebuffer if not increasing
> buffer size
>
> Is there any easy way to test it?
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list