bool reusable_producer_instance;
};
- struct name {};
- struct extension {};
-
mutable boost::mutex mutex_;
std::map<std::wstring, record> records_by_extension_;
public:
}
spl::shared_ptr<frame_producer> create_producer(
- const spl::shared_ptr<video_channel>& video_channel,
+ const frame_producer_dependencies& dependencies,
const std::wstring& filename) const
{
auto found = find_record(filename);
if (!found)
return frame_producer::empty();
- return found->producer_factory(
- video_channel->frame_factory(),
- video_channel->video_format_desc(),
- filename);
+ return found->producer_factory(dependencies, filename);
}
spl::shared_ptr<cg_proxy> get_proxy(const spl::shared_ptr<frame_producer>& producer) const
spl::shared_ptr<cg_proxy> get_or_create_proxy(
const spl::shared_ptr<video_channel>& video_channel,
+ const frame_producer_dependencies& dependencies,
int render_layer,
const std::wstring& filename) const
{
diagnostics::call_context::for_thread().video_channel = video_channel->index();
diagnostics::call_context::for_thread().layer = render_layer;
- producer = found->producer_factory(
- video_channel->frame_factory(),
- video_channel->video_format_desc(),
- filename);
+ producer = found->producer_factory(dependencies, filename);
video_channel->stage().load(render_layer, producer);
video_channel->stage().play(render_layer);
}
return rec.second.info_extractor(*found);
}
- BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(L"No meta info extractor for " + filename));
+ CASPAR_THROW_EXCEPTION(user_error() << msg_info(L"No meta info extractor for " + filename));
}
bool is_cg_extension(const std::wstring& extension) const
return records_by_extension_.find(extension) != records_by_extension_.end();
}
+
+ std::wstring get_cg_producer_name(const std::wstring& filename) const
+ {
+ auto record = find_record(filename);
+
+ if (!record)
+ CASPAR_THROW_EXCEPTION(caspar_exception() << msg_info(filename + L" is not a cg template."));
+
+ return record->name;
+ }
private:
boost::optional<record> find_record(const std::wstring& filename) const
{
}
spl::shared_ptr<frame_producer> cg_producer_registry::create_producer(
- const spl::shared_ptr<video_channel>& video_channel,
+ const frame_producer_dependencies& dependencies,
const std::wstring& filename) const
{
- return impl_->create_producer(video_channel, filename);
+ return impl_->create_producer(dependencies, filename);
}
spl::shared_ptr<cg_proxy> cg_producer_registry::get_proxy(
spl::shared_ptr<cg_proxy> cg_producer_registry::get_or_create_proxy(
const spl::shared_ptr<video_channel>& video_channel,
+ const frame_producer_dependencies& dependencies,
int render_layer,
const std::wstring& filename) const
{
- return impl_->get_or_create_proxy(video_channel, render_layer, filename);
+ return impl_->get_or_create_proxy(video_channel, dependencies, render_layer, filename);
}
std::string cg_producer_registry::read_meta_info(const std::wstring& filename) const
return impl_->is_cg_extension(extension);
}
+std::wstring cg_producer_registry::get_cg_producer_name(const std::wstring& filename) const
+{
+ return impl_->get_cg_producer_name(filename);
+}
+
}}