Add shared ptr
[trackerpp.git] / src / VideoReader.cpp
index 22036cb..17d5518 100644 (file)
@@ -6,23 +6,28 @@ using namespace cv;
 
 const static std::string TAG = "VideoReader";
 
-VideoReader* VideoReaderFactory::createVideoReader(VideoSrcType type, const std::string& url)
+VideoReaderPtr VideoReaderFactory::createVideoReader(VideoSrcType type, const std::string& url)
 {
-    VideoReader* v = nullptr;
     switch(type){
         case VideoSrcType::URL:
-            v = new UrlReader(type, url);
-            break;
+            {
+                VideoReaderPtr v (new UrlReader(type, url));
+                return v;
+            }
         case VideoSrcType::File:
-            v = new FileReader(type, url);
-            break;
+            {
+                VideoReaderPtr v (new FileReader(type, url));
+                return v;
+            }
         case VideoSrcType::USB:
-            v = new UsbReader(type, url);
-            break;
+            {
+                VideoReaderPtr v (new UsbReader(type, url));
+                return v;
+            }
         default:
             break;
     }
-    return v;
+    return nullptr;
 }
 
 VideoReader::~VideoReader()
@@ -39,10 +44,12 @@ UrlReader::UrlReader(VideoSrcType type, const std::string& url) : VideoReader(ty
         LOG_ERROR(TAG, "open video " + url);
         throw std::runtime_error("Cannot open video url " + url);
     }
+    LOG_DEBUG(TAG, "reader video sourc succeed. ");
 }
 
 UrlReader::~UrlReader()
 {
+    vcap.release();
 }
 
 bool UrlReader::read(cv::Mat& mat)