Workaround for 0 being invalid timestamp.
[vlc.git] / modules / demux / mkv / mkv.cpp
index fa25d28..348b53c 100644 (file)
@@ -603,6 +603,12 @@ msg_Dbg( p_demux, "block i_dts: %"PRId64" / i_pts: %"PRId64, p_block->i_dts, p_b
             p_block->i_length = i_duration * 1000;
         }
 
+        /* FIXME remove when VLC_TS_INVALID work is done */
+        if( i == 0 || p_block->i_dts > 0 )
+            p_block->i_dts++;
+        if( !tk->b_dts_only && ( i == 0 || p_block->i_pts ) )
+            p_block->i_pts++;
+
         es_out_Send( p_demux->out, tk->p_es, p_block );
 
         /* use time stamp only for first block */
@@ -859,7 +865,8 @@ static int Demux( demux_t *p_demux)
         else
             p_sys->i_pts = (p_sys->i_chapter_time + block->GlobalTimecode()) / (mtime_t) 1000;
 
-        es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_sys->i_pts );
+        /* FIXME remove the +1 when VLC_TS_INVALID work is done */
+        es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_sys->i_pts+1 );
 
         if( p_sys->i_pts >= p_sys->i_start_pts  )
         {