[vlc-commits] mkv: fixed SegmentSeeker::get_search_areas

Filip Roséen git at videolan.org
Mon May 23 16:22:02 CEST 2016


vlc | branch: master | Filip Roséen <filip at videolabs.io> | Sat May 21 02:17:58 2016 +0200| [48b287c8d8916b4061c470aa3914ef1bb9fab466] | committer: Jean-Baptiste Kempf

mkv: fixed SegmentSeeker::get_search_areas

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.

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=48b287c8d8916b4061c470aa3914ef1bb9fab466
---

 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 );



More information about the vlc-commits mailing list