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<Gst::ElementFactory> find(const Glib::ustring& name);
00144
00145
00146
00153 Glib::RefPtr<Gst::Element> create_named_element(const Glib::ustring& name);
00154
00155
00161 static Glib::RefPtr<Gst::Element> create_element(const Glib::ustring& factory_name, const Glib::ustring& name);
00162
00170 static Glib::RefPtr<Gst::Element> create_element(const Glib::ustring& factory_name);
00171
00172
00179 GType get_element_type() const;
00180
00184 Glib::ustring get_long_name() const;
00185
00189 Glib::ustring get_kclass() const;
00190
00194 Glib::ustring get_description() const;
00195
00199 Glib::ustring get_author() const;
00200
00204 guint get_num_pad_templates() const;
00205
00209 int get_uri_type() const;
00210
00211
00218 Glib::StringArrayHandle get_uri_protocols() const;
00219
00220
00227 bool has_interface(const Glib::ustring& name) const;
00228
00233 bool can_sink_caps(const Glib::RefPtr<const Gst::Caps>& caps) const;
00234
00239 bool can_src_caps(const Glib::RefPtr<const Gst::Caps>& caps) const;
00240
00241
00245 Glib::ListHandle< Glib::RefPtr<const Gst::PadTemplate> > get_static_pad_templates();
00246
00247
00248 public:
00249
00250 public:
00251
00252 #ifdef GLIBMM_VFUNCS_ENABLED
00253 #endif //GLIBMM_VFUNCS_ENABLED
00254
00255 protected:
00256
00257 #ifdef GLIBMM_VFUNCS_ENABLED
00258 #endif //GLIBMM_VFUNCS_ENABLED
00259
00260
00261 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00262 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00263
00264
00265 };
00266
00267 }
00268
00269
00270 namespace Glib
00271 {
00280 Glib::RefPtr<Gst::ElementFactory> wrap(GstElementFactory* object, bool take_copy = false);
00281 }
00282
00283
00284 #endif
00285