00001
00002
00003 #ifndef _GSTREAMERMM_BIN_H
00004 #define _GSTREAMERMM_BIN_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 <gstreamermm/element.h>
00031 #include <gstreamermm/childproxy.h>
00032 #include <gstreamermm/pad.h>
00033
00034
00035 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00036 typedef struct _GstBin GstBin;
00037 typedef struct _GstBinClass GstBinClass;
00038 #endif
00039
00040
00041 namespace Gst
00042 { class Bin_Class; }
00043 namespace Gst
00044 {
00045
00046 class Pad;
00047
00048
00049
00140 class Bin
00141 : public Element,
00142 public ChildProxy
00143 {
00144
00145 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00146
00147 public:
00148 typedef Bin CppObjectType;
00149 typedef Bin_Class CppClassType;
00150 typedef GstBin BaseObjectType;
00151 typedef GstBinClass BaseClassType;
00152
00153 private: friend class Bin_Class;
00154 static CppClassType bin_class_;
00155
00156 private:
00157
00158 Bin(const Bin&);
00159 Bin& operator=(const Bin&);
00160
00161 protected:
00162 explicit Bin(const Glib::ConstructParams& construct_params);
00163 explicit Bin(GstBin* castitem);
00164
00165 #endif
00166
00167 public:
00168 virtual ~Bin();
00169
00170 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00171 static GType get_type() G_GNUC_CONST;
00172 static GType get_base_type() G_GNUC_CONST;
00173 #endif
00174
00176 GstBin* gobj() { return reinterpret_cast<GstBin*>(gobject_); }
00177
00179 const GstBin* gobj() const { return reinterpret_cast<GstBin*>(gobject_); }
00180
00182 GstBin* gobj_copy();
00183
00184 private:
00185
00186
00187 protected:
00188 explicit Bin(const Glib::ustring& name);
00189
00190 public:
00197 static Glib::RefPtr<Bin> create(const Glib::ustring& name);
00198
00199
00212 Glib::RefPtr<Bin> add(const Glib::RefPtr<Element>& element);
00213
00228 Glib::RefPtr<Bin> remove(const Glib::RefPtr<Element>& element);
00229
00230
00238 Glib::RefPtr<Element> get_element(const Glib::ustring& name);
00239
00247 Glib::RefPtr<Element> get_element_recurse_up(const Glib::ustring& name);
00248
00259 Glib::RefPtr<Element> get_element(GType interface);
00260
00271 Glib::RefPtr<Pad> find_unconnected_pad(PadDirection dir);
00272
00273
00280 Glib::SignalProxy1< void,const Glib::RefPtr<Element>& > signal_element_added();
00281
00282
00289 Glib::SignalProxy1< void,const Glib::RefPtr<Element>& > signal_element_removed();
00290
00291
00292 #ifdef GLIBMM_PROPERTIES_ENABLED
00293
00299 Glib::PropertyProxy<bool> property_async_handling() ;
00300 #endif //#GLIBMM_PROPERTIES_ENABLED
00301
00302 #ifdef GLIBMM_PROPERTIES_ENABLED
00303
00309 Glib::PropertyProxy_ReadOnly<bool> property_async_handling() const;
00310 #endif //#GLIBMM_PROPERTIES_ENABLED
00311
00312
00315 #ifdef GLIBMM_VFUNCS_ENABLED
00316 virtual bool add_element_vfunc(const Glib::RefPtr<Element>& element);
00317 #endif //GLIBMM_VFUNCS_ENABLED
00318
00319
00322 #ifdef GLIBMM_VFUNCS_ENABLED
00323 virtual bool remove_element_vfunc(const Glib::RefPtr<Element>& element);
00324 #endif //GLIBMM_VFUNCS_ENABLED
00325
00326
00329 #ifdef GLIBMM_VFUNCS_ENABLED
00330 virtual void handle_message_vfunc(const Glib::RefPtr<Message>& message);
00331 #endif //GLIBMM_VFUNCS_ENABLED
00332
00333
00334 public:
00335
00336 public:
00337
00338 #ifdef GLIBMM_VFUNCS_ENABLED
00339 #endif //GLIBMM_VFUNCS_ENABLED
00340
00341 protected:
00342
00343 #ifdef GLIBMM_VFUNCS_ENABLED
00344 #endif //GLIBMM_VFUNCS_ENABLED
00345
00346
00347 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00348 virtual void on_element_added(const Glib::RefPtr<Element>& element);
00349 virtual void on_element_removed(const Glib::RefPtr<Element>& element);
00350 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00351
00352
00353 };
00354
00355 }
00356
00357
00358 namespace Glib
00359 {
00368 Glib::RefPtr<Gst::Bin> wrap(GstBin* object, bool take_copy = false);
00369 }
00370
00371
00372 #endif
00373