00001
00002
00003 #ifndef _GSTREAMERMM_REGISTRY_H
00004 #define _GSTREAMERMM_REGISTRY_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 #include <gst/gstregistry.h>
00029 #include <gstreamermm/object.h>
00030 #include <gstreamermm/plugin.h>
00031 #include <gstreamermm/pluginfeature.h>
00032
00033
00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00035 typedef struct _GstRegistry GstRegistry;
00036 typedef struct _GstRegistryClass GstRegistryClass;
00037 #endif
00038
00039
00040 namespace Gst
00041 { class Registry_Class; }
00042 namespace Gst
00043 {
00044
00045 class Plugin;
00046 class PluginFeature;
00047
00104 class Registry : public Object
00105 {
00106
00107 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00108
00109 public:
00110 typedef Registry CppObjectType;
00111 typedef Registry_Class CppClassType;
00112 typedef GstRegistry BaseObjectType;
00113 typedef GstRegistryClass BaseClassType;
00114
00115 private: friend class Registry_Class;
00116 static CppClassType registry_class_;
00117
00118 private:
00119
00120 Registry(const Registry&);
00121 Registry& operator=(const Registry&);
00122
00123 protected:
00124 explicit Registry(const Glib::ConstructParams& construct_params);
00125 explicit Registry(GstRegistry* castitem);
00126
00127 #endif
00128
00129 public:
00130 virtual ~Registry();
00131
00132 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00133 static GType get_type() G_GNUC_CONST;
00134 static GType get_base_type() G_GNUC_CONST;
00135 #endif
00136
00138 GstRegistry* gobj() { return reinterpret_cast<GstRegistry*>(gobject_); }
00139
00141 const GstRegistry* gobj() const { return reinterpret_cast<GstRegistry*>(gobject_); }
00142
00144 GstRegistry* gobj_copy();
00145
00146 private:
00147
00148
00149 public:
00150
00155 static Glib::RefPtr<Gst::Registry> get_default();
00156
00157
00165 Glib::ListHandle< Glib::RefPtr<Gst::PluginFeature> > get_feature_list(GType type);
00166
00167
00175 Glib::ListHandle< Glib::RefPtr<const Gst::PluginFeature> > get_feature_list(GType type) const;
00176
00177
00183 Glib::ListHandle< Glib::RefPtr<Gst::PluginFeature> > get_feature_list(const Glib::ustring& name);
00184
00190 Glib::ListHandle< Glib::RefPtr<const Gst::PluginFeature> > get_feature_list(const Glib::ustring& name) const;
00191
00192
00198 Glib::ListHandle< Glib::ustring > get_path_list() const;
00199
00200
00207 Glib::ListHandle< Glib::RefPtr<Gst::Plugin> > get_plugin_list();
00208
00209
00216 Glib::ListHandle< Glib::RefPtr<const Gst::Plugin> > get_plugin_list() const;
00217
00218
00226 bool add_plugin(const Glib::RefPtr<Gst::Plugin>& plugin);
00227
00233 void remove_plugin(const Glib::RefPtr<Gst::Plugin>& plugin);
00234
00244 Glib::ListHandle< Glib::RefPtr<Gst::Plugin> > get_plugin_list(const Plugin::SlotFilter& filter, bool first);
00245
00246
00256 Glib::ListHandle< Glib::RefPtr<const Gst::Plugin> > get_plugin_list(const Plugin::SlotFilter& filter, bool first) const;
00257
00267 Glib::ListHandle< Glib::RefPtr<Gst::PluginFeature> > get_feature_list(const PluginFeature::SlotFilter& filter, bool first);
00268
00269
00279 Glib::ListHandle< Glib::RefPtr<const Gst::PluginFeature> > get_feature_list(const PluginFeature::SlotFilter& filter, bool first) const;
00280
00281
00290 Glib::RefPtr<Gst::Plugin> find_plugin(const Glib::ustring& name);
00291
00300 Glib::RefPtr<const Gst::Plugin> find_plugin(const Glib::ustring& name) const;
00301
00310 Glib::RefPtr<Gst::PluginFeature> find_feature(const Glib::ustring& name, GType type);
00311
00320 Glib::RefPtr<const Gst::PluginFeature> find_feature(const Glib::ustring& name, GType type) const;
00321
00329 Glib::RefPtr<Gst::PluginFeature> lookup_feature(const Glib::ustring& name);
00330
00338 Glib::RefPtr<const Gst::PluginFeature> lookup_feature(const Glib::ustring& name) const;
00339
00345 void add_path(const Glib::ustring& path);
00346
00353 void scan_path(const Glib::ustring& path);
00354
00355
00356
00357 #ifdef USE_BINARY_REGISTRY
00358
00363 bool binary_read_cache(const Glib::ustring& location);
00364
00365
00371 void binary_write_cache(const Glib::ustring& location) const;
00372 #else
00373
00378 bool xml_read_cache(const Glib::ustring& location);
00379
00380
00387 bool xml_write_cache(const Glib::ustring& location) const;
00388
00389 #endif
00390
00391
00398 Glib::RefPtr<Gst::Plugin> lookup(const Glib::ustring& filename);
00399
00406 Glib::RefPtr<const Gst::Plugin> lookup(const Glib::ustring& filename) const;
00407
00413 void remove_feature(const Glib::RefPtr<Gst::PluginFeature>& feature);
00414
00422 void add_feature(const Glib::RefPtr<Gst::PluginFeature>& feature);
00423
00434 static bool check_feature_version(const Glib::ustring& feature_name, guint min_major, guint min_minor, guint min_micro);
00435
00436
00444 Glib::SignalProxy1< void,const Glib::RefPtr<Gst::PluginFeature>& > signal_feature_added();
00445
00446
00454 Glib::SignalProxy1< void,const Glib::RefPtr<Gst::Plugin>& > signal_plugin_added();
00455
00456
00457 public:
00458
00459 public:
00460
00461 #ifdef GLIBMM_VFUNCS_ENABLED
00462 #endif //GLIBMM_VFUNCS_ENABLED
00463
00464 protected:
00465
00466 #ifdef GLIBMM_VFUNCS_ENABLED
00467 #endif //GLIBMM_VFUNCS_ENABLED
00468
00469
00470 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00471 virtual void on_feature_added(const Glib::RefPtr<Gst::PluginFeature>& feature);
00472 virtual void on_plugin_added(const Glib::RefPtr<Gst::Plugin>& plugin);
00473 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00474
00475
00476 };
00477
00478 }
00479
00480
00481 namespace Glib
00482 {
00491 Glib::RefPtr<Gst::Registry> wrap(GstRegistry* object, bool take_copy = false);
00492 }
00493
00494
00495 #endif
00496