39d714ed94382ee979257933c5665fe528ffab67
[platform/upstream/gstreamer.git] / docs / gst / tmpl / gstpadtemplate.sgml
1 <!-- ##### SECTION Title ##### -->
2 GstPadTemplate
3
4 <!-- ##### SECTION Short_Description ##### -->
5 Describe the media type of a pad.
6
7 <!-- ##### SECTION Long_Description ##### -->
8 <para>
9 Padtemplates describe the possible media types a pad or an elementfactory can
10 handle. 
11 </para>
12 <para>
13 Pad and PadTemplates have #GstCaps attached to it to describe the media type they
14 are capable of dealing with.  gst_padtemplate_get_caps() is used to get the
15 caps of a padtemplate. It's not possible to modify the caps of a padtemplate after
16 creation. 
17 </para>
18 <para>
19 Padtemplates can be created with gst_padtemplate_new() or with the convenient
20 GST_PADTEMPLATE_FACTORY() macro. A padtemplate can be used to create a pad or 
21 to add to an elementfactory.
22 </para>
23 <para>
24 The following code example shows the code to create a pad from a padtemplate.
25 <programlisting>
26   GST_PADTEMPLATE_FACTORY (my_template_factory,
27     "sink",             /* the name of the pad */
28     GST_PAD_SINK,       /* the direction of the pad */
29     GST_PAD_ALWAYS,     /* when this pad will be present */
30     GST_CAPS_NEW (      /* the capabilities of the padtemplate */
31       "my_caps",
32       "audio/raw",
33         "format",       GST_PROPS_STRING ("int"),
34         "channels",     GST_PROPS_INT_RANGE (1, 6)
35     )
36   )
37
38   void
39   my_method (void) 
40   {
41     GstPad *pad;
42   
43     pad = gst_pad_new_from_template (GST_PADTEMPLATE_GET (my_template_factory), "sink");
44     ...
45   }
46 </programlisting>
47 </para>
48 <para>
49 The following example shows you how to add the padtemplate to an elementfactory:
50 <programlisting>
51   gboolean
52   my_factory_init (GstPlugin *plugin)
53   {
54     GstElementFactory *factory;
55
56     factory = gst_elementfactory_new ("my_factory", GST_TYPE_MYFACTORY, &amp;gst_myfactory_details);
57     g_return_val_if_fail (factory != NULL, FALSE);
58
59     gst_elementfactory_add_padtemplate (factory, GST_PADTEMPLATE_GET (my_template_factory));
60
61     gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
62
63     return TRUE;
64   }
65
66 </programlisting>
67 </para>
68
69 <!-- ##### SECTION See_Also ##### -->
70 <para>
71 #GstPad, #GstElementFactory
72 </para>
73
74 <!-- ##### ENUM GstPadPresence ##### -->
75 <para>
76 Indicates when this pad will become available.
77 </para>
78
79 @GST_PAD_ALWAYS: the pad is always available
80 @GST_PAD_SOMETIMES: the pad will become available depending on the media stream
81 @GST_PAD_REQUEST: th pad is only available on request with 
82 gst_element_request_pad_by_name() or gst_element_request_compatible_pad().
83
84 <!-- ##### STRUCT GstPadTemplate ##### -->
85 <para>
86
87 </para>
88
89
90 <!-- ##### MACRO GST_PADTEMPLATE_CAPS ##### -->
91 <para>
92 Get a handle to the padtemplate #GstCaps
93 </para>
94
95 @templ: the template to query
96
97
98 <!-- ##### MACRO GST_PADTEMPLATE_DIRECTION ##### -->
99 <para>
100 Get the direction of the padtemplate.
101 </para>
102
103 @templ: the template to query
104
105
106 <!-- ##### MACRO GST_PADTEMPLATE_NAME_TEMPLATE ##### -->
107 <para>
108 Get the nametemplate of the padtemplate.
109 </para>
110
111 @templ: the template to query
112
113
114 <!-- ##### MACRO GST_PADTEMPLATE_PRESENCE ##### -->
115 <para>
116 Get the presence of the padtemplate.
117 </para>
118
119 @templ: the template to query
120
121
122 <!-- ##### MACRO GST_PADTEMPLATE_NEW ##### -->
123 <para>
124 Create a new padtemplate.
125 </para>
126
127 @padname: the nametemplate for the pads that will be created with this template
128 @dir: the direction of the pads.
129 @pres: the presence of the pads.
130 @a...: the capabilities of this padtemplate usually created with GST_CAPS_NEW()
131
132
133 <!-- ##### MACRO GST_PADTEMPLATE_FACTORY ##### -->
134 <para>
135 Create a factory for a padtemplate. This can be used if you only want one instance
136 of the padtemplate. Use GST_PADTEMPLATE_GET() to get the unique padtemplate.
137 </para>
138
139 @name: th name of the factory
140 @padname: the nametemplate of the pads
141 @dir: the direction of the pads.
142 @pres: the presence of the pads.
143 @a...: the capabilities of this padtemplate, usually created with GST_CAPS_NEW()
144
145
146 <!-- ##### MACRO GST_PADTEMPLATE_GET ##### -->
147 <para>
148 Get the padtemplate of the factory created with GST_PADTEMPLATE_FACTORY()
149 </para>
150
151 @fact: the factory name to get the padtemplate from.
152
153
154 <!-- ##### FUNCTION gst_padtemplate_new ##### -->
155 <para>
156
157 </para>
158
159 @name_template: 
160 @direction: 
161 @presence: 
162 @caps: 
163 @Varargs: 
164 @Returns: 
165
166
167 <!-- ##### FUNCTION gst_padtemplate_load_thyself ##### -->
168 <para>
169
170 </para>
171
172 @parent: 
173 @Returns: 
174
175
176 <!-- ##### FUNCTION gst_padtemplate_save_thyself ##### -->
177 <para>
178
179 </para>
180
181 @templ: 
182 @parent: 
183 @Returns: 
184
185
186 <!-- ##### FUNCTION gst_padtemplate_get_caps ##### -->
187 <para>
188
189 </para>
190
191 @templ: 
192 @Returns: 
193
194
195 <!-- ##### FUNCTION gst_padtemplate_get_caps_by_name ##### -->
196 <para>
197
198 </para>
199
200 @templ: 
201 @name: 
202 @Returns: 
203
204
205 <!-- ##### SIGNAL GstPadTemplate::pad-created ##### -->
206 <para>
207
208 </para>
209
210 @gstpadtemplate: the object which received the signal.
211 @arg1: 
212