[vlc-devel] [PATCH 06/11] mkv: fixed SegmentSeeker::get_search_areas

Filip Roséen filip at videolabs.io
Sat May 21 02:17:58 CEST 2016


Fixed bug where a too big of an area would be returned from the
function, instead of just the area that is really not searched
(indexed).

This will, of course, speed up seeking since we will not rescan an area
where we already know everything there is to know.
---
 modules/demux/mkv/matroska_segment_seeker.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/modules/demux/mkv/matroska_segment_seeker.cpp b/modules/demux/mkv/matroska_segment_seeker.cpp
index 8ae1a4a..a9ad735 100644
--- a/modules/demux/mkv/matroska_segment_seeker.cpp
+++ b/modules/demux/mkv/matroska_segment_seeker.cpp
@@ -366,9 +366,11 @@ SegmentSeeker::get_search_areas( fptr_t start, fptr_t end ) const
             areas_to_search.push_back( Range( needle.start, it->start ) );
         }
 
-        needle.start = it->end + 1;
+        if( needle.start <= it->end )
+            needle.start = it->end + 1;
     }
 
+    needle.start = std::max( needle.start, start );
     if( it == _ranges_searched.end() && needle.start < needle.end )
     {
         areas_to_search.push_back( needle );
-- 
2.8.2



More information about the vlc-devel mailing list