Ссылка 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!) -> Int32Objective 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!) -> BooleanObjective 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) -> UIntObjective 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) -> UIntObjective 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) -> UIntObjective 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) -> UIntObjective 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) -> UIntObjective 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) -> UIntObjective 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!) -> UIntObjective 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!) -> UIntObjective C
size_t IOSurfaceGetBytesPerElement ( IOSurfaceRef buffer );
Возвращаемое значение
Возвраты 0, если буфер недопустим.
Оператор импорта
Objective C
@import IOSurface;
Swift
import IOSurface
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает длину (в байтах) каждой строки в определенном буфере.
Объявление
Swift
func IOSurfaceGetBytesPerRow(_
buffer
: IOSurface!) -> UIntObjective C
size_t IOSurfaceGetBytesPerRow ( IOSurfaceRef buffer );
Возвращаемое значение
Возвраты 0, если буфер недопустим.
Оператор импорта
Objective C
@import IOSurface;
Swift
import IOSurface
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает высоту (в пикселях) каждого элемента в определенном буфере.
Объявление
Swift
func IOSurfaceGetElementHeight(_
buffer
: IOSurface!) -> UIntObjective C
size_t IOSurfaceGetElementHeight ( IOSurfaceRef buffer );
Возвращаемое значение
Возвраты 0, если буфер недопустим.
Оператор импорта
Objective C
@import IOSurface;
Swift
import IOSurface
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает ширину (в пикселях) каждого элемента в определенном буфере.
Объявление
Swift
func IOSurfaceGetElementWidth(_
buffer
: IOSurface!) -> UIntObjective C
size_t IOSurfaceGetElementWidth ( IOSurfaceRef buffer );
Возвращаемое значение
Возвраты 0, если буфер недопустим.
Оператор импорта
Objective C
@import IOSurface;
Swift
import IOSurface
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает высоту буфера IOSurface в пикселях.
Объявление
Swift
func IOSurfaceGetHeight(_
buffer
: IOSurface!) -> UIntObjective 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!) -> OSTypeObjective C
OSType IOSurfaceGetPixelFormat ( IOSurfaceRef buffer );
Возвращаемое значение
Возвраты 0, если буфер недопустим.
Оператор импорта
Objective C
@import IOSurface;
Swift
import IOSurface
Доступность
Доступный в OS X v10.6 и позже.
-
Объявление
Swift
func IOSurfaceGetPlaneCount(_
buffer
: IOSurface!) -> UIntObjective 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!) -> UInt32Objective C
uint32_t IOSurfaceGetSeed ( IOSurfaceRef buffer );
Обсуждение
Это возвратит текущее значение семени буфера и является дешевым вызовом для создания, чтобы видеть, изменилось ли содержание буфера, так как последние блокируют/разблокируют.
Оператор импорта
Objective C
@import IOSurface;
Swift
import IOSurface
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает ширину буфера IOSurface в пикселях.
Объявление
Swift
func IOSurfaceGetWidth(_
buffer
: IOSurface!) -> UIntObjective 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) -> UIntObjective 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_tObjective 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!) -> UIntObjective 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!) -> UIntObjective 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!) -> IOSurfaceIDObjective 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>) -> IOReturnObjective 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>) -> IOReturnObjective 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 и позже.
-
-
Объявление
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 и позже.
-