A Wave Port Driver for Real-Time Audio Streaming
Updated: September 17, 2007
File name: WaveRTport.doc
About This Download
This paper provides information about the WaveRT (wave real-time) port driver for the Windows family of operating systems. It includes guidelines for audio hardware vendors to develop WaveRT miniport drivers for their audio devices.
The updated version of this paper includes the addition of a new (optional) interface that enables Windows Vista pull-mode (event-driven) audio-streaming technology.
The WaveRT driver provides support for an audio device that has the following capabilities:
In the next version of the Windows operating system, Windows Vista, the PortCls system driver provides a WaveRT port driver that achieves real-time performance but uses a simple cyclic buffer for rendering or capturing an audio stream. Like the WaveCyclic and WavePci port drivers in Windows Server 2003, Windows XP, and earlier, the WaveRT port driver provides the generic system functionality for a kernel-streaming (KS) filter that represents an audio device. The hardware vendor supplies a WaveRT miniport driver to perform the hardware-specific tasks for the filter. For information about PortCls, WaveCyclic, and WavePci, see the WDK documentation.
In Windows Vista and later, the WaveRT port driver is the preferred wave port driver to use with new miniport drivers, although PortCls continues to support WaveCyclic and WavePci miniport drivers. In Windows Server 2003, Windows XP and earlier, WaveCyclic and WavePci are the only available wave port drivers.
The WaveRT port driver supports audio applications that reduce the latency of audio streams by using the real-time scheduling support that is available in Windows Vista and later. Hardware innovations, such as the low-latency isochronous transfer modes of PCI Express devices, complement real-time scheduling.
To take advantage of these improvements, an audio device should be able to play or capture audio data with little or no intervention by the driver software. If designed properly, the audio hardware should require no help from the driver from the time that the audio stream enters the run state until it later exits that state. The result is low-latency audio that consumes few host-CPU cycles and is free of timing glitches.
The client for the WaveRT port driver is typically the global audio engine. The engine is the operating-system component that mixes the playback streams from the currently running audio applications and writes the mixed stream into the cyclic buffer. The audio device pulls the stream from the buffer and plays it.
This information applies for the Windows Vista operating system.
Future versions of this preview information will be provided in the Windows Vista Driver Kit. If you encounter a conflict between this paper and the Windows Vista Driver Kit, consider the Windows Vista Driver Kit to be factually correct and this paper to be out of date.
Included in this white paper: