3 #include "frame_format.h"
\r
7 #include <boost/noncopyable.hpp>
\r
11 #include <boost/tuple/tuple.hpp>
\r
13 namespace caspar { namespace core {
\r
17 rectangle(double left, double top, double right, double bottom)
\r
18 : left(left), top(top), right(right), bottom(bottom)
\r
26 class gpu_frame : boost::noncopyable
\r
29 virtual ~gpu_frame(){}
\r
31 virtual unsigned char* data();
\r
32 virtual size_t size() const;
\r
33 virtual size_t width() const;
\r
34 virtual size_t height() const;
\r
36 virtual const std::vector<short>& audio_data() const;
\r
37 virtual std::vector<short>& audio_data();
\r
39 virtual double alpha() const;
\r
40 virtual void alpha(double value);
\r
42 virtual double x() const;
\r
43 virtual double y() const;
\r
44 virtual void translate(double x, double y);
\r
45 virtual void texcoords(const rectangle& texcoords);
\r
47 virtual void mode(video_mode mode);
\r
48 virtual video_mode mode() const;
\r
50 static std::shared_ptr<gpu_frame> null()
\r
52 static auto my_null_frame = std::shared_ptr<gpu_frame>(new gpu_frame(0,0));
\r
53 return my_null_frame;
\r
57 gpu_frame(size_t width, size_t height);
\r
59 friend class gpu_frame_processor;
\r
61 virtual void begin_write();
\r
62 virtual void end_write();
\r
63 virtual void begin_read();
\r
64 virtual void end_read();
\r
65 virtual void draw();
\r
66 virtual void reset();
\r
69 struct implementation;
\r
70 std::shared_ptr<implementation> impl_;
\r
72 typedef std::shared_ptr<gpu_frame> gpu_frame_ptr;
\r