Search
SailfishOS Open Build Service
>
Projects
>
home:sledge
:
branches:nemo:devel:hw:ti:omap4:common
>
gst-plugins-bad
> 0001-fpsdisplaysink-add-properties-to-get-dropped-and-ren.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File 0001-fpsdisplaysink-add-properties-to-get-dropped-and-ren.patch of Package gst-plugins-bad
From 2cebc40ca189ba6d23e3170d51d280daead281ff Mon Sep 17 00:00:00 2001 From: benjamin gaignard <benjamin.gaignard@linaro.org> Date: Wed, 16 Mar 2011 09:50:34 +0100 Subject: [PATCH] fpsdisplaysink: add properties to get dropped and rendered values change frames_rendered and frames_dropped from guint64 to gint and make them atomic --- gst/debugutils/fpsdisplaysink.c | 33 ++++++++++++++++++++++++++------- gst/debugutils/fpsdisplaysink.h | 11 ++++------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/gst/debugutils/fpsdisplaysink.c b/gst/debugutils/fpsdisplaysink.c index aca421c..85776a5 100644 --- a/gst/debugutils/fpsdisplaysink.c +++ b/gst/debugutils/fpsdisplaysink.c @@ -81,7 +81,9 @@ enum ARG_FPS_UPDATE_INTERVAL, ARG_MAX_FPS, ARG_MIN_FPS, - ARG_SIGNAL_FPS_MEASUREMENTS + ARG_SIGNAL_FPS_MEASUREMENTS, + ARG_DROPPED, + ARG_RENDERED /* FILL ME */ }; @@ -148,6 +150,17 @@ fps_display_sink_class_init (GstFPSDisplaySinkClass * klass) "-1 means no measurement has yet been done", -1, G_MAXDOUBLE, -1, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); + g_object_class_install_property (gobject_klass, ARG_DROPPED, + g_param_spec_int ("frames-dropped", "dropped frames", + "Number of dropped frames", 0, G_MAXINT, 0, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); + + g_object_class_install_property (gobject_klass, ARG_RENDERED, + g_param_spec_int ("frames-rendered", "rendered frames", + "Number of rendered frames", 0, G_MAXINT, 0, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); + + g_object_class_install_property (gobject_klass, ARG_SIGNAL_FPS_MEASUREMENTS, g_param_spec_boolean ("signal-fps-measurements", "Signal fps measurements", @@ -217,9 +230,9 @@ on_video_sink_data_flow (GstPad * pad, GstMiniObject * mini_obj, gst_event_parse_qos (ev, NULL, &diff, &ts); if (diff <= 0.0) { - self->frames_rendered++; + g_atomic_int_inc (&self->frames_rendered); } else { - self->frames_dropped++; + g_atomic_int_inc (&self->frames_dropped); } ts = gst_util_get_timestamp (); @@ -332,8 +345,8 @@ display_current_fps (gpointer data) gdouble time_diff, time_elapsed; GstClockTime current_ts = gst_util_get_timestamp (); - frames_rendered = self->frames_rendered; - frames_dropped = self->frames_dropped; + frames_rendered = g_atomic_int_get (&self->frames_rendered); + frames_dropped = g_atomic_int_get (&self->frames_dropped); if ((frames_rendered + frames_dropped) == 0) { /* in case timer fired and we didn't yet get any QOS events */ @@ -402,8 +415,8 @@ fps_display_sink_start (GstFPSDisplaySink * self) GstPad *target_pad = NULL; /* Init counters */ - self->frames_rendered = G_GUINT64_CONSTANT (0); - self->frames_dropped = G_GUINT64_CONSTANT (0); + self->frames_rendered = 0; + self->frames_dropped = 0; self->last_frames_rendered = G_GUINT64_CONSTANT (0); self->last_frames_dropped = G_GUINT64_CONSTANT (0); self->max_fps = -1; @@ -552,6 +565,12 @@ fps_display_sink_get_property (GObject * object, guint prop_id, case ARG_MIN_FPS: g_value_set_double (value, self->min_fps); break; + case ARG_DROPPED: + g_value_set_int (value, g_atomic_int_get (&self->frames_dropped)); + break; + case ARG_RENDERED: + g_value_set_int (value, g_atomic_int_get (&self->frames_rendered)); + break; case ARG_SIGNAL_FPS_MEASUREMENTS: g_value_set_boolean (value, self->signal_measurements); break; diff --git a/gst/debugutils/fpsdisplaysink.h b/gst/debugutils/fpsdisplaysink.h index 6a01663..c73c2dc 100644 --- a/gst/debugutils/fpsdisplaysink.h +++ b/gst/debugutils/fpsdisplaysink.h @@ -23,7 +23,6 @@ #include <gst/gst.h> G_BEGIN_DECLS - #define GST_TYPE_FPS_DISPLAY_SINK \ (fps_display_sink_get_type()) #define GST_FPS_DISPLAY_SINK(obj) \ @@ -34,8 +33,7 @@ G_BEGIN_DECLS (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FPS_DISPLAY_SINK)) #define GST_IS_FPS_DISPLAY_SINK_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FPS_DISPLAY_SINK)) - -GType fps_display_sink_get_type (void); + GType fps_display_sink_get_type (void); typedef struct _GstFPSDisplaySink GstFPSDisplaySink; typedef struct _GstFPSDisplaySinkClass GstFPSDisplaySinkClass; @@ -44,15 +42,15 @@ struct _GstFPSDisplaySink { GstBin bin; - /*< private >*/ + /*< private > */ /* gstreamer components */ GstElement *text_overlay; GstElement *video_sink; GstPad *ghost_pad; /* statistics */ - guint64 frames_rendered, last_frames_rendered; - guint64 frames_dropped, last_frames_dropped; + gint frames_rendered, frames_dropped; + guint64 last_frames_rendered, last_frames_dropped; GstClockTime start_ts; GstClockTime last_ts; @@ -74,5 +72,4 @@ struct _GstFPSDisplaySinkClass }; G_END_DECLS - #endif /* __FPS_DISPLAY_SINK_H__ */ -- 1.7.0.4