]> git.sesse.net Git - casparcg/blob - core/channel.cpp
2.0.0.2:
[casparcg] / core / channel.cpp
1 #include "StdAfx.h"\r
2 \r
3 #include "channel.h"\r
4 \r
5 #include <boost/noncopyable.hpp>\r
6 \r
7 #include <memory>\r
8 \r
9 namespace caspar { namespace core {\r
10 \r
11 struct channel::implementation : boost::noncopyable\r
12 {\r
13 public:\r
14         implementation(const frame_producer_device_ptr& producer_device, const frame_processor_device_ptr& processor_device, const frame_consumer_device_ptr& consumer_device)\r
15                 : producer_device_(producer_device), processor_device_(processor_device), consumer_device_(consumer_device)\r
16         {\r
17         }\r
18         \r
19         void load(int render_layer, const frame_producer_ptr& producer, load_option::type option = load_option::none)\r
20         {\r
21                 producer_device_->load(render_layer, producer, option);\r
22         }\r
23 \r
24         void pause(int render_layer)\r
25         {\r
26                 producer_device_->pause(render_layer);\r
27         }\r
28 \r
29         void play(int render_layer)\r
30         {\r
31                 producer_device_->play(render_layer);\r
32         }\r
33 \r
34         void stop(int render_layer)\r
35         {\r
36                 producer_device_->stop(render_layer);\r
37         }\r
38 \r
39         void clear(int render_layer)\r
40         {\r
41                 producer_device_->clear(render_layer);\r
42         }\r
43 \r
44         void clear()\r
45         {\r
46                 producer_device_->clear();\r
47         }\r
48         \r
49         frame_producer_ptr active(int render_layer) const\r
50         {\r
51                 return producer_device_->active(render_layer);\r
52         }\r
53 \r
54         frame_producer_ptr background(int render_layer) const\r
55         {\r
56                 return producer_device_->background(render_layer);\r
57         }\r
58 \r
59         const video_format_desc get_video_format_desc() const\r
60         {\r
61                 return processor_device_->get_video_format_desc();\r
62         }\r
63 \r
64 private:\r
65         const frame_producer_device_ptr producer_device_;\r
66         const frame_processor_device_ptr processor_device_;\r
67         const frame_consumer_device_ptr consumer_device_;\r
68 };\r
69 \r
70 channel::channel(const frame_producer_device_ptr& producer_device, const frame_processor_device_ptr& processor_device, const frame_consumer_device_ptr& consumer_device)\r
71         : impl_(new implementation(producer_device, processor_device, consumer_device)){}\r
72 void channel::load(int render_layer, const frame_producer_ptr& producer, load_option::type option){impl_->load(render_layer, producer, option);}\r
73 void channel::pause(int render_layer){impl_->pause(render_layer);}\r
74 void channel::play(int render_layer){impl_->play(render_layer);}\r
75 void channel::stop(int render_layer){impl_->stop(render_layer);}\r
76 void channel::clear(int render_layer){impl_->clear(render_layer);}\r
77 void channel::clear(){impl_->clear();}\r
78 frame_producer_ptr channel::active(int render_layer) const{     return impl_->active(render_layer);}\r
79 frame_producer_ptr channel::background(int render_layer) const{return impl_->background(render_layer);}\r
80 const video_format_desc channel::get_video_format_desc() const{ return impl_->get_video_format_desc();}\r
81 \r
82 }}