[vlc-devel] [RFC-PATCH 03/12] core: mark blocks as part of preroll if they have a valid PTS
Rémi Denis-Courmont
remi at remlab.net
Wed May 11 19:58:27 CEST 2016
On Wednesday 11 May 2016 18:56:48 Filip Roséen wrote:
> The preroll should always be based on the PTS of a block_t, meaning that
> we should only explicitly mark block_ts as part of the current preroll if:
>
> - we are currently prerolling, and;
> - the block has a valid PTS, and;
> - the PTS is lower then the current value of i_preroll_end.
>
> If a block recieved does not have a valid PTS we should not implicitly
received
> mark it as being part of the preroll; it is the senders job to make sure
> that such blocks include BLOCK_FLAG_PREROLL in p_block->i_flags.
>
> This might look like a breaking change, but it really should not be. The
> relationship between the preroll, ES_OUT_SET_NEXT_DISPLAY_TIME, and the
> decoded blocks are what should be used in cases where the incoming block
> does not have a valid PTS.
>
> We can also not base the decision on the DTS of an incoming entity,
> since a DTS within the preroll does not necessary mean that the
> (missing) PTS is also during the preroll.
> ---
> src/input/es_out.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/src/input/es_out.c b/src/input/es_out.c
> index aebbe4d..6cfc112 100644
> --- a/src/input/es_out.c
> +++ b/src/input/es_out.c
> @@ -1955,14 +1955,12 @@ static int EsOutSend( es_out_t *out, es_out_id_t
> *es, block_t *p_block ) vlc_mutex_lock( &p_sys->lock );
>
> /* Mark preroll blocks */
> - if( p_sys->i_preroll_end >= 0 )
> + if( p_sys->i_preroll_end > VLC_TS_INVALID && p_block->i_pts >
> VLC_TS_INVALID ) {
> - int64_t i_date = p_block->i_pts;
> - if( p_block->i_pts <= VLC_TS_INVALID )
> - i_date = p_block->i_dts;
> -
> - if( i_date < p_sys->i_preroll_end )
> + if( p_block->i_pts < p_sys->i_preroll_end )
> + {
> p_block->i_flags |= BLOCK_FLAG_PREROLL;
> + }
> }
>
> if( !es->p_dec )
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list