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

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

Разработчик

Ссылка платформы CoreMedia ссылка CMBufferQueue

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

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

Ссылка CMBufferQueue

Этот документ описывает API для создания и управления CMBufferQueue структуры.

CMBufferQueues Базовые объекты Основы, реализующие очередь синхронизированных буферов. Эти буферы могут иметь любой Базовый Основанный на основе тип (CFTypeRef), но должен иметь понятие продолжительности. Во время CMBufferQueue создание, ряд обратных вызовов предоставлен, один из которых является требуемым обратным вызовом, возвращающим продолжительность Базового Основанного на основе буферного объекта. Стандартная структура обратного вызова для CMSampleBuffers предоставлен как удобство. Эти обратные вызовы вызывают синхронно из различного CMBufferQueue APIs, на потоке, который названный API.

CMBufferQueues разработаны, чтобы быть считанным и записанным из различных потоков в модели производителя/потребителя. В то время как это обычно - два потока (один producer/enqueuer, один dequeuer/consumer), CMBufferQueues может обслужить любое число буферов постановки в очередь и/или исключения из очереди потоков. В CMBufferQueue APIs, все операции (не просто CMBufferQueueEnqueue и CMBufferQueueDequeueAndRetain, но Comparing CMBufferQueue, CMBufferQueueInstallTrigger и т.д.), сделаны атомарными при помощи единственного взаимного исключения (одно взаимное исключение на создаваемый объект очереди).

По умолчанию, a CMBufferQueue если обратный вызов сравнения предоставлен, получающееся, очередь FIFO, но CMBufferQueue будет сортирован на основе того обратного вызова. Например, можно было бы создать a CMBufferQueue где буферы ставятся в очередь в порядке декодирования и исключаются из очереди в порядке представления путем обеспечения обратного вызова сравнения, к которому добавляют метку времени виды представлением.

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

Если предоставленный обратным вызовом буферной готовности, CMBufferQueues может проверить на буферную готовность во время CMBufferQueueDequeueIfDataReadyAndRetain. Если тот обратный вызов не предоставлен, все буферы, как предполагается, готовы, и нет никакого различия между CMBufferQueueDequeueAndRetain, и CMBufferQueueDequeueIfDataReadyAndRetain.

CMBufferQueues также реализация CMBufferQueueIsEmpty и CMBufferQueueTestTrigger, с помощью добирающихся дополнительных обратных вызовов декодируют и метки времени представления от буфера. Если или или оба из этих обратных вызовов не предоставлен, kCMTimeInvalid будет возвращен для недостающей метки (ок) времени.

CMBufferQueues может быть отмечен с концом данных (CMBufferQueueMarkEndOfData). Один раз так отмечено, далее ставит в очередь, перестанет работать, и как только все буферы были исключены из очереди, очередь постоянно пуста («в конце данных»), пока не вызывают Сброс. Сброс освобождает очередь и отменяет маркировку конца данных.

Текущий статус a CMBufferQueue может быть опрошен. Можно протестировать на пустоту (CMBufferQueueCreate), текущая продолжительность очереди (“Comparing CMBufferQueue”), и состояние конца данных (CMBufferQueueContainsEndOfData и CMBufferQueueIsAtEndOfData).

Можно установить триггерные обратные вызовы (использование CMBufferQueueInstallTrigger) получить уведомления о различных изменениях состояния очереди, такие как “продолжительность становится меньше чем 1 секундой”. Очередь не может быть изменена во время триггерного обратного вызова, но она может быть опрошена. Триггерные условия могут быть протестированы явно также (CMBufferQueueTestTrigger). Триггеры с NULL обратные вызовы могут быть добавлены к очереди для этого типа использования, но триггерам с обратными вызовами можно было также протестировать их условия явно.

Триггерные обратные вызовы можно вызвать от любого CMBufferQueue API, изменяющий общую продолжительность очереди (те, которые Ставят в очередь/Исключают из очереди/Сбрасывают). Триггерные обратные вызовы вызывают синхронно на потоке который названные API.

Изменение состояния очереди всегда из триггерного обратного вызова запрещается и перестанет работать, возвращаясь kCMBufferQueueError_CannotModifyQueueFromTriggerCallback.

Попытка Ставить в очередь на полную очередь или Исключить из очереди от пустой очереди не блокирует, но сразу возвратится с ошибкой (или с a NULL буфер). Триггеры должны быть установлены клиентом для управления знанием клиента обилия очереди. Использованию повторных повторений (опрос) обескураживают как неэффективное использование ресурсов.

Функции

  • Создает a CMBufferQueue объект.

    Объявление

    Swift

    func CMBufferQueueCreate(_ allocator: CFAllocator!, _ capacity: CMItemCount, _ callbacks: UnsafePointer<CMBufferCallbacks>, _ queueOut: UnsafeMutablePointer<Unmanaged<CMBufferQueue>?>) -> OSStatus

    Objective C

    OSStatus CMBufferQueueCreate ( CFAllocatorRef allocator, CMItemCount capacity, const CMBufferCallbacks *callbacks, CMBufferQueueRef *queueOut );

    Параметры

    allocator

    Средство выделения для использования для выделения CMBufferQueue объект. Передача kCFAllocatorDefault использовать средство выделения по умолчанию.

    capacity

    Максимальное количество буферов в очереди. Передайте 0 для создания очереди, которая будет расти по мере необходимости.

    callbacks

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

    queueOut

    На Выводе, недавно создаваемый CMBufferQueue.

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

    Код результата. Посмотрите Коды Результата.

    Обсуждение

    По возврату вызывающей стороне принадлежит возвращенный CMBufferQueue, и должен выпустить его, когда сделано с ним.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Вызывает функцию для каждого буфера в очереди.

    Объявление

    Swift

    func CMBufferQueueCallForEachBuffer(_ queue: CMBufferQueue!, _ refcon: CFunctionPointer<((CMBuffer!, UnsafeMutablePointer<Void>) -> OSStatus)>, _ callback: UnsafeMutablePointer<Void>) -> OSStatus

    Objective C

    OSStatus CMBufferQueueCallForEachBuffer ( CMBufferQueueRef queue, OSStatus (*callback)( CMBufferRef buffer, void *refcon), void *refcon );

    Параметры

    queue

    CMBufferQueue это может содержать многократные буферы.

    refcon

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

    callback

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

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

    Код результата. Посмотрите Коды Результата.

    Обсуждение

    Если функция обратного вызова возвратит ошибку, то итерация сразу остановится, и ошибка будет возвращена.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Исключает буфер из очереди от a CMBufferQueue.

    Объявление

    Objective C

    CMBufferRef CMBufferQueueDequeueAndRetain ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue от которого можно исключить буфер из очереди.

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

    Исключенный из очереди буфер. Будет NULL если очередь пуста.

    Обсуждение

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

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

    Objective C

    @import CoreMedia;

    Доступность

    Доступный в OS X v10.7 и позже.

  • Исключает буфер из очереди от a CMBufferQueue если это готово.

    Объявление

    Objective C

    CMBufferRef CMBufferQueueDequeueIfDataReadyAndRetain ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue от которого можно исключить буфер из очереди (если буфер готов).

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

    Исключенный из очереди буфер. Будет NULL если очередь пуста, или если буфер, который будет исключен из очереди, еще не готов.

    Обсуждение

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

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

    Objective C

    @import CoreMedia;

    Доступность

    Доступный в OS X v10.7 и позже.

  • Ставит в очередь буфер на a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueEnqueue(_ queue: CMBufferQueue!, _ buf: CMBuffer!) -> OSStatus

    Objective C

    OSStatus CMBufferQueueEnqueue ( CMBufferQueueRef queue, CMBufferRef buf );

    Параметры

    queue

    CMBufferQueue на котором можно ставить в очередь буфер.

    buf

    Буфер для постановки в очередь.

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

    Код результата. Посмотрите Коды Результата.

    Обсуждение

    Буфер сохраняется очередью, таким образом, клиент может безопасно выпустить буфер, если это не имеет никакого дальнейшего использования для него. Если сравнить обратным вызовом является не-NULL, этот API выполняет вид вставки с помощью то, которые сравнивают работу. Если обратным вызовом проверки является не-NULL, это вызовы API это; если это возвратит ненулевой OSStatus, то буфер не будет ставиться в очередь, и этот API возвратит ту же ошибку OSStatus.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Устанавливает триггер на a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueInstallTrigger(_ queue: CMBufferQueue!, _ triggerCallback: CMBufferQueueTriggerCallback, _ triggerRefcon: UnsafeMutablePointer<Void>, _ triggerCondition: CMBufferQueueTriggerCondition, _ triggerTime: CMTime, _ triggerTokenOut: UnsafeMutablePointer<CMBufferQueueTriggerToken>) -> OSStatus

    Objective C

    OSStatus CMBufferQueueInstallTrigger ( CMBufferQueueRef queue, CMBufferQueueTriggerCallback triggerCallback, void *triggerRefcon, CMBufferQueueTriggerCondition triggerCondition, CMTime triggerTime, CMBufferQueueTriggerToken *triggerTokenOut );

    Параметры

    queue

    CMBufferQueue на котором устанавливается триггер.

    triggerCallback

    Обратный вызов, который вызовут, когда триггерное условие становится истиной. Может быть NULL, если клиент намеревается только явно протестировать условие. если triggerTokenOut NULL этот параметр не может быть NULL иначе триггер был бы бессмыслен.

    triggerRefcon

    Refcon, который будет передан triggerCallback. Может быть NULL если обратный вызов не нужен в нем или самостоятельно NULL.

    triggerCondition

    Условие, которое будет протестировано при оценке триггера.

    triggerTime

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

    triggerTokenOut

    Адрес, где будет записан создаваемый триггерный маркер. Может быть NULL, если у клиента нет потребности явно протестировать или удалить триггер. Не может быть NULL когда triggerCallback NULL, так как триггер был бы бессмыслен тогда.

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

    Код результата. Посмотрите Коды Результата

    Обсуждение

    Возвращенный триггерный маркер может быть передан CMBufferQueueTestTrigger и CMBufferQueueRemoveTrigger. triggerTokenOut параметр может быть NULL (клиент не должен протестировать или удалить триггер), и triggerCallback параметр может быть NULL (клиент не нуждается в обратных вызовах, а скорее явно протестирует триггер). Одним из этих двух параметров должен быть не-NULL, однако, так как непригодный для тестирования триггер, не выполняющий обратный вызов, бессмыслен. Если триггерное условие уже является истиной, CMBufferQueueInstallTrigger вызовет triggerCallback и сначала запишет триггерный маркер в *triggerTokenOut.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Устанавливает триггер на a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueInstallTriggerWithIntegerThreshold(_ queue: CMBufferQueue!, _ triggerCallback: CMBufferQueueTriggerCallback, _ triggerRefcon: UnsafeMutablePointer<Void>, _ triggerCondition: CMBufferQueueTriggerCondition, _ triggerThreshold: CMItemCount, _ triggerTokenOut: UnsafeMutablePointer<CMBufferQueueTriggerToken>) -> OSStatus

    Objective C

    OSStatus CMBufferQueueInstallTriggerWithIntegerThreshold ( CMBufferQueueRef queue, CMBufferQueueTriggerCallback triggerCallback, void *triggerRefcon, CMBufferQueueTriggerCondition triggerCondition, CMItemCount triggerThreshold, CMBufferQueueTriggerToken *triggerTokenOut );

    Параметры

    queue

    CMBufferQueue на котором устанавливается триггер.

    triggerCallback

    Обратный вызов, который вызовут, когда триггерное условие становится истиной. Может быть NULL, если клиент намеревается только явно протестировать условие. Не может быть NULL если бы triggerTokenOut является NULL, иначе триггер был бы бессмыслен.

    triggerRefcon

    Refcon, который будет передан triggerCallback. Может быть NULL если обратный вызов не нужен в нем или самостоятельно NULL

    triggerCondition

    Условие, которое будет протестировано при оценке триггера. Должно быть допустимое условие для целочисленного порога.

    triggerThreshold

    Целочисленное значение для сравнения с при оценке триггера.

    triggerTokenOut

    Адрес, где будет записан создаваемый триггерный маркер. Может быть NULL, если у клиента нет потребности явно протестировать или удалить триггер. Не может быть NULL если бы triggerCallback является NULL, так как триггер был бы бессмыслен тогда.

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

    Код результата. Посмотрите Коды Результата

    Обсуждение

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

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Знаки a CMBufferQueue с EndOfData.

    Объявление

    Swift

    func CMBufferQueueMarkEndOfData(_ queue: CMBufferQueue!) -> OSStatus

    Objective C

    OSStatus CMBufferQueueMarkEndOfData ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть отмеченным.

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

    Код результата. Посмотрите Коды Результата

    Обсуждение

    Все последующие Ставят в очередь, будет отклонен до CMBufferQueueReset вызывается. Последующие Двухсторонние очереди успешно выполнятся, пока очередь не пуста.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Удаляет ранее установленный триггер из a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueRemoveTrigger(_ queue: CMBufferQueue!, _ triggerToken: CMBufferQueueTriggerToken) -> OSStatus

    Objective C

    OSStatus CMBufferQueueRemoveTrigger ( CMBufferQueueRef queue, CMBufferQueueTriggerToken triggerToken );

    Параметры

    queue

    CMBufferQueue из которого должен быть удален триггер.

    triggerToken

    Триггер для удаления из очереди.

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

    Код результата. Посмотрите Коды Результата

    Обсуждение

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

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Сброс a CMBufferQueue. Освобождает очередь и очищает любую метку EndOfData.

    Объявление

    Swift

    func CMBufferQueueReset(_ queue: CMBufferQueue!) -> OSStatus

    Objective C

    OSStatus CMBufferQueueReset ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть сброшенным.

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

    Код результата. Посмотрите Коды Результата.

    Обсуждение

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

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

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

    Объявление

    Swift

    func CMBufferQueueResetWithCallback(_ queue: CMBufferQueue!, _ callback: CFunctionPointer<((CMBuffer!, UnsafeMutablePointer<Void>) -> Void)>, _ refcon: UnsafeMutablePointer<Void>) -> OSStatus

    Objective C

    OSStatus CMBufferQueueResetWithCallback ( CMBufferQueueRef queue, void (*callback)( CMBufferRef buffer, void *refcon), void *refcon );

    Параметры

    queue

    CMBufferQueue быть сброшенным, которое может содержать многократные буферы.

    callback

    Функция, которую вызовут для каждого буфера. Обратный вызов не должен выполнять другие вызовы буферной очереди.

    refcon

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

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

    Код результата. Посмотрите Коды Результата.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

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

    Объявление

    Swift

    func CMBufferQueueSetValidationCallback(_ queue: CMBufferQueue!, _ validationCallback: CMBufferValidationCallback, _ validationRefCon: UnsafeMutablePointer<Void>) -> OSStatus

    Objective C

    OSStatus CMBufferQueueSetValidationCallback ( CMBufferQueueRef queue, CMBufferValidationCallback validationCallback, void *validationRefCon );

    Параметры

    queue

    CMBufferQueue это будет использовать обратный вызов проверки.

    validationCallback

    Обратный вызов, который проверит каждый ставивший в очередь буфер.

    validationRefCon

    Контекст refcon для обратного вызова проверки.

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

    Код результата. Посмотрите Коды Результата.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвраты, действительно ли a CMBufferQueue был отмечен с EndOfData.

    Объявление

    Swift

    func CMBufferQueueContainsEndOfData(_ queue: CMBufferQueue!) -> Boolean

    Objective C

    Boolean CMBufferQueueContainsEndOfData ( CMBufferQueueRef queue );

    Параметры

    queue

    Опрашиваемый CMBufferQueue..

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

    Булевская переменная, указывающая, ли CMBufferQueue был отмечен с EndOfData.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвраты, действительно ли a CMBufferQueue был отмечен с EndOfData и теперь пуст.

    Объявление

    Swift

    func CMBufferQueueIsAtEndOfData(_ queue: CMBufferQueue!) -> Boolean

    Objective C

    Boolean CMBufferQueueIsAtEndOfData ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Булевская переменная, указывающая, ли CMBufferQueue был отмечен с EndOfData и теперь пуст. Если очередь NULL, true возвращается (очередь NULL считается пустой, и постоянно в EndOfData).

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвраты, действительно ли a CMBufferQueue пусто.

    Объявление

    Swift

    func CMBufferQueueIsEmpty(_ queue: CMBufferQueue!) -> Boolean

    Objective C

    Boolean CMBufferQueueIsEmpty ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Булевская переменная, указывающая, ли CMBufferQueue пусто. Если очередь NULL, true возвращается.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Тесты, является ли триггерное условие истиной fot данный CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueTestTrigger(_ queue: CMBufferQueue!, _ triggerToken: CMBufferQueueTriggerToken) -> Boolean

    Objective C

    Boolean CMBufferQueueTestTrigger ( CMBufferQueueRef queue, CMBufferQueueTriggerToken triggerToken );

    Параметры

    queue

    CMBufferQueue на котором тестируется триггер.

    triggerToken

    Триггер для тестирования.

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

    Булевская переменная, указывающая, является ли триггерное условие Истиной.

    Обсуждение

    CMBufferQueueTestTrigger всегда возвращает текущий статус условия. Когда условие пойдет от лжи до истины, триггерный обратный вызов только вызовут. triggerToken должен быть тот, установленный на этой очереди.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает число буферов в очереди.

    Объявление

    Swift

    func CMBufferQueueGetBufferCount(_ queue: CMBufferQueue!) -> CMItemCount

    Objective C

    CMItemCount CMBufferQueueGetBufferCount ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Возвращает число буферов в CMBufferQueue.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает самую большую метку времени представления a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetMaxPresentationTimeStamp(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetMaxPresentationTimeStamp ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Самая большая метка времени представления опрошенного CMBufferQueue.

    Обсуждение

    Если getPresentationTimeStamp обратный вызов NULL, kCMTimeInvalid будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает указатель на структуру обратного вызова для несортированного CMSampleBuffers, если как удобство.

    Объявление

    Swift

    func CMBufferQueueGetCallbacksForUnsortedSampleBuffers() -> UnsafePointer<CMBufferCallbacks>

    Objective C

    const CMBufferCallbacks * CMBufferQueueGetCallbacksForUnsortedSampleBuffers ( void );

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает продолжительность a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetDuration(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetDuration ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Сумма возвратов всех отдельных буферных продолжительностей в CMBufferQueue.

    Обсуждение

    Продолжительность CMBufferQueue сумма всех отдельных буферных продолжительностей, как сообщается getDuration обратный вызов (предоставленный для Creating CMBufferQueue). Если нет никаких буферов в очереди, kCMTimeZero будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает самую большую метку времени представления конца a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetEndPresentationTimeStamp(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetEndPresentationTimeStamp ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Возвращает сумму PresentationTimeStamp и отдельные буферные продолжительности.

    Обсуждение

    Это - максимальное время окончания (PTS + продолжительность) буферов в очереди. Если getPresentationTimeStamp обратный вызов NULL, kCMTimeInvalid будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает метку времени декодирования первого буфера в a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetFirstDecodeTimeStamp(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetFirstDecodeTimeStamp ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Метка времени декодирования первого буфера в опрошенном CMBufferQueue.

    Обсуждение

    Этот API, более быстрая альтернатива CMBufferQueueIsEmpty, если Ваша очередь находится в порядке декодирования, но только дает тот же ответ. Если getDecodeTimeStamp обратный вызов NULL, kCMTimeInvalid будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает самую раннюю метку времени декодирования a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetMinDecodeTimeStamp(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetMinDecodeTimeStamp ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Самая ранняя метка времени декодирования опрошенного CMBufferQueue.

    Обсуждение

    Поиск самого раннего декодирования timstamp выполняется в этом API. Если Вы знаете, что Ваша очередь находится в порядке декодирования, Accessing CMBufferQueue более быстрая альтернатива. Если getDecodeTimeStamp обратный вызов NULL, kCMTimeInvalid будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает метку времени представления первого буфера в a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetFirstPresentationTimeStamp(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetFirstPresentationTimeStamp ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Метка времени представления первого буфера в опрошенном CMBufferQueue.

    Обсуждение

    Этот API, более быстрая альтернатива CMBufferQueueTestTrigger, но только работы, если Вы знаете свою очередь, сортируются меткой времени представления. Если getPresentationTimeStamp обратный вызов NULL, kCMTimeInvalid будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает буфер рядом с двухсторонней очередью от a CMBufferQueue но листы это в очереди.

    Объявление

    Swift

    func CMBufferQueueGetHead(_ queue: CMBufferQueue!) -> Unmanaged<CMBuffer>!

    Objective C

    CMBufferRef CMBufferQueueGetHead ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue, от которого можно получить буфер.

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

    Буфер. Будет NULL если очередь пуста.

    Обсуждение

    Это следует, Базовая Основа «Получают» семантику - это не сохраняет возвращенный буфер. Обратите внимание на то, что с очередями не-FIFO не гарантируется, что следующая двухсторонняя очередь возвратит этот определенный буфер (если вмешательство Будет Ставить в очередь, добавляет буфер, который исключит из очереди затем).

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Получает самую раннюю метку времени представления a CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetMinPresentationTimeStamp(_ queue: CMBufferQueue!) -> CMTime

    Objective C

    CMTime CMBufferQueueGetMinPresentationTimeStamp ( CMBufferQueueRef queue );

    Параметры

    queue

    CMBufferQueue быть опрошенным.

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

    Самая ранняя метка времени представления опрошенного CMBufferQueue.

    Обсуждение

    Поиск самого раннего представления timstamp выполняется в этом API. Если Вы знаете, что Ваша очередь сортируется временем представления, CMBufferQueueGetBufferCount более быстрая альтернатива. Если getPresentationTimeStamp обратный вызов NULL, kCMTimeInvalid будет возвращен.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвраты CFTypeID из объектов CMBufferQueue.

    Объявление

    Swift

    func CMBufferQueueGetTypeID() -> CFTypeID

    Objective C

    CFTypeID CMBufferQueueGetTypeID ( void );

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

    CFTypeID CMBufferQueue объекты.

    Обсуждение

    Можно проверить если a CFTypeRef объект фактически a CMBufferQueue путем сравнения CFGetTypeID(объект) с CMBufferQueueGetTypeID().

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

Типы данных

Непрозрачные типы

  • Ссылка на a CMBuffer объект.

    Объявление

    Swift

    typealias CMBufferRef = CMBuffer

    Objective C

    typedef CFTypeRef CMBufferRef;

    Обсуждение

    A CMBuffer может быть экземпляр любого Базового типа Основы, целого a getDuration обратный вызов может быть предоставлен. Обычно используемые типы CMSampleBuffer и CVPixelBuffer.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Ссылка на a CMBufferQueueRef объект.

    Объявление

    Swift

    typealias CMBufferQueueRef = CMBufferQueue

    Objective C

    typedef struct opaqueCMBufferQueue *CMBufferQueueRef;

    Обсуждение

    A CMBufferQueue Базовый объект Основы, реализующий очередь синхронизированных буферов.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

Обратные вызовы

  • Обратные вызовы обеспечили для Creating CMBufferQueue, для использования очередью в опросе буферов, которые это будет видеть.

    Объявление

    Swift

    struct CMBufferCallbacks { var version: UInt32 var refcon: UnsafeMutablePointer<Void> var getDecodeTimeStamp: CMBufferGetTimeCallback var getPresentationTimeStamp: CMBufferGetTimeCallback var getDuration: CMBufferGetTimeCallback var isDataReady: CMBufferGetBooleanCallback var compare: CMBufferCompareCallback var dataBecameReadyNotification: Unmanaged<CFString>! var getSize: CMBufferGetSizeCallback }

    Objective C

    typedef struct { uint32_t version; void *refcon; CMBufferGetTimeCallback getDecodeTimeStamp; CMBufferGetTimeCallback getPresentationTimeStamp; CMBufferGetTimeCallback getDuration; CMBufferGetBooleanCallback isDataReady; CMBufferCompareCallback compare; CFStringRef dataBecameReadyNotification; } CMBufferCallbacks;

    Обсуждение

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

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

    Продолжительности должны всегда быть положительными.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

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

    Объявление

    Swift

    typealias CMBufferValidationCallback = CFunctionPointer<((CMBufferQueue!, CMBuffer!, UnsafeMutablePointer<Void>) -> OSStatus)>

    Objective C

    typedef OSStatus (*CMBufferValidationCallback)( CMBufferQueueRef queue, CMBufferRef buf, void *validationRefCon );

    Обсуждение

    CMBufferQueueEnqueue вызовет эту функцию для проверки буферов.

    Возвратиться noErr если буфер находится в допустимом состоянии для добавления.

    Возвратите ненулевой код ошибки, если должен быть отклонен буфер; CMBufferQueueEnqueue возвратит эту ошибку вызывающей стороне. Если у Вас нет более дескриптивного кода ошибки, использовать kCMBufferQueueError_InvalidBuffer.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Обратный вызов, возвращающий a CMTime от a CMBuffer.

    Объявление

    Swift

    typealias CMBufferGetTimeCallback = CFunctionPointer<((CMBuffer!, UnsafeMutablePointer<Void>) -> CMTime)>

    Objective C

    typedef CMTime (*CMBufferGetTimeCallback) ( CMBufferRef buf, void *refcon );

    Обсуждение

    Существует три обратных вызова этого типа, для которого можно быть предоставлены Creating CMBufferQueue: (требуемый) getDuration, getDecodeTimeStamp (дополнительный), и (дополнительный) getPresentationTimeStamp.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Обратный вызов, возвращающий булево значение из a CMBuffer.

    Объявление

    Swift

    typealias CMBufferGetBooleanCallback = CFunctionPointer<((CMBuffer!, UnsafeMutablePointer<Void>) -> Boolean)>

    Objective C

    typedef Boolean (*CMBufferGetBooleanCallback) ( CMBufferRef buf, void *refcon );

    Обсуждение

    Существует один обратный вызов этого типа, для которого можно быть предоставлены Creating CMBufferQueue: isDataReady (дополнительный).

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Обратный вызов, сравнивающий тот CMBuffer с другим.

    Объявление

    Swift

    typealias CMBufferCompareCallback = CFunctionPointer<((CMBuffer!, CMBuffer!, UnsafeMutablePointer<Void>) -> CFComparisonResult)>

    Objective C

    typedef CFComparisonResult (*CMBufferCompareCallback) ( CMBufferRef buf1, CMBufferRef buf2, void *refcon );

    Обсуждение

    Можно использовать a CFComparatorFunction как обратный вызов.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

Триггеры

Триггер является функцией обратного вызова, которую очередь вызывает каждый раз, когда условие инициирования становится истиной. Триггерные условия включают вещи как продолжительность очереди, число буферов очереди, и т.д. Триггерные обратные вызовы вызывают из подпрограмм CMBufferQueue, изменяющих триггерное условие (например, Ставьте в очередь/Исключайте из очереди/Сбрасывайте).

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

Можно установить столько триггеров, сколько Вам нравится. Порядок, в котором их вызывают, недетерминирован.

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

  • Ссылка на a CMBufferQueueTriggerToken объект.

    Объявление

    Swift

    typealias CMBufferQueueTriggerToken = COpaquePointer

    Objective C

    typedef struct opaqueCMBufferQueueTriggerToken *CMBufferQueueTriggerToken;

    Обсуждение

    CMBufferQueueTriggerToken возвращается из CMBufferQueueInstallTrigger, таким образом, можно удалить его позже при необходимости. Когда очередь будет завершена, триггеры будут автоматически удалены. Обратите внимание на то, что, если больше чем один модуль имеет доступ к очереди, может быть трудно для отдельного модуля знать, когда очередь завершена, так как другие модули могут сохранить его. Для обращения этого беспокойства модули должны удалить свои триггеры, прежде чем они сами будут завершены.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Обратный вызов, который вызовут, когда a CMBufferQueue триггерное условие становится истиной.

    Объявление

    Swift

    typealias CMBufferQueueTriggerCallback = CFunctionPointer<((UnsafeMutablePointer<Void>, CMBufferQueueTriggerToken) -> Void)>

    Objective C

    typedef void (*CMBufferQueueTriggerCallback) ( void *triggerRefcon, CMBufferQueueTriggerToken triggerToken );

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

  • Тип для указания условий, которые будут связаны с a CMBufferQueueTrigger.

    Объявление

    Swift

    typealias CMBufferQueueTriggerCondition = Int32

    Objective C

    typedef int32_t CMBufferQueueTriggerCondition;

    Обсуждение

    Для возможных значений посмотрите Триггерные Условия.

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

    Objective C

    @import CoreMedia;

    Swift

    import CoreMedia

    Доступность

    Доступный в OS X v10.7 и позже.

Константы

  • Условия, которые будут связаны с a CMBufferQueueTrigger.

    Объявление

    Swift

    var kCMBufferQueueTrigger_WhenDurationBecomesLessThan: Int { get } var kCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualTo: Int { get } var kCMBufferQueueTrigger_WhenDurationBecomesGreaterThan: Int { get } var kCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualTo: Int { get } var kCMBufferQueueTrigger_WhenMinPresentationTimeStampChanges: Int { get } var kCMBufferQueueTrigger_WhenMaxPresentationTimeStampChanges: Int { get } var kCMBufferQueueTrigger_WhenDataBecomesReady: Int { get } var kCMBufferQueueTrigger_WhenEndOfDataReached: Int { get } var kCMBufferQueueTrigger_WhenReset: Int { get } var kCMBufferQueueTrigger_WhenBufferCountBecomesLessThan: Int { get } var kCMBufferQueueTrigger_WhenBufferCountBecomesGreaterThan: Int { get }

    Objective C

    enum { kCMBufferQueueTrigger_WhenDurationBecomesLessThan = 1, kCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualTo = 2, kCMBufferQueueTrigger_WhenDurationBecomesGreaterThan = 3, kCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualTo = 4, kCMBufferQueueTrigger_WhenMinPresentationTimeStampChanges = 5, kCMBufferQueueTrigger_WhenMaxPresentationTimeStampChanges = 6, kCMBufferQueueTrigger_WhenDataBecomesReady = 7, kCMBufferQueueTrigger_WhenEndOfDataReached = 8, kCMBufferQueueTrigger_WhenReset = 9, kCMBufferQueueTrigger_WhenBufferCountBecomesLessThan = 10, kCMBufferQueueTrigger_WhenBufferCountBecomesGreaterThan = 11, };

    Константы

    • kCMBufferQueueTrigger_WhenDurationBecomesLessThan

      kCMBufferQueueTrigger_WhenDurationBecomesLessThan

      Когда продолжительность очереди становится меньше, чем указанная продолжительность, триггер стреляет.

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualTo

      kCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualTo

      Когда продолжительность очереди становится меньше чем или равной указанной продолжительности, триггер стреляет.

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenDurationBecomesGreaterThan

      kCMBufferQueueTrigger_WhenDurationBecomesGreaterThan

      Когда продолжительность очереди становится больше, чем указанная продолжительность, триггер стреляет.

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualTo

      kCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualTo

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

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenMinPresentationTimeStampChanges

      kCMBufferQueueTrigger_WhenMinPresentationTimeStampChanges

      Триггер стреляет, когда минимальная метка времени представления изменяется (triggerDuration, проигнорирован).

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenMaxPresentationTimeStampChanges

      kCMBufferQueueTrigger_WhenMaxPresentationTimeStampChanges

      Триггер стреляет, когда максимальная метка времени представления изменяется (triggerDuration, проигнорирован).

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenDataBecomesReady

      kCMBufferQueueTrigger_WhenDataBecomesReady

      Триггер стреляет, когда затем dequeueable буфер становится готовым (т.е. CMBufferQueueDequeueIfDataReadyAndRetain теперь успешно выполнится). (triggerDuration проигнорирован.)

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenEndOfDataReached

      kCMBufferQueueTrigger_WhenEndOfDataReached

      Когда условие CMBufferQueueIsAtEndOfData становится истиной, триггер стреляет. (triggerDuration проигнорирован.)

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenReset

      kCMBufferQueueTrigger_WhenReset

      Триггер стреляет когда вызванный CMBufferQueueReset. (triggerDuration проигнорирован.)

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenBufferCountBecomesLessThan

      kCMBufferQueueTrigger_WhenBufferCountBecomesLessThan

      Когда число буферов становится меньше, чем указанное пороговое число, триггер стреляет.

      Доступный в OS X v10.7 и позже.

    • kCMBufferQueueTrigger_WhenBufferCountBecomesGreaterThan

      kCMBufferQueueTrigger_WhenBufferCountBecomesGreaterThan

      Когда число буферов становится> указанное пороговое число, триггер стреляет.

      Доступный в OS X v10.7 и позже.

Коды результата

Эта таблица приводит коды результата, определенные для CMBufferQueue API’s.

Код результата

Значение

Описание

kCMBufferQueueNoErr

0

Никакая ошибка.

kCMBufferQueueError_AllocationFailed

- 12760

Указывает то отказавшее выделение.

kCMBufferQueueError_RequiredParameterMissing

- 12761

Указывает, что NULL или 0 был передан для обязательного параметра.

kCMBufferQueueError_InvalidCMBufferCallbacksStruct

- 12762

Указывает, что Версия не была 0, или getDuration был NULL.

kCMBufferQueueError_EnqueueAfterEndOfData

- 12763

Указывает, что CMBufferQueueEnqueue был опробован после того, как CMBufferQueueMarkEndOfData вызвали (без вызова к промежуточному CMBufferQueueReset).

kCMBufferQueueError_QueueIsFull

- 12764

Указывает, что CMBufferQueueEnqueue был опробован на полной очереди.

kCMBufferQueueError_BadTriggerDuration

- 12765

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

Триггерная продолжительность должна быть числовой, и эпоха должна быть нулем (ненулевая эпоха только для меток времени, не продолжительностей).

kCMBufferQueueError_CannotModifyQueueFromTriggerCallback

- 12766

Указывает, что была предпринята попытка для изменения очереди от триггерного обратного вызова.

kCMBufferQueueError_InvalidTriggerCondition

- 12767

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

kCMBufferQueueError_InvalidTriggerToken

- 12768

Указывает, что триггерный маркер не является триггером, в настоящее время связывающимся с этой очередью.

kCMBufferQueueError_InvalidBuffer

- 12769

Указывает, что буфер был отклонен CMBufferValidationCallback.