What's New for Core Audio APIs in Windows 7
The Core Audio APIs were introduced in Windows Vista, which provided a new set of user-mode audio components that a client application can use to render or capture audio streams with improved audio capabilities. For a general overview of this API set, see About the Windows Core Audio APIs.
The Core Audio APIs have been improved in Windows 7. The following table summarizes the new features and the improvements to the Core Audio APIs:
|Generic improvements||The following features have been improved in Windows 7:
|Communication device (New)||In this release a new device type has been added to the Sounds control panel: Communications device. This device is used primarily for communications, that is, to place or receive phone calls on the computer. A communication application can use Core Audio components to get a reference to the endpoint of the default communication device and render audio streams for communication purposes. The operating system considers the stream opened on a communication device to be a communication stream. The WASAPI operations on a communication stream are similar to any other audio stream. For more information, see [Working with Device Roles](device-roles-in-windows-vista.md).|
|Stream attenuation or audio ducking (New)||Automatic ducking or [Stream Attenuation](stream-attenuation.md) is a new feature in Windows 7 that is intended for VoIP and Unified Communication applications. By default, the operating system reduces the intensity of an audio stream when a communication stream, such as a phone call, is received on the communication device through the computer. The volume options are set by the user in the Sound control panel. New APIs have been added in the Windows SDK that enable applications to replace the default ducking behavior. For more information about implementing a custom ducking feature, see [Providing a Custom Ducking Behavior](providing-a-custom-ducking-experience.md).
|Stream routing (New)||In Windows 7, the Core Audio APIs have been improved to transfer an audio stream seamlessly from an existing device to a new default audio endpoint. High-level audio API sets that use Core Audio APIs, such as Media Foundation, DirectSound, and WAVE APIs, implement the stream routing feature. Media applications that use these API sets to play or capture a stream use the default implementation and do not have to modify the application. However, if your media application uses Core Audio APIs directly, the application needs to provide the stream routing implementation. To do so, the application must handle new events that have been added that notify a WASAPI client when the default device is connected or removed. For more information about this feature, see [Stream Routing](stream-routing.md).|
|Protected User Mode Audio (PUMA) (Improved)||PUMA has been updated for Windows 7 to provide the following features:
|The WAVEFORMATEXTENSIBLE structure has been extended to the WAVEFORMATEXTENSIBLE_IEC61937 structure (New)||In Windows 7, a new structure has been added to support IEC 61937 transmissions. WAVEFORMATEXTENSIBLE_IEC61937 extends the WAVEFORMATEXTENSIBLE structure to store two sets of audio stream characteristics: the encoded audio format before transmission and characteristics of the audio stream after it has been decoded. The new structure explicitly specifies the effective number of channels, sample size, and data rate of a non-PCM format. With this information, an application can infer the quality level of the non-PCM stream after it is decompressed and played. For more information, see [Representing Formats for IEC 61937 Transmissions](representing-formats-for-iec-61937-transmissions.md).
|[IAudioClient::Initialize](/windows/desktop/api/Audioclient/nf-audioclient-iaudioclient-initialize) (Improved)||The [IAudioClient::Initialize](/windows/desktop/api/Audioclient/nf-audioclient-iaudioclient-initialize) method has been improved to indicate specific errors that might occur while opening an audio stream. The new error codes are:
|[IAudioCaptureClient::GetBuffer](/windows/desktop/api/Audioclient/nf-audioclient-iaudiocaptureclient-getbuffer) and [IAudioRenderClient::GetBuffer](/windows/desktop/api/Audioclient/nf-audioclient-iaudiorenderclient-getbuffer) (Improved)||[IAudioCaptureClient::GetBuffer](/windows/desktop/api/Audioclient/nf-audioclient-iaudiocaptureclient-getbuffer) and [IAudioRenderClient::GetBuffer](/windows/desktop/api/Audioclient/nf-audioclient-iaudiorenderclient-getbuffer) methods have been improved to return the AUDCLNT_E_BUFFER_ERROR error code that indicates that the endpoint buffer in the exclusive mode was not retrieved. For more information, see Remarks in [IAudioCaptureClient::GetBuffer](/windows/desktop/api/Audioclient/nf-audioclient-iaudiocaptureclient-getbuffer) and [IAudioRenderClient::GetBuffer](/windows/desktop/api/Audioclient/nf-audioclient-iaudiorenderclient-getbuffer).|
|Jack detection capability (Improved)||A new interface in Windows 7, [IKsJackDescription2](/windows/desktop/api/Devicetopology/nn-devicetopology-iksjackdescription2), extends [IKsJackDescription](/windows/desktop/api/Devicetopology/nn-devicetopology-iksjackdescription). By using the new interface, the audio stack or an application can get additional jack information. This includes the jack's detection capability and whether the format of the device has changed dynamically.|
|Windows Samples (New)||New samples have been added to the Windows SDK that demonstrate the use of the Core Audio APIs. For more information, see [SDK Samples That Use the Core Audio APIs](sdk-samples-that-use-the-core-audio-apis.md).|
Major New Interfaces
The following interfaces are new for Windows 7: