]> git.sesse.net Git - nageru/blobdiff - futatabi/frame_on_disk.h
Fix a dangling reference (found by GCC 14).
[nageru] / futatabi / frame_on_disk.h
index 360bd23ce1222271cfef1f82df5006de0b141a60..c8a74a758ffdc19e6fad72c34a9246408893971f 100644 (file)
@@ -46,7 +46,7 @@ public:
                std::string video;
                std::string audio;
        };
-       Frame read_frame(FrameOnDisk frame, bool read_audio);
+       Frame read_frame(FrameOnDisk frame, bool read_video, bool read_audio);
 
 private:
        int fd = -1;
@@ -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)