diff --git a/components/streams/include/ftl/streams/filestream.hpp b/components/streams/include/ftl/streams/filestream.hpp index 92d0a8afe8b1757da9b682354f16bff25a5dfe44..d1fea1d9f53956211e7f4b543c0e1ec15bf383c1 100644 --- a/components/streams/include/ftl/streams/filestream.hpp +++ b/components/streams/include/ftl/streams/filestream.hpp @@ -73,6 +73,7 @@ class File : public Stream { int version_; ftl::timer::TimerHandle timer_; bool is_video_; + bool save_data_; StreamCallback cb_; MUTEX mutex_; diff --git a/components/streams/src/filestream.cpp b/components/streams/src/filestream.cpp index 2afe275badaff3bdc41f0371aa4e800b413b444e..ebfbdc6b053eca7b8a40bb5af561a4fba2c83780 100644 --- a/components/streams/src/filestream.cpp +++ b/components/streams/src/filestream.cpp @@ -14,18 +14,29 @@ File::File(nlohmann::json &config) : Stream(config), ostream_(nullptr), istream_ mode_ = Mode::Read; jobs_ = 0; checked_ = false; + save_data_ = value("save_data", false); + + on("save_data", [this](const ftl::config::Event &e) { + save_data_ = value("save_data", false); + }); } File::File(nlohmann::json &config, std::ifstream *is) : Stream(config), ostream_(nullptr), istream_(is), active_(false) { mode_ = Mode::Read; jobs_ = 0; checked_ = false; + save_data_ = false; } File::File(nlohmann::json &config, std::ofstream *os) : Stream(config), ostream_(os), istream_(nullptr), active_(false) { mode_ = Mode::Write; jobs_ = 0; checked_ = false; + save_data_ = value("save_data", false); + + on("save_data", [this](const ftl::config::Event &e) { + save_data_ = value("save_data", false); + }); } File::~File() { @@ -102,7 +113,7 @@ bool File::post(const ftl::codecs::StreamPacket &s, const ftl::codecs::Packet &p // Discard all data channel packets for now // TODO: Allow saving of data channels once formats have solidified. - if (static_cast<int>(s.channel) >= static_cast<int>(ftl::codecs::Channel::Data)) return true; + if (!save_data_ && static_cast<int>(s.channel) >= static_cast<int>(ftl::codecs::Channel::Data)) return true; ftl::codecs::StreamPacket s2 = s; // Adjust timestamp relative to start of file.