## GstElementFactory

GstElementFactory — Create GstElements from a factory

## Functions

gboolean | gst_element_register ()
GstElementFactory * | gst_element_factory_find ()
GType | gst_element_factory_get_element_type ()
const gchar * | gst_element_factory_get_metadata ()
gchar ** | gst_element_factory_get_metadata_keys ()
guint | gst_element_factory_get_num_pad_templates ()
GstURIType | gst_element_factory_get_uri_type ()
const gchar * const * | gst_element_factory_get_uri_protocols ()
gboolean | gst_element_factory_has_interface ()
GstElement * | gst_element_factory_create ()
GstElement * | gst_element_factory_make ()
gboolean | gst_element_factory_can_sink_all_caps ()
gboolean | gst_element_factory_can_src_all_caps ()
gboolean | gst_element_factory_can_sink_any_caps ()
gboolean | gst_element_factory_can_src_any_caps ()
const GList * | gst_element_factory_get_static_pad_templates ()
GList * | gst_element_factory_list_filter ()
GList * | gst_element_factory_list_get_elements ()
gboolean | gst_element_factory_list_is_type ()

## Types and Values

| GstElementFactory
typedef | GstElementFactoryListType
#define | GST_ELEMENT_FACTORY_TYPE_ANY
#define | GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS
#define | GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER
#define | GST_ELEMENT_FACTORY_TYPE_DECODABLE
#define | GST_ELEMENT_FACTORY_TYPE_DECODER
#define | GST_ELEMENT_FACTORY_TYPE_DECRYPTOR
#define | GST_ELEMENT_FACTORY_TYPE_DEMUXER
#define | GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER
#define | GST_ELEMENT_FACTORY_TYPE_ENCODER
#define | GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR
#define | GST_ELEMENT_FACTORY_TYPE_FORMATTER
#define | GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS
#define | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO
#define | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE
#define | GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA
#define | GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE
#define | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO
#define | GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY
#define | GST_ELEMENT_FACTORY_TYPE_MUXER
#define | GST_ELEMENT_FACTORY_TYPE_PARSER
#define | GST_ELEMENT_FACTORY_TYPE_PAYLOADER
#define | GST_ELEMENT_FACTORY_TYPE_SINK
#define | GST_ELEMENT_FACTORY_TYPE_SRC
#define | GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstPluginFeature
                    ╰── GstElementFactory

## Includes

    #include <gst/gst.h>

## Description

GstElementFactory is used to create instances of elements. A GstElementFactory can be added to a GstPlugin as it is also a GstPluginFeature.

Use the `gst_element_factory_find()` and `gst_element_factory_create()` functions to create element instances or use `gst_element_factory_make()` as a convenient shortcut.

The following code example shows you how to create a GstFileSrc element.

#### Using an element factory

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    #include <gst/gst.h>

    GstElement *src;
    GstElementFactory *srcfactory;

    gst_init (&argc, &argv);

    srcfactory = gst_element_factory_find ("filesrc");
    g_return_if_fail (srcfactory != NULL);
    src = gst_element_factory_create (srcfactory, "src");
    g_return_if_fail (src != NULL);
    ...

## Functions

### gst_element_register ()

    gboolean
    gst_element_register (GstPlugin *plugin,
                          const gchar *name,
                          guint rank,
                          GType type);

Create a new elementfactory capable of instantiating objects of the `type` and add the factory to `plugin` .

#### Parameters

plugin | GstPlugin to register the element with, or `NULL` for a static element. | [allow-none]
name | name of elements of this type |
rank | rank of element (higher rank means more importance when autoplugging) |
type | GType of element to register |

#### Returns

`TRUE`, if the registering succeeded, `FALSE` on error

### gst_element_factory_find ()

    GstElementFactory *
    gst_element_factory_find (const gchar *name);

Search for an element factory of the given name. Refs the returned element factory; caller is responsible for unreffing.

#### Parameters

name | name of factory to find |

#### Returns

GstElementFactory if found, `NULL` otherwise.

[transfer full][nullable]

### gst_element_factory_get_element_type ()

    GType
    gst_element_factory_get_element_type (GstElementFactory *factory);

Get the GType for elements managed by this factory. The type can only be retrieved if the element factory is loaded, which can be assured with `gst_plugin_feature_load()`.

#### Parameters

factory | factory to get managed GType from |

#### Returns

the GType for elements managed by this factory or 0 if the factory is not loaded.

### gst_element_factory_get_metadata ()

    const gchar *
    gst_element_factory_get_metadata (GstElementFactory *factory,
                                      const gchar *key);

Get the metadata on `factory` with `key` .

#### Parameters

factory | a GstElementFactory |
key | a key |

#### Returns

the metadata with `key` on `factory` or `NULL` when there was no metadata with the given `key` .

[nullable]

### gst_element_factory_get_metadata_keys ()

    gchar **
    gst_element_factory_get_metadata_keys (GstElementFactory *factory);

Get the available keys for the metadata on `factory` .

#### Parameters

factory | a GstElementFactory |

#### Returns

a `NULL`-terminated array of key strings, or `NULL` when there is no metadata. Free with `g_strfreev()` when no longer needed.

[transfer full][element-type utf8][array zero-terminated=1][nullable]

### gst_element_factory_get_num_pad_templates ()

    guint
    gst_element_factory_get_num_pad_templates
                                   (GstElementFactory *factory);

Gets the number of pad_templates in this factory.

#### Parameters

factory | a GstElementFactory |

#### Returns

the number of pad_templates

### gst_element_factory_get_uri_type ()

    GstURIType
    gst_element_factory_get_uri_type (GstElementFactory *factory);

Gets the type of URIs the element supports or GST_URI_UNKNOWN if none.

#### Parameters

factory | a GstElementFactory |

#### Returns

type of URIs this element supports

### gst_element_factory_get_uri_protocols ()

    const gchar * const *
    gst_element_factory_get_uri_protocols (GstElementFactory *factory);

Gets a `NULL`-terminated array of protocols this element supports or `NULL` if no protocols are supported. You may not change the contents of the returned array, as it is still owned by the element factory. Use `g_strdupv()` to make a copy of the protocol string array if you need to.

#### Parameters

factory | a GstElementFactory |

#### Returns

the supported protocols or `NULL`.

[transfer none][array zero-terminated=1]

### gst_element_factory_has_interface ()

    gboolean
    gst_element_factory_has_interface (GstElementFactory *factory,
                                       const gchar *interfacename);

Check if `factory` implements the interface with name `interfacename` .

#### Parameters

factory | a GstElementFactory |
interfacename | an interface name |

#### Returns

`TRUE` when `factory` implement the interface.

### gst_element_factory_create ()

    GstElement *
    gst_element_factory_create (GstElementFactory *factory,
                                const gchar *name);

Create a new element of the type defined by the given elementfactory. It will be given the name supplied, since all elements require a name as their first argument.

#### Parameters

factory | factory to instantiate |
name | name of new element, or `NULL` to automatically create a unique name. | [allow-none]

#### Returns

new GstElement or `NULL` if the element couldn't be created.

[transfer floating][nullable]

### gst_element_factory_make ()

    GstElement *
    gst_element_factory_make (const gchar *factoryname,
                              const gchar *name);

Create a new element of the type defined by the given element factory. If name is `NULL`, then the element will receive a guaranteed unique name, consisting of the element factory name and a number. If name is given, it will be given the name supplied.

#### Parameters

factoryname | a named factory to instantiate |
name | name of new element, or `NULL` to automatically create a unique name. | [allow-none]

#### Returns

new GstElement or `NULL` if unable to create element.

[transfer floating][nullable]

### gst_element_factory_can_sink_all_caps ()

    gboolean
    gst_element_factory_can_sink_all_caps (GstElementFactory *factory,
                                           const GstCaps *caps);

Checks if the factory can sink all possible capabilities.

#### Parameters

factory | factory to query |
caps | the caps to check |

#### Returns

`TRUE` if the caps are fully compatible.

### gst_element_factory_can_src_all_caps ()

    gboolean
    gst_element_factory_can_src_all_caps (GstElementFactory *factory,
                                          const GstCaps *caps);

Checks if the factory can src all possible capabilities.

#### Parameters

factory | factory to query |
caps | the caps to check |

#### Returns

`TRUE` if the caps are fully compatible.

### gst_element_factory_can_sink_any_caps ()

    gboolean
    gst_element_factory_can_sink_any_caps (GstElementFactory *factory,
                                           const GstCaps *caps);

Checks if the factory can sink any possible capability.

#### Parameters

factory | factory to query |
caps | the caps to check |

#### Returns

`TRUE` if the caps have a common subset.

### gst_element_factory_can_src_any_caps ()

    gboolean
    gst_element_factory_can_src_any_caps (GstElementFactory *factory,
                                          const GstCaps *caps);

Checks if the factory can src any possible capability.

#### Parameters

factory | factory to query |
caps | the caps to check |

#### Returns

`TRUE` if the caps have a common subset.

### gst_element_factory_get_static_pad_templates ()

    const GList *
    gst_element_factory_get_static_pad_templates
                                   (GstElementFactory *factory);

Gets the GList of GstStaticPadTemplate for this factory.

#### Parameters

factory | a GstElementFactory |

#### Returns

the static pad templates.

[transfer none][element-type Gst.StaticPadTemplate]

### gst_element_factory_list_filter ()

    GList *
    gst_element_factory_list_filter (GList *list,
                                     const GstCaps *caps,
                                     GstPadDirection direction,
                                     gboolean subsetonly);

Filter out all the elementfactories in `list` that can handle `caps` in the given direction.

If `subsetonly` is `TRUE`, then only the elements whose pads templates are a complete superset of `caps` will be returned. Else any element whose pad templates caps can intersect with `caps` will be returned.

#### Parameters

list | a GList of GstElementFactory to filter. | [transfer none][element-type Gst.ElementFactory]
caps | a GstCaps |
direction | a GstPadDirection to filter on |
subsetonly | whether to filter on caps subsets or not. |

#### Returns

a GList of GstElementFactory elements that match the given requisites. Use gst_plugin_feature_list_free after usage.

[transfer full][element-type Gst.ElementFactory]

### gst_element_factory_list_get_elements ()

    GList *
    gst_element_factory_list_get_elements (GstElementFactoryListType type,
                                           GstRank minrank);

Get a list of factories that match the given `type` . Only elements with a rank greater or equal to `minrank` will be returned. The list of factories is returned by decreasing rank.

#### Parameters

type | a GstElementFactoryListType |
minrank | Minimum rank |

#### Returns

a GList of GstElementFactory elements. Use `gst_plugin_feature_list_free()` after usage.

[transfer full][element-type Gst.ElementFactory]

### gst_element_factory_list_is_type ()

    gboolean
    gst_element_factory_list_is_type (GstElementFactory *factory,
                                      GstElementFactoryListType type);

Check if `factory` is of the given types.

#### Parameters

factory | a GstElementFactory |
type | a GstElementFactoryListType |

#### Returns

`TRUE` if `factory` is of `type` .

## Types and Values

### GstElementFactory

    typedef struct _GstElementFactory GstElementFactory;

The opaque GstElementFactory data structure.

### GstElementFactoryListType

    typedef guint64 GstElementFactoryListType;

### GST_ELEMENT_FACTORY_TYPE_ANY

    #define  GST_ELEMENT_FACTORY_TYPE_ANY ((GstElementFactoryListType)((G_GUINT64_CONSTANT (1) << 49) - 1))

Elements of any of the defined GST_ELEMENT_FACTORY_LIST types

### GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS

    #define GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS ((GstElementFactoryListType)(GST_ELEMENT_FACTORY_TYPE_SINK | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE))

All sinks handling audio, video or image media types

### GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER

    #define GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER ((GstElementFactoryListType)(GST_ELEMENT_FACTORY_TYPE_ENCODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO))

All encoders handling audio media types

### GST_ELEMENT_FACTORY_TYPE_DECODABLE

    #define             GST_ELEMENT_FACTORY_TYPE_DECODABLE

All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders)

### GST_ELEMENT_FACTORY_TYPE_DECODER

    #define  GST_ELEMENT_FACTORY_TYPE_DECODER        ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 0))

### GST_ELEMENT_FACTORY_TYPE_DECRYPTOR

    #define  GST_ELEMENT_FACTORY_TYPE_DECRYPTOR      ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 10))

### GST_ELEMENT_FACTORY_TYPE_DEMUXER

    #define  GST_ELEMENT_FACTORY_TYPE_DEMUXER        ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 5))

### GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER

    #define  GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER    ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 8))

### GST_ELEMENT_FACTORY_TYPE_ENCODER

    #define  GST_ELEMENT_FACTORY_TYPE_ENCODER        ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 1))

### GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR

    #define  GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR      ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 11))

### GST_ELEMENT_FACTORY_TYPE_FORMATTER

    #define  GST_ELEMENT_FACTORY_TYPE_FORMATTER      ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 9))

### GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS

    #define  GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS   ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 48))

### GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO

    #define  GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO    ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 50))

### GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE

    #define  GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE    ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 51))

### GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA

    #define  GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 53))

### GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE

    #define  GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 52))

### GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO

    #define  GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO    ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 49))

### GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY

    #define GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY ((GstElementFactoryListType)(~G_GUINT64_CONSTANT (0) << 48))

Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA types

Note: Do not use this if you wish to not filter against any of the defined media types. If you wish to do this, simply don't specify any GST_ELEMENT_FACTORY_TYPE_MEDIA flag.

### GST_ELEMENT_FACTORY_TYPE_MUXER

    #define  GST_ELEMENT_FACTORY_TYPE_MUXER          ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 4))

### GST_ELEMENT_FACTORY_TYPE_PARSER

    #define  GST_ELEMENT_FACTORY_TYPE_PARSER         ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 6))

### GST_ELEMENT_FACTORY_TYPE_PAYLOADER

    #define  GST_ELEMENT_FACTORY_TYPE_PAYLOADER      ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 7))

### GST_ELEMENT_FACTORY_TYPE_SINK

    #define  GST_ELEMENT_FACTORY_TYPE_SINK           ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 2))

### GST_ELEMENT_FACTORY_TYPE_SRC

    #define  GST_ELEMENT_FACTORY_TYPE_SRC            ((GstElementFactoryListType)(G_GUINT64_CONSTANT (1) << 3))

### GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER

    #define GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER ((GstElementFactoryListType)(GST_ELEMENT_FACTORY_TYPE_ENCODER | GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO | GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE))

All encoders handling video or image media types

## See Also

GstElement, GstPlugin, GstPluginFeature, GstPadTemplate.