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
10 #include <core/video_format.h>
\r
12 FORWARD1(boost, template<typename> class shared_future);
\r
13 FORWARD1(boost, template<typename> class iterator_range);
\r
14 FORWARD2(caspar, core, class data_frame);
\r
15 FORWARD2(caspar, core, struct pixel_format_desc);
\r
16 FORWARD2(caspar, core, struct video_format_desc);
\r
17 FORWARD2(caspar, core, class data_frame);
\r
18 FORWARD2(caspar, core, struct frame_transform);
\r
20 namespace caspar { namespace accelerator { namespace cpu {
\r
22 class image_mixer sealed : public core::image_mixer
\r
27 virtual void push(const core::frame_transform& frame);
\r
28 virtual void visit(const core::data_frame& frame);
\r
31 void begin_layer(core::blend_mode blend_mode);
\r
34 // NOTE: Content of return future is only valid while future is valid.
\r
35 virtual ::boost::shared_future<::boost::iterator_range<const uint8_t*>> operator()(const core::video_format_desc& format_desc) override;
\r
37 virtual spl::shared_ptr<core::data_frame> create_frame(const void* tag, const core::pixel_format_desc& desc, double frame_rate, core::field_mode field_mode) override;
\r
40 spl::shared_ptr<impl> impl_;
\r