ADTF
3.14.3
|
Substreams have been introduced in ADTF 3.7.0 to address handling of large amounts of different signals via one Output Pin/Sample Stream.
This includes two new concepts:
Using Substreams is one possibility to reduce Pin and Connection appearance within the Data Pipe of the Filter Graph.
![]() |
Substreams are defined by using a special Stream Type with the "adtf/substreams" Stream Meta Type (stream_meta_type_substreams) This Stream Type stores the following information for each Substream:
See adtf::filter::hollow::cSubStreamTypes for information on how to create such a Substream Stream Type.
Each Sample transmitted via such a Sample Stream is then assigned the id of the Substream that it belongs to, see ISample::SetSubStreamId and set_sample_substream_id().
To select samples of a specific Substream for processing in other ADTF Filters we provide a special Sample Stream implementation (Substream Selector), that will select and forward only the Stream Types and Samples of a single Substream.
You can use the Substream Dissector to dissect a "normal" Sample Stream into Substreams containing all individual elements.
We provide the following programming examples on how to use Substreams:
In order to handle dynamic processing of Substreams we introduced a new IStreamingRequests interface that is forwarded transparently via Sample Streams if the source supports dynamic streaming requests.
Via this interface a consumer can tell a source which Substream Samples it likes to recieve. For convenience access to this interface is provided via the default Sample Reader implementation (cSampleReader::RequestSamples). To provide request support for Substreams you can use the requestable_writer template, but most of the time just use the adtf::filter::hollow::cGraphObject::CreateRequestableOutputPin method.
We provide the following programming examples on how to provide request support for Substreams: