Class PadTemplate

All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class PadTemplate extends GstObject

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

  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:

  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);
  }
  • Constructor Details

    • PadTemplate

      public PadTemplate(MemorySegment address)
      Create a PadTemplate instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • PadTemplate

      public PadTemplate(String nameTemplate, PadDirection direction, PadPresence presence, Caps caps)
      Creates a new pad template with a name according to the given template and with the given arguments.
      Parameters:
      nameTemplate - the name template.
      direction - the GstPadDirection of the template.
      presence - the GstPadPresence of the pad.
      caps - a GstCaps set for the template.
    • PadTemplate

      public PadTemplate()
      Create a new PadTemplate.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the PadTemplate class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected PadTemplate asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class GstObject
      Returns:
      the instance as if it were its parent type
    • fromStaticPadTemplateWithGtype

      public static @Nullable PadTemplate fromStaticPadTemplateWithGtype(StaticPadTemplate padTemplate, Type padType)
      Converts a GstStaticPadTemplate into a GstPadTemplate with a type.
      Parameters:
      padTemplate - the static pad template
      padType - The GType of the pad to create
      Returns:
      a new GstPadTemplate.
      Since:
      1.14
    • withGtype

      public static @Nullable PadTemplate withGtype(String nameTemplate, PadDirection direction, PadPresence presence, Caps caps, Type padType)
      Creates a new pad template with a name according to the given template and with the given arguments.
      Parameters:
      nameTemplate - the name template.
      direction - the GstPadDirection of the template.
      presence - the GstPadPresence of the pad.
      caps - a GstCaps set for the template.
      padType - The GType of the pad to create
      Returns:
      a new GstPadTemplate.
      Since:
      1.14
    • getCaps

      public Caps getCaps()
      Gets the capabilities of the pad template.
      Returns:
      the GstCaps of the pad template. Unref after usage.
    • getDocumentationCaps

      public Caps getDocumentationCaps()
      See gst_pad_template_set_documentation_caps().
      Returns:
      The caps to document. For convenience, this will return gst_pad_template_get_caps() when no documentation caps were set.
      Since:
      1.18
    • padCreated

      public void padCreated(Pad pad)
      Emit the pad-created signal for this template when created by this pad.
      Parameters:
      pad - the GstPad that created it
    • setDocumentationCaps

      public void setDocumentationCaps(Caps caps)
      Certain elements will dynamically construct the caps of their pad templates. In order not to let environment-specific information into the documentation, element authors should use this method to expose "stable" caps to the reader.
      Parameters:
      caps - the documented capabilities
      Since:
      1.18
    • onPadCreated

      This signal is fired when an element creates a pad from this template.
      Parameters:
      handler - the signal handler
      Returns:
      a signal handler ID to keep track of the signal connection
      See Also:
    • emitPadCreated

      public void emitPadCreated(@Nullable Pad pad)
      Emits the "pad-created" signal. See onPadCreated(PadTemplate.PadCreatedCallback).
    • builder

      public static PadTemplate.Builder<? extends PadTemplate.Builder> builder()
      A PadTemplate.Builder object constructs a PadTemplate with the specified properties. Use the various set...() methods to set properties, and finish construction with PadTemplate.Builder.build().
      Returns:
      the builder object