From 3837cb4b70edbe9baa6adad45bc5166d88784dd1 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Thu, 23 Jul 2020 19:46:34 +0300 Subject: [PATCH] Add frame name method --- components/streams/src/renderers/screen_render.cpp | 2 +- components/structures/include/ftl/data/new_frame.hpp | 5 +++++ components/structures/src/new_frame.cpp | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/components/streams/src/renderers/screen_render.cpp b/components/streams/src/renderers/screen_render.cpp index da685ea88..7f6c7a359 100644 --- a/components/streams/src/renderers/screen_render.cpp +++ b/components/streams/src/renderers/screen_render.cpp @@ -161,7 +161,7 @@ bool ScreenRender::retrieve(ftl::data::Frame &frame_out) { shape.type = Shape3DType::CAMERA; shape.size = Eigen::Vector3f(0.2f,0.2f,0.2f); shape.pose = f.cast<ftl::rgbd::Frame>().getPose().cast<float>(); - shape.label = std::string("Camera"); + shape.label = f.name(); } } diff --git a/components/structures/include/ftl/data/new_frame.hpp b/components/structures/include/ftl/data/new_frame.hpp index 8a935688e..557984e87 100644 --- a/components/structures/include/ftl/data/new_frame.hpp +++ b/components/structures/include/ftl/data/new_frame.hpp @@ -642,6 +642,11 @@ class Frame { void information(const std::string &msg); void information(const ftl::Formatter &msg); + /** + * Get or generate a name for this frame. + */ + std::string name() const; + // ========================================================================= protected: diff --git a/components/structures/src/new_frame.cpp b/components/structures/src/new_frame.cpp index ba79f32bf..ba95ba267 100644 --- a/components/structures/src/new_frame.cpp +++ b/components/structures/src/new_frame.cpp @@ -470,6 +470,17 @@ void Frame::information(const ftl::Formatter &msg) { information(msg.str()); } +std::string Frame::name() const { + if (has(Channel::MetaData)) { + const auto &meta = get<std::map<std::string,std::string>>(Channel::MetaData); + auto i = meta.find("name"); + if (i != meta.end()) return i->second; + } + + // Generate a name + return std::string("Frame-") + std::to_string(frameset()) + std::string("-") + std::to_string(source()); +} + // ==== Session ================================================================ ftl::Handle Session::onChange(uint32_t pid, ftl::codecs::Channel c, const std::function<bool(Frame&,ftl::codecs::Channel)> &cb) { -- GitLab