3 #include "consumer/frame_consumer_device.h"
\r
4 #include "mixer/frame_mixer_device.h"
\r
5 #include "producer/frame_producer_device.h"
\r
7 #include <common/memory/safe_ptr.h>
\r
9 #include <boost/noncopyable.hpp>
\r
10 #include <boost/thread/future.hpp>
\r
12 namespace caspar { namespace core {
\r
14 ////////////////////////////////////////////////////////////////////////////////////////////////////
\r
19 /// |**********| <- empty frame <- |***********| <- frame format <- |**********|
\r
20 /// PROTOCOL -> | PRODUCER | | MIXER | | CONSUMER | -> DISPLAY DEVICE
\r
21 /// |**********| -> rendered frames -> |***********| -> formatted frame -> |**********|
\r
23 ////////////////////////////////////////////////////////////////////////////////////////////////////
\r
24 class channel : boost::noncopyable
\r
27 explicit channel(const video_format_desc& format_desc);
\r
28 channel(channel&& other);
\r
30 frame_producer_device& producer();
\r
31 frame_mixer_device& mixer();
\r
32 frame_consumer_device& consumer();
\r
34 const video_format_desc& get_video_format_desc() const;
\r
37 struct implementation;
\r
38 safe_ptr<implementation> impl_;
\r