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