tracer: switch to quarks and add another hook for buffer flow
authorStefan Sauer <ensonic@users.sf.net>
Sun, 27 Oct 2013 16:04:32 +0000 (17:04 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Mon, 5 Oct 2015 18:59:39 +0000 (20:59 +0200)
Use pre-defines quarks as this will be called quite often.

gst/gstpad.c
gst/gstquark.c
gst/gstquark.h
gst/gsttracer.c
gst/gsttracer.h

index e1a68fd..4c0340d 100644 (file)
@@ -4498,8 +4498,29 @@ __gst_pad_push (GstPad * pad, GstBuffer * buffer)
  *
  * MT safe.
  */
+#ifndef GST_DISABLE_GST_DEBUG
+static inline GstFlowReturn __gst_pad_push_list (GstPad * pad,
+    GstBufferList * list);
+#endif
+
 GstFlowReturn
 gst_pad_push_list (GstPad * pad, GstBufferList * list)
+#ifndef GST_DISABLE_GST_DEBUG
+{
+  const gboolean trace = gst_tracer_is_enabled (GST_TRACER_HOOK_ID_BUFFERS);
+  GstFlowReturn res;
+
+  if (trace)
+    gst_tracer_push_buffer_list_pre (pad, list);
+  res = __gst_pad_push_list (pad, list);
+  if (trace)
+    gst_tracer_push_buffer_list_post (pad, res);
+  return res;
+}
+
+static inline GstFlowReturn
+__gst_pad_push_list (GstPad * pad, GstBufferList * list)
+#endif
 {
   g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
   g_return_val_if_fail (GST_PAD_IS_SRC (pad), GST_FLOW_ERROR);
index cf5c766..7925247 100644 (file)
@@ -70,7 +70,9 @@ static const gchar *_quark_strings[] = {
   "GstMessageNeedContext", "GstMessageHaveContext", "context", "context-type",
   "GstMessageStreamStart", "group-id", "uri-redirection",
   "GstMessageDeviceAdded", "GstMessageDeviceRemoved", "device",
-  "uri-redirection-permanent"
+  "uri-redirection-permanent",
+  "push_buffer::pre", "push_buffer::post", "push_buffer_list::pre",
+  "push_buffer_list::post", ".ts", "return", "pad", "buffer", "list"
 };
 
 GQuark _priv_gst_quark_table[GST_QUARK_MAX];
index b8daeb0..969345a 100644 (file)
@@ -202,7 +202,16 @@ typedef enum _GstQuarkId
   GST_QUARK_MESSAGE_DEVICE_REMOVED = 171,
   GST_QUARK_DEVICE = 172,
   GST_QUARK_URI_REDIRECTION_PERMANENT = 173,
-  GST_QUARK_MAX = 174
+  GST_QUARK_PUSH_BUFFER_PRE = 174,
+  GST_QUARK_PUSH_BUFFER_POST = 175,
+  GST_QUARK_PUSH_BUFFER_LIST_PRE = 176,
+  GST_QUARK_PUSH_BUFFER_LIST_POST = 177,
+  GST_QUARK_DOT_TS = 178,
+  GST_QUARK_RETURN = 179,
+  GST_QUARK_PAD = 180,
+  GST_QUARK_BUFFER = 181,
+  GST_QUARK_LIST = 182,
+  GST_QUARK_MAX = 183
 } GstQuarkId;
 
 extern GQuark _priv_gst_quark_table[GST_QUARK_MAX];
index 2d0f703..29ee374 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "gst_private.h"
 #include "gstenumtypes.h"
+#include "gstquark.h"
 #include "gstregistry.h"
 #include "gsttracer.h"
 #include "gsttracerfactory.h"
@@ -295,19 +296,41 @@ dispatch (GstTracerHookId id, GstStructure * s)
 void
 gst_tracer_push_buffer_pre (GstPad * pad, GstBuffer * buffer)
 {
-  // TODO(ensonic): gst_structure_new_id
-  dispatch (GST_TRACER_HOOK_ID_BUFFERS, gst_structure_new ("push_buffer::pre",
-          ".ts", G_TYPE_UINT64, gst_util_get_timestamp (),
-          "pad", GST_TYPE_PAD, pad, "buffer", GST_TYPE_BUFFER, buffer, NULL));
+  dispatch (GST_TRACER_HOOK_ID_BUFFERS,
+      gst_structure_new_id (GST_QUARK (PUSH_BUFFER_PRE),
+          GST_QUARK (DOT_TS), G_TYPE_UINT64, gst_util_get_timestamp (),
+          GST_QUARK (PAD), GST_TYPE_PAD, pad,
+          GST_QUARK (BUFFER), GST_TYPE_BUFFER, buffer, NULL));
 }
 
 void
 gst_tracer_push_buffer_post (GstPad * pad, GstFlowReturn res)
 {
-  // TODO(ensonic): gst_structure_new_id
-  dispatch (GST_TRACER_HOOK_ID_BUFFERS, gst_structure_new ("push_buffer::post",
-          ".ts", G_TYPE_UINT64, gst_util_get_timestamp (),
-          "pad", GST_TYPE_PAD, pad, "return", G_TYPE_INT, res, NULL));
+  dispatch (GST_TRACER_HOOK_ID_BUFFERS,
+      gst_structure_new_id (GST_QUARK (PUSH_BUFFER_POST),
+          GST_QUARK (DOT_TS), G_TYPE_UINT64, gst_util_get_timestamp (),
+          GST_QUARK (PAD), GST_TYPE_PAD, pad,
+          GST_QUARK (RETURN), G_TYPE_INT, res, NULL));
+}
+
+void
+gst_tracer_push_buffer_list_pre (GstPad * pad, GstBufferList * list)
+{
+  dispatch (GST_TRACER_HOOK_ID_BUFFERS,
+      gst_structure_new_id (GST_QUARK (PUSH_BUFFER_LIST_PRE),
+          GST_QUARK (DOT_TS), G_TYPE_UINT64, gst_util_get_timestamp (),
+          GST_QUARK (PAD), GST_TYPE_PAD, pad,
+          GST_QUARK (LIST), GST_TYPE_BUFFER_LIST, list, NULL));
+}
+
+void
+gst_tracer_push_buffer_list_post (GstPad * pad, GstFlowReturn res)
+{
+  dispatch (GST_TRACER_HOOK_ID_BUFFERS,
+      gst_structure_new_id (GST_QUARK (PUSH_BUFFER_LIST_POST),
+          GST_QUARK (DOT_TS), G_TYPE_UINT64, gst_util_get_timestamp (),
+          GST_QUARK (PAD), GST_TYPE_PAD, pad,
+          GST_QUARK (RETURN), G_TYPE_INT, res, NULL));
 }
 
 #endif /* GST_DISABLE_GST_DEBUG */
index 026edb4..7bc1c22 100644 (file)
@@ -106,6 +106,8 @@ gboolean gst_tracer_is_enabled (GstTracerHookId id);
 void gst_tracer_push_buffer_pre (GstPad *pad, GstBuffer *buffer);
 void gst_tracer_push_buffer_post (GstPad *pad, GstFlowReturn res);
 
+void gst_tracer_push_buffer_list_pre (GstPad * pad, GstBufferList * list);
+void gst_tracer_push_buffer_list_post (GstPad * pad, GstFlowReturn res);
 
 #endif /* GST_DISABLE_GST_DEBUG */