From c7c9efa09874dbcb587a314ac10232773ad451be Mon Sep 17 00:00:00 2001 From: Sebastian Hahta <joseha@utu.fi> Date: Fri, 31 Jan 2020 13:06:42 +0200 Subject: [PATCH] fix channel aggregation --- applications/gui/src/camera.hpp | 2 ++ applications/gui/src/src_window.cpp | 16 +++++++++------- applications/gui/src/src_window.hpp | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/applications/gui/src/camera.hpp b/applications/gui/src/camera.hpp index e1b16583b..15f373e9b 100644 --- a/applications/gui/src/camera.hpp +++ b/applications/gui/src/camera.hpp @@ -33,6 +33,8 @@ class Camera { int width() const { return width_; } int height() const { return height_; } + int getFramesetId() const { return fsid_; } + void setPose(const Eigen::Matrix4d &p); void mouseMovement(int rx, int ry, int button); diff --git a/applications/gui/src/src_window.cpp b/applications/gui/src/src_window.cpp index 68369dfee..8ff47c319 100644 --- a/applications/gui/src/src_window.cpp +++ b/applications/gui/src/src_window.cpp @@ -81,7 +81,7 @@ SourceWindow::SourceWindow(ftl::gui::Screen *screen) cycle_ = 0; receiver_->onFrameSet([this](ftl::rgbd::FrameSet &fs) { // Request the channels required by current camera configuration - interceptor_->select(fs.id, _aggregateChannels()); + interceptor_->select(fs.id, _aggregateChannels(fs.id)); /*if (fs.id > 0) { LOG(INFO) << "Got frameset: " << fs.id; @@ -201,14 +201,16 @@ void SourceWindow::stopRecordingVideo() { } } -ftl::codecs::Channels<0> SourceWindow::_aggregateChannels() { +ftl::codecs::Channels<0> SourceWindow::_aggregateChannels(int id) { ftl::codecs::Channels<0> cs = ftl::codecs::Channels<0>(Channel::Colour); for (auto cam : cameras_) { - if (cam.second.camera->isVirtual()) { - cs += Channel::Depth; - } else { - if (cam.second.camera->getChannel() != Channel::None) { - cs += cam.second.camera->getChannel(); + if (cam.second.camera->getFramesetId() == id) { + if (cam.second.camera->isVirtual()) { + cs += Channel::Depth; + } else { + if (cam.second.camera->getChannel() != Channel::None) { + cs += cam.second.camera->getChannel(); + } } } } diff --git a/applications/gui/src/src_window.hpp b/applications/gui/src/src_window.hpp index fccab65c3..6eb0236f7 100644 --- a/applications/gui/src/src_window.hpp +++ b/applications/gui/src/src_window.hpp @@ -79,7 +79,7 @@ class SourceWindow : public nanogui::Window { void _updateCameras(const std::vector<std::string> &netcams); void _createDefaultCameras(ftl::rgbd::FrameSet &fs, bool makevirtual); - ftl::codecs::Channels<0> _aggregateChannels(); + ftl::codecs::Channels<0> _aggregateChannels(int id); void _checkFrameSets(int id); }; -- GitLab