diff --git a/src/QtScrcpy.pro b/src/QtScrcpy.pro index 5b9fff3..83b4096 100644 --- a/src/QtScrcpy.pro +++ b/src/QtScrcpy.pro @@ -33,7 +33,8 @@ SOURCES += \ server.cpp \ convert.cpp \ frames.cpp \ - yuvglwidget.cpp + yuvglwidget.cpp \ + fpscounter.cpp HEADERS += \ dialog.h \ @@ -42,7 +43,8 @@ HEADERS += \ server.h \ convert.h \ frames.h \ - yuvglwidget.h + yuvglwidget.h \ + fpscounter.h FORMS += \ dialog.ui diff --git a/src/fpscounter.cpp b/src/fpscounter.cpp new file mode 100644 index 0000000..255d51f --- /dev/null +++ b/src/fpscounter.cpp @@ -0,0 +1,74 @@ +#include + +#include "fpscounter.h" + +FpsCounter::FpsCounter() +{ + +} + +FpsCounter::~FpsCounter() +{ + +} + +void FpsCounter::fpsCounterInit() +{ + m_started = false; + // no need to initialize the other fields, they are meaningful only when + // started is true +} + +void FpsCounter::fpsCounterStart() +{ + m_started = true; + m_timeCounter.start(); + m_rendered = 0; +#ifdef SKIP_FRAMES + m_skipped = 0; +#endif +} + +void FpsCounter::fpsCounterStop() +{ + m_started = false; +} + +void FpsCounter::fpsCounterAddRenderedFrame() +{ + checkExpired(); + m_rendered++; +} + +void FpsCounter::checkExpired() +{ + if (m_timeCounter.elapsed() >= 1000) { + displayFps(); + m_timeCounter.restart(); + m_rendered = 0; +#ifdef SKIP_FRAMES + m_skipped = 0; +#endif + } +} + +void FpsCounter::displayFps() +{ +#ifdef SKIP_FRAMES + if (m_skipped) { + //qInfo << "%d fps (+%d frames skipped)", m_rendered, m_skipped); + } else { +#endif + //qInfo m_rendered << "fps"; +#ifdef SKIP_FRAMES + } +#endif +} + +#ifdef SKIP_FRAMES +void FpsCounter::fpsCounterAddSkippedFrame() +{ + checkExpired(); + m_skipped++; +} +#endif diff --git a/src/fpscounter.h b/src/fpscounter.h new file mode 100644 index 0000000..baac75c --- /dev/null +++ b/src/fpscounter.h @@ -0,0 +1,32 @@ +#ifndef FPSCOUNTER_H +#define FPSCOUNTER_H +#include + +class FpsCounter +{ +public: + FpsCounter(); + virtual ~FpsCounter(); + + void fpsCounterInit(); + void fpsCounterStart(); + void fpsCounterStop(); + void fpsCounterAddRenderedFrame(); +#ifdef SKIP_FRAMES + void fpsCounterAddSkippedFrame(); +#endif + +private: + void checkExpired(); + void displayFps(); + +private: + bool m_started = false; + QTime m_timeCounter; + quint32 m_rendered = 0; +#ifdef SKIP_FRAMES + quint32 m_skipped = 0; +#endif +}; + +#endif // FPSCOUNTER_H