#include "../monitor/monitor.h"
#include "../interaction/interaction_sink.h"
+#include "../fwd.h"
#include <common/forward.h>
#include <common/future_fwd.h>
#include <common/memory.h>
#include <boost/property_tree/ptree_fwd.hpp>
+#include <boost/optional.hpp>
#include <string>
-FORWARD1(boost, template<typename T> class optional);
-
namespace caspar { namespace core {
-class layer sealed : public monitor::observable, public interaction_sink
+class layer final : public interaction_sink
{
layer(const layer&);
layer& operator=(const layer&);
void swap(layer& other);
- void load(spl::shared_ptr<class frame_producer> producer, bool preview, const boost::optional<int32_t>& auto_play_delta = nullptr);
- void play();
- void pause();
- void stop();
+ void load(spl::shared_ptr<frame_producer> producer, bool preview, const boost::optional<int32_t>& auto_play_delta = boost::optional<int32_t>());
+ void play();
+ void pause();
+ void resume();
+ void stop();
- class draw_frame receive(const struct video_format_desc& format_desc);
+ draw_frame receive(const video_format_desc& format_desc);
// monitor::observable
- void subscribe(const monitor::observable::observer_ptr& o) override;
- void unsubscribe(const monitor::observable::observer_ptr& o) override;
+ monitor::subject& monitor_output();
// interaction_sink
// Properties
- spl::shared_ptr<class frame_producer> foreground() const;
- spl::shared_ptr<class frame_producer> background() const;
+ spl::shared_ptr<frame_producer> foreground() const;
+ spl::shared_ptr<frame_producer> background() const;
- boost::property_tree::wptree info() const;
+ boost::property_tree::wptree info() const;
+ boost::property_tree::wptree delay_info() const;
private:
struct impl;