Configure NvSciStreamBlock to Use External NvSciEventService for Internal Events

The application can configure the block for the user-provided NvSciEventService to wait for internal event notifications and trigger the corresponding handlers.
NvSciError
NvSciStreamBlockInternalEventServiceSetup(
    NvSciStreamBlock const block,
    NvSciEventService* const eventService,
    uint32_t* const notifierCount,
    NvSciEventNotifier** const eventNotifierArray
);

This function binds the internal event notifiers to the user-provided NvSciEventService and registers the NvSciStream internal handlers for each internal event notifier. The application must wait for events on these returned NvSciEventNotifiers. When there is a new event on the notifier, the corresponding handler is triggered automatically to process the NvSciStream internal event. These handlers are registered by NvSciStream internally and the application does not need to assign handlers to these notifiers.

When called on a IpcSrc or IpcDst block, the notifiers are associated with internal NvIpc events and messages. The internal handler processes message I/O.

If this function is not called before the block connection, the IpcSrc or IpcDst block automatically creates an internal NvSciEventService and spawns a dispatch thread to wait for and handle the internal events.

The application is responsible for destroying the NvSciEventNotifier and NvSciEventService when it is no longer needed. The event-notification behavior of a block is undefined after its associated NvSciEventNotifier object is deleted.