gstreamermm  1.10.0
Public Member Functions | Static Public Member Functions | Related Functions | List of all members
Gst::ElementFactory Class Reference

Create Gst::Element 's from a factory. More...

#include <gstreamermm/elementfactory.h>

Inheritance diagram for Gst::ElementFactory:
Inheritance graph
[legend]

Public Member Functions

 ElementFactory (ElementFactory&& src) noexcept
 
ElementFactoryoperator= (ElementFactory&& src) noexcept
 
 ~ElementFactory () noexcept override
 
GstElementFactory* gobj ()
 Provides access to the underlying C GObject. More...
 
const GstElementFactory* gobj () const
 Provides access to the underlying C GObject. More...
 
GstElementFactory* gobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
Glib::RefPtr< Gst::Elementcreate (const Glib::ustring& name)
 Create a new element of the type defined by the given elementfactory. More...
 
Glib::RefPtr< Gst::Elementcreate ()
 A create() convenience overload. More...
 
bool can_sink_all_caps (const Glib::RefPtr< const Gst::Caps >& caps) const
 Checks if the factory can sink all possible capabilities. More...
 
bool can_src_all_caps (const Glib::RefPtr< const Gst::Caps >& caps) const
 Checks if the factory can src all possible capabilities. More...
 
bool can_sink_any_caps (const Glib::RefPtr< const Gst::Caps >& caps) const
 Checks if the factory can sink any possible capability. More...
 
bool can_src_any_caps (const Glib::RefPtr< const Gst::Caps >& caps) const
 Checks if the factory can src any possible capability. More...
 
GType get_element_type () const
 Get the Type for elements managed by this factory. More...
 
std::vector< Glib::ustring > get_metadata_keys () const
 Get the available keys for the metadata on factory. More...
 
Glib::ustring get_metadata (const Glib::ustring& key) const
 Get the metadata on factory with key. More...
 
guint get_num_pad_templates () const
 Gets the number of pad_templates in this factory. More...
 
URIType get_uri_type () const
 Gets the type of URIs the element supports or Gst::URI_UNKNOWN if none. More...
 
std::vector< Glib::ustring > get_uri_protocols () const
 Gets a nullptr-terminated array of protocols this element supports or nullptr if no protocols are supported. More...
 
bool has_interface (const Glib::ustring& name) const
 Check if factory implements the interface with name name. More...
 
std::vector< Gst::StaticPadTemplateget_static_pad_templates () const
 Gets the List of Gst::StaticPadTemplate for this factory. More...
 
bool is_type (ElementFactoryListType type) const
 Check if factory is of the given types. More...
 
- Public Member Functions inherited from Gst::PluginFeature
 PluginFeature (PluginFeature&& src) noexcept
 
PluginFeatureoperator= (PluginFeature&& src) noexcept
 
 ~PluginFeature () noexcept override
 
GstPluginFeature* gobj ()
 Provides access to the underlying C GObject. More...
 
const GstPluginFeature* gobj () const
 Provides access to the underlying C GObject. More...
 
GstPluginFeature* gobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
void set_rank (guint rank)
 Specifies a rank for a plugin feature, so that autoplugging uses the most appropriate feature. More...
 
guint get_rank () const
 Gets the rank of a plugin feature. More...
 
Glib::RefPtr< Gst::PluginFeatureload ()
 Loads the plugin containing feature if it's not already loaded. More...
 
Glib::RefPtr< Gst::Pluginget_plugin () const
 Get the plugin that provides this feature. More...
 
Glib::ustring get_plugin_name () const
 Get the name of the plugin that provides this feature. More...
 
bool check_version (guint min_major, guint min_minor, guint min_micro) const
 Checks whether the given plugin feature is at least the required version. More...
 
- Public Member Functions inherited from Gst::Object
 Object (Object&& src) noexcept
 
Objectoperator= (Object&& src) noexcept
 
 ~Object () noexcept override
 
GstObject* gobj ()
 Provides access to the underlying C GObject. More...
 
const GstObject* gobj () const
 Provides access to the underlying C GObject. More...
 
GstObject* gobj_copy ()
 Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
 
bool is_element () const
 
bool is_element_factory () const
 
bool is_pad () const
 
bool is_pad_template () const
 
bool is_bin () const
 
guint32 get_flags () const
 Returns the entire set of flags for the object. More...
 
bool set_name (const Glib::ustring& name)
 Sets the name of object, or gives object a guaranteed unique name (if name is nullptr). More...
 
Glib::ustring get_name () const
 Returns a copy of the name of object. More...
 
bool set_parent (const Glib::RefPtr< Gst::Object >& parent)
 Sets the parent of object to parent. More...
 
Glib::RefPtr< Gst::Objectget_parent ()
 Returns the parent of object. More...
 
Glib::RefPtr< const Gst::Objectget_parent () const
 Returns the parent of object. More...
 
void unparent ()
 Clear the parent of object, removing the associated reference. More...
 
void set_control_rate (Gst::ClockTime control_rate)
 Change the control-rate for this object. More...
 
Gst::ClockTime get_control_rate () const
 Obtain the control-rate for this object. More...
 
Gst::ClockTime suggest_next_sync () const
 Returns a suggestion for timestamps where buffers should be split to get best controller results. More...
 
bool sync_values (Gst::ClockTime timestamp)
 Sets the properties of the object, according to the Gst::ControlSources that (maybe) handle them and for the given timestamp. More...
 
void set_control_bindings_disabled (bool disabled)
 This function is used to disable all controlled properties of the object for some time, i.e. sync_values() will do nothing. More...
 
bool has_asctive_control_bindings () const
 Check if the object has an active controlled properties. More...
 
bool has_ancestor (const Glib::RefPtr< const Gst::Object >& ancestor) const
 Check if object has an ancestor ancestor somewhere up in the hierarchy. More...
 
bool has_as_ancestor (const Glib::RefPtr< Gst::Object >& ancestor) const
 Check if object has an ancestor ancestor somewhere up in the hierarchy. More...
 
bool has_as_parent (const Glib::RefPtr< Gst::Object >& parent) const
 Check if parent is the parent of object. More...
 
Glib::ustring get_path_string ()
 Generates a string describing the path of object in the object hierarchy. More...
 
Glib::PropertyProxy< Glib::ustring > property_name ()
 The name of the object. More...
 
Glib::PropertyProxy_ReadOnly< Glib::ustring > property_name () const
 The name of the object. More...
 
Glib::PropertyProxy< Glib::RefPtr< Gst::Object > > property_parent ()
 The parent of the object. More...
 
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< Gst::Object > > property_parent () const
 The parent of the object. More...
 
Glib::SignalProxy< void, const Glib::RefPtr< Gst::Object >&, GParamSpec*> signal_deep_notify ()
 
int get_refcount () const
 

Static Public Member Functions

static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...
 
static bool register_element (const Glib::RefPtr< Gst::Plugin >& plugin, const Glib::ustring& name, guint rank, GType type)
 Create a new elementfactory capable of instantiating objects of the type and add the factory to plugin. More...
 
static Glib::RefPtr< Gst::ElementFactoryfind (const Glib::ustring& name)
 Search for an element factory of the given name. More...
 
static Glib::RefPtr< Gst::Elementcreate_element (const Glib::ustring& factory_name, const Glib::ustring& name)
 Create a new element of the type defined by the given element factory. More...
 
static Glib::RefPtr< Gst::Elementcreate_element (const Glib::ustring& factory_name)
 A create_element() convenience overload. More...
 
static std::vector< Glib::RefPtr< Gst::ElementFactory > > filter (const std::vector< Glib::RefPtr< Gst::ElementFactory > >& list, const Glib::RefPtr< const Gst::Caps >& caps, PadDirection direction, bool subsetonly)
 Filter out all the elementfactories in list that can handle caps in the given direction. More...
 
static std::vector< Glib::RefPtr< Gst::ElementFactory > > get_elements (ElementFactoryListType type, Rank minrank)
 Get a list of factories that match the given type. More...
 
- Static Public Member Functions inherited from Gst::PluginFeature
static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...
 
- Static Public Member Functions inherited from Gst::Object
static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...
 
static bool check_uniqueness (const Glib::ListHandle< const Gst::Object >& list, const Glib::ustring& name)
 Checks to see if there is any object named name in list. More...
 

Related Functions

(Note that these are not member functions.)

Glib::RefPtr< Gst::ElementFactorywrap (GstElementFactory* object, bool take_copy=false)
 A Glib::wrap() method for this object. More...
 

Additional Inherited Members

- Public Types inherited from Gst::PluginFeature
typedef sigc::slot< bool, const Glib::RefPtr< Gst::PluginFeature >&> SlotFilter
 For example, bool on_filter(const Glib::RefPtr<Gst::PluginFeature>& feature);. More...
 
- Protected Member Functions inherited from Gst::Object
virtual void on_deep_notify (const Glib::RefPtr< Gst::Object >& prop_object, GParamSpec* prop)
 This is a default handler for the signal signal_deep_notify(). More...
 

Detailed Description

Create Gst::Element 's from a factory.

Gst::ElementFactory is used to create instances of elements. A Gst::ElementFactory can be added to a Gst::Plugin as it is also a Gst::PluginFeature.

Use the find() and create() functions to create element instances or use create_element() as a convenient shortcut.

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

#include <gstreamermm.h>
#include <iostream>
int main (int argc, char *argc[])
{
Glib::RefPtr<Gst::Element> src;
Glib::RefPtr<Gst::ElementFactory> srcfactory;
Gst::init(&argc,&argv);
srcfactory = Gst::ElementFactory::find("filesrc");
if(!srcfactory)
{
std::cout << "Could not find factory 'filesrc'" << std::endl;
exit(1);
}
src = srcfactory->create("src");
if(!src)
{
std::cout << "Could not create element 'src'" << std::endl;
exit(1);
}
...
}

Last reviewed on 2016-05-21 (1.8.0).

Constructor & Destructor Documentation

◆ ElementFactory()

Gst::ElementFactory::ElementFactory ( ElementFactory&&  src)
noexcept

◆ ~ElementFactory()

Gst::ElementFactory::~ElementFactory ( )
overridenoexcept

Member Function Documentation

◆ can_sink_all_caps()

bool Gst::ElementFactory::can_sink_all_caps ( const Glib::RefPtr< const Gst::Caps >&  caps) const

Checks if the factory can sink all possible capabilities.

Parameters
capsThe caps to check.
Returns
true if the caps are fully compatible.

◆ can_sink_any_caps()

bool Gst::ElementFactory::can_sink_any_caps ( const Glib::RefPtr< const Gst::Caps >&  caps) const

Checks if the factory can sink any possible capability.

Parameters
capsThe caps to check.
Returns
true if the caps have a common subset.

◆ can_src_all_caps()

bool Gst::ElementFactory::can_src_all_caps ( const Glib::RefPtr< const Gst::Caps >&  caps) const

Checks if the factory can src all possible capabilities.

Parameters
capsThe caps to check.
Returns
true if the caps are fully compatible.

◆ can_src_any_caps()

bool Gst::ElementFactory::can_src_any_caps ( const Glib::RefPtr< const Gst::Caps >&  caps) const

Checks if the factory can src any possible capability.

Parameters
capsThe caps to check.
Returns
true if the caps have a common subset.

◆ create() [1/2]

Glib::RefPtr<Gst::Element> Gst::ElementFactory::create ( const Glib::ustring &  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
nameName of new element, or nullptr to automatically create a unique name.
Returns
New Gst::Element or nullptr if the element couldn't be created.

◆ create() [2/2]

Glib::RefPtr<Gst::Element> Gst::ElementFactory::create ( )

A create() convenience overload.

◆ create_element() [1/2]

static Glib::RefPtr<Gst::Element> Gst::ElementFactory::create_element ( const Glib::ustring &  factory_name,
const Glib::ustring &  name 
)
static

Create a new element of the type defined by the given element factory.

Parameters
factory_nameA named factory to instantiate.
nameName of new element.
Returns
New Gst::Element or nullptr if unable to create element.
Examples:
basics/bin.cc, basics/bus.cc, basics/dynamic_pads.cc, and basics/element_factory.cc.

◆ create_element() [2/2]

static Glib::RefPtr<Gst::Element> Gst::ElementFactory::create_element ( const Glib::ustring &  factory_name)
static

A create_element() convenience overload.

◆ filter()

static std::vector< Glib::RefPtr<Gst::ElementFactory> > Gst::ElementFactory::filter ( const std::vector< Glib::RefPtr< Gst::ElementFactory > >&  list,
const Glib::RefPtr< const Gst::Caps >&  caps,
PadDirection  direction,
bool  subsetonly 
)
static

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
listA List of Gst::ElementFactory to filter.
capsA Gst::Caps.
directionA Gst::PadDirection to filter on.
subsetonlyWhether to filter on caps subsets or not.
Returns
A List of Gst::ElementFactory elements that match the given requisites. Use #gst_plugin_feature_list_free after usage.

◆ find()

static Glib::RefPtr<Gst::ElementFactory> Gst::ElementFactory::find ( const Glib::ustring &  name)
static

Search for an element factory of the given name.

Refs the returned element factory; caller is responsible for unreffing.

Parameters
nameName of factory to find.
Returns
Gst::ElementFactory if found, nullptr otherwise.
Examples:
basics/element_factory.cc.

◆ get_element_type()

GType Gst::ElementFactory::get_element_type ( ) const

Get the Type for elements managed by this factory.

The type can only be retrieved if the element factory is loaded, which can be assured with Gst::PluginFeature::load().

Returns
The Type for elements managed by this factory or 0 if the factory is not loaded.

◆ get_elements()

static std::vector< Glib::RefPtr<Gst::ElementFactory> > Gst::ElementFactory::get_elements ( ElementFactoryListType  type,
Rank  minrank 
)
static

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
typeA Gst::ElementFactoryListType.
minrankMinimum rank.
Returns
A List of Gst::ElementFactory elements. Use Gst::PluginFeature::list_free() after usage.
Examples:
basics/element_factory.cc.

◆ get_metadata()

Glib::ustring Gst::ElementFactory::get_metadata ( const Glib::ustring &  key) const

Get the metadata on factory with key.

Parameters
keyA key.
Returns
The metadata with key on factory or nullptr when there was no metadata with the given key.

◆ get_metadata_keys()

std::vector<Glib::ustring> Gst::ElementFactory::get_metadata_keys ( ) const

Get the available keys for the metadata on factory.

Returns
A nullptr-terminated array of key strings, or nullptr when there is no metadata.

◆ get_num_pad_templates()

guint Gst::ElementFactory::get_num_pad_templates ( ) const

Gets the number of pad_templates in this factory.

Returns
The number of pad_templates.

◆ get_static_pad_templates()

std::vector< Gst::StaticPadTemplate > Gst::ElementFactory::get_static_pad_templates ( ) const

Gets the List of Gst::StaticPadTemplate for this factory.

Returns
The static pad templates.

◆ get_type()

static GType Gst::ElementFactory::get_type ( )
static

Get the GType for this class, for use with the underlying GObject type system.

◆ get_uri_protocols()

std::vector<Glib::ustring> Gst::ElementFactory::get_uri_protocols ( ) const

Gets a nullptr-terminated array of protocols this element supports or nullptr 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 Glib::strdupv() to make a copy of the protocol string array if you need to.

Returns
The supported protocols or nullptr.

◆ get_uri_type()

URIType Gst::ElementFactory::get_uri_type ( ) const

Gets the type of URIs the element supports or Gst::URI_UNKNOWN if none.

Returns
Type of URIs this element supports.

◆ gobj() [1/2]

GstElementFactory* Gst::ElementFactory::gobj ( )
inline

Provides access to the underlying C GObject.

◆ gobj() [2/2]

const GstElementFactory* Gst::ElementFactory::gobj ( ) const
inline

Provides access to the underlying C GObject.

◆ gobj_copy()

GstElementFactory* Gst::ElementFactory::gobj_copy ( )

Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.

◆ has_interface()

bool Gst::ElementFactory::has_interface ( const Glib::ustring &  name) const

Check if factory implements the interface with name name.

Parameters
nameAn interface name.
Returns
true when factory implement the interface.

◆ is_type()

bool Gst::ElementFactory::is_type ( ElementFactoryListType  type) const

Check if factory is of the given types.

Parameters
typeA Gst::ElementFactoryListType.
Returns
true if factory is of type.

◆ operator=()

ElementFactory& Gst::ElementFactory::operator= ( ElementFactory&&  src)
noexcept

◆ register_element()

static bool Gst::ElementFactory::register_element ( const Glib::RefPtr< Gst::Plugin >&  plugin,
const Glib::ustring &  name,
guint  rank,
GType  type 
)
static

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

Parameters
pluginGst::Plugin to register the element with, or nullptr for a static element.
nameName of elements of this type.
rankRank of element (higher rank means more importance when autoplugging).
typeGType of element to register.
Returns
true, if the registering succeeded, false on error.

Friends And Related Function Documentation

◆ wrap()

Glib::RefPtr< Gst::ElementFactory > wrap ( GstElementFactory *  object,
bool  take_copy = false 
)
related

A Glib::wrap() method for this object.

Parameters
objectThe C instance.
take_copyFalse if the result should take ownership of the C instance. True if it should take a new copy or ref.
Returns
A C++ instance that wraps this C instance.