Ссылка 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>?>) -> OSStatusObjective 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>) -> OSStatusObjective C
OSStatus CMBufferQueueCallForEachBuffer ( CMBufferQueueRef queue, OSStatus (*callback)( CMBufferRef buffer, void *refcon), void *refcon );Параметры
queueCMBufferQueueэто может содержать многократные буферы.refconСсылочная константа, предоставленная функции обратного вызова.
callbackФункция, которую вызовут для каждого буфера. Обратный вызов может изменить буферные присоединения, но не должен изменять влияющие на вид свойства (например, метки времени). Обратный вызов не должен выполнять другие вызовы буферной очереди.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если функция обратного вызова возвратит ошибку, то итерация сразу остановится, и ошибка будет возвращена.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Исключает буфер из очереди от a
CMBufferQueue.Объявление
Objective C
CMBufferRef CMBufferQueueDequeueAndRetain ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueот которого можно исключить буфер из очереди.Возвращаемое значение
Исключенный из очереди буфер. Будет
NULLесли очередь пуста.Обсуждение
Буфер выпущен очередью, но это также сохраняется для клиента. Буферное владение, таким образом, передается от очереди клиенту. Клиент не должен сохранять буфер, но ответственен для выпуска его, когда сделано с ним.
Оператор импорта
Objective C
@import CoreMedia;Доступность
Доступный в OS X v10.7 и позже.
-
Исключает буфер из очереди от a
CMBufferQueueесли это готово.Объявление
Objective C
CMBufferRef CMBufferQueueDequeueIfDataReadyAndRetain ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueот которого можно исключить буфер из очереди (если буфер готов).Возвращаемое значение
Исключенный из очереди буфер. Будет
NULLесли очередь пуста, или если буфер, который будет исключен из очереди, еще не готов.Обсуждение
Буфер выпущен очередью, но это также сохраняется для клиента. Буферное владение, таким образом, передается от очереди клиенту. Клиент не должен сохранять буфер, но ответственен для выпуска его, когда сделано с ним.
Оператор импорта
Objective C
@import CoreMedia;Доступность
Доступный в OS X v10.7 и позже.
-
Ставит в очередь буфер на a
CMBufferQueue.Объявление
Swift
func CMBufferQueueEnqueue(_queue: CMBufferQueue!, _buf: CMBuffer!) -> OSStatusObjective C
OSStatus CMBufferQueueEnqueue ( CMBufferQueueRef queue, CMBufferRef buf );Параметры
queueCMBufferQueueна котором можно ставить в очередь буфер.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>) -> OSStatusObjective C
OSStatus CMBufferQueueInstallTrigger ( CMBufferQueueRef queue, CMBufferQueueTriggerCallback triggerCallback, void *triggerRefcon, CMBufferQueueTriggerCondition triggerCondition, CMTime triggerTime, CMBufferQueueTriggerToken *triggerTokenOut );Параметры
queueCMBufferQueueна котором устанавливается триггер.triggerCallbackОбратный вызов, который вызовут, когда триггерное условие становится истиной. Может быть
NULL, если клиент намеревается только явно протестировать условие. еслиtriggerTokenOutNULLэтот параметр не может бытьNULLиначе триггер был бы бессмыслен.triggerRefconRefcon, который будет передан triggerCallback. Может быть
NULLесли обратный вызов не нужен в нем или самостоятельноNULL.triggerConditionУсловие, которое будет протестировано при оценке триггера.
triggerTimeВременная стоимость для сравнения с при оценке триггера. Должно быть числовым (т.е. весьма допустимым, неопределенным, или бесконечным), за исключением определенных триггерных условий, который игнорирует его (например, kCMBufferQueueTrigger_WhenMinPresentationTimeStampChanges).
triggerTokenOutАдрес, где будет записан создаваемый триггерный маркер. Может быть
NULL, если у клиента нет потребности явно протестировать или удалить триггер. Не может бытьNULLкогда triggerCallbackNULL, так как триггер был бы бессмыслен тогда.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Возвращенный триггерный маркер может быть передан
CMBufferQueueTestTriggerиCMBufferQueueRemoveTrigger.triggerTokenOutпараметр может бытьNULL(клиент не должен протестировать или удалить триггер), иtriggerCallbackпараметр может бытьNULL(клиент не нуждается в обратных вызовах, а скорее явно протестирует триггер). Одним из этих двух параметров должен быть не-NULL, однако, так как непригодный для тестирования триггер, не выполняющий обратный вызов, бессмыслен. Если триггерное условие уже является истиной,CMBufferQueueInstallTriggerвызовет triggerCallback и сначала запишет триггерный маркер в *triggerTokenOut.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
CMBufferQueueInstallTriggerWithIntegerThreshold (_: _: _: _: _: _:) CMBufferQueueInstallTriggerWithIntegerThresholdУстанавливает триггер на a
CMBufferQueue.Объявление
Swift
func CMBufferQueueInstallTriggerWithIntegerThreshold(_queue: CMBufferQueue!, _triggerCallback: CMBufferQueueTriggerCallback, _triggerRefcon: UnsafeMutablePointer<Void>, _triggerCondition: CMBufferQueueTriggerCondition, _triggerThreshold: CMItemCount, _triggerTokenOut: UnsafeMutablePointer<CMBufferQueueTriggerToken>) -> OSStatusObjective C
OSStatus CMBufferQueueInstallTriggerWithIntegerThreshold ( CMBufferQueueRef queue, CMBufferQueueTriggerCallback triggerCallback, void *triggerRefcon, CMBufferQueueTriggerCondition triggerCondition, CMItemCount triggerThreshold, CMBufferQueueTriggerToken *triggerTokenOut );Параметры
queueCMBufferQueueна котором устанавливается триггер.triggerCallbackОбратный вызов, который вызовут, когда триггерное условие становится истиной. Может быть
NULL, если клиент намеревается только явно протестировать условие. Не может бытьNULLесли бы triggerTokenOut является NULL, иначе триггер был бы бессмыслен.triggerRefconRefcon, который будет передан triggerCallback. Может быть
NULLесли обратный вызов не нужен в нем или самостоятельноNULLtriggerConditionУсловие, которое будет протестировано при оценке триггера. Должно быть допустимое условие для целочисленного порога.
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!) -> OSStatusObjective C
OSStatus CMBufferQueueMarkEndOfData ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть отмеченным.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Все последующие Ставят в очередь, будет отклонен до
CMBufferQueueResetвызывается. Последующие Двухсторонние очереди успешно выполнятся, пока очередь не пуста.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Удаляет ранее установленный триггер из a
CMBufferQueue.Объявление
Swift
func CMBufferQueueRemoveTrigger(_queue: CMBufferQueue!, _triggerToken: CMBufferQueueTriggerToken) -> OSStatusObjective C
OSStatus CMBufferQueueRemoveTrigger ( CMBufferQueueRef queue, CMBufferQueueTriggerToken triggerToken );Параметры
queueCMBufferQueueиз которого должен быть удален триггер.triggerTokenТриггер для удаления из очереди.
Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Когда очередь будет завершена, триггеры будут автоматически удалены. Однако, если больше чем один модуль имеет доступ к очереди, может быть трудно для отдельного модуля знать, когда очередь завершена, так как другие модули могут сохранить его. Для обращения этого беспокойства модули должны удалить свои триггеры, прежде чем они сами будут завершены.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Сброс a
CMBufferQueue. Освобождает очередь и очищает любую метку EndOfData.Объявление
Swift
func CMBufferQueueReset(_queue: CMBufferQueue!) -> OSStatusObjective C
OSStatus CMBufferQueueReset ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть сброшенным.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Все буферы в очереди выпущены. Триггеры не удаляют, однако, и вызовут соответственно, когда продолжительность очереди переходит к нулю.
Оператор импорта
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>) -> OSStatusObjective C
OSStatus CMBufferQueueResetWithCallback ( CMBufferQueueRef queue, void (*callback)( CMBufferRef buffer, void *refcon), void *refcon );Параметры
queueCMBufferQueueбыть сброшенным, которое может содержать многократные буферы.callbackФункция, которую вызовут для каждого буфера. Обратный вызов не должен выполнять другие вызовы буферной очереди.
refconСсылочная константа, которая будет передана функции обратного вызова.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Функциональный обратный вызов, устанавливающий функцию это
CMBufferQueueEnqueueвызовет для проверки буферов прежде, чем добавить их к очереди.Объявление
Swift
func CMBufferQueueSetValidationCallback(_queue: CMBufferQueue!, _validationCallback: CMBufferValidationCallback, _validationRefCon: UnsafeMutablePointer<Void>) -> OSStatusObjective C
OSStatus CMBufferQueueSetValidationCallback ( CMBufferQueueRef queue, CMBufferValidationCallback validationCallback, void *validationRefCon );Параметры
queueCMBufferQueueэто будет использовать обратный вызов проверки.validationCallbackОбратный вызов, который проверит каждый ставивший в очередь буфер.
validationRefConКонтекст refcon для обратного вызова проверки.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Возвраты, действительно ли a
CMBufferQueueбыл отмечен сEndOfData.Объявление
Swift
func CMBufferQueueContainsEndOfData(_queue: CMBufferQueue!) -> BooleanObjective 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!) -> BooleanObjective C
Boolean CMBufferQueueIsAtEndOfData ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Булевская переменная, указывающая, ли
CMBufferQueueбыл отмечен с EndOfData и теперь пуст. Если очередьNULL, true возвращается (очередь NULL считается пустой, и постоянно в EndOfData).Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Возвраты, действительно ли a
CMBufferQueueпусто.Объявление
Swift
func CMBufferQueueIsEmpty(_queue: CMBufferQueue!) -> BooleanObjective C
Boolean CMBufferQueueIsEmpty ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Булевская переменная, указывающая, ли
CMBufferQueueпусто. Если очередьNULL, true возвращается.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Тесты, является ли триггерное условие истиной fot данный
CMBufferQueue.Объявление
Swift
func CMBufferQueueTestTrigger(_queue: CMBufferQueue!, _triggerToken: CMBufferQueueTriggerToken) -> BooleanObjective C
Boolean CMBufferQueueTestTrigger ( CMBufferQueueRef queue, CMBufferQueueTriggerToken triggerToken );Параметры
queueCMBufferQueueна котором тестируется триггер.triggerTokenТриггер для тестирования.
Возвращаемое значение
Булевская переменная, указывающая, является ли триггерное условие Истиной.
Обсуждение
CMBufferQueueTestTriggerвсегда возвращает текущий статус условия. Когда условие пойдет от лжи до истины, триггерный обратный вызов только вызовут.triggerTokenдолжен быть тот, установленный на этой очереди.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Получает число буферов в очереди.
Объявление
Swift
func CMBufferQueueGetBufferCount(_queue: CMBufferQueue!) -> CMItemCountObjective C
CMItemCount CMBufferQueueGetBufferCount ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Возвращает число буферов в
CMBufferQueue.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Получает самую большую метку времени представления a
CMBufferQueue.Объявление
Swift
func CMBufferQueueGetMaxPresentationTimeStamp(_queue: CMBufferQueue!) -> CMTimeObjective C
CMTime CMBufferQueueGetMaxPresentationTimeStamp ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Самая большая метка времени представления опрошенного
CMBufferQueue.Обсуждение
Если
getPresentationTimeStampобратный вызовNULL,kCMTimeInvalidбудет возвращен.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
CMBufferQueueGetCallbacksForUnsortedSampleBuffers () CMBufferQueueGetCallbacksForUnsortedSampleBuffersВозвращает указатель на структуру обратного вызова для несортированного
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!) -> CMTimeObjective C
CMTime CMBufferQueueGetDuration ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Сумма возвратов всех отдельных буферных продолжительностей в
CMBufferQueue.Обсуждение
Продолжительность
CMBufferQueueсумма всех отдельных буферных продолжительностей, как сообщаетсяgetDurationобратный вызов (предоставленный дляCreating CMBufferQueue). Если нет никаких буферов в очереди,kCMTimeZeroбудет возвращен.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Получает самую большую метку времени представления конца a
CMBufferQueue.Объявление
Swift
func CMBufferQueueGetEndPresentationTimeStamp(_queue: CMBufferQueue!) -> CMTimeObjective C
CMTime CMBufferQueueGetEndPresentationTimeStamp ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Возвращает сумму
PresentationTimeStampи отдельные буферные продолжительности.Обсуждение
Это - максимальное время окончания (PTS + продолжительность) буферов в очереди. Если
getPresentationTimeStampобратный вызовNULL,kCMTimeInvalidбудет возвращен.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Получает метку времени декодирования первого буфера в a
CMBufferQueue.Объявление
Swift
func CMBufferQueueGetFirstDecodeTimeStamp(_queue: CMBufferQueue!) -> CMTimeObjective C
CMTime CMBufferQueueGetFirstDecodeTimeStamp ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Метка времени декодирования первого буфера в опрошенном
CMBufferQueue.Обсуждение
Этот API, более быстрая альтернатива
CMBufferQueueIsEmpty, если Ваша очередь находится в порядке декодирования, но только дает тот же ответ. ЕслиgetDecodeTimeStampобратный вызовNULL,kCMTimeInvalidбудет возвращен.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Получает самую раннюю метку времени декодирования a
CMBufferQueue.Объявление
Swift
func CMBufferQueueGetMinDecodeTimeStamp(_queue: CMBufferQueue!) -> CMTimeObjective C
CMTime CMBufferQueueGetMinDecodeTimeStamp ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Самая ранняя метка времени декодирования опрошенного
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!) -> CMTimeObjective C
CMTime CMBufferQueueGetFirstPresentationTimeStamp ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Метка времени представления первого буфера в опрошенном
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 );Параметры
queueCMBufferQueue, от которого можно получить буфер.
Возвращаемое значение
Буфер. Будет
NULLесли очередь пуста.Обсуждение
Это следует, Базовая Основа «Получают» семантику - это не сохраняет возвращенный буфер. Обратите внимание на то, что с очередями не-FIFO не гарантируется, что следующая двухсторонняя очередь возвратит этот определенный буфер (если вмешательство Будет Ставить в очередь, добавляет буфер, который исключит из очереди затем).
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Получает самую раннюю метку времени представления a
CMBufferQueue.Объявление
Swift
func CMBufferQueueGetMinPresentationTimeStamp(_queue: CMBufferQueue!) -> CMTimeObjective C
CMTime CMBufferQueueGetMinPresentationTimeStamp ( CMBufferQueueRef queue );Параметры
queueCMBufferQueueбыть опрошенным.Возвращаемое значение
Самая ранняя метка времени представления опрошенного
CMBufferQueue.Обсуждение
Поиск самого раннего представления timstamp выполняется в этом API. Если Вы знаете, что Ваша очередь сортируется временем представления,
CMBufferQueueGetBufferCountболее быстрая альтернатива. ЕслиgetPresentationTimeStampобратный вызовNULL, kCMTimeInvalid будет возвращен.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Возвраты
CFTypeIDиз объектов CMBufferQueue.Объявление
Swift
func CMBufferQueueGetTypeID() -> CFTypeIDObjective C
CFTypeID CMBufferQueueGetTypeID ( void );Возвращаемое значение
CFTypeID
CMBufferQueueобъекты.Обсуждение
Можно проверить если a
CFTypeRefобъект фактически aCMBufferQueueпутем сравненияCFGetTypeID(объект) сCMBufferQueueGetTypeID().Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Ссылка на a
CMBufferобъект.Объявление
Swift
typealias CMBufferRef = CMBufferObjective C
typedef CFTypeRef CMBufferRef;Обсуждение
A
CMBufferможет быть экземпляр любого Базового типа Основы, целого agetDurationобратный вызов может быть предоставлен. Обычно используемые типыCMSampleBufferиCVPixelBuffer.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в OS X v10.7 и позже.
-
Ссылка на a
CMBufferQueueRefобъект.Объявление
Swift
typealias CMBufferQueueRef = CMBufferQueueObjective 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от aCMBuffer.Объявление
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 = COpaquePointerObjective 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 = Int32Objective 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_WhenDurationBecomesLessThankCMBufferQueueTrigger_WhenDurationBecomesLessThanКогда продолжительность очереди становится меньше, чем указанная продолжительность, триггер стреляет.
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualTokCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualToКогда продолжительность очереди становится меньше чем или равной указанной продолжительности, триггер стреляет.
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenDurationBecomesGreaterThankCMBufferQueueTrigger_WhenDurationBecomesGreaterThanКогда продолжительность очереди становится больше, чем указанная продолжительность, триггер стреляет.
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualTokCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualToКогда продолжительность очереди становится больше, чем или равный указанной продолжительности, триггер стреляет.
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenMinPresentationTimeStampChangeskCMBufferQueueTrigger_WhenMinPresentationTimeStampChangesТриггер стреляет, когда минимальная метка времени представления изменяется (triggerDuration, проигнорирован).
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenMaxPresentationTimeStampChangeskCMBufferQueueTrigger_WhenMaxPresentationTimeStampChangesТриггер стреляет, когда максимальная метка времени представления изменяется (triggerDuration, проигнорирован).
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenDataBecomesReadykCMBufferQueueTrigger_WhenDataBecomesReadyТриггер стреляет, когда затем dequeueable буфер становится готовым (т.е.
CMBufferQueueDequeueIfDataReadyAndRetainтеперь успешно выполнится). (triggerDuration проигнорирован.)Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenEndOfDataReachedkCMBufferQueueTrigger_WhenEndOfDataReachedКогда условие CMBufferQueueIsAtEndOfData становится истиной, триггер стреляет. (triggerDuration проигнорирован.)
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenResetkCMBufferQueueTrigger_WhenResetТриггер стреляет когда вызванный CMBufferQueueReset. (triggerDuration проигнорирован.)
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenBufferCountBecomesLessThankCMBufferQueueTrigger_WhenBufferCountBecomesLessThanКогда число буферов становится меньше, чем указанное пороговое число, триггер стреляет.
Доступный в OS X v10.7 и позже.
-
kCMBufferQueueTrigger_WhenBufferCountBecomesGreaterThankCMBufferQueueTrigger_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. |
