mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 21:51:09 +00:00
4b908e33e0
Original commit message from CVS: 2005-06-08 Andy Wingo <wingo@pobox.com> * gst/gstutils.c: RPAD fixes all around. (gst_element_link_pads): Refcounting fixes. * tools/gst-inspect.c: * tools/gst-xmlinspect.c: * parse/grammar.y: * gst/base/gsttypefindhelper.c: * gst/base/gstbasesink.c: * gst/gstqueue.c: RPAD fixes. * gst/gstghostpad.h: * gst/gstghostpad.c: New ghost pad implementation as full proxy pads. The tricky thing is they provide both source and sink interfaces, since they proxy the internal pad for the external pad, and vice versa. Implement with lower-level ProxyPad objects, with the interior proxy pad as a child of the exterior ghost pad. Should write a doc on this. * gst/gstpad.h: s/RPAD/PAD/, s/RealPad/Pad/. (gst_pad_set_name, gst_pad_set_parent): Macros removed, use gst_object API. * gst/gstpad.c: Big changes. No more stub base GstPad, now all pads are real pads. No ghost pads in this file. Not documenting the myriad s/RPAD/PAD/ and REALIZE fixes. (gst_pad_class_init): Add properties for "direction" and "template". Both are construct-only, so they can't change during the life of the pad. Fixes properly deriving from GstPad. (gst_pad_custom_new, gst_pad_custom_new_from_template): Gone. For derived objects, just set properties when creating the objects via g_object_new. (gst_pad_get_parent): Implement as a function, return NULL if the parent is not an element. (gst_pad_get_real_parent, gst_pad_add_ghost_pad) (gst_pad_remove_ghost_pad, gst_pad_realize): Removed. * gst/gstobject.c (gst_object_class_init): Make name a construct property. Don't set it in the object init. * gst/gstelement.c (gst_element_add_pad): Don't allow adding pads with UNKNOWN direction. (gst_element_add_ghost_pad): Remove non-orthogonal API. Replace with gst_element_add_pad (e, gst_ghost_pad_new (name, pad)). (gst_element_remove_pad): Remove ghost-pad special cases. (gst_element_pads_activate): Remove rpad cruft. * gst/gstbin.c (gst_bin_change_state): Use gst_pad_get_parent to catch the pad's-parent-not-an-element case. * gst/gst.h: Include gstghostpad.h. * gst/gst.c (init_post): No more real, ghost pads. * gst/Makefile.am: Add gstghostpad.[ch]. * check/Makefile.am: * check/gst/gstbin.c: * check/gst/gstghostpad.c (test_ghost_pads): Check that linking into a bin creates ghost pads, and that the refcounts are right. Partly moved from gstbin.c.
190 lines
3.9 KiB
Text
190 lines
3.9 KiB
Text
<!-- ##### SECTION Title ##### -->
|
|
GstPadTemplate
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
Describe the media type of a pad.
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
<para>
|
|
Padtemplates describe the possible media types a pad or an elementfactory can
|
|
handle.
|
|
</para>
|
|
<para>
|
|
Pad and PadTemplates have #GstCaps attached to it to describe the media type they
|
|
are capable of dealing with. gst_pad_template_get_caps() is used to get the
|
|
caps of a padtemplate. It's not possible to modify the caps of a padtemplate after
|
|
creation.
|
|
</para>
|
|
<para>
|
|
Padtemplates can be created with gst_pad_template_new() or with the convenient
|
|
GST_PAD_TEMPLATE_FACTORY() macro. A padtemplate can be used to create a pad or
|
|
to add to an elementfactory.
|
|
</para>
|
|
<para>
|
|
The following code example shows the code to create a pad from a padtemplate.
|
|
<example>
|
|
<title>Create a pad from a padtemplate</title>
|
|
<programlisting>
|
|
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-int, "
|
|
"channels = (int) [ 1, 6 ]"
|
|
)
|
|
)
|
|
|
|
void
|
|
my_method (void)
|
|
{
|
|
GstPad *pad;
|
|
|
|
pad = gst_pad_new_from_template (GST_PAD_TEMPLATE_GET (my_template_factory), "sink");
|
|
...
|
|
}
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
The following example shows you how to add the padtemplate to an elementfactory:
|
|
<programlisting>
|
|
gboolean
|
|
my_factory_init (GstPlugin *plugin)
|
|
{
|
|
GstElementFactory *factory;
|
|
|
|
factory = gst_element_factory_new ("my_factory", GST_TYPE_MYFACTORY, &gst_myfactory_details);
|
|
g_return_val_if_fail (factory != NULL, FALSE);
|
|
|
|
gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (my_template_factory));
|
|
|
|
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
</programlisting>
|
|
</para>
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
<para>
|
|
#GstPad, #GstElementFactory
|
|
</para>
|
|
|
|
<!-- ##### STRUCT GstPadTemplate ##### -->
|
|
<para>
|
|
The padtemplate object.
|
|
</para>
|
|
|
|
|
|
<!-- ##### SIGNAL GstPadTemplate::pad-created ##### -->
|
|
<para>
|
|
This signal is fired when an element creates a pad from this
|
|
template.
|
|
</para>
|
|
|
|
@gstpadtemplate: the object which received the signal.
|
|
@arg1: The pad that was created.
|
|
|
|
<!-- ##### STRUCT GstStaticPadTemplate ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@name_template:
|
|
@direction:
|
|
@presence:
|
|
@static_caps:
|
|
|
|
<!-- ##### MACRO GST_IS_PAD_FAST ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@obj:
|
|
|
|
|
|
<!-- ##### MACRO GST_PAD_TEMPLATE_NAME_TEMPLATE ##### -->
|
|
<para>
|
|
Get the nametemplate of the padtemplate.
|
|
</para>
|
|
|
|
@templ: the template to query
|
|
|
|
|
|
<!-- ##### MACRO GST_PAD_TEMPLATE_DIRECTION ##### -->
|
|
<para>
|
|
Get the direction of the padtemplate.
|
|
</para>
|
|
|
|
@templ: the template to query
|
|
|
|
|
|
<!-- ##### MACRO GST_PAD_TEMPLATE_PRESENCE ##### -->
|
|
<para>
|
|
Get the presence of the padtemplate.
|
|
</para>
|
|
|
|
@templ: the template to query
|
|
|
|
|
|
<!-- ##### MACRO GST_PAD_TEMPLATE_CAPS ##### -->
|
|
<para>
|
|
Get a handle to the padtemplate #GstCaps
|
|
</para>
|
|
|
|
@templ: the template to query
|
|
|
|
|
|
<!-- ##### MACRO GST_PAD_TEMPLATE_IS_FIXED ##### -->
|
|
<para>
|
|
Check if the properties of the padtemplate are fixed
|
|
</para>
|
|
|
|
@templ: the template to query
|
|
|
|
|
|
<!-- ##### ENUM GstPadTemplateFlags ##### -->
|
|
<para>
|
|
Flags for the padtemplate
|
|
</para>
|
|
|
|
@GST_PAD_TEMPLATE_FIXED: the padtemplate has no variable properties
|
|
@GST_PAD_TEMPLATE_FLAG_LAST: first flag that can be used by subclasses.
|
|
|
|
<!-- ##### FUNCTION gst_pad_template_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@name_template:
|
|
@direction:
|
|
@presence:
|
|
@caps:
|
|
@Returns:
|
|
<!-- # Unused Parameters # -->
|
|
@Varargs:
|
|
|
|
|
|
<!-- ##### FUNCTION gst_static_pad_template_get ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@pad_template:
|
|
@Returns:
|
|
<!-- # Unused Parameters # -->
|
|
@templ:
|
|
|
|
|
|
<!-- ##### FUNCTION gst_pad_template_get_caps ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@templ:
|
|
@Returns:
|
|
|
|
|