Ссылка CMSampleBuffer
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import CoreMedia
Objective C
@import CoreMedia;
Этот документ описывает 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использовать средство выделения по умолчанию.dataBufferCMBlockBufferдля данных носителей. Это может быть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Доступность
Доступный в iOS 4.0 и позже.
-
Вызывает функцию для каждой отдельной выборки в демонстрационном буфере.
Объявление
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 );Параметры
sbufCMSampleBufferэто может содержать многократные выборки.refconФункция, которую вызовут для каждой отдельной выборки.
refconRefcon, который будет передан функции обратного вызова.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Система создаст временные демонстрационные буферы для отдельных выборок. Каждый демонстрационный буфер будет относиться к демонстрационным данным и содержащий его синхронизацию, размер и присоединения. Функция обратного вызова может сохранить эти демонстрационные буферы при желании. Если функция обратного вызова возвратит ошибку, то итерация сразу остановится и функционировать возвраты ошибка, полученная от обратного вызова. Функция возвратится
kCMSampleBufferError_CannotSubdivideошибка, при отсутствии объемов выборки в предоставленном демонстрационном буфере. Это произойдет, например, если выборки в буфере будут состоящими из нескольких несмежных участков (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер).Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Создает 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использовать средство выделения по умолчанию.sbufCMSampleBufferсодержа исходные выборки.sampleRangeДиапазон выборок для копирования с
sbuf, где демонстрационный 0 является первой выборкой вsbufsBufOutНа выводе, точках к недавно создаваемому
CMSampleBuffer.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Выборки, содержащие нечередующееся аудио, в настоящее время не поддерживаются.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Создает 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<Int>, _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использовать средство выделения по умолчанию.dataBufferCMBlockBufferдля данных носителей. Это может бытьNULL, aCMBlockBufferбез резервной памяти, aCMBlockBufferс резервной памятью, но никакими данными все же или aCMBlockBufferэто уже содержит данные носителей. ЕслиCMBlockBufferсодержит данные носителей,dataReadyдолжен бытьtrue. Булевская переменнаяdataReadyдолжен также бытьtrueеслиdataBufferNullиnumSamples0.dataReadyУказывает, содержит ли BlockBuffer уже данные носителей
makeDataReadyCallbackОбратный вызов это
CMSampleBufferMakeDataReadyдолжен вызвать для создания данных готовыми. Может бытьNULL.makeDataReadyRefconRefcon
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Доступность
Доступный в iOS 4.0 и позже.
-
Создает копию 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использовать средство выделения по умолчанию.sbufCMSampleBufferбыть скопированным.sbufCopyOutНа выводе, точках к недавно создаваемой копии
CMSampleBuffer.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Копия мелка: скалярные свойства (размеры и синхронизирующий) копируются непосредственно, буфер данных и форматируют описание, сохраняются, и присоединения, которые могут быть распространены, сохраняются словарем копии. Если
sbuf'sданные не готовы, копия будет установлена отследить свою готовность.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Создает копию
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использовать средство выделения по умолчанию.originalSBufCMSampleBufferсодержа исходные выборки.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Доступность
Доступный в iOS 4.0 и позже.
-
Создает 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использовать средство выделения по умолчанию.imageBufferCVImageBufferдля данных носителей. Это может быть aCVImageBufferчье содержание еще не было представлено, или aCVImageBufferэто уже содержит данные носителей (когдаdataReadyдолжна быть истина). Может не бытьNULL.dataReadyУказывает действительно ли
CVImageBufferуже содержит данные носителей.makeDataReadyCallbackОбратный вызов это
CMSampleBufferMakeDataReadyдолжен вызвать для создания данных готовыми. Может бытьNULL.makeDataReadyRefconRefcon
CMSampleBufferMakeDataReadyдолжен передать обратному вызову.formatDescriptionОписание формата данных носителей. Посмотрите обсуждение выше для ограничений. Может не быть
NULL.sampleTimingA
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Доступность
Доступный в iOS 4.0 и позже.
-
Возвраты, действительно ли a
CMSampleBuffer'sданные готовы.Объявление
Swift
func CMSampleBufferDataIsReady(_scuff: CMSampleBuffer!) -> BooleanObjective C
Boolean CMSampleBufferDataIsReady ( CMSampleBufferRef sbuf );Параметры
scuffCMSampleBufferбыть опрошенным.Возвращаемое значение
Булевская переменная, указывающая, действительно ли
CMSampleBuffer'sданные готовы. True возвращается для специальных буферов маркера, eventhough у них нет данных. Если существует ошибка, false возвращается.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer (_: _: _: _: _: _: _: _:) CMSampleBufferGetAudioBufferListWithRetainedBlockBufferСоздает
AudioBufferListсодержа данные отCMSampleBuffer, и aCMBlockBufferкакие ссылки (и управляет временем жизни), данные в этомAudioBufferList. Данные могут или не могут быть скопированы, в зависимости от смежности и 16-байтового выравнивания данных CMSampleBuffer. Буферы, помещенные в AudioBufferList, как гарантируют, будут непрерывны. Буферы в AudioBufferList составят 16 байтов, выровненных еслиkCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignmentпередается в.Объявление
Swift
func CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(_sbuf: CMSampleBuffer!, _bufferListSizeNeededOut: UnsafeMutablePointer<Int>, _bufferListOut: UnsafeMutablePointer<AudioBufferList>, _bufferListSize: Int, _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 );Параметры
sbufCMSampleBufferбыть полученным доступ.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Доступность
Доступный в iOS 4.0 и позже.
-
CMSampleBufferGetAudioStreamPacketDescriptions (_: _: _: _:) CMSampleBufferGetAudioStreamPacketDescriptionsСоздает массив
AudioStreamPacketDescriptionsпоскольку переменные байты на пакет или переменную структурируют на пакетные аудиоданные в предоставленномCMSampleBuffer. Постоянная скорость передачи, постоянное аудио кадров на пакет приводит к возвращаемому значению noErr и никаких описаний пакета. Этот API является определенным для демонстрационных буферов формата аудио и возвратитсяkCMSampleBufferError_InvalidMediaTypeForOperationесли вызвано с буфером неаудиосэмпла.Объявление
Swift
func CMSampleBufferGetAudioStreamPacketDescriptions(_sbuf: CMSampleBuffer!, _packetDescriptionsSize: Int, _packetDescriptionsOut: UnsafeMutablePointer<AudioStreamPacketDescription>, _packetDescriptionsSizeNeededOut: UnsafeMutablePointer<Int>) -> OSStatusObjective C
OSStatus CMSampleBufferGetAudioStreamPacketDescriptions ( CMSampleBufferRef sbuf, size_t packetDescriptionsSize, AudioStreamPacketDescription *packetDescriptionsOut, size_t *packetDescriptionsSizeNeededOut );Параметры
sbufCMSampleBufferбыть полученным доступ.packetDescriptionsSizeРазмер
packetDescriptionsOutкак выделено вызывающей стороной.packetDescriptionsOutВыделенный вызывающей стороной, получает описания пакета для выборок в
CMSampleBuffer. Если не-NULL иpacketDescriptionsSizeявляется слишком маленьким,kFigSampleBufferError_ArrayTooSmallвозвращается.packetDescriptionsSizeNeededOutИспользуемый для запросов для корректного размера, требуемого для
packetDescriptionsOut. Может быть NULL.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
CMSampleBufferGetAudioStreamPacketDescriptionsPtr (_: _: _:) CMSampleBufferGetAudioStreamPacketDescriptionsPtrПолучает указатель на (и размер) постоянный массив
AudioStreamPacketDescriptionsпоскольку переменные байты на пакет или переменную структурируют на пакетные аудиоданные в предоставленномCMSampleBuffer. Указатель будет оставаться допустимым настолько же долго какsbufпродолжает быть сохраненным. Постоянная скорость передачи, постоянное аудио кадров на пакет приводит к возвращаемому значениюnoErrи никакие описания пакета. Этот API является определенным для демонстрационных буферов формата аудио и возвратитсяkCMSampleBufferError_InvalidMediaTypeForOperationесли вызвано с буфером неаудиосэмпла.Объявление
Swift
func CMSampleBufferGetAudioStreamPacketDescriptionsPtr(_sbuf: CMSampleBuffer!, _packetDescriptionsPtrOut: UnsafeMutablePointer<UnsafePointer<AudioStreamPacketDescription>>, _packetDescriptionsSizeOut: UnsafeMutablePointer<Int>) -> OSStatusObjective C
OSStatus CMSampleBufferGetAudioStreamPacketDescriptionsPtr ( CMSampleBufferRef sbuf, const AudioStreamPacketDescription **packetDescriptionsPtrOut, size_t *packetDescriptionsSizeOut );Параметры
sbufCMSampleBufferбыть измененным.packetDescriptionsPtrOutНа выводе, содержит указатель на постоянный массив
AudioStreamPacketDescriptions. Может бытьNULL.packetDescriptionsSizeOutРазмер в байтах постоянного массива
AudioStreamPacketDescriptions. Может бытьNULL.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает CMSampleBuffer
CMBlockBufferиз данных носителей.Объявление
Swift
func CMSampleBufferGetDataBuffer(_sbuf: CMSampleBuffer!) -> CMBlockBuffer!Objective C
CMBlockBufferRef CMSampleBufferGetDataBuffer ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
CMBlockBufferиз данных носителей. Результат будетNULLеслиCMSampleBufferне содержит aCMBlockBuffer, еслиCMSampleBufferсодержит aCVImageBuffer, или если существует некоторая другая ошибка.Обсуждение
Вызывающей стороне не принадлежит возвращенный
dataBuffer, и должен сохранить его явно, если вызывающая сторона должна поддержать ссылку на него.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает численно самую раннюю метку времени декодирования всех выборок в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetDecodeTimeStamp(_sbuf: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetDecodeTimeStamp ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Численно самое раннее демонстрационное декодирование устанавливает метку времени в
CMSampleBuffer.kCMTimeInvalidесли существует ошибка, возвращается.Обсуждение
Возвращенная метка времени декодирования всегда является меткой времени декодирования первой выборки в буфере, так как даже из порядка представления выборки, как ожидают, будут в порядке декодирования в буфере.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает общую продолжительность a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetDuration(_sbuf: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetDuration ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Продолжительность
CMSampleBuffer.kCMTimeInvalidесли существует ошибка, возвращается.Обсуждение
Если буфер содержит выборок порядка представления, любые разрывы во временной шкале представления не представлены в возвращенной продолжительности. Возвращенная продолжительность является просто суммой всех отдельных демонстрационных продолжительностей.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает описание формата выборок в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetFormatDescription(_sbuf: CMSampleBuffer!) -> CMFormatDescription!Objective C
CMFormatDescriptionRef CMSampleBufferGetFormatDescription ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Описание формата выборок в
CMSampleBuffer.NULLесли существует ошибка, возвращается.Обсуждение
По возврату вызывающей стороне не принадлежит возвращенный
formatDesc, и должен сохранить его явно, если вызывающая сторона должна поддержать ссылку на него.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает CMSampleBuffer
CVImageBufferиз данных носителей.Объявление
Swift
func CMSampleBufferGetImageBuffer(_sbuf: CMSampleBuffer!) -> CVImageBuffer!Objective C
CVImageBufferRef CMSampleBufferGetImageBuffer ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
CVImageBufferиз данных носителей. Результат будетNULLеслиCMSampleBufferне содержит aCVImageBuffer, еслиCMSampleBufferсодержит aCMBlockBuffer, или если существует некоторая другая ошибка.Обсуждение
Вызывающая сторона не владеет возвращенным буфером данных и должна сохранить его явно, если вызывающая сторона должна поддержать ссылку на него.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает число выборок носителей в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetNumSamples(_sbuf: CMSampleBuffer!) -> CMItemCountObjective C
CMItemCount CMSampleBufferGetNumSamples ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Число выборок носителей в
CMSampleBuffer. Если существует ошибка, 0 возвращается.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращается вывод декодируют метку времени
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetOutputDecodeTimeStamp(_sbuf: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetOutputDecodeTimeStamp ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Вывод декодирует метку времени
CMSampleBuffer.CMInvalidTimeесли существует ошибка, возвращается.Обсуждение
Для непротиворечивости с
CMSampleBufferGetOutputPresentationTimeStamp, это вычисляется как: OutputPresentationTimeStamp + ((DecodeTimeStamp - PresentationTimeStamp) / SpeedMultiplier).Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает выходную продолжительность a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetOutputDuration(_sbuf: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetOutputDuration ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Выходная продолжительность
CMSampleBuffer.kCMTimeInvalidесли существует ошибка, возвращается.Обсуждение
OutputDuration является продолжительностью минус любая обрезанная продолжительность, все разделенные на SpeedMultiplier: (Продолжительность - TrimDurationAtStart - TrimDurationAtEnd) / SpeedMultiplier.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает выходную метку времени представления
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetOutputPresentationTimeStamp(_sbuf: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetOutputPresentationTimeStamp ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Выходная метка времени представления
CMSampleBuffer.kCMTimeInvalidесли существует ошибка, возвращается.Обсуждение
Выходная метка времени представления является временем, в которое декодируемый, обрезанный, расширенный и возможно инвертированные выборки должны начать быть представленным. Если
CMSampleBufferGetOutputPresentationTimeStampбыл вызван для явной установки вывода PTS,CMSampleBufferGetOutputPresentationTimeStampвозвраты это. В противном случаеCMSampleBufferGetOutputPresentationTimeStampвычисляет его результат как (PresentationTimeStamp + TrimDurationAtStart) еслиkCMSampleBufferAttachmentKey_ReversekCFBooleanTrue, когда это вычисляет результат как (PresentationTimeStamp + Продолжительность - TrimDurationAtEnd). Они обычно корректны для нерасширенного, несмещенного воспроизведения. Для общего прямого воспроизведения в масштабированном редактировании,OutputPresentationTimeStampдолжен быть установлен в: ((PresentationTimeStamp + TrimDurationAtStart - EditStartMediaTime) / EditSpeedMultiplier) + EditStartTrackTime. Для общего обратного воспроизведения: ((PresentationTimeStamp + Продолжительность - TrimDurationAtEnd - EditStartMediaTime) / EditSpeedMultiplier) + EditStartTrackTime.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
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 );Параметры
sbufCMSampleBufferбыть опрошенным.timingArrayEntriesЧисло записей в синхронизации массива.
timingArrayOutНа выводе, точках к массиву
CMSampleTimingInfoструктуры для получения информации синхронизации.timingArrayEntriesNeededOutЧисло записей необходимо для результата.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если только один
CMSampleTimingInfoструктура возвращается, она применяется ко всем выборкам в буфере. См. документациюCMSampleTimingInfoдля подробных данных как синглCMSampleTimingInfoструктура может примениться к многократным выборкам.timingArrayOutдолжен быть выделен вызывающей стороной, и число выделенных записей должно быть передано вtimingArrayEntries. ЕслиtimingArrayOutNULL,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Доступность
Доступный в iOS 4.0 и позже.
-
Возвращает численно самую раннюю метку времени представления всех выборок в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetPresentationTimeStamp(_sbuf: CMSampleBuffer!) -> CMTimeObjective C
CMTime CMSampleBufferGetPresentationTimeStamp ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Численно самое раннее демонстрационное представление устанавливает метку времени в
CMSampleBuffer.kCMTimeInvalidесли существует ошибка, возвращается.Обсуждение
Для выборок «в порядке представления», это - метка времени представления первой выборки. Для выборок порядка представления, это - метка времени представления выборки, которая будет представлена сначала, который является не обязательно первой выборкой в буфере.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает ссылку на a
CMSampleBuffer'sнеизменный массив непостоянных демонстрационных присоединяемых словарей (один словарь на выборку в CMSampleBuffer).Объявление
Swift
func CMSampleBufferGetSampleAttachmentsArray(_sbuf: CMSampleBuffer!, _createIfNecessary: Boolean) -> CFArray!Objective C
CFArrayRef CMSampleBufferGetSampleAttachmentsArray ( CMSampleBufferRef sbuf, Boolean createIfNecessary );Параметры
sbufCMSampleBufferбыть опрошенным.createIfNecessaryУказывает, должен ли пустой массив быть создан (если еще нет никаких демонстрационных присоединений).
Возвращаемое значение
Ссылка на
CMSampleBuffer'sнеизменный массив непостоянных демонстрационных присоединяемых словарей (один словарь на выборку вCMSampleBuffer).NULLесли существует ошибка, возвращаетсяОбсуждение
Присоединения могут тогда быть добавлены/удалены непосредственно вызывающей стороной, с помощью Базовой Основы APIs. По возврату вызывающая сторона не владеет возвращенным массивом присоединяемых словарей и должна сохранить его, если вызывающая сторона должна поддержать ссылку на него. Если еще нет никаких демонстрационных присоединений, и createIfNecessary является истиной, новым
CFArrayсодержа N пустойCFMutableDictionariesвозвращается (где N является числом выборок вCMSampleBuffer), так, чтобы присоединения могли быть добавлены непосредственно вызывающей стороной. Если еще нет никаких демонстрационных присоединений, иcreateIfNecessaryложь,NULLвозвращается. Один разCFArrayбыл создан, последующие вызовы возвратят его, даже если не будет все еще никаких демонстрационных присоединений в массиве.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает размер в байтах указанной выборки в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetSampleSize(_sbuf: CMSampleBuffer!, _sampleIndex: CMItemIndex) -> IntObjective C
size_t CMSampleBufferGetSampleSize ( CMSampleBufferRef sbuf, CMItemIndex sampleIndex );Параметры
sbufCMSampleBufferбыть опрошеннымsampleIndexДемонстрационный индекс (0 первая выборка в sbuf),
Возвращаемое значение
Размер в байтах указанной выборки в
CMSampleBuffer. Если демонстрационный индекс не находится в диапазоне 0.. numSamples-1, размер 0 будет возвращен. Если нет никаких объемов выборки в этомCMSampleBuffer, размер 0 будет возвращен. Это будет истиной, например, если выборки в буфере будут состоящими из нескольких несмежных участков (например, нечередующееся аудио, где значения канала для единственной выборки рассеиваются через буфер), или если этоCMSampleBufferсодержит aCVImageBuffer.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Получает массив объемов выборки, один для каждой выборки в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetSampleSizeArray(_sbuf: CMSampleBuffer!, _sizeArrayEntries: CMItemCount, _sizeArrayOut: UnsafeMutablePointer<Int>, _sizeArrayEntriesNeededOut: UnsafeMutablePointer<CMItemCount>) -> OSStatusObjective C
OSStatus CMSampleBufferGetSampleSizeArray ( CMSampleBufferRef sbuf, CMItemCount sizeArrayEntries, size_t *sizeArrayOut, CMItemCount *sizeArrayEntriesNeededOut );Параметры
sbufCMSampleBufferбыть опрошенным.sizeArrayEntriesЧисло записей в
sizeArray.sizeArrayOutСсылка на массив
size_tзначения для получения объемов выборки.sizeArrayEntriesNeededOutЧисло записей необходимо для результата.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если только одна запись размера возвращается, все выборки в буфере имеют этот размер.
sizeArrayOutдолжен быть выделен вызывающей стороной, и число выделенных записей должно быть передано вsizeArrayEntries. ЕслиsizeArrayOutNULL, 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Доступность
Доступный в iOS 4.0 и позже.
-
Получает a
CMSampleTimingInfoструктура, описывающая указанную выборку в aCMSampleBuffer.Объявление
Swift
func CMSampleBufferGetSampleTimingInfo(_sbuf: CMSampleBuffer!, _sampleIndex: CMItemIndex, _timingInfoOut: UnsafeMutablePointer<CMSampleTimingInfo>) -> OSStatusObjective C
OSStatus CMSampleBufferGetSampleTimingInfo ( CMSampleBufferRef sbuf, CMItemIndex sampleIndex, CMSampleTimingInfo *timingInfoOut );Параметры
sbufCMSampleBufferбыть опрошенным.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Доступность
Доступный в iOS 4.0 и позже.
-
Получает массив
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 );Параметры
sbufCMSampleBufferбыть опрошенным.timingArrayEntriesЧисло записей в
timingArraytimingArrayOutНа выводе, точках к массиву
CMSampleTimingInfoструктуры для получения информации синхронизацииtimingArrayEntriesNeededOutЧисло записей необходимо для результата.
Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Если только одна структура CMSampleTimingInfo возвращается, она применяется ко всем выборкам в буфере. См. документацию
CMSampleTimingInfoдля подробных данных как синглCMSampleTimingInfoструктура может примениться к многократным выборкам.timingArrayOutдолжен быть выделен вызывающей стороной, и число выделенных записей должно быть передано в timingArrayEntries. ЕслиtimingArrayOutNULL,timingArrayEntriesNeededOutвозвратит требуемое число записей. Точно так же, если*timingArrayEntriesNeededOut is слишком маленький,kCMSampleBufferError_ArrayTooSmallбудет возвращен, иtimingArrayEntriesNeededOutвозвратит требуемое число записей. В любом случае вызывающая сторона может тогда сделать соответственно измеренныйtimingArrayOutи вызовите снова. Например, вызывающая сторона могла бы передать адрес aCMSampleTimingInfoструктура на штабеле (как timingArrayOut), и 1 какtimingArrayEntries. Если все выборки являются поддающимися описанию с сингломCMSampleTimingInfoструктура (или существует только одна выборка в CMSampleBuffer), этот вызов успешно выполнится. В противном случае это перестанет работать и возвратит число записей, требуемых вtimingArrayEntriesNeededOut. Только в этом случае будет вызывающая сторона фактически должна выделить массив. Если существует нетtimingInfoв этомCMSampleBuffer,kCMSampleBufferError_BufferHasNoSampleTimingInfoбудет возвращен, иtimingArrayEntriesNeededOutбудет установлен в 0.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвращает общий размер в байтах демонстрационных данных в a
CMSampleBuffer.Объявление
Swift
func CMSampleBufferGetTotalSampleSize(_sbuf: CMSampleBuffer!) -> IntObjective C
size_t CMSampleBufferGetTotalSampleSize ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Общий размер в байтах демонстрационных данных в
CMSampleBuffer. Если нет никаких объемов выборки в этомCMSampleBuffer, размер 0 будет возвращен.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Возвраты
CFTypeIDизCMSampleBufferобъекты.Объявление
Swift
func CMSampleBufferGetTypeID() -> CFTypeIDObjective C
CFTypeID CMSampleBufferGetTypeID ( void );Возвращаемое значение
CFTypeIDизCMSampleBufferобъекты.Обсуждение
Можно проверить если a
CFTypeRefобъект фактически aCMSampleBufferпутем сравненияCFGetTypeID(object)сCMSampleBufferGetTypeID().Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Делает демонстрационный буфер недопустимым, вызывая любой установленный обратный вызов аннулирования.
Объявление
Swift
func CMSampleBufferInvalidate(_sbuf: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferInvalidate ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть измененным.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Недопустимый демонстрационный буфер не может использоваться - все средства доступа возвратятся
kCMSampleBufferError_InvalidatedЭто не хорошая идея сделать это к демонстрационному буферу, к которому другой модуль может получать доступ одновременно. Пример использования: обратный вызов аннулирования мог отменить незаконченный I/O.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Запросы, допустим ли демонстрационный буфер все еще.
Объявление
Swift
func CMSampleBufferIsValid(_sbuf: CMSampleBuffer!) -> BooleanObjective C
Boolean CMSampleBufferIsValid ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть опрошенным.Возвращаемое значение
Булевская переменная, указывающая, допустим ли демонстрационный буфер все еще.
Обсуждение
Возвращает false если
sbufNULLилиCMSampleBufferInvalidate(sbuf)был вызван, истина иначе. Не выполняет вида исчерпывающей проверки демонстрационного буфера.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Делает 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Доступность
Доступный в iOS 4.0 и позже.
-
Партнеры a
CMSampleBufferсCMBlockBufferиз данных носителей.Объявление
Swift
func CMSampleBufferSetDataBuffer(_sbuf: CMSampleBuffer!, _dataBuffer: CMBlockBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferSetDataBuffer ( CMSampleBufferRef sbuf, CMBlockBufferRef dataBuffer );Параметры
sbufCMSampleBufferбыть измененным.dataBufferCMBlockBufferиз данных, связываемых с.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Если успешный, эта работа сохраняет
dataBuffer. Это позволяет вызывающей стороне выпускатьdataBufferпосле вызова этого API, если это не имеет никакой дальнейшей потребности сослаться на него. Это - неперезаписываемая работа; это перестанет работать еслиCMSampleBufferуже имеет adataBuffer. Этот API позволяет aCMSampleBufferдля существования, с информацией синхронизации и данными о формате, перед, связанные данные обнаруживаются.Пример использования: Некоторые мультимедийные службы могут иметь доступ к объему выборки, синхронизации и данным о формате, прежде чем будут считаны данные. Такие службы могут создать
CMSampleBuffersс той информацией и вставляют их в очереди рано и используют этот API для присоединенияCMBlockBuffersпозже, когда данные становятся готовыми.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
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 );Параметры
sbufCMSampleBufferбыть измененным.bbufStructAllocatorСредство выделения для использования при создании
CMBlockBufferструктура.bbufMemoryAllocatorСредство выделения для использования для блока памяти, сохраненного
CMBlockBuffer.flagsРабота управления флагов.
bufferListБуферный список, данные которого будут скопированы в новое
CMBlockBuffer.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Знаки a
CMSampleBuffer'sданные как «готовые».Объявление
Swift
func CMSampleBufferSetDataReady(_sbuf: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferSetDataReady ( CMSampleBufferRef sbuf );Параметры
sbufCMSampleBufferбыть измененным.Возвращаемое значение
Код результата. Посмотрите Коды Результата
Обсуждение
Нет никакого способа отменить эту работу. Единственный способ получить «неготовое»
CMSampleBufferдолжен вызватьCMSampleBufferCreateс dataReady набором параметра ко лжи.Пример использования: в подпрограмме завершения чтения.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Наборы
CMSampleBuffer’sобратный вызов аннулирования, во время которого вызываютCMSampleBufferInvalidate.Объявление
Swift
func CMSampleBufferSetInvalidateCallback(_sbuf: CMSampleBuffer!, _invalidateCallback: CMSampleBufferInvalidateCallback, _invalidateRefCon: UInt64) -> OSStatusObjective C
OSStatus CMSampleBufferSetInvalidateCallback ( CMSampleBufferRef sbuf, CMSampleBufferInvalidateCallback invalidateCallback, uint64_t invalidateRefCon );Параметры
sbufCMSampleBufferбыть измененным.invalidateCallbackСсылка на функцию, во время которой вызовут
CMSampleBufferInvalidate.invalidateRefConСсылочная константа, которая будет передана
invalidateCallback.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
Демонстрационный буфер может только иметь один обратный вызов аннулирования. Обратный вызов аннулирования НЕ вызывают во время обычного демонстрационного буферного завершения.
Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Устанавливает выходную метку времени представления, которая будет использоваться вместо расчетного значения.
Объявление
Swift
func CMSampleBufferSetOutputPresentationTimeStamp(_sbuf: CMSampleBuffer!, _outputPresentationTimeStamp: CMTime) -> OSStatusObjective C
OSStatus CMSampleBufferSetOutputPresentationTimeStamp ( CMSampleBufferRef sbuf, CMTime outputPresentationTimeStamp );Параметры
sbufCMSampleBufferбыть опрошенным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Доступность
Доступный в iOS 4.0 и позже.
-
Партнеры a
CMSampleBuffer'sготовность данных с другимCMSampleBuffer'sготовность данных.Объявление
Swift
func CMSampleBufferTrackDataReadiness(_sbuf: CMSampleBuffer!, _sbufToTrack: CMSampleBuffer!) -> OSStatusObjective C
OSStatus CMSampleBufferTrackDataReadiness ( CMSampleBufferRef sbuf, CMSampleBufferRef sbufToTrack );Параметры
sbufCMSampleBufferбыть измененным.sbufToTrackCMSampleBufferбыть прослеженным.Возвращаемое значение
Код результата. Посмотрите Коды Результата.
Обсуждение
После вызова этого API, если
CMSampleBufferDataIsReady(sbuf) вызывают, он возвратитсяsbufToTrack'sготовность данных. ЕслиCMSampleBufferMakeDataReady(sbuf) вызывают, он сделаетsbufToTrackготовые данные.Пример использования: Это позволяет разрывать мультивыборку
CMSampleBufferв единственную выборкуCMSampleBuffersпрежде чем данные готовы. Единственная выборкаCMSampleBuffersвсе отследит мультивыборкуCMSampleBuffer'sготовность данных.Оператор импорта
Objective C
@import CoreMedia;Swift
import CoreMediaДоступность
Доступный в iOS 4.0 и позже.
-
Ссылка на неизменное
CMSampleBufferRefобъект.Объявление
Swift
typealias CMSampleBufferRef = CMSampleBufferObjective C
typedef struct opaqueCMSampleBuffer *CMSampleBufferRef;Обсуждение
A
CMSampleBufferБазовый объект Основы, содержащий нуль или более сжатый (или несжатый) выборки определенного типа среды (аудио, видео, мультиплексированное, и т.д.).Доступность
Доступный в iOS 4.0 и позже.
-
Набор информации синхронизации для выборки в a
CMSampleBuffer.Объявление
Поля
durationПродолжительность выборки.
Если единственная структура применяется к каждой из выборок, у них всех есть эта продолжительность.
presentationTimeStampВремя, в которое будет представлена выборка.
Если единственная структура применяется к каждой из выборок, у них всех есть эта продолжительность.
decodeTimeStampВремя, в которое будет декодироваться выборка.
Если выборки находятся в порядке представления, это должно быть установлено в
kCMInvalidTime.Обсуждение
Сингл
CMSampleTimingInfoструктура может описать каждую отдельную выборку в aCMSampleBuffer, если выборки все имеют ту же продолжительность и находятся в порядке представления без разрывов.Доступность
Доступный в iOS 4.0 и позже.
-
Уведомления отправляются демонстрационными буферными объектами.
Объявление
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Отправленный на демонстрационном буфере
CMSampleBufferSetDataReadyфункционируйте, когда буфер станет готовым.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferConduitNotification_InhibitOutputUntilОтправленный на кабелепроводе демонстрационных буферов для объявления о ближайшем разрыве.
Кабелепровод демонстрационных буферов (например, буферная очередь; посмотрите Ссылка CMBufferQueue) отправляет это уведомление, когда происходит разрыв в декодировании.
userInfoсловарь для этого уведомления содержитkCMSampleBufferConduitNotificationParameter_ResumeTagключ, значение которого указывает тег, указывающий, когда выведенный должен возобновиться.Первый демонстрационный буфер после разрыва должен иметь a
kCMSampleBufferAttachmentKey_ResumeOutputприсоединение, значение которого является тем же числом как тег резюме, о котором объявляют в этом уведомлении. Потребитель должен отбросить выходные данные, пока это не получает этот демонстрационный буфер. Если многократные уведомления об этом типе получены, последний указывает тег резюме.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferConduitNotification_ResetOutputОтправленный на кабелепроводе демонстрационных буферов для запроса аннулирования незаконченных выходных данных.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChangedОтправленный на кабелепроводе видео выборки буферизует для сообщения информации о диапазоне предстоящих выходных меток времени представления.
Эта информация может быть важна для переупорядоченного кадром видео и для определенных типов декодирования, куда выборки передаются в различном порядке от порядка, они будут выведены на экран. Если необходимо обработать кадры в порядке представления, можно использовать эту информацию, чтобы гарантировать, чтобы Вы не обрабатывали кадр слишком рано (т.е. когда существуют предстоящие кадры, которые будут иметь более ранние метки времени представления, чем кадр, который будет обработан).
userInfoсловарь для этого уведомления содержитkCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRangeключ. Если значение для того ключаkCFBooleanTrue, словарь также содержит один или оба изkCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTSилиkCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTSключи, предоставляющие информацию о диапазоне перекрывающихся меток времени представления.Доступный в iOS 4.3 и позже.
-
kCMSampleBufferConsumerNotification_BufferConsumedДополнительно отправленный, когда используется демонстрационный буфер.
Если демонстрационный буфер имеет значение для
kCMSampleBufferAttachmentKey_PostNotificationWhenConsumedприсоединение, объект, использующий демонстрационный буфер, должно отправить это уведомление с собой как объект уведомления и присоединяемое значение какuserInfoсловарь.Доступный в iOS 4.0 и позже.
-
-
Ключи, используемые в
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Указывает тег, чтобы быть присоединенными к первому демонстрационному буферу после разрыва (тип
CFNumber).Кабелепровод демонстрационных буферов отправляет
kCMSampleBufferConduitNotification_InhibitOutputUntilуведомление, когда происходит разрыв в декодировании. Значение для этого ключа будет присоединено к первому демонстрационному буферу после разрыва с помощьюkCMSampleBufferAttachmentKey_ResumeOutputприсоединение, указывая, что клиенты должны возобновить вывод.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRangeУказывает, что метки времени представления предстоящих выходных выборок могут перекрыть те из выборок, поставленных в очередь для вывода (тип
CFBoolean).Этот ключ всегда присутствует в
userInfoсловарь дляkCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChangedуведомление. Если его значениеkCFBooleanTrue, существует возможность, что предстоящие кадры могут иметь более ранние метки времени представления, чем кадры, ранее предоставленные для кабелепровода, и словарь также содержит один или оба изkCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTSилиkCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTSключи, предоставляющие дополнительную информацию. Если его значениеkCFBooleanFalse, нет такой возможности.Доступный в iOS 4.3 и позже.
-
kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTSУказывает минимальную метку времени представления предстоящих выходных выборок (тип
CFDictionary).Этот ключ может присутствовать в
userInfoсловарь для дляkCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChangedуведомление в случаях, где предстоящие кадры могут иметь более ранние метки времени, чем ранее предоставленные. Его значениеCFDictionaryпредставление aCMTimeобъект (см.CMTimeMakeFromDictionary).Или этот ключ или
kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTSможет быть опущен для отъезда диапазона открытым.Доступный в iOS 4.3 и позже.
-
kCMSampleBufferConduitNotificationParameter_MaxUpcomingOutputPTSУказывает максимальную метку времени представления предстоящих выходных выборок (тип
CFDictionary).Этот ключ может присутствовать в
userInfoсловарь для дляkCMSampleBufferConduitNotification_UpcomingOutputPTSRangeChangedуведомление в случаях, где предстоящие кадры могут иметь более ранние метки времени, чем ранее предоставленные. Его значениеCFDictionaryпредставление aCMTimeобъект (см.CMTimeMakeFromDictionary).Или этот ключ или
kCMSampleBufferConduitNotificationParameter_MinUpcomingOutputPTSможет быть опущен для отъезда диапазона открытым.Доступный в iOS 5.0 и позже.
-
-
Присоединения связались с отдельными выборками в буфере.
Объявление
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Указывает, является ли выборка синхронизирующей выборкой (тип
CFBoolean, ложь по умолчанию).Синхронизирующая выборка, также известная как ключевой кадр или IDR (Мгновенное Обновление Декодирования), может декодироваться, не требуя, чтобы декодировались любые предыдущие выборки. Выборки после синхронизирующей выборки также не требуют, чтобы декодировались выборки до синхронизирующей выборки. Выборки, как предполагается, являются синхронизирующими выборками по умолчанию — устанавливает значение для этого ключа к
kCFBooleanTrueдля выборок, которые не должны быть обработаны как синхронизирующие выборки.Это присоединение считано из и записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_PartialSyncУказывает, является ли выборка частичной синхронизирующей выборкой (тип
CFBoolean, ложь по умолчанию).Частичная синхронизирующая выборка может декодироваться, не требуя, чтобы декодировались любые предыдущие выборки. Выборки после двух последовательных частичных синхронизирующих выборок также не требуют, чтобы декодировались выборки до пары. Для обработки выборки как частичной синхронизирующей выборки установите значение
kCFBooleanTrueи для этого ключа и дляkCMSampleAttachmentKey_NotSyncключ.Это присоединение считано из и записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_HasRedundantCodingУказывает, имеет ли выборка избыточное кодирование (тип
CFBoolean).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не является существующей, избыточной информацией о кодировании для выборки, неизвестно.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_IsDependedOnByOthersУказывает, зависят ли другие выборки от этой выборки для декодирования (тип
CFBoolean).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не является существующей, информацией о зависимостях для выборки, неизвестно. Если этот ключ присутствует, и его значение
kCFBooleanFalse, кадр считают сбрасываемым.Это присоединение считано из и записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_DependsOnOthersУказывает, зависит ли выборка от других выборок для декодирования (тип
CFBoolean).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не является существующей, информацией о зависимостях для выборки, неизвестно. Значение
kCFBooleanFalseуказывает, что выборка не зависит от других выборок (например, я структурируют). ЗначениеkCFBooleanTrueуказывает, что выборка действительно зависит от других выборок (например, кадр P или B).Это присоединение считано из и записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_EarlierDisplayTimesAllowedУказывает, могут ли более поздние выборки иметь более ранние времена дисплея (тип
CFBoolean).Этот ключ не имеет никакого значения по умолчанию. Если этот ключ не присутствует, эта информация для выборки неизвестна.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_DisplayImmediatelyУказывает, должна ли выборка быть сразу выведена на экран (тип
CFBoolean, ложь по умолчанию).Если этот ключ присутствует, выборка должна быть выведена на экран как можно скорее, а не согласно ее метке времени представления. Используйте это присоединение во время выполнения для запроса этого поведения от конвейера дисплея такой как
AVSampleBufferDisplayLayerкласс.Это присоединение не записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleAttachmentKey_DoNotDisplayУказывает, должна ли выборка декодироваться, но не выводиться на экран (тип
CFBoolean, ложь по умолчанию).Используйте это присоединение во время выполнения для запроса этого поведения от конвейера дисплея такой как
AVSampleBufferDisplayLayerкласс.Это присоединение не записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
Обсуждение
Можно получить и установить присоединения демонстрационного уровня в демонстрационном буфере с помощью
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! let kCMSampleBufferAttachmentKey_DroppedFrameReason: CFString! let kCMSampleBufferAttachmentKey_DroppedFrameReasonInfo: 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; const CFStringRef kCMSampleBufferAttachmentKey_DroppedFrameReason; const CFStringRef kCMSampleBufferAttachmentKey_DroppedFrameReasonInfo;Константы
-
kCMSampleBufferAttachmentKey_ResetDecoderBeforeDecodingУказывает, должен ли демонстрационный буфер быть сброшен прежде, чем декодировать (тип
CFBoolean, ложь по умолчанию).Это присоединение используется во время выполнения, чтобы указать, что выборка следует, перерыв декодируют последовательность и что является надлежащим сбросить декодер прежде, чем декодировать эту выборку.
Это присоединение не записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_DrainAfterDecodingУказывает, должен ли демонстрационный буфер быть истощен после декодирования типа
CFBoolean, ложь по умолчанию).Это присоединение используется во время выполнения, чтобы указать, что выборка предшествует, перерыв декодируют последовательность и что является надлежащим истощить декодер после декодирования этой выборки.
Это присоединение не записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_PostNotificationWhenConsumedЕсли настоящее, указывает, что декодируют конвейеры, должен отправить уведомление при потреблении демонстрационного буфера (тип
CFDictionary).Это присоединение используется во время выполнения, чтобы запросить, чтобы конвейер декодирования отправил a
kCMSampleBufferConsumerNotification_BufferConsumedуведомление, когда используется этот демонстрационный буфер. Значение для этого ключа используется в качествеuserInfoсловарь в уведомлении.Это присоединение не записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_ResumeOutputЕсли настоящее, указывает, что выводит, должен быть возобновлен после разрыва
CFBoolean, ложь по умолчанию).Это присоединение используется во время выполнения, чтобы запросить, чтобы конвейер декодирования продолжил производить вывод после того, как разрыв объявил об использовании
kCMSampleBufferConduitNotification_InhibitOutputUntilуведомление.Это присоединение не записано в медиа-файлы.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_TransitionIDОтмечает переход от одного источника буферов другому.
Например, во время сплошного воспроизведения списка песен, это присоединение отмечает первый буфер от следующей песни. Если это присоединение находится на буфере, содержащем выборки, первый следующий буфер, содержащий выборки, является буфером, содержащим первые выборки от следующей песни. Значение этого присоединения является a
CFTypeRef. Этот идентификатор перехода должен быть уникальным в списке воспроизведения, таким образом, каждый переход в списке воспроизведения является уникально идентифицируемым. ACFNumberRefответьте, который постепенно увеличивается с каждым переходом, простой пример.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_TrimDurationAtStartПродолжительность, которая должна быть удалена в начале демонстрационного буфера после декодирования.
Если это присоединение не присутствует, продолжительность для обрезки является нулем (ничто удаленное). Это - a
CMTimeв Базовой Основе словарь форматируют, как сделаноCMTimeCopyAsDictionary; использоватьCMTimeMakeFromDictionaryпреобразовать вCMTime. В случаях, где весь вывод после декодирования демонстрационного буфера должен быть отброшен (например, выборки только декодируются к началу декодер) обычное соглашение состоит в том, чтобы установитьkCMSampleBufferAttachmentKey_TrimDurationAtStartк целой продолжительности а не установить akCMSampleBufferAttachmentKey_TrimDurationAtEndприсоединение.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_TrimDurationAtEndПродолжительность, которая должна быть удалена в конце демонстрационного буфера после декодирования.
Если это присоединение не присутствует, продолжительность для обрезки является нулем (ничто удаленное). Это - a
CMTimeв Базовой Основе словарь форматируют, как сделаноCMTimeCopyAsDictionary; использоватьCMTimeMakeFromDictionaryпреобразовать вCMTime.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_SpeedMultiplierФактор, которым должно быть ускорено представление демонстрационного буфера (тип
CFNumber, значение по умолчанию 1.0).Для нормального воспроизведения множитель скорости был бы
1.0(который используется, если это присоединение не присутствует); для воспроизведения с удвоенной скоростью множитель скорости был бы2.0, который разделил бы на два выходную продолжительность. Коэффициенты умножения скорости вступают в силу после обрезки; посмотритеCMSampleBufferGetOutputDuration. Обратите внимание на то, что это присоединение преимущественно предоставляет информацию о расширяющем продолжительность эффекте: по умолчанию это должно быть реализовано преобразованием уровня, но другие присоединения могут указать более богатые операции протяжения — например, масштабировавшись без сдвига подачи, или передать сдвиг, не изменяя продолжительность. Последовательности умноженных на скорость демонстрационных буферов должны иметь явные метки времени для разъяснения, когда каждый должен быть выведен (см.CMSampleBufferSetOutputPresentationTimeStamp).Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_ReverseУказывает, что декодируемое содержание демонстрационного буфера должно быть инвертировано (тип
CFBoolean, ложь по умолчанию).Если это присоединение не присутствует, демонстрационный буфер должен играться вперед, как обычно. Реверсирование происходит после множителей скорости и обрезки.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_FillDiscontinuitiesWithSilenceЗаполните различие между несмежными демонстрационными буферами с тишиной (тип
CFBoolean, ложь по умолчанию).Если демонстрационный буфер вводит буферную очередь и метку времени представления между предыдущим буфером, и буфер с этим присоединением являются несмежными, обрабатывают разрыв путем генерации тишины для разницы во времени.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_EmptyMediaОтмечает преднамеренно пустой интервал в последовательности выборок (тип
CFBoolean, ложь по умолчанию).Когда пустой интервал начинается, выходная метка времени представления демонстрационного буфера указывает. Демонстрационные буферы маркера с этим присоединением используются для объявления о поступлении пустых редактирований.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_PermanentEmptyMediaОтмечает конец последовательности выборок (тип
CFBoolean, ложь по умолчанию).Выборка маркера буферизует с этим присоединением в дополнение к
kCMSampleBufferAttachmentKey_EmptyMediaиспользуются, чтобы указать, что не ожидаются никакие дальнейшие выборки.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_DisplayEmptyMediaImmediatelyГоворит, что пустой маркер должен быть сразу исключен из очереди независимо от его метки времени (тип
CFBoolean, ложь по умолчанию).Выборка маркера буферизует с этим присоединением в дополнение к
kCMSampleBufferAttachmentKey_EmptyMediaиспользуются, чтобы сказать, что пустой демонстрационный буфер должен быть сразу исключен из очереди независимо от его метки времени. Это присоединение должно только использоваться с демонстрационными буферами сkCMSampleBufferAttachmentKey_EmptyMediaприсоединение.Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_EndsPreviousSampleDurationУказывает, что метка времени декодирования демонстрационного буфера может использоваться для определения продолжительности предыдущего демонстрационного буфера (тип
CFBoolean, ложь по умолчанию).Демонстрационные буферы маркера с этим присоединением могут использоваться в ситуациях, куда демонстрационные буферы передаются, прежде чем их продолжительность известна. В таких ситуациях обычно получатель может использовать метку времени каждого демонстрационного буфера для вычисления продолжительности предыдущего демонстрационного буфера. Демонстрационный буфер маркера с этим присоединением отправляется для обеспечения метки времени для вычисления продолжительности заключительного демонстрационного буфера.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_SampleReferenceURLУказывает URL, где демонстрационные данные (тип
CFURL).Этот ключ только используется для демонстрационных буферов, представляющих демонстрационные ссылки.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_SampleReferenceByteOffsetУказывает байтовое смещение, при котором начинаются демонстрационные данные (тип
CFNumber).Этот ключ только используется для демонстрационных буферов, представляющих демонстрационные ссылки. Его значение является байтовым смещением с начала данных в URL, на который ссылаются, к непрерывным демонстрационным данным.
Доступный в iOS 4.0 и позже.
-
kCMSampleBufferAttachmentKey_GradualDecoderRefreshУказывает количество обновления декодера (тип
CFNumber).Демонстрационные буферы с этим присоединением могут использоваться для идентификации аудио количества обновления декодера.
Доступный в iOS 4.3 и позже.
-
kCMSampleBufferAttachmentKey_DroppedFrameReasonУказывает причину, текущий видеокадр был отброшен (тип
CFString).Демонстрационные буферы с этим присоединением не содержат изображения или буфера данных. Они отмечают отброшенный видеокадр. Это присоединение идентифицирует причину, кадр был отброшен. Значение для этого ключа является одной из строковых констант в Демонстрационных Буферных Отброшенных Причинах Кадра.
Доступный в iOS 6.0 и позже.
-
kCMSampleBufferAttachmentKey_DroppedFrameReasonInfoУказывает дополнительную информацию относительно отброшенного видеокадра (тип
CFString).Демонстрационные буферы с этим присоединением не содержат изображения или буфера данных. Они отмечают отброшенный видеокадр. Если настоящее, это присоединение предоставляет дополнительную информацию о причине, описанной
kCMSampleBufferAttachmentKey_DroppedFrameReasonключ. Значение для этого ключа является одной из строковых констант в Демонстрационной Буферной Отброшенной Причине Кадра информация.Доступный в iOS 7.0 и позже.
Обсуждение
Чтобы получить и установить присоединения буферного уровня демонстрационного буфера, используйте функции, описанные в Ссылке CMAttachment.
-
-
Значения, обеспечивающие причину отброшенного кадра.
Объявление
Swift
let kCMSampleBufferDroppedFrameReason_FrameWasLate: CFString! let kCMSampleBufferDroppedFrameReason_OutOfBuffers: CFString! let kCMSampleBufferDroppedFrameReason_Discontinuity: CFString!Objective C
const CFStringRef kCMSampleBufferDroppedFrameReason_FrameWasLate; const CFStringRef kCMSampleBufferDroppedFrameReason_OutOfBuffers; const CFStringRef kCMSampleBufferDroppedFrameReason_Discontinuity;Константы
-
kCMSampleBufferDroppedFrameReason_FrameWasLateКадр был отброшен, потому что было поздно.
Клиент видеосъемки указал, что последние видеокадры должны быть отброшены, и текущий кадр поздний. Это условие обычно вызывается обработкой клиента, берущей слишком долго.
Доступный в iOS 6.0 и позже.
-
kCMSampleBufferDroppedFrameReason_OutOfBuffersКадр был отброшен, потому что обеспечение модуля структурирует, вне буферов.
Модуль, обеспечивающий демонстрационные буферы, исчерпал исходные буферы. Это условие обычно вызывается клиентом, содержащим на буферы слишком долго, и может быть улучшено путем возврата буферов провайдеру.
Доступный в iOS 6.0 и позже.
-
kCMSampleBufferDroppedFrameReason_DiscontinuityБыло отброшено неизвестное число кадров.
Модуль, обеспечивающий демонстрационные буферы, испытал разрыв, и было потеряно неизвестное число кадров. Это условие обычно вызывается системой, являющейся слишком занятым.
Доступный в iOS 6.0 и позже.
Обсуждение
Эти значения могут быть связаны с демонстрационным буфером под
kCMSampleBufferAttachmentKey_DroppedFrameReasonключ. -
-
Значения, предоставляющие дополнительную информацию о причине отброшенного кадра.
Объявление
Swift
let kCMSampleBufferDroppedFrameReasonInfo_CameraModeSwitch: CFString!Objective C
const CFStringRef kCMSampleBufferDroppedFrameReasonInfo_CameraModeSwitch;Константы
-
kCMSampleBufferDroppedFrameReasonInfo_CameraModeSwitchРазрыв был вызван переключателем режима камеры.
Модуль, обеспечивающий демонстрационные буферы, испытал разрыв вследствие переключателя режима камеры. Когда сеанс сконфигурирован для получения неподвижного изображения на некоторых устройствах, могут произойти короткие разрывы этого типа.
Доступный в iOS 7.0 и позже.
Обсуждение
Эти значения могут быть связаны с демонстрационным буфером под
kCMSampleBufferAttachmentKey_DroppedFrameReasonInfoключ. -
Эта таблица приводит коды результата, определенные для 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 |
Указывает, что демонстрационный буфер был лишен законной силы. |
