]> git.sesse.net Git - vlc/commitdiff
MKV: fix COOK/ATRAC3 seeking
authorSteve Lhomme <robUx4@videolabs.io>
Thu, 19 Mar 2015 10:06:30 +0000 (10:06 +0000)
committerJean-Baptiste Kempf <jb@videolan.org>
Thu, 19 Mar 2015 11:12:54 +0000 (12:12 +0100)
Fixes #14210

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/demux/mkv/mkv.cpp
modules/demux/mkv/util.cpp

index 0bce331b4da65317b248be2de59a4624309f20ca..9a84a004731e5b5d875b7af13b10c2aa0d71731c 100644 (file)
@@ -595,6 +595,10 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock
         {
             memcpy( p_block->p_buffer, tk->p_compression_data->GetBuffer(), tk->p_compression_data->GetSize() );
         }
+
+        if ( b_key_picture )
+            p_block->i_flags |= BLOCK_FLAG_TYPE_I;
+
         switch( tk->fmt.i_codec )
         {
         case VLC_CODEC_COOK:
@@ -630,9 +634,6 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock
             break;
         }
 
-        if ( b_key_picture )
-            p_block->i_flags |= BLOCK_FLAG_TYPE_I;
-        
         if( tk->fmt.i_cat != VIDEO_ES )
         {
             if ( tk->fmt.i_cat == NAV_ES )
index 8f84d94648e4bd3440072c5973c5ebdacb1de46d..7a0cfcd4f83d83cd0e7762e9db4033e8aeebe2bf 100644 (file)
@@ -183,6 +183,13 @@ void handle_real_audio(demux_t * p_demux, mkv_track_t * p_tk, block_t * p_blk, m
                 p_sys->p_subpackets[i] = NULL;
             }
         p_sys->i_subpacket = 0;
+
+        if ( !( p_blk->i_flags & BLOCK_FLAG_TYPE_I) )
+        {
+            msg_Dbg( p_demux, "discard non-key preroll block in track %d at%"PRId64,
+                     p_tk->i_number, i_pts );
+            return;
+        }
     }
 
     if( p_tk->fmt.i_codec == VLC_CODEC_COOK ||