A master/slave relationship is a specification of a chain of command for controlling a synchronized event. The relationship is 1:N, where one object (the synchronization master) controls the behavior of one or more subordinate objects (the slaves). The relationship is established using the SpiEnableSync function, where one data stream is designated the master and one or more data streams are designated as slaves. Real-time information, transmitted from the master to all slaves by the Sync/Stream Manager, gives each of the slaves the current time in the time base of the MMTIME standard (1/3 msec units). This time information (sync pulse) allows each slave stream handler to adjust the activity of that stream so that synchronization can be maintained.
Certain rules govern master/slave synchronization relationships:
It is possible for a slave to fail to maintain synchronization. This condition, called sync overrun, happens when a stream handler has not processed the last sync pulse received from the Sync/Stream Manager and another sync pulse is received. The application can optionally request (by way of the SpiEnableEvent function) to be notified of any sync overruns. The stream is not stopped but the application could request a stop once it receives a sync overrun event.