]> git.sesse.net Git - casparcg/blobdiff - accelerator/accelerator.cpp
Protect from channel_layout not being set in AVFrame
[casparcg] / accelerator / accelerator.cpp
index a632315d41493048cbf20ad4093f3ffed20af0f2..315ad97a345a4d5c8d36ed4c24859dbdf209761f 100644 (file)
@@ -6,11 +6,12 @@
 #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 {
@@ -26,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
                {
@@ -40,7 +41,8 @@ struct accelerator::impl
                                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)));
+                                               env::properties().get(L"configuration.mixer.straight-alpha", false),
+                                               channel_id));
                        }
                }
                catch(...)
@@ -49,7 +51,7 @@ struct accelerator::impl
                                CASPAR_LOG_CURRENT_EXCEPTION();
                }
 #ifdef _MSC_VER
-               return std::unique_ptr<core::image_mixer>(new cpu::image_mixer());
+               return std::unique_ptr<core::image_mixer>(new cpu::image_mixer(channel_id));
 #else
                CASPAR_THROW_EXCEPTION(not_supported());
 #endif
@@ -65,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_;
 }
 
 }}