Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
Устройства можно использовать в разных положениях. Для планшета положение в основном означает ориентацию, в котором его держат, например книжная или альбомная. Аудиоэффект этих устройств может быть оптимизирован для определенных положений. Например, аудиосистемы могут перенаправить левый и правый каналы для правильного стереозвучания в разных ориентациях. Кроме того, можно калибровать микрофоны для подавления шума, отмены эхо и т. д. на основе измененных расположений динамиков или микрофонов при изменениях положения.
Поддержка ОС Windows
Поддержка аудиоположения осуществляется в Windows 11 версии 22000 и более поздних.
Архитектура
Сценарии для звуковых конечных точек, связанные с изменением положения, основаны на ответах операционной оболочки на изменения положения. Оболочка взаимодействует с датчиками и пользовательскими вводами (например, блокировкой ориентации), чтобы определить общую системную позу. Звуковой стек ОС получает уведомления о состоянии от системной оболочки и сообщает звуковым конечным точкам, которые поддерживают Audio Posture DDI.
Звуковой стек не изменяет содержимое аудиопотока в ответ на изменения положения. Вместо этого стек звука сообщает звуковому драйверу об этих изменениях. Ожидается, что звуковые компоненты IHV будут адаптироваться к этим изменениям с обработкой сигналов, выполненной на аппаратном уровне (DSP) или посредством программного объекта обработки звука (APO).
Для настольных компьютеров сценарии размещения конечных точек аудиосистемы соответствуют экрану. Стек звука ОС получает уведомления о позе от дисплея и сообщает конечным точкам звука, поддерживающим DDI аудио.
На следующей схеме показан поток связи и управления между компонентами, связанными с обработкой изменений положения для звуковых устройств.
Компоненты
Оболочка ОС и датчики
Оболочка отслеживает различные сведения о датчике, предоставляемые драйверами датчиков. Наряду с информацией о датчике учитываются пользовательские предпочтения, такие как блокировка ориентации и переопределение приложений, для определения системной позы.
Стек звука ОС
Аудиостек операционной системы получает информацию о конфигурации из командной оболочки. При изменении системного положения звуковой стек сообщает конечным точкам звука с учетом положения с помощью свойства KS.
Звуковой драйвер IHV и APO
Звуковой драйвер IHV вместе с необязательным APO обрабатывает изменения положения в стеке звука ОС. Только встроенные аудиоустройства, расположенные непосредственно на основном корпусе машины, на которые влияют изменения положения, должны указывать на поддержку изменения позиции.
Требования к поддержке аудиоконечных точек
В следующей таблице показаны типы конечных точек звука, которые должны и не должны обеспечивать поддержку положения.
| Тип конечной точки звука | Поддержка осанки |
|---|---|
| Built-In динамики | Да |
| Built-In Микрофон/Массив микрофонов | Да |
| Wired-Headset | нет |
| HDMI/DisplayPort | нет |
| Внешний USB-звук | нет |
| Bluetooth Аудио | нет |
Требования к звуковому драйверу
Информация о положении устройства передается аудиодрайверу IHV в виде ориентации. Ожидается, что звуковой драйвер IHV имеет неявное знание о форм-факторе устройства, и он должен иметь возможность определить ориентацию по умолчанию и относительные позиции динамиков и микрофонов. Эти сведения можно получить из ACPI или другого механизма IHV.
Структуры и константы данных
PROPSETID
Это GUID, используемый для идентификатора набора свойств KS.
KSPROPSETID_AudioPosture =A3FB7B0D-474E-4F51-A379-51282DD4FA8F
ИДЕНТИФИКАТОР СВОЙСТВА
Это значение, используемое для идентификатора KSPROPERTY.
KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1
ОПИСАНИЕ СВОЙСТВА — AUDIOPOSTURE_ORIENTATION
Это свойство указывает текущую ориентацию системы. Ориентация представлена степенью поворота от ориентации по умолчанию. Сведения о ориентации синхронизируются с оболочкой ОС, которая включает блокировку ориентации пользователя или приложения. Звуковой драйвер получает это перечисление при обработке запроса свойства Set для KSPROPERTY_AUDIOPOSTURE_ORIENTATION.
typedef enum
{
AUDIOPOSTURE_PANEL_ORIENTATION_NOTROTATED = 0,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE,
} AUDIOPOSTURE_ORIENTATION;
Дополнительные сведения см. в перечислении AUDIOPOSTURE_ORIENTATION.
УПРАВЛЕНИЕ СВОЙСТВАМИ
Звуковой драйвер должен реализовать KSPROPSETID_AudioPosture — KSPROPERTY_AUDIOPOSTURE_ORIENTATION как закрепленное свойство, доступ к которому осуществляется через дескриптор фильтра. Свойство должно поддерживаться на мостовом пине, то есть пине, представляющем аппаратную конечную точку, для конечной точки.
БАЗОВАЯ ПОДДЕРЖКА — KSPROPERTY_TYPE_BASICSUPPORT
Звуковой драйвер должен вернуть поддержку для флагов "Set" и "Access".
SET — KSPROPERTY_TYPE_SET
Звуковой драйвер получает указатель на AUDIOPOSTURE_ORIENTATION в качестве параметра значения запроса свойства. В ответ на запрос этого свойства звуковой драйвер может применить необходимые изменения оборудования или программного обеспечения для нового состояния положения. Возврат успешного выполнения указывает, что драйвер завершил обработку изменения. Если APO IHV должен получать данные о положении от аудиодрайвера, аудиомодули можно использовать для предоставления механизма уведомлений. Драйверы должны кэшировать значение, чтобы его можно было применить при выходе из низкой мощности или гибернации
AUDIOPOSTURE_ORIENTATION Orientation = *((AUDIOPOSTURE_ORIENTATION*)PropertyRequest->Value);
switch (Orientation)
{
case AUDIOPOSTURE_ORIENTATION_NOTROTATED:
//Cache and process the orientation
.
.
case AUDIOPOSTURE_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE:
//Cache and process the orientation
.
.
case AUDIOPOSTURE_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE:
//Cache and process the orientation
.
.
case AUDIOPOSTURE_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE:
//Cache and process the orientation
.
.
}