5 #include "draw_frame.h"
\r
7 #include "../gpu/host_buffer.h"
\r
9 #include "../../video_format.h"
\r
11 #include <boost/noncopyable.hpp>
\r
12 #include <boost/range/iterator_range.hpp>
\r
17 namespace caspar { namespace core {
\r
19 struct pixel_format_desc;
\r
21 class write_frame : public draw_frame, boost::noncopyable
\r
24 explicit write_frame(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>> buffers);
\r
25 write_frame(write_frame&& other);
\r
26 write_frame& operator=(write_frame&& other);
\r
28 void swap(write_frame& other);
\r
30 boost::iterator_range<unsigned char*> image_data(size_t index = 0);
\r
31 std::vector<short>& audio_data();
\r
33 virtual void process_image(image_mixer& mixer);
\r
34 virtual void process_audio(audio_mixer& mixer);
\r
37 struct implementation;
\r
38 std::shared_ptr<implementation> impl_;
\r
40 typedef std::shared_ptr<write_frame> write_frame_impl_ptr;
\r