[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