From 69a70ef632d136e735ea1acc2a4dc23998e892f9 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Wed, 5 Oct 2011 09:39:32 +0000 Subject: [PATCH] emotion: FPS tracking. SVN revision: 63830 --- .../src/modules/gstreamer/emotion_gstreamer.c | 3 +++ .../src/modules/gstreamer/emotion_gstreamer.h | 6 +++++ .../src/modules/gstreamer/emotion_sink.c | 27 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.c b/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.c index 48a6e6a727..1e9a40fd58 100644 --- a/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.c +++ b/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.c @@ -8,6 +8,7 @@ #include "Emotion.h" int _emotion_gstreamer_log_domain = -1; +Eina_Bool debug_fps = EINA_FALSE; /* Callbacks to get the eos */ static void _for_each_tag (GstTagList const* list, gchar const* tag, void *data); @@ -1279,6 +1280,8 @@ module_open(Evas_Object *obj, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _ecore_event_x_destroy, NULL); + if (getenv("EMOTION_FPS_DEBUG")) debug_fps = EINA_TRUE; + eina_threads_init(); *module = &em_module; diff --git a/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.h b/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.h index c4afd13750..2ed284fc9b 100644 --- a/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.h +++ b/legacy/emotion/src/modules/gstreamer/emotion_gstreamer.h @@ -125,6 +125,11 @@ struct _Emotion_Gstreamer_Video int in; int out; + int frames; + int flapse; + double rtime; + double rlapse; + struct { int width; @@ -201,6 +206,7 @@ struct _Emotion_Gstreamer_Message GstMessage *msg; }; +extern Eina_Bool debug_fps; extern int _emotion_gstreamer_log_domain; #define DBG(...) EINA_LOG_DOM_DBG(_emotion_gstreamer_log_domain, __VA_ARGS__) #define INF(...) EINA_LOG_DOM_INFO(_emotion_gstreamer_log_domain, __VA_ARGS__) diff --git a/legacy/emotion/src/modules/gstreamer/emotion_sink.c b/legacy/emotion/src/modules/gstreamer/emotion_sink.c index f2273b7980..cc0fe49fbe 100644 --- a/legacy/emotion/src/modules/gstreamer/emotion_sink.c +++ b/legacy/emotion/src/modules/gstreamer/emotion_sink.c @@ -648,6 +648,31 @@ evas_video_sink_render(GstBaseSink* bsink, GstBuffer* buffer) return GST_FLOW_OK; } +static void +_update_emotion_fps(Emotion_Gstreamer_Video *ev) +{ + double tim; + + if (!debug_fps) return ; + + tim = ecore_time_get(); + ev->frames++; + + if (ev->rlapse == 0.0) + { + ev->rlapse = tim; + ev->flapse = ev->frames; + } + else if ((tim - ev->rlapse) >= 0.5) + { + printf("FRAME: %i, FPS: %3.1f\n", + ev->frames, + (ev->frames - ev->flapse) / (tim - ev->rlapse)); + ev->rlapse = tim; + ev->flapse = ev->frames; + } +} + static void evas_video_sink_samsung_main_render(void *data) { @@ -719,6 +744,8 @@ evas_video_sink_samsung_main_render(void *data) evas_object_image_size_set(priv->o, stride, elevation); evas_object_image_fill_set(priv->o, 0, 0, send->ev->fill.width, send->ev->fill.height); + _update_emotion_fps(send->ev); + evas_data = evas_object_image_data_get(priv->o, 1); if (priv->func)