Plugins Extensions to GStreamer can be made using a plugin mechanism. This is used extensively in GStreamer even if only the standard package is being used: a few very basic functions reside in the core library, and all others are in a standard set of plugins. Plugins are only loaded when needed: a plugin registry is used to store the details of the plugins so that it is not neccessary to load all plugins to determine which are needed. This registry needs to be updated when a new plugin is added to the system: see the gstreamer-register utility and the documentation in the GStreamer Application Development Manual for more details. User extensions to GStreamer can be installed in the main plugin directory, and will immediately be available for use in applications. gstreamer-register should be run to update the repository: but the system will work correctly even if it hasn't been - it will just load the correct plugin faster. User specific plugin directories and registries will be available in future versions of GStreamer. Elements Elements are at the core of GStreamer. Without elements, GStreamer is just a bunch of pipe fittings with nothing to connect. A large number of elements (filters, sources and sinks) ship with GStreamer, but extra elements can also be written. An element may be constructed in several different ways, but all must conform to the same basic rules. A simple filter may be built with the FilterFactory, where the only code that need be written is the actual filter code. A more complex filter, or a source or sink, will need to be written out fully for complete access to the features and performance possible with GStreamer. The implementation of a new element will be contained in a plugin: a single plugin may contain the implementation of several elements, or just a single one. Buffers Scheduling Chain vs Loop Elements Typing and Properties Metadata