GstPadTemplate

GstPadTemplate — Describe the media type of a pad.

Functions

Properties

GstCaps * caps Read / Write / Construct Only
GstPadDirection direction 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

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_pad_template()).

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

Example 11. 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
8
static void
my_element_class_init (GstMyElementClass *klass)
{
  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);

  gst_element_class_add_pad_template (gstelement_class,
      gst_static_pad_template_get (&my_template));
}

Last reviewed on 2006-02-14 (0.10.3)

Functions

GST_STATIC_PAD_TEMPLATE()

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

Convenience macro to fill the values of a GstStaticPadTemplate structure.

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 full]


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_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]


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_get_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 “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