Ссылка CMSampleBuffer
Этот документ описывает API, который Вы используете, чтобы создать и управлять CMSampleBuffer
непрозрачный тип.
CMSampleBuffers
Базовые объекты Основы, содержащие нуль или более сжатый (или несжатый) выборки определенного типа среды (аудио, видео, мультиплексированное, и т.д.), которые используются для перемещения демонстрационных данных носителей через систему носителей. A CMSampleBuffer
может содержать:
A
CMBlockBuffer
из одной или более выборок носителей, илиA
CVImageBuffer
, ссылка на описание формата для потокаCMSampleBuffers
, размер и информация синхронизации для каждой из содержавших выборок носителей, и и присоединения буферного уровня и демонстрационного уровня.
Демонстрационный буфер может содержать и присоединения демонстрационного уровня и буферного уровня. Присоединения демонстрационного уровня связаны с каждой отдельной выборкой (кадр) в буфере и включают информацию, такую как зависимости от видеокадра и метки времени. Можно считать и записать присоединения демонстрационного уровня с помощью CMSampleBufferGetSampleAttachmentsArray
функция. Присоединения буферного уровня предоставляют информацию о буфере в целом, таком как скорость воспроизведения и действия, которые будут выполняться после потребления буфера. Можно читать и присоединения уровня буфера записи с помощью APIs, описанного в Ссылке CMAttachment и ключах, перечисленных под Демонстрационными Буферными Присоединяемыми Ключами.
Это возможно для a CMSampleBuffer
для описания выборок, это еще не содержит. Например, некоторые мультимедийные службы могут иметь доступ к объему выборки, информации синхронизации и данным о формате, прежде чем будут считаны данные. Такие службы могут создать CMSampleBuffers
с той информацией и вставляют их в очереди рано и присоединение (или заливка) CMBlockBuffers
из данных носителей позже, когда данные становятся готовыми. С этой целью, CMSampleBuffers
имейте понятие готовности данных, которая может быть протестирована, установите, вынужденный стать готовыми “теперь" и т.д. Это также возможно для a CMSampleBuffer
содержать только специальное присоединение буферного уровня, описывающее событие мультимедийного потока (например, «разрыв: истощите и сбросьте декодер прежде, чем обработать следующее CMSampleBuffer
”). Такое специальное присоединение может также быть присоединено регулярный CMSampleBuffers
(т.е. которые содержат демонстрационные данные носителей), и если так, событие, которое они описывают, определяется для появления после выборок в этом CMSampleBuffer
.
-
CMAudioSampleBufferCreateWithPacketDescriptions (_: _: _: _: _: _: _: _: _: _:) CMAudioSampleBufferCreateWithPacketDescriptions
Создает a
CMSampleBuffer
содержа аудио для данногоpacketDescription
вместо калибровки и информации синхронизации.Объявление
Swift
func CMAudioSampleBufferCreateWithPacketDescriptions(_
allocator
: CFAllocator!, _dataBuffer
: CMBlockBuffer!, _dataReady
: Boolean, _makeDataReadyCallback
: CMSampleBufferMakeDataReadyCallback, _makeDataReadyRefcon
: UnsafeMutablePointer<Void>, _formatDescription
: CMFormatDescription!, _numSamples
: CMItemCount, _sbufPTS
: CMTime, _packetDescriptions
: UnsafePointer<AudioStreamPacketDescription>, _sBufOut
: UnsafeMutablePointer<Unmanaged<CMSampleBuffer>?>) -> OSStatusObjective C
OSStatus CMAudioSampleBufferCreateWithPacketDescriptions ( CFAllocatorRef allocator, CMBlockBufferRef dataBuffer, Boolean dataReady, CMSampleBufferMakeDataReadyCallback makeDataReadyCallback, void *makeDataReadyRefcon, CMFormatDescriptionRef formatDescription, CMItemCount numSamples, CMTime sbufPTS, const AudioStreamPacketDescription *packetDescriptions, CMSampleBufferRef *sBufOut );
Параметры
allocator
Средство выделения для использования для выделения
CMSampleBuffer
объект. ПередачаkCFAllocatorDefault
использовать средство выделения по умолчанию.dataBuffer
CMBlockBuffer
для данных носителей. Это может бытьNULL
, aCMBlockBuffer
без резервной памяти, aCMBlockBuffer
с резервной памятью, но никакими данными все же или aCMBlockBuffer
это уже содержит данные носителей. ЕслиCMBlockBuffer
содержит данные носителей,dataReady
должен бытьtrue
.dataReady
Указывает действительно ли
BlockBuffer
уже содержит данные носителей.makeDataReadyCallback
Обратный вызов это
CMSampleBufferMakeDataReady
должен вызвать для создания данных готовыми. Может бытьNULL
.makeDataReadyRefcon
Ссылочная константа,
CMSampleBufferMakeDataReady
, то, что эта функция должна передать обратному вызову.formatDescription
Описание формата данных носителей. Не может быть
NULL
.numSamples
Число выборок в
CMSampleBuffer
. Не должен быть 0.sbufPTS
Метка времени первой выборки в буфере. Должно быть числовое
CMTime
.packetDescriptions
Массив
packetDescriptions
, один для каждого изnumSamples
. Может бытьNULL
если выборки, как известно, имеют постоянное число кадров на пакет и постоянный размер.sBufOut
На выводе, точках к недавно создаваемому
CMSampleBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Обеспечивает оптимизацию
CMSampleBufferCreate
(), когда вызывающая сторона уже имеетpacketDescriptions
для аудиоданных. Эта подпрограмма будет использовать packetDescriptions для создания калибровки и синхронизации массивов, требуемых сделать демонстрационный буфер при необходимости.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Вызывает функцию для каждой отдельной выборки в демонстрационном буфере.
Объявление
Swift
func CMSampleBufferCallForEachSample(_
sbuf
: CMSampleBuffer!, _refcon
: CFunctionPointer<((CMSampleBuffer!, CMItemCount, UnsafeMutablePointer<Void>) -> OSStatus)>, _refcon
: UnsafeMutablePointer<Void>) -> OSStatusObjective C
OSStatus CMSampleBufferCallForEachSample ( CMSampleBufferRef sbuf, OSStatus (*callback)( CMSampleBufferRef sampleBuffer, CMItemCount index, void *refcon), void *refcon );
Параметры
sbuf
CMSampleBuffer
это может содержать многократные выборки.refcon
Функция, которую вызовут для каждой отдельной выборки.
refcon
Refcon, который будет передан функции обратного вызова.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Система создаст временные демонстрационные буферы для отдельных выборок. Каждый демонстрационный буфер будет относиться к демонстрационным данным и содержащий его синхронизацию, размер и присоединения. Функция обратного вызова может сохранить эти демонстрационные буферы при желании. Если функция обратного вызова возвратит ошибку, то итерация сразу остановится и функционировать возвраты ошибка, полученная от обратного вызова. Функция возвратится
kCMSampleBufferError_CannotSubdivide
ошибка, при отсутствии объемов выборки в предоставленном демонстрационном буфере. Это произойдет, например, если выборки в буфере будут состоящими из нескольких несмежных участков (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер).Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Создает a
CMSampleBuffer
содержа диапазон выборок от существующегоCMSampleBuffer
.Объявление
Swift
func CMSampleBufferCopySampleBufferForRange(_
allocator
: CFAllocator!, _sbuf
: CMSampleBuffer!, _sampleRange
: CFRange, _sBufOut
: UnsafeMutablePointer<Unmanaged<CMSampleBuffer>?>) -> OSStatusObjective C
OSStatus CMSampleBufferCopySampleBufferForRange ( CFAllocatorRef allocator, CMSampleBufferRef sbuf, CFRange sampleRange, CMSampleBufferRef *sBufOut );
Параметры
allocator
Средство выделения для использования для выделения
CMSampleBuffer
объект. ПередачаkCFAllocatorDefault
использовать средство выделения по умолчанию.sbuf
CMSampleBuffer
содержа исходные выборки.sampleRange
Диапазон выборок для копирования с
sbuf
, где демонстрационный 0 является первой выборкой вsbuf
sBufOut
На выводе, точках к недавно создаваемому
CMSampleBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Выборки, содержащие нечередующееся аудио, в настоящее время не поддерживаются.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Создает CMSampleBuffer.
Объявление
Swift
func CMSampleBufferCreate(_
allocator
: CFAllocator!, _dataBuffer
: CMBlockBuffer!, _dataReady
: Boolean, _makeDataReadyCallback
: CMSampleBufferMakeDataReadyCallback, _makeDataReadyRefcon
: UnsafeMutablePointer<Void>, _formatDescription
: CMFormatDescription!, _numSamples
: CMItemCount, _numSampleTimingEntries
: CMItemCount, _sampleTimingArray
: UnsafePointer<CMSampleTimingInfo>, _numSampleSizeEntries
: CMItemCount, _sampleSizeArray
: UnsafePointer<UInt>, _sBufOut
: UnsafeMutablePointer<Unmanaged<CMSampleBuffer>?>) -> OSStatusObjective C
OSStatus CMSampleBufferCreate ( CFAllocatorRef allocator, CMBlockBufferRef dataBuffer, Boolean dataReady, CMSampleBufferMakeDataReadyCallback makeDataReadyCallback, void *makeDataReadyRefcon, CMFormatDescriptionRef formatDescription, CMItemCount numSamples, CMItemCount numSampleTimingEntries, const CMSampleTimingInfo *sampleTimingArray, CMItemCount numSampleSizeEntries, const size_t *sampleSizeArray, CMSampleBufferRef *sBufOut );
Параметры
allocator
Средство выделения для использования для выделения
CMSampleBuffer
объект. ПередачаkCFAllocatorDefault
использовать средство выделения по умолчанию.dataBuffer
CMBlockBuffer
для данных носителей. Это может бытьNULL
, aCMBlockBuffer
без резервной памяти, aCMBlockBuffer
с резервной памятью, но никакими данными все же или aCMBlockBuffer
это уже содержит данные носителей. ЕслиCMBlockBuffer
содержит данные носителей,dataReady
должен бытьtrue
. Булевская переменнаяdataReady
должен также бытьtrue
еслиdataBuffer
Null
иnumSamples
0.dataReady
Указывает, содержит ли BlockBuffer уже данные носителей
makeDataReadyCallback
Обратный вызов это
CMSampleBufferMakeDataReady
должен вызвать для создания данных готовыми. Может бытьNULL
.makeDataReadyRefcon
Refcon
CMSampleBufferMakeDataReady
должен передать обратному вызову.formatDescription
Описание формата данных носителей. Может быть
NULL
.numSamples
Число выборок в
CMSampleBuffer
. Может быть нуль.numSampleTimingEntries
Число записей в
sampleTimingArray
. Должен быть 0, 1, илиnumSamples
.sampleTimingArray
Массив
CMSampleTimingInfo
структуры, одна структура на выборку. Если все выборки имеют ту же продолжительность и находятся в порядке представления, можно передать синглCMSampleTimingInfo
структура с набором продолжительности к продолжительности одной выборки,presentationTimeStamp
набор ко времени представления численно самой ранней выборки, иdecodeTimeStamp
набор кkCMTimeInvalid
. Поведение не определено если выборки в aCMSampleBuffer
(или даже в многократных буферах в том же потоке), имеют то жеpresentationTimeStamp
. Может бытьNULL
.numSampleSizeEntries
Число записей в
sampleSizeArray
. Должен быть 0, 1, или numSamples.sampleSizeArray
Массив записей размера, одной записи на выборку. Если все выборки имеют тот же размер, можно передать единственную запись размера, содержащую размер одной выборки. Может быть
NULL
. Должен быть NULL, если выборки являются состоящими из нескольких несмежных участков в буфере (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер).sBufOut
На выводе, точках к недавно создаваемому
CMSampleBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если тот же самый элемент применяется ко всем выборкам, параметры массива (sampleSizeArray, sampleTimingArray) должны иметь только один элемент. Все параметры копируются. По возврату вызывающая сторона может выпустить их, освободить их или снова использовать их. По возврату вызывающей стороне принадлежит возвращенный
CMSampleBuffer
, и должен выпустить его, когда сделано с ним.Пример использования для видеокадров «в порядке дисплея»:
буфер данных: содержит 7 Движений кадры JPEG
dataFormatDescription: описывает Движение видео JPEG
dataFormatDescription: описывает Движение видео JPEG
numSamples: 7
numSampleTimingEntries: 1
sampleTimingArray: одна запись = {продолжительность = 1001/30000, presentationTimeStamp = 0/30000, decodeTimeStamp = недопустимый}
numSampleSizeEntries: 7
sampleSizeArray: {105840, 104456, 103464, 116460, 100412, 94808, 120400}
Пример использования для видеокадров в порядка дисплея:
буфер данных: содержит 6 кадров H.264 в порядке декодирования (P2, B0, B1, I5, B3, B4)
dataFormatDescription: описывает видео H.264
numSamples: 6
numSampleTimingEntries: 6
sampleTimingArray: 6 записей = {
{продолжительность = 1001/30000, presentationTimeStamp = 12012/30000, decodeTimeStamp = 10010/30000},
{продолжительность = 1001/30000, presentationTimeStamp = 10010/30000, decodeTimeStamp = 11011/30000},
{продолжительность = 1001/30000, presentationTimeStamp = 11011/30000, decodeTimeStamp = 12012/30000},
{продолжительность = 1001/30000, presentationTimeStamp = 15015/30000, decodeTimeStamp = 13013/30000},
{продолжительность = 1001/30000, presentationTimeStamp = 13013/30000, decodeTimeStamp = 14014/30000},
{продолжительность = 1001/30000, presentationTimeStamp = 13013/30000, decodeTimeStamp = 14014/30000}}
numSampleSizeEntries: 6
sampleSizeArray: {10580, 1234, 1364, 75660, 1012, 988}
Пример использования для сжатого аудио:
буфер данных: содержит 24, сжал пакеты AAC
dataFormatDescription: описывает аудио AAC на 44.1 кГц
numSamples: 24
numSampleTimingEntries: 1
sampleTimingArray: одна запись = {{продолжительность = 1024/44100, presentationTimeStamp = 0/44100, decodeTimeStamp = недопустимый}}
numSampleSizeEntries: 24
sampleSizeArray: {191, 183, 208, 213, 202, 206, 209, 206, 204, 192, 202, 277, <литий> 282, 240, 209, 194, 193, 197, 196, 198, 168, 199, 171, 194}
Пример использования для несжатого чередованного аудио:
буфер данных: содержит 24 000 несжатых чередованных кадров стерео, каждый содержащий 2 Float32s =
{{L, R},
{L, R},
{L, R}...}
dataFormatDescription: описывает чередованное аудио Float32 на 48 кГц
numSamples: 24000
numSampleTimingEntries: 1
sampleTimingArray: одна запись = {{продолжительность = 1/48000, presentationTimeStamp = 0/48000, decodeTimeStamp = недопустимый}}
numSampleSizeEntries: 1
sampleSizeArray: {8}
Пример использования для несжатого нечередующегося аудио:
буфер данных: содержит 24 000 несжатых нечередующихся кадров стерео, каждый содержащий 2 Float32s (состоящих из нескольких несмежных участков) =
{{L, L, L, L, L...},
{R, R, R, R, R...}}
dataFormatDescription: описывает Float32 на 48 кГц нечередующееся аудио
numSamples: 24000
numSampleTimingEntries: 1
sampleTimingArray: одна запись = {продолжительность = 1/48000, presentationTimeStamp = 0/48000, decodeTimeStamp = недопустимый}
numSampleSizeEntries: 0
sampleSizeArray:
NULL
(потому что выборки не непрерывны),
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Создает копию a
CMSampleBuffer
Объявление
Swift
func CMSampleBufferCreateCopy(_
allocator
: CFAllocator!, _sbuf
: CMSampleBuffer!, _sbufCopyOut
: UnsafeMutablePointer<Unmanaged<CMSampleBuffer>?>) -> OSStatusObjective C
OSStatus CMSampleBufferCreateCopy ( CFAllocatorRef allocator, CMSampleBufferRef sbuf, CMSampleBufferRef *sbufCopyOut );
Параметры
allocator
Средство выделения для использования для выделения
CMSampleBuffer
объект. ПередачаkCFAllocatorDefault
использовать средство выделения по умолчанию.sbuf
CMSampleBuffer
быть скопированным.sbufCopyOut
На выводе, точках к недавно создаваемой копии
CMSampleBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Копия мелка: скалярные свойства (размеры и синхронизирующий) копируются непосредственно, буфер данных и форматируют описание, сохраняются, и присоединения, которые могут быть распространены, сохраняются словарем копии. Если
sbuf's
данные не готовы, копия будет установлена отследить свою готовность.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Создает копию
CMSampleBuffer
с новой информацией синхронизации.Объявление
Swift
func CMSampleBufferCreateCopyWithNewTiming(_
allocator
: CFAllocator!, _originalSBuf
: CMSampleBuffer!, _numSampleTimingEntries
: CMItemCount, _sampleTimingArray
: UnsafePointer<CMSampleTimingInfo>, _sBufCopyOut
: UnsafeMutablePointer<Unmanaged<CMSampleBuffer>?>) -> OSStatusObjective C
OSStatus CMSampleBufferCreateCopyWithNewTiming ( CFAllocatorRef allocator, CMSampleBufferRef originalSBuf, CMItemCount numSampleTimingEntries, const CMSampleTimingInfo *sampleTimingArray, CMSampleBufferRef *sBufCopyOut );
Параметры
allocator
Средство выделения для использования для выделения
CMSampleBuffer
объект. ПередачаkCFAllocatorDefault
использовать средство выделения по умолчанию.originalSBuf
CMSampleBuffer
содержа исходные выборки.numSampleTimingEntries
Число записей в
sampleTimingArray
. Должен быть 0, 1, или numSamples в исходном sampleBuffer.sampleTimingArray
Массив
CMSampleTimingInfo
структуры, одна структура на выборку. Если все выборки имеют ту же продолжительность и находятся в порядке представления, можно передать синглCMSampleTimingInfo
структура с набором продолжительности к продолжительности одной выборки,presentationTimeStamp
набор ко времени представления численно самой ранней выборки, иdecodeTimeStamp
набор кkCMTimeInvalid
. Поведение не определено если выборки в aCMSampleBuffer
(или даже в многократных буферах в том же потоке), имеют тот же presentationTimeStamp. Может бытьNULL
.sBufCopyOut
На выводе, точках к недавно создаваемой копии
CMSampleBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Это эмулирует
CMSampleBufferCreateCopy
, но изменяет синхронизацию. Если тот же самый элемент применяется ко всем выборкам, параметры массива (sampleTimingArray) должны иметь только один элемент. Все параметры копируются; по возврату вызывающая сторона может выпустить их, освободить их или снова использовать их. ЛюбойoutputPresentationTimestamp
это было установлено на исходном Буфере, не будет скопирован, потому что это больше не релевантно. По возврату вызывающей стороне принадлежит возвращенныйCMSampleBuffer
, и должен выпустить его, когда сделано с ним.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Создает a
CMSampleBuffer
это содержит aCVImageBuffer
вместо aCMBlockBuffer
.Объявление
Swift
func CMSampleBufferCreateForImageBuffer(_
allocator
: CFAllocator!, _imageBuffer
: CVImageBuffer!, _dataReady
: Boolean, _makeDataReadyCallback
: CMSampleBufferMakeDataReadyCallback, _makeDataReadyRefcon
: UnsafeMutablePointer<Void>, _formatDescription
: CMVideoFormatDescription!, _sampleTiming
: UnsafePointer<CMSampleTimingInfo>, _sBufOut
: UnsafeMutablePointer<Unmanaged<CMSampleBuffer>?>) -> OSStatusObjective C
OSStatus CMSampleBufferCreateForImageBuffer ( CFAllocatorRef allocator, CVImageBufferRef imageBuffer, Boolean dataReady, CMSampleBufferMakeDataReadyCallback makeDataReadyCallback, void *makeDataReadyRefcon, CMVideoFormatDescriptionRef formatDescription, const CMSampleTimingInfo *sampleTiming, CMSampleBufferRef *sBufOut );
Параметры
allocator
Средство выделения для использования для выделения
CMSampleBuffer
объект. ПередачаkCFAllocatorDefault
использовать средство выделения по умолчанию.imageBuffer
CVImageBuffer
для данных носителей. Это может быть aCVImageBuffer
чье содержание еще не было представлено, или aCVImageBuffer
это уже содержит данные носителей (когдаdataReady
должна быть истина). Может не бытьNULL
.dataReady
Указывает действительно ли
CVImageBuffer
уже содержит данные носителей.makeDataReadyCallback
Обратный вызов это
CMSampleBufferMakeDataReady
должен вызвать для создания данных готовыми. Может бытьNULL
.makeDataReadyRefcon
Refcon
CMSampleBufferMakeDataReady
должен передать обратному вызову.formatDescription
Описание формата данных носителей. Посмотрите обсуждение выше для ограничений. Может не быть
NULL
.sampleTiming
A
CMSampleTimingInfo
структура, обеспечивающая информацию синхронизации для носителей, представленныхCVImageBuffer
.sBufOut
На выводе, точках к недавно создаваемому
CMSampleBuffer
это содержит aCVImageBuffer
.Возвращаемое значение
Код результата. Посмотрите Демонстрационные Буферные Коды Результата
Обсуждение
В отличие от a
CMBlockBuffer
который может сослаться на многие выборки, aCVImageBuffer
определяется для ссылки только на одну выборку; поэтому эта подпрограмма имеет меньше параметров, чемCMSampleBufferCreate
. Демонстрационная информация синхронизации, которая является вектором дляCMSampleBufferCreate
, состоит только из одного значения для этой подпрограммы. Понятие объема выборки не применяется кCVImageBuffers
. Также,CMSampleBufferGetSampleSizeArray
возвратитсяkCMSampleBufferError_BufferHasNoSampleSizes
, иCMSampleBufferGetSampleSize
возвратится 0. ПосколькуCVImageBuffers
содержите визуальные данные, предоставленное описание формата является aCMVideoFormatDescription
. Описание формата должно быть соответствующим атрибутам и информации о форматировании, присоединенной кCVImageBuffer
. Ширина, высота, иcodecType
должен соответствовать (дляCVPixelBuffers
типом кодека даютCVPixelBufferGetPixelFormatType
(pixelBuffer); для другогоCVImageBuffers
, codecType должен быть 0). Расширения описания формата должны соответствовать буферные присоединения изображения для всех ключей в списке, возвращенномCMVideoFormatDescriptionGetExtensionKeysCommonWithImageBuffers
. если отсутствующий в любом они должны отсутствовать в обоих.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвраты, действительно ли a
CMSampleBuffer's
данные готовы.Объявление
Swift
func CMSampleBufferDataIsReady(_
scuff
: CMSampleBuffer!) -> BooleanObjective C
Boolean CMSampleBufferDataIsReady ( CMSampleBufferRef sbuf );
Параметры
scuff
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Булевская переменная, указывающая, действительно ли
CMSampleBuffer's
данные готовы. True возвращается для специальных буферов маркера, eventhough у них нет данных. Если существует ошибка, false возвращается.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer (_: _: _: _: _: _: _: _:) CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer
Создает
AudioBufferList
содержа данные отCMSampleBuffer
, и aCMBlockBuffer
какие ссылки (и управляет временем жизни), данные в этомAudioBufferList
. Данные могут или не могут быть скопированы, в зависимости от смежности и 16-байтового выравнивания данных CMSampleBuffer. Буферы, помещенные в AudioBufferList, как гарантируют, будут непрерывны. Буферы в AudioBufferList составят 16 байтов, выровненных еслиkCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment
передается в.Объявление
Swift
func CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(_
sbuf
: CMSampleBuffer!, _bufferListSizeNeededOut
: UnsafeMutablePointer<UInt>, _bufferListOut
: UnsafeMutablePointer<AudioBufferList>, _bufferListSize
: UInt, _bbufStructAllocator
: CFAllocator!, _bbufMemoryAllocator
: CFAllocator!, _flags
: UInt32, _blockBufferOut
: UnsafeMutablePointer<Unmanaged<CMBlockBuffer>?>) -> OSStatusObjective C
OSStatus CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer ( CMSampleBufferRef sbuf, size_t *bufferListSizeNeededOut, AudioBufferList *bufferListOut, size_t bufferListSize, CFAllocatorRef bbufStructAllocator, CFAllocatorRef bbufMemoryAllocator, uint32_t flags, CMBlockBufferRef *blockBufferOut );
Параметры
sbuf
CMSampleBuffer
быть полученным доступ.bufferListSizeNeededOut
Получает размер AudioBufferList, требуемого размещать данные. Может быть
NULL
.bufferListOut
Выделенный вызывающей стороной, измеренной, как указано
bufferListSizeNeededOut
. Это заполнено в указателями в сохраненныйblockBufferOut
. Может бытьNULL
.bufferListSize
Размер
bufferListOut
выделенный клиентом. Если bufferListOut неNULL
иbufferListSize
недостаточно,kFigSampleBufferError_ArrayTooSmall
возвращается.bbufStructAllocator
Средство выделения для использования при создании
CMBlockBuffer
структура.bbufMemoryAllocator
Средство выделения для использования для блока памяти, сохраненного
CMBlockBuffer
.flags
Работа управления флагов.
blockBufferOut
Сохраненный
CMBlockBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
CMSampleBufferGetAudioStreamPacketDescriptions (_: _: _: _:) CMSampleBufferGetAudioStreamPacketDescriptions
Создает массив
AudioStreamPacketDescriptions
поскольку переменные байты на пакет или переменную структурируют на пакетные аудиоданные в предоставленномCMSampleBuffer
. Постоянная скорость передачи, постоянное аудио кадров на пакет приводит к возвращаемому значению noErr и никаких описаний пакета. Этот API является определенным для демонстрационных буферов формата аудио и возвратитсяkCMSampleBufferError_InvalidMediaTypeForOperation
если вызвано с буфером неаудиосэмпла.Объявление
Swift
func CMSampleBufferGetAudioStreamPacketDescriptions(_
sbuf
: CMSampleBuffer!, _packetDescriptionsSize
: UInt, _packetDescriptionsOut
: UnsafeMutablePointer<AudioStreamPacketDescription>, _packetDescriptionsSizeNeededOut
: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus CMSampleBufferGetAudioStreamPacketDescriptions ( CMSampleBufferRef sbuf, size_t packetDescriptionsSize, AudioStreamPacketDescription *packetDescriptionsOut, size_t *packetDescriptionsSizeNeededOut );
Параметры
sbuf
CMSampleBuffer
быть полученным доступ.packetDescriptionsSize
Размер
packetDescriptionsOut
как выделено вызывающей стороной.packetDescriptionsOut
Выделенный вызывающей стороной, получает описания пакета для выборок в
CMSampleBuffer
. Если не-NULL иpacketDescriptionsSize
является слишком маленьким,kFigSampleBufferError_ArrayTooSmall
возвращается.packetDescriptionsSizeNeededOut
Используемый для запросов для корректного размера, требуемого для
packetDescriptionsOut
. Может быть NULL.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
CMSampleBufferGetAudioStreamPacketDescriptionsPtr (_: _: _:) CMSampleBufferGetAudioStreamPacketDescriptionsPtr
Получает указатель на (и размер) постоянный массив
AudioStreamPacketDescriptions
поскольку переменные байты на пакет или переменную структурируют на пакетные аудиоданные в предоставленномCMSampleBuffer
. Указатель будет оставаться допустимым настолько же долго какsbuf
продолжает быть сохраненным. Постоянная скорость передачи, постоянное аудио кадров на пакет приводит к возвращаемому значениюnoErr
и никакие описания пакета. Этот API является определенным для демонстрационных буферов формата аудио и возвратитсяkCMSampleBufferError_InvalidMediaTypeForOperation
если вызвано с буфером неаудиосэмпла.Объявление
Swift
func CMSampleBufferGetAudioStreamPacketDescriptionsPtr(_
sbuf
: CMSampleBuffer!, _packetDescriptionsPtrOut
: UnsafeMutablePointer<UnsafePointer<AudioStreamPacketDescription>>, _packetDescriptionsSizeOut
: UnsafeMutablePointer<UInt>) -> OSStatusObjective C
OSStatus CMSampleBufferGetAudioStreamPacketDescriptionsPtr ( CMSampleBufferRef sbuf, const AudioStreamPacketDescription **packetDescriptionsPtrOut, size_t *packetDescriptionsSizeOut );
Параметры
sbuf
CMSampleBuffer
быть измененным.packetDescriptionsPtrOut
На выводе, содержит указатель на постоянный массив
AudioStreamPacketDescriptions
. Может бытьNULL
.packetDescriptionsSizeOut
Размер в байтах постоянного массива
AudioStreamPacketDescriptions
. Может бытьNULL
.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает CMSampleBuffer
CMBlockBuffer
из данных носителей.Объявление
Swift
func CMSampleBufferGetDataBuffer(_
sbuf
: CMSampleBuffer!) -> CMBlockBuffer!Objective C
CMBlockBufferRef CMSampleBufferGetDataBuffer ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
CMBlockBuffer
из данных носителей. Результат будетNULL
еслиCMSampleBuffer
не содержит aCMBlockBuffer
, еслиCMSampleBuffer
содержит aCVImageBuffer
, или если существует некоторая другая ошибка.Обсуждение
Вызывающей стороне не принадлежит возвращенный
dataBuffer
, и должен сохранить его явно, если вызывающая сторона должна поддержать ссылку на него.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает численно самую раннюю метку времени декодирования всех выборок в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetDecodeTimeStamp(_
sbuf
: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetDecodeTimeStamp ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Численно самое раннее демонстрационное декодирование устанавливает метку времени в
CMSampleBuffer
.kCMTimeInvalid
если существует ошибка, возвращается.Обсуждение
Возвращенная метка времени декодирования всегда является меткой времени декодирования первой выборки в буфере, так как даже из порядка представления выборки, как ожидают, будут в порядке декодирования в буфере.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает общую продолжительность a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetDuration(_
sbuf
: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetDuration ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Продолжительность
CMSampleBuffer
.kCMTimeInvalid
если существует ошибка, возвращается.Обсуждение
Если буфер содержит выборок порядка представления, любые разрывы во временной шкале представления не представлены в возвращенной продолжительности. Возвращенная продолжительность является просто суммой всех отдельных демонстрационных продолжительностей.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает описание формата выборок в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetFormatDescription(_
sbuf
: CMSampleBuffer!) -> CMFormatDescription!Objective C
CMFormatDescriptionRef CMSampleBufferGetFormatDescription ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Описание формата выборок в
CMSampleBuffer
.NULL
если существует ошибка, возвращается.Обсуждение
По возврату вызывающей стороне не принадлежит возвращенный
formatDesc
, и должен сохранить его явно, если вызывающая сторона должна поддержать ссылку на него.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает CMSampleBuffer
CVImageBuffer
из данных носителей.Объявление
Swift
func CMSampleBufferGetImageBuffer(_
sbuf
: CMSampleBuffer!) -> CVImageBuffer!Objective C
CVImageBufferRef CMSampleBufferGetImageBuffer ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
CVImageBuffer
из данных носителей. Результат будетNULL
еслиCMSampleBuffer
не содержит aCVImageBuffer
, еслиCMSampleBuffer
содержит aCMBlockBuffer
, или если существует некоторая другая ошибка.Обсуждение
Вызывающая сторона не владеет возвращенным буфером данных и должна сохранить его явно, если вызывающая сторона должна поддержать ссылку на него.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает число выборок носителей в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetNumSamples(_
sbuf
: CMSampleBuffer!) -> CMItemCountObjective C
CMItemCount CMSampleBufferGetNumSamples ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Число выборок носителей в
CMSampleBuffer
. Если существует ошибка, 0 возвращается.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращается вывод декодируют метку времени
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetOutputDecodeTimeStamp(_
sbuf
: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetOutputDecodeTimeStamp ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Вывод декодирует метку времени
CMSampleBuffer
.CMInvalidTime
если существует ошибка, возвращается.Обсуждение
Для непротиворечивости с
CMSampleBufferGetOutputPresentationTimeStamp
, это вычисляется как: OutputPresentationTimeStamp + ((DecodeTimeStamp - PresentationTimeStamp) / SpeedMultiplier).Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает выходную продолжительность a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetOutputDuration(_
sbuf
: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetOutputDuration ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Выходная продолжительность
CMSampleBuffer
.kCMTimeInvalid
если существует ошибка, возвращается.Обсуждение
OutputDuration является продолжительностью минус любая обрезанная продолжительность, все разделенные на SpeedMultiplier: (Продолжительность - TrimDurationAtStart - TrimDurationAtEnd) / SpeedMultiplier.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает выходную метку времени представления
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetOutputPresentationTimeStamp(_
sbuf
: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetOutputPresentationTimeStamp ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Выходная метка времени представления
CMSampleBuffer
.kCMTimeInvalid
если существует ошибка, возвращается.Обсуждение
Выходная метка времени представления является временем, в которое декодируемый, обрезанный, расширенный и возможно инвертированные выборки должны начать быть представленным. Если
CMSampleBufferGetOutputPresentationTimeStamp
был вызван для явной установки вывода PTS,CMSampleBufferGetOutputPresentationTimeStamp
возвраты это. В противном случаеCMSampleBufferGetOutputPresentationTimeStamp
вычисляет его результат как (PresentationTimeStamp + TrimDurationAtStart) еслиkCMSampleBufferAttachmentKey_Reverse
kCFBooleanTrue
, когда это вычисляет результат как (PresentationTimeStamp + Продолжительность - TrimDurationAtEnd). Они обычно корректны для нерасширенного, несмещенного воспроизведения. Для общего прямого воспроизведения в масштабированном редактировании,OutputPresentationTimeStamp
должен быть установлен в: ((PresentationTimeStamp + TrimDurationAtStart - EditStartMediaTime) / EditSpeedMultiplier) + EditStartTrackTime. Для общего обратного воспроизведения: ((PresentationTimeStamp + Продолжительность - TrimDurationAtEnd - EditStartMediaTime) / EditSpeedMultiplier) + EditStartTrackTime.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
CMSampleBufferGetOutputSampleTimingInfoArray (_: _: _: _:) CMSampleBufferGetOutputSampleTimingInfoArray
Получает массив вывода
CMSampleTimingInfo
структуры, один для каждой выборки в aCMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetOutputSampleTimingInfoArray(_
sbuf
: CMSampleBuffer!, _timingArrayEntries
: CMItemCount, _timingArrayOut
: UnsafeMutablePointer<CMSampleTimingInfo>, _timingArrayEntriesNeededOut
: UnsafeMutablePointer<CMItemCount>) -> OSStatusObjective C
OSStatus CMSampleBufferGetOutputSampleTimingInfoArray ( CMSampleBufferRef sbuf, CMItemCount timingArrayEntries, CMSampleTimingInfo *timingArrayOut, CMItemCount *timingArrayEntriesNeededOut );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.timingArrayEntries
Число записей в синхронизации массива.
timingArrayOut
На выводе, точках к массиву
CMSampleTimingInfo
структуры для получения информации синхронизации.timingArrayEntriesNeededOut
Число записей необходимо для результата.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если только один
CMSampleTimingInfo
структура возвращается, она применяется ко всем выборкам в буфере. См. документациюCMSampleTimingInfo
для подробных данных как синглCMSampleTimingInfo
структура может примениться к многократным выборкам.timingArrayOut
должен быть выделен вызывающей стороной, и число выделенных записей должно быть передано вtimingArrayEntries
. ЕслиtimingArrayOut
NULL
,timingArrayEntriesNeededOut
возвратит требуемое число записей. Точно так же, если*timingArrayEntriesNeededOut
является слишком маленьким,kCMSampleBufferError_ArrayTooSmall
будет возвращен, иtimingArrayEntriesNeededOut
возвратит требуемое число записей. В любом случае вызывающая сторона может тогда сделать соответственно измеренныйtimingArrayOut
и вызовите снова. Например, вызывающая сторона могла бы передать адрес aCMSampleTimingInfo
структура на штабеле (как timingArrayOut), и 1 какtimingArrayEntries
. Если все выборки являются поддающимися описанию с сингломCMSampleTimingInfo
структура (или существует только одна выборка вCMSampleBuffer
), этот вызов успешно выполнится. В противном случае это перестанет работать и возвратит число записей, требуемых вtimingArrayEntriesNeededOut
. Только в этом случае будет вызывающая сторона фактически должна выделить массив. Если нет никакого timingInfo в этомCMSampleBuffer
,kCMSampleBufferError_BufferHasNoSampleTimingInfo
будет возвращен, и*timingArrayEntriesNeededOut
будет установлен в 0.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает численно самую раннюю метку времени представления всех выборок в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetPresentationTimeStamp(_
sbuf
: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetPresentationTimeStamp ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Численно самое раннее демонстрационное представление устанавливает метку времени в
CMSampleBuffer
.kCMTimeInvalid
если существует ошибка, возвращается.Обсуждение
Для выборок «в порядке представления», это - метка времени представления первой выборки. Для выборок порядка представления, это - метка времени представления выборки, которая будет представлена сначала, который является не обязательно первой выборкой в буфере.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает ссылку на a
CMSampleBuffer's
неизменный массив непостоянных демонстрационных присоединяемых словарей (один словарь на выборку в CMSampleBuffer).Объявление
Swift
func CMSampleBufferGetSampleAttachmentsArray(_
sbuf
: CMSampleBuffer!, _createIfNecessary
: Boolean) -> CFArray!Objective C
CFArrayRef CMSampleBufferGetSampleAttachmentsArray ( CMSampleBufferRef sbuf, Boolean createIfNecessary );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.createIfNecessary
Указывает, должен ли пустой массив быть создан (если еще нет никаких демонстрационных присоединений).
Возвращаемое значение
Ссылка на
CMSampleBuffer's
неизменный массив непостоянных демонстрационных присоединяемых словарей (один словарь на выборку вCMSampleBuffer
).NULL
если существует ошибка, возвращаетсяОбсуждение
Присоединения могут тогда быть добавлены/удалены непосредственно вызывающей стороной, с помощью Базовой Основы APIs. По возврату вызывающая сторона не владеет возвращенным массивом присоединяемых словарей и должна сохранить его, если вызывающая сторона должна поддержать ссылку на него. Если еще нет никаких демонстрационных присоединений, и createIfNecessary является истиной, новым
CFArray
содержа N пустойCFMutableDictionaries
возвращается (где N является числом выборок вCMSampleBuffer
), так, чтобы присоединения могли быть добавлены непосредственно вызывающей стороной. Если еще нет никаких демонстрационных присоединений, иcreateIfNecessary
ложь,NULL
возвращается. Один разCFArray
был создан, последующие вызовы возвратят его, даже если не будет все еще никаких демонстрационных присоединений в массиве.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает размер в байтах указанной выборки в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetSampleSize(_
sbuf
: CMSampleBuffer!, _sampleIndex
: CMItemIndex) -> UIntObjective C
size_t CMSampleBufferGetSampleSize ( CMSampleBufferRef sbuf, CMItemIndex sampleIndex );
Параметры
sbuf
CMSampleBuffer
быть опрошеннымsampleIndex
Демонстрационный индекс (0 первая выборка в sbuf),
Возвращаемое значение
Размер в байтах указанной выборки в
CMSampleBuffer
. Если демонстрационный индекс не находится в диапазоне 0.. numSamples-1, размер 0 будет возвращен. Если нет никаких объемов выборки в этомCMSampleBuffer
, размер 0 будет возвращен. Это будет истиной, например, если выборки в буфере будут состоящими из нескольких несмежных участков (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер), или если этоCMSampleBuffer
содержит aCVImageBuffer
.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Получает массив объемов выборки, один для каждой выборки в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetSampleSizeArray(_
sbuf
: CMSampleBuffer!, _sizeArrayEntries
: CMItemCount, _sizeArrayOut
: UnsafeMutablePointer<UInt>, _sizeArrayEntriesNeededOut
: UnsafeMutablePointer<CMItemCount>) -> OSStatusObjective C
OSStatus CMSampleBufferGetSampleSizeArray ( CMSampleBufferRef sbuf, CMItemCount sizeArrayEntries, size_t *sizeArrayOut, CMItemCount *sizeArrayEntriesNeededOut );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.sizeArrayEntries
Число записей в
sizeArray
.sizeArrayOut
Ссылка на массив
size_t
значения для получения объемов выборки.sizeArrayEntriesNeededOut
Число записей необходимо для результата.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если только одна запись размера возвращается, все выборки в буфере имеют этот размер.
sizeArrayOut
должен быть выделен вызывающей стороной, и число выделенных записей должно быть передано вsizeArrayEntries
. ЕслиsizeArrayOut
NULL, sizeArrayEntriesNeededOut возвратит требуемое число записей. Точно так же, еслиsizeArrayEntries
является слишком маленьким,kCMSampleBufferError_ArrayTooSmall
будет возвращен, иsizeArrayEntriesNeededOut
возвратит требуемое число записей. Вызывающая сторона может тогда сделать соответственно измеренныйsizeArrayOut
и вызовите снова. Например, вызывающая сторона могла бы передать адрес asize_t
переменная на штабеле (как sizeArrayOut), и 1 какsizeArrayEntries
. Если все выборки являются тем же размером (или существует только одна выборка вCMSampleBuffer
), этот вызов успешно выполнился бы. В противном случае это перестанет работать и возвратит число записей, требуемых вsizeArrayEntriesNeededOut
. Только в этом случае (многократные выборки различных размеров) будет, вызывающая сторона должна выделить массив. 0 записей будут возвращены, если выборки в буфере будут состоящими из нескольких несмежных участков (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер). Если нет никаких объемов выборки в этомCMSampleBuffer
,kCMSampleBufferError_BufferHasNoSampleSizes
будет возвращен, и*sizeArrayEntriesNeededOut
будет установлен в 0. Это будет истиной, например, если выборки в буфере будут состоящими из нескольких несмежных участков (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер), или если этоCMSampleBuffer
содержит aCVImageBuffer
.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Получает a
CMSampleTimingInfo
структура, описывающая указанную выборку в aCMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetSampleTimingInfo(_
sbuf
: CMSampleBuffer!, _sampleIndex
: CMItemIndex, _timingInfoOut
: UnsafeMutablePointer<CMSampleTimingInfo>) -> OSStatusObjective C
OSStatus CMSampleBufferGetSampleTimingInfo ( CMSampleBufferRef sbuf, CMItemIndex sampleIndex, CMSampleTimingInfo *timingInfoOut );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.sampleIndex
Демонстрационный индекс (0 первая выборка в
sbuf
).timingInfoOut
На выводе, точках к синглу
CMSampleTimingInfo
структура для получения информации синхронизации.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Демонстрационно-специфичное
CMSampleTimingInfo
структура будет возвращена (т.е. с демонстрационно-специфичным presentationTimeStamp и decodeTimeStamp), даже если синглCMSampleTimingInfo
структура использовалась во время создания для описания всех выборок в буфере. timingInfo структура должна быть выделена вызывающей стороной. Если демонстрационный индекс не находится в диапазоне 0.. numSamples-1,kCMSampleBufferError_SampleIndexOutOfRange
будет возвращен. Если существует нетtimingInfo
в этомCMSampleBuffer
,kCMSampleBufferError_BufferHasNoSampleTimingInfo
будет возвращен.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Получает массив
CMSampleTimingInfo
структуры, один для каждой выборки в aCMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetSampleTimingInfoArray(_
sbuf
: CMSampleBuffer!, _timingArrayEntries
: CMItemCount, _timingArrayOut
: UnsafeMutablePointer<CMSampleTimingInfo>, _timingArrayEntriesNeededOut
: UnsafeMutablePointer<CMItemCount>) -> OSStatusObjective C
OSStatus CMSampleBufferGetSampleTimingInfoArray ( CMSampleBufferRef sbuf, CMItemCount timingArrayEntries, CMSampleTimingInfo *timingArrayOut, CMItemCount *timingArrayEntriesNeededOut );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.timingArrayEntries
Число записей в
timingArray
timingArrayOut
На выводе, точках к массиву
CMSampleTimingInfo
структуры для получения информации синхронизацииtimingArrayEntriesNeededOut
Число записей необходимо для результата.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если только одна структура CMSampleTimingInfo возвращается, она применяется ко всем выборкам в буфере. См. документацию
CMSampleTimingInfo
для подробных данных как синглCMSampleTimingInfo
структура может примениться к многократным выборкам.timingArrayOut
должен быть выделен вызывающей стороной, и число выделенных записей должно быть передано в timingArrayEntries. ЕслиtimingArrayOut
NULL
,timingArrayEntriesNeededOut
возвратит требуемое число записей. Точно так же, если*timingArrayEntriesNeededOut i
s слишком маленький,kCMSampleBufferError_ArrayTooSmall
будет возвращен, иtimingArrayEntriesNeededOut
возвратит требуемое число записей. В любом случае вызывающая сторона может тогда сделать соответственно измеренныйtimingArrayOut
и вызовите снова. Например, вызывающая сторона могла бы передать адрес aCMSampleTimingInfo
структура на штабеле (как timingArrayOut), и 1 какtimingArrayEntries
. Если все выборки являются поддающимися описанию с сингломCMSampleTimingInfo
структура (или существует только одна выборка в CMSampleBuffer), этот вызов успешно выполнится. В противном случае это перестанет работать и возвратит число записей, требуемых вtimingArrayEntriesNeededOut
. Только в этом случае будет вызывающая сторона фактически должна выделить массив. Если существует нетtimingInfo
в этомCMSampleBuffer
,kCMSampleBufferError_BufferHasNoSampleTimingInfo
будет возвращен, иtimingArrayEntriesNeededOut
будет установлен в 0.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает общий размер в байтах демонстрационных данных в a
CMSampleBuffer
.Объявление
Swift
func CMSampleBufferGetTotalSampleSize(_
sbuf
: CMSampleBuffer!) -> UIntObjective C
size_t CMSampleBufferGetTotalSampleSize ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Общий размер в байтах демонстрационных данных в
CMSampleBuffer
. Если нет никаких объемов выборки в этомCMSampleBuffer
, размер 0 будет возвращен.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Возвраты
CFTypeID
изCMSampleBuffer
объекты.Объявление
Swift
func CMSampleBufferGetTypeID() -> CFTypeID
Objective C
CFTypeID CMSampleBufferGetTypeID ( void );
Возвращаемое значение
CFTypeID
изCMSampleBuffer
объекты.Обсуждение
Можно проверить если a
CFTypeRef
объект фактически aCMSampleBuffer
путем сравненияCFGetTypeID(object)
сCMSampleBufferGetTypeID()
.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Делает демонстрационный буфер недопустимым, вызывая любой установленный обратный вызов аннулирования.
Объявление
Swift
func CMSampleBufferInvalidate(_
sbuf
: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferInvalidate ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть измененным.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Недопустимый демонстрационный буфер не может использоваться - все средства доступа возвратятся
kCMSampleBufferError_Invalidated
Это не хорошая идея сделать это к демонстрационному буферу, к которому другой модуль может получать доступ одновременно. Пример использования: обратный вызов аннулирования мог отменить незаконченный I/O.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Запросы, допустим ли демонстрационный буфер все еще.
Объявление
Swift
func CMSampleBufferIsValid(_
sbuf
: CMSampleBuffer!) -> BooleanObjective C
Boolean CMSampleBufferIsValid ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть опрошенным.Возвращаемое значение
Булевская переменная, указывающая, допустим ли демонстрационный буфер все еще.
Обсуждение
Возвращает false если
sbuf
NULL
илиCMSampleBufferInvalidate(sbuf)
был вызван, истина иначе. Не выполняет вида исчерпывающей проверки демонстрационного буфера.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Делает a
CMSampleBuffer
готовые данные, путем вызова клиентаCMSampleBufferMakeDataReadyCallback
.Объявление
Swift
func CMSampleBufferMakeDataReady(_
sbuf
: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferMakeDataReady ( CMSampleBufferRef sbuf );
Параметры
sbuf
Изменяемый CMSampleBuffer.
Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
CMSampleBufferMakeDataReadyCallback
передается в клиентом во время создания. Это должно возвратиться 0 в случае успеха, и в этом случае,CMSampleBufferMakeDataReady
установит готовность данныхCMSampleBuffer
к истине.Пример использования: когда пора фактически использовать данные.
Пример подпрограммы обратного вызова: подпрограмма, чтобы вынудить запланированное чтение завершиться.
Если CMSampleBuffer не готов, и существует нет
CMSampleBufferMakeDataReadyCallback
для вызова kCMSampleBufferError_BufferNotReady будет возвращен. Точно так же, еслиCMSampleBuffer
не готово, иCMSampleBufferMakeDataReadyCallback
сбои и возвраты ошибка,kCMSampleBufferError_BufferNotReady
будет возвращен.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Партнеры a
CMSampleBuffer
сCMBlockBuffer
из данных носителей.Объявление
Swift
func CMSampleBufferSetDataBuffer(_
sbuf
: CMSampleBuffer!, _dataBuffer
: CMBlockBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferSetDataBuffer ( CMSampleBufferRef sbuf, CMBlockBufferRef dataBuffer );
Параметры
sbuf
CMSampleBuffer
быть измененным.dataBuffer
CMBlockBuffer
из данных, связываемых с.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Если успешный, эта работа сохраняет
dataBuffer
. Это позволяет вызывающей стороне выпускатьdataBuffer
после вызова этого API, если это не имеет никакой дальнейшей потребности сослаться на него. Это - неперезаписываемая работа; это перестанет работать еслиCMSampleBuffer
уже имеет adataBuffer
. Этот API позволяет aCMSampleBuffer
для существования, с информацией синхронизации и данными о формате, перед, связанные данные обнаруживаются.Пример использования: Некоторые мультимедийные службы могут иметь доступ к объему выборки, синхронизации и данным о формате, прежде чем будут считаны данные. Такие службы могут создать
CMSampleBuffers
с той информацией и вставляют их в очереди рано и используют этот API для присоединенияCMBlockBuffers
позже, когда данные становятся готовыми.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
CMSampleBufferSetDataBufferFromAudioBufferList (_: _: _: _: _:) CMSampleBufferSetDataBufferFromAudioBufferList
Создает a
CMBlockBuffer
содержа копию данных от AudioBufferList. Наборы, копирующие какCMSampleBuffer's
буфер данных. Получающийся буфер (ы) в демонстрационном буфере составит 16 байтов, выровненных еслиkCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment
передается в.Объявление
Swift
func CMSampleBufferSetDataBufferFromAudioBufferList(_
sbuf
: CMSampleBuffer!, _bbufStructAllocator
: CFAllocator!, _bbufMemoryAllocator
: CFAllocator!, _flags
: UInt32, _bufferList
: UnsafePointer<AudioBufferList>) -> OSStatusObjective C
OSStatus CMSampleBufferSetDataBufferFromAudioBufferList ( CMSampleBufferRef sbuf, CFAllocatorRef bbufStructAllocator, CFAllocatorRef bbufMemoryAllocator, uint32_t flags, const AudioBufferList *bufferList );
Параметры
sbuf
CMSampleBuffer
быть измененным.bbufStructAllocator
Средство выделения для использования при создании
CMBlockBuffer
структура.bbufMemoryAllocator
Средство выделения для использования для блока памяти, сохраненного
CMBlockBuffer
.flags
Работа управления флагов.
bufferList
Буферный список, данные которого будут скопированы в новое
CMBlockBuffer
.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Знаки a
CMSampleBuffer's
данные как «готовые».Объявление
Swift
func CMSampleBufferSetDataReady(_
sbuf
: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferSetDataReady ( CMSampleBufferRef sbuf );
Параметры
sbuf
CMSampleBuffer
быть измененным.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Нет никакого способа отменить эту работу. Единственный способ получить «неготовое»
CMSampleBuffer
должен вызватьCMSampleBufferCreate
с dataReady набором параметра ко лжи.Пример использования: в подпрограмме завершения чтения.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Наборы
CMSampleBuffer’s
обратный вызов аннулирования, во время которого вызываютCMSampleBufferInvalidate
.Объявление
Swift
func CMSampleBufferSetInvalidateCallback(_
sbuf
: CMSampleBuffer!, _invalidateCallback
: CMSampleBufferInvalidateCallback, _invalidateRefCon
: UInt64) -> OSStatusObjective C
OSStatus CMSampleBufferSetInvalidateCallback ( CMSampleBufferRef sbuf, CMSampleBufferInvalidateCallback invalidateCallback, uint64_t invalidateRefCon );
Параметры
sbuf
CMSampleBuffer
быть измененным.invalidateCallback
Ссылка на функцию, во время которой вызовут
CMSampleBufferInvalidate
.invalidateRefCon
Ссылочная константа, которая будет передана
invalidateCallback
.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Демонстрационный буфер может только иметь один обратный вызов аннулирования. Обратный вызов аннулирования НЕ вызывают во время обычного демонстрационного буферного завершения.
Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Устанавливает выходную метку времени представления, которая будет использоваться вместо расчетного значения.
Объявление
Swift
func CMSampleBufferSetOutputPresentationTimeStamp(_
sbuf
: CMSampleBuffer!, _outputPresentationTimeStamp
: CMTime) -> OSStatusObjective C
OSStatus CMSampleBufferSetOutputPresentationTimeStamp ( CMSampleBufferRef sbuf, CMTime outputPresentationTimeStamp );
Параметры
sbuf
CMSampleBuffer
быть опрошеннымoutputPresentationTimeStamp
Новое значение для
OutputPresentationTimeStamp
. ПередачаkCMTimeInvalid
вернуться к вычислению по умолчанию.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Выходная метка времени представления является временем, в которое декодируемый, обрезанный, расширенный и возможно инвертированные выборки должны начать быть представленным. По умолчанию это вычисляется путем вызова
CMSampleBufferGetOutputPresentationTimeStamp
. ВызватьCMSampleBufferSetOutputPresentationTimeStamp
явно установить значение дляCMSampleBufferGetOutputPresentationTimeStamp
возвратиться.Для общего прямого воспроизведения в масштабированном редактировании OutputPresentationTimeStamp должен быть установлен в:
((PresentationTimeStamp + TrimDurationAtStart - EditStartMediaTime) / EditSpeedMultiplier) + EditStartTrackTime.
Для общего обратного воспроизведения
OutputPresentationTimeStamp
должен быть установлен в:((PresentationTimeStamp + Duration - TrimDurationAtEnd - EditStartMediaTime) / EditSpeedMultiplier) + EditStartTrackTime
.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Партнеры a
CMSampleBuffer's
готовность данных с другимCMSampleBuffer's
готовность данных.Объявление
Swift
func CMSampleBufferTrackDataReadiness(_
sbuf
: CMSampleBuffer!, _sbufToTrack
: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferTrackDataReadiness ( CMSampleBufferRef sbuf, CMSampleBufferRef sbufToTrack );
Параметры
sbuf
CMSampleBuffer
быть измененным.sbufToTrack
CMSampleBuffer
быть прослеженным.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
После вызова этого API, если
CMSampleBufferDataIsReady
(sbuf) вызывают, он возвратитсяsbufToTrack's
готовность данных. ЕслиCMSampleBufferMakeDataReady
(sbuf) вызывают, он сделаетsbufToTrack
готовые данные.Пример использования: Это позволяет разрывать мультивыборку
CMSampleBuffer
в единственную выборкуCMSampleBuffers
прежде чем данные готовы. Единственная выборкаCMSampleBuffers
все отследит мультивыборкуCMSampleBuffer's
готовность данных.Оператор импорта
Objective C
@import CoreMedia;
Swift
import CoreMedia
Доступность
Доступный в OS X v10.7 и позже.
-
Ссылка на неизменное
CMSampleBufferRef
объект.Объявление
Swift
typealias CMSampleBufferRef = CMSampleBuffer
Objective C
typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;
Обсуждение
A
CMSampleBuffer
Базовый объект Основы, содержащий нуль или более сжатый (или несжатый) выборки определенного типа среды (аудио, видео, мультиплексированное, и т.д.).Доступность
Доступный в OS X v10.7 и позже.
-
Набор информации синхронизации для выборки в a
CMSampleBuffer
.Объявление
Поля
duration
Продолжительность выборки.
Если единственная структура применяется к каждой из выборок, у них всех есть эта продолжительность.
presentationTimeStamp
Время, в которое будет представлена выборка.
Если единственная структура применяется к каждой из выборок, у них всех есть эта продолжительность.
decodeTimeStamp
Время, в которое будет декодироваться выборка.
Если выборки находятся в порядке представления, это должно быть установлено в
kCMInvalidTime
.Обсуждение
Сингл
CMSampleTimingInfo
структура может описать каждую отдельную выборку в aCMSampleBuffer
, если выборки все имеют ту же продолжительность и находятся в порядке представления без разрывов.Доступность
Доступный в OS X v10.7 и позже.
-
Уведомления отправляются демонстрационными буферными объектами.
Объявление
Swift
let kCMSampleBufferNotification_DataBecameReady: CFString! let kCMSampleBufferConduitNotification_InhibitOutputUntil: CFString! let kCMSampleBufferConduitNotification_ResetOutput: CFString! let kCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged: CFString! let kCMSampleBufferConsumerNotification_BufferConsumed: CFString!
Objective C
const CFStringRef kCMSampleBufferNotification_DataBecameReady; const CFStringRef kCMSampleBufferConduitNotification_InhibitOutputUntil; const CFStringRef kCMSampleBufferConduitNotification_ResetOutput; const CFStringRef kCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged; const CFStringRef kCMSampleBufferConsumerNotification_BufferConsumed;
Константы
-
kCMSampleBufferNotification_DataBecameReady
kCMSampleBufferNotification_DataBecameReady
Отправленный на демонстрационном буфере
CMSampleBufferSetDataReady
функционируйте, когда буфер станет готовым.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConduitNotification_InhibitOutputUntil
kCMSampleBufferConduitNotification_InhibitOutputUntil
Отправленный на кабелепроводе демонстрационных буферов для объявления о ближайшем разрыве.
Кабелепровод демонстрационных буферов (например, буферная очередь; посмотрите Ссылка CMBufferQueue) отправляет это уведомление, когда происходит разрыв в декодировании.
userInfo
словарь для этого уведомления содержитkCMSampleBufferConduitNotificationParameter_ResumeTag
ключ, значение которого указывает тег, указывающий, когда выведенный должен возобновиться.Первый демонстрационный буфер после разрыва должен иметь a
kCMSampleBufferAttachmentKey_ResumeOutput
присоединение, значение которого является тем же числом как тег резюме, о котором объявляют в этом уведомлении. Потребитель должен отбросить выходные данные, пока это не получает этот демонстрационный буфер. Если многократные уведомления об этом типе получены, последний указывает тег резюме.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConduitNotification_ResetOutput
kCMSampleBufferConduitNotification_ResetOutput
Отправленный на кабелепроводе демонстрационных буферов для запроса аннулирования незаконченных выходных данных.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged
kCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged
Отправленный на кабелепроводе видео выборки буферизует для сообщения информации о диапазоне предстоящих выходных меток времени представления.
Эта информация может быть важна для переупорядоченного кадром видео и для определенных типов декодирования, куда выборки передаются в различном порядке от порядка, они будут выведены на экран. Если необходимо обработать кадры в порядке представления, можно использовать эту информацию, чтобы гарантировать, чтобы Вы не обрабатывали кадр слишком рано (т.е. когда существуют предстоящие кадры, которые будут иметь более ранние метки времени представления, чем кадр, который будет обработан).
userInfo
словарь для этого уведомления содержитkCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRange
ключ. Если значение для того ключаkCFBooleanTrue
, словарь также содержит один или оба изkCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS
илиkCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS
ключи, предоставляющие информацию о диапазоне перекрывающихся меток времени представления.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConsumerNotification_BufferConsumed
kCMSampleBufferConsumerNotification_BufferConsumed
Дополнительно отправленный, когда используется демонстрационный буфер.
Если демонстрационный буфер имеет значение для
kCMSampleBufferAttachmentKey_PostNotificationWhenConsumed
присоединение, объект, использующий демонстрационный буфер, должно отправить это уведомление с собой как объект уведомления и присоединяемое значение какuserInfo
словарь.Доступный в OS X v10.7 и позже.
-
-
Ключи, используемые в
userInfo
словари уведомлений отправляются демонстрационными буферными объектами.Объявление
Swift
let kCMSampleBufferConduitNotificationParameter_ResumeTag: CFString! let kCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRange: CFString! let kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS: CFString! let kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS: CFString!
Objective C
const CFStringRef kCMSampleBufferConduitNotificationParameter_ResumeTag; const CFStringRef kCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRange; const CFStringRef kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS; const CFStringRef kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS;
Константы
-
kCMSampleBufferConduitNotificationParameter_ResumeTag
kCMSampleBufferConduitNotificationParameter_ResumeTag
Указывает тег, чтобы быть присоединенными к первому демонстрационному буферу после разрыва (тип
CFNumber
).Кабелепровод демонстрационных буферов отправляет
kCMSampleBufferConduitNotification_InhibitOutputUntil
уведомление, когда происходит разрыв в декодировании. Значение для этого ключа будет присоединено к первому демонстрационному буферу после разрыва с помощьюkCMSampleBufferAttachmentKey_ResumeOutput
присоединение, указывая, что клиенты должны возобновить вывод.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRange
kCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRange
Указывает, что метки времени представления предстоящих выходных выборок могут перекрыть те из выборок, поставленных в очередь для вывода (тип
CFBoolean
).Этот ключ всегда присутствует в
userInfo
словарь дляkCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged
уведомление. Если его значениеkCFBooleanTrue
, существует возможность, что предстоящие кадры могут иметь более ранние метки времени представления, чем кадры, ранее предоставленные для кабелепровода, и словарь также содержит один или оба изkCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS
илиkCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS
ключи, предоставляющие дополнительную информацию. Если его значениеkCFBooleanFalse
, нет такой возможности.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS
kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS
Указывает минимальную метку времени представления предстоящих выходных выборок (тип
CFDictionary
).Этот ключ может присутствовать в
userInfo
словарь для дляkCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged
уведомление в случаях, где предстоящие кадры могут иметь более ранние метки времени, чем ранее предоставленные. Его значениеCFDictionary
представление aCMTime
объект (см.CMTimeMakeFromDictionary
).Или этот ключ или
kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS
может быть опущен для отъезда диапазона открытым.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS
kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTS
Указывает максимальную метку времени представления предстоящих выходных выборок (тип
CFDictionary
).Этот ключ может присутствовать в
userInfo
словарь для дляkCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChanged
уведомление в случаях, где предстоящие кадры могут иметь более ранние метки времени, чем ранее предоставленные. Его значениеCFDictionary
представление aCMTime
объект (см.CMTimeMakeFromDictionary
).Или этот ключ или
kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTS
может быть опущен для отъезда диапазона открытым.Доступный в OS X v10.8 и позже.
-
-
Присоединения связались с отдельными выборками в буфере.
Объявление
Swift
let kCMSampleAttachmentKey_NotSync: CFString! let kCMSampleAttachmentKey_PartialSync: CFString! let kCMSampleAttachmentKey_HasRedundantCoding: CFString! let kCMSampleAttachmentKey_IsDependedOnByOthers: CFString! let kCMSampleAttachmentKey_DependsOnOthers: CFString! let kCMSampleAttachmentKey_EarlierDisplayTimesAllowed: CFString! let kCMSampleAttachmentKey_DisplayImmediately: CFString! let kCMSampleAttachmentKey_DoNotDisplay: CFString!
Objective C
const CFStringRef kCMSampleAttachmentKey_NotSync; const CFStringRef kCMSampleAttachmentKey_PartialSync; const CFStringRef kCMSampleAttachmentKey_HasRedundantCoding; const CFStringRef kCMSampleAttachmentKey_IsDependedOnByOthers; const CFStringRef kCMSampleAttachmentKey_DependsOnOthers; const CFStringRef kCMSampleAttachmentKey_EarlierDisplayTimesAllowed; const CFStringRef kCMSampleAttachmentKey_DisplayImmediately; const CFStringRef kCMSampleAttachmentKey_DoNotDisplay;
Константы
-
kCMSampleAttachmentKey_NotSync
kCMSampleAttachmentKey_NotSync
Указывает, является ли выборка синхронизирующей выборкой (тип
CFBoolean
, ложь по умолчанию).Синхронизирующая выборка, также известная как ключевой кадр или IDR (Мгновенное Обновление Декодирования), может декодироваться, не требуя, чтобы декодировались любые предыдущие выборки. Выборки после синхронизирующей выборки также не требуют, чтобы декодировались выборки до синхронизирующей выборки. Выборки, как предполагается, являются синхронизирующими выборками по умолчанию — устанавливает значение для этого ключа к
kCFBooleanTrue
для выборок, которые не должны быть обработаны как синхронизирующие выборки.Это присоединение считано из и записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_PartialSync
kCMSampleAttachmentKey_PartialSync
Указывает, является ли выборка частичной синхронизирующей выборкой (тип
CFBoolean
, ложь по умолчанию).Частичная синхронизирующая выборка может декодироваться, не требуя, чтобы декодировались любые предыдущие выборки. Выборки после двух последовательных частичных синхронизирующих выборок также не требуют, чтобы декодировались выборки до пары. Для обработки выборки как частичной синхронизирующей выборки установите значение
kCFBooleanTrue
и для этого ключа и дляkCMSampleAttachmentKey_NotSync
ключ.Это присоединение считано из и записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_HasRedundantCoding
kCMSampleAttachmentKey_HasRedundantCoding
Указывает, имеет ли выборка избыточное кодирование (тип
CFBoolean
).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не является существующей, избыточной информацией о кодировании для выборки, неизвестно.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_IsDependedOnByOthers
kCMSampleAttachmentKey_IsDependedOnByOthers
Указывает, зависят ли другие выборки от этой выборки для декодирования (тип
CFBoolean
).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не является существующей, информацией о зависимостях для выборки, неизвестно. Если этот ключ присутствует, и его значение
kCFBooleanFalse
, кадр считают сбрасываемым.Это присоединение считано из и записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_DependsOnOthers
kCMSampleAttachmentKey_DependsOnOthers
Указывает, зависит ли выборка от других выборок для декодирования (тип
CFBoolean
).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не является существующей, информацией о зависимостях для выборки, неизвестно. Значение
kCFBooleanFalse
указывает, что выборка не зависит от других выборок (например, я структурируют). ЗначениеkCFBooleanTrue
указывает, что выборка действительно зависит от других выборок (например, кадр P или B).Это присоединение считано из и записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_EarlierDisplayTimesAllowed
kCMSampleAttachmentKey_EarlierDisplayTimesAllowed
Указывает, могут ли более поздние выборки иметь более ранние времена дисплея (тип
CFBoolean
).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не присутствует, эта информация для выборки неизвестна.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_DisplayImmediately
kCMSampleAttachmentKey_DisplayImmediately
Указывает, должна ли выборка быть сразу выведена на экран (тип
CFBoolean
, ложь по умолчанию).Если этот ключ присутствует, выборка должна быть выведена на экран как можно скорее, а не согласно ее метке времени представления. Используйте это присоединение во время выполнения для запроса этого поведения от конвейера дисплея такой как
AVSampleBufferDisplayLayer
класс.Это присоединение не записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleAttachmentKey_DoNotDisplay
kCMSampleAttachmentKey_DoNotDisplay
Указывает, должна ли выборка декодироваться, но не выводиться на экран (тип
CFBoolean
, ложь по умолчанию).Используйте это присоединение во время выполнения для запроса этого поведения от конвейера дисплея такой как
AVSampleBufferDisplayLayer
класс.Это присоединение не записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
Обсуждение
Можно получить и установить присоединения демонстрационного уровня в демонстрационном буфере с помощью
CMSampleBufferGetSampleAttachmentsArray
функция. -
-
Присоединения буферного уровня связались с демонстрационным буфером.
Объявление
Swift
let kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding: CFString! let kCMSampleBufferAttachmentKey_DrainAfterDecoding: CFString! let kCMSampleBufferAttachmentKey_PostNotificationWhenConsumed: CFString! let kCMSampleBufferAttachmentKey_ResumeOutput: CFString! let kCMSampleBufferAttachmentKey_TransitionID: CFString! let kCMSampleBufferAttachmentKey_TrimDurationAtStart: CFString! let kCMSampleBufferAttachmentKey_TrimDurationAtEnd: CFString! let kCMSampleBufferAttachmentKey_SpeedMultiplier: CFString! let kCMSampleBufferAttachmentKey_Reverse: CFString! let kCMSampleBufferAttachmentKey_FillDiscontinuitiesWithSilence: CFString! let kCMSampleBufferAttachmentKey_EmptyMedia: CFString! let kCMSampleBufferAttachmentKey_PermanentEmptyMedia: CFString! let kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately: CFString! let kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration: CFString! let kCMSampleBufferAttachmentKey_SampleReferenceURL: CFString! let kCMSampleBufferAttachmentKey_SampleReferenceByteOffset: CFString! let kCMSampleBufferAttachmentKey_GradualDecoderRefresh: CFString!
Objective C
const CFStringRef kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding; const CFStringRef kCMSampleBufferAttachmentKey_DrainAfterDecoding; const CFStringRef kCMSampleBufferAttachmentKey_PostNotificationWhenConsumed; const CFStringRef kCMSampleBufferAttachmentKey_ResumeOutput; const CFStringRef kCMSampleBufferAttachmentKey_TransitionID; const CFStringRef kCMSampleBufferAttachmentKey_TrimDurationAtStart; const CFStringRef kCMSampleBufferAttachmentKey_TrimDurationAtEnd; const CFStringRef kCMSampleBufferAttachmentKey_SpeedMultiplier; const CFStringRef kCMSampleBufferAttachmentKey_Reverse; const CFStringRef kCMSampleBufferAttachmentKey_FillDiscontinuitiesWithSilence; const CFStringRef kCMSampleBufferAttachmentKey_EmptyMedia; const CFStringRef kCMSampleBufferAttachmentKey_PermanentEmptyMedia; const CFStringRef kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately; const CFStringRef kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration; const CFStringRef kCMSampleBufferAttachmentKey_SampleReferenceURL; const CFStringRef kCMSampleBufferAttachmentKey_SampleReferenceByteOffset; const CFStringRef kCMSampleBufferAttachmentKey_GradualDecoderRefresh;
Константы
-
kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding
kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecoding
Указывает, должен ли демонстрационный буфер быть сброшен прежде, чем декодировать (тип
CFBoolean
, ложь по умолчанию).Это присоединение используется во время выполнения, чтобы указать, что выборка следует, перерыв декодируют последовательность и что является надлежащим сбросить декодер прежде, чем декодировать эту выборку.
Это присоединение не записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_DrainAfterDecoding
kCMSampleBufferAttachmentKey_DrainAfterDecoding
Указывает, должен ли демонстрационный буфер быть истощен после декодирования типа
CFBoolean
, ложь по умолчанию).Это присоединение используется во время выполнения, чтобы указать, что выборка предшествует, перерыв декодируют последовательность и что является надлежащим истощить декодер после декодирования этой выборки.
Это присоединение не записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_PostNotificationWhenConsumed
kCMSampleBufferAttachmentKey_PostNotificationWhenConsumed
Если настоящее, указывает, что декодируют конвейеры, должен отправить уведомление при потреблении демонстрационного буфера (тип
CFDictionary
).Это присоединение используется во время выполнения, чтобы запросить, чтобы конвейер декодирования отправил a
kCMSampleBufferConsumerNotification_BufferConsumed
уведомление, когда используется этот демонстрационный буфер. Значение для этого ключа используется в качествеuserInfo
словарь в уведомлении.Это присоединение не записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_ResumeOutput
kCMSampleBufferAttachmentKey_ResumeOutput
Если настоящее, указывает, что выводит, должен быть возобновлен после разрыва
CFBoolean
, ложь по умолчанию).Это присоединение используется во время выполнения, чтобы запросить, чтобы конвейер декодирования продолжил производить вывод после того, как разрыв объявил об использовании
kCMSampleBufferConduitNotification_InhibitOutputUntil
уведомление.Это присоединение не записано в медиа-файлы.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_TransitionID
kCMSampleBufferAttachmentKey_TransitionID
Отмечает переход от одного источника буферов другому.
Например, во время сплошного воспроизведения списка песен, это присоединение отмечает первый буфер от следующей песни. Если это присоединение находится на буфере, содержащем выборки, первый следующий буфер, содержащий выборки, является буфером, содержащим первые выборки от следующей песни. Значение этого присоединения является a
CFTypeRef
. Этот идентификатор перехода должен быть уникальным в списке воспроизведения, таким образом, каждый переход в списке воспроизведения является уникально идентифицируемым. ACFNumberRef
ответьте, который постепенно увеличивается с каждым переходом, простой пример.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_TrimDurationAtStart
kCMSampleBufferAttachmentKey_TrimDurationAtStart
Продолжительность, которая должна быть удалена в начале демонстрационного буфера после декодирования.
Если это присоединение не присутствует, продолжительность для обрезки является нулем (ничто удаленное). Это - a
CMTime
в Базовой Основе словарь форматируют, как сделаноCMTimeCopyAsDictionary
; использоватьCMTimeMakeFromDictionary
преобразовать вCMTime
. В случаях, где весь вывод после декодирования демонстрационного буфера должен быть отброшен (например, выборки только декодируются к началу декодер) обычное соглашение состоит в том, чтобы установитьkCMSampleBufferAttachmentKey_TrimDurationAtStart
к целой продолжительности а не установить akCMSampleBufferAttachmentKey_TrimDurationAtEnd
присоединение.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_TrimDurationAtEnd
kCMSampleBufferAttachmentKey_TrimDurationAtEnd
Продолжительность, которая должна быть удалена в конце демонстрационного буфера после декодирования.
Если это присоединение не присутствует, продолжительность для обрезки является нулем (ничто удаленное). Это - a
CMTime
в Базовой Основе словарь форматируют, как сделаноCMTimeCopyAsDictionary
; использоватьCMTimeMakeFromDictionary
преобразовать вCMTime
.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_SpeedMultiplier
kCMSampleBufferAttachmentKey_SpeedMultiplier
Фактор, которым должно быть ускорено представление демонстрационного буфера (тип
CFNumber
, значение по умолчанию 1.0).Для нормального воспроизведения множитель скорости был бы
1.0
(который используется, если это присоединение не присутствует); для воспроизведения с удвоенной скоростью множитель скорости был бы2.0
, который разделил бы на два выходную продолжительность. Коэффициенты умножения скорости вступают в силу после обрезки; посмотритеCMSampleBufferGetOutputDuration
. Обратите внимание на то, что это присоединение преимущественно предоставляет информацию о расширяющем продолжительность эффекте: по умолчанию это должно быть реализовано преобразованием уровня, но другие присоединения могут указать более богатые операции протяжения — например, масштабировавшись без сдвига подачи, или передать сдвиг, не изменяя продолжительность. Последовательности умноженных на скорость демонстрационных буферов должны иметь явные метки времени для разъяснения, когда каждый должен быть выведен (см.CMSampleBufferSetOutputPresentationTimeStamp
).Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_Reverse
kCMSampleBufferAttachmentKey_Reverse
Указывает, что декодируемое содержание демонстрационного буфера должно быть инвертировано (тип
CFBoolean
, ложь по умолчанию).Если это присоединение не присутствует, демонстрационный буфер должен играться вперед, как обычно. Реверсирование происходит после множителей скорости и обрезки.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_FillDiscontinuitiesWithSilence
kCMSampleBufferAttachmentKey_FillDiscontinuitiesWithSilence
Заполните различие между несмежными демонстрационными буферами с тишиной (тип
CFBoolean
, ложь по умолчанию).Если демонстрационный буфер вводит буферную очередь и метку времени представления между предыдущим буфером, и буфер с этим присоединением являются несмежными, обрабатывают разрыв путем генерации тишины для разницы во времени.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_EmptyMedia
kCMSampleBufferAttachmentKey_EmptyMedia
Отмечает преднамеренно пустой интервал в последовательности выборок (тип
CFBoolean
, ложь по умолчанию).Когда пустой интервал начинается, выходная метка времени представления демонстрационного буфера указывает. Демонстрационные буферы маркера с этим присоединением используются для объявления о поступлении пустых редактирований.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_PermanentEmptyMedia
kCMSampleBufferAttachmentKey_PermanentEmptyMedia
Отмечает конец последовательности выборок (тип
CFBoolean
, ложь по умолчанию).Выборка маркера буферизует с этим присоединением в дополнение к
kCMSampleBufferAttachmentKey_EmptyMedia
используются, чтобы указать, что не ожидаются никакие дальнейшие выборки.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately
kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediately
Говорит, что пустой маркер должен быть сразу исключен из очереди независимо от его метки времени (тип
CFBoolean
, ложь по умолчанию).Выборка маркера буферизует с этим присоединением в дополнение к
kCMSampleBufferAttachmentKey_EmptyMedia
используются, чтобы сказать, что пустой демонстрационный буфер должен быть сразу исключен из очереди независимо от его метки времени. Это присоединение должно только использоваться с демонстрационными буферами сkCMSampleBufferAttachmentKey_EmptyMedia
присоединение.Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration
kCMSampleBufferAttachmentKey_EndsPreviousSampleDuration
Указывает, что метка времени декодирования демонстрационного буфера может использоваться для определения продолжительности предыдущего демонстрационного буфера (тип
CFBoolean
, ложь по умолчанию).Демонстрационные буферы маркера с этим присоединением могут использоваться в ситуациях, куда демонстрационные буферы передаются, прежде чем их продолжительность известна. В таких ситуациях обычно получатель может использовать метку времени каждого демонстрационного буфера для вычисления продолжительности предыдущего демонстрационного буфера. Демонстрационный буфер маркера с этим присоединением отправляется для обеспечения метки времени для вычисления продолжительности заключительного демонстрационного буфера.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_SampleReferenceURL
kCMSampleBufferAttachmentKey_SampleReferenceURL
Указывает URL, где демонстрационные данные (тип
CFURL
).Этот ключ только используется для демонстрационных буферов, представляющих демонстрационные ссылки.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_SampleReferenceByteOffset
kCMSampleBufferAttachmentKey_SampleReferenceByteOffset
Указывает байтовое смещение, при котором начинаются демонстрационные данные (тип
CFNumber
).Этот ключ только используется для демонстрационных буферов, представляющих демонстрационные ссылки. Его значение является байтовым смещением с начала данных в URL, на который ссылаются, к непрерывным демонстрационным данным.
Доступный в OS X v10.7 и позже.
-
kCMSampleBufferAttachmentKey_GradualDecoderRefresh
kCMSampleBufferAttachmentKey_GradualDecoderRefresh
Указывает количество обновления декодера (тип
CFNumber
).Демонстрационные буферы с этим присоединением могут использоваться для идентификации аудио количества обновления декодера.
Доступный в OS X v10.7 и позже.
Обсуждение
Чтобы получить и установить присоединения буферного уровня демонстрационного буфера, используйте функции, описанные в Ссылке CMAttachment.
-
Эта таблица приводит коды результата, определенные для CMSampleBuffer
APIs.
Код результата |
Значение |
Описание |
---|---|---|
noErr |
0 |
Никакая ошибка. |
kCMSampleBufferError_AllocationFailed |
- 12730 |
Указывает, что выделение перестало работать. |
kCMSampleBufferError_RequiredParameterMissing |
- 12731 |
Указывает это |
kCMSampleBufferError_AlreadyHasDataBuffer |
- 12732 |
Указывает, что была предпринята попытка для установки буфера данных на a |
kCMSampleBufferError_BufferNotReady |
- 12733 |
Указывает, что не мог быть приготовлен буфер. |
kCMSampleBufferError_SampleIndexOutOfRange |
- 12734 |
Указывает, что демонстрационный индекс не был между |
kCMSampleBufferError_BufferHasNoSampleSizes |
- 12735 |
Указывает, что была попытка получить информацию объема выборки, когда не было ни одного. |
kCMSampleBufferError_BufferHasNoSampleTimingInfo |
- 12736 |
Указывает, что была попытка получить демонстрационную информацию синхронизации, когда не было ни одного. |
kCMSampleBufferError_ArrayTooSmall |
- 12737 |
Указывает, что выходной массив не был достаточно большим для массива, который требуют. |
kCMSampleBufferError_InvalidEntryCount |
- 12738 |
Указывает, что информация синхронизации или количество записи массива размера не были |
kCMSampleBufferError_CannotSubdivide |
- 12739 |
Указывает, что демонстрационный буфер не содержит объемы выборки. Это может произойти, когда выборки в буфере являются состоящими из нескольких несмежных участков (например, в нечередующемся аудио, где значения канала для единственной выборки рассеиваются через буфер). |
kCMSampleBufferError_SampleTimingInfoInvalid |
- 12740 |
Указывает, что буфер неожиданно содержит нечисловую демонстрационную информацию синхронизации. |
kCMSampleBufferError_InvalidMediaTypeForOperation |
- 12741 |
Указывает, что тип среды, указанный описанием формата, не допустим для данной работы. |
kCMSampleBufferError_InvalidSampleData |
- 12742 |
Указывает, что Буфер содержит неправильных данных. Это значение только возвращается |
kCMSampleBufferError_InvalidMediaFormat |
- 12743 |
Указывает, что формат данных носителей не соответствует данное описание формата. Например, описание формата соединилось с a |
kCMSampleBufferError_Invalidated |
- 12744 |
Указывает, что демонстрационный буфер был лишен законной силы. |