]> git.sesse.net Git - casparcg/blob - core/channel.h
2.0.0.2: Improved logging. Added "parent logging".
[casparcg] / core / channel.h
1 #pragma once\r
2 \r
3 #include "consumer/frame_consumer_device.h"\r
4 #include "mixer/frame_mixer_device.h"\r
5 #include "producer/frame_producer_device.h"\r
6 \r
7 #include <common/memory/safe_ptr.h>\r
8 \r
9 #include <boost/noncopyable.hpp>\r
10 #include <boost/thread/future.hpp>\r
11 \r
12 namespace caspar { namespace core {\r
13 \r
14 ////////////////////////////////////////////////////////////////////////////////////////////////////\r
15 /// \class      channel\r
16 ///\r
17 /// \brief\r
18 ///             \r
19 ///                |**********| <-   empty frame   <- |***********| <-   frame format  <- |**********|\r
20 ///   PROTOCOL ->  | PRODUCER |                       |   MIXER   |                       | CONSUMER |  -> DISPLAY DEVICE\r
21 ///                |**********| -> rendered frames -> |***********| -> formatted frame -> |**********|\r
22 ///   \r
23 ////////////////////////////////////////////////////////////////////////////////////////////////////\r
24 class channel : boost::noncopyable\r
25 {\r
26 public:\r
27         explicit channel(int index, const video_format_desc& format_desc);\r
28         channel(channel&& other);\r
29 \r
30         frame_producer_device& producer();\r
31         frame_mixer_device& mixer();\r
32         frame_consumer_device& consumer();\r
33 \r
34         const video_format_desc& get_video_format_desc() const;\r
35 \r
36 private:\r
37         struct implementation;\r
38         safe_ptr<implementation> impl_;\r
39 };\r
40 \r
41 }}