]> git.sesse.net Git - casparcg/blobdiff - core/mixer/mixer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / core / mixer / mixer.cpp
index 804ba41e5e1bfc9a2bc62e0ed403fbff3f17c3c2..0f0e1ad56c9e7ee8343ee8fcd54a5e066f949919 100644 (file)
@@ -104,7 +104,7 @@ public:
        implementation(video_channel_context& video_channel) \r
                : channel_(video_channel)\r
                , audio_mixer_(channel_.get_format_desc())\r
-               , image_mixer_(channel_)\r
+               , image_mixer_(channel_.ogl(), channel_.get_format_desc())\r
                , buffer_size_(env::properties().get("configuration.producers.buffer-depth", 1))\r
        {       \r
                CASPAR_LOG(info) << print() << L" Successfully initialized . Buffer-depth: " << buffer_size_;   \r
@@ -126,9 +126,7 @@ public:
                                {                               \r
                                        auto frame2 = make_safe<core::basic_frame>(frame.second);\r
                                        frame2->get_frame_transform() = transforms_[frame.first].fetch_and_tick(1);\r
-                                               \r
-                                       if(frame1->get_frame_transform() != frame2->get_frame_transform())\r
-                                               frame1 = core::basic_frame::interlace(frame1, frame2, channel_.get_format_desc().field_mode);\r
+                                       frame1 = core::basic_frame::interlace(frame1, frame2, channel_.get_format_desc().field_mode);\r
                                }\r
                                                                        \r
                                frame1->accept(audio_mixer_);                                   \r
@@ -169,7 +167,7 @@ public:
                        auto src = transforms_[index].fetch();\r
                        auto dst = transform;\r
                        transforms_[index] = tweened_transform<frame_transform>(src, dst, mix_duration, tween);\r
-               });\r
+               }, high_priority);\r
        }\r
                                \r
        void apply_transform(int index, const std::function<frame_transform(frame_transform)>& transform, unsigned int mix_duration, const std::wstring& tween)\r
@@ -179,7 +177,7 @@ public:
                        auto src = transforms_[index].fetch();\r
                        auto dst = transform(src);\r
                        transforms_[index] = tweened_transform<frame_transform>(src, dst, mix_duration, tween);\r
-               });\r
+               }, high_priority);\r
        }\r
 \r
        void clear_transforms()\r
@@ -188,12 +186,15 @@ public:
                {\r
                        transforms_.clear();\r
                        blend_modes_.clear();\r
-               });\r
+               }, high_priority);\r
        }\r
                \r
        void set_blend_mode(int index, blend_mode::type value)\r
        {\r
-               blend_modes_[index] = value;\r
+               channel_.execution().invoke([&]\r
+               {\r
+                       blend_modes_[index] = value;\r
+               }, high_priority);\r
        }\r
 \r
        std::wstring print() const\r