From a9419064ef1824a59e6bb2227f87a1e1cf9dd16a Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Tue, 7 Nov 2017 09:35:13 -0500 Subject: [PATCH] don't calc fps if no time has passed --- src/zm_monitor.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/zm_monitor.cpp b/src/zm_monitor.cpp index 7e0d4b630..b01b72208 100644 --- a/src/zm_monitor.cpp +++ b/src/zm_monitor.cpp @@ -2984,15 +2984,18 @@ Debug(4, "Return from Capture (%d)", captureResult); } else { now.tv_sec = image_buffer[index].timestamp->tv_sec; } - fps = double(fps_report_interval)/(now.tv_sec-last_fps_time); - Info( "%d -> %d -> %d", fps_report_interval, now, last_fps_time ); - //Info( "%d -> %d -> %lf -> %lf", now-last_fps_time, fps_report_interval/(now-last_fps_time), double(fps_report_interval)/(now-last_fps_time), fps ); - Info( "%s: %d - Capturing at %.2lf fps", name, image_count, fps ); - last_fps_time = now.tv_sec; - static char sql[ZM_SQL_SML_BUFSIZ]; - snprintf( sql, sizeof(sql), "UPDATE Monitors SET CaptureFPS='%.2lf' WHERE Id=%d", fps, id ); - if ( mysql_query( &dbconn, sql ) ) { - Error( "Can't run query: %s", mysql_error( &dbconn ) ); + // If we are too fast, we get div by zero. This seems to happen in the case of audio packets. + if ( now.tv_sec != last_fps_time ) { + fps = double(fps_report_interval)/(now.tv_sec-last_fps_time); + Info( "%d -> %d -> %d", fps_report_interval, now.tv_sec, last_fps_time ); + //Info( "%d -> %d -> %lf -> %lf", now-last_fps_time, fps_report_interval/(now-last_fps_time), double(fps_report_interval)/(now-last_fps_time), fps ); + Info( "%s: %d - Capturing at %.2lf fps", name, image_count, fps ); + last_fps_time = now.tv_sec; + static char sql[ZM_SQL_SML_BUFSIZ]; + snprintf( sql, sizeof(sql), "UPDATE Monitors SET CaptureFPS='%.2lf' WHERE Id=%d", fps, id ); + if ( mysql_query( &dbconn, sql ) ) { + Error( "Can't run query: %s", mysql_error( &dbconn ) ); + } } }