We are developing ACME, a server for input and output of continuous media (digital audio and video) at the user interface. ACME supports a range of applications, including telephony, production, and browsing. The server runs as a multithreaded user-level process on a UNIX system. It is controlled via an extended window server (X11/NeWS) and communicates continuous media data on standard network connections. In this environment there are many sources of possible timing and synchronization error: 1) nonuniform startup times of I/O devices and network connections; 2) rate mismatch among I/O devices; 3) starvation of output streams; 4) buffer overrun on input systems.
ACME provides an abstraction called a logical time system (LTS) that allows clients to express their synchronization requirements. Multiple CM data streams can be grouped into an LTS. Within an LTS, data with the same "timestamp" is displayed (for output) or collected (for input) at approximately the same real time. The skew tolerance, and the policy for recovering from errors, are client-specified. An LTS can be paused and resumed, and discrete I/O events (e.g., movie subtitles) can be scheduled within an LTS. The LTS mechanism is sufficient to express the synchronization requirements of a wide range of applications.