]> git.sesse.net Git - casparcg/commitdiff
Modified image_consumer to write to the media folder instead of data folder and to...
authorhellgore <hellgore@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 13 Feb 2013 14:03:13 +0000 (14:03 +0000)
committerhellgore <hellgore@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 13 Feb 2013 14:03:13 +0000 (14:03 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@3753 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/image/consumer/image_consumer.cpp

index d14bf07274a6439fb0ae99e73bd0122593c1b35f..ace16295c6197c2e9ebcd666a57b1e0c49262399 100644 (file)
 #include <tbb/concurrent_queue.h>\r
 \r
 #include <FreeImage.h>\r
-\r
 #include <vector>\r
 \r
 namespace caspar { namespace image {\r
        \r
 struct image_consumer : public core::frame_consumer\r
 {\r
-       core::video_format_desc                                 format_desc_;\r
+       core::video_format_desc format_desc_;\r
+       std::wstring                    filename_;\r
 public:\r
 \r
        // frame_consumer\r
 \r
+       image_consumer(const std::wstring& filename)\r
+               : filename_(filename)\r
+       {\r
+       }\r
+\r
        virtual void initialize(const core::video_format_desc& format_desc, int) override\r
        {\r
                format_desc_ = format_desc;\r
@@ -57,16 +62,23 @@ public:
        virtual boost::unique_future<bool> send(const safe_ptr<core::read_frame>& frame) override\r
        {                               \r
                auto format_desc = format_desc_;\r
-               boost::thread async([format_desc, frame]\r
+               auto filename = filename_;\r
+\r
+               boost::thread async([format_desc, frame, filename]\r
                {\r
                        try\r
                        {\r
-                               auto filename = narrow(env::data_folder()) +  boost::posix_time::to_iso_string(boost::posix_time::second_clock::local_time()) + ".png";\r
+                               std::string filename2 = narrow(filename);\r
+\r
+                               if (filename2.empty())\r
+                                       filename2 = narrow(env::media_folder()) +  boost::posix_time::to_iso_string(boost::posix_time::second_clock::local_time()) + ".png";\r
+                               else\r
+                                       filename2 = narrow(env::media_folder()) + filename2 + ".png";\r
 \r
                                auto bitmap = std::shared_ptr<FIBITMAP>(FreeImage_Allocate(format_desc.width, format_desc.height, 32), FreeImage_Unload);\r
                                memcpy(FreeImage_GetBits(bitmap.get()), frame->image_data().begin(), frame->image_size());\r
                                FreeImage_FlipVertical(bitmap.get());\r
-                               FreeImage_Save(FIF_PNG, bitmap.get(), filename.c_str(), 0);\r
+                               FreeImage_Save(FIF_PNG, bitmap.get(), filename2.c_str(), 0);\r
                        }\r
                        catch(...)\r
                        {\r
@@ -106,7 +118,12 @@ safe_ptr<core::frame_consumer> create_consumer(const std::vector<std::wstring>&
        if(params.size() < 1 || params[0] != L"IMAGE")\r
                return core::frame_consumer::empty();\r
 \r
-       return make_safe<image_consumer>();\r
+       std::wstring filename;\r
+\r
+       if (params.size() > 1)\r
+               filename = params[1];\r
+\r
+       return make_safe<image_consumer>(filename);\r
 }\r
 \r
 }}\r