Reconciling Requirements
For the pool attached to the producer:
The application managing the pool must take the capabilities provided by the producer and the requirements provided by the consumer(s) and determine the final packet layout. For each element type provided by the producer and required by a consumer, it should merge their attribute lists to obtain the attribute list to use in allocating the buffer. If there is an element type provided by the producer but not required by any of the consumers, omit it from the packets. If there is a type required by a consumer that the producer cannot provide, the application can trigger an error. However, there may be cases understood by the application suite where the consumer requirements represent several options, and only one of the requested element types is needed. If the producer can provide one of them, streaming can proceed. It is to support possible complex situations like this that the reconciliation process is left to applications, rather than being done automatically by the stream.
As in producer and consumer(s) applications, pool application calls the
NvSciStreamBlockSetupStatusSet()
function with a value of
NvSciStreamSetup_ElementImport
to inform NvSciStream it has finished element
import.
Once the application has determined the final layout, it calls
NvSciStreamBlockElementAttrSet()
to inform NvSciStream the reconciled element
attributes. It also must call NvSciStreamBlockSetupStatusSet()
function with
a value of NvSciStreamSetup_ElementExport
to inform NvSciStream it finished
exporting element attributes. Producer and consumer(s) application(s) query event
NvSciStreamEventType_Elements
and get the element attributes by the
function described above. Applications use this information to interpret the data layout and
prepare to receive the packets.
For the pool attached to the memory-boundary destination IPC:
The application retrieves the element attributes reconciled by the producer’s pool after
querying event NvSciStreamEventType_Elements
. The application calls the
NvSciStreamBlockSetupStatusSet()
function with a value of
NvSciStreamSetup_ElementImport
to inform NvSciStream it finished element
import.