ADTF
cFilterGraph

Default implementation for the IFilterGraph interface. More...

Inheritance diagram for cFilterGraph:
[legend]

Public Member Functions

 cFilterGraph ()
 CTOR.
 
 ~cFilterGraph () override
 DTOR.
 
tResult SetState (tFilterGraphState eFilterState) override
 The FilterGraph state is treaded as a level machine. More...
 
tFilterGraphState GetState () const override
 Returns the current state of the filtergraph. More...
 
tResult AddConnection (const char *strName, const char *strSourceName, const char *strSourceConnector, const char *strDestinationName, const char *strDestinationConnector, int32_t ui32OrderNumber, bool bSync)
 Adds a conection to the Filter Graph. More...
 
tResult AddNamedGraphObject (const ucom::ant::iobject_ptr< INamedGraphObject > &pItem, int32_t ui32OrderNumber) override
 This is to intialize and build an FilterGraph. More...
 
tResult RemoveNamedGraphObject (const ucom::ant::iobject_ptr< INamedGraphObject > &pItem) override
 
tResult SetParent (const ucom::ant::IObject *oParentObject) override
 
void SetConnectionCreationState (IFilterGraph::tFilterGraphState eState)
 Set the state before which the connections should be established. More...
 
void SetLegacyConnectionOrder (bool bLegacyOrder)
 Set whether or not the old legacy connection establishment order should be used. More...
 
void SetLegacyShutdownOrder (bool bLegacyOrder)
 Switch between 'old' legacy and 'new' shutdown order of all graph objects. More...
 
tResult RemoveNamedGraphObject (const char *strName)
 Removes a named Object from the Filter Graph. More...
 
virtual tResult RemoveNamedGraphObject (const ucom::ant::iobject_ptr< INamedGraphObject > &pGraphObject)
 Removes a Named Graph Object by instance. More...
 
- Public Member Functions inherited from object< IFilter, graph< runtime_behaviour< interface_binding< data_binding< named_graph_object< IFilterGraph > > > > > >
tResult GetInterface (const char *i_strIID, void *&o_pInterface) override
 Query interfaces on an object. More...
 
tResult GetInterface (const char *i_strIID, const void *&o_pInterface) const override
 Provides const correct interface querying. More...
 
void Destroy () const override
 Destruct and deallocate instantiations of type IObject. More...
 
- Public Member Functions inherited from IObject
 ADTF_IID (IObject, "object.ant.ucom.adtf.iid")
 Marks the IObject to be castable with the ucom_cast() More...
 

Protected Member Functions

virtual tResult SetGraphObjectState (INamedGraphObject *pObject, IFilterGraph::tFilterGraphState eState) const
 
- Protected Member Functions inherited from IObject
 ~IObject ()=default
 Protected destructor --> Use implemented Destroy() instead of delete!
 

Private Member Functions

tResult SetStateImpl (tFilterGraphState eOldState, tFilterGraphState eNewState, tFilterGraphState &eErrorNextState)
 
void DestructAllObjects ()
 
void DestructObject (const ucom::ant::iobject_ptr< INamedGraphObject > &pObject)
 

Private Attributes

tFilterGraphState m_eState = tFilterGraphState::State_Constructed
 private dpointer More...
 
bool m_bIsSubGraph = false
 

Detailed Description

Default implementation for the IFilterGraph interface.

See also
sec_filter_graph

Definition at line 28 of file filtergraph.h.

Member Function Documentation

◆ AddConnection()

tResult AddConnection ( const char *  strName,
const char *  strSourceName,
const char *  strSourceConnector,
const char *  strDestinationName,
const char *  strDestinationConnector,
int32_t  ui32OrderNumber,
bool  bSync 
)

Adds a conection to the Filter Graph.

See Connections within the Filter Graph for possible connstions.

Parameters
[in]strNameName of the connection. Mind, that the connections are part of teh Filter Graph as named graph objects, too.
[in]strSourceNameName of the source (filter, port, ...)
[in]strSourceConnectorName of the source connector (pin, binding object, ...)
[in]strDestinationNameName of the destination (filter, port, ...)
[in]strDestinationConnectorName of the destination connector (pin, binding object, ...)
[in]ui32OrderNumberOrder number of connection for establishing the connection.
[in]bSyncEither the connection is synchronous or not.
Returns
standard error code.

◆ AddNamedGraphObject()

tResult AddNamedGraphObject ( const ucom::ant::iobject_ptr< INamedGraphObject > &  pItem,
int32_t  ui32OrderNumber 
)
override

This is to intialize and build an FilterGraph.

See the INamedGraphObject and all derived default implementations within the SDK.

Items with the same ui32OrderNumber will initialized in order of AddNamedGraphObject call.

Parameters
[in]pItemThe item to add.
[in]ui32OrderNumberThe initialize order number of the item.
See also
INamedGraphObject
Returns
Standard Result Code
Return values
ERR_INVALID_ARGNo name set for graph object.
ERR_RESOURCE_IN_USEThere is already a graph object with the name.

◆ GetState()

tFilterGraphState GetState ( ) const
override

Returns the current state of the filtergraph.

Returns
the state of the filtergraph
See also
sec_filter_graph

◆ RemoveNamedGraphObject() [1/2]

tResult RemoveNamedGraphObject

Removes a named Object from the Filter Graph.

Parameters
[in]strNameName of the item to remove.
Returns
Standard Result Code
Return values
ERR_NOT_FOUNDNo item with the name strName exists

◆ RemoveNamedGraphObject() [2/2]

virtual tResult RemoveNamedGraphObject

Removes a Named Graph Object by instance.

This virtual function must be overwritten by any derived class.

Parameters
pGraphObjectthe Graph Object to remove
Returns
tResult

◆ SetConnectionCreationState()

void SetConnectionCreationState ( IFilterGraph::tFilterGraphState  eState)

Set the state before which the connections should be established.

The default is IFilterGraph::tFilterGraphState::State_Ready.

Note
Note that this was IFilterGraph::tFilterGraphState::State_Initialized in ADTF 3.7 and earlier. So if you experience Problems with Filters that expected connections to be available during their Init() call with StageNormal, try changing this back to IFilterGraph::tFilterGraphState::State_Initialized. To change the behaviour of the Session Manager set the ADTF_CONNECTION_CREATION_STATE environment variable to the desired value (i.e. 2).
Parameters
eStateThe filter graph state before which the connections should be established.

◆ SetLegacyConnectionOrder()

void SetLegacyConnectionOrder ( bool  bLegacyOrder)

Set whether or not the old legacy connection establishment order should be used.

  • old: connections from dynamic output pins to sample streams will be created after connections from sample streams to static and dynamic input pins.
  • new: connections from dynamic output pins to sample streams will be created before connections from sample streams to static and dynamic input pins.
Note
To switch back to the old behavior in the ADTF Launcher set the ADTF_LEGACY_CONNECTION_ESTABLISHMENT_ORDER environment variable to a non-empty value.
Parameters
[in]bLegacyOrderIf true the old order will be used.

◆ SetLegacyShutdownOrder()

void SetLegacyShutdownOrder ( bool  bLegacyOrder)

Switch between 'old' legacy and 'new' shutdown order of all graph objects.

  • old: Graph objects (e.g. filters) are shutdown in order of creation (legacy).
  • new: Graph objects (e.g. filters) are shutdown in reverse order of creation (should be more correct).
Note
To switch back to the old behavior in the ADTF Launcher set the ADTF_LEGACY_SHUTDOWN_ORDER environment variable to a non-empty value.
Parameters
[in]bLegacyOrderIf true the old legacy shutdown order will be used.

◆ SetState()

tResult SetState ( tFilterGraphState  eFilterState)
override

The FilterGraph state is treaded as a level machine.

See also
section_filter_graph_level_machine
Returns
Standard Result Code

Member Data Documentation

◆ m_eState

tFilterGraphState m_eState = tFilterGraphState::State_Constructed
private

private dpointer

State of the graph

Definition at line 38 of file filtergraph.h.