Получение конечной точки устройства для маршрутизации потоков

В Windows 7 высокоуровневые API платформы, использующие основные API аудио, такие как Media Foundation, DirectSound и API волны, реализуют функцию маршрутизации потоков, обрабатывая переключение потоков с существующего устройства на новую конечную точку звука по умолчанию. Приложения мультимедиа, использующие эти API (например, приложение, активирующее объект IDirectSound или IBaseFilter в объекте IMMDevice ), используйте поведение маршрутизации потоков без каких-либо изменений в источнике.

Высокоуровневые API реализуют маршрутизацию потоков для конечной точки устройства, полученной через IMMDeviceEnumerator::GetDefaultAudioEndpoint. Если приложение передается на устройство по умолчанию, функция маршрутизации потоков работает в соответствии с определением. Потоки не переключаются на новое устройство, если оно извлекается любым другим механизмом, даже если оно совпадает с устройством по умолчанию.

Приложение мультимедиа, использующее Core Audio API напрямую (клиент WASAPI), может предоставить пользовательскую реализацию маршрутизации потоков для любого устройства вывода или захвата. Клиент WASAPI может реплицировать реализацию, предоставляемую высокоуровневых API, ограничив ее потоками, открывающимися на устройствах, которые задаются как устройство по умолчанию. Чтобы получить ссылку на конечную точку устройства по умолчанию, клиент должен вызвать IMMDeviceEnumerator::GetDefaultAudioEndpoint. В этом вызове клиент должен указать, требуется ли указатель на устройство отрисовки по умолчанию или устройство записи по умолчанию, указав параметр dataFlow . Клиент также должен указать соответствующую роль для конечной точки в атрибуте ERole (eConsole или eCommunications). Не используйте eMultimedia.

Если приложение передает поток на любое другое устройство, приложение может получить устройство, указав строку идентификатора конечной точки (вызвав IMMDeviceEnumerator::GetDevice).

После идентификации устройства клиент WASAPI может предоставить реализацию для маршрутизации потоков, обрабатывая уведомления об устройстве и звуковом сеансе, отправленные для устройства. Дополнительные сведения об этих уведомлениях см. в разделе "Соответствующие уведомления" для маршрутизации потоков.

О API MMDevice

О WASAPI

Маршрутизация потоков