## GstPadTemplate

GstPadTemplate — Describe the media type of a pad.

## Functions

#define | GST_STATIC_PAD_TEMPLATE()
GstPadTemplate * | gst_static_pad_template_get ()
GstCaps * | gst_static_pad_template_get_caps ()
#define | GST_PAD_TEMPLATE_NAME_TEMPLATE()
#define | GST_PAD_TEMPLATE_DIRECTION()
#define | GST_PAD_TEMPLATE_PRESENCE()
#define | GST_PAD_TEMPLATE_CAPS()
#define | GST_PAD_TEMPLATE_IS_FIXED()
#define | GST_PAD_TEMPLATE_GTYPE()
GstPadTemplate * | gst_pad_template_new ()
GstPadTemplate * | gst_pad_template_new_with_gtype ()
GstPadTemplate * | gst_pad_template_new_from_static_pad_template_with_gtype ()
GstCaps * | gst_pad_template_get_caps ()

## Properties

GstCaps * | caps | Read / Write / Construct Only
GstPadDirection | direction | Read / Write / Construct Only
GType * | gtype | Read / Write / Construct Only
gchar * | name-template | Read / Write / Construct Only
GstPadPresence | presence | Read / Write / Construct Only

## Signals

void | pad-created | Run Last

## Types and Values

struct | GstStaticPadTemplate
struct | GstPadTemplate
enum | GstPadTemplateFlags
enum | GstPadPresence

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstPadTemplate

## Includes

    #include <gst/gst.h>

## Description

Padtemplates describe the possible media types a pad or an elementfactory can handle. This allows for both inspection of handled types before loading the element plugin as well as identifying pads on elements that are not yet created (request or sometimes pads).

Pad and PadTemplates have GstCaps attached to it to describe the media type they are capable of dealing with. `gst_pad_template_get_caps()` or `GST_PAD_TEMPLATE_CAPS()` are used to get the caps of a padtemplate. It's not possible to modify the caps of a padtemplate after creation.

PadTemplates have a GstPadPresence property which identifies the lifetime of the pad and that can be retrieved with `GST_PAD_TEMPLATE_PRESENCE()`. Also the direction of the pad can be retrieved from the GstPadTemplate with `GST_PAD_TEMPLATE_DIRECTION()`.

The `GST_PAD_TEMPLATE_NAME_TEMPLATE()` is important for GST_PAD_REQUEST pads because it has to be used as the name in the `gst_element_get_request_pad()` call to instantiate a pad from this template.

Padtemplates can be created with `gst_pad_template_new()` or with `gst_static_pad_template_get()`, which creates a GstPadTemplate from a GstStaticPadTemplate that can be filled with the convenient `GST_STATIC_PAD_TEMPLATE()` macro.

A padtemplate can be used to create a pad (see `gst_pad_new_from_template()` or `gst_pad_new_from_static_template()`) or to add to an element class (see `gst_element_class_add_static_pad_template()`).

The following code example shows the code to create a pad from a padtemplate.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    GstStaticPadTemplate my_template =
    GST_STATIC_PAD_TEMPLATE (
      "sink",          // the name of the pad
      GST_PAD_SINK,    // the direction of the pad
      GST_PAD_ALWAYS,  // when this pad will be present
      GST_STATIC_CAPS (        // the capabilities of the padtemplate
        "audio/x-raw, "
          "channels = (int) [ 1, 6 ]"
      )
    );
    void
    my_method (void)
    {
      GstPad *pad;
      pad = gst_pad_new_from_static_template (&my_template, "sink");
      ...
    }

The following example shows you how to add the padtemplate to an element class, this is usually done in the class_init of the class:

    1
    2
    3
    4
    5
    6
    7

    static void
    my_element_class_init (GstMyElementClass *klass)
    {
      GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);

      gst_element_class_add_static_pad_template (gstelement_class, &my_template);
    }

## Functions

### GST_STATIC_PAD_TEMPLATE()

    #define             GST_STATIC_PAD_TEMPLATE(padname, dir, pres, caps)

Convenience macro to fill the values of a GstStaticPadTemplate structure. Example:

    1
    2
    3

    static GstStaticPadTemplate my_src_template = \
      GST_STATIC_PAD_TEMPLATE("src", GST_PAD_SRC, GST_PAD_ALWAYS,
                              GST_STATIC_CAPS_ANY);

#### Parameters

padname | the name template of the pad |
dir | the GstPadDirection of the pad |
pres | the GstPadPresence of the pad |
caps | the GstStaticCaps of the pad |

### gst_static_pad_template_get ()

    GstPadTemplate *
    gst_static_pad_template_get (GstStaticPadTemplate *pad_template);

Converts a GstStaticPadTemplate into a GstPadTemplate.

#### Parameters

pad_template | the static pad template |

#### Returns

a new GstPadTemplate.

[transfer floating][nullable]

### gst_static_pad_template_get_caps ()

    GstCaps *
    gst_static_pad_template_get_caps (GstStaticPadTemplate *templ);

Gets the capabilities of the static pad template.

#### Parameters

templ | a GstStaticPadTemplate to get capabilities of. |

#### Returns

the GstCaps of the static pad template. Unref after usage. Since the core holds an additional ref to the returned caps, use `gst_caps_make_writable()` on the returned caps to modify it.

[transfer full]

### GST_PAD_TEMPLATE_NAME_TEMPLATE()

    #define GST_PAD_TEMPLATE_NAME_TEMPLATE(templ) (((GstPadTemplate *)(templ))->name_template)

Get the nametemplate of the padtemplate.

#### Parameters

templ | the template to query |

### GST_PAD_TEMPLATE_DIRECTION()

    #define GST_PAD_TEMPLATE_DIRECTION(templ) (((GstPadTemplate *)(templ))->direction)

Get the GstPadDirection of the padtemplate.

#### Parameters

templ | the template to query |

### GST_PAD_TEMPLATE_PRESENCE()

    #define GST_PAD_TEMPLATE_PRESENCE(templ) (((GstPadTemplate *)(templ))->presence)

Get the GstPadPresence of the padtemplate.

#### Parameters

templ | the template to query |

### GST_PAD_TEMPLATE_CAPS()

    #define GST_PAD_TEMPLATE_CAPS(templ)		(((GstPadTemplate *)(templ))->caps)

Get a handle to the padtemplate GstCaps

#### Parameters

templ | the template to query |

### GST_PAD_TEMPLATE_IS_FIXED()

    #define GST_PAD_TEMPLATE_IS_FIXED(templ) (GST_OBJECT_FLAG_IS_SET(templ, GST_PAD_TEMPLATE_FIXED))

Check if the properties of the padtemplate are fixed

#### Parameters

templ | the template to query |

### GST_PAD_TEMPLATE_GTYPE()

    #define GST_PAD_TEMPLATE_GTYPE(templ)		(((GstPadTemplate *)(templ))->ABI.abi.gtype)

Get the GType of the padtemplate

#### Parameters

templ | the template to query |

Since: 1.14

### gst_pad_template_new ()

    GstPadTemplate *
    gst_pad_template_new (const gchar *name_template,
                          GstPadDirection direction,
                          GstPadPresence presence,
                          GstCaps *caps);

Creates a new pad template with a name according to the given template and with the given arguments.

#### Parameters

name_template | the name template. |
direction | the GstPadDirection of the template. |
presence | the GstPadPresence of the pad. |
caps | a GstCaps set for the template. | [transfer none]

#### Returns

a new GstPadTemplate.

[transfer floating][nullable]

### gst_pad_template_new_with_gtype ()

    GstPadTemplate *
    gst_pad_template_new_with_gtype (const gchar *name_template,
                                     GstPadDirection direction,
                                     GstPadPresence presence,
                                     GstCaps *caps,
                                     GType pad_type);

Creates a new pad template with a name according to the given template and with the given arguments.

#### Parameters

name_template | the name template. |
direction | the GstPadDirection of the template. |
presence | the GstPadPresence of the pad. |
caps | a GstCaps set for the template. | [transfer none]
pad_type | The GType of the pad to create |

#### Returns

a new GstPadTemplate.

[transfer floating][nullable]

Since: 1.14

### gst_pad_template_new_from_static_pad_template_with_gtype ()

    GstPadTemplate *
    gst_pad_template_new_from_static_pad_template_with_gtype
                                   (GstStaticPadTemplate *pad_template,
                                    GType pad_type);

Converts a GstStaticPadTemplate into a GstPadTemplate with a type.

#### Parameters

pad_template | the static pad template |
pad_type | The GType of the pad to create |

#### Returns

a new GstPadTemplate.

[transfer floating][nullable]

Since: 1.14

### gst_pad_template_get_caps ()

    GstCaps *
    gst_pad_template_get_caps (GstPadTemplate *templ);

Gets the capabilities of the pad template.

#### Parameters

templ | a GstPadTemplate to get capabilities of. |

#### Returns

the GstCaps of the pad template. Unref after usage.

[transfer full]

## Types and Values

### struct GstStaticPadTemplate

    struct GstStaticPadTemplate {
      const gchar     *name_template;
      GstPadDirection  direction;
      GstPadPresence   presence;
      GstStaticCaps    static_caps;
    };

Structure describing the GstStaticPadTemplate.

#### Members

const gchar *`name_template`; | the name of the template |
GstPadDirection `direction`; | the direction of the template |
GstPadPresence `presence`; | the presence of the template |
GstStaticCaps `static_caps`; | the caps of the template. |

### struct GstPadTemplate

    struct GstPadTemplate;

The padtemplate object.

### enum GstPadTemplateFlags

Flags for the padtemplate

#### Members

GST_PAD_TEMPLATE_FLAG_LAST | first flag that can be used by subclasses. |

### enum GstPadPresence

Indicates when this pad will become available.

#### Members

GST_PAD_ALWAYS | the pad is always available |
GST_PAD_SOMETIMES | the pad will become available depending on the media stream |
GST_PAD_REQUEST | the pad is only available on request with `gst_element_request_pad()`. |

## Property Details

### The `“caps”` property

      “caps”                     GstCaps *

The capabilities of the pad described by the pad template.

Flags: Read / Write / Construct Only

### The `“direction”` property

      “direction”                GstPadDirection

The direction of the pad described by the pad template.

Flags: Read / Write / Construct Only

Default value: GST_PAD_UNKNOWN

### The `“gtype”` property

      “gtype”                    GType *

The type of the pad described by the pad template.

Flags: Read / Write / Construct Only

Allowed values: void

Since: 1.14

### The `“name-template”` property

      “name-template”            gchar *

The name template of the pad template.

Flags: Read / Write / Construct Only

Default value: NULL

### The `“presence”` property

      “presence”                 GstPadPresence

When the pad described by the pad template will become available.

Flags: Read / Write / Construct Only

Default value: GST_PAD_ALWAYS

## Signal Details

### The `“pad-created”` signal

    void
    user_function (GstPadTemplate *pad_template,
                   GstPad         *pad,
                   gpointer        user_data)

This signal is fired when an element creates a pad from this template.

#### Parameters

pad_template | the object which received the signal. |
pad | the pad that was created. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

## See Also

GstPad, GstElementFactory