layer_status status() const { layer_status status; status.foreground = foreground_->print(); status.background = background_->print(); status.is_paused = is_paused_; status.total_frames = foreground_->nb_frames(); status.current_frame = frame_number_; return status; }
safe_ptr<basic_frame> receive_and_follow(safe_ptr<frame_producer>& producer, int hints) { auto frame = producer->receive(hints); if(frame == basic_frame::eof()) { CASPAR_LOG(info) << producer->print() << " End Of File."; auto following = producer->get_following_producer(); if(following != frame_producer::empty()) { following->set_leading_producer(producer); producer = std::move(following); } else producer = make_safe<last_frame_producer>(producer); return receive_and_follow(producer, hints); } return frame; }
virtual std::wstring print() const override { return L"separated[fill:" + fill_producer_->print() + L"|key[" + key_producer_->print() + L"]]"; }
virtual std::wstring print() const override { return L"transition[" + source_producer_->print() + L"=>" + dest_producer_->print() + L"]"; }
virtual std::wstring print() const override { return consumer_->print(); }
last_frame_producer(const safe_ptr<frame_producer>& producer) : print_(producer->print()) , frame_(producer->last_frame() != basic_frame::eof() ? producer->last_frame() : basic_frame::empty()) , nb_frames_(producer->nb_frames()) { }