]> git.sesse.net Git - casparcg/blobdiff - modules/ogl/consumer/ogl_consumer.cpp
2.0. Updated namespaces.
[casparcg] / modules / ogl / consumer / ogl_consumer.cpp
index 98346a7d7955ab68c2ace421f57ac7d81e2038ad..9550a5a1e81f99e783f7f444ee066021b83a3a7c 100644 (file)
@@ -66,7 +66,7 @@ extern "C"
 #pragma warning (pop)\r
 #endif\r
 \r
-namespace caspar {\r
+namespace caspar { namespace ogl {\r
                \r
 enum stretch\r
 {\r
@@ -81,12 +81,14 @@ struct configuration
        size_t          screen_index;\r
        stretch         stretch;\r
        bool            windowed;\r
+       bool            auto_deinterlace;\r
        bool            key_only;\r
 \r
        configuration()\r
                : screen_index(0)\r
                , stretch(fill)\r
                , windowed(true)\r
+               , auto_deinterlace(true)\r
                , key_only(false)\r
        {\r
        }\r
@@ -121,7 +123,7 @@ struct ogl_consumer : boost::noncopyable
        tbb::atomic<bool>               is_running_;\r
 \r
        \r
-       filter                                  filter_;\r
+       ffmpeg::filter                  filter_;\r
 public:\r
        ogl_consumer(const configuration& config, const core::video_format_desc& format_desc) \r
                : config_(config)\r
@@ -134,7 +136,7 @@ public:
                , square_height_(format_desc.square_height)\r
                , graph_(diagnostics::create_graph(narrow(print())))\r
                , input_buffer_(core::consumer_buffer_depth()-1)\r
-               , filter_(format_desc.field_mode == core::field_mode::progressive ? L"" : L"YADIF=0:-1", boost::assign::list_of(PIX_FMT_BGRA))\r
+               , filter_(format_desc.field_mode == core::field_mode::progressive || !config.auto_deinterlace ? L"" : L"YADIF=0:-1", boost::assign::list_of(PIX_FMT_BGRA))\r
        {               \r
                frame_buffer_.set_capacity(2);\r
 \r
@@ -441,16 +443,7 @@ public:
        \r
        virtual bool send(const safe_ptr<core::read_frame>& frame)\r
        {\r
-               try\r
-               {\r
-                       consumer_->send(frame);\r
-               }\r
-               catch(...)\r
-               {\r
-                       CASPAR_LOG_CURRENT_EXCEPTION()\r
-                       return false;\r
-               }\r
-\r
+               consumer_->send(frame);\r
                return true;\r
        }\r
        \r
@@ -470,7 +463,7 @@ public:
        }\r
 };     \r
 \r
-safe_ptr<core::frame_consumer> create_ogl_consumer(const std::vector<std::wstring>& params)\r
+safe_ptr<core::frame_consumer> create_consumer(const std::vector<std::wstring>& params)\r
 {\r
        if(params.size() < 1 || params[0] != L"SCREEN")\r
                return core::frame_consumer::empty();\r
@@ -488,12 +481,13 @@ safe_ptr<core::frame_consumer> create_ogl_consumer(const std::vector<std::wstrin
        return make_safe<ogl_consumer_proxy>(config);\r
 }\r
 \r
-safe_ptr<core::frame_consumer> create_ogl_consumer(const boost::property_tree::ptree& ptree) \r
+safe_ptr<core::frame_consumer> create_consumer(const boost::property_tree::ptree& ptree) \r
 {\r
        configuration config;\r
-       config.screen_index = ptree.get("device",   config.screen_index);\r
-       config.windowed         = ptree.get("windowed", config.windowed);\r
-       config.key_only         = ptree.get("key-only", config.key_only );\r
+       config.screen_index             = ptree.get("device",   config.screen_index);\r
+       config.windowed                 = ptree.get("windowed", config.windowed);\r
+       config.key_only                 = ptree.get("key-only", config.key_only);\r
+       config.auto_deinterlace = ptree.get("auto-deinterlace", config.auto_deinterlace);\r
        \r
        auto stretch_str = ptree.get("stretch", "default");\r
        if(stretch_str == "uniform")\r
@@ -504,4 +498,4 @@ safe_ptr<core::frame_consumer> create_ogl_consumer(const boost::property_tree::p
        return make_safe<ogl_consumer_proxy>(config);\r
 }\r
 \r
-}
\ No newline at end of file
+}}
\ No newline at end of file