浏览代码

LibVideo/Matroska: Stop skipping a cue when seeking forward

This would cause seeks where the approximate starting cue index was one
cue before the optimal cue to not change the sample iterator position.
Fixing this issue improves accurate seek speeds significantly.
Zaggy1024 2 年之前
父节点
当前提交
1f650088a0
共有 1 个文件被更改,包括 1 次插入2 次删除
  1. 1 2
      Userland/Libraries/LibVideo/Containers/Matroska/Reader.cpp

+ 1 - 2
Userland/Libraries/LibVideo/Containers/Matroska/Reader.cpp

@@ -798,12 +798,11 @@ DecoderErrorOr<void> Reader::seek_to_cue_for_timestamp(SampleIterator& iterator,
     }
     }
 
 
     while (index < cue_points.size()) {
     while (index < cue_points.size()) {
-        auto const& cue_point = cue_points[index++];
+        auto const& cue_point = cue_points[++index];
         dbgln_if(MATROSKA_DEBUG, "Checking future cue point {}ms", cue_point.timestamp().to_milliseconds());
         dbgln_if(MATROSKA_DEBUG, "Checking future cue point {}ms", cue_point.timestamp().to_milliseconds());
         if (cue_point.timestamp() > timestamp)
         if (cue_point.timestamp() > timestamp)
             break;
             break;
         prev_cue_point = &cue_point;
         prev_cue_point = &cue_point;
-        index++;
     }
     }
 
 
     TRY(iterator.seek_to_cue_point(*prev_cue_point));
     TRY(iterator.seek_to_cue_point(*prev_cue_point));