]> git.sesse.net Git - casparcg/blobdiff - core/consumer/port.h
Created a consumer that provides sync to a channel based on the pace of another chann...
[casparcg] / core / consumer / port.h
index 76ff625df731a67df5ec8a8f966aec33f9c6741c..48e639c9225f266eef71d665ea50007a017f29d7 100644 (file)
@@ -1,14 +1,16 @@
 #pragma once
 
 #include "../monitor/monitor.h"
+#include "../fwd.h"
 
 #include <common/memory.h>
+#include <common/future_fwd.h>
 
 #include <boost/property_tree/ptree_fwd.hpp>
 
 namespace caspar { namespace core {
 
-class port : public monitor::observable
+class port
 {
        port(const port&);
        port& operator=(const port&);
@@ -18,7 +20,7 @@ public:
 
        // Constructors
 
-       port(int index, int channel_index, spl::shared_ptr<class frame_consumer> consumer);
+       port(int index, int channel_index, spl::shared_ptr<frame_consumer> consumer);
        port(port&& other);
        ~port();
 
@@ -26,22 +28,22 @@ public:
 
        port& operator=(port&& other);
 
-       bool send(class const_frame frame);     
+       std::future<bool> send(const_frame frame);
 
-       // monitor::observable
-       
-       void subscribe(const monitor::observable::observer_ptr& o) override;
-       void unsubscribe(const monitor::observable::observer_ptr& o) override;
+       monitor::subject& monitor_output();
 
        // Properties
 
-       void video_format_desc(const struct video_format_desc& format_desc);
+       void change_channel_format(const video_format_desc& format_desc, const audio_channel_layout& channel_layout);
+       std::wstring print() const;
        int buffer_depth() const;
        bool has_synchronization_clock() const;
        boost::property_tree::wptree info() const;
+       int64_t presentation_frame_age_millis() const;
+       spl::shared_ptr<const frame_consumer> consumer() const;
 private:
        struct impl;
        std::unique_ptr<impl> impl_;
 };
 
-}}
\ No newline at end of file
+}}