]> git.sesse.net Git - casparcg/blobdiff - modules/decklink/producer/decklink_producer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / modules / decklink / producer / decklink_producer.cpp
index a67c66ac517540a903502d5766f614b1928e5f2d..89aed0f030f37274b4a6912221c1a1f284fc2f8a 100644 (file)
@@ -269,15 +269,15 @@ public:
        \r
 class decklink_producer_proxy : public core::frame_producer\r
 {              \r
-       spl::shared_ptr<core::draw_frame>                       last_frame_;\r
        std::unique_ptr<decklink_producer>      producer_;\r
        const uint32_t                                          length_;\r
+       spl::shared_ptr<core::draw_frame>       last_frame_;\r
        executor                                                        executor_;\r
 public:\r
        explicit decklink_producer_proxy(const spl::shared_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
                : executor_(L"decklink_producer[" + boost::lexical_cast<std::wstring>(device_index) + L"]")\r
-               , last_frame_(core::draw_frame::empty())\r
                , length_(length)\r
+               , last_frame_(core::draw_frame::empty())\r
        {\r
                executor_.invoke([=]\r
                {\r
@@ -300,16 +300,18 @@ public:
        virtual spl::shared_ptr<core::draw_frame> receive(int flags) override\r
        {\r
                auto frame = producer_->get_frame(flags);\r
+\r
                if(frame != core::draw_frame::late())\r
                        last_frame_ = frame;\r
+\r
                return frame;\r
        }\r
 \r
        virtual spl::shared_ptr<core::draw_frame> last_frame() const override\r
        {\r
-               return last_frame_;\r
+               return core::draw_frame::still(last_frame_);\r
        }\r
-       \r
+               \r
        virtual uint32_t nb_frames() const override\r
        {\r
                return length_;\r
@@ -322,13 +324,13 @@ public:
        \r
        virtual std::wstring name() const override\r
        {\r
-               return L"decklinke";\r
+               return L"decklink";\r
        }\r
 \r
        virtual boost::property_tree::wptree info() const override\r
        {\r
                boost::property_tree::wptree info;\r
-               info.add(L"type", L"decklink-producer");\r
+               info.add(L"type", L"decklink");\r
                return info;\r
        }\r
 };\r
@@ -350,7 +352,7 @@ spl::shared_ptr<core::frame_producer> create_producer(const spl::shared_ptr<core
        boost::replace_all(filter_str, L"DEINTERLACE_BOB", L"YADIF=1:-1");\r
        \r
        if(format_desc.format == core::video_format::invalid)\r
-               format_desc = frame_factory->get_video_format_desc();\r
+               format_desc = frame_factory->video_format_desc();\r
                        \r
        return core::wrap_producer(spl::make_shared<decklink_producer_proxy>(frame_factory, format_desc, device_index, filter_str, length));\r
 }\r