virtual std::wstring print() const {return consumer_->print();}\r
virtual bool has_synchronization_clock() const {return consumer_->has_synchronization_clock();}\r
virtual const core::video_format_desc& get_video_format_desc() const {return consumer_->get_video_format_desc();}\r
+ virtual size_t buffer_depth() const {return consumer_->buffer_depth();}\r
};\r
\r
Concurrency::concurrent_vector<std::shared_ptr<consumer_factory_t>> g_factories;\r
virtual std::wstring print() const = 0;\r
virtual bool has_synchronization_clock() const {return true;}\r
virtual const core::video_format_desc& get_video_format_desc() const = 0; // nothrow\r
-\r
+ virtual size_t buffer_depth() const = 0;\r
static const safe_ptr<frame_consumer>& empty()\r
{\r
struct empty_frame_consumer : public frame_consumer\r
virtual std::wstring print() const {return L"empty";}\r
virtual bool has_synchronization_clock() const {return false;}\r
virtual const core::video_format_desc& get_video_format_desc() const{return format_desc;}; // nothrow\r
+ virtual size_t buffer_depth() const {return 0;}\r
};\r
static safe_ptr<frame_consumer> consumer = make_safe<empty_frame_consumer>();\r
return consumer;\r
return consumer_->get_video_format_desc();\r
}\r
\r
+ virtual size_t buffer_depth() const\r
+ {\r
+ return 0;\r
+ }\r
+\r
virtual std::wstring print() const\r
{\r
if(consumer_)\r
context_->send(frame);\r
return true;\r
}\r
+\r
+ virtual size_t buffer_depth() const\r
+ {\r
+ return config_.preroll_count();\r
+ }\r
\r
virtual std::wstring print() const\r
{\r
\r
return is_running_;\r
}\r
+ \r
+ virtual size_t buffer_depth() const\r
+ {\r
+ return 2;\r
+ }\r
\r
virtual std::wstring print() const\r
{\r
std::rotate(pbos_.begin(), pbos_.begin() + 1, pbos_.end());\r
}\r
\r
- void send(const safe_ptr<core::read_frame>& frame)\r
+ virtual void send(const safe_ptr<core::read_frame>& frame)\r
{\r
if(exception_.has_value())\r
std::rethrow_exception(exception_.value());\r
else\r
Concurrency::send(frame_buffer_, safe_ptr<core::read_frame>(frame.get(), [frame, ticket](core::read_frame*){}));\r
}\r
- \r
- std::wstring print() const\r
+ \r
+ virtual std::wstring print() const\r
{ \r
return L"ogl[" + boost::lexical_cast<std::wstring>(config_.screen_index) + L"|" + format_desc_.name + L"]";\r
}\r
{\r
return false;\r
}\r
+ \r
+ virtual size_t buffer_depth() const\r
+ {\r
+ return 1;\r
+ }\r
\r
virtual const core::video_format_desc& get_video_format_desc() const\r
{\r