]> git.sesse.net Git - casparcg/commitdiff
decklink_producer: Added BUFFER param for controlling decklink input buffer depth.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 16 May 2012 07:16:46 +0000 (07:16 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 16 May 2012 07:16:46 +0000 (07:16 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@3060 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/decklink/producer/decklink_producer.cpp

index 30f6cce52d570da32fd3ba024a58491f360b2936..bde7795f4aee17dd2843a5b6bbd2569c8b8fcdc0 100644 (file)
@@ -104,7 +104,7 @@ class decklink_producer : boost::noncopyable, public IDeckLinkInputCallback
        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
@@ -118,7 +118,7 @@ public:
                , 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
@@ -281,12 +281,12 @@ class decklink_producer_proxy : public core::frame_producer
        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
@@ -332,6 +332,7 @@ safe_ptr<core::frame_producer> create_producer(const safe_ptr<core::frame_factor
                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
@@ -342,7 +343,7 @@ safe_ptr<core::frame_producer> create_producer(const safe_ptr<core::frame_factor
                        \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