AVSampleBufferDisplayLayer
AVSampleBufferDisplayLayer
класс является подклассом CALayer
это выводит на экран сжатые или несжатые видеокадры.
Наследование
Соответствует
-
AnyObject
-
CAMediaTiming
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
Печатаемый
-
CAMediaTiming
-
NSCoding
-
NSObject
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.8 и позже.
-
Дает цели команду неоднократно вызывать предоставленный клиентами блок, в его удобстве, для сбора демонстрационных буферов для дисплея.
Объявление
Swift
func requestMediaDataWhenReadyOnQueue(_
queue
: dispatch_queue_t!, usingBlockblock
: (() -> Void)!)Objective C
- (void)requestMediaDataWhenReadyOnQueue:(dispatch_queue_t)
queue
usingBlock:(void (^)(void))block
Параметры
queue
Очередь отгрузки.
block
Блок, предоставляющий данные носителей.
Обсуждение
Блок, как ожидают, вызовет
enqueueSampleBuffer:
для предоставления данных носителей для распаковки (если необходимый) и рендеринг в то время какreadyForMoreMediaData
свойство остаетсяYES
true
, или пока это не может обеспечить дополнительные носители. Когда уровень декодировал достаточно данных носителей, что это готово к дополнительным данным носителей, это вызовет блок снова.Позволяя уровню дисплея определить, когда вызвать блок, реализация инкрементных операций I/O упрощена при снабжении синхронизируемыми данными носителей во время рендеринга.
Если эта функция вызвана многократно, только последняя возможность является эффективной.
Вы вызываете
stopRequestingMediaData
метод для отмены этого запроса.Каждый вызов к
requestMediaDataWhenReadyOnQueue:usingBlock:
должен быть сбалансирован с соответствующего вызова кstopRequestingMediaData
.Выпуск экземпляра получателя без вызова к
stopRequestingMediaData
приведет к неопределенному поведению.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
-
Булево значение, указывающее готовность уровня принять более демонстрационные буферы. (только для чтения)
Объявление
Swift
var readyForMoreMediaData: Bool { get }
Objective C
@property(readonly, getter=isReadyForMoreMediaData) BOOL readyForMoreMediaData
Обсуждение
AVSampleBufferDisplayLayer
отслеживает уровни заполнения его внутренних очередей в пользу клиентов, ставящих в очередь демонстрационные буферы из источников нев реальном времени — т.е. клиенты, которые могут предоставить демонстрационные буферы быстрее, чем, они используются и должны решить, когда сдержать буферы.Клиентские демонстрационные буферы постановки в очередь из источников нев реальном времени могут удержать от генерации или получения более демонстрационных буферов для постановки в очередь когда значение
readyForMoreMediaData
NO
false
.Безопасно вызвать
enqueueSampleBuffer:
когдаreadyForMoreMediaData
NO
false
, но enqueing, более демонстрационные буферы, чем требуются для своевременного рендеринга получателем, высоко обескураживают.Для помощи с управлением предоставления нев реальном времени демонстрационных буферов такие клиенты должны использовать
requestMediaDataWhenReadyOnQueue:usingBlock:
для указания блока, который уровень должен вызвать каждый раз, когда это готово к демонстрационным буферам быть добавленным.Значение
readyForMoreMediaData
будет часто изменяться отNO
false
кYES
true
асинхронно, поскольку ранее предоставленные демонстрационные буферы декодируются и выводятся на экран.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
-
Отмены любой текущий запрос данных носителей.
Объявление
Swift
func stopRequestingMediaData()
Objective C
- (void)stopRequestingMediaData
Обсуждение
Этот метод отменяет любой ток
requestMediaDataWhenReadyOnQueue:usingBlock:
вызвать. Каждый вызовrequestMediaDataWhenReadyOnQueue:usingBlock:
должен быть сбалансирован вызовом к этому методу.Этот метод можно вызвать из
requestMediaDataWhenReadyOnQueue:usingBlock:
блок метода или извне блока.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
-
Дает уровню команду отбрасывать находящиеся на рассмотрении ставившие в очередь демонстрационные буферы.
Объявление
Swift
func flush()
Objective C
- (void)flush
Обсуждение
Поскольку не возможно определить, какие демонстрационные буферы декодировались, следующий кадр передал
enqueueSampleBuffer:
должен быть кадр IDR (также известный как ключевой кадр или синхронизирующая выборка).Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
Сообщает, что уровень для отбрасывания ожидания ставил в очередь демонстрационные буферы, и удалите любое в настоящее время выводимое на экран изображение.
Объявление
Swift
func flushAndRemoveImage()
Objective C
- (void)flushAndRemoveImage
Обсуждение
Не возможно определить, какие демонстрационные буферы декодировались, таким образом, следующий кадр передал
enqueueSampleBuffer:
должен быть кадр IDR (также известный как ключевой кадр или синхронизирующая выборка).Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
controlTimebase controlTimebase
СвойствоУправление уровня timebase, который управляет, как интерпретируются метки времени.
Объявление
Swift
var controlTimebase: CMTimebase!
Objective C
@property(retain) CMTimebaseRef controlTimebase
Обсуждение
По умолчанию это свойство
NULL
, когда метки времени интерпретируются согласно таймеру узла (mach_absolute_time
с надлежащим преобразованием масштаба времени; это совпадает с Базовой АнимациейCACurrentMediaTime
). Без управления timebase, как только кадры ставятся в очередь, не возможно корректироваться точно, когда они выведены на экран.Если не -
NULL
управление timebase установлено, оно используется для интерпретации меток времени. Вы управляете синхронизацией дисплея кадра путем установки уровня и время управления timebase.При синхронизации видео с аудио необходимо использовать timebase, основной тактовый генератор которого является a
CMAudioDeviceClock
для надлежащего аудиоустройства для предотвращения смещения. Посмотрите Ссылку CMAudioDeviceClock для получения дополнительной информации.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
Отправляет демонстрационный буфер за дисплеем.
Объявление
Swift
func enqueueSampleBuffer(_
sampleBuffer
: CMSampleBuffer!)Objective C
- (void)enqueueSampleBuffer:(CMSampleBufferRef)
sampleBuffer
Параметры
sampleBuffer
Демонстрационный буфер для отображения.
Обсуждение
Если
sampleBuffer
имеетkCMSampleAttachmentKey_DoNotDisplay
присоединяемый набор кkCFBooleanTrue
, кадр будет декодироваться, но не выводиться на экран.Если
sampleBuffer
имеетkCMSampleAttachmentKey_DisplayImmediately
присоединяемый набор кkCFBooleanTrue
, декодируемое изображение будет выведено на экран как можно скорее, заменяя все ранее ставившие в очередь изображения независимо от их меток времени.Иначе, декодируемое изображение будет выведено на экран в
sampleBuffer
выходная метка времени представления, как интерпретируетсяcontrolTimebase
свойство (илиmach_absolute_time
временная шкала, если нет никакого управления timebase).Для планирования удаления предыдущих изображений в определенной метке времени ставьте в очередь демонстрационный буфер маркера, содержащий выборки, с
kCMSampleBufferAttachmentKey_EmptyMedia
присоединяемый набор кkCFBooleanTrue
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
-
videoGravity videoGravity
СвойствоСтроковое определение, как видео выведено на экран в границах rect демонстрационного буферного уровня дисплея.
Обсуждение
Строковые значения определяются в
Video Gravity
. Значение по умолчаниюAVLayerVideoGravityResizeAspect
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.8 и позже.
-
Если состояние указывает отказ, возвращает ошибку. (только для чтения)
Объявление
Swift
var error: NSError! { get }
Objective C
@property(nonatomic, readonly) NSError *error
Обсуждение
Значение этого свойства
NSError
это описывает то, что заставило уровень дисплея больше не быть в состоянии ставить в очередь демонстрационные буферы. Если состояние неAVQueuedSampleBufferRenderingStatusFailed
, значение этого свойстваnil
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Возможность уровня дисплея, который будет использоваться для постановки в очередь демонстрационных буферов. (только для чтения)
Объявление
Swift
var status: AVQueuedSampleBufferRenderingStatus { get }
Objective C
@property(nonatomic, readonly) AVQueuedSampleBufferRenderingStatus status
Обсуждение
Значение этого свойства
AVQueuedSampleBufferRenderingStatus
это указывает, может ли получатель использоваться для постановки в очередь демонстрационных буферов.Когда значение этого свойства
AVQueuedSampleBufferRenderingStatusFailed
, получатель больше не может использоваться, и новый экземпляр должен быть создан в его месте. Когда это происходит, клиенты могут проверить значениеerror
свойство для определения отказа.Это свойство является значением ключа, наблюдающим совместимый.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Константы, описывающие возможные значения
status
свойство.Объявление
Swift
enum AVQueuedSampleBufferRenderingStatus : Int { case Unknown case Rendering case Failed }
Objective C
enum { AVQueuedSampleBufferRenderingStatusUnknown, AVQueuedSampleBufferRenderingStatusRendering, AVQueuedSampleBufferRenderingStatusFailed }; typedef NSInteger AVQueuedSampleBufferRenderingStatus;
Константы
-
Unknown
AVQueuedSampleBufferRenderingStatusUnknown
Указывает, что получатель находится в новом состоянии без любых демонстрационных буферов, ставивших в очередь на нем.
Доступный в OS X v10.10 и позже.
-
Rendering
AVQueuedSampleBufferRenderingStatusRendering
Указывает, что по крайней мере один демонстрационный буфер ставился в очередь на получателе.
Доступный в OS X v10.10 и позже.
-
Failed
AVQueuedSampleBufferRenderingStatusFailed
Терминальное состояние, указывающее, что получатель больше не может представлять демонстрационные буферы из-за ошибки. Ошибка описана значением
error
свойство.Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
-
Постоянный, который описывает ключ для userInfo поля в
AVSampleBufferDisplayLayerFailedToDecodeNotification
уведомление.Объявление
Swift
let AVSampleBufferDisplayLayerFailedToDecodeNotificationErrorKey: NSString!
Objective C
NSString *const AVSampleBufferDisplayLayerFailedToDecodeNotificationErrorKey;
Константы
-
AVSampleBufferDisplayLayerFailedToDecodeNotification AVSampleBufferDisplayLayerFailedToDecodeNotification
Отправленный, когда буферному уровню дисплея не удалось декодировать.
Уведомление
userInfo
содержитNSError
как значениеAVSampleBufferDisplayLayerFailedToDecodeNotificationErrorKey
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.