mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
fpsdisplaysink: Log final statistics on stop
Add a final message to the debug log that lists the min, max and average framerates when state of fpsdisplaysink transisions to NULL. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3988>
This commit is contained in:
parent
573eecac30
commit
56cc2132da
1 changed files with 22 additions and 7 deletions
|
@ -363,6 +363,9 @@ display_current_fps (gpointer data)
|
||||||
time_diff = (gdouble) (current_ts - self->last_ts) / GST_SECOND;
|
time_diff = (gdouble) (current_ts - self->last_ts) / GST_SECOND;
|
||||||
time_elapsed = (gdouble) (current_ts - self->start_ts) / GST_SECOND;
|
time_elapsed = (gdouble) (current_ts - self->start_ts) / GST_SECOND;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (time_diff <= 0 && time_elapsed <= 0))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
rr = (gdouble) (frames_rendered - self->last_frames_rendered) / time_diff;
|
rr = (gdouble) (frames_rendered - self->last_frames_rendered) / time_diff;
|
||||||
dr = (gdouble) (frames_dropped - self->last_frames_dropped) / time_diff;
|
dr = (gdouble) (frames_dropped - self->last_frames_dropped) / time_diff;
|
||||||
|
|
||||||
|
@ -476,6 +479,22 @@ no_text_overlay:
|
||||||
static void
|
static void
|
||||||
fps_display_sink_stop (GstFPSDisplaySink * self)
|
fps_display_sink_stop (GstFPSDisplaySink * self)
|
||||||
{
|
{
|
||||||
|
gchar *fps_message;
|
||||||
|
gdouble time_elapsed, average_fps;
|
||||||
|
time_elapsed = (gdouble) (self->last_ts - self->start_ts) / GST_SECOND;
|
||||||
|
|
||||||
|
if (G_LIKELY (time_elapsed > 0))
|
||||||
|
average_fps = (gdouble) self->frames_rendered / time_elapsed;
|
||||||
|
else
|
||||||
|
average_fps = 0;
|
||||||
|
|
||||||
|
/* print the max and minimum fps values */
|
||||||
|
fps_message =
|
||||||
|
g_strdup_printf ("Max-fps: %0.2f, Min-fps: %0.2f, Average-fps: %0.2f",
|
||||||
|
self->max_fps, self->min_fps, average_fps);
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (self, "%s", fps_message);
|
||||||
|
|
||||||
if (self->text_overlay) {
|
if (self->text_overlay) {
|
||||||
gst_element_unlink (self->text_overlay, self->video_sink);
|
gst_element_unlink (self->text_overlay, self->video_sink);
|
||||||
gst_bin_remove (GST_BIN (self), self->text_overlay);
|
gst_bin_remove (GST_BIN (self), self->text_overlay);
|
||||||
|
@ -484,17 +503,13 @@ fps_display_sink_stop (GstFPSDisplaySink * self)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!self->silent) {
|
if (!self->silent) {
|
||||||
gchar *str;
|
|
||||||
|
|
||||||
/* print the max and minimum fps values */
|
|
||||||
str =
|
|
||||||
g_strdup_printf ("Max-fps: %0.2f, Min-fps: %0.2f", self->max_fps,
|
|
||||||
self->min_fps);
|
|
||||||
GST_OBJECT_LOCK (self);
|
GST_OBJECT_LOCK (self);
|
||||||
g_free (self->last_message);
|
g_free (self->last_message);
|
||||||
self->last_message = str;
|
self->last_message = fps_message;
|
||||||
GST_OBJECT_UNLOCK (self);
|
GST_OBJECT_UNLOCK (self);
|
||||||
g_object_notify_by_pspec ((GObject *) self, pspec_last_message);
|
g_object_notify_by_pspec ((GObject *) self, pspec_last_message);
|
||||||
|
} else {
|
||||||
|
g_free (fps_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_OBJECT_LOCK (self);
|
GST_OBJECT_LOCK (self);
|
||||||
|
|
Loading…
Reference in a new issue