The start or preroll start can be issued only for a stream that is in an idle state; that is, the stream is not started or is paused, stopped, or prerolled). Any attempt to start a stream that is already started or in the process of prerolling results in ERROR_START_STREAM.
If multiple streams are involved when the synchronization master stream is started, all slave streams also can be started by using the SPI_START_SLAVES flag. This synchronization relationship can be set up using SpiEnableSync after all streams are created.
The active stream protocol governs the amount of data buffered and the rate of data flow maintained. Both source and target stream handlers are controlled by the stream protocol (SPCB). Both handlers contribute to the contents of the SPCB at stream creation. Stream events, such as cue points, are detected by the appropriate stream handler, and an event notification is sent to the process that owns the stream.
This function also enables a stream or group of streams to be prerolled. A preroll start enables the source stream handlers to start and fill the buffers. An EVENT_SYNC_PREROLLED event is generated by the Sync/Stream Manager when the stream is prerolled. This enables an application to start the stream or streams for better real-time response and initial synchronization of the streams. For group prerolling, only one EVENT_SYNC_PREROLLED event message is sent when all of the streams in the group have prerolled.
Once a stream is started, errors are reported to the application through the event routine as an EVENT_ERROR event. For example, an SpiStartStream function might return with a NO_ERROR return code but fail to start and return EVENT_ERROR asynchronously. This function should not be used during exit-list processing because it is asynchronous and the event for completion of the function will never be sent.