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
00062 class ElementFactory : public PluginFeature
00063 {
00064
00065 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00066
00067 public:
00068 typedef ElementFactory CppObjectType;
00069 typedef ElementFactory_Class CppClassType;
00070 typedef GstElementFactory BaseObjectType;
00071 typedef GstElementFactoryClass BaseClassType;
00072
00073 private: friend class ElementFactory_Class;
00074 static CppClassType elementfactory_class_;
00075
00076 private:
00077
00078 ElementFactory(const ElementFactory&);
00079 ElementFactory& operator=(const ElementFactory&);
00080
00081 protected:
00082 explicit ElementFactory(const Glib::ConstructParams& construct_params);
00083 explicit ElementFactory(GstElementFactory* castitem);
00084
00085 #endif
00086
00087 public:
00088 virtual ~ElementFactory();
00089
00090 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00091 static GType get_type() G_GNUC_CONST;
00092 static GType get_base_type() G_GNUC_CONST;
00093 #endif
00094
00096 GstElementFactory* gobj() { return reinterpret_cast<GstElementFactory*>(gobject_); }
00097
00099 const GstElementFactory* gobj() const { return reinterpret_cast<GstElementFactory*>(gobject_); }
00100
00102 GstElementFactory* gobj_copy();
00103
00104 private:
00105
00106
00107 public:
00108
00114 static Glib::RefPtr<ElementFactory> find(const Glib::ustring& name);
00115
00122 GType get_element_type() const;
00123
00127 Glib::ustring get_long_name() const;
00128
00132 Glib::ustring get_kclass() const;
00133
00137 Glib::ustring get_description() const;
00138
00142 Glib::ustring get_author() const;
00143
00147 guint get_num_pad_templates() const;
00148
00152 int get_uri_type() const;
00153
00154
00155
00162 Glib::StringArrayHandle get_uri_protocols() const;
00163
00164
00171 bool has_interface(const Glib::ustring& name) const;
00172
00179 Glib::RefPtr<Element> create(const Glib::ustring& name);
00180
00189 static Glib::RefPtr<Element> create(const Glib::ustring& factory_name, const Glib::ustring& name);
00190
00195 bool can_sink_caps(const Glib::RefPtr<const Caps>& caps) const;
00196
00201 bool can_src_caps(const Glib::RefPtr<const Caps>& caps) const;
00202
00203
00207 Glib::ListHandle< Glib::RefPtr<const PadTemplate> > get_static_pad_templates();
00208
00209
00210 public:
00211
00212 public:
00213
00214 #ifdef GLIBMM_VFUNCS_ENABLED
00215 #endif //GLIBMM_VFUNCS_ENABLED
00216
00217 protected:
00218
00219 #ifdef GLIBMM_VFUNCS_ENABLED
00220 #endif //GLIBMM_VFUNCS_ENABLED
00221
00222
00223 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00224 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00225
00226
00227 };
00228
00229 }
00230
00231
00232 namespace Glib
00233 {
00242 Glib::RefPtr<Gst::ElementFactory> wrap(GstElementFactory* object, bool take_copy = false);
00243 }
00244
00245
00246 #endif
00247