diff --git a/components/streams/include/ftl/streams/netstream.hpp b/components/streams/include/ftl/streams/netstream.hpp index 1b7368779971b8b36ec6cb67520fd184e796a337..e804ac44bad69545835d2d6effb876db48c1f68d 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 fcce08aecabd2db49c86e69652483a68e7b34b24..5c0c3cf43f0f769347d9576b912917bc040e5bee 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);