]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/consumer/ffmpeg_consumer.cpp
2.0.2: Changed ADD syntax. sub-index no longer required. e.g. ADD 1 SCREEN, REMOVE...
[casparcg] / modules / ffmpeg / consumer / ffmpeg_consumer.cpp
index 8a5fc7d6d3112ffbc5bc4ed1ea836807221b7523..129d31917020140110d67112def8d05ed7a60420 100644 (file)
@@ -90,7 +90,7 @@ struct ffmpeg_consumer : boost::noncopyable
        \r
 public:\r
        ffmpeg_consumer(const std::string& filename, const core::video_format_desc& format_desc, const std::string& codec, const std::string& options)\r
-               : filename_(filename + ".mov")\r
+               : filename_(filename)\r
                , video_outbuf_(1920*1080*8)\r
                , oc_(avformat_alloc_context(), av_free)\r
                , format_desc_(format_desc)\r
@@ -98,6 +98,9 @@ public:
                , file_write_executor_(print() + L"/output")\r
                , frame_number_(0)\r
        {\r
+               // TODO: Ask stakeholders about case where file already exists.\r
+               boost::filesystem2::remove(boost::filesystem2::wpath(env::media_folder() + widen(filename))); // Delete the file if it exists\r
+\r
                graph_->add_guide("frame-time", 0.5);\r
                graph_->set_color("frame-time", diagnostics::color(0.1f, 1.0f, 0.1f));\r
                graph_->set_color("write-time", diagnostics::color(0.5f, 0.5f, 0.1f));\r
@@ -396,7 +399,7 @@ public:
        {\r
        }\r
        \r
-       virtual void initialize(const core::video_format_desc& format_desc, int, int)\r
+       virtual void initialize(const core::video_format_desc& format_desc, int)\r
        {\r
                consumer_.reset();\r
                consumer_.reset(new ffmpeg_consumer(narrow(filename_), format_desc, codec_, options_));\r
@@ -422,15 +425,20 @@ public:
        {\r
                return 1;\r
        }\r
+\r
+       virtual int index() const override\r
+       {\r
+               return 200;\r
+       }\r
 };     \r
 \r
-safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const std::vector<std::wstring>& params)\r
+safe_ptr<core::frame_consumer> create_consumer(const std::vector<std::wstring>& params)\r
 {\r
-       if(params.size() < 2 || params[0] != L"FILE")\r
+       if(params.size() < 1 || params[0] != L"FILE")\r
                return core::frame_consumer::empty();\r
        \r
-       // TODO: Ask stakeholders about case where file already exists.\r
-       boost::filesystem::remove(boost::filesystem::wpath(env::media_folder() + params[1])); // Delete the file if it exists\r
+       auto filename = (params.size() > 1 ? params[1] : L"");\r
+\r
        bool key_only = std::find(params.begin(), params.end(), L"KEY_ONLY") != params.end();\r
 \r
        std::string codec = "libx264";\r
@@ -449,10 +457,10 @@ safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const std::vector<std::wst
        if(options_it != params.end() && options_it++ != params.end())\r
                options = narrow(*options_it);\r
 \r
-       return make_safe<ffmpeg_consumer_proxy>(env::media_folder() + params[1], key_only, codec, boost::to_lower_copy(options));\r
+       return make_safe<ffmpeg_consumer_proxy>(env::media_folder() + filename, key_only, codec, boost::to_lower_copy(options));\r
 }\r
 \r
-safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const boost::property_tree::ptree& ptree)\r
+safe_ptr<core::frame_consumer> create_consumer(const boost::property_tree::ptree& ptree)\r
 {\r
        std::string filename = ptree.get<std::string>("path");\r
        auto key_only            = ptree.get("key-only", false);\r