std::exception_ptr exception_; \r
\r
public:\r
- decklink_producer(const core::video_format_desc& format_desc, size_t device_index, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter)\r
+ decklink_producer(const core::video_format_desc& format_desc, size_t device_index, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter, std::size_t buffer_depth)\r
: decklink_(get_device(device_index))\r
, input_(decklink_)\r
, attributes_(decklink_)\r
, frame_factory_(frame_factory)\r
{ \r
hints_ = 0;\r
- frame_buffer_.set_capacity(2);\r
+ frame_buffer_.set_capacity(buffer_depth);\r
\r
graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f)); \r
graph_->set_color("late-frame", diagnostics::color(0.6f, 0.3f, 0.3f));\r
const uint32_t length_;\r
public:\r
\r
- explicit decklink_producer_proxy(const safe_ptr<core::frame_factory>& frame_factory, const core::video_format_desc& format_desc, size_t device_index, const std::wstring& filter_str, uint32_t length)\r
+ explicit decklink_producer_proxy(const safe_ptr<core::frame_factory>& frame_factory, const core::video_format_desc& format_desc, size_t device_index, const std::wstring& filter_str, uint32_t length, std::size_t buffer_depth)\r
: context_(L"decklink_producer[" + boost::lexical_cast<std::wstring>(device_index) + L"]")\r
, last_frame_(core::basic_frame::empty())\r
, length_(length)\r
{\r
- context_.reset([&]{return new decklink_producer(format_desc, device_index, frame_factory, filter_str);}); \r
+ context_.reset([&]{return new decklink_producer(format_desc, device_index, frame_factory, filter_str, buffer_depth);}); \r
}\r
\r
// frame_producer\r
device_index = boost::lexical_cast<int>(params.at(1));\r
auto filter_str = get_param(L"FILTER", params); \r
auto length = get_param(L"LENGTH", params, std::numeric_limits<uint32_t>::max()); \r
+ auto buffer_depth = get_param(L"BUFFER", params, 2); \r
auto format_desc = core::video_format_desc::get(get_param(L"FORMAT", params, L"INVALID"));\r
\r
boost::replace_all(filter_str, L"DEINTERLACE", L"YADIF=0:-1");\r
\r
return create_producer_print_proxy(\r
create_producer_destroy_proxy(\r
- make_safe<decklink_producer_proxy>(frame_factory, format_desc, device_index, filter_str, length)));\r
+ make_safe<decklink_producer_proxy>(frame_factory, format_desc, device_index, filter_str, length, buffer_depth)));\r
}\r
\r
}}
\ No newline at end of file