safesight-edge/src/main.cpp

56 lines
1.4 KiB
C++

#include <iostream>
#include <string>
#include <string_view>
#include "media_server_app.h"
#include "version.h"
namespace {
void PrintUsage() {
std::cout << "Usage: media-server [--config <path>] [--version]\n";
}
void PrintVersion() {
std::cout << "RK3588 Media Server v" << rk3588::ProjectVersion()
<< " (git " << rk3588::GitSha() << ")\n";
}
} // namespace
int main(int argc, char** argv) {
// Force line buffering for real-time log output
setvbuf(stdout, nullptr, _IOLBF, 0);
setvbuf(stderr, nullptr, _IOLBF, 0);
setenv("PYTHONUNBUFFERED", "1", 1);
setenv("STL_BUFFER_MODE", "line", 1);
std::string config_path = "configs/sample_cam1.json";
bool show_version = false;
for (int i = 1; i < argc; ++i) {
std::string_view arg{argv[i]};
if (arg == "--version") {
show_version = true;
} else if ((arg == "--config" || arg == "-c") && i + 1 < argc) {
config_path = argv[++i];
} else if (arg == "--help" || arg == "-h") {
PrintUsage();
return 0;
} else {
std::cerr << "Unknown argument: " << arg << "\n";
PrintUsage();
return 1;
}
}
if (show_version) {
PrintVersion();
return 0;
}
PrintVersion();
rk3588::MediaServerApp app(config_path);
return app.Start();
}