Struct gstreamer::Registry [−]
pub struct Registry(_, _);
One registry holds the metadata of a set of plugins.
</emphasis>
The Registry
object is a list of plugins and some functions for dealing
with them. Each Plugin
is matched 1-1 with a file on disk, and may or may
not be loaded at a given time.
The primary source, at all times, of plugin information is each plugin file itself. Thus, if an application wants information about a particular plugin, or wants to search for a feature that satisfies given criteria, the primary means of doing so is to load every plugin and look at the resulting information that is gathered in the default registry. Clearly, this is a time consuming process, so we cache information in the registry file. The format and location of the cache file is internal to gstreamer.
On startup, plugins are searched for in the plugin search path. The following locations are checked in this order:
- location from --gst-plugin-path commandline option.
- the GST_PLUGIN_PATH environment variable.
- the GST_PLUGIN_SYSTEM_PATH environment variable.
- default locations (if GST_PLUGIN_SYSTEM_PATH is not set).
Those default locations are:
$XDG_DATA_HOME/gstreamer-$GST_API_VERSION/plugins/
and$prefix/libs/gstreamer-$GST_API_VERSION/
. $XDG_DATA_HOME defaults to$HOME/.local/share
.
The registry cache file is loaded from
$XDG_CACHE_HOME/gstreamer-$GST_API_VERSION/registry-$ARCH.bin
(where $XDG_CACHE_HOME defaults to $HOME/.cache
) or the file listed in the GST_REGISTRY
env var. One reason to change the registry location is for testing.
For each plugin that is found in the plugin search path, there could be 3 possibilities for cached information:
- the cache may not contain information about a given file.
- the cache may have stale information.
- the cache may have current information.
In the first two cases, the plugin is loaded and the cache updated. In addition to these cases, the cache may have entries for plugins that are not relevant to the current process. These are marked as not available to the current process. If the cache is updated for whatever reason, it is marked dirty.
A dirty cache is written out at the end of initialization. Each entry is checked to make sure the information is minimally valid. If not, the entry is simply dropped.
Implementation notes:
The "cache" and "registry" are different concepts and can represent
different sets of plugins. For various reasons, at init time, the cache is
stored in the default registry, and plugins not relevant to the current
process are marked with the PluginFlags::Cached
bit. These plugins are
removed at the end of initialization.
Implements
Methods
impl Registry
[src]
impl Registry
pub fn add_feature<P: IsA<PluginFeature>>(
&self,
feature: &P
) -> Result<(), BoolError>
[src]
pub fn add_feature<P: IsA<PluginFeature>>(
&self,
feature: &P
) -> Result<(), BoolError>
Add the feature to the registry. The feature-added signal will be emitted.
feature
's reference count will be incremented, and any floating
reference will be removed (see Object::ref_sink
)
feature
the feature to add
Returns
true
on success.
MT safe.
pub fn add_plugin(&self, plugin: &Plugin) -> Result<(), BoolError>
[src]
pub fn add_plugin(&self, plugin: &Plugin) -> Result<(), BoolError>
Add the plugin to the registry. The plugin-added signal will be emitted.
plugin
's reference count will be incremented, and any floating
reference will be removed (see Object::ref_sink
)
plugin
the plugin to add
Returns
true
on success.
MT safe.
pub fn check_feature_version(
&self,
feature_name: &str,
min_major: u32,
min_minor: u32,
min_micro: u32
) -> bool
[src]
pub fn check_feature_version(
&self,
feature_name: &str,
min_major: u32,
min_minor: u32,
min_micro: u32
) -> bool
Checks whether a plugin feature by the given name exists in
self
and whether its version is at least the
version required.
feature_name
the name of the feature (e.g. "oggdemux")
min_major
the minimum major version number
min_minor
the minimum minor version number
min_micro
the minimum micro version number
Returns
true
if the feature could be found and the version is
the same as the required version or newer, and false
otherwise.
pub fn find_feature(&self, name: &str, type_: Type) -> Option<PluginFeature>
[src]
pub fn find_feature(&self, name: &str, type_: Type) -> Option<PluginFeature>
Find the pluginfeature with the given name and type in the registry.
name
the pluginfeature name to find
type_
the pluginfeature type to find
Returns
the pluginfeature with the
given name and type or None
if the plugin was not
found. GstObjectExt::unref
after usage.
MT safe.
pub fn find_plugin(&self, name: &str) -> Option<Plugin>
[src]
pub fn find_plugin(&self, name: &str) -> Option<Plugin>
Find the plugin with the given name in the registry. The plugin will be reffed; caller is responsible for unreffing.
name
the plugin name to find
Returns
the plugin with the given name
or None
if the plugin was not found. GstObjectExt::unref
after
usage.
MT safe.
pub fn get_feature_list(&self, type_: Type) -> Vec<PluginFeature>
[src]
pub fn get_feature_list(&self, type_: Type) -> Vec<PluginFeature>
Retrieves a glib::List
of PluginFeature
of type_
.
type_
a glib::Type
.
Returns
a glib::List
of
PluginFeature
of type_
. Use PluginFeature::list_free
after use
MT safe.
pub fn get_feature_list_by_plugin(&self, name: &str) -> Vec<PluginFeature>
[src]
pub fn get_feature_list_by_plugin(&self, name: &str) -> Vec<PluginFeature>
Retrieves a glib::List
of features of the plugin with name name
.
name
a plugin name.
Returns
a glib::List
of
PluginFeature
. Use PluginFeature::list_free
after usage.
Returns the registry's feature list cookie. This changes every time a feature is added or removed from the registry.
Returns
the feature list cookie.
pub fn get_plugin_list(&self) -> Vec<Plugin>
[src]
pub fn get_plugin_list(&self) -> Vec<Plugin>
Get a copy of all plugins registered in the given registry. The refcount of each element in the list in incremented.
Returns
a glib::List
of Plugin
.
Use Plugin::list_free
after usage.
MT safe.
pub fn lookup(&self, filename: &str) -> Option<Plugin>
[src]
pub fn lookup(&self, filename: &str) -> Option<Plugin>
Look up a plugin in the given registry with the given filename. If found, plugin is reffed.
filename
the name of the file to look up
Returns
the Plugin
if found, or
None
if not. GstObjectExt::unref
after usage.
pub fn lookup_feature(&self, name: &str) -> Option<PluginFeature>
[src]
pub fn lookup_feature(&self, name: &str) -> Option<PluginFeature>
Find a PluginFeature
with name
in self
.
name
a PluginFeature
name
Returns
a PluginFeature
with its refcount incremented,
use GstObjectExt::unref
after usage.
MT safe.
pub fn remove_feature<P: IsA<PluginFeature>>(&self, feature: &P)
[src]
pub fn remove_feature<P: IsA<PluginFeature>>(&self, feature: &P)
pub fn remove_plugin(&self, plugin: &Plugin)
[src]
pub fn remove_plugin(&self, plugin: &Plugin)
pub fn scan_path<P: AsRef<Path>>(&self, path: P) -> bool
[src]
pub fn scan_path<P: AsRef<Path>>(&self, path: P) -> bool
Scan the given path for plugins to add to the registry. The syntax of the path is specific to the registry.
path
the path to scan
Returns
true
if registry changed
pub fn get() -> Registry
[src]
pub fn get() -> Registry
Retrieves the singleton plugin registry. The caller does not own a reference on the registry, as it is alive as long as GStreamer is initialized.
Returns
the Registry
.
pub fn connect_feature_added<F: Fn(&Registry, &PluginFeature) + Send + Sync + 'static>(
&self,
f: F
) -> SignalHandlerId
[src]
pub fn connect_feature_added<F: Fn(&Registry, &PluginFeature) + Send + Sync + 'static>(
&self,
f: F
) -> SignalHandlerId
pub fn connect_plugin_added<F: Fn(&Registry, &Plugin) + Send + Sync + 'static>(
&self,
f: F
) -> SignalHandlerId
[src]
pub fn connect_plugin_added<F: Fn(&Registry, &Plugin) + Send + Sync + 'static>(
&self,
f: F
) -> SignalHandlerId
Trait Implementations
impl Clone for Registry
impl Clone for Registry
fn clone(&self) -> Registry
fn clone(&self) -> Registry
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Hash for Registry
impl Hash for Registry
fn hash<__H: Hasher>(&self, state: &mut __H)
fn hash<__H: Hasher>(&self, state: &mut __H)
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl Ord for Registry
impl Ord for Registry
fn cmp(&self, other: &Registry) -> Ordering
fn cmp(&self, other: &Registry) -> Ordering
This method returns an Ordering
between self
and other
. Read more
fn max(self, other: Self) -> Self
1.21.0[src]
fn max(self, other: Self) -> Self
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self
1.21.0[src]
fn min(self, other: Self) -> Self
Compares and returns the minimum of two values. Read more
impl StaticType for Registry
impl StaticType for Registry
fn static_type() -> Type
fn static_type() -> Type
Returns the type identifier of Self
.
impl<T: IsA<Object>> PartialEq<T> for Registry
impl<T: IsA<Object>> PartialEq<T> for Registry
fn eq(&self, other: &T) -> bool
fn eq(&self, other: &T) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl Eq for Registry
impl Eq for Registry
impl<T: IsA<Object>> PartialOrd<T> for Registry
impl<T: IsA<Object>> PartialOrd<T> for Registry
fn partial_cmp(&self, other: &T) -> Option<Ordering>
fn partial_cmp(&self, other: &T) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl Debug for Registry
impl Debug for Registry
impl IsA<Object> for Registry
impl IsA<Object> for Registry
impl IsA<Object> for Registry
impl IsA<Object> for Registry
impl Send for Registry
[src]
impl Send for Registry
impl Sync for Registry
[src]
impl Sync for Registry