#include #include #include #include #include "pipeline/common/pipeline.hpp" #include "pipeline/common/config_parser.hpp" using namespace pipeline; // 全局变量用于信号处理 static std::atomic g_running{true}; // 信号处理函数 void signalHandler(int signum) { std::cout << "\nReceived signal " << signum << std::endl; g_running = false; } int main(int argc, char* argv[]) { if (argc != 2) { std::cerr << "Usage: " << argv[0] << " " << std::endl; return 1; } // 注册信号处理 signal(SIGINT, signalHandler); signal(SIGTERM, signalHandler); try { // 创建并初始化Pipeline Pipeline pipeline(argv[1]); if (!pipeline.init()) { std::cerr << "Failed to initialize pipeline" << std::endl; return 1; } // 启动Pipeline if (!pipeline.start()) { std::cerr << "Failed to start pipeline" << std::endl; return 1; } std::cout << "Pipeline started successfully" << std::endl; // 主循环:监控性能指标 while (g_running) { PerformanceMetrics metrics; if (pipeline.getMetrics(metrics)) { std::cout << "\rFPS: " << metrics.fps << " | Inference time: " << metrics.inference_time_ms << "ms" << " | GPU usage: " << metrics.gpu_usage_percent << "%" << std::flush; } std::this_thread::sleep_for(std::chrono::seconds(1)); } std::cout << "\nStopping pipeline..." << std::endl; // 停止Pipeline pipeline.stop(); pipeline.wait(); std::cout << "Pipeline stopped successfully" << std::endl; return 0; } catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; return 1; } }