X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fimage%2Fproducer%2Fimage_producer.cpp;h=b3084f91954f63eba2dedcffc0a21a640c493389;hb=ac7b3acb915f90de6b224e54a2240023fc221e5a;hp=5553b7638af5f3abb4910e6729d6d1545a1f00e6;hpb=52b74f3c499e70dc74e9f926b4783968b012cd37;p=casparcg diff --git a/modules/image/producer/image_producer.cpp b/modules/image/producer/image_producer.cpp index 5553b7638..b3084f919 100644 --- a/modules/image/producer/image_producer.cpp +++ b/modules/image/producer/image_producer.cpp @@ -24,7 +24,8 @@ #include #include -#include +#include +#include #include @@ -35,11 +36,11 @@ using namespace boost::assign; -namespace caspar { +namespace caspar { namespace image { struct image_producer : public core::frame_producer { - std::wstring filename_; + const std::wstring filename_; safe_ptr frame_; explicit image_producer(const safe_ptr& frame_factory, const std::wstring& filename) @@ -48,23 +49,30 @@ struct image_producer : public core::frame_producer { auto bitmap = load_image(filename_); FreeImage_FlipVertical(bitmap.get()); - auto frame = frame_factory->create_frame(this, FreeImage_GetWidth(bitmap.get()), FreeImage_GetHeight(bitmap.get())); + auto frame = frame_factory->create_frame(this, FreeImage_GetWidth(bitmap.get()), FreeImage_GetHeight(bitmap.get()), core::pixel_format::bgra); std::copy_n(FreeImage_GetBits(bitmap.get()), frame->image_data().size(), frame->image_data().begin()); + frame->commit(); frame_ = std::move(frame); } - virtual safe_ptr receive(){return frame_;} + // frame_producer + + virtual safe_ptr receive(int){return frame_;} + + virtual safe_ptr last_frame() const + { + return frame_; + } - virtual std::wstring print() const { return L"image_producer[" + filename_ + L"]"; } }; -safe_ptr create_image_producer(const safe_ptr& frame_factory, const std::vector& params) +safe_ptr create_producer(const safe_ptr& frame_factory, const std::vector& params) { - static const std::vector extensions = list_of(L"png")(L"tga")(L"bmp")(L"jpg")(L"jpeg"); + static const std::vector extensions = list_of(L"png")(L"tga")(L"bmp")(L"jpg")(L"jpeg")(L"gif")(L"tiff")(L"tif")(L"jp2")(L"jpx")(L"j2k")(L"j2c"); std::wstring filename = env::media_folder() + L"\\" + params[0]; auto ext = std::find_if(extensions.begin(), extensions.end(), [&](const std::wstring& ex) -> bool @@ -79,4 +87,4 @@ safe_ptr create_image_producer(const safe_ptr