]> git.sesse.net Git - vlc/commitdiff
demux: mkv: fix single track opus playback
authorFrancois Cartegnie <fcvlcdev@free.fr>
Fri, 14 Mar 2014 21:56:38 +0000 (22:56 +0100)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Fri, 14 Mar 2014 21:56:38 +0000 (22:56 +0100)
Only first frame in a block has timestamp, then (0) last_dts is never valid,
(1) PCR never sent, (2) track never selected by core, goto 1;

modules/demux/mkv/mkv.cpp

index ec4ebfa58ae2dd80dcb9ce9aa42f3ef70d6147bd..8dfe5f18da6eb40f96f5d1b9236b41ef5f67e1ce 100644 (file)
@@ -656,8 +656,11 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock
                     p_block->i_dts = min( i_pts, tk->i_last_dts + ( mtime_t )( tk->i_default_duration / 1000 ) );
             }
         }
-        if( tk->fmt.i_cat == VIDEO_ES || tk->fmt.i_cat == AUDIO_ES )
+        if( p_block->i_dts > VLC_TS_INVALID &&
+            ( tk->fmt.i_cat == VIDEO_ES || tk->fmt.i_cat == AUDIO_ES ) )
+        {
             tk->i_last_dts = p_block->i_dts;
+        }
 
 #if 0
 msg_Dbg( p_demux, "block i_dts: %"PRId64" / i_pts: %"PRId64, p_block->i_dts, p_block->i_pts);