X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgsttracer.h;h=1d2726d7c2866f814e884de88617354166a236e8;hb=dac5966da6a0f53d0443dfa1ac239289028c415d;hp=56570771f87e61fc725a5118366d7d45a0b8e308;hpb=11d6e13d73034f433fc193ad25e3e6a5362c293e;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gsttracer.h b/gst/gsttracer.h index 5657077..1d2726d 100644 --- a/gst/gsttracer.h +++ b/gst/gsttracer.h @@ -1,7 +1,7 @@ /* GStreamer * Copyright (C) 2013 Stefan Sauer * - * gsttracer.h: tracing subsystem + * gsttracer.h: tracer base class * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -24,53 +24,11 @@ #include #include +#include #include -#include G_BEGIN_DECLS -#ifndef GST_DISABLE_GST_DEBUG - -/* hook flags and ids */ - -typedef enum -{ - GST_TRACER_HOOK_NONE = 0, - GST_TRACER_HOOK_BUFFERS = (1 << 0), - GST_TRACER_HOOK_EVENTS = (1 << 1), - GST_TRACER_HOOK_MESSAGES = (1 << 2), - GST_TRACER_HOOK_QUERIES = (1 << 3), - GST_TRACER_HOOK_TOPOLOGY = (1 << 4), - /* - GST_TRACER_HOOK_TIMER - */ - GST_TRACER_HOOK_ALL = (1 << 5) - 1 -} GstTracerHook; - -typedef enum -{ - GST_TRACER_HOOK_ID_BUFFERS = 0, - GST_TRACER_HOOK_ID_EVENTS, - GST_TRACER_HOOK_ID_MESSAGES, - GST_TRACER_HOOK_ID_QUERIES, - GST_TRACER_HOOK_ID_TOPLOGY, - /* - GST_TRACER_HOOK_ID_TIMER - */ - GST_TRACER_HOOK_ID_LAST -} GstTracerHookId; - -typedef enum -{ - GST_TRACER_MESSAGE_ID_PAD_PUSH_PRE = 0, - GST_TRACER_MESSAGE_ID_PAD_PUSH_POST, - GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_PRE, - GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_POST, - GST_TRACER_MESSAGE_ID_LAST -} GstTracerMessageId; - -/* tracing plugins */ - typedef struct _GstTracer GstTracer; typedef struct _GstTracerPrivate GstTracerPrivate; typedef struct _GstTracerClass GstTracerClass; @@ -90,77 +48,32 @@ struct _GstTracer { gpointer _gst_reserved[GST_PADDING]; }; -typedef void (*GstTracerInvokeFunction) (GstTracer * self, GstTracerHookId hid, - GstTracerMessageId mid, va_list var_args); - struct _GstTracerClass { GstObjectClass parent_class; - - /* plugin vmethods */ - GstTracerInvokeFunction invoke; - + /*< private >*/ gpointer _gst_reserved[GST_PADDING]; }; +GST_API GType gst_tracer_get_type (void); -/* tracing hooks */ +#ifdef GST_USE_UNSTABLE_API -void _priv_gst_tracer_init (void); -void _priv_gst_tracer_deinit (void); +GST_API +void gst_tracing_register_hook (GstTracer *tracer, const gchar *detail, + GCallback func); +/* tracing modules */ + +GST_API gboolean gst_tracer_register (GstPlugin * plugin, const gchar * name, GType type); -void gst_tracer_dispatch (GstTracerHookId hid, GstTracerMessageId mid, ...); - -extern gboolean _priv_tracer_enabled; -extern GList *_priv_tracers[GST_TRACER_HOOK_ID_LAST]; - -#define GST_TRACER_IS_ENABLED(id) \ - (_priv_tracer_enabled && (_priv_tracers[id] != NULL)) - -/* tracing hooks */ - -#define GST_TRACER_PAD_PUSH_PRE(pad, buffer) G_STMT_START{ \ - if (GST_TRACER_IS_ENABLED(GST_TRACER_HOOK_ID_BUFFERS)) { \ - gst_tracer_dispatch (GST_TRACER_HOOK_ID_BUFFERS, \ - GST_TRACER_MESSAGE_ID_PAD_PUSH_PRE, gst_util_get_timestamp (), \ - pad, buffer); \ - } \ -}G_STMT_END - -#define GST_TRACER_PAD_PUSH_POST(pad, res) G_STMT_START{ \ - if (GST_TRACER_IS_ENABLED(GST_TRACER_HOOK_ID_BUFFERS)) { \ - gst_tracer_dispatch (GST_TRACER_HOOK_ID_BUFFERS, \ - GST_TRACER_MESSAGE_ID_PAD_PUSH_POST, gst_util_get_timestamp (), \ - pad, res); \ - } \ -}G_STMT_END - -#define GST_TRACER_PAD_PUSH_LIST_PRE(pad, list) G_STMT_START{ \ - if (GST_TRACER_IS_ENABLED(GST_TRACER_HOOK_ID_BUFFERS)) { \ - gst_tracer_dispatch (GST_TRACER_HOOK_ID_BUFFERS, \ - GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_PRE, gst_util_get_timestamp (), \ - pad, list); \ - } \ -}G_STMT_END - -#define GST_TRACER_PAD_PUSH_LIST_POST(pad, res) G_STMT_START{ \ - if (GST_TRACER_IS_ENABLED(GST_TRACER_HOOK_ID_BUFFERS)) { \ - gst_tracer_dispatch (GST_TRACER_HOOK_ID_BUFFERS, \ - GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_POST, gst_util_get_timestamp (), \ - pad, res); \ - } \ -}G_STMT_END - -#else /* !GST_DISABLE_GST_DEBUG */ - -#define GST_TRACER_PAD_PUSH_PRE(pad, buffer) -#define GST_TRACER_PAD_PUSH_POST(pad, res) -#define GST_TRACER_PAD_PUSH_LIST_PRE(pad, list) -#define GST_TRACER_PAD_PUSH_LIST_POST(pad, res) - -#endif /* GST_DISABLE_GST_DEBUG */ + +#endif + +#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstTracer, gst_object_unref) +#endif G_END_DECLS