00001
00002
00003 #ifndef _GSTREAMERMM_ELEMENTFACTORY_H
00004 #define _GSTREAMERMM_ELEMENTFACTORY_H
00005
00006
00007 #include <glibmm.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <gst/gstelement.h>
00029 #include <gstreamermm/pluginfeature.h>
00030
00031
00032 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00033 typedef struct _GstElementFactory GstElementFactory;
00034 typedef struct _GstElementFactoryClass GstElementFactoryClass;
00035 #endif
00036
00037
00038 namespace Gst
00039 { class ElementFactory_Class; }
00040 namespace Gst
00041 {
00042
00043 class Caps;
00044 class Element;
00045 class PadTemplate;
00046 class Plugin;
00047
00089 class ElementFactory : public PluginFeature
00090 {
00091
00092 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00093
00094 public:
00095 typedef ElementFactory CppObjectType;
00096 typedef ElementFactory_Class CppClassType;
00097 typedef GstElementFactory BaseObjectType;
00098 typedef GstElementFactoryClass BaseClassType;
00099
00100 private: friend class ElementFactory_Class;
00101 static CppClassType elementfactory_class_;
00102
00103 private:
00104
00105 ElementFactory(const ElementFactory&);
00106 ElementFactory& operator=(const ElementFactory&);
00107
00108 protected:
00109 explicit ElementFactory(const Glib::ConstructParams& construct_params);
00110 explicit ElementFactory(GstElementFactory* castitem);
00111
00112 #endif
00113
00114 public:
00115 virtual ~ElementFactory();
00116
00117 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00118 static GType get_type() G_GNUC_CONST;
00119 static GType get_base_type() G_GNUC_CONST;
00120 #endif
00121
00123 GstElementFactory* gobj() { return reinterpret_cast<GstElementFactory*>(gobject_); }
00124
00126 const GstElementFactory* gobj() const { return reinterpret_cast<GstElementFactory*>(gobject_); }
00127
00129 GstElementFactory* gobj_copy();
00130
00131 private:
00132
00133
00134 public:
00135
00141 static Glib::RefPtr<Gst::ElementFactory> find(const Glib::ustring& name);
00142
00143
00144
00151 Glib::RefPtr<Gst::Element> create_named_element(const Glib::ustring& name);
00152
00153
00159 static Glib::RefPtr<Gst::Element> create_element(const Glib::ustring& factory_name, const Glib::ustring& name);
00160
00168 static Glib::RefPtr<Gst::Element> create_element(const Glib::ustring& factory_name);
00169
00170
00177 GType get_element_type() const;
00178
00182 Glib::ustring get_long_name() const;
00183
00187 Glib::ustring get_kclass() const;
00188
00192 Glib::ustring get_description() const;
00193
00197 Glib::ustring get_author() const;
00198
00202 guint get_num_pad_templates() const;
00203
00207 int get_uri_type() const;
00208
00209
00216 Glib::StringArrayHandle get_uri_protocols() const;
00217
00218
00225 bool has_interface(const Glib::ustring& name) const;
00226
00231 bool can_sink_caps(const Glib::RefPtr<const Gst::Caps>& caps) const;
00232
00237 bool can_src_caps(const Glib::RefPtr<const Gst::Caps>& caps) const;
00238
00239
00243 Glib::ListHandle< Glib::RefPtr<Gst::PadTemplate> > get_static_pad_templates();
00244
00245
00249 Glib::ListHandle< Glib::RefPtr<const Gst::PadTemplate> > get_static_pad_templates() const;
00250
00251
00252 public:
00253
00254 public:
00255
00256 #ifdef GLIBMM_VFUNCS_ENABLED
00257 #endif //GLIBMM_VFUNCS_ENABLED
00258
00259 protected:
00260
00261 #ifdef GLIBMM_VFUNCS_ENABLED
00262 #endif //GLIBMM_VFUNCS_ENABLED
00263
00264
00265 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00266 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00267
00268
00269 };
00270
00271 }
00272
00273
00274 namespace Glib
00275 {
00284 Glib::RefPtr<Gst::ElementFactory> wrap(GstElementFactory* object, bool take_copy = false);
00285 }
00286
00287
00288 #endif
00289