]> 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 225447e56e20845e83200b710dcf830e92d9c034..48e639c9225f266eef71d665ea50007a017f29d7 100644 (file)
@@ -1,47 +1,49 @@
-#pragma once\r
-\r
-#include "../monitor/monitor.h"\r
-\r
-#include <common/memory.h>\r
-\r
-#include <boost/property_tree/ptree_fwd.hpp>\r
-\r
-namespace caspar { namespace core {\r
-\r
-class port : public monitor::observable\r
-{\r
-       port(const port&);\r
-       port& operator=(const port&);\r
-public:\r
-\r
-       // Static Members\r
-\r
-       // Constructors\r
-\r
-       port(int index, int channel_index, spl::shared_ptr<class frame_consumer> consumer);\r
-       port(port&& other);\r
-       ~port();\r
-\r
-       // Member Functions\r
-\r
-       port& operator=(port&& other);\r
-\r
-       bool send(class const_frame frame);     \r
-\r
-       // monitor::observable\r
-       \r
-       void subscribe(const monitor::observable::observer_ptr& o) override;\r
-       void unsubscribe(const monitor::observable::observer_ptr& o) override;\r
-\r
-       // Properties\r
-\r
-       void video_format_desc(const struct video_format_desc& format_desc);\r
-       int buffer_depth() const;\r
-       bool has_synchronization_clock() const;\r
-       boost::property_tree::wptree info() const;\r
-private:\r
-       struct impl;\r
-       std::unique_ptr<impl> impl_;\r
-};\r
-\r
-}}
\ No newline at end of file
+#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
+{
+       port(const port&);
+       port& operator=(const port&);
+public:
+
+       // Static Members
+
+       // Constructors
+
+       port(int index, int channel_index, spl::shared_ptr<frame_consumer> consumer);
+       port(port&& other);
+       ~port();
+
+       // Member Functions
+
+       port& operator=(port&& other);
+
+       std::future<bool> send(const_frame frame);
+
+       monitor::subject& monitor_output();
+
+       // Properties
+
+       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_;
+};
+
+}}