3 #include <common/forward.h>
\r
4 #include <common/spl/memory.h>
\r
6 #include <core/mixer/image/blend_modes.h>
\r
7 #include <core/mixer/image/image_mixer.h>
\r
9 #include <core/frame/frame_visitor.h>
\r
11 FORWARD1(boost, template<typename> class shared_future);
\r
12 FORWARD1(boost, template<typename> class iterator_range);
\r
13 FORWARD2(caspar, core, struct write_frame);
\r
14 FORWARD2(caspar, core, struct pixel_format_desc);
\r
15 FORWARD2(caspar, core, struct video_format_desc);
\r
16 FORWARD2(caspar, core, struct data_Frame);
\r
17 FORWARD2(caspar, core, struct frame_transform);
\r
19 namespace caspar { namespace accelerator { namespace cpu {
\r
21 class image_mixer sealed : public core::image_mixer
\r
26 virtual void push(core::frame_transform& frame);
\r
27 virtual void visit(core::data_frame& frame);
\r
30 void begin_layer(core::blend_mode blend_mode);
\r
33 // NOTE: Content of return future is only valid while future is valid.
\r
34 virtual ::boost::shared_future<::boost::iterator_range<const uint8_t*>> operator()(const core::video_format_desc& format_desc) override;
\r
36 virtual spl::shared_ptr<core::write_frame> create_frame(const void* tag, const core::pixel_format_desc& desc) override;
\r
39 spl::shared_ptr<impl> impl_;
\r