]> git.sesse.net Git - nageru/blobdiff - main.cpp
Remove frame files that do not exist from the database.
[nageru] / main.cpp
index ba44577a124e46e71a13af98727423d851fc7763..e0518afb95421d3ad906cc9a910f2dee01aef9d0 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -166,7 +166,12 @@ FrameOnDisk write_frame(int stream_idx, int64_t pts, const uint8_t *data, size_t
                                }
                        }
                }
-               db->store_frame_file(filename, size, frames_this_file);
+
+               const char *basename = filename.c_str();
+               while (strchr(basename, '/') != nullptr) {
+                       basename = strchr(basename, '/');
+               }
+               db->store_frame_file(basename, size, frames_this_file);
        }
 
        return frame;
@@ -390,7 +395,7 @@ void load_existing_frames()
                        break;
                }
 
-               if (de->d_type == DT_REG) {
+               if (de->d_type == DT_REG || de->d_type == DT_LNK) {
                        string filename = frame_dir + "/" + de->d_name;
                        frame_filenames.push_back(filename);
                        frame_basenames.push_back(de->d_name);
@@ -430,6 +435,8 @@ void load_existing_frames()
                sort(frames[stream_idx].begin(), frames[stream_idx].end(),
                        [](const auto &a, const auto &b) { return a.pts < b.pts; });
        }
+
+       db.clean_unused_frame_files(frame_basenames);
 }
 
 int record_thread_func()