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

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

Разработчик

Ссылка платформы AVFoundation ссылка на протокол AVCaptureVideoDataOutputSampleBufferDelegate

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

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

AVCaptureVideoDataOutputSampleBufferDelegate

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


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

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


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


Swift

import AVFoundation

Objective C

@import AVFoundation;

Доступность


Доступный в iOS 4.0 и позже.

Этот протокол определяет интерфейс для делегатов AVCaptureVideoDataOutput объект получить полученные видео демонстрационные буферы и быть уведомленными относительно отброшенных последних демонстрационных буферов.

Делегат AVCaptureVideoDataOutput объект должен принять AVCaptureVideoDataOutputSampleBufferDelegate протокол. Методы в этом протоколе являются дополнительными.

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

    Объявление

    Swift

    optional func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!)

    Objective C

    - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

    Параметры

    captureOutput

    Выходной объект получения.

    sampleBuffer

    A CMSampleBuffer объект, содержащий данные видеокадра и дополнительную информацию о кадре, таком как его формат и время представления.

    connection

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

    Обсуждение

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

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

    Если необходимо сослаться CMSampleBuffer объект за пределами объема этого метода, Вы должны CFRetain это и затем CFRelease это, когда Вы закончены с ним.

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

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

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

    Objective C

    @import AVFoundation;

    Swift

    import AVFoundation

    Доступность

    Доступный в iOS 4.0 и позже.

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

    Объявление

    Swift

    optional func captureOutput(_ captureOutput: AVCaptureOutput!, didDropSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!)

    Objective C

    - (void)captureOutput:(AVCaptureOutput *)captureOutput didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

    Параметры

    captureOutput

    Выходной объект получения.

    sampleBuffer

    A CMSampleBuffer объект, содержащий информацию об отброшенном кадре, таком как его формат и время представления..

    Этот демонстрационный буфер не содержит ни одни из исходных видеоданных.

    connection

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

    Обсуждение

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

    sampleBuffer будет содержать a kCMSampleBufferAttachmentKey_DroppedFrameReason присоединение, детализирующее, почему был отброшен кадр. Кадр может быть отброшен, потому что было поздно (kCMSampleBufferDroppedFrameReason_FrameWasLate), обычно вызванный обработкой клиента, берущей слишком долго. Это может также быть отброшено, потому что обеспечение модуля структурирует, вне буферов (kCMSampleBufferDroppedFrameReason_OutOfBuffers). Кадры могут также быть отброшены вследствие разрыва (kCMSampleBufferDroppedFrameReason_Discontinuity), если модуль, обеспечивающий демонстрационные буферы, испытал разрыв, и было потеряно неизвестное число кадров. Это условие обычно вызывается системой, являющейся слишком занятым.

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

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

    Objective C

    @import AVFoundation;

    Swift

    import AVFoundation

    Доступность

    Доступный в iOS 6.0 и позже.