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
00135
00136 static GType get_base_type() G_GNUC_CONST;
00137 #endif
00138
00140 GstRegistry* gobj() { return reinterpret_cast<GstRegistry*>(gobject_); }
00141
00143 const GstRegistry* gobj() const { return reinterpret_cast<GstRegistry*>(gobject_); }
00144
00146 GstRegistry* gobj_copy();
00147
00148 private:
00149
00150
00151 public:
00152
00157 static Glib::RefPtr<Gst::Registry> get_default();
00158
00159
00167 Glib::ListHandle< Glib::RefPtr<Gst::PluginFeature> > get_feature_list(GType type);
00168
00169
00177 Glib::ListHandle< Glib::RefPtr<const Gst::PluginFeature> > get_feature_list(GType type) const;
00178
00179
00185 Glib::ListHandle< Glib::RefPtr<Gst::PluginFeature> > get_feature_list(const Glib::ustring& name);
00186
00192 Glib::ListHandle< Glib::RefPtr<const Gst::PluginFeature> > get_feature_list(const Glib::ustring& name) const;
00193
00194
00200 Glib::ListHandle< Glib::ustring > get_path_list() const;
00201
00202
00209 Glib::ListHandle< Glib::RefPtr<Gst::Plugin> > get_plugin_list();
00210
00211
00218 Glib::ListHandle< Glib::RefPtr<const Gst::Plugin> > get_plugin_list() const;
00219
00220
00228 bool add_plugin(const Glib::RefPtr<Gst::Plugin>& plugin);
00229
00235 void remove_plugin(const Glib::RefPtr<Gst::Plugin>& plugin);
00236
00246 Glib::ListHandle< Glib::RefPtr<Gst::Plugin> > get_plugin_list(const Plugin::SlotFilter& filter, bool first);
00247
00248
00258 Glib::ListHandle< Glib::RefPtr<const Gst::Plugin> > get_plugin_list(const Plugin::SlotFilter& filter, bool first) const;
00259
00269 Glib::ListHandle< Glib::RefPtr<Gst::PluginFeature> > get_feature_list(const PluginFeature::SlotFilter& filter, bool first);
00270
00271
00281 Glib::ListHandle< Glib::RefPtr<const Gst::PluginFeature> > get_feature_list(const PluginFeature::SlotFilter& filter, bool first) const;
00282
00283
00292 Glib::RefPtr<Gst::Plugin> find_plugin(const Glib::ustring& name);
00293
00302 Glib::RefPtr<const Gst::Plugin> find_plugin(const Glib::ustring& name) const;
00303
00312 Glib::RefPtr<Gst::PluginFeature> find_feature(const Glib::ustring& name, GType type);
00313
00322 Glib::RefPtr<const Gst::PluginFeature> find_feature(const Glib::ustring& name, GType type) const;
00323
00331 Glib::RefPtr<Gst::PluginFeature> lookup_feature(const Glib::ustring& name);
00332
00340 Glib::RefPtr<const Gst::PluginFeature> lookup_feature(const Glib::ustring& name) const;
00341
00347 void add_path(const Glib::ustring& path);
00348
00354 void scan_path(const Glib::ustring& path);
00355
00356
00357
00358 #ifdef USE_BINARY_REGISTRY
00359
00364 bool binary_read_cache(const Glib::ustring& location);
00365
00366
00372 void binary_write_cache(const Glib::ustring& location) const;
00373
00374 #else
00375
00380 bool xml_read_cache(const Glib::ustring& location);
00381
00382
00389 bool xml_write_cache(const Glib::ustring& location) const;
00390
00391 #endif
00392
00393
00400 Glib::RefPtr<Gst::Plugin> lookup(const Glib::ustring& filename);
00401
00408 Glib::RefPtr<const Gst::Plugin> lookup(const Glib::ustring& filename) const;
00409
00415 void remove_feature(const Glib::RefPtr<Gst::PluginFeature>& feature);
00416
00424 void add_feature(const Glib::RefPtr<Gst::PluginFeature>& feature);
00425
00436 static bool check_feature_version(const Glib::ustring& feature_name, guint min_major, guint min_minor, guint min_micro);
00437
00438
00446 Glib::SignalProxy1< void,const Glib::RefPtr<Gst::PluginFeature>& > signal_feature_added();
00447
00448
00456 Glib::SignalProxy1< void,const Glib::RefPtr<Gst::Plugin>& > signal_plugin_added();
00457
00458
00459 public:
00460
00461 public:
00462
00463 #ifdef GLIBMM_VFUNCS_ENABLED
00464 #endif //GLIBMM_VFUNCS_ENABLED
00465
00466 protected:
00467
00468 #ifdef GLIBMM_VFUNCS_ENABLED
00469 #endif //GLIBMM_VFUNCS_ENABLED
00470
00471
00472 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00473 virtual void on_feature_added(const Glib::RefPtr<Gst::PluginFeature>& feature);
00474 virtual void on_plugin_added(const Glib::RefPtr<Gst::Plugin>& plugin);
00475 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00476
00477
00478 };
00479
00480 }
00481
00482
00483 namespace Glib
00484 {
00493 Glib::RefPtr<Gst::Registry> wrap(GstRegistry* object, bool take_copy = false);
00494 }
00495
00496
00497 #endif
00498