load(load_image(description_));
if (thumbnail_mode)
- CASPAR_LOG(trace) << print() << L" Initialized";
+ CASPAR_LOG(debug) << print() << L" Initialized";
else
CASPAR_LOG(info) << print() << L" Initialized";
}
void load(const std::shared_ptr<FIBITMAP>& bitmap)
{
FreeImage_FlipVertical(bitmap.get());
+ auto longest_side = static_cast<int>(std::max(FreeImage_GetWidth(bitmap.get()), FreeImage_GetHeight(bitmap.get())));
+
+ if (longest_side > frame_factory_->get_max_frame_size())
+ CASPAR_THROW_EXCEPTION(user_error() << msg_info("Image too large for texture"));
+
core::pixel_format_desc desc;
desc.format = core::pixel_format::bgra;
desc.planes.push_back(core::pixel_format_desc::plane(FreeImage_GetWidth(bitmap.get()), FreeImage_GetHeight(bitmap.get()), 4));
return frame_;
}
- core::draw_frame create_thumbnail_frame() override
- {
- return frame_;
- }
-
core::constraints& pixel_constraints() override
{
return constraints_;
auto ext = std::find_if(g_extensions.begin(), g_extensions.end(), [&](const std::wstring& ex) -> bool
{
- auto file = caspar::find_case_insensitive(boost::filesystem::path(filename).replace_extension(ex).wstring());
+ auto file = caspar::find_case_insensitive(boost::filesystem::path(filename).wstring() + ex);
return static_cast<bool>(file);
});
}
-spl::shared_ptr<core::frame_producer> create_thumbnail_producer(const core::frame_producer_dependencies& dependencies, const std::vector<std::wstring>& params)
+core::draw_frame create_thumbnail(const core::frame_producer_dependencies& dependencies, const std::wstring& media_file)
{
- std::wstring filename = env::media_folder() + params.at(0);
+ std::wstring filename = env::media_folder() + media_file;
auto ext = std::find_if(g_extensions.begin(), g_extensions.end(), [&](const std::wstring& ex) -> bool
{
- auto file = caspar::find_case_insensitive(boost::filesystem::path(filename).replace_extension(ex).wstring());
+ auto file = caspar::find_case_insensitive(boost::filesystem::path(filename).wstring() + ex);
return static_cast<bool>(file);
});
if (ext == g_extensions.end())
- return core::frame_producer::empty();
+ return core::draw_frame::empty();
- return spl::make_shared<image_producer>(dependencies.frame_factory, *caspar::find_case_insensitive(filename + *ext), true);
+ spl::shared_ptr<core::frame_producer> producer = spl::make_shared<image_producer>(
+ dependencies.frame_factory,
+ *caspar::find_case_insensitive(filename + *ext),
+ true);
+
+ return producer->receive();
}
}}