ADTF  3.12.8
Substreams


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:

Substream Definition and Sample Handling

Using Substreams is one possibility to reduce Pin and Connection appearance within the Data Pipe of the Filter Graph.

substream_datapipe.png

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:

  • Name, the name of the Substream (i.e. the name of the Signal of which the Samples are streamed via this Substream).
  • Id, a numeric id identifing the samples of the Substream.
  • Stream Type, the Stream Type of the 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 (ADTF Substream Selector), that will select and forward only the Stream Types and Samples of a single Substream.

You can use the ADTF 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:

Substream Request Handling

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.

Note
During playback, requests will proceeed, but do not have any effect on which samples are transmitted via the Sample Stream.

We provide the following programming examples on how to provide request support for Substreams:


Copyright © Audi Electronics Venture GmbH. All rights reserved. (Generated on Thu Aug 19 2021 by doxygen 1.8.14)