1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
// This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // DO NOT EDIT use glib; use glib::object::IsA; use glib::translate::*; use glib::GString; use gst_sys; use Object; use Plugin; glib_wrapper! { /// This is a base class for anything that can be added to a `Plugin`. /// /// # Implements /// /// [`PluginFeatureExt`](trait.PluginFeatureExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`PluginFeatureExtManual`](prelude/trait.PluginFeatureExtManual.html) pub struct PluginFeature(Object<gst_sys::GstPluginFeature, gst_sys::GstPluginFeatureClass, PluginFeatureClass>) @extends Object; match fn { get_type => || gst_sys::gst_plugin_feature_get_type(), } } unsafe impl Send for PluginFeature {} unsafe impl Sync for PluginFeature {} pub const NONE_PLUGIN_FEATURE: Option<&PluginFeature> = None; /// Trait containing all `PluginFeature` methods. /// /// # Implementors /// /// [`DeviceProviderFactory`](struct.DeviceProviderFactory.html), [`ElementFactory`](struct.ElementFactory.html), [`PluginFeature`](struct.PluginFeature.html), [`TypeFindFactory`](struct.TypeFindFactory.html) pub trait PluginFeatureExt: 'static { /// Checks whether the given plugin feature is at least /// the required version /// ## `min_major` /// minimum required major version /// ## `min_minor` /// minimum required minor version /// ## `min_micro` /// minimum required micro version /// /// # Returns /// /// `true` if the plugin feature has at least /// the required version, otherwise `false`. fn check_version(&self, min_major: u32, min_minor: u32, min_micro: u32) -> bool; /// Get the plugin that provides this feature. /// /// # Returns /// /// the plugin that provides this /// feature, or `None`. Unref with `GstObjectExt::unref` when no /// longer needed. fn get_plugin(&self) -> Option<Plugin>; /// Get the name of the plugin that provides this feature. /// /// # Returns /// /// the name of the plugin that provides this /// feature, or `None` if the feature is not associated with a /// plugin. fn get_plugin_name(&self) -> Option<GString>; /// Loads the plugin containing `self` if it's not already loaded. `self` is /// unaffected; use the return value instead. /// /// Normally this function is used like this: /// /// ```C /// GstPluginFeature *loaded_feature; /// /// loaded_feature = gst_plugin_feature_load (feature); /// // presumably, we're no longer interested in the potentially-unloaded feature /// gst_object_unref (feature); /// feature = loaded_feature; /// ``` /// /// # Returns /// /// a reference to the loaded /// feature, or `None` on error fn load(&self) -> Result<PluginFeature, glib::BoolError>; } impl<O: IsA<PluginFeature>> PluginFeatureExt for O { fn check_version(&self, min_major: u32, min_minor: u32, min_micro: u32) -> bool { unsafe { from_glib(gst_sys::gst_plugin_feature_check_version( self.as_ref().to_glib_none().0, min_major, min_minor, min_micro, )) } } fn get_plugin(&self) -> Option<Plugin> { unsafe { from_glib_full(gst_sys::gst_plugin_feature_get_plugin( self.as_ref().to_glib_none().0, )) } } fn get_plugin_name(&self) -> Option<GString> { unsafe { from_glib_none(gst_sys::gst_plugin_feature_get_plugin_name( self.as_ref().to_glib_none().0, )) } } fn load(&self) -> Result<PluginFeature, glib::BoolError> { unsafe { Option::<_>::from_glib_full(gst_sys::gst_plugin_feature_load( self.as_ref().to_glib_none().0, )) .ok_or_else(|| glib_bool_error!("Failed to load plugin feature")) } } }