From c724cff9c72f5367223803618a3d64dec354361b Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Sat, 19 Sep 2020 09:28:33 +0300 Subject: [PATCH] Allow net stream pausing --- components/streams/include/ftl/streams/netstream.hpp | 1 + components/streams/src/netstream.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/components/streams/include/ftl/streams/netstream.hpp b/components/streams/include/ftl/streams/netstream.hpp index 1b7368779..e804ac44b 100644 --- a/components/streams/include/ftl/streams/netstream.hpp +++ b/components/streams/include/ftl/streams/netstream.hpp @@ -77,6 +77,7 @@ class Net : public Stream { float required_bps_; float actual_bps_; bool abr_enabled_; + bool paused_ = false; AdaptiveBitrate *abr_; diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp index fcce08aec..5c0c3cf43 100644 --- a/components/streams/src/netstream.cpp +++ b/components/streams/src/netstream.cpp @@ -77,6 +77,14 @@ Net::Net(nlohmann::json &config, ftl::net::Universe *net) : Stream(config), acti static_cast<uint8_t>(std::max(0, std::min(255, value("bitrate", 64)))); tally_ = 0; }); + + value("paused", false); + on("paused", [this]() { + paused_ = value("paused", false); + if (!paused_) { + reset(); + } + }); } Net::~Net() { @@ -178,6 +186,7 @@ bool Net::begin() { int64_t now = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now()).time_since_epoch().count(); if (!active_) return; + if (paused_) return; StreamPacket spkt = spkt_raw; spkt.localTimestamp = now - int64_t(ttimeoff); -- GitLab