- Main Page
- Modules
- Namespaces
- Classes
- Files

# elementfactory.h

Go to the documentation of this file.

    00001 // -*- c++ -*-
    00002 // Generated by gtkmmproc -- DO NOT MODIFY!
    00003 #ifndef _GSTREAMERMM_ELEMENTFACTORY_H
    00004 #define _GSTREAMERMM_ELEMENTFACTORY_H
    00005
    00006
    00007 #include <glibmm.h>
    00008
    00009 /* gstreamermm - a C++ wrapper for gstreamer
    00010  *
    00011  * Copyright 2008 The gstreamermm Development Team
    00012  *
    00013  * This library is free software; you can redistribute it and/or
    00014  * modify it under the terms of the GNU Lesser General Public
    00015  * License as published by the Free Software Foundation; either
    00016  * version 2.1 of the License, or (at your option) any later version.
    00017  *
    00018  * This library is distributed in the hope that it will be useful,
    00019  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    00020  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00021  * Lesser General Public License for more details.
    00022  *
    00023  * You should have received a copy of the GNU Lesser General Public
    00024  * License along with this library; if not, write to the Free
    00025  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    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 /* DOXYGEN_SHOULD_SKIP_THIS */
    00036
    00037
    00038 namespace Gst
    00039 { class ElementFactory_Class; } // namespace Gst
    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   // noncopyable
    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 /* DOXYGEN_SHOULD_SKIP_THIS */
    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   //Note that name can't be NULL here, though it seems like gstreamer should allow that as for gst_element_factory_make().
    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   //C++ methods used to invoke GTK+ virtual functions:
    00256 #ifdef GLIBMM_VFUNCS_ENABLED
    00257 #endif //GLIBMM_VFUNCS_ENABLED
    00258
    00259 protected:
    00260   //GTK+ Virtual Functions (override these to change behaviour):
    00261 #ifdef GLIBMM_VFUNCS_ENABLED
    00262 #endif //GLIBMM_VFUNCS_ENABLED
    00263
    00264   //Default Signal Handlers::
    00265 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
    00266 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
    00267
    00268
    00269 };
    00270
    00271 } // namespace Gst
    00272
    00273
    00274 namespace Glib
    00275 {
    00284   Glib::RefPtr<Gst::ElementFactory> wrap(GstElementFactory* object, bool take_copy = false);
    00285 }
    00286
    00287
    00288 #endif /* _GSTREAMERMM_ELEMENTFACTORY_H */
    00289