vlc | branch: master | Filip Roséen <[email protected]> | Fri May 20 23:41:31 2016 +0200| [799fb3753016dd0693a3f19db31bb7c7507b428c] | committer: Jean-Baptiste Kempf
mkv: store priority tracks When seeking, we should prioritize tracks depending on what type of ES they are; this patch addes a data-member to matroska_segment_c that will keep track of which tracks are more important than other. It also adds logic to ComputePriorityTracks that will initialize this data-member with the appropriate track-ids. Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=799fb3753016dd0693a3f19db31bb7c7507b428c --- modules/demux/mkv/matroska_segment.cpp | 30 ++++++++++++++++++++++++++++++ modules/demux/mkv/matroska_segment.hpp | 1 + 2 files changed, 31 insertions(+) diff --git a/modules/demux/mkv/matroska_segment.cpp b/modules/demux/mkv/matroska_segment.cpp index 99d6487..881eed0 100644 --- a/modules/demux/mkv/matroska_segment.cpp +++ b/modules/demux/mkv/matroska_segment.cpp @@ -930,6 +930,36 @@ void matroska_segment_c::ComputeTrackPriority() if( track.fmt.i_cat == VIDEO_ES ) track.fmt.i_priority--; } + + // find track(s) with highest priority // + { + int score = -1; + int es_type = -1; + + for( tracks_map_t::const_iterator it = this->tracks.begin(); it != this->tracks.end(); ++it ) + { + int track_score = -1; + + switch( it->second.fmt.i_cat ) + { + case VIDEO_ES: ++track_score; + case AUDIO_ES: ++track_score; + case SPU_ES: ++track_score; + default: + if( score < track_score ) + { + es_type = it->second.fmt.i_cat; + score = track_score; + } + } + } + + for( tracks_map_t::const_iterator it = this->tracks.begin(); it != this->tracks.end(); ++it ) + { + if( it->second.fmt.i_cat == es_type ) + priority_tracks.push_back( it->first ); + } + } } void matroska_segment_c::EnsureDuration() diff --git a/modules/demux/mkv/matroska_segment.hpp b/modules/demux/mkv/matroska_segment.hpp index c39c275..0aa01be 100644 --- a/modules/demux/mkv/matroska_segment.hpp +++ b/modules/demux/mkv/matroska_segment.hpp @@ -93,6 +93,7 @@ public: /* all tracks */ tracks_map_t tracks; + std::vector<mkv_track_t::track_id_t> priority_tracks; /* from seekhead */ int i_seekhead_count; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
