source: trunk/third/gstreamer/gst/gstelement.h @ 21448

Revision 21448, 20.4 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21447, which included commits to RCS files with non-trunk default branches.
Line 
1/* GStreamer
2 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
3 *                    2000 Wim Taymans <wtay@chello.be>
4 *
5 * gstelement.h: Header for GstElement
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
21 */
22
23
24#ifndef __GST_ELEMENT_H__
25#define __GST_ELEMENT_H__
26
27#include <gst/gstconfig.h>
28#include <gst/gsttypes.h>
29#include <gst/gstobject.h>
30#include <gst/gstpad.h>
31#include <gst/gstclock.h>
32#include <gst/gstplugin.h>
33#include <gst/gstpluginfeature.h>
34#include <gst/gstindex.h>
35#include <gst/gsttag.h>
36
37G_BEGIN_DECLS
38
39typedef struct _GstElementDetails GstElementDetails;
40
41/* FIXME: need translatable stuff in here (how handle in registry)? */
42struct _GstElementDetails {
43  gchar *longname;              /* long, english name */
44  gchar *klass;                 /* type of element, as hierarchy */
45  gchar *description;           /* insights of one form or another */
46  gchar *author;                /* who wrote this thing? */
47
48  gpointer _gst_reserved[GST_PADDING];
49};
50#define GST_ELEMENT_DETAILS(longname,klass,description,author)          \
51  { longname, klass, description, author, GST_PADDING_INIT }
52#define GST_IS_ELEMENT_DETAILS(details) (                                       \
53  (details) && ((details)->longname != NULL) && ((details)->klass != NULL)      \
54  && ((details)->description != NULL) && ((details)->author != NULL))
55
56#define GST_NUM_STATES 4
57
58/* NOTE: this probably should be done with an #ifdef to decide
59 * whether to safe-cast or to just do the non-checking cast.
60 */
61#define GST_STATE(obj)                  (GST_ELEMENT(obj)->current_state)
62#define GST_STATE_PENDING(obj)          (GST_ELEMENT(obj)->pending_state)
63
64/* Note: using 8 bit shift mostly "just because", it leaves us enough room to grow <g> */
65#define GST_STATE_TRANSITION(obj)       ((GST_STATE(obj)<<8) | GST_STATE_PENDING(obj))
66#define GST_STATE_NULL_TO_READY         ((GST_STATE_NULL<<8) | GST_STATE_READY)
67#define GST_STATE_READY_TO_PAUSED       ((GST_STATE_READY<<8) | GST_STATE_PAUSED)
68#define GST_STATE_PAUSED_TO_PLAYING     ((GST_STATE_PAUSED<<8) | GST_STATE_PLAYING)
69#define GST_STATE_PLAYING_TO_PAUSED     ((GST_STATE_PLAYING<<8) | GST_STATE_PAUSED)
70#define GST_STATE_PAUSED_TO_READY       ((GST_STATE_PAUSED<<8) | GST_STATE_READY)
71#define GST_STATE_READY_TO_NULL         ((GST_STATE_READY<<8) | GST_STATE_NULL)
72
73GST_EXPORT GType _gst_element_type;
74
75#define GST_TYPE_ELEMENT                (_gst_element_type)
76#define GST_IS_ELEMENT(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_ELEMENT))
77#define GST_IS_ELEMENT_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_ELEMENT))
78#define GST_ELEMENT_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_ELEMENT, GstElementClass))
79#define GST_ELEMENT(obj)                (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_ELEMENT, GstElement))
80#define GST_ELEMENT_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_ELEMENT, GstElementClass))
81
82/* convenience functions */
83#ifndef GST_DISABLE_DEPRECATED
84#ifdef G_HAVE_ISO_VARARGS
85#define GST_ELEMENT_QUERY_TYPE_FUNCTION(functionname, ...) \
86        GST_QUERY_TYPE_FUNCTION (GstElement*, functionname, __VA_ARGS__);
87#define GST_ELEMENT_FORMATS_FUNCTION(functionname, ...)    \
88        GST_FORMATS_FUNCTION (GstElement*, functionname, __VA_ARGS__);
89#define GST_ELEMENT_EVENT_MASK_FUNCTION(functionname, ...) \
90        GST_EVENT_MASK_FUNCTION (GstElement*, functionname, __VA_ARGS__);
91#elif defined(G_HAVE_GNUC_VARARGS)
92#define GST_ELEMENT_QUERY_TYPE_FUNCTION(functionname, a...) \
93        GST_QUERY_TYPE_FUNCTION (GstElement*, functionname, a);
94#define GST_ELEMENT_FORMATS_FUNCTION(functionname, a...)    \
95        GST_FORMATS_FUNCTION (GstElement*, functionname, a);
96#define GST_ELEMENT_EVENT_MASK_FUNCTION(functionname, a...) \
97        GST_EVENT_MASK_FUNCTION (GstElement*, functionname, a);
98#endif
99#endif
100
101typedef enum {
102  /* element is complex (for some def.) and generally require a cothread */
103  GST_ELEMENT_COMPLEX           = GST_OBJECT_FLAG_LAST,
104  /* input and output pads aren't directly coupled to each other
105     examples: queues, multi-output async readers, etc. */
106  GST_ELEMENT_DECOUPLED,
107  /* this element should be placed in a thread if at all possible */
108  GST_ELEMENT_THREAD_SUGGESTED,
109  /* this element, for some reason, has a loop function that performs
110   * an infinite loop without calls to gst_element_yield () */
111  GST_ELEMENT_INFINITE_LOOP,
112  /* there is a new loopfunction ready for placement */
113  GST_ELEMENT_NEW_LOOPFUNC,
114  /* if this element can handle events */
115  GST_ELEMENT_EVENT_AWARE,
116  /* use threadsafe property get/set implementation */
117  GST_ELEMENT_USE_THREADSAFE_PROPERTIES,
118
119  /* private flags that can be used by the scheduler */
120  GST_ELEMENT_SCHEDULER_PRIVATE1,
121  GST_ELEMENT_SCHEDULER_PRIVATE2,
122
123  /* ignore state changes from parent */
124  GST_ELEMENT_LOCKED_STATE,
125
126  /* element is in error */
127  GST_ELEMENT_IN_ERROR,
128
129  /* use some padding for future expansion */
130  GST_ELEMENT_FLAG_LAST         = GST_OBJECT_FLAG_LAST + 16
131} GstElementFlags;
132
133#define GST_ELEMENT_IS_THREAD_SUGGESTED(obj)    (GST_FLAG_IS_SET(obj,GST_ELEMENT_THREAD_SUGGESTED))
134#define GST_ELEMENT_IS_EVENT_AWARE(obj)         (GST_FLAG_IS_SET(obj,GST_ELEMENT_EVENT_AWARE))
135#define GST_ELEMENT_IS_DECOUPLED(obj)           (GST_FLAG_IS_SET(obj,GST_ELEMENT_DECOUPLED))
136
137#define GST_ELEMENT_NAME(obj)                   (GST_OBJECT_NAME(obj))
138#define GST_ELEMENT_PARENT(obj)                 (GST_OBJECT_PARENT(obj))
139#define GST_ELEMENT_SCHED(obj)                  (((GstElement*)(obj))->sched)
140#define GST_ELEMENT_CLOCK(obj)                  (((GstElement*)(obj))->clock)
141#define GST_ELEMENT_PADS(obj)                   ((obj)->pads)
142
143/**
144 * GST_ELEMENT_ERROR:
145 * @el: the element that throws the error
146 * @domain: like CORE, LIBRARY, RESOURCE or STREAM (see #GstError)
147 * @code: error code defined for that domain (see #GstError)
148 * @message: the message to display (format string and args enclosed in round brackets)
149 * @debug: debugging information for the message (format string and args enclosed in round brackets)
150 *
151 * Utility function that elements can use in case they encountered a fatal
152 * data processing error. The pipeline will throw an error signal and the
153 * application will be requested to stop further media processing.
154 */
155#define GST_ELEMENT_ERROR(el, domain, code, message, debug) G_STMT_START { \
156  gchar *__msg = _gst_element_error_printf message; \
157  gchar *__dbg = _gst_element_error_printf debug; \
158  if (__msg) \
159    GST_ERROR_OBJECT (el, "%s", __msg); \
160  if (__dbg) \
161  GST_ERROR_OBJECT (el, "%s", __dbg); \
162  gst_element_error_full (GST_ELEMENT(el), \
163  GST_ ## domain ## _ERROR, GST_ ## domain ## _ERROR_ ## code, \
164  __msg, __dbg, __FILE__, GST_FUNCTION, __LINE__); \
165} G_STMT_END
166
167typedef struct _GstElementFactory GstElementFactory;
168typedef struct _GstElementFactoryClass GstElementFactoryClass;
169
170typedef void            (*GstElementLoopFunction)       (GstElement *element);
171typedef void            (*GstElementPreRunFunction)     (GstElement *element);
172typedef void            (*GstElementPostRunFunction)    (GstElement *element);
173
174struct _GstElement {
175  GstObject             object;
176
177  /* element state  and scheduling */
178  guint8                current_state;
179  guint8                pending_state;
180  GstElementLoopFunction loopfunc;
181
182  GstScheduler          *sched;
183  gpointer              sched_private;
184
185  /* allocated clock */
186  GstClock              *clock;
187  GstClockTimeDiff      base_time; /* NULL/READY: 0 - PAUSED: current time - PLAYING: difference to clock */
188
189  /* element pads */
190  guint16               numpads;
191  guint16               numsrcpads;
192  guint16               numsinkpads;
193  GList                 *pads;
194
195  GMutex                *state_mutex;
196  GCond                 *state_cond;
197
198  GstElementPreRunFunction  pre_run_func;
199  GstElementPostRunFunction post_run_func;
200  GAsyncQueue           *prop_value_queue;
201  GMutex                *property_mutex;
202
203  gpointer _gst_reserved[GST_PADDING];
204};
205
206struct _GstElementClass {
207  GstObjectClass        parent_class;
208
209  /* the element details */
210  GstElementDetails     details;
211
212  /* factory that the element was created from */
213  GstElementFactory     *elementfactory;
214
215  /* templates for our pads */
216  GList                 *padtemplates;
217  gint                  numpadtemplates;
218 
219  /* signal callbacks */
220  void (*state_change)  (GstElement *element, GstElementState old, GstElementState state);
221  void (*new_pad)       (GstElement *element, GstPad *pad);
222  void (*pad_removed)   (GstElement *element, GstPad *pad);
223  void (*error)         (GstElement *element, GstElement *source, GError *error, gchar *debug);
224  void (*eos)           (GstElement *element);
225  void (*found_tag)     (GstElement *element, GstElement *source, const GstTagList *tag_list);
226
227  /* local pointers for get/set */
228  void (*set_property)  (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
229  void (*get_property)  (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
230
231  /* vtable*/
232  gboolean              (*release_locks)        (GstElement *element);
233
234  /* query/convert/events functions */
235  const GstEventMask*   (*get_event_masks)      (GstElement *element);
236  gboolean              (*send_event)           (GstElement *element, GstEvent *event);
237  const GstFormat*      (*get_formats)          (GstElement *element);
238  gboolean              (*convert)              (GstElement *element,
239                                                 GstFormat  src_format,  gint64  src_value,
240                                                 GstFormat *dest_format, gint64 *dest_value);
241  const GstQueryType*   (*get_query_types)      (GstElement *element);
242  gboolean              (*query)                (GstElement *element, GstQueryType type,
243                                                 GstFormat *format, gint64 *value);
244
245  /* change the element state */
246  GstElementStateReturn (*change_state)         (GstElement *element);
247
248  /* request/release pads */
249  GstPad*               (*request_new_pad)      (GstElement *element, GstPadTemplate *templ, const gchar* name);
250  void                  (*release_pad)          (GstElement *element, GstPad *pad);
251
252  /* set/get clocks */
253  GstClock*             (*get_clock)            (GstElement *element);
254  void                  (*set_clock)            (GstElement *element, GstClock *clock);
255
256  /* index */
257  GstIndex*             (*get_index)            (GstElement *element);
258  void                  (*set_index)            (GstElement *element, GstIndex *index);
259
260  GstElementStateReturn (*set_state)            (GstElement *element, GstElementState state);
261
262  /* FIXME 0.9: move up to signals */
263  void                  (*no_more_pads)         (GstElement *element);
264 
265  gpointer _gst_reserved[GST_PADDING - 1];
266};
267
268void                    gst_element_class_add_pad_template      (GstElementClass *klass, GstPadTemplate *templ);
269void                    gst_element_class_install_std_props     (GstElementClass *klass,
270                                                                 const gchar      *first_name, ...);
271void                    gst_element_class_set_details           (GstElementClass *klass,
272                                                                 const GstElementDetails *details);
273
274#define                 gst_element_default_deep_notify         gst_object_default_deep_notify
275
276void                    gst_element_default_error               (GObject *object, GstObject *orig, GError *error, gchar *debug);
277
278GType                   gst_element_get_type            (void);
279void                    gst_element_set_loop_function   (GstElement *element,
280                                                         GstElementLoopFunction loop);
281
282#define                 gst_element_get_name(elem)      gst_object_get_name(GST_OBJECT(elem))
283#define                 gst_element_set_name(elem,name) gst_object_set_name(GST_OBJECT(elem),name)
284#define                 gst_element_get_parent(elem)    gst_object_get_parent(GST_OBJECT(elem))
285#define                 gst_element_set_parent(elem,parent)     gst_object_set_parent(GST_OBJECT(elem),parent)
286
287/* threadsafe versions of their g_object_* counterparts */
288void                    gst_element_set                 (GstElement *element, const gchar *first_property_name, ...);
289void                    gst_element_get                 (GstElement *element, const gchar *first_property_name, ...);
290void                    gst_element_set_valist          (GstElement *element, const gchar *first_property_name,
291                                                         va_list var_args);
292void                    gst_element_get_valist          (GstElement *element, const gchar *first_property_name,
293                                                         va_list var_args);
294void                    gst_element_set_property        (GstElement *element, const gchar *property_name,
295                                                         const GValue   *value);
296void                    gst_element_get_property        (GstElement *element, const gchar *property_name,
297                                                         GValue *value);
298
299void                    gst_element_enable_threadsafe_properties        (GstElement *element);
300void                    gst_element_disable_threadsafe_properties       (GstElement *element);
301void                    gst_element_set_pending_properties              (GstElement *element);
302
303/* clocking */
304gboolean                gst_element_requires_clock      (GstElement *element);
305gboolean                gst_element_provides_clock      (GstElement *element);
306GstClock*               gst_element_get_clock           (GstElement *element);
307void                    gst_element_set_clock           (GstElement *element, GstClock *clock);
308GstClockReturn          gst_element_clock_wait          (GstElement *element,
309                                                         GstClockID id, GstClockTimeDiff *jitter);
310GstClockTime            gst_element_get_time            (GstElement *element);
311gboolean                gst_element_wait                (GstElement *element, GstClockTime timestamp);
312void                    gst_element_set_time            (GstElement *element, GstClockTime time);
313void                    gst_element_set_time_delay      (GstElement *element, GstClockTime time, GstClockTime delay);
314
315void                    gst_element_adjust_time         (GstElement *element, GstClockTimeDiff diff);
316 
317/* indexs */
318gboolean                gst_element_is_indexable        (GstElement *element);
319void                    gst_element_set_index           (GstElement *element, GstIndex *index);
320GstIndex*               gst_element_get_index           (GstElement *element);
321
322
323gboolean                gst_element_release_locks       (GstElement *element);
324
325void                    gst_element_yield               (GstElement *element);
326gboolean                gst_element_interrupt           (GstElement *element);
327void                    gst_element_set_scheduler       (GstElement *element, GstScheduler *sched);
328GstScheduler*           gst_element_get_scheduler       (GstElement *element);
329
330void                    gst_element_add_pad             (GstElement *element, GstPad *pad);
331void                    gst_element_remove_pad          (GstElement *element, GstPad *pad);
332GstPad *                gst_element_add_ghost_pad       (GstElement *element, GstPad *pad, const gchar *name);
333#ifndef GST_DISABLE_DEPRECATED
334void                    gst_element_remove_ghost_pad    (GstElement *element, GstPad *pad);
335#endif
336void                    gst_element_no_more_pads        (GstElement *element);
337
338GstPad*                 gst_element_get_pad             (GstElement *element, const gchar *name);
339GstPad*                 gst_element_get_static_pad      (GstElement *element, const gchar *name);
340GstPad*                 gst_element_get_request_pad     (GstElement *element, const gchar *name);
341void                    gst_element_release_request_pad (GstElement *element, GstPad *pad);
342
343G_CONST_RETURN GList*
344                        gst_element_get_pad_list        (GstElement *element);
345GstPad*                 gst_element_get_compatible_pad  (GstElement *element, GstPad *pad);
346GstPad*                 gst_element_get_compatible_pad_filtered (GstElement *element, GstPad *pad,
347                                                         const GstCaps *filtercaps);
348
349GstPadTemplate*         gst_element_class_get_pad_template      (GstElementClass *element_class, const gchar *name);
350GList*                  gst_element_class_get_pad_template_list (GstElementClass *element_class);
351GstPadTemplate*         gst_element_get_pad_template            (GstElement *element, const gchar *name);
352GList*                  gst_element_get_pad_template_list       (GstElement *element);
353GstPadTemplate*         gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl);
354
355gboolean                gst_element_link                (GstElement *src, GstElement *dest);
356gboolean                gst_element_link_many           (GstElement *element_1,
357                                                         GstElement *element_2, ...);
358gboolean                gst_element_link_filtered       (GstElement *src, GstElement *dest,
359                                                         const GstCaps *filtercaps);
360void                    gst_element_unlink              (GstElement *src, GstElement *dest);
361void                    gst_element_unlink_many         (GstElement *element_1,
362                                                         GstElement *element_2, ...);
363
364gboolean                gst_element_link_pads           (GstElement *src, const gchar *srcpadname,
365                                                         GstElement *dest, const gchar *destpadname);
366gboolean                gst_element_link_pads_filtered  (GstElement *src, const gchar *srcpadname,
367                                                         GstElement *dest, const gchar *destpadname,
368                                                         const GstCaps *filtercaps);
369void                    gst_element_unlink_pads         (GstElement *src, const gchar *srcpadname,
370                                                         GstElement *dest, const gchar *destpadname);
371
372G_CONST_RETURN GstEventMask*
373                        gst_element_get_event_masks     (GstElement *element);
374gboolean                gst_element_send_event          (GstElement *element, GstEvent *event);
375gboolean                gst_element_seek                (GstElement *element, GstSeekType seek_type,
376                                                         guint64 offset);
377G_CONST_RETURN GstQueryType*
378                        gst_element_get_query_types     (GstElement *element);
379gboolean                gst_element_query               (GstElement *element, GstQueryType type,
380                                                         GstFormat *format, gint64 *value);
381G_CONST_RETURN GstFormat*
382                        gst_element_get_formats         (GstElement *element);
383gboolean                gst_element_convert             (GstElement *element,
384                                                         GstFormat  src_format,  gint64  src_value,
385                                                         GstFormat *dest_format, gint64 *dest_value);
386
387void                    gst_element_found_tags          (GstElement *element, const GstTagList *tag_list);
388void                    gst_element_found_tags_for_pad  (GstElement *element, GstPad *pad, GstClockTime timestamp,
389                                                         GstTagList *list);
390
391void                    gst_element_set_eos             (GstElement *element);
392
393gchar *                 _gst_element_error_printf       (const gchar *format, ...);
394void                    gst_element_error_full          (GstElement *element, GQuark domain, gint code,
395                                                         gchar *message, gchar *debug,
396                                                         const gchar *file, const gchar *function, gint line);
397
398gboolean                gst_element_is_locked_state     (GstElement *element);
399void                    gst_element_set_locked_state    (GstElement *element, gboolean locked_state);
400gboolean                gst_element_sync_state_with_parent (GstElement *element);
401
402GstElementState         gst_element_get_state           (GstElement *element);
403GstElementStateReturn   gst_element_set_state           (GstElement *element, GstElementState state);
404
405void                    gst_element_wait_state_change   (GstElement *element);
406       
407G_CONST_RETURN gchar*   gst_element_state_get_name      (GstElementState state);
408
409GstElementFactory*      gst_element_get_factory         (GstElement *element);
410
411GstBin*                 gst_element_get_managing_bin    (GstElement *element);
412
413
414/*
415 *
416 * factories stuff
417 *
418 **/
419
420#define GST_TYPE_ELEMENT_FACTORY                (gst_element_factory_get_type())
421#define GST_ELEMENT_FACTORY(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ELEMENT_FACTORY,\
422                                                 GstElementFactory))
423#define GST_ELEMENT_FACTORY_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ELEMENT_FACTORY,\
424                                                 GstElementFactoryClass))
425#define GST_IS_ELEMENT_FACTORY(obj)             (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ELEMENT_FACTORY))
426#define GST_IS_ELEMENT_FACTORY_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT_FACTORY))
427
428struct _GstElementFactory {
429  GstPluginFeature      parent;
430
431  GType                 type;                   /* unique GType of element or 0 if not loaded */
432
433  GstElementDetails     details;
434
435  GList *               padtemplates;
436  guint                 numpadtemplates;
437
438  /* URI interface stuff */
439  guint                 uri_type;
440  gchar **              uri_protocols;
441 
442  GList *               interfaces;             /* interfaces this element implements */
443
444  gpointer _gst_reserved[GST_PADDING];
445};
446
447struct _GstElementFactoryClass {
448  GstPluginFeatureClass parent_class;
449
450  gpointer _gst_reserved[GST_PADDING];
451};
452
453GType                   gst_element_factory_get_type            (void);
454
455gboolean                gst_element_register                    (GstPlugin *plugin,
456                                                                 const gchar *name,
457                                                                 guint rank,
458                                                                 GType type);
459
460GstElementFactory *     gst_element_factory_find                (const gchar *name);
461GType                   gst_element_factory_get_element_type    (GstElementFactory *factory);
462G_CONST_RETURN gchar *  gst_element_factory_get_longname        (GstElementFactory *factory);
463G_CONST_RETURN gchar *  gst_element_factory_get_klass           (GstElementFactory *factory);
464G_CONST_RETURN gchar *  gst_element_factory_get_description     (GstElementFactory *factory);
465G_CONST_RETURN gchar *  gst_element_factory_get_author          (GstElementFactory *factory);
466guint                   gst_element_factory_get_num_pad_templates (GstElementFactory *factory);
467G_CONST_RETURN GList *  gst_element_factory_get_pad_templates   (GstElementFactory *factory);
468guint                   gst_element_factory_get_uri_type        (GstElementFactory *factory);           
469gchar **                gst_element_factory_get_uri_protocols   (GstElementFactory *factory);           
470
471GstElement*             gst_element_factory_create              (GstElementFactory *factory,
472                                                                 const gchar *name);
473GstElement*             gst_element_factory_make                (const gchar *factoryname, const gchar *name);
474
475gboolean                gst_element_factory_can_src_caps        (GstElementFactory *factory,
476                                                                 const GstCaps *caps);
477gboolean                gst_element_factory_can_sink_caps       (GstElementFactory *factory,
478                                                                 const GstCaps *caps);
479
480void                    __gst_element_factory_add_pad_template  (GstElementFactory *elementfactory,
481                                                                 GstPadTemplate *templ);
482void                    __gst_element_factory_add_interface     (GstElementFactory *elementfactory,
483                                                                 const gchar *interfacename);
484
485
486G_END_DECLS
487
488
489#endif /* __GST_ELEMENT_H__ */
490
Note: See TracBrowser for help on using the repository browser.