]> git.sesse.net Git - casparcg/blobdiff - accelerator/accelerator.cpp
Merge pull request #450 from SuperFlyTV/feature/documentation
[casparcg] / accelerator / accelerator.cpp
index b080a3479875359a2705de5098d360e97fb176f9..315ad97a345a4d5c8d36ed4c24859dbdf209761f 100644 (file)
@@ -1,12 +1,17 @@
-#include "stdafx.h"
+#include "StdAfx.h"
 
 #include "accelerator.h"
 
+#ifdef _MSC_VER
 #include "cpu/image/image_mixer.h"
+#endif
 #include "ogl/image/image_mixer.h"
-
 #include "ogl/util/device.h"
 
+#include <common/env.h>
+
+#include <core/mixer/image/image_mixer.h>
+
 #include <tbb/mutex.h>
 
 namespace caspar { namespace accelerator {
@@ -22,7 +27,7 @@ struct accelerator::impl
        {
        }
 
-       std::unique_ptr<core::image_mixer> create_image_mixer()
+       std::unique_ptr<core::image_mixer> create_image_mixer(int channel_id)
        {
                try
                {
@@ -33,7 +38,11 @@ struct accelerator::impl
                                if(!ogl_device_)
                                        ogl_device_.reset(new ogl::device());
 
-                               return std::unique_ptr<core::image_mixer>(new ogl::image_mixer(spl::make_shared_ptr(ogl_device_)));
+                               return std::unique_ptr<core::image_mixer>(new ogl::image_mixer(
+                                               spl::make_shared_ptr(ogl_device_),
+                                               env::properties().get(L"configuration.mixer.blend-modes", false),
+                                               env::properties().get(L"configuration.mixer.straight-alpha", false),
+                                               channel_id));
                        }
                }
                catch(...)
@@ -41,8 +50,11 @@ struct accelerator::impl
                        if(path_ == L"gpu" || path_ == L"ogl")
                                CASPAR_LOG_CURRENT_EXCEPTION();
                }
-
-               return std::unique_ptr<core::image_mixer>(new cpu::image_mixer());
+#ifdef _MSC_VER
+               return std::unique_ptr<core::image_mixer>(new cpu::image_mixer(channel_id));
+#else
+               CASPAR_THROW_EXCEPTION(not_supported());
+#endif
        }
 };
 
@@ -55,9 +67,14 @@ accelerator::~accelerator()
 {
 }
 
-std::unique_ptr<core::image_mixer> accelerator::create_image_mixer()
+std::unique_ptr<core::image_mixer> accelerator::create_image_mixer(int channel_id)
+{
+       return impl_->create_image_mixer(channel_id);
+}
+
+std::shared_ptr<ogl::device> accelerator::get_ogl_device() const
 {
-       return impl_->create_image_mixer();
+       return impl_->ogl_device_;
 }
 
-}}
\ No newline at end of file
+}}