vlc | branch: master | Steve Lhomme <[email protected]> | Fri Feb 20 14:39:35 2015 +0100| [5e598e572689de89a4f767c0d03b64eeb8aa6ea9] | committer: Jean-Baptiste Kempf
MKV: do not read the whole Cluster data when seeking Also pass the cluster to parse, because this interface change will be needed for an upcoming patch. Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5e598e572689de89a4f767c0d03b64eeb8aa6ea9 --- modules/demux/mkv/matroska_segment.cpp | 4 ++-- modules/demux/mkv/matroska_segment.hpp | 2 +- modules/demux/mkv/matroska_segment_parse.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/demux/mkv/matroska_segment.cpp b/modules/demux/mkv/matroska_segment.cpp index eac5a54..df24096 100644 --- a/modules/demux/mkv/matroska_segment.cpp +++ b/modules/demux/mkv/matroska_segment.cpp @@ -706,7 +706,7 @@ bool matroska_segment_c::Preload( ) cluster = (KaxCluster*)el; i_cluster_pos = i_start_pos = cluster->GetElementPosition(); - ParseCluster( ); + ParseCluster( cluster ); ep->Down(); /* stop pre-parsing the stream */ @@ -887,7 +887,7 @@ void matroska_segment_c::Seek( mtime_t i_date, mtime_t i_time_offset, int64_t i_ ( i_index > 0 && p_indexes[i_index - 1].i_position < (int64_t)cluster->GetElementPosition() ) ) { - ParseCluster(false); + ParseCluster( cluster, false, SCOPE_NO_DATA ); IndexAppendCluster( cluster ); } if( es.I_O().getFilePointer() >= (unsigned) i_global_position ) diff --git a/modules/demux/mkv/matroska_segment.hpp b/modules/demux/mkv/matroska_segment.hpp index 9245c58..3ef8e37 100644 --- a/modules/demux/mkv/matroska_segment.hpp +++ b/modules/demux/mkv/matroska_segment.hpp @@ -158,7 +158,7 @@ private: void ParseTracks( KaxTracks *tracks ); void ParseChapterAtom( int i_level, KaxChapterAtom *ca, chapter_item_c & chapters ); void ParseTrackEntry( KaxTrackEntry *m ); - void ParseCluster( bool b_update_start_time = true ); + void ParseCluster( KaxCluster *cluster, bool b_update_start_time = true, ScopeMode read_fully = SCOPE_ALL_DATA ); SimpleTag * ParseSimpleTags( KaxTagSimple *tag, int level = 50 ); void IndexAppendCluster( KaxCluster *cluster ); int32_t TrackInit( mkv_track_t * p_tk ); diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp index d4a065c..751c824 100644 --- a/modules/demux/mkv/matroska_segment_parse.cpp +++ b/modules/demux/mkv/matroska_segment_parse.cpp @@ -1237,7 +1237,7 @@ void matroska_segment_c::ParseChapters( KaxChapters *chapters ) } } -void matroska_segment_c::ParseCluster( bool b_update_start_time ) +void matroska_segment_c::ParseCluster( KaxCluster *cluster, bool b_update_start_time, ScopeMode read_fully ) { EbmlElement *el; EbmlMaster *m; @@ -1252,7 +1252,7 @@ void matroska_segment_c::ParseCluster( bool b_update_start_time ) } try { - m->Read( es, EBML_CONTEXT(cluster), i_upper_level, el, true ); + m->Read( es, EBML_CONTEXT(cluster), i_upper_level, el, true, read_fully ); } catch(...) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
