react-native-vision-camera
Version:
VisionCamera is the fastest and most powerful Camera for react-native.
38 lines (37 loc) • 1.32 kB
TypeScript
import type { UInt64 } from 'react-native-nitro-modules';
/**
* An unmanaged memory pointer to a native platform buffer.
*
* This is a shared contract between libraries to interact
* with native buffers without natively typed bindings.
*
* Consumers, like react-native-skia or react-native-wgpu
* can accept a `NativeBuffer`-shaped object that has a
* {@linkcode pointer} and a {@linkcode release} function
* to unwrap the native buffer from it, load it as a GPU
* Texture, and release it once it has been rendered.
*
* @example
* ```ts
* const frame = ...
* const nativeBuffer = frame.getNativeBuffer()
* // your processing...
* nativeBuffer.release()
* frame.dispose()
* ```
*/
export interface NativeBuffer {
/**
* A uint64_t/uintptr_t to the native platform buffer, with a retain count of +1.
* - On iOS; this points to a `CVPixelBufferRef`
* - On Android; this points to a `AHardwareBuffer*`
*/
readonly pointer: UInt64;
/**
* Release this reference to the platform buffer again, effectively decrementing the retain count by -1.
*
* @note This must always be called as soon as possible, otherwise the pipeline will stall.
* @note There might still be other references, so it does not guarantee buffer deletion.
*/
release(): void;
}