From 5af7ffa2fd90fc8910504505a1427784205348b1 Mon Sep 17 00:00:00 2001 From: hellgore Date: Wed, 13 Feb 2013 14:03:13 +0000 Subject: [PATCH] Modified image_consumer to write to the media folder instead of data folder and to support custom filename instead of default timestamp-based filename git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@3753 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- modules/image/consumer/image_consumer.cpp | 29 ++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/modules/image/consumer/image_consumer.cpp b/modules/image/consumer/image_consumer.cpp index d14bf0727..ace16295c 100644 --- a/modules/image/consumer/image_consumer.cpp +++ b/modules/image/consumer/image_consumer.cpp @@ -37,18 +37,23 @@ #include #include - #include namespace caspar { namespace image { struct image_consumer : public core::frame_consumer { - core::video_format_desc format_desc_; + core::video_format_desc format_desc_; + std::wstring filename_; public: // frame_consumer + image_consumer(const std::wstring& filename) + : filename_(filename) + { + } + virtual void initialize(const core::video_format_desc& format_desc, int) override { format_desc_ = format_desc; @@ -57,16 +62,23 @@ public: virtual boost::unique_future send(const safe_ptr& frame) override { auto format_desc = format_desc_; - boost::thread async([format_desc, frame] + auto filename = filename_; + + boost::thread async([format_desc, frame, filename] { try { - auto filename = narrow(env::data_folder()) + boost::posix_time::to_iso_string(boost::posix_time::second_clock::local_time()) + ".png"; + std::string filename2 = narrow(filename); + + if (filename2.empty()) + filename2 = narrow(env::media_folder()) + boost::posix_time::to_iso_string(boost::posix_time::second_clock::local_time()) + ".png"; + else + filename2 = narrow(env::media_folder()) + filename2 + ".png"; auto bitmap = std::shared_ptr(FreeImage_Allocate(format_desc.width, format_desc.height, 32), FreeImage_Unload); memcpy(FreeImage_GetBits(bitmap.get()), frame->image_data().begin(), frame->image_size()); FreeImage_FlipVertical(bitmap.get()); - FreeImage_Save(FIF_PNG, bitmap.get(), filename.c_str(), 0); + FreeImage_Save(FIF_PNG, bitmap.get(), filename2.c_str(), 0); } catch(...) { @@ -106,7 +118,12 @@ safe_ptr create_consumer(const std::vector& if(params.size() < 1 || params[0] != L"IMAGE") return core::frame_consumer::empty(); - return make_safe(); + std::wstring filename; + + if (params.size() > 1) + filename = params[1]; + + return make_safe(filename); } }} -- 2.39.2