]> git.sesse.net Git - casparcg/blobdiff - core/producer/stage.cpp
Added boost::rational framerate in video_format_desc for convenience.
[casparcg] / core / producer / stage.cpp
index cb7642b8fb3c16991bfa7780b852dac652b91fce..54f30ff59542ba109eb8f24c904e2906ed846523 100644 (file)
@@ -164,8 +164,9 @@ public:
                {
                        for (auto& transform : transforms)
                        {
-                               auto src = tweens_[std::get<0>(transform)].fetch();
-                               auto dst = std::get<1>(transform)(src);
+                               auto& tween = tweens_[std::get<0>(transform)];
+                               auto src = tween.fetch();
+                               auto dst = std::get<1>(transform)(tween.dest());
                                tweens_[std::get<0>(transform)] = tweened_transform(src, dst, std::get<2>(transform), std::get<3>(transform));
                        }
                }, task_priority::high_priority);
@@ -401,7 +402,28 @@ public:
                {
                        return get_layer(index).info();
                }, task_priority::high_priority);
-       }               
+       }
+
+       std::future<boost::property_tree::wptree> delay_info()
+       {
+               return std::move(executor_.begin_invoke([this]() -> boost::property_tree::wptree
+               {
+                       boost::property_tree::wptree info;
+
+                       for (auto& layer : layers_)
+                               info.add_child(L"layer", layer.second.delay_info()).add(L"index", layer.first);
+
+                       return info;
+               }, task_priority::high_priority));
+       }
+
+       std::future<boost::property_tree::wptree> delay_info(int index)
+       {
+               return std::move(executor_.begin_invoke([=]() -> boost::property_tree::wptree
+               {
+                       return get_layer(index).delay_info();
+               }, task_priority::high_priority));
+       }
        
        std::future<std::wstring> call(int index, const std::vector<std::wstring>& params)
        {
@@ -462,9 +484,9 @@ void stage::remove_layer_consumer(void* token, int layer){ impl_->remove_layer_c
 std::future<std::shared_ptr<frame_producer>> stage::background(int index) { return impl_->background(index); }
 std::future<boost::property_tree::wptree> stage::info() const{ return impl_->info(); }
 std::future<boost::property_tree::wptree> stage::info(int index) const{ return impl_->info(index); }
-std::map<int, draw_frame> stage::operator()(const video_format_desc& format_desc){return (*impl_)(format_desc);}
+std::future<boost::property_tree::wptree> stage::delay_info() const{ return impl_->delay_info(); }
+std::future<boost::property_tree::wptree> stage::delay_info(int index) const{ return impl_->delay_info(index); }
+std::map<int, draw_frame> stage::operator()(const video_format_desc& format_desc){ return (*impl_)(format_desc); }
 monitor::subject& stage::monitor_output(){return *impl_->monitor_subject_;}
-//void stage::subscribe(const frame_observable::observer_ptr& o) {impl_->frames_subject_.subscribe(o);}
-//void stage::unsubscribe(const frame_observable::observer_ptr& o) {impl_->frames_subject_.unsubscribe(o);}
 void stage::on_interaction(const interaction_event::ptr& event) { impl_->on_interaction(event); }
 }}