Struct gstreamer::Registry[][src]

pub struct Registry(_);
Expand description

One registry holds the metadata of a set of plugins.

Design:</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

GstObjectExt, glib::ObjectExt

Implementations

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 gst_object_ref_sink())

feature

the feature to add

Returns

true on success.

MT safe.

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 gst_object_ref_sink())

plugin

the plugin to add

Returns

true on success.

MT safe.

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.

Runs a filter against all features of the plugins in the registry and returns a GList with the results. If the first flag is set, only the first match is returned (as a list with a single object).

filter

the filter to use

first

only return first match

Returns

a GList of PluginFeature. Use gst_plugin_feature_list_free() after usage.

MT safe.

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. gst_object_unref() after usage.

MT safe.

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. gst_object_unref() after usage.

MT safe.

Retrieves a GList of PluginFeature of type_.

type_

a GType.

Returns

a GList of PluginFeature of type_. Use gst_plugin_feature_list_free() after use

MT safe.

Retrieves a GList of features of the plugin with name name.

name

a plugin name.

Returns

a GList of PluginFeature. Use gst_plugin_feature_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.

Get a copy of all plugins registered in the given registry. The refcount of each element in the list in incremented.

Returns

a GList of Plugin. Use gst_plugin_list_free() after usage.

MT safe.

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. gst_object_unref() after usage.

Find a PluginFeature with name in self.

name

a PluginFeature name

Returns

a PluginFeature with its refcount incremented, use gst_object_unref() after usage.

MT safe.

Runs a filter against all plugins in the registry and returns a GList with the results. If the first flag is set, only the first match is returned (as a list with a single object). Every plugin is reffed; use gst_plugin_list_free() after use, which will unref again.

filter

the filter to use

first

only return first match

Returns

a GList of Plugin. Use gst_plugin_list_free() after usage.

MT safe.

Remove the feature from the registry.

MT safe.

feature

the feature to remove

Remove the plugin from the registry.

MT safe.

plugin

the plugin to remove

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

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.

Signals that a feature has been added to the registry (possibly replacing a previously-added one by the same name)

feature

the feature that has been added

Signals that a plugin has been added to the registry (possibly replacing a previously-added one by the same name)

plugin

the plugin that has been added

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Returns the type identifier of Self.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Upcasts an object to a superclass or interface T. Read more

Upcasts an object to a reference of its superclass or interface T. Read more

Tries to downcast to a subclass or interface implementor T. Read more

Tries to downcast to a reference of its subclass or interface implementor T. Read more

Tries to cast to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more

Tries to cast to reference to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more

Casts to T unconditionally. Read more

Casts to &T unconditionally. Read more

Performs the conversion.

Performs the conversion.

Returns true if the object is an instance of (can be cast to) T.

Safety Read more

Safety Read more

Safety Read more

Safety Read more

Safety Read more

Safety Read more

Same as connect but takes a SignalId instead of a signal name.

Same as connect_local but takes a SignalId instead of a signal name.

Same as connect_unsafe but takes a SignalId instead of a signal name.

Emit signal by signal id.

Emit signal with details by signal id.

Emit signal by it’s name.

Same as emit but takes Value for the arguments.

Same as emit_by_name but takes Value for the arguments.

Same as emit_with_details but takes Value for the arguments.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

Returns a SendValue clone of self.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.