00001
00002
00003 #ifndef _GSTMM_BIN_H
00004 #define _GSTMM_BIN_H
00005
00006
00007 #include <glibmm.h>
00008
00009 #include <gstreamermm/element.h>
00010 #include <gstreamermm/enums.h>
00011
00012
00013 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00014 typedef struct _GstBin GstBin;
00015 typedef struct _GstBinClass GstBinClass;
00016 #endif
00017
00018
00019 namespace Gst
00020 { class Bin_Class; }
00021 namespace Gst
00022 {
00023
00024 class Pad;
00025
00026
00027 class Bin : public Element
00028 {
00029
00030 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00031
00032 public:
00033 typedef Bin CppObjectType;
00034 typedef Bin_Class CppClassType;
00035 typedef GstBin BaseObjectType;
00036 typedef GstBinClass BaseClassType;
00037
00038 private: friend class Bin_Class;
00039 static CppClassType bin_class_;
00040
00041 private:
00042
00043 Bin(const Bin&);
00044 Bin& operator=(const Bin&);
00045
00046 protected:
00047 explicit Bin(const Glib::ConstructParams& construct_params);
00048 explicit Bin(GstBin* castitem);
00049
00050 #endif
00051
00052 public:
00053 virtual ~Bin();
00054
00055 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00056 static GType get_type() G_GNUC_CONST;
00057 static GType get_base_type() G_GNUC_CONST;
00058 #endif
00059
00061 GstBin* gobj() { return reinterpret_cast<GstBin*>(gobject_); }
00062
00064 const GstBin* gobj() const { return reinterpret_cast<GstBin*>(gobject_); }
00065
00067 GstBin* gobj_copy();
00068
00069 private:
00070
00071
00072 protected:
00073 Bin();
00074
00075 public:
00076
00077 static Glib::RefPtr<Bin> create(const Glib::ustring& name);
00078
00079
00080
00081 Glib::RefPtr<Bin> add(const Glib::RefPtr<Element>& element);
00082 Glib::RefPtr<Bin> remove(const Glib::RefPtr<Element>& element);
00083
00084 Glib::RefPtr<Element> get_by_name(const Glib::ustring& element_name);
00085 Glib::RefPtr<Element> get_by_name_recurse_up(const Glib::ustring& element_name);
00086
00087 Glib::RefPtr<Element> get_by_interface(GType interface);
00088
00089 Glib::RefPtr<Pad> find_unconnected_pad(PadDirection direction);
00090
00091
00092
00093
00094
00095
00096 public:
00097
00098 public:
00099
00100 #ifdef GLIBMM_VFUNCS_ENABLED
00101 #endif //GLIBMM_VFUNCS_ENABLED
00102
00103 protected:
00104
00105 #ifdef GLIBMM_VFUNCS_ENABLED
00106 #endif //GLIBMM_VFUNCS_ENABLED
00107
00108
00109 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00110 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00111
00112
00113 };
00114
00115 }
00116
00117
00118 namespace Glib
00119 {
00128 Glib::RefPtr<Gst::Bin> wrap(GstBin* object, bool take_copy = false);
00129 }
00130
00131
00132 #endif
00133