## GstTracer GstTracer — Tracing base class |

## Functions

gboolean | gst_tracer_register ()
void | gst_tracing_register_hook ()
void | (*GstTracerHookBinAddPost) ()
void | (*GstTracerHookBinAddPre) ()
void | (*GstTracerHookBinRemovePost) ()
void | (*GstTracerHookBinRemovePre) ()
void | (*GstTracerHookElementAddPad) ()
void | (*GstTracerHookElementChangeStatePost) ()
void | (*GstTracerHookElementChangeStatePre) ()
void | (*GstTracerHookElementNew) ()
void | (*GstTracerHookElementPostMessagePost) ()
void | (*GstTracerHookElementPostMessagePre) ()
void | (*GstTracerHookElementQueryPost) ()
void | (*GstTracerHookElementQueryPre) ()
void | (*GstTracerHookElementRemovePad) ()
void | (*GstTracerHookMiniObjectCreated) ()
void | (*GstTracerHookMiniObjectDestroyed) ()
void | (*GstTracerHookMiniObjectReffed) ()
void | (*GstTracerHookMiniObjectUnreffed) ()
void | (*GstTracerHookObjectCreated) ()
void | (*GstTracerHookObjectDestroyed) ()
void | (*GstTracerHookObjectReffed) ()
void | (*GstTracerHookObjectUnreffed) ()
void | (*GstTracerHookPadLinkPost) ()
void | (*GstTracerHookPadLinkPre) ()
void | (*GstTracerHookPadPullRangePost) ()
void | (*GstTracerHookPadPullRangePre) ()
void | (*GstTracerHookPadPushEventPost) ()
void | (*GstTracerHookPadPushEventPre) ()
void | (*GstTracerHookPadPushListPost) ()
void | (*GstTracerHookPadPushListPre) ()
void | (*GstTracerHookPadPushPost) ()
void | (*GstTracerHookPadPushPre) ()
void | (*GstTracerHookPadQueryPost) ()
void | (*GstTracerHookPadQueryPre) ()
void | (*GstTracerHookPadUnlinkPost) ()
void | (*GstTracerHookPadUnlinkPre) ()

## Properties

gchar * | params | Read / Write / Construct

## Types and Values

struct | GstTracer

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstTracer

## Includes

    #include <gst/gstprotection.h>

## Description

Tracing modules will subclass GstTracer and register through `gst_tracer_register()`. Modules can attach to various hook-types - see `gst_tracing_register_hook()`. When invoked they receive hook specific contextual data, which they must not modify.

## Functions

### gst_tracer_register ()

    gboolean
    gst_tracer_register (GstPlugin *plugin,
                         const gchar *name,
                         GType type);

Create a new tracer-factory capable of instantiating objects of the `type` and add the factory to `plugin` .

#### Parameters

plugin | A GstPlugin, or `NULL` for a static typefind function. | [allow-none]
name | The name for registering |
type | GType of tracer to register |

#### Returns

`TRUE`, if the registering succeeded, `FALSE` on error

### gst_tracing_register_hook ()

    void
    gst_tracing_register_hook (GstTracer *tracer,
                               const gchar *detail,
                               GCallback func);

Register `func` to be called when the trace hook `detail` is getting invoked. Use `NULL` for `detail` to register to all hooks.

#### Parameters

tracer | the tracer |
detail | the detailed hook |
func | the callback. | [scope async]

### GstTracerHookBinAddPost ()

    void
    (*GstTracerHookBinAddPost) (GObject *self,
                                GstClockTime ts,
                                GstBin *bin,
                                GstElement *element,
                                gboolean result);

Post-hook for `gst_bin_add()` named "bin-add-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
bin | the bin |
element | the element |
result | the result of `gst_bin_add()` |

### GstTracerHookBinAddPre ()

    void
    (*GstTracerHookBinAddPre) (GObject *self,
                               GstClockTime ts,
                               GstBin *bin,
                               GstElement *element);

Pre-hook for `gst_bin_add()` named "bin-add-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
bin | the bin |
element | the element |

### GstTracerHookBinRemovePost ()

    void
    (*GstTracerHookBinRemovePost) (GObject *self,
                                   GstClockTime ts,
                                   GstBin *bin,
                                   gboolean result);

Post-hook for `gst_bin_remove()` named "bin-remove-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
bin | the bin |
result | the result of `gst_bin_remove()` |

### GstTracerHookBinRemovePre ()

    void
    (*GstTracerHookBinRemovePre) (GObject *self,
                                  GstClockTime ts,
                                  GstBin *bin,
                                  GstElement *element);

Pre-hook for `gst_bin_remove()` named "bin-remove-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
bin | the bin |
element | the element |

### GstTracerHookElementAddPad ()

    void
    (*GstTracerHookElementAddPad) (GObject *self,
                                   GstClockTime ts,
                                   GstElement *element,
                                   GstPad *pad);

Hook for `gst_element_add_pad()` named "element-add-pad".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
pad | the pad |

### GstTracerHookElementChangeStatePost ()

    void
    (*GstTracerHookElementChangeStatePost)
                                   (GObject *self,
                                    GstClockTime ts,
                                    GstElement *element,
                                    GstStateChange transition,
                                    GstStateChangeReturn result);

Post-hook for `gst_element_change_state()` named "element-change-state-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
transition | the transition |
result | the result of `gst_pad_push()` |

### GstTracerHookElementChangeStatePre ()

    void
    (*GstTracerHookElementChangeStatePre) (GObject *self,
                                           GstClockTime ts,
                                           GstElement *element,
                                           GstStateChange transition);

Pre-hook for `gst_element_change_state()` named "element-change-state-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
transition | the transition |

### GstTracerHookElementNew ()

    void
    (*GstTracerHookElementNew) (GObject *self,
                                GstClockTime ts,
                                GstElement *element);

Hook for whenever a new element is created, named "element-new".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |

### GstTracerHookElementPostMessagePost ()

    void
    (*GstTracerHookElementPostMessagePost)
                                   (GObject *self,
                                    GstClockTime ts,
                                    GstElement *element,
                                    gboolean res);

Pre-hook for `gst_element_post_message()` named "element-post-message-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
res | the result of `gst_element_post_message()` |

### GstTracerHookElementPostMessagePre ()

    void
    (*GstTracerHookElementPostMessagePre) (GObject *self,
                                           GstClockTime ts,
                                           GstElement *element,
                                           GstMessage *message);

Pre-hook for `gst_element_post_message()` named "element-post-message-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
message | the message |

### GstTracerHookElementQueryPost ()

    void
    (*GstTracerHookElementQueryPost) (GObject *self,
                                      GstClockTime ts,
                                      GstElement *element,
                                      GstQuery *query,
                                      gboolean res);

Post-hook for `gst_element_query()` named "element-query-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
query | the query |
res | the result of `gst_element_query()` |

### GstTracerHookElementQueryPre ()

    void
    (*GstTracerHookElementQueryPre) (GObject *self,
                                     GstClockTime ts,
                                     GstElement *element,
                                     GstQuery *query);

Pre-hook for `gst_element_query()` named "element-query-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
query | the query |

### GstTracerHookElementRemovePad ()

    void
    (*GstTracerHookElementRemovePad) (GObject *self,
                                      GstClockTime ts,
                                      GstElement *element,
                                      GstPad *pad);

Hook for `gst_element_remove_pad()` named "element-remove-pad".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
element | the element |
pad | the pad |

### GstTracerHookMiniObjectCreated ()

    void
    (*GstTracerHookMiniObjectCreated) (GObject *self,
                                       GstClockTime ts,
                                       GstMiniObject *object);

Hook called when a GstMiniObject is created named "mini-object-created".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the mini object being created |

### GstTracerHookMiniObjectDestroyed ()

    void
    (*GstTracerHookMiniObjectDestroyed) (GObject *self,
                                         GstClockTime ts,
                                         GstMiniObject *object);

Hook called when a GstMiniObject is being destroyed named "mini-object-destroyed".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the mini object being destroyed |

### GstTracerHookMiniObjectReffed ()

    void
    (*GstTracerHookMiniObjectReffed) (GObject *self,
                                      GstClockTime ts,
                                      GstMiniObject *object,
                                      gint new_refcount);

Hook called when a GstMiniObject is being reffed named "mini-object-reffed".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the mini object being reffed |
refcount | the new refcount after refing `object` |

### GstTracerHookMiniObjectUnreffed ()

    void
    (*GstTracerHookMiniObjectUnreffed) (GObject *self,
                                        GstClockTime ts,
                                        GstMiniObject *object,
                                        gint new_refcount);

Hook called when a GstMiniObject is being unreffed named "mini-object-unreffed".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the mini object being unreffed |
refcount | the new refcount after unrefing `object` |

### GstTracerHookObjectCreated ()

    void
    (*GstTracerHookObjectCreated) (GObject *self,
                                   GstClockTime ts,
                                   GstObject *object);

Hook called when a GstObject is created named "object-created".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the object being created |

### GstTracerHookObjectDestroyed ()

    void
    (*GstTracerHookObjectDestroyed) (GObject *self,
                                     GstClockTime ts,
                                     GstObject *object);

Hook called when a GstObject is being destroyed named "object-destroyed".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the object being destroyed |

### GstTracerHookObjectReffed ()

    void
    (*GstTracerHookObjectReffed) (GObject *self,
                                  GstClockTime ts,
                                  GstObject *object,
                                  gint new_refcount);

Hook called when a GstObject is being reffed named "object-reffed".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the object being reffed |
refcount | the new refcount after refing `object` |

### GstTracerHookObjectUnreffed ()

    void
    (*GstTracerHookObjectUnreffed) (GObject *self,
                                    GstClockTime ts,
                                    GstObject *object,
                                    gint new_refcount);

Hook called when a GstObject is being unreffed named "object-unreffed"

#### Parameters

self | the tracer instance |
ts | the current timestamp |
object | the object being unreffed |
refcount | the new refcount after unrefing `object` |

### GstTracerHookPadLinkPost ()

    void
    (*GstTracerHookPadLinkPost) (GObject *self,
                                 GstClockTime ts,
                                 GstPad *srcpad,
                                 GstPad *sinkpad,
                                 GstPadLinkReturn result);

Post-hook for `gst_pad_link()` named "pad-link-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
srcpad | the srcpad |
sinkpad | the sinkpad |
result | the result of `gst_pad_link()` |

### GstTracerHookPadLinkPre ()

    void
    (*GstTracerHookPadLinkPre) (GObject *self,
                                GstClockTime ts,
                                GstPad *srcpad,
                                GstPad *sinkpad);

Pre-hook for `gst_pad_link()` named "pad-link-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
srcpad | the srcpad |
sinkpad | the sinkpad |

### GstTracerHookPadPullRangePost ()

    void
    (*GstTracerHookPadPullRangePost) (GObject *self,
                                      GstClockTime ts,
                                      GstPad *pad,
                                      GstBuffer *buffer,
                                      GstFlowReturn res);

Post-hook for `gst_pad_pull_range()` named "pad-pull-range-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
buffer | the buffer |
res | the result of `gst_pad_pull_range()` |

### GstTracerHookPadPullRangePre ()

    void
    (*GstTracerHookPadPullRangePre) (GObject *self,
                                     GstClockTime ts,
                                     GstPad *pad,
                                     guint64 offset,
                                     guint size);

Pre-hook for `gst_pad_pull_range()` named "pad-pull-range-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
offset | the stream offset |
size | the requested size |

### GstTracerHookPadPushEventPost ()

    void
    (*GstTracerHookPadPushEventPost) (GObject *self,
                                      GstClockTime ts,
                                      GstPad *pad,
                                      gboolean res);

Post-hook for `gst_pad_push_event()` named "pad-push-event-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
res | the result of `gst_pad_push_event()` |

### GstTracerHookPadPushEventPre ()

    void
    (*GstTracerHookPadPushEventPre) (GObject *self,
                                     GstClockTime ts,
                                     GstPad *pad,
                                     GstEvent *event);

Pre-hook for `gst_pad_push_event()` named "pad-push-event-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
event | the event |

### GstTracerHookPadPushListPost ()

    void
    (*GstTracerHookPadPushListPost) (GObject *self,
                                     GstClockTime ts,
                                     GstPad *pad,
                                     GstFlowReturn res);

Post-hook for `gst_pad_push_list()` named "pad-push-list-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
res | the result of `gst_pad_push_list()` |

### GstTracerHookPadPushListPre ()

    void
    (*GstTracerHookPadPushListPre) (GObject *self,
                                    GstClockTime ts,
                                    GstPad *pad,
                                    GstBufferList *list);

Pre-hook for `gst_pad_push_list()` named "pad-push-list-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
list | the buffer-list |

### GstTracerHookPadPushPost ()

    void
    (*GstTracerHookPadPushPost) (GObject *self,
                                 GstClockTime ts,
                                 GstPad *pad,
                                 GstFlowReturn res);

Post-hook for `gst_pad_push()` named "pad-push-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
res | the result of `gst_pad_push()` |

### GstTracerHookPadPushPre ()

    void
    (*GstTracerHookPadPushPre) (GObject *self,
                                GstClockTime ts,
                                GstPad *pad,
                                GstBuffer *buffer);

Pre-hook for `gst_pad_push()` named "pad-push-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
buffer | the buffer |

### GstTracerHookPadQueryPost ()

    void
    (*GstTracerHookPadQueryPost) (GObject *self,
                                  GstClockTime ts,
                                  GstPad *pad,
                                  GstQuery *query,
                                  gboolean res);

Post-hook for `gst_pad_query()` named "pad-query-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
query | the query |
res | the result of `gst_pad_query()` |

### GstTracerHookPadQueryPre ()

    void
    (*GstTracerHookPadQueryPre) (GObject *self,
                                 GstClockTime ts,
                                 GstPad *pad,
                                 GstQuery *query);

Pre-hook for `gst_pad_query()` named "pad-query-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
pad | the pad |
query | the query |

### GstTracerHookPadUnlinkPost ()

    void
    (*GstTracerHookPadUnlinkPost) (GObject *self,
                                   GstClockTime ts,
                                   GstPad *srcpad,
                                   GstPad *sinkpad,
                                   gboolean result);

Post-hook for `gst_pad_unlink()` named "pad-unlink-post".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
srcpad | the srcpad |
sinkpad | the sinkpad |
result | the result of `gst_pad_push()` |

### GstTracerHookPadUnlinkPre ()

    void
    (*GstTracerHookPadUnlinkPre) (GObject *self,
                                  GstClockTime ts,
                                  GstPad *srcpad,
                                  GstPad *sinkpad);

Pre-hook for `gst_pad_unlink()` named "pad-unlink-pre".

#### Parameters

self | the tracer instance |
ts | the current timestamp |
srcpad | the srcpad |
sinkpad | the sinkpad |

## Types and Values

### struct GstTracer

    struct GstTracer;

## Property Details

### The `“params”` property

      “params”                   gchar *

Extra configuration parameters.

Flags: Read / Write / Construct

Default value: NULL