vlc | branch: master | Francois Cartegnie <[email protected]> | Mon Nov 30 11:20:01 2020 +0100| [36e2465e462d65232be14a6aaac4a85dc7ce6b41] | committer: Francois Cartegnie
packetizer: a52: fix repeating timestamps on time resync > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=36e2465e462d65232be14a6aaac4a85dc7ce6b41 --- modules/packetizer/a52.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/packetizer/a52.c b/modules/packetizer/a52.c index 15890af14b..bf30edaa61 100644 --- a/modules/packetizer/a52.c +++ b/modules/packetizer/a52.c @@ -109,9 +109,15 @@ static block_t *GetOutBuffer( decoder_t *p_dec ) /* Make sure we don't reuse the same pts twice * as A/52 in PES sends multiple times the same pts */ if( p_sys->bytestream.p_block->i_pts != p_sys->i_prev_bytestream_pts ) - date_Set( &p_sys->end_date, p_sys->bytestream.p_block->i_pts ); - p_sys->i_prev_bytestream_pts = p_sys->bytestream.p_block->i_pts; - p_sys->bytestream.p_block->i_pts = VLC_TICK_INVALID; + { + date_t tempdate = p_sys->end_date; + date_Increment( &tempdate, p_sys->frame.i_samples ); + vlc_tick_t samplesduration = date_Get( &tempdate ) - date_Get( &p_sys->end_date ); + if( llabs(p_sys->bytestream.p_block->i_pts - date_Get( &p_sys->end_date )) > samplesduration ) + date_Set( &p_sys->end_date, p_sys->bytestream.p_block->i_pts ); + p_sys->i_prev_bytestream_pts = p_sys->bytestream.p_block->i_pts; + p_sys->bytestream.p_block->i_pts = VLC_TICK_INVALID; + } } p_dec->fmt_out.audio.i_rate = p_sys->frame.i_rate; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
