From df81adcb2263f643621649edcba4b4521456eb2b Mon Sep 17 00:00:00 2001 From: Barry <870709864@qq.com> Date: Mon, 29 Oct 2018 23:36:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B8=A7=E7=8E=87=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/QtScrcpy.pro | 6 ++-- src/fpscounter.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++ src/fpscounter.h | 32 ++++++++++++++++++++ 3 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 src/fpscounter.cpp create mode 100644 src/fpscounter.h 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