3 #include <common/forward.h>
\r
4 #include <common/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.h>
\r
10 #include <core/frame/frame_visitor.h>
\r
11 #include <core/video_format.h>
\r
13 FORWARD1(boost, template<typename> class shared_future);
\r
14 FORWARD1(boost, template<typename> class iterator_range);
\r
15 FORWARD2(caspar, core, class frame);
\r
16 FORWARD2(caspar, core, struct pixel_format_desc);
\r
17 FORWARD2(caspar, core, struct video_format_desc);
\r
18 FORWARD2(caspar, core, class mutable_frame);
\r
19 FORWARD2(caspar, core, struct frame_transform);
\r
21 namespace caspar { namespace accelerator { namespace cpu {
\r
23 typedef std::vector<uint8_t, tbb::cache_aligned_allocator<uint8_t>> buffer;
\r
25 class image_mixer sealed : public core::image_mixer
\r
38 virtual void begin_layer(core::blend_mode blend_mode);
\r
39 virtual void end_layer();
\r
41 virtual void push(const core::frame_transform& frame);
\r
42 virtual void visit(const core::const_frame& frame);
\r
45 virtual boost::unique_future<array<const std::uint8_t>> operator()(const core::video_format_desc& format_desc) override;
\r
47 virtual core::mutable_frame create_frame(const void* tag, const core::pixel_format_desc& desc, double frame_rate, core::field_mode field_mode) override;
\r
53 spl::unique_ptr<impl> impl_;
\r