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