[vlc-devel] [PATCH] MKV: fix COOK/ATRAC3 seeking

Steve Lhomme robux4 at videolabs.io
Thu Mar 19 11:57:36 CET 2015


Don't commit, I'm going to do it slightly differently.

On Thu, Mar 19, 2015 at 11:11 AM, Steve Lhomme <robUx4 at videolabs.io> wrote:
> Fixes #14210
> ---
>  modules/demux/mkv/mkv.cpp  |  2 +-
>  modules/demux/mkv/util.cpp | 10 +++++++++-
>  modules/demux/mkv/util.hpp |  3 ++-
>  3 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp
> index 48496e2..5a4f76a 100644
> --- a/modules/demux/mkv/mkv.cpp
> +++ b/modules/demux/mkv/mkv.cpp
> @@ -600,7 +600,7 @@ void BlockDecode( demux_t *p_demux, KaxBlock *block, KaxSimpleBlock *simpleblock
>          case VLC_CODEC_COOK:
>          case VLC_CODEC_ATRAC3:
>          {
> -            handle_real_audio(p_demux, tk, p_block, i_pts);
> +            handle_real_audio(p_demux, tk, p_block, i_pts, b_key_picture);
>              block_Release(p_block);
>              i_pts = ( tk->i_default_duration )?
>                  i_pts + ( mtime_t )tk->i_default_duration:
> diff --git a/modules/demux/mkv/util.cpp b/modules/demux/mkv/util.cpp
> index 8f84d94..58d77bd 100644
> --- a/modules/demux/mkv/util.cpp
> +++ b/modules/demux/mkv/util.cpp
> @@ -168,7 +168,8 @@ block_t *MemToBlock( uint8_t *p_mem, size_t i_mem, size_t offset)
>  }
>
>
> -void handle_real_audio(demux_t * p_demux, mkv_track_t * p_tk, block_t * p_blk, mtime_t i_pts)
> +void handle_real_audio(demux_t * p_demux, mkv_track_t * p_tk, block_t * p_blk,
> +                       mtime_t i_pts, bool b_key_picture)
>  {
>      uint8_t * p_frame = p_blk->p_buffer;
>      Cook_PrivateTrackData * p_sys = (Cook_PrivateTrackData *) p_tk->p_sys;
> @@ -183,6 +184,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 ( !b_key_picture )
> +        {
> +            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 ||
> diff --git a/modules/demux/mkv/util.hpp b/modules/demux/mkv/util.hpp
> index c181ad2..6b8285e 100644
> --- a/modules/demux/mkv/util.hpp
> +++ b/modules/demux/mkv/util.hpp
> @@ -31,7 +31,8 @@ block_t *block_zlib_decompress( vlc_object_t *p_this, block_t *p_in_block );
>  #endif
>
>  block_t *MemToBlock( uint8_t *p_mem, size_t i_mem, size_t offset);
> -void handle_real_audio(demux_t * p_demux, mkv_track_t * p_tk, block_t * p_blk, mtime_t i_pts);
> +void handle_real_audio(demux_t * p_demux, mkv_track_t * p_tk, block_t * p_blk,
> +                       mtime_t i_pts, bool b_key_picture);
>
>
>  struct real_audio_private
> --
> 2.3.2
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list