public class Registry extends GstObject
Plugin
objects.
One registry holds the metadata of a set of plugins. All registries build the RegistryPool.
Design:
The Registry object is a list of plugins and some methods for dealing with them. Plugins are matched 1-1 with a file on disk, and may or may not be loaded at a given time. There may be multiple Registry objects, but the "default registry" is the only object that has any meaning to the core.
The registry.xml file is actually a cache of plugin information. This is unlike versions prior to 0.10, where the registry file was the primary source of plugin information, and was created by the gst-register command.
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.xml file.
On startup, plugins are searched for in the plugin search path. This path can be set directly using the GST_PLUGIN_PATH environment variable. The registry file is loaded from ~/.gstreamer-$GST_MAJORMINOR/registry-$ARCH.xml or the file listed in the GST_REGISTRY environment variable. The only 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:
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.
The "cache" and "default 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 %GST_PLUGIN_FLAG_CACHED bit. These plugins are removed at the end of intitialization.
Modifier and Type | Class and Description |
---|---|
static interface |
Registry.PluginFeatureFilter |
static interface |
Registry.PluginFilter |
GObject.GCallback
NativeObject.Initializer
defaultInit, ownsHandle
Constructor and Description |
---|
Registry(NativeObject.Initializer init)
Creates a new instance of Registry
|
Modifier and Type | Method and Description |
---|---|
boolean |
addPlugin(Plugin plugin)
Add the plugin to the registry.
|
Plugin |
findPlugin(java.lang.String name)
Find a plugin in the registry.
|
PluginFeature |
findPluginFeature(java.lang.String name)
Find a
PluginFeature by name in the registry. |
PluginFeature |
findPluginFeature(java.lang.String name,
GType type)
Find the
PluginFeature with the given name and type in the registry. |
static Registry |
getDefault()
Retrieves the default registry.
|
java.util.List<PluginFeature> |
getPluginFeatureListByPlugin(java.lang.String name)
Retrieves a list of
PluginFeature of the named Plugin . |
java.util.List<PluginFeature> |
getPluginFeatureListByType(GType type)
Retrieves a list of
PluginFeature of the Plugin type. |
java.util.List<Plugin> |
getPluginList()
Get a list of all plugins registered in the registry.
|
java.util.List<Plugin> |
getPluginList(Registry.PluginFilter filter,
boolean onlyReturnFirstMatch)
Get a subset of the Plugins in the registry, filtered by filter.
|
void |
removePlugin(Plugin plugin)
Remove a plugin from the registry.
|
boolean |
scanPath(java.lang.String path)
Add the given path to the registry.
|
addListenerProxy, getName, getParent, initializer, initializer, ref, removeListenerProxy, setName, steal, toString, unref
addCallback, connect, connect, connect, disconnect, disconnect, disposeNativeHandle, emit, emit, g_signal_connect, get, getPointer, getPropertyDefaultValue, getPropertyMaximumValue, getPropertyMinimumValue, getType, invalidate, objectForX, removeCallback, set
classFor, disown, dispose, equals, finalize, getNativeAddress, handle, hashCode, initializer, instanceFor, isDisposed, nativeValue, objectFor, objectFor, objectFor, objectFor
public Registry(NativeObject.Initializer init)
public static Registry getDefault()
public Plugin findPlugin(java.lang.String name)
name
- The plugin name to find.public boolean addPlugin(Plugin plugin)
plugin
- the Plugin
to addpublic void removePlugin(Plugin plugin)
plugin
- The plugin to remove.public PluginFeature findPluginFeature(java.lang.String name, GType type)
PluginFeature
with the given name and type in the registry.name
- The name of the plugin feature to find.type
- The type of the plugin feature to find.public PluginFeature findPluginFeature(java.lang.String name)
PluginFeature
by name in the registry.name
- The name of the plugin feature to find.PluginFeature
or null if not found.public java.util.List<Plugin> getPluginList()
Plugin
public java.util.List<Plugin> getPluginList(Registry.PluginFilter filter, boolean onlyReturnFirstMatch)
filter
- the filter to useonlyReturnFirstMatch
- If true, only return the first plugin that matches the filter.Plugin
objects that match the filter.public java.util.List<PluginFeature> getPluginFeatureListByType(GType type)
PluginFeature
of the Plugin
type.type
- The plugin type.PluginFeature
for the plugin type.public java.util.List<PluginFeature> getPluginFeatureListByPlugin(java.lang.String name)
PluginFeature
of the named Plugin
.name
- The plugin name.PluginFeature
for the named plugin.public boolean scanPath(java.lang.String path)
path
- The path to add to the registry.