Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка класса IOAudioEngine

Опции
Развертывание Target:

На этой странице
Язык:

IOAudioEngine

Абстрактный базовый класс для единственного аудио аудио / механизм I/O.

IOAudioEngine определяется единственным механизмом I/O для передачи данных или от одного или более демонстрационных буферов. Каждый демонстрационный буфер представлен единственным экземпляром IOAudioStream. Единственный IOAudioEngine должен содержать по крайней мере один IOAudioStream, но не имеет никакого верхнего предела числа IOAudioStreams, который это может содержать. Экземпляр IOAudioEngine может содержать оба ввода и вывода IOAudioStreams.

Драйвер аудио должен разделить IOAudioEngine на подклассы для предоставления определенных услуг. Подкласс IOAudioEngine должен запустить и остановить механизм I/O, когда требуется. Механизм I/O должен постоянно работать и цикл вокруг от конца до начала. В то время как аудио механизм работает, он должен взять метку времени в качестве демонстрационного буфера (ов), повторяются и запускаются вначале. CoreAudio.framework использует метку времени для вычисления точной позиции аудио механизма. Подкласс IOAudioEngine должен реализовать getCurrentSampleFrame () для обеспечения демонстрационной позиции по требованию. Наконец, подкласс IOAudioEngine должен обеспечить отсечение и подпрограммы преобразования формата для движения в собственный формат CoreAudio.framework плавающий.

Если многократные потоковые форматы или частоты дискретизации позволяются, подкласс IOAudioEngine должен предоставить поддержку для изменения аппаратных средств, когда изменяются формат или частота дискретизации.

Существует несколько атрибутов, связанных с единственным IOAudioEngine:

Суперкласс IOAudioEngine обеспечивает совместно используемый буфер состояния, содержащий все динамические данные об аудио механизме (введите IOAudioEngineStatus). Это выполняет процесс стирания на всех потоках вывода. Стирающая головка используется для обнуления соединения и демонстрационных буферов после того, как игрались выборки. Кроме того, суперкласс IOAudioEngine обрабатывает связь с CoreAudio.framework и принимает решение запустить и остановить аудио механизм, когда это обнаруживает его, используется.

Для аудиоустройства, чтобы воспроизвести или записать звук, должен быть создан подкласс IOAudioEngine. Подкласс должен инициализировать все необходимые аппаратные ресурсы для подготовки к запущению аудио двигателя I/O. Это обычно будет выполнять эти задачи в initHardware () метод. Подкласс может также реализовать остановку () метод, который вызывают, поскольку разъединяется драйвер. Это обычно вызывают в подготовке удаления устройства от системы для съемных устройств.

В дополнение к инициализации необходимых аппаратных средств существует много других задач, которые IOAudioEngine должен сделать во время initHardware (). Это должно создать необходимые объекты IOAudioStream соответствовать функции устройств. Каждый IOAudioStream должен быть добавлен с помощью addAudioStream (). Это также должно создать IOAudioControls, должен был управлять различными атрибутами аудио механизма: выходной объем, бесшумный, входное усиление, ввел выбор, аналог passthru. Чтобы сделать это, addDefaultAudioControl () нужно вызвать с каждым IOAudioControl, чтобы быть присоединенным к IOAudioEngine. Для обеспечения надлежащей синхронизации задержка аудио механизма должна быть указана с setSampleLatency (). Это значение представляет задержку между меткой времени, взятой в начале буфера и когда аудио фактически играется (или зарегистрировано) устройством. Если устройство является базируемым блоком или если существует потребность сохранить CoreAudio.framework определенным числом выборок перед (или позади для ввода) голова I/O, то значение должно быть указано с помощью setSampleOffset (). Если это не указано, CoreAudio.framework может попытаться добраться максимально близко к голове I/O.

Следующие поля в совместно используемой структуре IOAudioEngineStatus должны сохраняться реализацией подкласса:

  • <t> fCurrentLoopCount - the number of times the sample buffer has wrapped around to the beginning
  • <t> fLastLoopTime - timestamp of the most recent time that the I/O engine looped back to the
  • beginning of the sample buffer

Критически важно, чтобы fLastLoopTime поле было максимально точно. Это - основание для всего таймера и механизма синхронизации, используемого аудиосистемой.

В init время подкласс IOAudioEngine должен вызвать setNumSampleFramesPerBuffer (), чтобы указать, насколько большой каждый из демонстрационных буферов (измерен в демонстрационных кадрах). В единственном IOAudioEngine все демонстрационные буферы должны быть тем же размером и работать в той же частоте дискретизации. Если различные буферы/потоки могут быть выполнены на различных уровнях, отдельный IOAudioEngines должен использоваться. Подкласс IOAudioEngine должен также вызвать setSampleRate () в init время для указания стартовой частоты дискретизации устройства.

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Не применимый

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.1 и позже.
  • Добавляет IOAudioStream к аудио механизму.

    Объявление

    C++

    virtual IOReturn addAudioStream( IOAudioStream *stream);

    Параметры

    stream

    IOAudioStream, который будет добавлен.

    Возвращаемое значение

    Возвраты kIOReturnSuccess, если был успешно добавлен поток.

    Обсуждение

    Эта функция вызвана драйвером для добавления IOAudioStream к аудио механизму. Это нужно вызвать, по крайней мере, один раз, чтобы удостовериться, что аудио механизм имеет по крайней мере один IOAudioStream.

  • Включает событие таймера для аудио механизма.

    Объявление

    C++

    virtual void addTimer();

    Обсуждение

    Существует событие таймера, необходимое IOAudioEngine для обработки стирающей головки и выполнения операций сбрасывания. Когда таймер стреляет, метод timerFired () в конечном счете вызывают, который поочередно вызывает performErase () и performFlush (). Это вызывают автоматически для включения события таймера для этого аудио механизма. Это вызывает setState (), когда аудио состояние механизма установлено в kIOAudioEngineRunning. Когда таймер больше не необходим, removeTimer () вызывается. Нет никакой потребности вызвать это непосредственно.

  • Обнуляет всю выборку и буферы соединения, связанные с IOAudioEngine

    Объявление

    C++

    virtual void clearAllSampleBuffers();

    Обсуждение

    Это вызывают во время resumeAudioEngine (), так как аудио механизм начинает назад в начале демонстрационного буфера.

  • Вызванный автоматически, когда пользовательский клиент закрывает его соединение с аудио механизмом.

    Объявление

    C++

    virtual void clientClosed( IOAudioEngineUserClient *client);

    Параметры

    client

    Разъединившийся пользовательский клиент.

    Обсуждение

    Этот метод постепенно уменьшает число соединений с аудио механизмом и если они достигают нуля, аудио механизм вызывают с вызовом к stopAudioEngine (). Этот метод нельзя вызвать непосредственно.

  • Переопределите этот метод, если Вы хотите возвратить различное число демонстрационных кадров, чем требовалось.

    Объявление

    C++

    virtual IOReturn convertInputSamplesVBR( const void *sampleBuf, void *destBuf, UInt32 firstSampleFrame, UInt32 &numSampleFrames, const IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream);

  • Генерирует словарь, соответствующий данную частоту дискретизации.

    Объявление

    C++

    static OSDictionary *createDictionaryFromSampleRate( const IOAudioSampleRate *sampleRate, OSDictionary *rateDict = 0);

    Возвращаемое значение

    Возвращается, недавно создают OSDictionary.

    Обсуждение

    Это - внутренняя подпрограмма, используемая для генерации словаря, соответствующего данную частоту дискретизации. Это используется для генерации словаря частоты дискретизации для Реестра I/O - используемый CoreAudio.framework.

  • Генерирует частоту дискретизации от OSDictionary.

    Объявление

    C++

    static IOAudioSampleRate *createSampleRateFromDictionary( const OSDictionary *rateDict, IOAudioSampleRate *sampleRate = 0);

    Возвращаемое значение

    Возвращает частоту дискретизации.

    Обсуждение

    Это - внутренняя подпрограмма, используемая для генерации частоты дискретизации от OSDictionary. Это используется для генерации частоты дискретизации, дают новый OSDictionary от IORegistry - прибывающий из CoreAudio.framework.

  • Эта функция позволяет фактическое стираться соединения и демонстрационного буфера, который будет переопределен дочерним классом.

    Объявление

    C++

    virtual IOReturn eraseOutputSamples( const void *mixBuf, void *sampleBuf, UInt32firstSampleFrame, UInt32numSampleFrames, const IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream);

    Параметры

    mixBuf

    Указатель на IOAudioFamily выделил буфер соединения.

    sampleBuf

    Указатель на демонстрационный буфер дочернего класса.

    firstSampleFrame

    Индекс к первому демонстрационному кадру, который сотрется.

    numSampleFrames

    Число демонстрационных кадров для стирания.

    streamFormat

    Формат данных, которые будут стерты.

    audioStream

    Указатель на потоковый объект, соответствующий демонстрационному стираемому буферу.

    Возвращаемое значение

    Если выборки были стерты, должен возвратить kIOReturnSuccess.

  • Освобождает все ресурсы, выделенные IOAudioEngine.

    Объявление

    C++

    virtual void free();

    Обсуждение

    Не вызывайте это непосредственно. Когда refcount экземпляра переходит в 0, это вызывает автоматически система. Постепенно уменьшать refcount, разъединение вызова () на объекте.

  • Общий метод получить некоторый атрибут аудио механизма, определенного для одного соединения.

    Объявление

    C++

    virtual IOReturn getAttributeForConnection( SInt32 connectIndex, UInt32 attribute, uintptr_t *value );

    Параметры

    attribute

    Определяет атрибут, который будет возвращен. Некоторые определенные атрибуты:

    value

    Возвращает значение для атрибута.

    Возвращаемое значение

    код IOReturn.

    Обсуждение

    Подклассы IOAudioEngine могут реализовать этот метод, чтобы позволить произвольным парам атрибут/значение быть возвращенными, определенный для одного соединения.

  • Возвращает IOCommandGate для этого IOAudioEngine.

    Объявление

    C++

    virtual IOCommandGate *getCommandGate() const;

  • Получает текущий демонстрационный кадр от подкласса IOAudioEngine.

    Объявление

    C++

    virtual UInt32 getCurrentSampleFrame() = 0;

  • Возвращает true, если аудио механизм выполнит стирающую головку, когда будет работать аудио механизм.

    Объявление

    C++

    virtual bool getRunEraseHead();

  • Возвращает частоту дискретизации IOAudioEngine в выборках в секунду.

    Объявление

    C++

    virtual const IOAudioSampleRate *getSampleRate();

  • Возвращает текущее состояние IOAudioEngine.

    Объявление

    C++

    virtual IOAudioEngineState getState();

    Возвращаемое значение

    Текущее состояние IOAudioEngine: kIOAudioEngineRunning, kIOAudioEngineStopped.

    Обсуждение

    Если этот метод вызывают в подготовке к вызову setState (), stateLock должен быть получен перед первым вызовом к getState () и сохранен до окончания последней возможности к setState (). Бойтесь возврат из кода, получающего блокировку, в то время как сохранена блокировка. Это вызовет ситуацию с мертвой блокировкой.

  • Возвращает указатель на совместно используемый буфер состояния.

    Объявление

    C++

    virtual const IOAudioEngineStatus *getStatus();

  • Получает интервал таймера для использования событием таймера.

    Объявление

    C++

    virtual AbsoluteTime getTimerInterval();

    Возвращаемое значение

    Возвращает интервал для события таймера.

    Обсуждение

    Этот метод вызывают каждый раз, когда событие таймера включено через addTimer (). Реализация по умолчанию установлена возвратить значение, таким образом, что событие таймера выполняет n времена каждый цикл аудио механизма через демонстрационный буфер. Значение n сохранено как переменная экземпляра: numErasesPerBuffer. Значение по умолчанию numErasesPerBuffer установлено в IOAUDIOENGINE_DEFAULT_NUM_ERASES_PER_BUFFER, который равняется 4. Подкласс может изменить значение numErasesPerBuffer или переопределить getTimerInterval. Если это переопределяется, подкласс должен вызвать реализацию суперкласса, сравнить ее интервал с суперклассом и возвратить меньшие из двух.

  • Возвращает IOWorkLoop для драйвера.

    Объявление

    C++

    virtual IOWorkLoop *getWorkLoop() const;

  • Выполняет инициализацию недавно выделенного IOAudioEngine.

    Объявление

    C++

    virtual bool init( OSDictionary *properties);

    Параметры

    properties

    Свойства по умолчанию для IOAudioEngine.

    Возвращаемое значение

    Если инициализация была успешна, возвращает true.

    Обсуждение

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

  • Эта функция вызвана запуском () для обеспечения удобного места для подкласса для выполнения его инициализации аппаратного обеспечения.

    Объявление

    C++

    virtual bool initHardware( IOService *provider);

    Параметры

    provider

    Поставщик услуг, оцепенелый для этого аудио механизма - обычно IOAudioDevice.

    Возвращаемое значение

    Если аппаратные средства были успешно инициализированы, возвращает true.

    Обсуждение

    По возврату из этой функции должны быть созданы весь IOAudioStreams и IOAudioControls, и аудио двигатель должен быть готов быть запущенным, когда клиент запрашивает, чтобы началось воспроизведение.

  • Генерирует OSSymbols с ключами.

    Объявление

    C++

    static void initKeys();

    Обсуждение

    Не вызывайте это непосредственно. Это - внутренняя подпрограмма инициализации.

  • Запрашивает новый пользовательский объект клиента на эту службу.

    Объявление

    C++

    virtual IOReturn newUserClient( task_t task, void *securityID, UInt32 type, IOUserClient **handler);

    Параметры

    task

    Задача, запрашивающая новый пользовательский клиент.

    securityID

    Дополнительная парамать безопасности передала в клиентом - проигнорированный.

    type

    Дополнительный пользовательский клиентский тип передал в клиентом - проигнорированный.

    handler

    Новый IOUserClient * должен быть сохранен в этом параметрическом усилителе на успешном завершении.

    properties

    Словарь дополнительных свойств для соединения.

    Возвращаемое значение

    Возвраты kIOReturnSuccess на успехе. Май также заканчивается kIOReturnError или kIOReturnNoMemory.

    Обсуждение

    Когда пользовательский процесс пытается соединиться с этой службой, эта функция вызвана автоматически Набором I/O. Это выделяет новый объект IOAudioEngineUserClient и постепенно увеличивает число соединений для этого аудио механизма. Если это - первый пользовательский клиент для этого IOAudioEngine, он вызывает startAudioEngine (). Нет никакой потребности вызвать эту функцию непосредственно. Производный класс, требующий переопределения newUserClient, должен переопределить версию с параметром свойств для целей Intel, и без параметра свойств для целей PPC. #if __ i386 __ директива может использоваться для выбора между этими двумя способами поведения.

  • Вызванный для запущения аудио двигателя I/O

    Объявление

    C++

    virtual IOReturn performAudioEngineStart();

    Возвращаемое значение

    Должен возвратить kIOReturnSuccess на успешном запуске механизма.

    Обсуждение

    Этот метод вызывает startAudioEngine (). Это должно быть переопределено подклассом. Никакой вызов к реализации суперкласса не необходим. Реализация подкласса должна запустить аудио механизм I/O. Это включает любой аудио двигатель, который должен быть запущен, а также любые прерывания, которые должны быть включены.

  • Вызванный для остановки аудио механизма I/O

    Объявление

    C++

    virtual IOReturn performAudioEngineStop();

    Возвращаемое значение

    Должен возвратить kIOReturnSuccess на успешной остановке механизма.

    Обсуждение

    Этот метод вызывает stopAudioEngine () и pauseAudioEngine. Это должно быть переопределено подклассом. Никакой вызов к реализации суперкласса не необходим. Реализация подкласса должна остановить аудио механизм I/O. Это включает любой аудио механизм, который должен быть остановлен, а также любые прерывания, которые должны быть отключены.

  • Выполняет обработку стирающей головки.

    Объявление

    C++

    virtual void performErase();

    Обсуждение

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

  • Выполняет работу сброса.

    Объявление

    C++

    virtual void performFlush();

    Обсуждение

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

  • Вызванный, когда этот аудио механизм готов начать продавать службы.

    Объявление

    C++

    virtual void registerService( IOOptionBits options = 0);

    Параметры

    options

    Обсуждение

    Эта функция вызвана IOAudioDevice:: activateAudioEngine () один раз аудио механизм был полностью инициализирован и готов начать воспроизведение аудио.

  • Отключает событие таймера для аудио механизма.

    Объявление

    C++

    virtual void removeTimer();

    Обсуждение

    Этот метод вызывают автоматически для отключения события таймера для этого аудио механизма. Существует потребность вызвать его непосредственно. Этот метод вызывает setState (), когда аудио состояние механизма изменяется от kIOAudioEngineRunning до одного из остановленных состояний.

  • Сбрасывает буфер состояния к его значениям по умолчанию.

    Объявление

    C++

    virtual void resetStatusBuffer();

    Обсуждение

    Это вызывают во время startAudioEngine () и resumeAudioEngine () для убирания буфера состояния в подготовке запуска механизма I/O. Нет никакой потребности вызвать это непосредственно.

  • Общий метод установить некоторый атрибут аудио механизма, определенного для одного соединения.

    Объявление

    C++

    virtual IOReturn setAttributeForConnection( SInt32 connectIndex, UInt32 attribute, uintptr_t value );

    Параметры

    attribute

    Определяет атрибут, который будет установлен.

    value

    Новое значение для атрибута.

    Возвращаемое значение

    код IOReturn.

    Обсуждение

    Подклассы IOAudioEngine могут реализовать этот метод, чтобы позволить произвольным парам атрибут/значение быть установленными, определенный для одного соединения.

  • Устанавливает свойство, что использование CoreAudio, чтобы определить, как синхронизируются устройства. Если аудиоустройство может сказать, что синхронизируется с другим механизмом, оно должно установить это значение в домен часов того механизма. Если аудиоустройство может быть ведущим устройством часов, оно может опубликовать свой собственный домен часов для других устройств для использования.

    Объявление

    C++

    virtual void setClockDomain( UInt32 clockDomain = clockDomain);

    Параметры

    clockDomain

    уникальный идентификатор другого механизма, что этот механизм понимает, что это синхронизируется с, используйте значение по умолчанию kIOAudioNewClockDomain, чтобы сделать, чтобы IOAudioEngine создал уникальный домен часов.

  • Эта функция устанавливает флаг что использование CoreAudio для выбора его алгоритма отслеживания частоты дискретизации. Установите это в TRUE, если это не приводит к отброшенному аудио. Если драйвер испытывает необъясненных уволенных, устанавливающих этот FALSE, мог бы помочь.

    Объявление

    C++

    virtual void setClockIsStable( boolclockIsStable);

    Параметры

    clockIsStable

    TRUE говорит CoreAudio использовать агрессивный PLL для быстрой блокировки к частоте дискретизации механизма, в то время как FALSE говорит CoreAudio корректироваться более медленно к воспринятым изменениям частоты дискретизации, которые могли бы просто быть результатом нестабильных часов.

  • установите смещение, из которого будет читать CoreAudio от текущего указателя чтения

    Объявление

    C++

    virtual void setInputSampleOffset( UInt32numSamples);

    Параметры

    numSamples

    размер смещения в выборке

  • Используемый, чтобы сказать IOAudioFamily, когда сторожевой таймер должен стрелять.

    Объявление

    C++

    virtual void setMixClipOverhead( UInt32newMixClipOverhead);

    Параметры

    newMixClipOverhead

    Сколько времени на буфер должно быть сделано доступным для соединения и подпрограмм клипа для выполнения. Допустимые значения равняются 1 - 99, включительно.

    Возвращаемое значение

    не возвратите ошибку

    Обсуждение

    setMixClipOverhead позволяет аудио механизму говорить IOAudioFamily, сколько времени механизм возьмет, чтобы смешать и отсечь его выборки в проценте. Значение по умолчанию равняется 10, означая 10%. Это заставит IOAudioFamily делать сторожевой огонь таймера, когда будет чуть более чем 10% времени для завершения буферного оставленного набора (например, 51 выборка, когда HAL использует размер буфера 512 выборок).

  • установите смещение, в котором запишет CoreAudio от текущего указателя записи

    Объявление

    C++

    virtual void setOutputSampleOffset( UInt32numSamples);

    Параметры

    numSamples

    размер смещения в выборке

  • Говорит аудио механизм, выполнить ли стирающую головку.

    Объявление

    C++

    virtual void setRunEraseHead( boolrunEraseHead);

    Параметры

    runEraseHead

    Если это значение будет истиной, аудио механизм выполнит стирающую головку.

    Обсуждение

    По умолчанию выходные механизмы аудио выполняют стирающую головку и вводят аудио механизмы, не делают. Этот метод можно вызвать, после setDirection () вызывается для изменения поведения по умолчанию.

  • Устанавливает демонстрационную задержку для аудио механизма.

    Объявление

    C++

    virtual void setSampleLatency( UInt32 numSamples);

    Обсуждение

    Демонстрационная задержка представляет число выборок перед головой воспроизведения, которую безопасно записать в демонстрационный буфер. Аудиоустройство API никогда не будет писать ближе в голову воспроизведения, чем число указанных выборок. Для входных механизмов аудио число выборок находится позади рекордной головы.

  • Записывает частоту дискретизации аудио механизма.

    Объявление

    C++

    virtual void setSampleRate( const IOAudioSampleRate *newSampleRate);

    Параметры

    newSampleRate

    Частота дискретизации аудио механизма в выборках в секунду.

    Обсуждение

    Этот метод нужно вызвать во время инициализации нового аудио механизма для записи начальной частоты дискретизации аудио механизма. Это также предназначается, чтобы использоваться для записи изменений в частоте дискретизации во время использования. В настоящее время изменяя частоты дискретизации после того, как аудио двигатель был запущен, не поддерживается. Это может потребовать, чтобы были изменены демонстрационные буферы. Это будет доступно в предстоящем выпуске.

  • Указывает, что аудио механизм находится в указанном состоянии.

    Объявление

    C++

    virtual IOAudioEngineState setState( IOAudioEngineStatenewState);

    Параметры

    newState

    Состояние аудио механизм находится в.

    Возвращаемое значение

    Возвращает старое состояние.

    Обсуждение

    Этот метод просто устанавливает внутреннее состояние аудио механизма к указанному состоянию. Это не влияет на изменение в состоянии. Это действительно, однако, сохраняет другие связанные с внутренним состоянием атрибуты непротиворечивыми. Например, когда изменения состояния к выполнению или остановились, это включает или отключает таймер по мере необходимости.

  • Простое покрытие функционирует для запуска (IOService *, IOAudioDevice *), который предполагает, что провайдером является IOAudioDevice.

    Объявление

    C++

    virtual bool start( IOService *provider);

    Параметры

    provider

    Поставщик услуг для IOAudioEngine (IOAudioDevice в этом случае).

    Возвращаемое значение

    Если IOAudioEngine был успешно запущен, возвращает true.

    Обсуждение

    Подклассы захотят переопределить, запускаются (IOService *, IOAudioDevice *), а не этот.

  • Стандартные IOKit запускают () подпрограмму, вызванную для запуска IOService.

    Объявление

    C++

    virtual bool start( IOService *provider, IOAudioDevice *device);

    Параметры

    provider

    Поставщик услуг для IOAudioEngine.

    device

    IOAudioDevice, которому принадлежит этот IOAudioEngine.

    Возвращаемое значение

    Если служба была успешно запущена, возвращает true.

    Обсуждение

    Эта функция вызвана для подготовки IOAudioEngine к использованию. Это НЕ означает, что должен быть запущен сам аудио двигатель I/O. Эта реализация получает IOWorkLoop от IOAudioDevice и выделяет IOCommandGate. Наконец это вызывает initHardware (), в котором должна быть сделана вся специфичная для подкласса инициализация устройства. По возврату из initHardware () весь IOAudioStreams должен быть создан и добавлен к аудио механизму. Кроме того, весь IOAudioControls для этого IOAudioEngine должен быть создан и присоединен.

  • Запускает аудио двигатель I/O.

    Объявление

    C++

    virtual IOReturn startAudioEngine();

    Возвращаемое значение

    Должен возвратить kIOReturnSuccess на успешном запуске механизма.

    Обсуждение

    Когда аудио механизм помещается в использование в первый раз, этот метод вызывают автоматически. Это должно быть переопределено подклассом. Никакой вызов к реализации суперкласса не необходим. Реализация подкласса должна запустить аудио механизм I/O. Это включает любой аудио двигатель, который должен быть запущен, а также любые прерывания, которые должны быть включены. После успешного запущения двигателя реализация подкласса должна вызвать setState (kIOAudioEngineRunning). Если это также проверило состояние с помощью getState () ранее в реализации, stateLock должен быть получен за весь процесс инициализации (использующий IORecursiveLockLock (stateLock) и IORecursiveLockUnlock (stateLock)), чтобы гарантировать, что состояние остается непротиворечивым. См. общие комментарии класса для примера.

  • Останавливает службу и подготавливает к драйверу быть завершенным.

    Объявление

    C++

    virtual void stop( IOService *provider);

    Параметры

    provider

    Поставщик услуг для IOAudioEngine.

    Обсуждение

    Эта функция вызвана, прежде чем драйвер завершается и обычно означает, что устройство было удалено из системы.

  • Останавливает аудио механизм I/O.

    Объявление

    C++

    virtual IOReturn stopAudioEngine();

    Возвращаемое значение

    Должен возвратить kIOReturnSuccess на успешной остановке механизма.

    Обсуждение

    Когда последний клиент разъединяется от этого аудио механизма, этот метод вызывают автоматически. Это должно быть переопределено подклассом. Никакой вызов к реализации суперкласса не необходим. Реализация подкласса должна остановить аудио механизм I/O. Аудио механизм (если это существует) должен быть остановлен, и любые прерывания отключены. После успешной остановки механизма подкласс должен вызвать setState (kAudioEngineStopped). Если это также проверило состояние с помощью getState () ранее в реализации, stateLock должен быть получен за весь процесс инициализации (использующий IORecursiveLockLock (stateLock) и IORecursiveLockUnlock (stateLock)), чтобы гарантировать, что состояние остается непротиворечивым.

  • Статический метод, используемый в качестве обратного вызова для служб таймера IOAudioDevice.

    Объявление

    C++

    static void timerCallback( OSObject *arg1, IOAudioDevice *device);

    Параметры

    arg1

    IOAudioEngine, который является целью события.

    device

    IOAudioDevice, отправивший событие таймера.

    Обсуждение

    Этот метод реализует IOAudioDevice:: тип TimerEvent.

  • Указывает, что стрелял таймер.

    Объявление

    C++

    virtual void timerFired();

    Обсуждение

    Этот метод вызывает timerCallback, чтобы указать, что стрелял таймер. Это вызовы метода performErase () и performFlush (), чтобы сделать обработку стирающей головки и аудио механизм, сбрасывающий каждый раз огни события таймера.

Константы

  • gSampleRateWholeNumberKey

    gSampleRateWholeNumberKey

    Доступный в OS X v10.1 через OS X v10.5.

  • gSampleRateFractionKey

    gSampleRateFractionKey

    Доступный в OS X v10.1 через OS X v10.5.

  • Переменные экземпляра

    • IOWorkLoop для драйвера аудио - совместно использованный с IOAudioDevice.

      Объявление

      C++

      IOWorkLoop *workLoop;

    • OSSet всех клиентов в настоящее время подключенного пользователя.

      Объявление

      C++

      OSSet *userClients;

    • Структура состояния совместно используется с CoreAudio.framework.

      Объявление

      C++

      IOAudioEngineStatus * status;

    • Текущее состояние IOAudioEngine - выполнение, остановленное, приостановилось.

      Объявление

      C++

      IOAudioEngineState state;

    • Текущая частота дискретизации аудио механизма в выборках в секунду.

      Объявление

      C++

      IOAudioSampleRate sampleRate;

    • Набор к истине, если стирающая головка должна работать, когда работает аудио механизм. Дело обстоит так, если существуют какие-либо потоки вывода.

      Объявление

      C++

      bool runEraseHead;

    • OSSet всего вывода IOAudioStreams, присоединенного к этому IOAudioEngine.

      Объявление

      C++

      OSOrderedSet *outputStreams;

    • Объявление

      C++

      UInt32 numSampleFramesPerBuffer;

    • Число раз стирающая головка, как планируют, будет работать за каждым циклом аудио механизма.

      Объявление

      C++

      UInt32 numErasesPerBuffer;

    • В общей сложности клиенты активного пользователя - те, которые в настоящее время играют или записывают аудио.

      Объявление

      C++

      UInt32 numActiveUserClients;

    • Переменная внутреннего состояния для отслеживания или вызвали ли registerService ().

      Объявление

      C++

      bool isRegistered;

    • OSSet всего ввода IOAudioStreams присоединил к этому IOAudioEngine.

      Объявление

      C++

      OSOrderedSet *inputStreams;

    • Используемый IOAudioDevice для определения ответственности за завершение работы аудио механизма, когда это больше не необходимо.

      Объявление

      C++

      bool deviceStartedAudioEngine;

    • Все IOAudioControls, влияющие на этот аудио механизм.

      Объявление

      C++

      OSSet *defaultAudioControls;

    • Набор к истине после beginConfigurationChange () и ложь на последующий вызов к completeConfigurationChange () или cancelConfigurationChange ().

      Объявление

      C++

      bool configurationChangeInProgress;

    • IOCommandGate для этого аудио механизма - присоединенный к водительскому IOWorkLoop.

      Объявление

      C++

      IOCommandGate *commandGate;

    • Когда все клиенты разъединились, это установлено в одну длину буфера мимо текущей аудио позиции механизма в то время. Тогда когда позиция остановки достигнута, аудио механизм останавливается

      Объявление

      C++

      IOAudioEnginePosition audioEngineStopPosition;

    • Экземпляр IOAudioDevice, которому принадлежит IOAudioEngine.

      Объявление

      C++

      IOAudioDevice * audioDevice;