Техническое примечание TN2274

Аудио USB на Mac

Для успешной разработки класса совместимое аудиоустройство USB, работающее беспрепятственно с Mac важно понять функции драйвера класса аудио USB Mac, AppleUSBAudio. Этот документ объясняет водительскую архитектуру, функции и алгоритмы, доступные в Mac OS X v10.6 и позже. Это также включает раздел, обсуждающий недавно улучшенную поддержку устройств, соответствующих Определению класса USB-устройства для Аудиоустройств 2,0 спецификации. Понимание и подсказки по проекту, представленные здесь, предназначаются для помощи разработчикам устройства в создании высококачественного Plug and Play аудиоустройства USB.

Фон
Обзор драйвера класса
Объединенная модель механизма
Потоковая передача без артефактов
Регулировки звука USB
Прерывания состояния
Дескриптивное именование
Поддерживаемое аудио USB 2.0 функции
Способы расширить драйвер класса
История версии документа

Фон

Этот документ предполагает, что читатель знаком с платформой Core Audio, Аудио HAL, основы Набора I/O и основные принципы USB. Рассмотрите эти документы для получения дополнительной информации:

Табличная 1  Терминология, используемая в этом документе для ссылки на 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 (аудио уровень аппаратной абстракции.)

Рисунок 1  AppleUSBAudio в штабеле аудио Mac OS X

Драйвер AppleUSBAudio связывается с устройствами через транспорт USB, с помощью APIs IOUSBFamily. AppleUSBAudio полагается на уровень IOAudioFamily, обеспечивающий общие функции драйвера аудио как поддержание выборки и буферов соединения, упрощая коммуникацию по ядру и границе пространства пользователя через пользовательские клиенты, и т.д. дополнительную информацию см. в Руководстве по программированию Драйвера аудиоустройства.

AppleUSBAudio является старым драйвером, поддерживающим много Аудио USB 1,0 и 2,0 функции. Таблица 2 выделяет некоторые поддерживавшие функции, обсужденные в этой статье.

  Функции Table 2 Supported в AppleUSBAudio. Галочка в столбце «USB Audio 1.0» означает, что эта функция поддерживается для Аудио USB 1,0 устройства. То же следует для столбца «USB Audio 2.0».

Функция

Аудио 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 была перепроектирована для объединения многократных потоков на механизм, если это возможно. В случаях, где потоки ввода и вывода могут находиться на том же механизме, эта архитектура достигает демонстрационной синхронизации и непротиворечивых задержек между потоками.

Для объединения многократных потоков на одном механизме следующие критерии должны быть удовлетворены потоковыми интерфейсами:

  1. Все наборы частоты дискретизации должны соответствовать.

  2. Тот же тип синхронизации используется для всех интерфейсных альтернативных настроек.

  3. Потоки находятся в том же домене часов.

Обратите внимание на то, что следующие способы поведения потоков, занимающих тот же механизм:

Потоковая передача без артефактов

Основная и самая важная функция драйвера AppleUSBAudio должна поддерживать надежную, потоковую передачу аудио без артефактов. Разработчики могут помочь драйверу в достижении этой цели путем выбора надлежащих значений дескриптора конечной точки для размера шрифта синхронизации и максимального размера пакета.

Типы синхронизации конечной точки

Для поддержания аудио без незначительного сбоя AppleUSBAudio должен регулярно представлять метки времени Core Audio, точно представляющие уровень аудиоданных механизма (см. “Аудио Модель I/O Близко” в Руководстве по программированию Драйвера аудиоустройства для большего количества подробных данных.), Когда устройство публикует корректные типы синхронизации конечной точки в своих дескрипторах конфигурации, AppleUSBAudio может выбрать надлежащий поток, от которого можно генерировать самые точные метки времени для механизма.

Драйвер поддерживает все три типа синхронизации, определенные спецификацией USB 2.0 (см. Раздел 5.12.4.1 Типа Синхронизации и Таблица 5-12):

  • Синхронный: синхронизировавший для хостинга через SOF

  • Асинхронный: не синхронизировавший для хостинга скорость передачи данных заблокирована к внутренним часам свободного доступа на устройстве или внешнем источнике как S/PDIF

  • Адаптивный: синхронизировавший для хостинга через скорость передачи данных

Таблица 3 ниже синхронизации списков вводит комбинации, работающие хорошо с Mac OS X.

Таблица 3  Рекомендуемые комбинации типа синхронизации конечной точки.

Входной поток

Поток вывода

Устройство получает свои часы из

Основной тактовый генератор

Метки времени, сгенерированные от

Синхронный

Синхронный

SOF

Mac

Входной поток

Асинхронный

Адаптивный

Уровень выходных данных

Mac

Поток вывода

Асинхронный

Асинхронный

Внутренний или внешний источник свободного доступа

Устройство или внешний

Входной поток

Если устройство поддерживает многократные домены часов, Аудио USB, 2,0 дескриптора объекта часов должны использоваться для ясной передачи его архитектуры часов в AppleUSBAudio. Посмотрите раздел Clock Entities позже в этой статье для получения информации об этих дескрипторах.

Обратная связь для асинхронных потоков вывода

К потоковому аудио через асинхронную конечную точку приемника устройство должно постоянно обновлять узел своей желаемой скорости передачи данных относительно частоты SOF (см. Раздел 5.10.4 из спецификации USB 1.0 и Раздела 5.12.4 из спецификации USB 2.0.) AppleUSBAudio поддерживает два механизма обратной связи:

  1. Явная конечная точка обратной связи: устройство обеспечивает связанную изохронную конечную точку обратной связи, отправляющую пакеты, содержащие число выборок на USB (микро) кадр (см. Раздел 3.7.2.2 из Аудио USB 1.0 Спецификации и Раздел 3.16.2.2 из Аудио USB 2.0 Спецификации.)

  2. Неявная обратная связь: драйвер использует число демонстрационных кадров в основных входных пакетах потока для построения пакетов для всех потоков вывода в механизме. Никакая конечная точка обратной связи не требуется (см. Раздел 5.12.4.3 из спецификации USB 2.0.)

Для использования неявной обратной связи устройство должно удовлетворить следующие требования:

  • Асинхронные потоки ввода и вывода находятся на одном механизме (т.е. должен удовлетворить критерии для Объединенной Модели Механизма.)

  • Интервалы опроса (bInterval) для потоковых конечных точек должны соответствовать.

  • Любой входной потоковый тип использования “Конечной точки” установлен в “Неявную конечную точку данных обратной связи” (Аудио USB 2.0 только, Раздел 4.10.1.1) и/или синхронизирующую конечную точку обратной связи, опущен (см. Таблицу 4.)

Таблица 4 иллюстрирует метод синхронизации, используемый драйвером в различных сценариях. Если обозначено полем «Usage type», драйвер обработает входной поток как неявную обратную связь и проигнорирует дополнительную синхронизирующую конечную точку обратной связи если настоящее (Конфигурация 2.) Это позволяет устройству реализовывать оба механизма обратной связи в случае необходимости по причинам совместимости. Конфигурация 3 только рекомендуется для Аудио USB 1,0 устройства, где конечная точка “Тип использования” не доступна.

Табличная 4  Обратная связь используется AppleUSBAudio для асинхронного вывода в соответствии с различными сценариями конфигурации.

Конфигурация

Входной дескриптор конечной точки указывает неявный тип использования обратной связи

Настоящее конечной точки обратной связи

Удовлетворяет неявные требования

Синхронизирующий метод

Рекомендуемый?

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 байтов за выборку. Размер пакета вычисляется следующим образом:

Art/tn2274_eq_a1_2.png

Art/tn2274_eq_a2_2.png

Это значение предполагает, что скорость передачи данных никогда не будет варьироваться, как имеет место, когда поток синхронен к SOF. Если конечная точка является адаптивной или асинхронной, один дополнительный демонстрационный кадр должен быть добавлен для размещения корректировок в скорости передачи данных. Разделите 2.3.1.1 из Форматов Аудиоданных 2.0 изменения Допустимых пределов в размере пакета + демонстрационный кадр/-1.

Синхронный: Максимальный размер пакета = 288 байтов

Адаптивный или асинхронный: Максимальный размер пакета = 288 + 6 = 294 байта

B) 44,1 кГц / 16-разрядный / 8 каналов / полная скорость

Каждый демонстрационный кадр содержит 8 каналов 2-байтовых выборок, который является кадром 16 байтов за выборку. Размер пакета вычисляется следующим образом:

Art/tn2274_eq_b1.png

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

Art/tn2274_eq_b2.png

Синхронный, адаптивный или asynchronous*: Максимальный размер пакета = 720 байтов

*Дополнительный разрешенный демонстрационный кадр был уже включен.

C) 192 кГц / 32-разрядный / 10 каналов / высокая скорость

Этот пример принимает одну транзакцию каждый микрокадр (т.е. интервал опроса является 1 микрокадром.)

Каждый демонстрационный кадр содержит 10 каналов 4-байтовых выборок, который является кадром 40 байтов за выборку. Размер пакета вычисляется следующим образом:

Art/tn2274_eq_c1.png

Синхронный:

Art/tn2274_eq_c2.png

Адаптивный или асинхронный: Максимальный размер пакета = 960 + 40 = 1 000 байтов

Табличная 5  Сводка примеров вычисления максимального размера пакета. «Синхронизация» указывает синхронные конечные точки, «адаптируйтесь», указывает, что адаптивные конечные точки, и «асинхронный» относятся к асинхронным конечным точкам.

Пример

Частота дискретизации (Гц)

Битовая глубина

Каналы

В мс средняя выборка структурирует

Макс. выборка структурирует в мс (синхронизация)

Транзакции в мс

Максимальный размер пакета, синхронизация (байты)

Максимальный размер пакета, адаптируйтесь и асинхронный (байты)

(Полный)

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 показывает простую топологию, состоящую из Терминалов Ввода и вывода синего цвета, Модулей Функции желтого цвета, и Селекторного Модуля и Модуля Микшера в оранжевом.

Рисунок 2  демонстрационная аудио функциональная топология, показывающая два входных источника (S/PDIF и строка в), а также один вывод (динамик).

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.

  Модуль Функции рисунка 3, выбранный для строки, ввел регуляторы громкости и бесшумные регулировки.

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

  Модуль Функции рисунка 4, выбранный для динамика, вывел регуляторы громкости и бесшумные регулировки.

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

  Модуль Функции рисунка 5, выбранный для, проигрывает средства управления на пути, содержащем Модуль Микшера.

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

Прерывания состояния

Канал прерывания состояния может использоваться, чтобы сообщить узлу, что установка изменилась на устройстве. Эта обратная связь поддерживает синхронизацию между пользовательским интерфейсом Mac и состоянием устройства. В настоящее время AppleUSBAudio обновляет определенные регулировки звука на Mac для прерываний, происходящих из Функции, Селектора и модулей Часов, как описано в Таблице 6.

Табличные 6  Типы состояния прерывают тот AppleUSBAudio поддержки и устройство в качестве примера и поведение Mac.

Модуль

Связанные средства управления

Событие устройства в качестве примера, инициировавшее прерывание

Ответ 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-устройства.

  Алгоритм именования Устройства рисунка 6.

Названия канала

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),

Этот требуемый дескриптор идентифицирует Набор Аудиоинтерфейса. Интерфейсы, сгруппированные в наборе, должны быть непрерывно пронумерованы и в следующем порядке:

  1. (Обязательный) интерфейс AudioControl

  2. Интерфейс (ы) AudioStreaming

  3. Интерфейс (ы) 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. Умножитель тактовой частоты обеспечивает механизм для получения дополнительных частот дискретизации в домене часов, которые синхронны к входному синхросигналу.

  Селектор Часов рисунка 7, как это появляется в Аудио Установка MIDI. В этом случае Селектор Часов позволяет пользователю выбирать между источниками устройства и внешнего таймера.

Конечная точка управления прерыванием состояния

(Аудио 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.