#pragma once\r
\r
-#include "consumer/frame_consumer.h"\r
-#include "producer/frame_producer.h"\r
+#include "consumer/frame_consumer_device.h"\r
+#include "mixer/frame_mixer_device.h"\r
+#include "producer/frame_producer_device.h"\r
\r
-#include <common/utility/safe_ptr.h>\r
+#include <common/memory/safe_ptr.h>\r
\r
#include <boost/noncopyable.hpp>\r
#include <boost/thread/future.hpp>\r
/// \brief\r
/// \r
/// |**********| <- empty frame <- |***********| <- frame format <- |**********|\r
-/// PROTOCOL -> | PRODUCER | | PROCESSOR | | CONSUMER | -> DISPLAY DEVICE\r
+/// PROTOCOL -> | PRODUCER | | MIXER | | CONSUMER | -> DISPLAY DEVICE\r
/// |**********| -> rendered frames -> |***********| -> formatted frame -> |**********|\r
/// \r
////////////////////////////////////////////////////////////////////////////////////////////////////\r
class channel : boost::noncopyable\r
{\r
public:\r
+ explicit channel(const video_format_desc& format_desc);\r
channel(channel&& other);\r
- channel(const video_format_desc& format_desc, const std::vector<safe_ptr<frame_consumer>>& consumers);\r
- \r
- void load(int index, const safe_ptr<frame_producer>& producer, bool autoplay = false);\r
- void preview(int index, const safe_ptr<frame_producer>& producer);\r
- void pause(int index);\r
- void play(int index);\r
- void stop(int index);\r
- void clear(int index);\r
- void clear(); \r
- boost::unique_future<safe_ptr<frame_producer>> foreground(int index) const;\r
- boost::unique_future<safe_ptr<frame_producer>> background(int index) const;\r
+\r
+ frame_producer_device& producer();\r
+ frame_mixer_device& mixer();\r
+ frame_consumer_device& consumer();\r
+\r
const video_format_desc& get_video_format_desc() const;\r
+\r
private:\r
struct implementation;\r
safe_ptr<implementation> impl_;\r