Why Use UST?

By Chris Pirazzi. Some material stolen from Wiltse Carpenter, Doug Cook, Bryan James, and Bruce Karsh.

Say you want to play audio and video in sync to within ±7ms. You may be wondering why you cannot just do this:

/* Best Effort Approach */
{
  /* need to do these two quickly */
  start_audio(); 
  start_video();
  
  while (1)
    {
      /* send audio and video that should go out together */
      send_next_video();
      send_next_audio();
    }
}
The idea is that you open up an audio port and a video path at the same time, and then you loop around sending corresponding audio and video data to each device. Assume there are plenty of system resources for you to send all the data without dropping anything. This technique will still fail to sync up the audio and video because:

The UST support in SGI's libraries addresses all of these issues: