[vlc-commits] demux:mkv: do not find seek point when we don't have an end boundary

Steve Lhomme git at videolan.org
Fri Jan 19 16:20:59 CET 2018


vlc/vlc-3.0 | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Fri Jan 19 09:28:43 2018 +0100| [f2eff9cdf3866ef5623b098d19b1920b6b232b82] | committer: Jean-Baptiste Kempf

demux:mkv: do not find seek point when we don't have an end boundary

We'll just use the seekpoints we already have.

Fixes #17576

(cherry picked from commit cadcd7a9842a0b2439d24999b53cd75f53328dcf)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

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

 modules/demux/mkv/matroska_segment_seeker.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/modules/demux/mkv/matroska_segment_seeker.cpp b/modules/demux/mkv/matroska_segment_seeker.cpp
index 1b18b7a699..6825ef195f 100644
--- a/modules/demux/mkv/matroska_segment_seeker.cpp
+++ b/modules/demux/mkv/matroska_segment_seeker.cpp
@@ -290,17 +290,17 @@ SegmentSeeker::get_seekpoints( matroska_segment_c& ms, mtime_t target_pts,
         Seekpoint const& start = seekpoints.first;
         Seekpoint const& end   = seekpoints.second;
 
-        if (start.fpos == std::numeric_limits<fptr_t>::max() )
+        if ( start.fpos == std::numeric_limits<fptr_t>::max() )
             return tracks_seekpoint_t();
 
-        index_range( ms, Range( start.fpos, end.fpos ), needle_pts );
+        if ( end.fpos != std::numeric_limits<fptr_t>::max() )
+            // do not read the whole (infinite?) file to get seek indexes
+            index_range( ms, Range( start.fpos, end.fpos ), needle_pts );
 
-        {
-            tracks_seekpoint_t tpoints = find_greatest_seekpoints_in_range( start.fpos, target_pts, filter_tracks );
+        tracks_seekpoint_t tpoints = find_greatest_seekpoints_in_range( start.fpos, target_pts, filter_tracks );
 
-            if( contains_all_of_t() ( tpoints, priority_tracks ) )
-                return tpoints;
-        }
+        if( contains_all_of_t() ( tpoints, priority_tracks ) )
+            return tpoints;
 
         needle_pts = start.pts - 1;
     }



More information about the vlc-commits mailing list