gstelementfactory.h   gstelementfactory.h 
skipping to change at line 38 skipping to change at line 38
#include <gst/gstconfig.h> #include <gst/gstconfig.h>
#include <gst/gstelement.h> #include <gst/gstelement.h>
#include <gst/gstobject.h> #include <gst/gstobject.h>
#include <gst/gstplugin.h> #include <gst/gstplugin.h>
#include <gst/gstpluginfeature.h> #include <gst/gstpluginfeature.h>
#include <gst/gstiterator.h> #include <gst/gstiterator.h>
G_BEGIN_DECLS G_BEGIN_DECLS
/* FIXME 0.11: Move GstElementDetails into a private header and use it inte
rnally
* in GstElementFactory, GstElementClass and the registry
*/
typedef struct _GstElementDetails GstElementDetails; typedef struct _GstElementDetails GstElementDetails;
/** /**
* GstElementDetails: * GstElementDetails:
* @longname: long, english name * @longname: long, english name
* @klass: string describing the type of element, as an unordered list * @klass: string describing the type of element, as an unordered list
* separated with slashes ('/'). See draft-klass.txt of the design docs * separated with slashes ('/'). See draft-klass.txt of the design docs
* for more details and common types * for more details and common types
* @description: what the element is about * @description: what the element is about
* @author: who wrote this thing? * @author: who wrote this thing?
skipping to change at line 67 skipping to change at line 71
* in gst_element_factory_get_longname() * in gst_element_factory_get_longname()
*/ */
struct _GstElementDetails struct _GstElementDetails
{ {
/*< public > */ /*< public > */
gchar *longname; gchar *longname;
gchar *klass; gchar *klass;
gchar *description; gchar *description;
gchar *author; gchar *author;
/*< private > */ /*< private >*/
gpointer _gst_reserved[GST_PADDING]; gpointer _gst_reserved[GST_PADDING];
}; };
/** /**
* GST_ELEMENT_DETAILS: * GST_ELEMENT_DETAILS:
* @longname: long, english name * @longname: long, english name
* @klass: string describing the type of element, as an unordered list * @klass: string describing the type of element, as an unordered list
* separated with slashes ('/'). See draft-klass.txt of the design docs * separated with slashes ('/'). See draft-klass.txt of the design docs
* for more details and common types * for more details and common types
* @description: what the element is about * @description: what the element is about
* @author: who wrote this element * @author: who wrote this element
* *
* Macro to initialize #GstElementDetails. * Macro to initialize #GstElementDetails.
*/ */
#define GST_ELEMENT_DETAILS(longname,klass,description,author) \ #define GST_ELEMENT_DETAILS(longname,klass,description,author) \
{ longname, klass, description, author, {NULL} } { longname, klass, description, author, {NULL} }
/** /**
* GST_IS_ELEMENT_DETAILS: * GST_IS_ELEMENT_DETAILS:
* @details: the #GstElementDetails to check * @details: the #GstElementDetails to check
* *
* Tests if element details are initialized. * Tests if element details are initialized.
*/ */
/* FIXME: what about adding '&& (*__gst_reserved==NULL)' */ /* FIXME: what about adding '&& (*__gst_reserved==NULL)' */
#define GST_IS_ELEMENT_DETAILS(details) ( #define GST_IS_ELEMENT_DETAILS(details) (
\ \
(details) && ((details)->longname != NULL) && ((details)->klass != NULL) (details) && ((details)->longname != NULL) && ((details)->klass != NULL)
\ \
&& ((details)->description != NULL) && ((details)->author != NULL)) && ((details)->description != NULL) && ((details)->author != NULL))
#define GST_TYPE_ELEMENT_FACTORY (gst_element_factory_get_typ #define GST_TYPE_ELEMENT_FACTORY (gst_element_factory_get_ty
e()) pe())
#define GST_ELEMENT_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST( #define GST_ELEMENT_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST
(obj),GST_TYPE_ELEMENT_FACTORY,\ ((obj),GST_TYPE_ELEMENT_FACTORY,\
GstElementFactory)) GstElementFactory))
#define GST_ELEMENT_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((kl #define GST_ELEMENT_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((k
ass),GST_TYPE_ELEMENT_FACTORY,\ lass),GST_TYPE_ELEMENT_FACTORY,\
GstElementFactoryClass)) GstElementFactoryClass))
#define GST_IS_ELEMENT_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE( #define GST_IS_ELEMENT_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE
(obj),GST_TYPE_ELEMENT_FACTORY)) ((obj),GST_TYPE_ELEMENT_FACTORY))
#define GST_IS_ELEMENT_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((kl #define GST_IS_ELEMENT_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((k
ass),GST_TYPE_ELEMENT_FACTORY)) lass),GST_TYPE_ELEMENT_FACTORY))
#define GST_ELEMENT_FACTORY_CAST(obj) ((GstElementFactory *)(obj) ) #define GST_ELEMENT_FACTORY_CAST(obj) ((GstElementFactory *)(obj) )
/** /**
* GstElementFactory: * GstElementFactory:
* *
* The opaque #GstElementFactory data structure. * The opaque #GstElementFactory data structure.
*/ */
struct _GstElementFactory { struct _GstElementFactory {
GstPluginFeature parent; GstPluginFeature parent;
GType type; /* unique GType of e lement or 0 if not loaded */ GType type; /* unique GType of element or 0 if not loaded */
GstElementDetails details; /* FIXME-0.11: deprecate this in favour of meta_data */
GstElementDetails details;
GList * staticpadtemplates; GList * staticpadtemplates; /* GstStaticPadTemplate lis
guint numpadtemplates; t */
guint numpadtemplates;
/* URI interface stuff */ /* URI interface stuff */
guint uri_type; guint uri_type;
gchar ** uri_protocols; gchar ** uri_protocols;
GList * interfaces; /* interfaces this element i mplements */ GList * interfaces; /* interface type names thi s element implements */
gpointer _gst_reserved[GST_PADDING]; /*< private >*/
/* FIXME-0.11: move up and replace details */
gpointer meta_data;
gpointer _gst_reserved[GST_PADDING - 1];
}; };
struct _GstElementFactoryClass { struct _GstElementFactoryClass {
GstPluginFeatureClass parent_class; GstPluginFeatureClass parent_class;
gpointer _gst_reserved[GST_PADDING]; gpointer _gst_reserved[GST_PADDING];
}; };
GType gst_element_factory_get_type (void); GType gst_element_factory_get_type (void);
GstElementFactory * gst_element_factory_find (const gchar *name); GstElementFactory * gst_element_factory_find (const gcha r *name);
GType gst_element_factory_get_element_type (GstElementF GType gst_element_factory_get_element_type (GstElement
actory *factory); Factory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_longname (GstElementF G_CONST_RETURN gchar * gst_element_factory_get_longname (GstElement
actory *factory); Factory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_klass (GstElementF G_CONST_RETURN gchar * gst_element_factory_get_klass (GstElement
actory *factory); Factory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_description (GstElementF G_CONST_RETURN gchar * gst_element_factory_get_description (GstElement
actory *factory); Factory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_author (GstElementF G_CONST_RETURN gchar * gst_element_factory_get_author (GstElement
actory *factory); Factory *factory);
guint gst_element_factory_get_num_pad_templates (GstElemen G_CONST_RETURN gchar * gst_element_factory_get_documentation_uri (GstEleme
tFactory *factory); ntFactory *factory);
G_CONST_RETURN GList * gst_element_factory_get_static_pad_templates (GstEle G_CONST_RETURN gchar * gst_element_factory_get_icon_name (GstElement
mentFactory *factory); Factory *factory);
gint gst_element_factory_get_uri_type (GstElementF guint gst_element_factory_get_num_pad_templates (GstEleme
actory *factory); ntFactory *factory);
gchar ** gst_element_factory_get_uri_protocols (GstElementF G_CONST_RETURN GList * gst_element_factory_get_static_pad_templates (GstEl
actory *factory); ementFactory *factory);
gboolean gst_element_factory_has_interface (GstElementF gint gst_element_factory_get_uri_type (GstElement
actory *factory, Factory *factory);
gchar ** gst_element_factory_get_uri_protocols (GstElement
Factory *factory);
gboolean gst_element_factory_has_interface (GstElement
Factory *factory,
const gcha r *interfacename); const gcha r *interfacename);
GstElement* gst_element_factory_create (GstElementF GstElement* gst_element_factory_create (GstElement
actory *factory, Factory *factory,
const gchar const gcha
*name); r *name);
GstElement* gst_element_factory_make (const gchar GstElement* gst_element_factory_make (const gcha
*factoryname, const gchar *name); r *factoryname, const gchar *name);
/* FIXME 0.11: move these two into our private headers */ /* FIXME 0.11: move these two into our private headers */
void __gst_element_factory_add_static_pad_template (GstE lementFactory *elementfactory, void __gst_element_factory_add_static_pad_template (GstE lementFactory *elementfactory,
GstStaticP adTemplate *templ); GstStaticP adTemplate *templ);
void __gst_element_factory_add_interface (GstElement Factory *elementfactory, void __gst_element_factory_add_interface (GstElement Factory *elementfactory,
const gcha r *interfacename); const gcha r *interfacename);
gboolean gst_element_register (GstPlugin * gboolean gst_element_register (GstPlugin
plugin, const gchar *name, *plugin, const gchar *name,
guint rank, guint rank
GType type); , GType type);
/* Factory list functions */
/**
* GstFactoryListType:
* @GST_ELEMENT_FACTORY_TYPE_DECODER: Decoder elements
* @GST_ELEMENT_FACTORY_TYPE_ENCODER: Encoder elements
* @GST_ELEMENT_FACTORY_TYPE_SINK: Sink elements
* @GST_ELEMENT_FACTORY_TYPE_SRC: Source elements
* @GST_ELEMENT_FACTORY_TYPE_MUXER: Muxer elements
* @GST_ELEMENT_FACTORY_TYPE_DEMUXER: Demuxer elements
* @GST_ELEMENT_FACTORY_TYPE_PARSER: Parser elements
* @GST_ELEMENT_FACTORY_TYPE_PAYLOADER: Payloader elements
* @GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER: Depayloader elements
* @GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS: Private, do not use
* @GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO: Elements handling video media typ
es
* @GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO: Elements handling audio media typ
es
* @GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE: Elements handling image media typ
es
* @GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE: Elements handling subtitle med
ia types
* @GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA: Elements handling metadata med
ia types
*
* The type of #GstElementFactory to filter.
*
* All @GstFactoryListType up to @GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS are
exclusive.
*
* If one or more of the MEDIA types are specified, then only elements
* matching the specified media types will be selected.
*
* Since: 0.10.31
*/
typedef guint64 GstElementFactoryListType;
#define GST_ELEMENT_FACTORY_TYPE_DECODER (G_GUINT64_CONSTANT (1) <<
0)
#define GST_ELEMENT_FACTORY_TYPE_ENCODER (G_GUINT64_CONSTANT (1) <<
1)
#define GST_ELEMENT_FACTORY_TYPE_SINK (G_GUINT64_CONSTANT (1) <<
2)
#define GST_ELEMENT_FACTORY_TYPE_SRC (G_GUINT64_CONSTANT (1) <<
3)
#define GST_ELEMENT_FACTORY_TYPE_MUXER (G_GUINT64_CONSTANT (1) <<
4)
#define GST_ELEMENT_FACTORY_TYPE_DEMUXER (G_GUINT64_CONSTANT (1) <<
5)
#define GST_ELEMENT_FACTORY_TYPE_PARSER (G_GUINT64_CONSTANT (1) <<
6)
#define GST_ELEMENT_FACTORY_TYPE_PAYLOADER (G_GUINT64_CONSTANT (1) <<
7)
#define GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER (G_GUINT64_CONSTANT (1) <<
8)
#define GST_ELEMENT_FACTORY_TYPE_FORMATTER (G_GUINT64_CONSTANT (1) <<
9)
#define GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS (G_GUINT64_CONSTANT (1) <<
48)
#define GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO (G_GUINT64_CONSTANT (1) <<
49)
#define GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO (G_GUINT64_CONSTANT (1) <<
50)
#define GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE (G_GUINT64_CONSTANT (1) <<
51)
#define GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE (G_GUINT64_CONSTANT (1) <<
52)
#define GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA (G_GUINT64_CONSTANT (1) <<
53)
/**
* GST_ELEMENT_FACTORY_TYPE_ANY:
*
* Elements of any of the defined GST_ELEMENT_FACTORY_LIST types
*
* Since: 0.10.31
*/
#define GST_ELEMENT_FACTORY_TYPE_ANY ((G_GUINT64_CONSTANT (1) << 49) - 1)
/**
* GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY:
*
* Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA type
s
*
* Note: Do not use this if you wish to not filter against any of the defin
ed
* media types. If you wish to do this, simply don't specify any
* GST_ELEMENT_FACTORY_TYPE_MEDIA flag.
*
* Since: 0.10.31
*/
#define GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY (~G_GUINT64_CONSTANT (0) << 48)
/**
* GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER:
*
* All encoders handling video or image media types
*
* Since: 0.10.31
*/
#define GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER (GST_ELEMENT_FACTORY_TYPE_EN
CODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MED
IA_IMAGE)
/**
* GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER:
*
* All encoders handling audio media types
*
* Since: 0.10.31
*/
#define GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER (GST_ELEMENT_FACTORY_TYPE_EN
CODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO)
/**
* GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS:
*
* All sinks handling audio, video or image media types
*
* Since: 0.10.31
*/
#define GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS (GST_ELEMENT_FACTORY_TYPE
_SINK | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO | GST_ELEMENT_FACTORY_TYPE_MED
IA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE)
/**
* GST_ELEMENT_FACTORY_TYPE_DECODABLE:
*
* All elements used to 'decode' streams (decoders, demuxers, parsers, depa
yloaders)
*
* Since: 0.10.31
*/
#define GST_ELEMENT_FACTORY_TYPE_DECODABLE \
(GST_ELEMENT_FACTORY_TYPE_DECODER | GST_ELEMENT_FACTORY_TYPE_DEMUXER | GS
T_ELEMENT_FACTORY_TYPE_DEPAYLOADER | GST_ELEMENT_FACTORY_TYPE_PARSER)
/* Element klass defines */
#define GST_ELEMENT_FACTORY_KLASS_DECODER "Decoder"
#define GST_ELEMENT_FACTORY_KLASS_ENCODER "Encoder"
#define GST_ELEMENT_FACTORY_KLASS_SINK "Sink"
#define GST_ELEMENT_FACTORY_KLASS_SRC "Source"
#define GST_ELEMENT_FACTORY_KLASS_MUXER "Muxer"
#define GST_ELEMENT_FACTORY_KLASS_DEMUXER "Demuxer"
#define GST_ELEMENT_FACTORY_KLASS_PARSER "Parser"
#define GST_ELEMENT_FACTORY_KLASS_PAYLOADER "Payloader"
#define GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER "Depayloader"
#define GST_ELEMENT_FACTORY_KLASS_FORMATTER "Formatter"
#define GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO "Video"
#define GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO "Audio"
#define GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE "Image"
#define GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE "Subtitle"
#define GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA "Metadata"
gboolean gst_element_factory_list_is_type (GstElementFactory *fac
tory,
GstElementFactoryListTy
pe type);
GList * gst_element_factory_list_get_elements (GstElementFactoryListT
ype type,
GstRank minrank);
GList * gst_element_factory_list_filter (GList *list, const Gst
Caps *caps,
GstPadDirection directi
on,
gboolean subsetonly);
G_END_DECLS G_END_DECLS
#endif /* __GST_ELEMENT_FACTORY_H__ */ #endif /* __GST_ELEMENT_FACTORY_H__ */
 End of changes. 18 change blocks. 
59 lines changed or deleted 246 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/