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

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

Разработчик

Ссылка IOSurfaceAPI.h

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

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

Ссылка IOSurfaceAPI.h

Заголовок IOSurfaceAPI содержит общедоступный API для платформы IOSurface. Платформа IOSurface обеспечивает объект кадрового буфера, подходящий для совместного использования через границы процесса. Это обычно используется, чтобы позволить приложениям перемещать сложную распаковку изображения и вовлекать логику в отдельный процесс для улучшения безопасности.

Включенные заголовки

  • <IOKit/IOKitLib.h>

  • <IOSurface/IOSurfaceBase.h>

Функции

Существуют случаи, где полезно знать, считается ли буфер IOSurface «в использовании» другими пользователями того же IOSurface. В частности CoreVideo и другой APIs используют средство количества использования IOSurface для знания, когда безопасно переработать поддержанный объект CVPixelBuffer IOSurface. Это особенно важно, когда объекты IOSurface совместно используются через границы процесса и нормальные механизмы, можно было бы использовать, не будет жизнеспособно.

Количество использования IOSurface подобно в понятии любой другой схеме подсчета ссылок. Когда глобальное количество использования IOSurface переходит к нулю, это больше не рассматривают «в использовании». Когда это - что-либо кроме нуля, тогда IOSurface все еще «в использовании» кем-то, и поэтому любой пытающийся поддержать пул IOSurfaces, который будет переработан, не должен предъявлять претензии в отношении этого IOSurface.

Обратите внимание на то, что IOSurface поддерживает и для каждого процесса и внутреннее количество использования в масштабе всей системы. В текущей реализации, когда количество использования для каждого процесса идет от нуля до одного, количество использования в масштабе всей системы постепенно увеличивается одним. То, когда количество использования для каждого процесса опускается до нуля назад (или через явные декрементные вызовы или через или через процесс завершается), глобальное количество использования постепенно уменьшается одним.

IOSurfaceGetUseCount () возвращается, локальное использование для каждого процесса значат IOSurface. Этот вызов только предоставлен для журналирования/отладки целей и никогда не должен использоваться, чтобы определить, считается ли IOSurface «в использовании». IOSurfaceIsInUse () является единственным вызовом, который должен использоваться с этой целью.

  • Постепенно уменьшается использование для каждого процесса значат IOSurface

    Объявление

    Swift

    func IOSurfaceDecrementUseCount(_ buffer: IOSurface!)

    Objective C

    void IOSurfaceDecrementUseCount ( IOSurfaceRef buffer );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращается использование для каждого процесса значат IOSurface

    Объявление

    Swift

    func IOSurfaceGetUseCount(_ buffer: IOSurface!) -> Int32

    Objective C

    int32_t IOSurfaceGetUseCount ( IOSurfaceRef buffer );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Постепенно увеличивается использование для каждого процесса значат IOSurface

    Объявление

    Swift

    func IOSurfaceIncrementUseCount(_ buffer: IOSurface!)

    Objective C

    void IOSurfaceIncrementUseCount ( IOSurfaceRef buffer );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает true IOSurface, используется любым процессом в системе, иначе ложь.

    Объявление

    Swift

    func IOSurfaceIsInUse(_ buffer: IOSurface!) -> Boolean

    Objective C

    Boolean IOSurfaceIsInUse ( IOSurfaceRef buffer );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

Эти функции возвращают различные свойства определенной плоскости в буфере, такие как длина, высота, и т.д.

  • Возвращает адрес первого байта данных в указанной плоскости.

    Объявление

    Swift

    func IOSurfaceGetBaseAddressOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UnsafeMutablePointer<Void>

    Objective C

    void * IOSurfaceGetBaseAddressOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает размер каждого элемента (в байтах) в указанной плоскости.

    Объявление

    Swift

    func IOSurfaceGetBytesPerElementOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UInt

    Objective C

    size_t IOSurfaceGetBytesPerElementOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает размер каждой строки (в байтах) в указанной плоскости.

    Объявление

    Swift

    func IOSurfaceGetBytesPerRowOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UInt

    Objective C

    size_t IOSurfaceGetBytesPerRowOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает высоту (в пикселях) каждого элемента в указанной плоскости.

    Объявление

    Swift

    func IOSurfaceGetElementHeightOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UInt

    Objective C

    size_t IOSurfaceGetElementHeightOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает ширину (в пикселях) каждого элемента в указанной плоскости.

    Объявление

    Swift

    func IOSurfaceGetElementWidthOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UInt

    Objective C

    size_t IOSurfaceGetElementWidthOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает высоту указанной плоскости (в пикселях).

    Объявление

    Swift

    func IOSurfaceGetHeightOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UInt

    Objective C

    size_t IOSurfaceGetHeightOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает ширину указанной плоскости (в пикселях).

    Объявление

    Swift

    func IOSurfaceGetWidthOfPlane(_ buffer: IOSurface!, _ planeIndex: UInt) -> UInt

    Objective C

    size_t IOSurfaceGetWidthOfPlane ( IOSurfaceRef buffer, size_t planeIndex );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

Эти функции возвращают различные буферные свойства, такие как длина, высота, и т.д.

  • Возвращает общий размер выделения буфера включая все плоскости.

    Объявление

    Swift

    func IOSurfaceGetAllocSize(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetAllocSize ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает адрес первого байта данных в определенном буфере.

    Объявление

    Swift

    func IOSurfaceGetBaseAddress(_ buffer: IOSurface!) -> UnsafeMutablePointer<Void>

    Objective C

    void * IOSurfaceGetBaseAddress ( IOSurfaceRef buffer );

    Возвращаемое значение

    NULL возвратов, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает длину (в байтах) каждого элемента в определенном буфере.

    Объявление

    Swift

    func IOSurfaceGetBytesPerElement(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetBytesPerElement ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает длину (в байтах) каждой строки в определенном буфере.

    Объявление

    Swift

    func IOSurfaceGetBytesPerRow(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetBytesPerRow ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает высоту (в пикселях) каждого элемента в определенном буфере.

    Объявление

    Swift

    func IOSurfaceGetElementHeight(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetElementHeight ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает ширину (в пикселях) каждого элемента в определенном буфере.

    Объявление

    Swift

    func IOSurfaceGetElementWidth(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetElementWidth ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает высоту буфера IOSurface в пикселях.

    Объявление

    Swift

    func IOSurfaceGetHeight(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetHeight ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает целое без знака, содержащее традиционный буферный формат OS X.

    Объявление

    Swift

    func IOSurfaceGetPixelFormat(_ buffer: IOSurface!) -> OSType

    Objective C

    OSType IOSurfaceGetPixelFormat ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Swift

    func IOSurfaceGetPlaneCount(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetPlaneCount ( IOSurfaceRef buffer );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Swift

    func IOSurfaceGetSeed(_ buffer: IOSurface!) -> UInt32

    Objective C

    uint32_t IOSurfaceGetSeed ( IOSurfaceRef buffer );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает ширину буфера IOSurface в пикселях.

    Объявление

    Swift

    func IOSurfaceGetWidth(_ buffer: IOSurface!) -> UInt

    Objective C

    size_t IOSurfaceGetWidth ( IOSurfaceRef buffer );

    Возвращаемое значение

    Возвраты 0, если буфер недопустим.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

Эти функции могут использоваться для получения дескрипторов к объектам IOSurface в форме, подходящей для прохождения через XPC или Маха IPC.

  • Возвращает самое маленькое выровненное значение, больше, чем или равный указанному значению.

    Объявление

    Swift

    func IOSurfaceAlignProperty(_ property: CFString!, _ value: UInt) -> UInt

    Objective C

    size_t IOSurfaceAlignProperty ( CFStringRef property, size_t value );

    Обсуждение

    Для свойств без требований выравнивания возвращается исходное значение.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает mach_port_t, содержащий ссылку на IOSurface.

    Объявление

    Swift

    func IOSurfaceCreateMachPort(_ buffer: IOSurface!) -> mach_port_t

    Objective C

    mach_port_t IOSurfaceCreateMachPort ( IOSurfaceRef buffer );

    Обсуждение

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает xpc_object_t, содержащий ссылку на IOSurface.

    Объявление

    Swift

    func IOSurfaceCreateXPCObject(_ aSurface: IOSurface!) -> xpc_object_t!

    Objective C

    xpc_object_t IOSurfaceCreateXPCObject ( IOSurfaceRef aSurface );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает требования выравнивания для свойства (если таковые имеются).

    Объявление

    Swift

    func IOSurfaceGetPropertyAlignment(_ property: CFString!) -> UInt

    Objective C

    size_t IOSurfaceGetPropertyAlignment ( CFStringRef property );

    Обсуждение

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

    • kIOSurfaceBytesPerRow

    • kIOSurfaceOffset

    • kIOSurfacePlaneBase

    • kIOSurfacePlaneOffset

    • kIOSurfacePlaneBytesPerRow

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает максимальное значение для данного свойства, которое, как гарантируют, будет совместимо со всеми текущими устройствами (GPUs, и т.д.) в системе.

    Объявление

    Swift

    func IOSurfaceGetPropertyMaximum(_ property: CFString!) -> UInt

    Objective C

    size_t IOSurfaceGetPropertyMaximum ( CFStringRef property );

    Обсуждение

    Самые важные значения для получения:

    • kIOSurfaceBytesPerRow

    • kIOSurfaceWidth

    • kIOSurfaceHeight

    • kIOSurfacePlaneBytesPerRow

    • kIOSurfacePlaneWidth

    • kIOSurfacePlaneHeight

    Для свойств ширины и высоты максимальные значения являются самыми большими, которые, как гарантируют, будут работать и на чтение и на запись. В условиях OpenGL это переводит в самый большой размер, который будет работать на обе текстуры и представлять цели.

    Эта функция возвращается 0 для свойств, не имеющих никакого предопределенного предела или где понятие предела считали бы недопустимым (такой как kIOSurfacePixelFormat).

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Воссоздает IOSurfaceRef от порта Маха.

    Объявление

    Swift

    func IOSurfaceLookupFromMachPort(_ port: mach_port_t) -> IOSurface!

    Objective C

    IOSurfaceRef IOSurfaceLookupFromMachPort ( mach_port_t port );

    Обсуждение

    Этот вызов берет mach_port_t, создаваемый через IOSurfaceCreatePort (), и воссоздает IOSurfaceRef от него.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Swift

    func IOSurfaceLookupFromXPCObject(_ xobj: xpc_object_t!) -> IOSurface!

    Objective C

    IOSurfaceRef IOSurfaceLookupFromXPCObject ( xpc_object_t xobj );

    Обсуждение

    Этот вызов берет объект XPC, создаваемый через IOSurfaceCreateXPCObject (), и воссоздает IOSurfaceRef от него.Примечание: Этот вызов НЕ уничтожает порт.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.7 и позже.

Эти функции создают новые буферы IOSurface и блокируют и разблокировали те буферы.

  • Создает совершенно новый объект IOSurface

    Объявление

    Swift

    func IOSurfaceCreate(_ properties: CFDictionary!) -> Unmanaged<IOSurface>!

    Objective C

    IOSurfaceRef IOSurfaceCreate ( CFDictionaryRef properties );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Получает уникальное значение IOSurfaceID для IOSurface

    Объявление

    Swift

    func IOSurfaceGetID(_ buffer: IOSurface!) -> IOSurfaceID

    Objective C

    IOSurfaceID IOSurfaceGetID ( IOSurfaceRef buffer );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • «Заблокируйте» IOSurface для чтения или записи.

    Объявление

    Swift

    func IOSurfaceLock(_ buffer: IOSurface!, _ options: UInt32, _ seed: UnsafeMutablePointer<UInt32>) -> IOReturn

    Objective C

    IOReturn IOSurfaceLock ( IOSurfaceRef buffer, uint32_t options, uint32_t *seed );

    Обсуждение

    Термин «блокировка» используется свободно в этом контексте и просто используется вместе с «разблокировать» информацией для помещения привязанного доступ CPU к необработанным данным IOSurface.

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

    В случае IOSurfaceUnlock (), возвратилось значение семени, будет внутреннее значение семени во время того, чтобы разблокировать. При блокировке буфера для записи это значение будет постепенно увеличено, поскольку разблокировать выполняется, и новое значение будет возвращено.

    Посмотрите IOSurface lock flags для получения дополнительной информации.

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Выполняет атомарный поиск, и сохраните IOSurface его IOSurfaceID.

    Объявление

    Swift

    func IOSurfaceLookup(_ csid: IOSurfaceID) -> IOSurface!

    Objective C

    IOSurfaceRef IOSurfaceLookup ( IOSurfaceID csid );

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • «Разблокируйте» IOSurface для чтения или записи.

    Объявление

    Swift

    func IOSurfaceUnlock(_ buffer: IOSurface!, _ options: UInt32, _ seed: UnsafeMutablePointer<UInt32>) -> IOReturn

    Objective C

    IOReturn IOSurfaceUnlock ( IOSurfaceRef buffer, uint32_t options, uint32_t *seed );

    Обсуждение

    Термин «блокировка» используется свободно в этом контексте и просто используется вместе с «разблокировать» информацией для помещения привязанного доступ CPU к необработанным данным IOSurface.

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

    В случае IOSurfaceUnlock (), возвратилось значение семени, будет внутреннее значение семени во время того, чтобы разблокировать. При блокировке буфера для записи это значение будет постепенно увеличено, поскольку разблокировать выполняется, и новое значение будет возвращено.

    Посмотрите kIOSurfaceLock перечисления для получения дополнительной информации.

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

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

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

  • Получает значение из словаря, связанного с буфером.

    Объявление

    Swift

    func IOSurfaceCopyValue(_ buffer: IOSurface!, _ key: CFString!) -> Unmanaged<AnyObject>!

    Objective C

    CFTypeRef IOSurfaceCopyValue ( IOSurfaceRef buffer, CFStringRef key );

    Обсуждение

    Этот вызов позволяет Вам присоединить типы списка свойств CF к буферу IOSurface. Этот вызов является дорогим (он должен по существу сериализировать данные в ядро), и таким образом должен избежаться, когда это возможно.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Удаляет значение в словаре, связанном с буфером.

    Объявление

    Swift

    func IOSurfaceRemoveValue(_ buffer: IOSurface!, _ key: CFString!)

    Objective C

    void IOSurfaceRemoveValue ( IOSurfaceRef buffer, CFStringRef key );

    Обсуждение

    Этот вызов позволяет Вам присоединить типы списка свойств CF к буферу IOSurface. Этот вызов является дорогим (он должен по существу сериализировать данные в ядро), и таким образом должен избежаться, когда это возможно.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает значение в словаре, связанном с буфером.

    Объявление

    Swift

    func IOSurfaceSetValue(_ buffer: IOSurface!, _ key: CFString!, _ value: AnyObject!)

    Objective C

    void IOSurfaceSetValue ( IOSurfaceRef buffer, CFStringRef key, CFTypeRef value );

    Обсуждение

    Этот вызов позволяет Вам присоединить типы списка свойств CF к буферу IOSurface. Этот вызов является дорогим (он должен по существу сериализировать данные в ядро), и таким образом должен избежаться, когда это возможно.

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

Типы данных

См. Обзор для документации уровня заголовка.

  • Идентификатор IOSurface.

    Объявление

    Swift

    typealias IOSurfaceID = UInt32

    Objective C

    typedef uint32_t IOSurfaceID;

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

    Objective C

    @import IOSurface;

    Swift

    import IOSurface

    Доступность

    Доступный в OS X v10.6 и позже.

  • Тип данных, представляющий непрозрачный объект IOSurface.

    Объявление

    Objective C

    typedef struct __IOSurface *IOSurfaceRef;

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

    Objective C

    @import OpenGL;

    Доступность

    Доступный в OS X v10.6 и позже.

Константы

См. Обзор для документации уровня заголовка.

  • Объявление

    Swift

    let kIOSurfaceAllocSize: CFString! let kIOSurfaceBytesPerElement: CFString! let kIOSurfaceBytesPerRow: CFString! let kIOSurfaceCacheMode: CFString! let kIOSurfaceElementHeight: CFString! let kIOSurfaceElementWidth: CFString! let kIOSurfaceHeight: CFString! let kIOSurfaceIsGlobal: CFString! let kIOSurfaceOffset: CFString! let kIOSurfacePixelFormat: CFString! let kIOSurfacePlaneBase: CFString! let kIOSurfacePlaneBytesPerElement: CFString! let kIOSurfacePlaneBytesPerRow: CFString! let kIOSurfacePlaneElementHeight: CFString! let kIOSurfacePlaneElementWidth: CFString! let kIOSurfacePlaneHeight: CFString! let kIOSurfacePlaneInfo: CFString! let kIOSurfacePlaneOffset: CFString! let kIOSurfacePlaneSize: CFString! let kIOSurfacePlaneWidth: CFString! let kIOSurfaceWidth: CFString!

    Objective C

    extern const CFStringRef kIOSurfaceAllocSize; extern const CFStringRef kIOSurfaceBytesPerElement; extern const CFStringRef kIOSurfaceBytesPerRow; extern const CFStringRef kIOSurfaceCacheMode; extern const CFStringRef kIOSurfaceElementHeight; extern const CFStringRef kIOSurfaceElementWidth; extern const CFStringRef kIOSurfaceHeight; extern const CFStringRef kIOSurfaceIsGlobal; extern const CFStringRef kIOSurfaceOffset; extern const CFStringRef kIOSurfacePixelFormat; extern const CFStringRef kIOSurfacePlaneBase; extern const CFStringRef kIOSurfacePlaneBytesPerElement; extern const CFStringRef kIOSurfacePlaneBytesPerRow; extern const CFStringRef kIOSurfacePlaneElementHeight; extern const CFStringRef kIOSurfacePlaneElementWidth; extern const CFStringRef kIOSurfacePlaneHeight; extern const CFStringRef kIOSurfacePlaneInfo; extern const CFStringRef kIOSurfacePlaneOffset; extern const CFStringRef kIOSurfacePlaneSize; extern const CFStringRef kIOSurfacePlaneWidth; extern const CFStringRef kIOSurfaceWidth;

    Константы

    • kIOSurfaceAllocSize

      kIOSurfaceAllocSize

      CFNumber общего размера выделения буфера включая все плоскости.

      Значения по умолчанию к BufferHeight * BytesPerRow, если не указанный. Должен быть указан для безразмерных буферов.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceBytesPerElement

      kIOSurfaceBytesPerElement

      CFNumber для общего количества байтов в элементе.

      Значение по умолчанию к 1.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceBytesPerRow

      kIOSurfaceBytesPerRow

      CFNumber для байтов на строку буфера.

      Если не указанный, IOSurface сначала вычислит число полные элементы, требуемые на каждой строке (путем окружения), умноженный на байты на элемент для этого буфера. То значение тогда будет соответственно выровненное.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceCacheMode

      kIOSurfaceCacheMode

      CFNumber для режима кэширования CPU, который будет использоваться для выделения.

      Значение по умолчанию kIOMapDefaultCache.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceElementHeight

      kIOSurfaceElementHeight

      CFNumber для того, сколько пиксели высоко каждый элемент.

      Значения по умолчанию к 1.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceElementWidth

      kIOSurfaceElementWidth

      CFNumber для того, сколько пиксели, широкие каждый элемент.

      Значения по умолчанию к 1.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceHeight

      kIOSurfaceHeight

      CFNumber для высоты IOSurface буферизуют в пикселях.

      Требуемый для планарного IOSurfaces.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceIsGlobal

      kIOSurfaceIsGlobal

      CFBoolean Если это правда, IOSurface может искаться любой задачей в системе ее ID.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceOffset

      kIOSurfaceOffset

      CFNumber для запуска смещается в буфер.

      Значения по умолчанию к 0.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePixelFormat

      kIOSurfacePixelFormat

      CFNumber 32-разрядное целое без знака, хранящее традиционный буферный формат OS X

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneBase

      kIOSurfacePlaneBase

      CFNumber для основного смещения в буфер для этой плоскости.

      Дополнительный, значения по умолчанию к плоскому смещению

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneBytesPerElement

      kIOSurfacePlaneBytesPerElement

      CFNumber для байтов на элемент этой плоскости.

      Дополнительный, по умолчанию 1.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneBytesPerRow

      kIOSurfacePlaneBytesPerRow

      CFNumber для байтов на строку этой плоскости.

      Если не указанный, IOSurface сначала вычислит число полные элементы, требуемые на каждой строке (путем окружения), умноженный на байты на элемент для этой плоскости. То значение тогда будет соответственно выровненное.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneElementHeight

      kIOSurfacePlaneElementHeight

      CFNumber для высоты элемента этой плоскости.

      Дополнительный, по умолчанию 1.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneElementWidth

      kIOSurfacePlaneElementWidth

      CFNumber для ширины элемента этой плоскости.

      Дополнительный, по умолчанию 1.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneHeight

      kIOSurfacePlaneHeight

      CFNumber для высоты этой плоскости в пикселях.

      Требуемый для плоскостей изображения.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneInfo

      kIOSurfacePlaneInfo

      CFArray описание каждой плоскости изображения в буфере как CFDictionary.

      CFArray должен иметь по крайней мере одну запись.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneOffset

      kIOSurfacePlaneOffset

      CFNumber для смещения в буфер для этой плоскости.

      Если не указанный тогда IOSurface разметит каждую плоскость последовательно на основе размера выделения предыдущей плоскости.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneSize

      kIOSurfacePlaneSize

      CFNumber для общего размера данных этой плоскости.

      Значения по умолчанию к плоской высоте * плоские байты на строку, если не указанный.

      Доступный в OS X v10.6 и позже.

    • kIOSurfacePlaneWidth

      kIOSurfacePlaneWidth

      CFNumber для ширины этой плоскости в пикселях.

      Требуемый для плоскостей изображения.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceWidth

      kIOSurfaceWidth

      CFNumber для ширины IOSurface буферизуют в пикселях.

      Требуемый для планарного IOSurfaces.

      Доступный в OS X v10.6 и позже.

  • Объявление

    Swift

    var kIOSurfaceLockReadOnly: Int { get } var kIOSurfaceLockAvoidSync: Int { get }

    Objective C

    enum { /*! If you are not going to modify the data while you hold the lock, you should set this flag to avoid invalidating */ kIOSurfaceLockReadOnly = 0x00000001, /*! If you want to detect/avoid a potentially expensive paging operation (such as readback from a GPU to system memory ) */ kIOSurfaceLockAvoidSync = 0x00000002 };

    Константы

    • kIOSurfaceLockReadOnly

      kIOSurfaceLockReadOnly

      Если Вы не собираетесь изменять данные при содержании блокировки необходимо установить этот флаг, чтобы избежать лишать законной силы любые существующие кэши содержимого буфера. Этот флаг должен быть передан и блокировке и разблокировать функции. Использование Non-symmentrical этого флага приведет к неопределенному поведению.

      Доступный в OS X v10.6 и позже.

    • kIOSurfaceLockAvoidSync

      kIOSurfaceLockAvoidSync

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

      Доступный в OS X v10.6 и позже.