]> git.sesse.net Git - nageru/blobdiff - main.cpp
Embed shaders into the binary.
[nageru] / main.cpp
index b81471d64ce38aee758d1bacd0ba028f6643fb6c..1d29735f92a2180f8734e4793571a15befbe50c8 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -9,6 +9,7 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <string>
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <thread>
 #include <vector>
@@ -50,7 +51,8 @@ int64_t current_pts = 0;
 string filename_for_frame(unsigned stream_idx, int64_t pts)
 {
        char filename[256];
-       snprintf(filename, sizeof(filename), "frames/cam%d-pts%09ld.jpeg", stream_idx, pts);
+       snprintf(filename, sizeof(filename), "%s/frames/cam%d-pts%09ld.jpeg",
+               global_flags.working_directory.c_str(), stream_idx, pts);
        return filename;
 }
 
@@ -74,9 +76,19 @@ int main(int argc, char **argv)
                exit(1);
        }
 
+       string frame_dir = global_flags.working_directory + "/frames";
+
+       struct stat st;
+       if (stat(frame_dir.c_str(), &st) == -1) {
+               fprintf(stderr, "%s does not exist, creating it.\n", frame_dir.c_str());
+               if (mkdir(frame_dir.c_str(), 0777) == -1) {
+                       perror(global_flags.working_directory.c_str());
+                       exit(1);
+               }
+       }
+
        avformat_network_init();
        global_httpd = new HTTPD;
-       global_httpd->start(DEFAULT_HTTPD_PORT);
 
        QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true);
 
@@ -112,8 +124,11 @@ int main(int argc, char **argv)
                // TODO: Delete the surface, too.
        }
 
-       MainWindow mainWindow;
-       mainWindow.show();
+       MainWindow main_window;
+       main_window.show();
+
+       global_httpd->add_endpoint("/queue_status", bind(&MainWindow::get_queue_status, &main_window), HTTPD::NO_CORS_POLICY);
+       global_httpd->start(global_flags.http_port);
 
        init_jpeg_vaapi();
 
@@ -131,7 +146,8 @@ int main(int argc, char **argv)
 
 void load_existing_frames()
 {
-       DIR *dir = opendir("frames/");
+       string frame_dir = global_flags.working_directory + "/frames";
+       DIR *dir = opendir(frame_dir.c_str());
        if (dir == nullptr) {
                perror("frames/");
                start_pts = 0;
@@ -222,13 +238,13 @@ int record_thread_func()
 
                post_to_main_thread([pkt, pts] {
                        if (pkt.stream_index == 0) {
-                               global_mainwindow->ui->input1_display->setFrame(pkt.stream_index, pts, /*interpolated=*/false);
+                               global_mainwindow->ui->input1_display->setFrame(pkt.stream_index, pts);
                        } else if (pkt.stream_index == 1) {
-                               global_mainwindow->ui->input2_display->setFrame(pkt.stream_index, pts, /*interpolated=*/false);
+                               global_mainwindow->ui->input2_display->setFrame(pkt.stream_index, pts);
                        } else if (pkt.stream_index == 2) {
-                               global_mainwindow->ui->input3_display->setFrame(pkt.stream_index, pts, /*interpolated=*/false);
+                               global_mainwindow->ui->input3_display->setFrame(pkt.stream_index, pts);
                        } else if (pkt.stream_index == 3) {
-                               global_mainwindow->ui->input4_display->setFrame(pkt.stream_index, pts, /*interpolated=*/false);
+                               global_mainwindow->ui->input4_display->setFrame(pkt.stream_index, pts);
                        }
                });