return *it;
}
-std::wstring parameters::get_original_string() const
+std::wstring parameters::get_original_string(int num_skip) const
{
+ int left_to_skip = num_skip;
std::wstring str;
BOOST_FOREACH(auto& param, params_original_)
{
- str += param + L" ";
+ if (left_to_skip-- <= 0)
+ str += param + L" ";
}
return str;
}
const std::wstring& parameters::at_original(size_t i) const
{
- return params_original_[i];
+ return params_original_.at(i);
}
void parameters::set(size_t index, std::wstring const& value)
executor executor_;
- executor video_filter_executor_;
- executor audio_filter_executor_;
-
executor video_encoder_executor_;
executor audio_encoder_executor_;
, audio_encoder_executor_(print() + L" video_encoder")
, video_encoder_executor_(print() + L" audio_encoder")
, write_executor_(print() + L" io")
- , video_filter_executor_(print() + L" video_filter")
- , audio_filter_executor_(print() + L" audio_filter")
{
abort_request_ = false;
boost::sregex_iterator(
options.begin(),
options.end(),
- boost::regex("-(?<NAME>[^-\\s]+)(\\s+(?<VALUE>[^-\\s]+))?"));
+ boost::regex("-(?<NAME>[^-\\s]+)(\\s+(?<VALUE>[^\\s]+))?"));
it != boost::sregex_iterator();
++it)
{
encode_video(nullptr, nullptr);
encode_audio(nullptr, nullptr);
- video_filter_executor_.wait();
- audio_filter_executor_.wait();
-
video_graph_.reset();
audio_graph_.reset();
safe_ptr<core::frame_consumer> create_streaming_consumer(const core::parameters& params)
{
- static boost::wregex path_exp(L"\\s*(STREAM\\s)?(?<PATH>.+\\.[^\\s]+|.+:[^\\s]*)\\s*(?<ARGS>.*)" , boost::regex::icase);
+ if (params.size() < 1 || params[0] != L"STREAM")
+ return core::frame_consumer::empty();
- auto str = params.get_original_string();
+ auto path = narrow(params.at_original(1));
+ auto args = narrow(params.get_original_string(2));
- boost::wsmatch what;
- if(!boost::regex_match(str, what, path_exp))
- return core::frame_consumer::empty();
-
- return make_safe<streaming_consumer>(
- narrow(what["PATH"].str()),
- narrow(what["ARGS"].str()));
+ return make_safe<streaming_consumer>(path, args);
}
safe_ptr<core::frame_consumer> create_streaming_consumer(const boost::property_tree::wptree& ptree)