Core Audio Interfaces

This programming reference for the Core Audio SDK includes the following interfaces:

MMDevice API

The Windows Multimedia Device (MMDevice) API enables audio clients to discover audio endpoint devices, determine their capabilities, and create driver instances for those devices.Header file Mmdeviceapi.h defines the interfaces in the MMDevice API. For more information, see About MMDevice API.

The following table lists the MMDevice interfaces available with the Core Audio SDK for Windows Vista.

Interface Description
IMMDevice Represents an audio device.
IMMDeviceCollection Represents a collection of audio devices.
IMMDeviceEnumerator Provides methods for enumerating audio devices.
IMMEndpoint Represents an audio endpoint device.
IMMNotificationClient Provides notifications when an audio endpoint device is added or removed, when the state or properties of a device change, or when there is a change in the default role assigned to a device.

WASAPI

The Windows Audio Session API (WASAPI) enables client applications to manage the flow of audio data between the application and an audio endpoint device. Header files Audioclient.h and Audiopolicy.h define the WASAPI interfaces. For more information, see About WASAPI.

The following table lists the WASAPI interfaces available with the Core Audio SDK for Windows Vista and later.

Interface Description
IActivateAudioInterfaceAsyncOperation Represents an asynchronous operation activating a WASAPI interface and provides a method to retrieve the results of the activation.
Applies beginning with Windows 8.
IActivateAudioInterfaceCompletionHandler Provides a callback to indicate that activation of a WASAPI interface is complete.
Applies beginning with Windows 8.
IAudioCaptureClient Enables a client to read input data from a capture endpoint buffer.
IAudioClient Enables a client to create and initialize an audio stream between an audio application and the audio engine or the hardware buffer of an audio endpoint device.
IAudioClock Enables a client to monitor a stream's data rate and the current position in the stream.
IAudioClock2
Enables a client to get the current device position.
IAudioClockAdjustment
Enables a client to set the sample rate of a stream.
IAudioRenderClient Enables a client to write output data to a rendering endpoint buffer.
IAudioSessionControl Enables a client to configure the control parameters for an audio session and to monitor events in the session.
IAudioSessionControl2
Enables a client to get information about the audio session.
IAudioSessionManager Enables a client to access the session controls and volume controls for both cross-process and process-specific audio sessions.
IAudioSessionManager2
Manages all submixes including enumeration and notification of submixes. It also provides support for ducking notifications.
IAudioSessionEnumerator
Enables a client to enumerate audio sessions.
IAudioStreamVolume Enables a client to control and monitor the volume levels for all of the channels in an audio stream.
IChannelAudioVolume Enables a client to control the volume levels for all of the channels in the audio session that the stream belongs to.
ISimpleAudioVolume Enables a client to control the master volume level of an audio session.
IAudioSessionEvents Provides notifications of session-related events such as changes in the volume level, display name, and session state.
IAudioSessionNotification
Sends notifications when session changes occur.
IAudioVolumeDuckNotification
Sends notifications about pending system ducking changes.

DeviceTopology API

The DeviceTopology API provides client applications with the ability to traverse the functional hardware topologies of audio rendering and capture devices. Header file Devicetopology.h defines the interfaces in the DeviceTopology API. For more information, see Device Topologies and DeviceTopology API.

The following table lists the DeviceTopology interfaces available with the Core Audio SDK for Windows Vista and later.

Interface Description
IAudioAutoGainControl Provides access to a hardware automatic gain control (AGC).
IAudioBass Provides access to a hardware bass-level control.
IAudioChannelConfig Provides access to a hardware channel-configuration control.
IAudioInputSelector Provides access to a hardware multiplexer control (input selector).
IAudioLoudness Provides access to a "loudness" compensation control.
IAudioMidrange Provides access to a hardware midrange-level control.
IAudioMute Provides access to a hardware mute control.
IAudioOutputSelector Provides access to a hardware demultiplexer control (output selector).
IAudioPeakMeter Provides access to a hardware peak-meter control.
IAudioTreble Provides access to a hardware treble-level control.
IAudioVolumeLevel Provides access to a hardware volume control.
IConnector Represents a point of connection between components.
IControlInterface Represents a control interface on a part (subunit or connector).
IDeviceSpecificProperty Represents a device-specific property of a connector or subunit.
IDeviceTopology Provides access to the topology of an audio device.
IKsFormatSupport Provides information about the audio data formats that are supported by a software-configured I/O connection (typically a DMA channel) between the audio device and system memory.
IKsJackDescription Provides information about the jacks or internal connectors that provide a physical connection between a device on an audio adapter and an external or internal endpoint device (for example, a microphone or CD player).
IKsJackDescription2
Provides convenient access to the KSPROPERTY_JACK_DESCRIPTION2 property of a connector to an endpoint device.
IKsJackSinkInformation
Provides information about the jack sink if the jack is supported by the hardware.
IPart Represents a part (connector or subunit) of a device topology.
IPartsList Represents a list of parts (connectors and subunits).
IPerChannelDbLevel Represents a generic subunit control interface that provides per-channel control over the volume level, in decibels, of an audio stream or of a frequency band in an audio stream.
ISubunit Represents a hardware subunit (for example, a volume-level control) that lies in the data path between a client and an audio endpoint device.
IControlChangeNotify Provides notifications when the status of a part (connector or subunit) changes.

EndpointVolume API

The EndpointVolume API enables specialized clients to control and monitor the volume levels of audio endpoint devices. Header file Endpointvolume.h defines the interfaces in the EndpointVolume API. For more information, see EndpointVolume API .

The following table lists the EndpointVolume interfaces available with the Core Audio SDK for Windows Vista.

Interface Description
IAudioEndpointVolume Represents the volume controls on the audio stream to or from an audio endpoint device.
IAudioEndpointVolumeEx
Provides volume controls on the audio stream to or from a device endpoint.
IAudioMeterInformation Represents a peak meter on the audio stream to or from an audio endpoint device.
IAudioEndpointVolumeCallback Provides notifications when the volume level or muting state of an audio endpoint device changes.

Programming Reference