From d9fd6e1a1d0fdfdf9eb4b6fead8dc7ea62f8ec23 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Tue, 21 Jul 2020 09:49:25 +0300 Subject: [PATCH] Limit render fps --- components/streams/include/ftl/streams/builder.hpp | 4 ++++ components/streams/src/builder.cpp | 3 +++ components/streams/src/feed.cpp | 3 +++ 3 files changed, 10 insertions(+) diff --git a/components/streams/include/ftl/streams/builder.hpp b/components/streams/include/ftl/streams/builder.hpp index 844e7123b..c13e97901 100644 --- a/components/streams/include/ftl/streams/builder.hpp +++ b/components/streams/include/ftl/streams/builder.hpp @@ -119,8 +119,12 @@ class ManualSourceBuilder : public LocalBuilder { void tick(); + inline void setFrameRate(int fps) { mspf_ = 1000/fps; }; + private: ftl::data::DiscreteSource *src_; + int mspf_ = 30; + int64_t last_timestamp_=0; }; class ForeignBuilder : public BaseBuilder { diff --git a/components/streams/src/builder.cpp b/components/streams/src/builder.cpp index ab0991a53..7dc8400c2 100644 --- a/components/streams/src/builder.cpp +++ b/components/streams/src/builder.cpp @@ -171,6 +171,9 @@ void ManualSourceBuilder::tick() { if (!src_) return; int64_t ts = ftl::timer::get_time(); + if (ts < last_timestamp_ + mspf_) return; + last_timestamp_ = ts; + src_->capture(ts); auto fs = getNextFrameSet(ts); diff --git a/components/streams/src/feed.cpp b/components/streams/src/feed.cpp index 1a61885e0..cd1681459 100644 --- a/components/streams/src/feed.cpp +++ b/components/streams/src/feed.cpp @@ -643,6 +643,9 @@ uint32_t Feed::add(const std::string &path) { // Create local builder instance auto *creator = new ftl::streams::ManualSourceBuilder(pool_.get(), fsid, source); + if (uri.getBaseURI() == "device::openvr") creator->setFrameRate(1000); + else creator->setFrameRate(30); + std::shared_ptr<ftl::streams::BaseBuilder> creatorptr(creator); lk.lock(); receiver_->registerBuilder(creatorptr); -- GitLab