From 1bbf0e468419744a382b6d4df02aa49c3cb153f1 Mon Sep 17 00:00:00 2001 From: Ilkka Ollakka Date: Sun, 29 Sep 2013 11:41:08 +0300 Subject: [PATCH] transcode: don't check drift if we have VLC_TS_INVALID pts (cherry picked from commit af762f811d4ed34a883bc2003f4c70e18f66965e) Signed-off-by: Ilkka Ollakka --- modules/stream_out/transcode/audio.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c index 6d5ccb3..8d3ee57 100644 --- a/modules/stream_out/transcode/audio.c +++ b/modules/stream_out/transcode/audio.c @@ -216,8 +216,13 @@ int transcode_audio_process( sout_stream_t *p_stream, if( p_sys->b_master_sync ) { mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1; - mtime_t i_drift = p_audio_buf->i_pts - i_pts; - if (i_drift > MASTER_SYNC_MAX_DRIFT || i_drift < -MASTER_SYNC_MAX_DRIFT) + mtime_t i_drift = 0; + + if( likely( p_audio_buf->i_pts != VLC_TS_INVALID ) ) + i_drift = p_audio_buf->i_pts - i_pts; + + if ( unlikely(i_drift > MASTER_SYNC_MAX_DRIFT + || i_drift < -MASTER_SYNC_MAX_DRIFT) ) { msg_Dbg( p_stream, "drift is too high (%"PRId64"), resetting master sync", @@ -225,7 +230,8 @@ int transcode_audio_process( sout_stream_t *p_stream, date_Set( &id->interpolated_pts, p_audio_buf->i_pts ); i_pts = p_audio_buf->i_pts + 1; } - p_sys->i_master_drift = p_audio_buf->i_pts - i_pts; + if( likely(p_audio_buf->i_pts != VLC_TS_INVALID ) ) + p_sys->i_master_drift = p_audio_buf->i_pts - i_pts; date_Increment( &id->interpolated_pts, p_audio_buf->i_nb_samples ); p_audio_buf->i_pts = i_pts; } -- 1.8.4