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(int index, const video_format_desc& format_desc);
\r
28 channel(channel&& other);
\r
30 const safe_ptr<frame_producer_device>& producer();
\r
31 const safe_ptr<frame_mixer_device>& mixer();
\r
32 const safe_ptr<frame_consumer_device>& consumer();
\r
34 const video_format_desc& get_video_format_desc() const;
\r
35 void set_video_format_desc(const video_format_desc& format_desc);
\r
37 std::wstring print() const;
\r
40 struct implementation;
\r
41 safe_ptr<implementation> impl_;
\r