Commit 8d78f0db884815263214441e5974936a711e405f

Authored by Charles Otto
1 parent d1ae1645

Fix FPSSynch, rename FPSLimit

Fix a bug in FPSSynch, also rename it FPSLimit because it only reduces the max
frame rate of an algorithm, it doesn't do frame dropping or anything.
Showing 1 changed file with 13 additions and 8 deletions
openbr/plugins/gui.cpp
... ... @@ -220,16 +220,16 @@ signals:
220 220  
221 221 BR_REGISTER(Transform, ShowTransform)
222 222  
223   -class FPSSynch : public TimeVaryingTransform
  223 +class FPSLimit : public TimeVaryingTransform
224 224 {
225 225 Q_OBJECT
226 226 Q_PROPERTY(int targetFPS READ get_targetFPS WRITE set_targetFPS RESET reset_targetFPS STORED false)
227 227 BR_PROPERTY(int, targetFPS, 30)
228 228  
229 229 public:
230   - FPSSynch() : TimeVaryingTransform(false, false) {}
  230 + FPSLimit() : TimeVaryingTransform(false, false) {}
231 231  
232   - ~FPSSynch() {}
  232 + ~FPSLimit() {}
233 233  
234 234 void train(const TemplateList &data) { (void) data; }
235 235  
... ... @@ -237,16 +237,19 @@ public:
237 237 void projectUpdate(const TemplateList &src, TemplateList &dst)
238 238 {
239 239 dst = src;
240   - qint64 time_delta = timer.elapsed();
  240 + qint64 current_time = timer.elapsed();
  241 + qint64 target_time = last_time + target_wait;
  242 + qint64 wait_time = target_time - current_time;
241 243  
242   - qint64 wait_time = target_wait - time_delta;
243   - timer.start();
  244 + last_time = current_time;
244 245  
  246 + qDebug("time is %d wait is %d", current_time, wait_time);
245 247 if (wait_time < 0) {
246 248 return;
247 249 }
248 250  
249 251 QThread::msleep(wait_time);
  252 + last_time = timer.elapsed();
250 253 }
251 254  
252 255 void finalize(TemplateList & output)
... ... @@ -256,15 +259,17 @@ public:
256 259  
257 260 void init()
258 261 {
259   - target_wait = 1000 / targetFPS;
  262 + target_wait = 1000.0 / targetFPS;
260 263 timer.start();
  264 + last_time = timer.elapsed();
261 265 }
262 266  
263 267 protected:
264 268 QElapsedTimer timer;
265 269 qint64 target_wait;
  270 + qint64 last_time;
266 271 };
267   -BR_REGISTER(Transform, FPSSynch)
  272 +BR_REGISTER(Transform, FPSLimit)
268 273  
269 274 class FPSCalc : public TimeVaryingTransform
270 275 {
... ...