Interface: Frame
A single frame, as seen by the camera. This is backed by a C++ HostObject wrapping the native GPU buffer. At a 4k resolution, a raw Frame can be 12MB in size.
Example
const frameProcessor = useFrameProcessor((frame) => {
'worklet'
console.log(`Frame: ${frame.width}x${frame.height} (${frame.pixelFormat})`)
})
Hierarchy​
-
Frame
↳
DrawableFrame
Properties​
bytesPerRow​
• Readonly
bytesPerRow: number
Returns the amount of bytes per row.
Defined in​
types/Frame.ts:33
height​
• Readonly
height: number
Returns the height of the frame, in pixels.
Defined in​
types/Frame.ts:29
isMirrored​
• Readonly
isMirrored: boolean
Returns whether the Frame is mirrored (selfie camera) or not.
Defined in​
types/Frame.ts:41
isValid​
• Readonly
isValid: boolean
Whether the underlying buffer is still valid or not.
A Frame is valid as long as your Frame Processor (or a runAsync(..)
operation) is still running
Defined in​
types/Frame.ts:21
orientation​
• Readonly
orientation: Orientation
Represents the orientation of the Frame.
Some ML Models are trained for specific orientations, so they need to be taken into
consideration when running a frame processor. See also: isMirrored
Defined in​
types/Frame.ts:52
pixelFormat​
• Readonly
pixelFormat: PixelFormat
Represents the pixel-format of the Frame.
Defined in​
types/Frame.ts:56
planesCount​
• Readonly
planesCount: number
Returns the number of planes this frame contains.
Defined in​
types/Frame.ts:37
timestamp​
• Readonly
timestamp: number
Returns the timestamp of the Frame relative to the host sytem's clock.
Defined in​
types/Frame.ts:45
width​
• Readonly
width: number
Returns the width of the frame, in pixels.
Defined in​
types/Frame.ts:25
Methods​
getNativeBuffer​
â–¸ getNativeBuffer(): NativeBuffer
Get the native platform buffer of the Frame.
- On Android, this is a
AHardwareBuffer*
- On iOS, this is a
CVPixelBufferRef
The native buffer needs to be manually deleted using
()
, and this Frame
needs to be kept alive as long as-, or longer than
the NativeBuffer
.
Returns​
Defined in​
types/Frame.ts:98
toArrayBuffer​
â–¸ toArrayBuffer(): ArrayBuffer
Get the underlying data of the Frame as a uint8 array buffer.
The format of the buffer depends on the Frame's pixelFormat
.
This function might fail if the pixelFormat
is private
.
Note that Frames are allocated on the GPU, so calling toArrayBuffer()
will copy from the GPU to the CPU.
Returns​
ArrayBuffer
Example
const frameProcessor = useFrameProcessor((frame) => {
'worklet'
if (frame.pixelFormat === 'rgb') {
const buffer = frame.toArrayBuffer()
const data = new Uint8Array(buffer)
console.log(`Pixel at 0,0: RGB(${data[0]}, ${data[1]}, ${data[2]})`)
}
})
Defined in​
types/Frame.ts:79
toString​
â–¸ toString(): string
Returns a string representation of the frame.
Returns​
string
Example
console.log(frame.toString()) // -> "3840 x 2160 Frame"
Defined in​
types/Frame.ts:87