]> git.sesse.net Git - nageru/blobdiff - futatabi/frame_on_disk.h
Add versions of the binary search utilities that take in const references.
[nageru] / futatabi / frame_on_disk.h
index 35f375bb78ef37a6522b351cea981e4a0643bf4e..c8a74a758ffdc19e6fad72c34a9246408893971f 100644 (file)
@@ -61,6 +61,13 @@ find_last_frame_before(std::vector<FrameOnDisk> &frames, int64_t pts_origin)
                                [](const FrameOnDisk &frame, int64_t pts) { return frame.pts < pts; });
 }
 
+inline std::vector<FrameOnDisk>::const_iterator
+find_last_frame_before(const std::vector<FrameOnDisk> &frames, int64_t pts_origin)
+{
+       return std::lower_bound(frames.begin(), frames.end(), pts_origin,
+                               [](const FrameOnDisk &frame, int64_t pts) { return frame.pts < pts; });
+}
+
 inline std::vector<FrameOnDisk>::iterator
 find_first_frame_at_or_after(std::vector<FrameOnDisk> &frames, int64_t pts_origin)
 {
@@ -68,4 +75,11 @@ find_first_frame_at_or_after(std::vector<FrameOnDisk> &frames, int64_t pts_origi
                                [](int64_t pts, const FrameOnDisk &frame) { return pts < frame.pts; });
 }
 
+inline std::vector<FrameOnDisk>::const_iterator
+find_first_frame_at_or_after(const std::vector<FrameOnDisk> &frames, int64_t pts_origin)
+{
+       return std::upper_bound(frames.begin(), frames.end(), pts_origin - 1,
+                               [](int64_t pts, const FrameOnDisk &frame) { return pts < frame.pts; });
+}
+
 #endif  // !defined(_FRAME_ON_DISK_H)