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
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
});\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
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