\r
safe_ptr<const read_frame> get_key_frame(const safe_ptr<const read_frame>& frame)\r
{\r
- bool has_key_only = std::any_of(consumers_.begin(), consumers_.end(), [](const decltype(*consumers_.begin())& p)\r
+ const bool has_key_only = std::any_of(consumers_.begin(), consumers_.end(), [](const decltype(*consumers_.begin())& p)\r
{\r
return p.second->key_only();\r
});\r
channel_.execution().invoke([&]\r
{\r
layers_[index].load(make_safe<destroy_producer_proxy>(channel_.destruction(), producer), preview);\r
+ CASPAR_LOG(info) << print() << " layer [ " << index << "] Loaded: " << producer << ".";\r
});\r
}\r
\r
channel_.execution().invoke([&]\r
{\r
layers_[index].pause();\r
+ CASPAR_LOG(info) << print() << " layer [ " << index << "] Paused.";\r
});\r
}\r
\r
channel_.execution().invoke([&]\r
{\r
layers_[index].play();\r
+ CASPAR_LOG(info) << print() << " layer [ " << index << "] Playing.";\r
});\r
}\r
\r
channel_.execution().invoke([&]\r
{\r
layers_[index].stop();\r
+ CASPAR_LOG(info) << print() << " layer [ " << index << "] Stopped.";\r
});\r
}\r
\r
channel_.execution().invoke([&]\r
{\r
layers_.erase(index);\r
+ CASPAR_LOG(info) << print() << " layer [ " << index << "] Cleared.";\r
});\r
}\r
\r
channel_.execution().invoke([&]\r
{\r
layers_.clear();\r
+ CASPAR_LOG(info) << print() << " Cleared.";\r
});\r
} \r
\r
{\r
return channel_.execution().begin_invoke([=]{return layers_[index].background();});\r
}\r
+\r
+ std::wstring print() const\r
+ {\r
+ return L"stage [" + boost::lexical_cast<std::wstring>(channel_.index()) + L"]";\r
+ }\r
+\r
};\r
\r
stage::stage(video_channel_context& video_channel) : impl_(new implementation(video_channel)){}\r
for(size_t n = 0; n < _parameters.size(); ++n)\r
message += _parameters[n] + L" ";\r
\r
- static const boost::wregex expr(L".*(?<TRANSITION>CUT|PUSH|SLIDE|WIPE)\\s*(?<DURATION>\\d+)\\s*(?<TWEEN>(LINEAR)|(EASE[^\\s]*))?\\s*(?<DIRECTION>FROMLEFT|FROMRIGHT|LEFT|RIGHT)?.*");\r
+ static const boost::wregex expr(L".*(?<TRANSITION>CUT|PUSH|SLIDE|WIPE|MIX)\\s*(?<DURATION>\\d+)\\s*(?<TWEEN>(LINEAR)|(EASE[^\\s]*))?\\s*(?<DIRECTION>FROMLEFT|FROMRIGHT|LEFT|RIGHT)?.*");\r
boost::wsmatch what;\r
if(boost::regex_match(message, what, expr))\r
{\r