From 4530ebfafb4877cf859a96b98928c9d3cb972f30 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Thu, 23 Jan 2020 14:02:17 +0200
Subject: [PATCH] Minor correction to frame id mapping

---
 components/rgbd-sources/src/frameset.cpp |  3 +++
 components/streams/src/receiver.cpp      |  2 +-
 components/streams/src/stream.cpp        | 14 ++++++++++----
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/components/rgbd-sources/src/frameset.cpp b/components/rgbd-sources/src/frameset.cpp
index 859c3d5d7..e2b1afa4d 100644
--- a/components/rgbd-sources/src/frameset.cpp
+++ b/components/rgbd-sources/src/frameset.cpp
@@ -85,6 +85,8 @@ void Builder::push(int64_t timestamp, int ix, ftl::rgbd::Frame &frame) {
 
 	UNIQUE_LOCK(mutex_, lk);
 
+	//LOG(INFO) << "BUILDER PUSH: " << timestamp << ", " << ix << ", " << size_;
+
 	// Size is determined by largest frame index received... note that size
 	// cannot therefore reduce.
 	if (ix >= size_) {
@@ -224,6 +226,7 @@ ftl::rgbd::FrameSet *Builder::_findFrameset(int64_t ts) {
 ftl::rgbd::FrameSet *Builder::_getFrameset() {
 	for (auto i=framesets_.begin(); i!=framesets_.end(); i++) {
 		auto *f = *i;
+		//LOG(INFO) << "GET: " << f->count << " of " << size_;
 		if (!f->stale && f->count >= size_) {
 			//LOG(INFO) << "GET FRAMESET and remove: " << f->timestamp;
 			auto j = framesets_.erase(i);
diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp
index 8d07365d7..1151f1e34 100644
--- a/components/streams/src/receiver.cpp
+++ b/components/streams/src/receiver.cpp
@@ -232,7 +232,7 @@ void Receiver::_processVideo(const StreamPacket &spkt, const Packet &pkt) {
 			if ((frame.completed & sel) == sel) {
 				timestamp_ = frame.timestamp;
 
-				//LOG(INFO) << "BUILDER PUSH: " << timestamp_ << ", " << spkt.frameNumber();
+				//LOG(INFO) << "BUILDER PUSH: " << timestamp_ << ", " << spkt.frameNumber() << ", " << (int)pkt.frame_count;
 
 				if (frame.state.getLeft().width == 0) {
 					LOG(WARNING) << "Missing calibration, skipping frame";
diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp
index 2259ba092..2ece7be12 100644
--- a/components/streams/src/stream.cpp
+++ b/components/streams/src/stream.cpp
@@ -55,11 +55,15 @@ void Muxer::add(Stream *s) {
 
 	s->onPacket([this,s,i](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) {
 		//SHARED_LOCK(mutex_, lk);
-		int id = _lookup(i, spkt.frame_number);
-		
+	
 		ftl::codecs::StreamPacket spkt2 = spkt;
 		spkt2.streamID = 0;
-		spkt2.frame_number = id;
+
+		if (spkt2.frame_number < 255) {
+			int id = _lookup(i, spkt.frame_number);
+			spkt2.frame_number = id;
+		}
+
 		_notify(spkt2, pkt);
 		s->select(spkt.streamID, selected(0));
 	});
@@ -79,6 +83,8 @@ bool Muxer::post(const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packe
 		auto [sid, ssid] = revmap_[spkt.frame_number];
 		auto &se = streams_[sid];
 
+		//LOG(INFO) << "POST " << spkt.frame_number;
+
 		ftl::codecs::StreamPacket spkt2 = spkt;
 		spkt2.streamID = 0;
 		spkt2.frame_number = ssid;
@@ -138,7 +144,7 @@ int Muxer::_lookup(int sid, int ssid) {
 void Muxer::_notify(const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) {
 	SHARED_LOCK(mutex_, lk);
 	available(spkt.frameSetID()) += spkt.channel;
-	if (cb_) cb_(spkt, pkt);
+	if (cb_) cb_(spkt, pkt);  // spkt.frame_number < 255 && 
 }
 
 // ==== Broadcaster ============================================================
-- 
GitLab