[gst-cvs] gstreamer: queue: Register debug funcptr only once.

Edward Hervey bilboed at kemper.freedesktop.org
Tue Dec 1 10:30:54 PST 2009


Module: gstreamer
Branch: master
Commit: 44526720017c404551e3cbb8c263556a338c88d8
URL:    http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=44526720017c404551e3cbb8c263556a338c88d8

Author: Edward Hervey <bilboed at bilboed.com>
Date:   Tue Dec  1 19:29:25 2009 +0100

queue: Register debug funcptr only once.

Makes creating queue elements 3-4 times faster and avoids contention on the
global funcptr lock.

---

 plugins/elements/gstqueue.c |   50 ++++++++++++++++++++++--------------------
 1 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c
index eb78d94..b8aecda 100644
--- a/plugins/elements/gstqueue.c
+++ b/plugins/elements/gstqueue.c
@@ -352,6 +352,19 @@ gst_queue_class_init (GstQueueClass * klass)
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   gobject_class->finalize = gst_queue_finalize;
+
+  /* Registering debug symbols for function pointers */
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_chain);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_sink_activate_push);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_handle_sink_event);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_link_sink);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_getcaps);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_acceptcaps);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_bufferalloc);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_src_activate_push);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_link_src);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_handle_src_event);
+  GST_DEBUG_REGISTER_FUNCPTR (gst_queue_handle_src_query);
 }
 
 static void
@@ -359,36 +372,25 @@ gst_queue_init (GstQueue * queue, GstQueueClass * g_class)
 {
   queue->sinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink");
 
-  gst_pad_set_chain_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_chain));
+  gst_pad_set_chain_function (queue->sinkpad, gst_queue_chain);
   gst_pad_set_activatepush_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_sink_activate_push));
-  gst_pad_set_event_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_handle_sink_event));
-  gst_pad_set_link_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_link_sink));
-  gst_pad_set_getcaps_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_getcaps));
-  gst_pad_set_acceptcaps_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_acceptcaps));
-  gst_pad_set_bufferalloc_function (queue->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_queue_bufferalloc));
+      gst_queue_sink_activate_push);
+  gst_pad_set_event_function (queue->sinkpad, gst_queue_handle_sink_event);
+  gst_pad_set_link_function (queue->sinkpad, gst_queue_link_sink);
+  gst_pad_set_getcaps_function (queue->sinkpad, gst_queue_getcaps);
+  gst_pad_set_acceptcaps_function (queue->sinkpad, gst_queue_acceptcaps);
+  gst_pad_set_bufferalloc_function (queue->sinkpad, gst_queue_bufferalloc);
   gst_element_add_pad (GST_ELEMENT (queue), queue->sinkpad);
 
   queue->srcpad = gst_pad_new_from_static_template (&srctemplate, "src");
 
   gst_pad_set_activatepush_function (queue->srcpad,
-      GST_DEBUG_FUNCPTR (gst_queue_src_activate_push));
-  gst_pad_set_link_function (queue->srcpad,
-      GST_DEBUG_FUNCPTR (gst_queue_link_src));
-  gst_pad_set_acceptcaps_function (queue->srcpad,
-      GST_DEBUG_FUNCPTR (gst_queue_acceptcaps));
-  gst_pad_set_getcaps_function (queue->srcpad,
-      GST_DEBUG_FUNCPTR (gst_queue_getcaps));
-  gst_pad_set_event_function (queue->srcpad,
-      GST_DEBUG_FUNCPTR (gst_queue_handle_src_event));
-  gst_pad_set_query_function (queue->srcpad,
-      GST_DEBUG_FUNCPTR (gst_queue_handle_src_query));
+      gst_queue_src_activate_push);
+  gst_pad_set_link_function (queue->srcpad, gst_queue_link_src);
+  gst_pad_set_acceptcaps_function (queue->srcpad, gst_queue_acceptcaps);
+  gst_pad_set_getcaps_function (queue->srcpad, gst_queue_getcaps);
+  gst_pad_set_event_function (queue->srcpad, gst_queue_handle_src_event);
+  gst_pad_set_query_function (queue->srcpad, gst_queue_handle_src_query);
   gst_element_add_pad (GST_ELEMENT (queue), queue->srcpad);
 
   GST_QUEUE_CLEAR_LEVEL (queue->cur_level);





More information about the Gstreamer-commits mailing list