Add reader
[trackerpp.git] / src / Engine.cpp
index 7b00ce6..e51dd65 100644 (file)
@@ -1,6 +1,7 @@
+#include <mutex>
+#include <thread>
 #include "Engine.h"
 #include "Logger.h"
-#include <mutex>
 
 using namespace suanzi;
 
@@ -11,6 +12,8 @@ static Engine* g_instance = nullptr;
 
 Engine::Engine()
 {
+    detector = new Detector();
+    tracker = new Tracker();
 }
 
 Engine* Engine::create()
@@ -31,21 +34,35 @@ void Engine::destroy()
 }
 
 Engine::~Engine()
-{
+{    
+    delete detector;
+    delete tracker;
 }
 
 void Engine::setVideoSrc(const std::string& url)
 {
     videoSrc = url;
+    reader = VideoReaderFactory::createVideoReader(VideoSrcType::URL,"rtsp://192.168.1.75:554/stream1");
+}
+
+void Engine::run()
+{
+    LOG_DEBUG(TAG, "run");
+    cv::Mat frame;
+    while (reader->read(frame)){
+        detector->detect(frame);
+    }
 }
 
 void Engine::start()
 {
     LOG_DEBUG(TAG, "start");
-    Person p;
-    for(auto& o: observer_list){
-        o->onPersonIn(p);
+    if (!reader){
+        LOG_ERROR(TAG, "reader is null. exit");
+        return;
     }
+    std::thread t(&Engine::run, this);
+    t.join();
 }
 
 void Engine::addObserver(EngineObserver *observer)