Windows 10: новые возможности драйверов аудио
В этом разделе приведены общие сведения о новых возможностях звука для Windows 10.
Сводка возможностей
Ниже приведены новые функции аудио в Windows 10.
Улучшения звука с низкой задержкой
Задержка звука — это задержка между тем временем, когда создается звук, и когда оно услышится. Низкая задержка звука очень важна для нескольких ключевых сценариев, таких как ниже.
- Pro Audio
- Создание музыки и смешивание
- Коммуникации, такие как Skype
- Виртуальная и дополненная реальность
- Игры
Общая задержка устройства — это сумма задержек следующих компонентов:
- Операционная система
- Объекты обработки звука
- Звуковой драйвер
- Звуковое оборудование
В Windows 10 было сделано для уменьшения задержки в ОС. Без каких-либо изменений драйвера приложения в Windows 10 будут испытывать более низкую задержку 4,5–16 мс. Кроме того, если драйвер был обновлен, чтобы воспользоваться новыми DDIS с низкой задержкой, которые используют небольшие буферы для обработки звуковых данных, задержка будет уменьшаться еще больше. Если драйвер поддерживает 3 мс аудио буферов, задержка округления составляет ~10 мс.
Звуковой стек поддерживает несколько размеров пакетов и динамическое изменение размера пакетов, чтобы оптимизировать компромисс между задержкой и питанием в зависимости от сценария пользователя. Кроме того, потоки будут приоритетными для обеспечения того, чтобы потоки с высоким приоритетом (например, телефонные звонки) имели выделенные ресурсы.
Чтобы звуковые драйверы поддерживали низкую задержку, Windows 10 предоставляет следующие 3 новые функции:
- [Обязательный] Объявите минимальный размер буфера, поддерживаемый в каждом режиме.
- [Необязательно, но рекомендуется] Улучшение координации потока данных между драйвером и ОС.
- [Необязательно, но рекомендуется] Зарегистрируйте ресурсы драйвера (прерывания, потоки), чтобы их можно было защитить операционной системой в сценариях с низкой задержкой. Дополнительные сведения см. в разделе "Звук с низкой задержкой".
Режимы обработки сигналов и звуковые категории
Режимы обработки сигналов
Драйверы объявляют поддерживаемые режимы обработки звуковых сигналов для каждого устройства.
Категории звука (выбранные приложениями) сопоставляются с звуковыми режимами (определяются драйверами). Windows определяет семь режимов обработки звуковых сигналов. Изготовители оборудования и IHV могут определить, какие режимы они хотят реализовать. Режимы приведены в таблице ниже.
Режим | Отрисовка и запись | Description |
---|---|---|
Необработанные | Оба | Необработанный режим указывает, что к потоку не следует применять обработку сигналов. Приложение может запрашивать необработанный поток, который полностью не тронут и выполнять собственную обработку сигналов. |
По умолчанию. | Оба | Этот режим определяет обработку звука по умолчанию. |
Фильмы* | Render | Воспроизведение звука фильма |
Носителя* | Оба | Воспроизведение звука музыки (по умолчанию для большинства потоков мультимедиа) |
Речи* | Capture | Запись голоса человека (например, входные данные для Кортана) |
Коммуникаций* | Оба | Визуализация и запись VOIP (например, Skype, Lync) |
Уведомления* | Render | Мелодии, оповещения, оповещения и т. д. |
Драйверы аудиоустройств должны поддерживать по крайней мере режим "Необработанный" или "Стандартный". Поддержка дополнительных режимов является необязательным.
Выделенные режимы для речи, фильмов, музыки и коммуникаций. Звуковые драйверы смогут определять различные типы аудиоформатов и обработки на основе типа потока.
Категории аудио
В следующей таблице показаны категории аудио в Windows 10.
Чтобы сообщить системе об использовании аудиопотока, приложения могут пометить поток с определенной категорией аудиопотока. В Windows 10 есть девять категорий аудиопотоков.
Категория | Description |
---|---|
Фильм* | Фильмы, видео с диалогом (заменяет ForegroundOnlyMedia) |
Носителя* | Категория по умолчанию для воспроизведения мультимедиа (заменяет BackgroundCapableMedia) |
Игровой чат* | Взаимодействие между пользователями в игре (новая категория в Windows 10) |
Речи* | Входные данные речи (например, личные помощник) и выходные данные (например, приложения навигации) (новая категория в Windows 10) |
Сообщения | VOIP, чат в режиме реального времени |
видны узлы | Сигнализация, кольцевой тон, уведомления |
Звуковые эффекты | Beeps, dings и т. д. |
Игровые носители | В игре музыка |
Игровые эффекты | Шары отскочили, звуки двигателя автомобиля, пули и т. д. |
Другие | Некатегоризованные потоки |
* Новые возможности Windows 10.
Дополнительные сведения см. в разделе "Режимы обработки звука" и "Архитектура объекта обработки звука".
Эффекты APO с аппаратной разгрузкой
Windows 10 поддерживает отключенные аппаратные эффекты APO. Api-интерфейсы можно загрузить поверх пин-кода разгрузки. Это позволяет выполнять обработку звука как в программном обеспечении, так и в оборудовании. Кроме того, обработка может изменяться динамически. Некоторые или все обработки можно переместить из программного APO в DSP, когда есть достаточно аппаратных ресурсов, а затем вернуться к программному APO при увеличении нагрузки в DSP.
Дополнительные сведения см. в разделе "Реализация отключенных эффектов APO оборудования".
активация голосовой связи Кортана — пробуждение по голосовой связи
Кортана, личная технология помощник была впервые продемонстрирована на конференции разработчиков Microsoft BUILD в 2013 году. Активация голосовой связи — это функция, которая позволяет пользователям вызывать подсистему распознавания речи из различных состояний питания устройства, сказав определенную фразу — "Эй Кортана". Функция "Эй Кортана" Голосовая активация (VA) позволяет пользователям быстро взаимодействовать с опытом (например, Кортана) за пределами активного контекста (т. е. то, что сейчас на экране) с помощью их голоса. Эта функция предназначена для сценариев, когда экран отключен, неактивен или когда он полностью активен. Если оборудование поддерживает буферизацию, пользователи могут объединить ключевую фразу и фразу команды. Это улучшает завершение пробуждения по голосовой связи для пользователя. Дополнительные сведения см. в разделе "Активация голосовой связи".
Универсальные драйверы Windows для звука
Windows 10 поддерживает одну модель драйвера, которая работает для ПК и 2:1 и Windows 10 для телефонов и небольших планшетов с экрана. Это означает, что IHV может разрабатывать свой драйвер на одной платформе, и этот драйвер работает на всех устройствах (настольные компьютеры, ноутбуки, планшеты, телефоны). Результатом является сокращение времени разработки и затрат.
Для разработки универсальных звуковых драйверов используйте следующие средства:
- Visual Studio 2015: новые параметры драйвера позволяют задать для целевой платформы значение "Универсальная" для создания драйвера с несколькими платформами.
- APIValidator: это средство WDK, которое проверка, является ли драйвер универсальным и выделяет вызовы, которые необходимо обновить.
- Примеры аудио в GitHub: sysvad и SwapAPO были преобразованы в универсальные драйверы. Дополнительные сведения и указатели на пример кода GitHub см. в статье универсальные драйверы Windows для аудио.
Управление ресурсами для звуковых драйверов
Одна из проблем с созданием хорошего звукового интерфейса на низкой стоимости мобильного устройства заключается в том, что некоторые устройства имеют различные ограничения параллелизма. Например, возможно, устройство может воспроизводить только до 6 аудиопотоков одновременно и поддерживает только 2 разгрузки потоков. Если на мобильном устройстве есть активный телефонный звонок, возможно, что устройство поддерживает только 2 аудиопотока. При записи звука устройство может воспроизводить только до 4 звуковых потоков.
Windows 10 включает механизм для выражения ограничений параллелизма, чтобы убедиться, что высокоприоритетные звуковые потоки и мобильные телефонные звонки смогут воспроизводиться. Если у системы недостаточно ресурсов, то потоки с низким приоритетом завершаются. Этот механизм доступен только на телефонах и планшетах, а не на настольных компьютерах или ноутбуках.
Дополнительные сведения см. в разделе "Управление аппаратными ресурсами аудио".
Перебалансация PNP для звуковых драйверов
Перебалансирование PNP используется в определенных сценариях PCI, где ресурсы памяти должны быть перераспределены. В этом случае некоторые драйверы выгружаются, а затем перезагружаются в разных расположениях памяти, чтобы создать свободное непрерывное пространство памяти. Перебалансировать можно в двух основных сценариях:
- Hotplug PCI: пользователь подключается к устройству и шине PCI недостаточно ресурсов для загрузки драйвера для нового устройства. Некоторые примеры устройств, которые входят в эту категорию, включают Thunderbolt, USB-C и NVME служба хранилища. В этом сценарии ресурсы памяти должны быть переупорядочены и консолидированы (перебалансированы) для поддержки добавленных дополнительных устройств.
- BAR с изменением размера PCI: после успешной загрузки драйвера для устройства в памяти он запрашивает дополнительные ресурсы. Некоторые примеры устройств включают высокопроизводительные графические карта и устройства хранения. Дополнительные сведения см. в разделе "Реализация перебаланса PnP" для аудио драйверов PortCls.