Аудио USB на Mac
Для успешной разработки класса совместимое аудиоустройство USB, работающее беспрепятственно с Mac важно понять функции драйвера класса аудио USB Mac, AppleUSBAudio. Этот документ объясняет водительскую архитектуру, функции и алгоритмы, доступные в Mac OS X v10.6 и позже. Это также включает раздел, обсуждающий недавно улучшенную поддержку устройств, соответствующих Определению класса USB-устройства для Аудиоустройств 2,0 спецификации. Понимание и подсказки по проекту, представленные здесь, предназначаются для помощи разработчикам устройства в создании высококачественного Plug and Play аудиоустройства USB.
Фон
Этот документ предполагает, что читатель знаком с платформой Core Audio, Аудио HAL, основы Набора I/O и основные принципы USB. Рассмотрите эти документы для получения дополнительной информации:
Термины используются в этом документе | Ссылка |
|---|---|
Аудио USB 1,0 аудио USB 2.0 | Версии определения класса USB-устройства для аудиоустройств |
Аудиоданные USB форматируют 1,0 формата аудиоданных USB 2.0 | Версии определения класса USB-устройства для форматов аудиоданных |
USB 1.0 USB 1.1 USB 2.0 | Версии спецификации универсальной последовательной шины |
Читатель строго призван рассмотреть документы в Таблице 1.
Обзор драйвера класса
AppleUSBAudio является базируемым драйвером ядра Набора I/O, разработанным для поддержки и Аудио USB 1.0 и Аудио USB 2,0 класса совместимые устройства. Рисунок 1 показывает, где AppleUSBAudio помещается в архитектуру штабеля аудио Mac OS X. В дополнение к переносу аудиоданных между аппаратными средствами и демонстрационным буфером узла, это также передает формат, и управление изменяется между узлом и устройством (как объем, бесшумный режим, формат, источник ввода/часов, и т.д.), AppleUSBAudio представляет эти аппаратные ресурсы приложениям через HAL (аудио уровень аппаратной абстракции.)

Драйвер AppleUSBAudio связывается с устройствами через транспорт USB, с помощью APIs IOUSBFamily. AppleUSBAudio полагается на уровень IOAudioFamily, обеспечивающий общие функции драйвера аудио как поддержание выборки и буферов соединения, упрощая коммуникацию по ядру и границе пространства пользователя через пользовательские клиенты, и т.д. дополнительную информацию см. в Руководстве по программированию Драйвера аудиоустройства.
AppleUSBAudio является старым драйвером, поддерживающим много Аудио USB 1,0 и 2,0 функции. Таблица 2 выделяет некоторые поддерживавшие функции, обсужденные в этой статье.
Функция | Аудио USB 1,0 устройства | Аудио USB 2,0 устройства | Примечания | Раздел Document |
|---|---|---|---|---|
Входная потоковая выборка, синхронная к потоку вывода | X | X | Потоки должны удовлетворить требования для занятия того же механизма | Объединенная модель механизма |
Синхронные конечные точки | X | X |
| Типы синхронизации конечной точки |
Выведите адаптивные конечные точки | X | X | Обычно соединяемый с асинхронной входной конечной точкой. Адаптивные конечные точки ввода не поддерживаются. | Типы синхронизации конечной точки |
Асинхронные конечные точки | X | X |
| Типы синхронизации конечной точки |
Прерывания состояния | X | X | Устройство сообщает узлу объема, бесшумного, входной селектор, законность часов | Прерывания состояния |
Имена предопределенного и пользовательского канала | X | X | Использование iChannelNames | Дескриптивное именование |
Дескрипторы объекта часов |
| X | Источник часов, селектор часов, умножитель тактовой частоты | Объекты часов |
Высокоскоростные изохронные передачи аудиоданных |
| X | Может поддерживать высокое количество каналов / частоты дискретизации. Пример: 10 каналов ввода и 10 каналов вывода, 32-разрядного 192 кГц | Высокоскоростная потоковая передача |
Объединенная модель механизма
AppleUSBAudio представляет потоки аудиоустройства USB к IOAudioFamily использования прикладного уровня объекты IOAudioStream. Один или более потоков связаны с каждым механизмом.
В Mac OS v10.5.6 и ранее, AppleUSBAudio ограничил каждый механизм одним потоком только. Тогда в v10.5.7, модель механизма AppleUSBAudio была перепроектирована для объединения многократных потоков на механизм, если это возможно. В случаях, где потоки ввода и вывода могут находиться на том же механизме, эта архитектура достигает демонстрационной синхронизации и непротиворечивых задержек между потоками.
Для объединения многократных потоков на одном механизме следующие критерии должны быть удовлетворены потоковыми интерфейсами:
Все наборы частоты дискретизации должны соответствовать.
Тот же тип синхронизации используется для всех интерфейсных альтернативных настроек.
Потоки находятся в том же домене часов.
Обратите внимание на то, что следующие способы поведения потоков, занимающих тот же механизм:
Эти потоки работают в том же временном интервале и установке частоты дискретизации (но не обязательно тот же формат.)
Эти потоки не могут быть активированы независимо. Они будут всегда запускать и останавливаться вместе.
Потоковая передача без артефактов
Основная и самая важная функция драйвера AppleUSBAudio должна поддерживать надежную, потоковую передачу аудио без артефактов. Разработчики могут помочь драйверу в достижении этой цели путем выбора надлежащих значений дескриптора конечной точки для размера шрифта синхронизации и максимального размера пакета.
Типы синхронизации конечной точки
Для поддержания аудио без незначительного сбоя AppleUSBAudio должен регулярно представлять метки времени Core Audio, точно представляющие уровень аудиоданных механизма (см. “Аудио Модель I/O Близко” в Руководстве по программированию Драйвера аудиоустройства для большего количества подробных данных.), Когда устройство публикует корректные типы синхронизации конечной точки в своих дескрипторах конфигурации, AppleUSBAudio может выбрать надлежащий поток, от которого можно генерировать самые точные метки времени для механизма.
Драйвер поддерживает все три типа синхронизации, определенные спецификацией USB 2.0 (см. Раздел 5.12.4.1 Типа Синхронизации и Таблица 5-12):
Синхронный: синхронизировавший для хостинга через SOF
Асинхронный: не синхронизировавший для хостинга скорость передачи данных заблокирована к внутренним часам свободного доступа на устройстве или внешнем источнике как S/PDIF
Адаптивный: синхронизировавший для хостинга через скорость передачи данных
Таблица 3 ниже синхронизации списков вводит комбинации, работающие хорошо с Mac OS X.
Входной поток | Поток вывода | Устройство получает свои часы из | Основной тактовый генератор | Метки времени, сгенерированные от |
|---|---|---|---|---|
Синхронный | Синхронный | SOF | Mac | Входной поток |
Асинхронный | Адаптивный | Уровень выходных данных | Mac | Поток вывода |
Асинхронный | Асинхронный | Внутренний или внешний источник свободного доступа | Устройство или внешний | Входной поток |
Если устройство поддерживает многократные домены часов, Аудио USB, 2,0 дескриптора объекта часов должны использоваться для ясной передачи его архитектуры часов в AppleUSBAudio. Посмотрите раздел Clock Entities позже в этой статье для получения информации об этих дескрипторах.
Обратная связь для асинхронных потоков вывода
К потоковому аудио через асинхронную конечную точку приемника устройство должно постоянно обновлять узел своей желаемой скорости передачи данных относительно частоты SOF (см. Раздел 5.10.4 из спецификации USB 1.0 и Раздела 5.12.4 из спецификации USB 2.0.) AppleUSBAudio поддерживает два механизма обратной связи:
Явная конечная точка обратной связи: устройство обеспечивает связанную изохронную конечную точку обратной связи, отправляющую пакеты, содержащие число выборок на USB (микро) кадр (см. Раздел 3.7.2.2 из Аудио USB 1.0 Спецификации и Раздел 3.16.2.2 из Аудио USB 2.0 Спецификации.)
Неявная обратная связь: драйвер использует число демонстрационных кадров в основных входных пакетах потока для построения пакетов для всех потоков вывода в механизме. Никакая конечная точка обратной связи не требуется (см. Раздел 5.12.4.3 из спецификации USB 2.0.)
Для использования неявной обратной связи устройство должно удовлетворить следующие требования:
Асинхронные потоки ввода и вывода находятся на одном механизме (т.е. должен удовлетворить критерии для Объединенной Модели Механизма.)
Интервалы опроса (bInterval) для потоковых конечных точек должны соответствовать.
Любой входной потоковый тип использования “Конечной точки” установлен в “Неявную конечную точку данных обратной связи” (Аудио USB 2.0 только, Раздел 4.10.1.1) и/или синхронизирующую конечную точку обратной связи, опущен (см. Таблицу 4.)
Таблица 4 иллюстрирует метод синхронизации, используемый драйвером в различных сценариях. Если обозначено полем «Usage type», драйвер обработает входной поток как неявную обратную связь и проигнорирует дополнительную синхронизирующую конечную точку обратной связи если настоящее (Конфигурация 2.) Это позволяет устройству реализовывать оба механизма обратной связи в случае необходимости по причинам совместимости. Конфигурация 3 только рекомендуется для Аудио USB 1,0 устройства, где конечная точка “Тип использования” не доступна.
Конфигурация | Входной дескриптор конечной точки указывает неявный тип использования обратной связи | Настоящее конечной точки обратной связи | Удовлетворяет неявные требования | Синхронизирующий метод | Рекомендуемый? |
|---|---|---|---|---|---|
1 | Да | Нет | Да | Неявный | Да |
2 | Да | Да | Да | Неявный | Только для совместимости |
3 | Нет | Нет | Да | Неявный | Только для Аудио USB 1,0 устройства |
4 | Нет | Да | n/a | Конечная точка обратной связи | Да |
5 | Да | Да | Нет | Конечная точка обратной связи | Нет |
Максимальный размер пакета
Очень важно указать правильное значение для максимального размера пакета каждой конечной точки, потому что неправильное значение могло привести к аудио повреждению. Размер пакета не может превысить 1 023 байта для устройств полной скорости и 1 024 байта для высокоскоростных устройств (Раздел 5.6.3 из спецификации USB 2.0.) Для определения точного значения нужно идентифицировать поддерживаемый формат и конфигурацию частоты дискретизации, использующую самую большую пропускную способность для конечной точки.
Сумма аудиоданных, содержавшихся в каждом пакете, может варьироваться в зависимости от скорости устройства. Если устройство является полной скоростью, каждый пакет содержит 1 миллисекунду (мс) данных. На высокоскоростных USB-устройствах каждый кадр USB разделяется на вызванные микрокадры восьми сегментов с 125 микросекундами. Конечные точки могут указать интервал опроса, в котором передачи могут произойти, т.е. каждый микрокадр, любой микрокадр, и т.д. Эта частота должна быть принята во внимание при вычислении максимального размера пакета. (В это время AppleUSBAudio поддерживает самое большее одну транзакцию на микрокадр. Посмотрите раздел High Speed Streaming для получения дополнительной информации.)
Примеры вычисления
Следующая полная скорость и высокоскоростные примеры иллюстрируют процедуру вычисления:
A) 48 кГц / 24-разрядный / 2 канала / полная скорость
Каждый демонстрационный кадр содержит 2 канала 3-байтовых выборок, который является кадром 6 байтов за выборку. Размер пакета вычисляется следующим образом:


Это значение предполагает, что скорость передачи данных никогда не будет варьироваться, как имеет место, когда поток синхронен к SOF. Если конечная точка является адаптивной или асинхронной, один дополнительный демонстрационный кадр должен быть добавлен для размещения корректировок в скорости передачи данных. Разделите 2.3.1.1 из Форматов Аудиоданных 2.0 изменения Допустимых пределов в размере пакета + демонстрационный кадр/-1.
Синхронный: Максимальный размер пакета = 288 байтов
Адаптивный или асинхронный: Максимальный размер пакета = 288 + 6 = 294 байта
B) 44,1 кГц / 16-разрядный / 8 каналов / полная скорость
Каждый демонстрационный кадр содержит 8 каналов 2-байтовых выборок, который является кадром 16 байтов за выборку. Размер пакета вычисляется следующим образом:

Пакеты не могут содержать частичные демонстрационные кадры. Так, в то время как большинство пакетов будет содержать 44 демонстрационных кадра, каждый десятый пакет будет содержать 45 демонстрационных кадров.

Синхронный, адаптивный или asynchronous*: Максимальный размер пакета = 720 байтов
*Дополнительный разрешенный демонстрационный кадр был уже включен.
C) 192 кГц / 32-разрядный / 10 каналов / высокая скорость
Этот пример принимает одну транзакцию каждый микрокадр (т.е. интервал опроса является 1 микрокадром.)
Каждый демонстрационный кадр содержит 10 каналов 4-байтовых выборок, который является кадром 40 байтов за выборку. Размер пакета вычисляется следующим образом:

Синхронный:

Адаптивный или асинхронный: Максимальный размер пакета = 960 + 40 = 1 000 байтов
Пример | Частота дискретизации (Гц) | Битовая глубина | Каналы | В мс средняя выборка структурирует | Макс. выборка структурирует в мс (синхронизация) | Транзакции в мс | Максимальный размер пакета, синхронизация (байты) | Максимальный размер пакета, адаптируйтесь и асинхронный (байты) |
|---|---|---|---|---|---|---|---|---|
(Полный) | 48000 | 24 | 2 | 48 | 48 | 1 | 288 | 294 |
B (полный) | 44100 | 16 | 8 | 44.1 | 45 | 1 | 720 | 720 |
C (высоко) | 192000 | 32 | 10 | 7680 | 7680 | 8 | 960 | 1000 |
Как AppleUSBAudio использует максимальный размер пакета
При запуске потока драйвер резервирует минимальный USB изохронная возможная пропускная способность: минимум максимального размера пакета и пропускной способности, требуемой для текущей частоты дискретизации и формата. Это максимизирует остающуюся доступную пропускную способность для других USB-устройств, включая другие аудиоустройства, подключенные к Mac. Это также увеличивает вероятность, что запрос пропускной способности предоставят в ситуациях, где уже используется большая часть пропускной способности.
Важные подсказки
При определении максимального размера пакета удостоверьтесь, что не забыли дополнительный демонстрационный кадр в вычислении для этих особых случаев:
Частоты дискретизации, не делящиеся равномерно на пакеты (т.е. 44,1 кГц)
Адаптивные и асинхронные конечные точки
При потоковой передаче устройства должны всегда наблюдать ограничения пропускной способности для каждой частоты дискретизации и параметров формата. Это включает + демонстрационное правило кадра/-1 в Разделе 2.3.1.1 из Форматов Аудиоданных 2.0 Спецификации.
Регулировки звука USB
AppleUSBAudio анализирует дескрипторы интерфейса регулировки звука для обнаружения аудио топологии для аудиоустройства USB. Топология состоит из стандартных блоков или модулей, представляющих аудио функцию и обеспечивающих механизм для управления параметрами, как корректировка регулировок звука. Рисунок 2 показывает простую топологию, состоящую из Терминалов Ввода и вывода синего цвета, Модулей Функции желтого цвета, и Селекторного Модуля и Модуля Микшера в оранжевом.

AppleUSBAudio использует информацию, содержавшуюся в аудио топологии для нахождения объема/бесшумных регулировок ввода и вывода устройства, аппаратные средства проигрывают средства управления, вводят селектор, и даже синхронизируют исходные опции для Аудио USB 2,0 устройства. AppleUSBAudio представляет эти средства управления Core Audio как IOAudioControls. Этот раздел внимание на объем, бесшумный режим, и проигрывает средства управления в частности.
Модули функции содержат регуляторы громкости и бесшумные регулировки, которые могут логически отобразиться на объем, бесшумный режим, и аппаратные средства проигрывают средства управления на Mac, Когда AppleUSBAudio создает потоковый объем ввода и вывода и бесшумный IOAudioControls, они появляются в Звуковых Предпочтениях и приложении Audio MIDI Setup (AMS). В случае проигрывают, бесшумная регулировка Модуля Функции появляется как «Через» переключатель в AMS только. Игра через регуляторы громкости также публикуется AppleUSBAudio, но не появляется в AMS или области Sound Preferences. Однако к ним можно получить доступ через утилиту HALLab аудио разработчика.
Правила публикации управления
Так как многократные Модули Функции могут существовать в звуковой дорожке, AppleUSBAudio использует специальный алгоритм для выбора Feature Unit, содержащего логические средства управления для представления Аудио HAL. Алгоритм стремится разместить наиболее распространенные случаи и минимизировать нежелательные побочные эффекты. Правила следующие:
* Объем/бесшумный режим для входных источников: AppleUSBAudio опубликует средства управления, содержавшиеся в Модуле Функции, самом близком к селекторному модулю на Входной стороне Терминала как показано на рисунке 3.

* Объем/бесшумный режим для выходных источников: AppleUSBAudio опубликует средства управления, содержавшиеся в Модуле Функции, самом близком к Выходной клемме как показано на рисунке 4.

* Аппаратные средства проигрывают с Модулем Микшера по пути: AppleUSBAudio опубликует средства управления, содержавшиеся в Модуле Функции между Входным Терминалом и Модуле Микшера. Ища от Входного Терминала до Модуля Микшера, драйвер выбирает первый Модуль Функции, не совместно использующийся с другой звуковой дорожкой. Пример показан на рисунке 5.

* Аппаратные средства проигрывают без Модуля Микшера по пути: AppleUSBAudio опубликует средства управления, содержавшиеся в Модуле Функции, самом близком к Входному Терминалу , не совместно использующемуся с другой звуковой дорожкой.
Прерывания состояния
Канал прерывания состояния может использоваться, чтобы сообщить узлу, что установка изменилась на устройстве. Эта обратная связь поддерживает синхронизацию между пользовательским интерфейсом Mac и состоянием устройства. В настоящее время AppleUSBAudio обновляет определенные регулировки звука на Mac для прерываний, происходящих из Функции, Селектора и модулей Часов, как описано в Таблице 6.
Модуль | Связанные средства управления | Событие устройства в качестве примера, инициировавшее прерывание | Ответ Mac на прерывание |
|---|---|---|---|
Модуль функции | Объем и бесшумный режим | Пользователь поворачивает кнопку объема | Объем обновляется в AMS и Звуковых Предпочтениях UI |
Селекторный модуль | Введите селектор трактов | Пользователь переключает переключатель от входа микрофона до ввода строки | «Исходный» селектор обновляется для “Выравнивания ввода” на входной вкладке AMS’s для устройства |
Модуль часов (Аудио USB 2.0 только) | Законность часов, поддерживаемая частота (ы) дискретизации изменилась | Пользователь разъединяет кабель S/PDIF, использовавшийся как Источник Часов | AppleUSBAudio переключается на альтернативный допустимый Источник Часов и обновляет селектор в AMS |
См. Раздел 3.7.1.2 из Аудио USB 1,0 стандарта и Раздел 6 из Аудио USB 2,0 стандарта для получения дополнительной информации.
Дескриптивное именование
Другой способ улучшить пользовательский опыт с устройством класса аудио USB на Mac OS X состоит в том, чтобы обеспечить значимое и дескриптивное устройство и названия канала. Следующие разделы объяснят, как выполнить это с дескрипторами конфигурации устройства.
Имя устройства
Имя устройства появится во многих местах на Mac, включая в Аудио Установка MIDI, Звуковые Предпочтения, и в сторонних аудиоприложениях. Core Audio представляет каждый механизм как устройство в системе. Если механизм будет иметь имя, то Core Audio будет использовать это в качестве имени устройства, иначе это будет использовать имя USB-устройства. Рисунок 6 показывает, как AppleUSBAudio и Core Audio определят описательное имя, присвоенное устройству, в зависимости от числа потоков, связанных с механизмом и присутствием управления и потоковых имен интерфейса и имени USB-устройства.

Названия канала
AppleUSBAudio поддерживает Аудио Кластерные Дескрипторы, как описано в разделе 3.7.2.3 “Формата Кластера Звукового канала” Аудио USB 1,0 спецификации, и разделите 4.1 “Дескриптора Кластера Звукового канала” в Аудио USB 2,0 спецификации. Эти дескрипторы позволяют разработчикам устройства называть каналы в потоке, с помощью или предопределенных имен (таких как “Передняя сторона, Левая”, или «Низкочастотных эффектов», и т.д.) или пользовательских имен. Перечисление 1 показывает интересующие области дескриптора, как представлено в AppleUSBAudio. См. спецификация Аудио USB разделяет ранее упомянутый для полного объяснения использования этих полей.
Структура перечисления 1, представляющая Аудио Кластерный Дескриптор в AppleUSBAudio
typedef struct AudioClusterDescriptor { |
UInt8 bNrChannels; |
UInt32 bmChannelConfig; |
UInt8 iChannelNames; |
} AudioClusterDescriptor, *AudioClusterDescriptorPtr; |
Аудио Кластерные Дескрипторы могут быть встроены во Входной Терминал, Микшер, Обработку и Дополнительные дескрипторы Модуля. AppleUSBAudio ищет Аудио Кластерный Дескриптор на звуковой дорожке, запускающейся с Выходной клеммы на Входной Терминал, и использует первый, который это находит.
Поддерживаемое аудио USB 2.0 функции
AppleUSBAudio был улучшен в Snow Leopard для поддержки многих главных функций, содержавшихся в Определении класса USB для Аудиоустройств 2,0 спецификации. Следующие функции в настоящее время поддерживаются:
Высокоскоростная потоковая передача
(USB 2.0, Разделы 5.6 и 9.6.6)
Mac OS X поддерживает высокоскоростную потоковую передачу, до 1 024 байтов за микрокадр для каждой изохронной конечной точки, включая издержки.
Например, Snow Leopard (и позже) в состоянии передать 10 каналов потоком 32-разрядного аудио в 192 кГц к и от Аудио USB 2,0 устройства. Дополнительная информация, имеющая отношение к изохронной передаче данных, может быть найдена в Руководстве по Интерфейсу USB-устройства.
Интерфейсный дескриптор ассоциации
(Аудио USB 2.0, разделите 4.6),
Этот требуемый дескриптор идентифицирует Набор Аудиоинтерфейса. Интерфейсы, сгруппированные в наборе, должны быть непрерывно пронумерованы и в следующем порядке:
(Обязательный) интерфейс AudioControl
Интерфейс (ы) AudioStreaming
Интерфейс (ы) MIDIStreaming
Объекты часов
(Аудио USB 2.0, разделы 3.13.11, 4.7.2.1 - 4.7.2.3)
Домены часов описаны с помощью новых 2.0 Объектов Часов: Источник Часов, Селектор Часов и Умножитель тактовой частоты. Драйвер AppleUSBAudio также поддерживает связанные Запросы AudioControl связанных часов, как указано в Разделах 5.2.5.1 до 5.2.5.3.
В отличие от Аудио USB 1,0 устройства, использование переключения Установки Альтернативы для управления частотой дискретизации запрещается для Аудио USB 2,0 устройства. Вместо этого Исходный объект Часов служит основным тактовым генератором для домена часов, который может обеспечить частоту сигнала выборки. Селекторы часов позволяют и узлу и аудио функции переключить вводы часов. Рисунок 7 показывает, как Селектор Часов появляется в AMS. Умножитель тактовой частоты обеспечивает механизм для получения дополнительных частот дискретизации в домене часов, которые синхронны к входному синхросигналу.


Конечная точка управления прерыванием состояния
(Аудио USB 2.0, разделите 4.8.2.1, 6),
AppleUSBAudio содержит дополнительную поддержку парсинга Формата сообщения Данных Прерывания в Разделе 6.1. Единственные дополнительные 2,0 поддержки прерывания состояния, добавленная к драйверу, была для Исходного модуля Часов.
AppleUSBAudio отвечает в различных способах на прерывание, сгенерированное от Исходного модуля Часов, в настоящее время управляющего скоростью передачи данных. Если законность часов укусила, указывает, что часы недопустимы, и аудио топология содержит Селектор Часов, драйвер ищет альтернативный допустимый Источник Часов и переключается на тот (как описано в Таблице 6.), Если Источник Часов допустим, то он принимает, частота дискретизации изменилась. В этом случае это переиздает доступные уровни и обновляет текущую частоту дискретизации устройства на узле.
Способы расширить драйвер класса
AppleUSBAudio был разработан для обеспечения некоторого поставщика определенные расширения. Это дает разработчикам преимущество добавления специальных опций, не имея необходимость поддерживать набор основной характеристики высокоэффективного драйвера аудио.
Один способ увеличить поведение драйвера класса состоит в том, чтобы обеспечить codeless расширение ядра (kext), который переопределяет определенные свойства аудиоустройства USB. Эти свойства включают USB-устройство и имена интерфейса, пакет локализации, Core Audio плагин HAL, обеспечивая доступ к панели пользовательского элемента управления через Аудио опция «Configure device...» Установки MIDI и больше. Этот пример кода иллюстрирует различные свойства, которые могут быть изменены.
Другой способ настроить AppleUSBAudio состоит в том, чтобы добавить, что поставщик указал обработку DSP, чтобы ввести и/или вывести аудиопотоки. Разработчики могут создать пользовательский плагин аудио USB, выполняющий звуковой сигнал, обрабатывающий только для их устройства. Этот механизм может также использоваться для обеспечения доступа к панели пользовательского элемента управления. В подпрограмме инициализации вызвать super::pluginSetConfigurationApp() с комплектом приложений панели управления ID.
История версии документа
| Дата | Примечания |
|---|---|
| 03.06.2013 | Обновленный для включения интеграции приложения пользовательского элемента управления от codeless переопределяют kext. |
| 22.09.2011 | Обновленный с новым разделом, описывающим механизмы обратной связи для асинхронных потоков вывода, включая неявную обратную связь. Сделанные незначительные редакционные исправления. |
| 07.06.2010 | Новый документ, детализирующий поддержку Apple аудио USB, чтобы помочь разработчикам разработать класс совместимые устройства, работающие беспрепятственно с Mac. |