\r
#include "frame_format.h"\r
\r
+#include "gpu_frame_transform.h"\r
+\r
#include <memory>\r
+#include <array>\r
\r
#include <boost/noncopyable.hpp>\r
\r
\r
namespace caspar { namespace core {\r
\r
+typedef std::array<std::pair<size_t, size_t>, 4> planar_frame_dimension;\r
+\r
struct rectangle\r
{\r
rectangle(double left, double top, double right, double bottom)\r
public:\r
virtual ~gpu_frame(){}\r
\r
- virtual unsigned char* data();\r
- virtual size_t size() const;\r
- virtual size_t width() const;\r
- virtual size_t height() const;\r
+ virtual unsigned char* data(size_t index = 0);\r
+ virtual size_t size(size_t index = 0) const;\r
+ virtual size_t width(size_t index = 0) const;\r
+ virtual size_t height(size_t index = 0) const;\r
\r
- virtual const std::vector<short>& audio_data() const; \r
virtual std::vector<short>& audio_data();\r
\r
virtual double alpha() const;\r
virtual void mode(video_mode mode);\r
virtual video_mode mode() const;\r
\r
+ virtual void set_pixel_format(pixel_format format);\r
+\r
static std::shared_ptr<gpu_frame> null()\r
{\r
static auto my_null_frame = std::shared_ptr<gpu_frame>(new gpu_frame(0,0));\r
\r
protected:\r
gpu_frame(size_t width, size_t height);\r
+ gpu_frame(const planar_frame_dimension& data_size);\r
\r
friend class gpu_frame_processor;\r
\r
virtual void end_write();\r
virtual void begin_read();\r
virtual void end_read();\r
- virtual void draw();\r
+ virtual void draw(const gpu_frame_transform_ptr& transform);\r
virtual void reset();\r
\r
private:\r