diff --git a/applications/reconstruct/src/main.cpp b/applications/reconstruct/src/main.cpp index b8487d5b14873f0f1036cff626275e944d217833..65b92f6c9bfef76b86fac6d1c75468112ba25b3b 100644 --- a/applications/reconstruct/src/main.cpp +++ b/applications/reconstruct/src/main.cpp @@ -16,6 +16,7 @@ #include <ftl/rgbd/group.hpp> #include <ftl/threads.hpp> #include <ftl/codecs/writer.hpp> +#include <ftl/codecs/reader.hpp> #include "ilw/ilw.hpp" #include <ftl/render/splat_render.hpp> @@ -110,9 +111,27 @@ static void run(ftl::Configurable *root) { auto eix = path.find_last_of('.'); auto ext = path.substr(eix+1); + // Command line path is ftl file if (ext == "ftl") { LOG(INFO) << "PATH TO CHECK: " << path; - root->getConfig()["sources"].push_back(nlohmann::json{{"uri",std::string("file://") + path + std::string("#0")}}); + + // Create temp reader to count number of sources found in file + std::ifstream file; + file.open(path); + ftl::codecs::Reader reader(file); + reader.begin(); + + int max_stream = 0; + reader.read(reader.getStartTime()+100, [&max_stream](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { + max_stream = max(max_stream, spkt.streamID); + }); + reader.end(); + + LOG(INFO) << "Found " << (max_stream+1) << " sources in " << path; + + for (int i=0; i<max_stream; ++i) { + root->getConfig()["sources"].push_back(nlohmann::json{{"uri",std::string("file://") + path + std::string("#") + std::to_string(i)}}); + } } } LOG(INFO) << (*root->get<nlohmann::json>("sources")).dump();