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.