From af762f811d4ed34a883bc2003f4c70e18f66965e Mon Sep 17 00:00:00 2001
From: Ilkka Ollakka <ileoo@videolan.org>
Date: Sun, 29 Sep 2013 11:41:08 +0300
Subject: [PATCH] transcode: don't check drift if we have VLC_TS_INVALID pts

---
 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 5ad22303644f..7b02b38559fd 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -204,8 +204,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,
                     "audio drift is too high (%"PRId64"), resetting master sync",
@@ -213,7 +218,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;
         }
-- 
GitLab