leon 2 weeks ago
parent
commit
86fa3d2ccf

+ 3 - 1
src/common/meta.hpp

@@ -23,6 +23,8 @@ public:
         create_time     = std::chrono::system_clock::now();
     }
 
+    virtual ~BaseData() {}
+
 public:
     DataType                              data_type;    // 数据类型
     std::chrono::system_clock::time_point create_time;  // 数据创建时间
@@ -91,7 +93,7 @@ public:
     int skip_frame = 1; // 跳过的帧数
 
 
-}
+};
 
 
 }

+ 5 - 5
src/main.cpp

@@ -9,7 +9,7 @@
 
 #include "plog/Log.h"
 #include "plog/Initializers/RollingFileInitializer.h"
-#include "graph/graph.hpp"
+#include "pipeline/pipeline.hpp"
 
 
 
@@ -21,16 +21,16 @@ int main(int argc , char* argv[])
         return 1;
     }
     const char* json_path = argv[1];
-    Graph::Graph graph_manager;
-    graph_manager.create_from_json(std::string(json_path));
+    Pipe::PipelineManager pipeline_manager;
+    pipeline_manager.create_from_json(std::string(json_path));
 
-    for (const auto& p : graph_manager.getPipelines()) {
+    for (const auto& p : pipeline_manager.getPipelines()) {
         std::cout << "Pipeline ID: " << p.pipeline_id << ", Description: " << p.description << ", Nodes: " << p.nodes.size() << std::endl;
         for(const auto& node : p.nodes) {
             std::cout << "  - Node Name: " << node->get_name() << std::endl;
         }
     }
-    graph_manager.start_pipelines();
+    pipeline_manager.start_pipelines();
     getchar();
     return 0;
 }

+ 6 - 5
src/nodes/analyze/analyzeNode.cpp

@@ -7,12 +7,13 @@ namespace GNode
 {
 
 
-void AnalyzeNode::handle_data(std::shared_ptr<meta::MetaData>& meta_data)
+void AnalyzeNode::handle_data(std::shared_ptr<meta::BaseData>& meta_data)
 {
-    int width = meta_data->image.cols;
-    int height = meta_data->image.rows;
-    auto res = person_cross_line(meta_data->track_boxes, cv::Point(0, 0), cv::Point(width, height));
-    meta_data->result = res;
+    auto frame_data = std::dynamic_pointer_cast<meta::FrameData>(meta_data);
+    int width = frame_data->image.cols;
+    int height = frame_data->image.rows;
+    auto res = person_cross_line(frame_data->track_boxes, cv::Point(0, 0), cv::Point(width, height));
+    frame_data->result = res;
 }
 
 

+ 1 - 1
src/nodes/analyze/analyzeNode.hpp

@@ -14,7 +14,7 @@ public:
     AnalyzeNode(const std::string& name) : BaseNode(name, NODE_TYPE::MID_NODE) { }
     virtual ~AnalyzeNode() { stop(); };
 
-    void handle_data(std::shared_ptr<meta::MetaData>& meta_data) override;
+    void handle_data(std::shared_ptr<meta::BaseData>& meta_data) override;
 
 private:
     std::vector<std::string> task_names_;

+ 1 - 1
src/nodes/base/base.cpp

@@ -49,7 +49,7 @@ void BaseNode::work()
         bool has_data = false;
         for (auto& input_buffer : input_buffers_)
         {
-            std::shared_ptr<meta::MetaData> meta_data;
+            std::shared_ptr<meta::BaseData> meta_data;
             if (!input_buffer.second->try_pop(meta_data))
             {
                 continue;

+ 9 - 8
src/nodes/httpPush/httpPush.cpp

@@ -26,25 +26,26 @@ static cv::Mat get_color_depth(cv::Mat inverse_depth)
     return color_depth_bgr;
 }
 
-void HttpPushNode::handle_data(std::shared_ptr<meta::MetaData>& meta_data)
+void HttpPushNode::handle_data(std::shared_ptr<meta::BaseData>& meta_data)
 {
-    auto result = meta_data->result;
+    auto frame_data = std::dynamic_pointer_cast<meta::FrameData>(meta_data);
+    auto result = frame_data->result;
 
     if (result.size() == 0)
     {
         return;
     }
 
-    cv::Mat image = meta_data->draw_image;
+    cv::Mat image = frame_data->draw_image;
 
-    std::string image_name = "result/" + meta_data->from + "_" + getTimeString() + ".jpg";
+    std::string image_name = "result/" + frame_data->from + "_" + getTimeString() + ".jpg";
     cv::imwrite(image_name, image);
 
-    if (!meta_data->depth.empty())
+    if (!frame_data->depth.empty())
     {
-        std::string depth_name = "result/" + meta_data->from + "_depth_" + getTimeString() + ".jpg";
-        cv::imwrite(depth_name, get_color_depth(meta_data->depth));
+        std::string depth_name = "result/" + frame_data->from + "_depth_" + getTimeString() + ".jpg";
+        cv::imwrite(depth_name, get_color_depth(frame_data->depth));
     }
-};
+}
 
 }   // namespace Node

+ 1 - 1
src/nodes/httpPush/httpPush.hpp

@@ -30,7 +30,7 @@ public:
         thread_pool_ = std::make_shared<ThreadPool>(num);
     }
 
-    void handle_data(std::shared_ptr<meta::MetaData>& meta_data) override;
+    void handle_data(std::shared_ptr<meta::BaseData>& meta_data) override;
 
 private:
     std::string ip_;

+ 1 - 1
src/nodes/infer/inferNode.hpp

@@ -25,7 +25,7 @@ public:
         device_id_ = device_id;
     }
 
-    void handle_data(std::shared_ptr<meta::baseData>& meta_data) override;
+    void handle_data(std::shared_ptr<meta::BaseData>& meta_data) override;
 
 private:
     std::shared_ptr<Infer> model_ = nullptr;

+ 1 - 1
src/nodes/record/recordNode.hpp

@@ -31,7 +31,7 @@ public:
         }
     }
 
-    void handle_data(std::shared_ptr<meta::baseData>& meta_data) override;
+    void handle_data(std::shared_ptr<meta::BaseData>& meta_data) override;
 private:
     int fps_ = 25;
     std::string gst_pipeline_;

+ 5 - 5
src/nodes/stream/streamNode.cpp

@@ -350,11 +350,11 @@ void StreamNode::process_stream_gpu()
             cv::Mat frame(decoder_->get_height(), decoder_->get_width(), CV_8UC3, frame_data);
 
             // Create metadata and copy the frame data
-            auto frame_data = std::make_shared<meta::FrameData>();
-            frame_data->image = frame.clone(); // CLONE is crucial here!
-            frame_data->from = name_;
-            frame_data->fps = fps_; // Use demuxer FPS for consistency
-            send_output_data(frame_data);
+            auto frame_meta_data = std::make_shared<meta::FrameData>();
+            frame_meta_data->image = frame.clone(); // CLONE is crucial here!
+            frame_meta_data->from = name_;
+            frame_meta_data->fps = fps_; // Use demuxer FPS for consistency
+            send_output_data(frame_meta_data);
         }
         if (status_ == StreamStatus::ERROR) 
         {