From 1678d77af6b063f930f36776b221da0e9b60d818 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 23 Apr 2015 17:18:32 -0700 Subject: [PATCH] Log DDE FPS after a reset --- interface/src/devices/DdeFaceTracker.cpp | 30 ++++++++++++++++++++++-- interface/src/devices/DdeFaceTracker.h | 6 +++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/interface/src/devices/DdeFaceTracker.cpp b/interface/src/devices/DdeFaceTracker.cpp index 03989c6ffb..9cf8942cf7 100644 --- a/interface/src/devices/DdeFaceTracker.cpp +++ b/interface/src/devices/DdeFaceTracker.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include @@ -136,6 +136,9 @@ struct Packet { const float STARTING_DDE_MESSAGE_TIME = 0.033f; +const int FPS_TIMER_DELAY = 2000; // ms +const int FPS_TIMER_DURATION = 2000; // ms + DdeFaceTracker::DdeFaceTracker() : DdeFaceTracker(QHostAddress::Any, DDE_SERVER_PORT, DDE_CONTROL_PORT) { @@ -168,7 +171,9 @@ DdeFaceTracker::DdeFaceTracker(const QHostAddress& host, quint16 serverPort, qui _lastLeftEyeBlink(0.0f), _filteredLeftEyeBlink(0.0f), _lastRightEyeBlink(0.0f), - _filteredRightEyeBlink(0.0f) + _filteredRightEyeBlink(0.0f), + _isCalculatingFPS(false), + _frameCount(0) { _coefficients.resize(NUM_FACESHIFT_BLENDSHAPES); @@ -229,6 +234,12 @@ void DdeFaceTracker::reset() { const char* DDE_RESET_COMMAND = "reset"; _udpSocket.writeDatagram(DDE_RESET_COMMAND, DDE_SERVER_ADDR, _controlPort); + // Log camera FPS after a reset + if (!_isCalculatingFPS) { + QTimer::singleShot(FPS_TIMER_DELAY, this, SLOT(startFPSTimer())); + _isCalculatingFPS = true; + } + _reset = true; } @@ -407,9 +418,24 @@ void DdeFaceTracker::decodePacket(const QByteArray& buffer) { + (1.0f - FRAME_AVERAGING_FACTOR) * (float)(usecsNow - _lastMessageReceived) / 1000000.0f; } _lastMessageReceived = usecsNow; + + // Count frames if timing + if (_isCalculatingFPS) { + _frameCount++; + } } else { qCDebug(interfaceapp) << "[Error] DDE Face Tracker Decode Error"; } _lastReceiveTimestamp = usecTimestampNow(); } + +void DdeFaceTracker::startFPSTimer() { + _frameCount = 0; + QTimer::singleShot(FPS_TIMER_DURATION, this, SLOT(finishFPSTimer())); +} + +void DdeFaceTracker::finishFPSTimer() { + qDebug() << "[Info] DDE FPS =" << (float)_frameCount / ((float)FPS_TIMER_DURATION / 1000.0f); + _isCalculatingFPS = false; +} diff --git a/interface/src/devices/DdeFaceTracker.h b/interface/src/devices/DdeFaceTracker.h index 506e2974b6..7cca1e31be 100644 --- a/interface/src/devices/DdeFaceTracker.h +++ b/interface/src/devices/DdeFaceTracker.h @@ -58,6 +58,9 @@ private slots: void socketErrorOccurred(QAbstractSocket::SocketError socketError); void readPendingDatagrams(); void socketStateChanged(QAbstractSocket::SocketState socketState); + + void startFPSTimer(); + void finishFPSTimer(); private: DdeFaceTracker(); @@ -108,6 +111,9 @@ private: float _filteredLeftEyeBlink; float _lastRightEyeBlink; float _filteredRightEyeBlink; + + bool _isCalculatingFPS; + int _frameCount; }; #endif // hifi_DdeFaceTracker_h \ No newline at end of file