X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=main.cpp;h=1d29735f92a2180f8734e4793571a15befbe50c8;hb=92cca212dad5e4b968c052d8200a534473929674;hp=b81471d64ce38aee758d1bacd0ba028f6643fb6c;hpb=5586c82d9265073c44bc765e82815ee09b4fb758;p=nageru diff --git a/main.cpp b/main.cpp index b81471d..1d29735 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -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); } });