]> git.sesse.net Git - casparcg/blob - core/frame/gpu_frame.h
2.0.0.2:
[casparcg] / core / frame / gpu_frame.h
1 #pragma once\r
2 \r
3 #include "frame_format.h"\r
4 \r
5 #include <memory>\r
6 \r
7 #include <Glee.h>\r
8 \r
9 namespace caspar {\r
10         \r
11 class gpu_frame\r
12 {\r
13 public:\r
14         gpu_frame(size_t width, size_t height);\r
15 \r
16         virtual void write_lock();\r
17         virtual bool write_unlock();\r
18         virtual void read_lock(GLenum mode);\r
19         virtual bool read_unlock();\r
20         virtual void draw();\r
21                 \r
22         virtual unsigned char* data();\r
23         virtual size_t size() const;\r
24         virtual size_t width() const;\r
25         virtual size_t height() const;\r
26         \r
27         virtual void reset();\r
28                         \r
29         virtual const std::vector<short>& audio_data() const;   \r
30         virtual std::vector<short>& audio_data();\r
31 \r
32         virtual float alpha() const;\r
33         virtual void alpha(float value);\r
34 \r
35         virtual float x() const;\r
36         virtual float y() const;\r
37         virtual void translate(float x, float y);\r
38 \r
39         virtual void mode(video_mode mode);\r
40         virtual video_mode mode() const;\r
41 \r
42         static std::shared_ptr<gpu_frame> null()\r
43         {\r
44                 static auto my_null_frame = std::make_shared<gpu_frame>(0,0);\r
45                 return my_null_frame;\r
46         }\r
47                 \r
48 private:\r
49         struct implementation;\r
50         std::shared_ptr<implementation> impl_;\r
51 };\r
52 typedef std::shared_ptr<gpu_frame> gpu_frame_ptr;\r
53         \r
54 }