From 9941412d434a70837ad9ed0f130b21ecfb06ab72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu> Date: Mon, 27 May 2019 11:35:16 +0200 Subject: [PATCH] track_matrix assuming emplaced features (remove capture pointer) and new add function --- include/core/processor/track_matrix.h | 5 +++-- src/processor/track_matrix.cpp | 21 ++++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/include/core/processor/track_matrix.h b/include/core/processor/track_matrix.h index 8a976ea84..ca7e71d1a 100644 --- a/include/core/processor/track_matrix.h +++ b/include/core/processor/track_matrix.h @@ -78,8 +78,9 @@ class TrackMatrix TrackMatrix(); virtual ~TrackMatrix(); - void newTrack (CaptureBasePtr _cap, FeatureBasePtr _ftr); - void add (size_t _track_id, CaptureBasePtr _cap, FeatureBasePtr _ftr); + void newTrack (FeatureBasePtr _ftr); + void add (const SizeStd& _track_id, const FeatureBasePtr& _ftr); + void add (const FeatureBasePtr& _ftr_existing, const FeatureBasePtr& _ftr_new); void remove (FeatureBasePtr _ftr); void remove (const SizeStd& _track_id); void remove (CaptureBasePtr _cap); diff --git a/src/processor/track_matrix.cpp b/src/processor/track_matrix.cpp index e9fdc9bf3..9b5a4fa25 100644 --- a/src/processor/track_matrix.cpp +++ b/src/processor/track_matrix.cpp @@ -38,21 +38,24 @@ Snapshot TrackMatrix::snapshot(CaptureBasePtr _capture) return Snapshot(); } -void TrackMatrix::newTrack(CaptureBasePtr _cap, FeatureBasePtr _ftr) +void TrackMatrix::newTrack(FeatureBasePtr _ftr) { track_id_count_ ++; - add(track_id_count_, _cap, _ftr); + add(track_id_count_, _ftr); } -void TrackMatrix::add(size_t _track_id, CaptureBasePtr _cap, FeatureBasePtr _ftr) +void TrackMatrix::add(const SizeStd& _track_id, const FeatureBasePtr& _ftr) { - assert( (_track_id > 0) && (_track_id <= track_id_count_) && "Provided track ID does not exist. Use newTrack() instead."); + assert( tracks_.count(_track_id) != 0 && "Provided track ID does not exist. Use newTrack() instead."); + assert( _ftr->getCapture() != nullptr && "adding a feature not linked to any capture"); - _ftr->setTrackId(_track_id); - if (_cap != _ftr->getCapture()) - _ftr->setCapture(_cap); - tracks_[_track_id].emplace(_cap->getTimeStamp(), _ftr); - snapshots_[_cap->id()].emplace(_track_id, _ftr); // will create new snapshot if _cap_id is not present + tracks_[_track_id].emplace(_ftr->getCapture()->getTimeStamp(), _ftr); + snapshots_[_ftr->getCapture()->id()].emplace(_track_id, _ftr); // will create new snapshot if _cap_id is not present +} + +void TrackMatrix::add(const FeatureBasePtr& _ftr_existing,const FeatureBasePtr& _ftr_new) +{ + add(_ftr_existing->trackId(), _ftr_new); } void TrackMatrix::remove(const SizeStd& _track_id) -- GitLab