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
00029
00030 #include <gst/gstelement.h>
00031 #include <gstreamermm/pluginfeature.h>
00032
00033
00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00035 typedef struct _GstElementFactory GstElementFactory;
00036 typedef struct _GstElementFactoryClass GstElementFactoryClass;
00037 #endif
00038
00039
00040 namespace Gst
00041 { class ElementFactory_Class; }
00042 namespace Gst
00043 {
00044
00045 class Caps;
00046 class Element;
00047 class PadTemplate;
00048 class Plugin;
00049
00091 class ElementFactory : public PluginFeature
00092 {
00093
00094 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00095
00096 public:
00097 typedef ElementFactory CppObjectType;
00098 typedef ElementFactory_Class CppClassType;
00099 typedef GstElementFactory BaseObjectType;
00100 typedef GstElementFactoryClass BaseClassType;
00101
00102 private: friend class ElementFactory_Class;
00103 static CppClassType elementfactory_class_;
00104
00105 private:
00106
00107 ElementFactory(const ElementFactory&);
00108 ElementFactory& operator=(const ElementFactory&);
00109
00110 protected:
00111 explicit ElementFactory(const Glib::ConstructParams& construct_params);
00112 explicit ElementFactory(GstElementFactory* castitem);
00113
00114 #endif
00115
00116 public:
00117 virtual ~ElementFactory();
00118
00119 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00120 static GType get_type() G_GNUC_CONST;
00121 static GType get_base_type() G_GNUC_CONST;
00122 #endif
00123
00125 GstElementFactory* gobj() { return reinterpret_cast<GstElementFactory*>(gobject_); }
00126
00128 const GstElementFactory* gobj() const { return reinterpret_cast<GstElementFactory*>(gobject_); }
00129
00131 GstElementFactory* gobj_copy();
00132
00133 private:
00134
00135
00136 public:
00137
00143 static Glib::RefPtr<ElementFactory> find(const Glib::ustring& name);
00144
00145
00146
00153 Glib::RefPtr<Element> create_named_element(const Glib::ustring& name);
00154
00155
00161 static Glib::RefPtr<Element> create_element(const Glib::ustring& factory_name, const Glib::ustring& name);
00162
00169 static Glib::RefPtr<Element> create_element(const Glib::ustring& factory_name);
00170
00171
00178 GType get_element_type() const;
00179
00183 Glib::ustring get_long_name() const;
00184
00188 Glib::ustring get_kclass() const;
00189
00193 Glib::ustring get_description() const;
00194
00198 Glib::ustring get_author() const;
00199
00203 guint get_num_pad_templates() const;
00204
00208 int get_uri_type() const;
00209
00210
00217 Glib::StringArrayHandle get_uri_protocols() const;
00218
00219
00226 bool has_interface(const Glib::ustring& name) const;
00227
00232 bool can_sink_caps(const Glib::RefPtr<const Caps>& caps) const;
00233
00238 bool can_src_caps(const Glib::RefPtr<const Caps>& caps) const;
00239
00240
00244 Glib::ListHandle< Glib::RefPtr<const PadTemplate> > get_static_pad_templates();
00245
00246
00247 public:
00248
00249 public:
00250
00251 #ifdef GLIBMM_VFUNCS_ENABLED
00252 #endif //GLIBMM_VFUNCS_ENABLED
00253
00254 protected:
00255
00256 #ifdef GLIBMM_VFUNCS_ENABLED
00257 #endif //GLIBMM_VFUNCS_ENABLED
00258
00259
00260 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00261 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00262
00263
00264 };
00265
00266 }
00267
00268
00269 namespace Glib
00270 {
00279 Glib::RefPtr<Gst::ElementFactory> wrap(GstElementFactory* object, bool take_copy = false);
00280 }
00281
00282
00283 #endif
00284