]> git.sesse.net Git - casparcg/blobdiff - core/frame/gpu_frame.h
2.0.0.2:
[casparcg] / core / frame / gpu_frame.h
index fffe00c894b1e23e113c934c4099d928fb8179a9..6eb42474b5a549292577be55668bbfdff025f3b1 100644 (file)
@@ -2,7 +2,10 @@
 \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
@@ -12,6 +15,8 @@
 \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
@@ -28,12 +33,11 @@ class gpu_frame : boost::noncopyable
 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
@@ -47,6 +51,8 @@ public:
        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
@@ -55,6 +61,7 @@ public:
                \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
@@ -62,7 +69,7 @@ protected:
        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