explicit separated_producer(const safe_ptr<frame_producer>& fill, const safe_ptr<frame_producer>& key) : monitor_subject_("") , key_monitor_subject_("/keyer") , fill_producer_(fill) , key_producer_(key) , fill_(core::basic_frame::late()) , key_(core::basic_frame::late()) , last_frame_(core::basic_frame::empty()) { key_monitor_subject_.link_target(&monitor_subject_); key_producer_->monitor_output().link_target(&key_monitor_subject_); fill_producer_->monitor_output().link_target(&monitor_subject_); }
explicit transition_producer(const field_mode::type& mode, const safe_ptr<frame_producer>& dest, const transition_info& info) : mode_(mode) , current_frame_(0) , info_(info) , dest_producer_(dest) , source_producer_(frame_producer::empty()) , last_frame_(basic_frame::empty()) { dest->monitor_output().link_target(&monitor_subject_); }
implementation(video_channel& self, int index, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl, const channel_layout& audio_channel_layout) : self_(self) , index_(index) , format_desc_(format_desc) , ogl_(ogl) , output_(new caspar::core::output(graph_, format_desc, audio_channel_layout, index)) , mixer_(new caspar::core::mixer(graph_, output_, format_desc, ogl, audio_channel_layout, index)) , stage_(new caspar::core::stage(graph_, mixer_, format_desc, index)) , monitor_subject_(make_safe<monitor::subject>("/channel/" + boost::lexical_cast<std::string>(index))) { graph_->set_text(print()); diagnostics::register_graph(graph_); for(int n = 0; n < std::max(1, env::properties().get(L"configuration.pipeline-tokens", 2)); ++n) stage_->spawn_token(); stage_->monitor_output().attach_parent(monitor_subject_); mixer_->monitor_output().attach_parent(monitor_subject_); output_->monitor_output().attach_parent(monitor_subject_); CASPAR_LOG(info) << print() << " Successfully Initialized."; }
void set_foreground(safe_ptr<core::frame_producer> producer) { foreground_->monitor_output().unlink_target(&monitor_subject_); foreground_ = producer; foreground_->monitor_output().link_target(&monitor_subject_); }