From 1e00dc90a7eca6cfa770cac421f29f6d48fe38d7 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Thu, 23 Jan 2020 14:33:28 +0200
Subject: [PATCH] Major bug fix for frame mapping

---
 components/audio/src/source.cpp     | 1 +
 components/streams/src/receiver.cpp | 1 +
 components/streams/src/sender.cpp   | 2 +-
 components/streams/src/stream.cpp   | 8 +++++---
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/components/audio/src/source.cpp b/components/audio/src/source.cpp
index 15b99c086..904433edf 100644
--- a/components/audio/src/source.cpp
+++ b/components/audio/src/source.cpp
@@ -110,6 +110,7 @@ Source::Source(nlohmann::json &config) : ftl::Configurable(config), buffer_(4800
         // Remove one interval since the audio starts from the last frame
 		frameset_.timestamp = ts - ftl::timer::getInterval();
 
+		frameset_.id = 0;
 		frameset_.count = 1;
 		frameset_.stale = false;
 
diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp
index 1151f1e34..8ed25bf4c 100644
--- a/components/streams/src/receiver.cpp
+++ b/components/streams/src/receiver.cpp
@@ -125,6 +125,7 @@ void Receiver::_processAudio(const StreamPacket &spkt, const Packet &pkt) {
 	if (audio_cb_) {
 		// Create an audio frameset wrapper.
 		ftl::audio::FrameSet fs;
+		fs.id = 0;
 		fs.timestamp = frame.timestamp;
 		fs.count = 1;
 		fs.stale = false;
diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp
index a32a4a848..0068f5ad3 100644
--- a/components/streams/src/sender.cpp
+++ b/components/streams/src/sender.cpp
@@ -66,7 +66,7 @@ void Sender::post(const ftl::audio::FrameSet &fs) {
 		StreamPacket spkt;
 		spkt.version = 4;
 		spkt.timestamp = fs.timestamp;
-		spkt.streamID = 0; //fs.id;
+		spkt.streamID = fs.id;
 		spkt.frame_number = i;
 		spkt.channel = Channel::Audio;
 
diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp
index 2ece7be12..23cd06598 100644
--- a/components/streams/src/stream.cpp
+++ b/components/streams/src/stream.cpp
@@ -132,9 +132,11 @@ int Muxer::_lookup(int sid, int ssid) {
 		lk.unlock();
 		{
 			UNIQUE_LOCK(mutex_, lk2);
-			int nid = nid_++;
-			se.maps.push_back(nid);
-			revmap_.push_back({sid,ssid});
+			if (ssid >= se.maps.size()) {
+				int nid = nid_++;
+				se.maps.push_back(nid);
+				revmap_.push_back({sid,ssid});
+			}
 		}
 		lk.lock();
 	}
-- 
GitLab