]> git.sesse.net Git - casparcg/blobdiff - core/consumer/frame_consumer_device.cpp
2.0.0.2
[casparcg] / core / consumer / frame_consumer_device.cpp
index b7aec6dd5004c614967b5d370d0dc3665cc86308..248cd1835c48adbeeecab6aeae0b64c9f41d9610 100644 (file)
@@ -39,7 +39,7 @@ private:
 struct frame_consumer_device::implementation\r
 {\r
 public:\r
-       implementation(const frame_processor_device_ptr& frame_processor, const video_format_desc& format_desc, const std::vector<frame_consumer_ptr>& consumers) \r
+       implementation(const safe_ptr<frame_processor_device>& frame_processor, const video_format_desc& format_desc, const std::vector<safe_ptr<frame_consumer>>& consumers) \r
                : frame_processor_(frame_processor), consumers_(consumers), fmt_(format_desc)\r
        {               \r
                std::vector<size_t> depths;\r
@@ -56,13 +56,13 @@ public:
                        executor_.begin_invoke([=]{tick();});\r
        }\r
 \r
-       void process(const safe_ptr<read_frame>& frame)\r
+       void process(const safe_ptr<const read_frame>& frame)\r
        {               \r
                buffer_.push_back(frame);\r
 \r
                clock_sync clock;\r
                \r
-               boost::range::for_each(consumers_, [&](const frame_consumer_ptr& consumer)\r
+               boost::range::for_each(consumers_, [&](const safe_ptr<frame_consumer>& consumer)\r
                {\r
                        size_t offset = max_depth_ - consumer->buffer_depth();\r
                        if(offset < buffer_.size())\r
@@ -70,7 +70,7 @@ public:
                });\r
                        \r
                frame_consumer::sync_mode sync = frame_consumer::ready;\r
-               boost::range::for_each(consumers_, [&](const frame_consumer_ptr& consumer)\r
+               boost::range::for_each(consumers_, [&](const safe_ptr<frame_consumer>& consumer)\r
                {\r
                        try\r
                        {\r
@@ -99,15 +99,16 @@ public:
        executor executor_;     \r
 \r
        size_t max_depth_;\r
-       std::deque<safe_ptr<read_frame>> buffer_;               \r
+       std::deque<safe_ptr<const read_frame>> buffer_;         \r
 \r
-       std::vector<frame_consumer_ptr> consumers_;\r
+       std::vector<safe_ptr<frame_consumer>> consumers_;\r
        \r
-       frame_processor_device_ptr frame_processor_;\r
+       safe_ptr<frame_processor_device> frame_processor_;\r
 \r
        const video_format_desc& fmt_;\r
 };\r
 \r
-frame_consumer_device::frame_consumer_device(const frame_processor_device_ptr& frame_processor, const video_format_desc& format_desc, const std::vector<frame_consumer_ptr>& consumers)\r
+frame_consumer_device::frame_consumer_device(frame_consumer_device&& other) : impl_(std::move(other.impl_)){}\r
+frame_consumer_device::frame_consumer_device(const safe_ptr<frame_processor_device>& frame_processor, const video_format_desc& format_desc, const std::vector<safe_ptr<frame_consumer>>& consumers)\r
        : impl_(new implementation(frame_processor, format_desc, consumers)){}\r
 }}
\ No newline at end of file