element-maker: improve generation of several classes
[platform/upstream/gstreamer.git] / tools / srcpad.c
1
2 % instance-members
3   GstPad *srcpad;
4 % prototypes
5
6 static GstCaps* gst_replace_src_getcaps (GstPad *pad);
7 static gboolean gst_replace_src_setcaps (GstPad *pad, GstCaps *caps);
8 static gboolean gst_replace_src_acceptcaps (GstPad *pad, GstCaps *caps);
9 static void gst_replace_src_fixatecaps (GstPad *pad, GstCaps *caps);
10 static gboolean gst_replace_src_activate (GstPad *pad);
11 static gboolean gst_replace_src_activatepush (GstPad *pad, gboolean active);
12 static gboolean gst_replace_src_activatepull (GstPad *pad, gboolean active);
13 static GstPadLinkReturn gst_replace_src_link (GstPad *pad, GstPad *peer);
14 static void gst_replace_src_unlink (GstPad *pad);
15 static GstFlowReturn gst_replace_src_getrange (GstPad *pad, guint64 offset, guint length,
16     GstBuffer **buffer);
17 static gboolean gst_replace_src_event (GstPad *pad, GstEvent *event);
18 static gboolean gst_replace_src_query (GstPad *pad, GstQuery *query);
19 static GstIterator * gst_replace_src_iterintlink (GstPad *pad);
20
21 % pad-template
22 static GstStaticPadTemplate gst_replace_src_template =
23 GST_STATIC_PAD_TEMPLATE ("src",
24     GST_PAD_SRC,
25     GST_PAD_ALWAYS,
26     GST_STATIC_CAPS ("application/unknown")
27     );
28
29 % base-init
30   gst_element_class_add_pad_template (element_class,
31       gst_static_pad_template_get (&gst_replace_src_template));
32 % instance-init
33
34   replace->srcpad = gst_pad_new_from_static_template (&gst_replace_src_template
35       ,     
36             "src");
37   gst_pad_set_getcaps_function (replace->srcpad,
38             GST_DEBUG_FUNCPTR(gst_replace_src_getcaps));
39   gst_pad_set_setcaps_function (replace->srcpad,
40             GST_DEBUG_FUNCPTR(gst_replace_src_setcaps));
41   gst_pad_set_acceptcaps_function (replace->srcpad,
42             GST_DEBUG_FUNCPTR(gst_replace_src_acceptcaps));
43   gst_pad_set_fixatecaps_function (replace->srcpad,
44             GST_DEBUG_FUNCPTR(gst_replace_src_fixatecaps));
45   gst_pad_set_activate_function (replace->srcpad,
46             GST_DEBUG_FUNCPTR(gst_replace_src_activate));
47   gst_pad_set_activatepush_function (replace->srcpad,
48             GST_DEBUG_FUNCPTR(gst_replace_src_activatepush));
49   gst_pad_set_activatepull_function (replace->srcpad,
50             GST_DEBUG_FUNCPTR(gst_replace_src_activatepull));
51   gst_pad_set_link_function (replace->srcpad,
52             GST_DEBUG_FUNCPTR(gst_replace_src_link));
53   gst_pad_set_unlink_function (replace->srcpad,
54             GST_DEBUG_FUNCPTR(gst_replace_src_unlink));
55   gst_pad_set_getrange_function (replace->srcpad,
56             GST_DEBUG_FUNCPTR(gst_replace_src_getrange));
57   gst_pad_set_event_function (replace->srcpad,
58             GST_DEBUG_FUNCPTR(gst_replace_src_event));
59   gst_pad_set_query_function (replace->srcpad,
60             GST_DEBUG_FUNCPTR(gst_replace_src_query));
61   gst_pad_set_iterate_internal_links_function (replace->srcpad,
62             GST_DEBUG_FUNCPTR(gst_replace_src_iterintlink));
63   gst_element_add_pad (GST_ELEMENT(replace), replace->srcpad);
64
65
66 % methods
67
68 static GstCaps*
69 gst_replace_src_getcaps (GstPad *pad)
70 {
71   GstReplace *replace;
72   GstCaps *caps;
73
74   replace = GST_REPLACE (gst_pad_get_parent (pad));
75
76   GST_DEBUG_OBJECT(replace, "getcaps");
77
78   caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
79
80   gst_object_unref (replace);
81   return caps;
82 }
83
84 static gboolean
85 gst_replace_src_setcaps (GstPad *pad, GstCaps *caps)
86 {
87   GstReplace *replace;
88
89   replace = GST_REPLACE (gst_pad_get_parent (pad));
90
91   GST_DEBUG_OBJECT(replace, "setcaps");
92
93
94   gst_object_unref (replace);
95   return TRUE;
96 }
97
98 static gboolean
99 gst_replace_src_acceptcaps (GstPad *pad, GstCaps *caps)
100 {
101   GstReplace *replace;
102
103   replace = GST_REPLACE (gst_pad_get_parent (pad));
104
105   GST_DEBUG_OBJECT(replace, "acceptcaps");
106
107
108   gst_object_unref (replace);
109   return TRUE;
110 }
111
112 static void
113 gst_replace_src_fixatecaps (GstPad *pad, GstCaps *caps)
114 {
115   GstReplace *replace;
116
117   replace = GST_REPLACE (gst_pad_get_parent (pad));
118
119   GST_DEBUG_OBJECT(replace, "fixatecaps");
120
121
122   gst_object_unref (replace);
123 }
124
125 static gboolean
126 gst_replace_src_activate (GstPad *pad)
127 {
128   GstReplace *replace;
129   gboolean ret;
130
131   replace = GST_REPLACE (gst_pad_get_parent (pad));
132
133   GST_DEBUG_OBJECT(replace, "activate");
134
135   if (gst_pad_check_pull_range (pad)) {
136     GST_DEBUG_OBJECT (pad, "activating pull");
137     ret = gst_pad_activate_pull (pad, TRUE);
138   } else {
139     GST_DEBUG_OBJECT (pad, "activating push");
140     ret = gst_pad_activate_push (pad, TRUE);
141   }
142
143   gst_object_unref (replace);
144   return ret;
145 }
146
147 static gboolean
148 gst_replace_src_activatepush (GstPad *pad, gboolean active)
149 {
150   GstReplace *replace;
151
152   replace = GST_REPLACE (gst_pad_get_parent (pad));
153
154   GST_DEBUG_OBJECT(replace, "activatepush");
155
156
157   gst_object_unref (replace);
158   return TRUE;
159 }
160
161 static gboolean
162 gst_replace_src_activatepull (GstPad *pad, gboolean active)
163 {
164   GstReplace *replace;
165
166   replace = GST_REPLACE (gst_pad_get_parent (pad));
167
168   GST_DEBUG_OBJECT(replace, "activatepull");
169
170
171   gst_object_unref (replace);
172   return TRUE;
173 }
174
175 static GstPadLinkReturn
176 gst_replace_src_link (GstPad *pad, GstPad *peer)
177 {
178   GstReplace *replace;
179
180   replace = GST_REPLACE (gst_pad_get_parent (pad));
181
182   GST_DEBUG_OBJECT(replace, "link");
183
184
185   gst_object_unref (replace);
186   return GST_PAD_LINK_OK;
187 }
188
189 static void
190 gst_replace_src_unlink (GstPad *pad)
191 {
192   GstReplace *replace;
193
194   replace = GST_REPLACE (gst_pad_get_parent (pad));
195
196   GST_DEBUG_OBJECT(replace, "unlink");
197
198
199   gst_object_unref (replace);
200 }
201
202 static GstFlowReturn
203 gst_replace_src_getrange (GstPad *pad, guint64 offset, guint length,
204     GstBuffer **buffer)
205 {
206   GstReplace *replace;
207
208   replace = GST_REPLACE (gst_pad_get_parent (pad));
209
210   GST_DEBUG_OBJECT(replace, "getrange");
211
212
213   gst_object_unref (replace);
214   return GST_FLOW_OK;
215 }
216
217 static gboolean
218 gst_replace_src_event (GstPad *pad, GstEvent *event)
219 {
220   gboolean res;
221   GstReplace *replace;
222
223   replace = GST_REPLACE (gst_pad_get_parent (pad));
224
225   GST_DEBUG_OBJECT(replace, "event");
226
227   switch (GST_EVENT_TYPE (event)) {
228     default:
229       res = gst_pad_event_default (pad, event);
230       break;
231   }
232
233   gst_object_unref (replace);
234   return res;
235 }
236
237 static gboolean
238 gst_replace_src_query (GstPad *pad, GstQuery *query)
239 {
240   gboolean res;
241   GstReplace *replace;
242
243   replace = GST_REPLACE (gst_pad_get_parent (pad));
244
245   GST_DEBUG_OBJECT(replace, "query");
246
247   switch (GST_QUERY_TYPE(query)) {
248     default:
249       res = gst_pad_query_default (pad, query);
250       break;
251   }
252
253   gst_object_unref (replace);
254   return res;
255 }
256
257 static GstIterator *
258 gst_replace_src_iterintlink (GstPad *pad)
259 {
260   GstReplace *replace;
261   GstIterator *iter;
262
263   replace = GST_REPLACE (gst_pad_get_parent (pad));
264
265   GST_DEBUG_OBJECT(replace, "iterintlink");
266
267   iter = gst_pad_iterate_internal_links_default (pad);
268
269   gst_object_unref (replace);
270   return iter;
271 }
272
273 % end
274