\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
, 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
{\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
{\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
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