X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=core%2Fmixer%2Fimage%2Fimage_kernel.h;h=9db54b321e1609ec704f83a6f492073087799952;hb=580d5b82595893c83f7bf715c94de20b70745ae4;hp=be756f477a5e2c1b488b86b806ba8d1cc08809c1;hpb=fe81590c2b874a44fe10fdd75a2352dbd1cd2fa5;p=casparcg diff --git a/core/mixer/image/image_kernel.h b/core/mixer/image/image_kernel.h index be756f477..9db54b321 100644 --- a/core/mixer/image/image_kernel.h +++ b/core/mixer/image/image_kernel.h @@ -19,22 +19,55 @@ */ #pragma once -#include +#include "blend_modes.h" + +#include #include -#include +#include + +#include -namespace caspar { namespace mixer { +namespace caspar { namespace core { -class image_kernel +class device_buffer; +class ogl_device; + +struct keyer +{ + enum type + { + linear = 0, + additive + }; +}; + +struct draw_params +{ + pixel_format_desc pix_desc; + std::vector> textures; + frame_transform transform; + blend_mode::type blend_mode; + keyer::type keyer; + std::shared_ptr background; + std::shared_ptr local_key; + std::shared_ptr layer_key; + + draw_params() + : blend_mode(blend_mode::normal) + , keyer(keyer::linear) + { + } +}; + +class image_kernel : boost::noncopyable { public: image_kernel(); - void draw(size_t width, size_t height, const core::pixel_format_desc& pix_desc, const core::image_transform& mode, bool has_seperate_key); - + void draw(ogl_device& ogl, draw_params&& params); private: struct implementation; - std::shared_ptr impl_; + safe_ptr impl_; }; }} \ No newline at end of file