Звук Bluetooth Low Energy (LE)
В этой статье представлен обзор Bluetooth LE Audio, представленный в Windows 11 версии 22H2 (KB5026446).
Введение
Bluetooth LE Audio обеспечивает потоковую передачу одноадресной передачи или широковещательного звука на устройства Bluetooth LE через изохронный транспорт. По состоянию на версию 5.3 спецификации ядра Bluetooth стандартный интерфейс контроллера узла (HCI) для платформ узлов для отправки и получения из контроллера Bluetooth и из нее не требуется. В этом документе определяется конкретный звуковой путь поставщика Windows Bluetooth (VSAP), позволяющий платформам использовать решения, относящиеся к поставщику, для включения потоковой передачи bluetooth LE Audio. В программном интерфейсе VSAP используются расширения аудиоклассов Windows (ACX) и другие свойства интерфейса, определенные в этом документе.
Терминология и предварительные требования
Помимо терминов, определенных в этой таблице, этот документ также ссылается на термины, определенные расширениями аудиоклассов Windows.
Термин | Определение |
---|---|
ЗВУК LE | Короткое время для Bluetooth LE Audio |
Классический звук | Потоковая передача звука Bluetooth, использующая профиль без рук (HFP) и расширенный профиль распространения звука (A2DP) |
Звуковое устройство | Одно удаленное устройство Bluetooth LE Audio или набор устройств Bluetooth LE Audio, которые вместе составляют одну конечную точку звука с точки зрения Windows. |
BAP | Базовый звуковой профиль определяет, как устройства могут распространять и использовать звук с помощью коммуникаций Bluetooth Low Energy (LE). |
TMAP | Профиль телефонии и мультимедиа указывает конфигурации взаимодействия служб и профилей аудио на более низком уровне. |
ASCS | Служба управления аудиопотоками определяет стандартный способ настройки и установки одноадресных аудиопотоков Bluetooth LE Audio. |
PACS | Служба "Опубликованные возможности звука" определяет стандартный способ для устройств Bluetooth LE Audio, чтобы сообщить о поддерживаемых возможностях аудиокодека. |
CIS | Транспорт Connected Isochronous Streams используется для отправки и получения одноадресных звуковых данных между устройствами Bluetooth LE. |
BIS | Транспорт широковещательного потокового потока используется для передачи данных без подключения. |
ACX | Короткое время для расширений класса аудио, который является моделью драйвера, необходимой для поддержки Bluetooth LE Audio в Windows. |
Каналы потоковой передачи | Один или несколько объектов ACXCIRCUIT , созданных стеком драйвера аудио поставщика для потоковой передачи. |
Канал профиля | Объект ACXCIRCUIT , созданный реализацией профиля bluetooth LE Audio в Windows. Этот ACXCIRCUIT выступает в качестве головного канала, как определено в спецификации ACX, и не является потоковым каналом. |
В этом документе предполагается знакомство с ранее определенными терминами и следующими командами HCI, определенными в спецификации Bluetooth Core 5.3:
- HCI_Read_Local_Supported_Codecs (версия 2)
- HCI_Read_Local_Supported_Codec_Capabilities
- HCI_LE_Set_CIG_Parameters
- HCI_LE_Create_CIS
- HCI_Configure_Data_Path
- HCI_LE_Setup_ISO_Data_Path
- HCI_LE_Remove_ISO_Data_Path
- HCI_LE_Remove_CIG
Bluetooth LE Audio VSAP требует, чтобы звуковые драйверы использовали платформу ACX. Внедрение ACX для Bluetooth LE Audio обеспечивает несколько преимуществ, таких как:
- Поддерживает предпочтительную модель звукового драйвера для Windows.
- Использует встроенную поддержку ACX для решений аудиофайлов с несколькими стеками без необходимости выделенного DDI между драйверами.
- Не требуется звуковой драйвер IHV для ретрансляции запросов из звуковой системы в стек Bluetooth. Вместо этого ACX может отправлять запросы непосредственно в стек Bluetooth через канал профиля.
Архитектура
Определения
Следующие компоненты участвуют в различных вариантах архитектуры VSAP.
Платформа Windows ACX
Этот компонент позволяет поддерживать конечную точку аудио с несколькими стеками. Для Bluetooth LE Audio компоненты программного обеспечения, составляющие конечную точку звука, являются конкретным поставщиком стека аудиодрайвов и профилем Windows Bluetooth LE Audio.
Стек драйвера звука для конкретного поставщика
Этот компонент поставщика отвечает за отправку и получение данных Bluetooth LE Audio на контроллер Bluetooth и с контроллера Bluetooth через определенный поставщик аудио интерфейсом. Он должен содержать как минимум драйвер потоковой передачи ACX для управления входящими и исходящими звуковыми данными. Дополнительные драйверы ACX могут быть включены, если они необходимы для нескольких каналов аудиоконечной точки ACX. Этот компонент также называется драйвером потоковой передачи IHV ACX в этом документе.
Профиль звука Bluetooth LE
Этот компонент содержит реализацию базового звукового профиля (BAP), профиля управления громкостями и профиля управления микрофоном. Он отвечает за создание головного ACXCIRCUIT для каждого устройства Bluetooth LE Audio или набора устройств, подключенных к Windows, сообщая аудиоформаты, сообщаемые удаленным устройством и контроллером Bluetooth, и управляет состоянием изохронных каналов и групп.
Стек ядер Windows Bluetooth
Этот компонент предоставляет интерфейс, позволяющий Профилю звука Windows Bluetooth LE запрашивать поддерживаемые возможности кодека с локального контроллера Bluetooth и управлять состоянием изохронных каналов и групп.
Кодек LC3
Этот подкомпонент отвечает за перевод между сжатым звуком LC3 и звуком PCM. Он должен поддерживать возможности кодирования и декодирования, и может быть реализован либо в программном обеспечении в составе стека конкретного поставщика звукового драйвера (VSAP), либо в оборудовании как часть звукового контроллера DSP или Bluetooth. Схема упоминает LC3 по имени, так как это стандартный кодек, поддерживаемый Bluetooth SIG. Однако будущие кодеки и определенные кодеки поставщика, поддерживаемые Windows, также могут быть включены в архитектуру аналогичным образом.
Варианты архитектуры
Архитектура Bluetooth LE Audio VSAP поддерживает различные варианты потоковой передачи.
- Потоковая передача звука Bluetooth LE Audio без разгрузки звука
- Потоковая передача звука Bluetooth LE с выключением звука
- Поставщик, характерный для потоковой передачи bluetooth LE Audio
На следующих схемах IHV предоставляются IHV и нетенными компонентами, предоставляемыми ОС.
Архитектура аудиосвязи Bluetooth LE Без разгрузки звука
Архитектура боковой полосы использует конкретный аудио интерфейс поставщика, чтобы позволить стеку звуковых драйверов отправлять и получать звуковые данные на контроллер Bluetooth. Этот путь к данным отличается от пути данных HCI, используемого для других данных Bluetooth, таких как сигнальные сообщения между клиентом одноадресной рассылки и удаленным сервером одноадресной рассылки. Следующая схема моделирует архитектуру боковой полосы, в которой кодек LC3 размещается в контроллере Bluetooth. Кроме того, для кодирования программного обеспечения и декодирования кодека LC3, размещенного в стеке конкретного поставщика звукового драйвера. В этом случае звук, отправляемый контроллеру Bluetooth, будет отформатирован как аудиокадры LC3 вместо звука PCM.
На следующей схеме показана архитектура bluetooth LE Audio с кодеком LC3 в контроллере Bluetooth.
На следующей схеме показана архитектура bluetooth LE Audio с кодеком LC3 в стеке звуковых драйверов.
Архитектура bluetooth LE Audio с выключением звука
Архитектура боковой полосы с разгрузкой звука включает аппаратный компонент аудио DSP для предоставления решения потоковой передачи Bluetooth LE Audio с преимуществами экономии энергии. На следующих схемах показана возможная архитектура с кодеком LC3 в контроллере Bluetooth и кодеком в звуковом DSP.
На следующей схеме показана боковая полоса Bluetooth LE Audio с архитектурой разгрузки звука с кодеком LC3 в контроллере Bluetooth.
На следующей схеме показана боковая полоса Bluetooth LE Audio с архитектурой разгрузки звука с кодеком LC3 в звуковом DSP.
Поставщик, характерный для архитектуры Bluetooth LE Audio
Архитектура подключения VSAP позволяет пользовательскому конвейеру отправлять и получать данные Bluetooth LE Audio от конкретного поставщика стека звукового драйвера к HCI контроллера Bluetooth. Эта архитектура включает в себя новый компонент , компонент объединения ISO IHV. Этот компонент отвечает за управление потоком для данных ISO. Кроме того, он должен совместно использовать управление потоком команд HCI в Windows Bluetooth Core Stack, если он должен отправлять какие-либо команды HCI.
На следующей схеме показана архитектура bluetooth LE Audio для конкретного поставщика.
Подробный дизайн
Требования к формату звука
Продолжительность аудиокадров
Профили Bluetooth LE Audio позволяют реализации поддерживать потоковую передачу звука с длительностью аудиокадров в 7,5 миллисекундах или 10 миллисекундах. Windows требует, чтобы кодеки, предоставляемые IHV, поддерживали обе продолжительности кадров, чтобы обеспечить взаимодействие с устройствами Bluetooth LE Audio и качеством сосуществования с другими устройствами Bluetooth LE, подключенными к системе.
Определения режима обработки сигналов
Bluetooth LE Audio поддерживает широкий спектр форматов потоковой передачи для поддержки различных сценариев пользователей. Спецификации BAP и TMAP определяют обязательные поддерживаемые форматы для сертификации. Windows применяет режимы обработки звуковых сигналов , чтобы сопоставить формат, используемый с сценарием, выполняемым системой. Звуковые драйверы, поддерживающие Bluetooth LE Audio, должны указывать на поддержку режимов обработки сигналов и форматов в следующей таблице. Кроме того, Bluetooth LE Audio не поддерживает режим обработки необработанных сигналов, поэтому звуковые драйверы не объявляют поддерживаемые форматы для этого режима.
Режимы обработки звуковых сигналов потоковой передачи
Bluetooth LE Audio требует объявления аудиоформатов отрисовки для следующих режимов обработки сигналов:
- По умолчанию (AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
- Этот режим используется для однонаправленных сценариев отрисовки, таких как воспроизведение музыки, уведомления и звук видеоигры.
- Обмен данными (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
- Этот режим используется для двунаправленных сценариев, таких как голосовые звонки.
В следующих таблицах перечислены форматы для каждого варианта использования и режима обработки сигналов. Форматы звука упорядочены от наиболее предпочтительного до наименее предпочтительного.
Системные звуки, воспроизведение музыки и звук видео игры при подключении к стереоустройству или координированному набору устройств
Режим обработки сигналов: по умолчанию
Частота выборки | Число каналов | Битовая глубина | Длительность кадра | Скорость звуковых данных | Идентификатор конфигурации кодека BAP (таблица 3.11 спецификации BAP) |
---|---|---|---|---|---|
48 кГц | 2 | 16 | 7.5 мс | 96 кб/с | 48_3 |
48 кГц | 2 | 16 | 7.5 мс | 80 кб/с | 48_1 |
48 кГц | 2 | 16 | 10 мс | 96 кб/с | 48_4 |
48 кГц | 2 | 16 | 10 мс | 80 кб/с | 48_2 |
24 кГц | 2 | 16 | 7.5 мс | 48 кб/с | 24_1 |
24 кГц | 2 | 16 | 10 мс | 48 кб/с | 24_2 |
Системные звуки, воспроизведение музыки и звук видео игры при подключении к одному члену координированного набора (один ухо или слуховая помощь)
Режим обработки сигналов: по умолчанию
Частота выборки | Число каналов | Битовая глубина | Длительность кадра | Скорость звуковых данных | Идентификатор конфигурации кодека BAP (таблица 3.11 спецификации BAP) |
---|---|---|---|---|---|
48 кГц | 1 | 16 | 7.5 мс | 96 кб/с | 48_3 |
48 кГц | 1 | 16 | 7.5 мс | 80 кб/с | 48_1 |
48 кГц | 1 | 16 | 10 мс | 96 кб/с | 48_4 |
48 кГц | 1 | 16 | 10 мс | 80 кб/с | 48_2 |
24 кГц | 1 | 16 | 7.5 мс | 48 кб/с | 24_1 |
24 кГц | 1 | 16 | 10 мс | 48 кб/с | 24_2 |
16 кГц | 1 | 16 | 7.5 мс | 32 кб/с | 16_1 |
16 кГц | 1 | 16 | 10 мс | 32 кб/с | 16_2 |
Отрисовка голосовой записи, вызовов VOIP или звука видео игры с помощью голосового чата
Режим обработки сигналов: обмен данными
Частота выборки | Число каналов | Битовая глубина | Длительность кадра | Скорость звуковых данных | Идентификатор конфигурации кодека BAP (таблица 3.11 спецификации BAP) |
---|---|---|---|---|---|
32 кГц | 1 | 16 | 7.5 мс | 64 кб/с | 32_1 |
32 кГц | 1 | 16 | 10 мс | 64 кб/с | 32_2 |
24 кГц | 1 | 16 | 7.5 мс | 48 кб/с | 24_1 |
24 кГц | 1 | 16 | 10 мс | 48 кб/с | 24_2 |
16 кГц | 1 | 16 | 7.5 мс | 32 кб/с | 16_1 |
16 кГц | 1 | 16 | 10 мс | 32 кб/с | 16_2 |
Режимы обработки звуковых сигналов потоковой передачи
Bluetooth LE Audio требует объявления аудиоформатов записи для режима обработки сигналов по умолчанию (AUDIO_SIGNALPROCESSINGMODE_DEFAULT). Список поддерживаемых форматов записи приведен в следующей таблице.
Форматы звука упорядочены от наиболее предпочтительного до наименее предпочтительного.
Запись голосовой записи, вызовы VOIP или звук видео игры с помощью голосового чата
Режим обработки сигналов: по умолчанию
Частота выборки | Число каналов | Битовая глубина | Длительность кадра | Скорость звуковых данных | Идентификатор конфигурации кодека BAP (таблица 3.11 спецификации BAP) |
---|---|---|---|---|---|
32 кГц | 1 | 16 | 7.5 мс | 64 кб/с | 32_1 |
32 кГц | 1 | 16 | 10 мс | 64 кб/с | 32_2 |
24 кГц | 1 | 16 | 7.5 мс | 48 кб/с | 24_1 |
24 кГц | 1 | 16 | 10 мс | 48 кб/с | 24_2 |
16 кГц | 1 | 16 | 7.5 мс | 32 кб/с | 16_1 |
16 кГц | 1 | 16 | 10 мс | 32 кб/с | 16_2 |
Определенные конфигурации потоков и топологии
Конфигурации только для отрисовки
Базовая конфигурация звукового профиля 1
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству, поддерживающим монопотоки. Одно устройство может быть автономным или одним подключенным членом координированного набора.
Примеры вариантов использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Воспроизведение мультимедиа | Render. Режим обработки сигналов: по умолчанию Число каналов: 1 Запись: Нет |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: высокая надежность |
Голосовой звонок без микрофона на звуковом устройстве | Render. Режим обработки сигналов: обмен данными Число каналов: 1 Запись: Нет |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Воспроизведение видеоигр | Render. Режим обработки сигналов: по умолчанию Число каналов: 1 Запись: Нет |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Базовая конфигурация звукового профиля 4
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству, который поддерживает стереопотоки. Звуковое устройство может обрабатывать два звуковых канала в одном cis.
Примеры вариантов использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Воспроизведение мультимедиа | Отрисовка: режим обработки сигналов: по умолчанию Число каналов: 2 Запись: Нет |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: высокий уровень надежности распределения аудиоканала: передний левый и передний правый |
Воспроизведение видеоигр | Режим обработки сигналов: по умолчанию Число каналов: 2 Запись: Нет |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка Выделение аудиоканала: передний левый и передний правый |
Базовая конфигурация профиля аудио 6(i)
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству, который поддерживает стереопотоки. Звуковое устройство может обрабатывать только один звуковой канал на каждом из двух CIS
Примеры вариантов использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Воспроизведение мультимедиа | Режим обработки сигналов: по умолчанию Число каналов: 2 Запись: Нет |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: высокая надежность |
Голосовой звонок без микрофона на звуковом устройстве | Режим обработки сигналов: обмен данными Число каналов: 1 Запись: Нет |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка Выделение аудиоканала: левый или передний правый |
Воспроизведение видеоигр | Режим обработки сигналов: по умолчанию Число каналов: 2 Запись: Нет |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка Выделение аудиоканала: передний левый и передний правый |
Базовая конфигурация звукового профиля 6(ii)
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к координированному набору звуковых устройств. Набор может обрабатывать два канала звука с каждым элементом, обрабатывая один канал.
Примеры вариантов использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Воспроизведение мультимедиа | Режим обработки сигналов: по умолчанию Число каналов: 2 Запись: Нет |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: высокая надежность |
Голосовой звонок без микрофона на любом устройстве | Режим обработки сигналов: обмен данными Число каналов: 1 Запись: Нет |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Воспроизведение видеоигр | Режим обработки сигналов: по умолчанию Число каналов: 2 Запись: Нет |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Двунаправленные конфигурации
Двунаправленные конфигурации используются, когда профиль Bluetooth LE Audio обнаруживает, что приложение намерено создавать поток записи и отрисовки на удаленном устройстве или наборе устройств. Так как потоки управления приложениями и отрисовываются отдельно, звуковые драйверы IHV и контроллеры Bluetooth должны разрешать передачу звука по одному направлению двунаправленного CIS после подготовки с помощью команд HCI configure Data Path и LE Setup ISO Data Path.
Базовая конфигурация звукового профиля 3
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству с двунаправленным монопотоком, установленным в одном CIS.
Вариант использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Голосовой звонок | Render. Режим обработки сигналов: обмен данными Число каналов: 1 Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Воспроизведение видеоигр с помощью голосового чата | Render. Режим обработки сигналов: обмен данными Число каналов: 1 Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Базовая конфигурация звукового профиля 8(i)
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству, который поддерживает потоки стереорисовки и потоки монозахвата. Устройство может обрабатывать один канал звука в одном формате CIS для заданного направления.
Вариант использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Голосовой звонок | Render. Режим обработки сигналов: обмен данными Число каналов: 1 Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Воспроизведение видеоигр с помощью голосового чата | Render. Режим обработки сигналов: обмен данными Число каналов: 2 Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Базовая конфигурация звукового профиля 8(ii)
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к координированному набору звуковых устройств. Каждый элемент набора получает один канал отрисовки звука. Один элемент набора содержит установленный поток записи. Элемент набора с потоком записи является первым элементом набора, который подключается к компьютеру, который также поддерживает потоки записи.
Вариант использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Голосовой звонок | Render. Режим обработки сигналов: обмен данными Число каналов: 1 Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Воспроизведение видеоигр с помощью голосового чата | Render. Режим обработки сигналов: обмен данными Число каналов: 2 Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Конфигурации только для записи
Базовая конфигурация звукового профиля 2
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству, поддерживающим потоки монозахвата.
Вариант использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Голосовой звонок без динамиков на устройстве | Отрисовка: Нет Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 1 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Базовая конфигурация звукового профиля 9(i)
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к одному звуковому устройству, который поддерживает отправку стереофонического звука. Устройство может кодирование одного канала звука в одном cis.
Вариант использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Захват микрофона с несколькими каналами | Отрисовка: Нет Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Базовая конфигурация звукового профиля 9(ii)
Компьютер подключен к одному звуковому устройству, поддерживающим потоки монозахвата.
Следующая конфигурация звука определена в таблице 4.1 спецификации Bluetooth BAP.
Компьютер подключен к набору звуковых устройств. Каждый элемент набора отправляет один канал звука на компьютер.
Вариант использования | Параметры звука Windows | Параметры контроллера Bluetooth |
---|---|---|
Захват микрофона с несколькими каналами | Отрисовка: Нет Запись. Режим обработки сигналов: по умолчанию Число каналов: 1 |
Число CIS: 2 Число CIG: 1 Параметры качества обслуживания BAP: низкая задержка |
Если удаленный набор устройств или набор устройств поддерживает двунаправленный звук, то конфигурации только потока записи совпадают с двунаправленными конфигурациями. Это позволяет переходить от сценариев записи только к двунаправленным сценариям без необходимости повторного создания потоков.
Структуры данных
Свойства интерфейса bluetooth LE Audio
Свойства создания потока
Следующие свойства совместно используются между стеком драйвера звука поставщика и профилем аудио Bluetooth LE через DDIS ACXOBJECTBAG для информирования о создании и настройке конечной точки потока, как показано в сценарии создания потока.
BluetoothLEAudio_CodecCapabilities
Это свойство задается звуковым драйвером, чтобы указать поддержку возможностей потоковой передачи звука, поддерживаемых в звуковом драйвере или звуковом DSP. Значение свойства задается с помощью DDI AcxObjectBagAddBlob , а формат значения совпадает с записью PAC, как определено в спецификации PACS.
Профиль Windows Bluetooth LE Audio считывает свойство, чтобы определить возможные конфигурации кодека и потоковую композицию для использования.
Поле | Октет |
---|---|
Число возможностей | 0 |
Идентификатор кодека[i] | 1–6 |
Длина определенных возможностей codec[i] | 7 |
Специальные возможности codec | 8... n |
Длина метаданных (m) | n + 1 |
Метаданные | n+2... m |
Значения полей определяются в таблицах 3.2 и 3.4 спецификации PACS.
Bluetooth_DatapathID
Это свойство задается звуковым драйвером, чтобы указать идентификатор пути к данным, используемый в качестве параметра для команд HCI_LE_Setup_ISO_Data_Path и HCI_Configure_Data_Path. Значение свойства задается с помощью DDI AcxObjectBagAddUI8.
Профиль Bluetooth LE Audio считывает и использует это свойство в качестве параметра в командах HCI_Configure_Data_Path и HCI_LE_Setup_ISO_Data_Path. Этот идентификатор применяется ко всем изохронным потокам, созданным для ACXSTREAM , связанного с контейнером объектов.
Поле | Октет |
---|---|
Идентификатор пути к данным | 0 |
Если свойство не задано звуковым драйвером, ОС использует значение 1 в качестве параметра для команд HCI.
Bluetooth_DatapathConfiguration
Это свойство задается звуковым драйвером для предоставления определенным поставщикам конфигураций контроллеру Bluetooth с помощью команды HCI_Configure_Data_Path. Он не должен превышать 255 байт, что является самой большой полезной нагрузкой, которую контроллер Bluetooth принимает для команды HCI. Значение свойства задается с помощью DDI AcxObjectBagAddBlob. Эта конфигурация применяется ко всему идентификатору пути данных, заданному звуковым драйвером.
BluetoothLEAudio_CodecConfiguration
Это свойство должно быть задано профилем Bluetooth LE Audio с помощью DDI AcxObjectBagAddBlob после настройки конфигурации кодека с звуковым устройством. Структура значения:
Поле | Октет |
---|---|
Число конфигураций | 0 |
Формат кода[i] | 3 |
Идентификатор компании[i] | 1-2 |
Идентификатор конкретного поставщика Codec[i] | 3–4 |
Длина конкретной конфигурации Codec[i] | 5 |
Конкретная конфигурация Codec[i] | 6... n |
Значения полей определены в таблице 4.3 спецификации службы управления аудиопотоком Bluetooth.
Определенный стек звукового драйвера должен прочитать это свойство, если кодек LC3 находится в драйвере потоковой передачи ACX или звуковом DSP.
Интерфейсы
Идентификаторы привязки шаблонов звуковых конечных точек
Используется фабрикой каналов ACX драйвера аудио, чтобы узнать, когда создается канал ACX для парного устройства Bluetooth.
Для создания каналов Bluetooth LE Audio используются следующие идентификаторы компонентов:
// {5C52FDB5-722A-4AB7-A342-70163B7E9B5C}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_RENDER_COMPONENT_ID,
0x5c52fdb5, 0x722a, 0x4ab7, 0xa3, 0x42, 0x70, 0x16, 0x3b, 0x7e, 0x9b, 0x5c);
// {1DFF2EE3-AE89-441C-BDE3-24F885C55DF8}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_CAPTURE_COMPONENT_ID,
0x1dff2ee3, 0xae89, 0x441c, 0xbd, 0xe3, 0x24, 0xf8, 0x85, 0xc5, 0x5d, 0xf8);
Интерфейс поддержки bluetooth LE Audio
Используется стеком звуковых драйверов, чтобы указать, что он доступен для потоковой передачи Bluetooth LE Audio. Windows Bluetooth Audio service-level watch для этого интерфейса и дождитесь публикации, прежде чем включить поддержку Bluetooth LE Audio.
Следующие идентификаторы интерфейса используются для публикации интерфейса поддержки Bluetooth LE Audio:
// {BA02FA1B-0FD0-4A0F-A748-4FAE2E2D2F67}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_SUPPORT_INTERFACE,
0xba02fa1b, 0x0fd0, 0x4a0f, 0xa7, 0x48, 0x4f, 0xae, 0x2e, 0x2d, 0x2f, 0x67);
Последовательности
Инициализация звукового драйвера
Когда драйвер потоковой передачи IHV ACX загружает и определяет, что поддерживает потоковую передачу Bluetooth LE Audio, он должен показать поддержку технологии путем создания объекта ACXFACTORYCIRCUIT и регистрации привязок шаблонов Bluetooth с помощью идентификаторов, определенных в привязках шаблонов аудио.
Создание конечной точки
- Если устройство LE Audio сопряжено с системой, профиль bluetooth LE Audio:
- Считывает опубликованные звуковые возможности удаленного устройства.
- Обнаруживает поддерживаемые контроллером возможности, отправляя команды HCI_Read_Local_Support_Codecs [версии 2] и HCI_Read_Local_Supported_Codec_Capabilities.
- Создает ACXCIRCUIT с поддерживаемыми форматами на основе возможностей кодека, поддерживаемых контроллером Bluetooth и удаленным звуковым устройством. Если контроллер не поддерживает кодеки, так как поддержка кодека находится в звуковом DSP или звуковом драйвере, поддерживаемые форматы устанавливаются в форматы, поддерживаемые удаленным звуковым устройством.
- После создания ACXCIRCUIT ACX запрашивает фабрику канала ACX IHV потоковой передачи драйвера ACX, чтобы создать ACXCIRCUIT для обработки потоков.
- При получении запроса на создание канала драйвер потоковой передачи IHV ACX:
- Создает объекты ACXCIRCUIT, ACXPIN, ACXOBJECTBAG и ACXSTREAMBRIDGE.
- Если LC3 или конкретный кодек поставщика размещается в звуковом драйвере или DSP, драйвер потоковой передачи IHV ACX задает свойство BluetoothLEAudio_CodecCapabilities в ACXOBJECTBAG.
- Драйвер потоковой передачи ACX IHV может задать Bluetooth_DatapathID или Bluetooth_DatapathConfiguration в ACXOBJECTBAG , если он известен в настоящее время.
- После создания обоих каналов ACX вызывает обратный вызов EvtAcxPinConnected на закреплении моста драйвера IHV ACX.
- При вызове обратного вызова EvtAcxPinConnected драйвер потоковой передачи IHV ACX:
- Извлекает закрепление моста канала профиля с помощью AcxTarget... API для получения форматов, поддерживаемых каналом профиля.
- Выполняет итерацию по списку ACXDATAFORMAT, заданных каналом профиля. Если звуковой кодек Bluetooth размещается в звуковом драйвере или звуковом DSP, драйвер аудиоконференции IHV обновляет свои форматы ACXDATAFORMATс форматами, поддерживаемыми кодеком и каналом профиля. В противном случае все форматы копируются в пин-код драйвера потоковой передачи IHV ACX.
- Задает обновленный список форматов на закреплении моста, если для потоковой передачи данных создается звуковой механизм.
- После обновления форматов ACX включает оба интерфейса, а также создается конечная точка аудио.
Создание потока
- Когда приложение запрашивает создание звукового потока, ACX вызывает зарегистрированные обратные вызовы EvtCircuitCreateStream для каждого канала, начиная с драйвера потоковой передачи IHV ACX.
- При вызове обратного вызова EvtCircuitCreateStream драйвер потоковой передачи IHV ACX:
- Задает или обновляет свойства Bluetooth_DatapathId и Bluetooth_DataPathConfiguration в ACXOBJECTBAG , подключенном к ACXSTREAMBRIDGE.
- Создает ACXSTREAM с набором обратных вызовов для перехода состояния потока и обработки потока RT
- Создает элемент audio-engine в потоке, если звуковой конвейер поддерживает разгрузку потоковой передачи.
- Добавляет ACXSTREAM в его мост потоковой передачи. Это вызывает обратный вызов Bluetooth LE Audio профиля EvtCircuitCreateStream .
- Когда вызывается обратный вызов EvtAcxCircuitCreateStream, профиль Bluetooth LE Audio:
- Сохраняет свойства локально из ACXOBJECTBAG , заданного драйвером потоковой передачи IHV ACX для будущих обратных вызовов перехода потока.
- Если конечная точка звука предназначена для одноадресной потоковой передачи профиля Bluetooth LE Audio:
- Выполняет операцию Config Codec, как определено в спецификации BAP. Параметры операции являются производными от ACXDATAFORMAT , указанного в обратном вызове EvtAcxCircuitCreateStream , а также от других параметров потока в ACXOBJECTBAG или возможностей кодека, поддерживаемых контроллером Bluetooth.
- Задает свойство BluetoothLEAudio_CodecConfiguration в ACXOBJECTBAG со значением, используемым для настройки удаленных звуковых устройств.
- Если драйвер потоковой передачи IHV ACX должен обновить идентификатор пути к данным или конфигурацию пути к данным на основе значений контейнера объектов, заданных профилем, то он может вызвать операции набора KSPROPERTY для обновления значения, хранящегося в канале профиля.
- Создает ACXSTREAM с набором обратных вызовов для переходов состояния потока.
Переходы состояния потока
ACX решает порядок передачи состояния потока на основе аудиопотока и того, переходит ли состояние в более активное или менее активное состояние.
- Для потоков отрисовки от менее активного состояния до более активного состояния канал профиля сначала получает событие, за которым следует канал потоковой передачи.
- Для потоков отрисовки, поступающих из более активного состояния в менее активное состояние, канал потоковой передачи получает событие сначала, а затем канал профиля.
- Для потоков записи, поступающих от менее активного состояния к более активному состоянию, канал потоковой передачи получает событие сначала, а затем канал профиля.
- Для потоков записи, поступающих из более активного состояния в менее активное состояние, канал профиля с получением события сначала, а затем канал потоковой передачи.
Подготовка потока
При вызове обратного вызова EvtAcxStreamPrepareHardware профиль Bluetooth LE Audio:
- Выделяет ресурсы для одноадресного потока по следующим причинам:
- Настройка CIG с помощью команды HCI_LE_Set_CIG_Parameters.
- Отправка операции качества обслуживания конфигурации ASCS для синхронизации параметров с удаленным устройством.
При вызове обратного вызова EvtAcxStreamPrepareHardware драйвер потоковой передачи IHV ACX выделяет необходимые ресурсы потоковой передачи и инициализирует звуковой конвейер для получения состояния.
Запуск потока
При вызове обратного вызова EvtAcxStreamRun профиль Bluetooth LE Audio:
- Применяет все параметры конфигурации пути к данным, заданные драйвером потоковой передачи ACX в процедуре создания потока с помощью команды HCI_Configure_Data_Path.
- Начинает процедуру запуска потока следующим образом:
- Выполнение процедуры одноадресного потока BAP Enable для одноадресного потока:
- Отправка операции "Включить" в удаленные конечные точки.
- Создание CISes, если они еще не созданы с помощью команды HCI_LE_Create_CIS.
- Выполнение процедуры одноадресного потока BAP Enable для одноадресного потока:
- Если путь к данным еще не настроен, профиль Bluetooth LE Audio:
- Устанавливает пути к данным ISO с помощью команды HCI_LE_Setup_ISO_Data_Path
- Если драйвер потоковой передачи IHV ACX задает свойство BluetoothLEAudio_CodecCapabilities, значение поля Codec_ID в HCI_LE_Setup_ISO_Data_Path должно быть установлено как прозрачное (0x3), как определено в номерах, назначенных Bluetooth. В противном случае значение должно совпадать с идентификатором Codec, используемым в операции кодека конфигурации в процедуре создания потока.
- Устанавливает пути к данным ISO с помощью команды HCI_LE_Setup_ISO_Data_Path
- Если аудиопоток является потоком одноадресной записи, профиль Bluetooth LE Audio выполняет операцию готовности приемника BAP.
При вызове обратного вызова EvtAcxStreamRun драйвер потоковой передачи IHV ACX начинает обработку входящих звуковых данных из аудиосистемы Windows (отрисовка) или контроллера Bluetooth (захват).
Приостановка потока
При вызове обратного вызова EvtAcxStreamPause профиль Bluetooth LE Audio:
- Выполняет процедуру отключения одноадресного потока BAP.
- Удаляет путь к данным ISO с помощью команды HCI_LE_Remove_ISO_Data_Path.
- Выполняет процедуру остановки приемника ASCS, если аудиопоток является потоком одноадресной записи.
При вызове обратного вызова EvtAcxStreamPause драйвер потоковой передачи IHV ACX приостанавливает конвейер обработки звука.
Поток выпуска
При вызове обратного вызова EvtAcxStreamReleaseHardware профиль Bluetooth LE Audio выполняет процедуру выпуска одноадресного потока BAP:
- Отправка операции выпуска ASCS на удаленное устройство Bluetooth LE Audio
- Отключение CIS, если оно не используется другим активным потоком.
- Удаление CIG, если все CIS отключены.
Когда вызывается обратный вызов EvtAcxStreamReleaseHardware, драйвер потоковой передачи IHV ACX освобождает ресурсы звукового конвейера.
Отключение конечной точки
Профиль Windows Bluetooth LE Audio обновляет состояние подключения конечной точки, если удаленное устройство одноадресной рассылки не имеет подключения LE-ACL к компьютеру или сообщает через доступные аудио контексты PACS, которые недоступны для потоковой передачи. При отключении конечной точки звуковая служба Windows недействителен для всех активных потоков в конечную точку. Это приводит к возникновению последовательностей приостановки и выпуска потока.
Удаление конечной точки
Конечная точка Bluetooth LE Audio удаляется из системы при уничтожении канала профиля или канала потоковой передачи. Канал профиля может быть удален при удалении пар удаленного одноадресного устройства из Windows или переключателя Bluetooth.
- Когда профиль Windows Bluetooth LE Audio удаляет канал, ACX отключает интерфейсы конечных точек, чтобы сигнализировать звуковой службе Windows о том, что конечная точка должна быть удалена.
- Если интерфейсы отключены, служба звука Windows недействительна любые активные потоки в конечную точку Bluetooth LE Audio, эта операция приводит к приостановке потока и обратным вызовам выпуска в канале потоковой передачи.
- Чтобы завершить удаление конечных точек, ACX отменяет канал драйвера потоковой передачи IHV ACX, что приводит к вызову WDF обратного вызова очистки канала.
- При вызове обратного вызова очистки драйвер потоковой передачи IHV ACX освобождает свой канал.
Том и отключение
Канал потоковой передачи IHV ACX должен включать только том и отключать элементы, если драйвер потоковой передачи требует звуковой подсистемы. При использовании звукового модуля флаги конфигурации должны быть заданы следующим образом:
ACX_AUDIOENGINE_CONFIG audioEngineCfg;
ACX_AUDIOENGINE_CONFIG_INIT(&audioEngineCfg);
…
audioEngineCfg.Flags |= AcxAudioEngineConfigVolumeSecondary; // Use this control only if endpoint doesn't have one.
audioEngineCfg.MuteElement = muteElement;
audioEngineCfg.Flags |= AcxAudioEngineConfigMuteSecondary; // Use this control only if endpoint doesn't have one.
audioEngineCfg.PeakMeterElement = peakmeterElement;
audioEngineCfg.Flags |= AcxAudioEngineConfigPeakMeterSecondary; // Use this control only if endpoint doesn't have one.
Это необходимо, чтобы разрешить конечным точкам Bluetooth LE Audio использовать определенные профили тома Bluetooth SIG и микрофона для громкости и отключения изменений для одноадресных звуковых конечных точек.
Если удаленное устройство Bluetooth LE Audio не поддерживает службы управления громкостью или микрофоном, либо конечная точка создается для широковещательного звука, то громкость и отключение звука в звуковом механизме должна служить резервным вариантом для обработки запросов на изменение из звуковой системы. Звуковая система Windows обрабатывает изменения громкости и выключения. Если звуковой механизм отсутствует и удаленное устройство не поддерживает громкость, либо службы микрофона, либо конечная точка звука для широковещательного звука.
Bluetooth LE и классическое сосуществование звука
Windows гарантирует, что для парного аудиоустройства Bluetooth, поддерживающего обе технологии, активен только классический звук или звук LE. Если звук le активен, для удаленного устройства отключены идентификаторы боковой полосы для A2DP и HFP, а для конечной точки звука LE создается канал профиля. Если классический звук активен, для удаленного устройства включены идентификаторы DDP и HFP на боковой полосе, а канал профиля не создается для конечной точки звука LE.
Управление питанием
Bluetooth LE Audio не имеет каких-либо требований к управлению питанием или потоков вне того, что уже определено WDF.
См. также
- Расширения аудиоклассов ACX
- Спецификация профиля звука Bluetooth Basic
- Спецификация Bluetooth Core 5.3
- Спецификация службы возможностей аудио в Bluetooth
- Спецификация службы управления аудиопотоком Bluetooth
- Назначенные номера Bluetooth
- Рекомендации по обходу Bluetooth HFP для звуковых драйверов
- Bluetooth HFP обходить потоковую передачу звука