Skip to main content

VisionCamera

Classes​

Interfaces​

Type Aliases​

AutoFocusSystem​

Ƭ AutoFocusSystem: "contrast-detection" | "phase-detection" | "none"

Indicates a format's autofocus system.

  • "none": Indicates that autofocus is not available
  • "contrast-detection": Indicates that autofocus is achieved by contrast detection. Contrast detection performs a focus scan to find the optimal position
  • "phase-detection": Indicates that autofocus is achieved by phase detection. Phase detection has the ability to achieve focus in many cases without a focus scan. Phase detection autofocus is typically less visually intrusive than contrast detection autofocus

Defined in​

CameraDevice.ts:35


CameraPermissionRequestResult​

Ƭ CameraPermissionRequestResult: "granted" | "denied"

Defined in​

Camera.tsx:15


CameraPermissionStatus​

Ƭ CameraPermissionStatus: "granted" | "not-determined" | "denied" | "restricted"

Defined in​

Camera.tsx:14


CameraPosition​

Ƭ CameraPosition: "front" | "back" | "external"

Represents the camera device position.

  • "back": Indicates that the device is physically located on the back of the system hardware
  • "front": Indicates that the device is physically located on the front of the system hardware
  • "external": The camera device is an external camera, and has no fixed facing relative to the device's screen.

Defined in​

CameraDevice.ts:11


CaptureError​

Ƭ CaptureError: "capture/invalid-photo-format" | "capture/encoder-error" | "capture/muxer-error" | "capture/recording-in-progress" | "capture/no-recording-in-progress" | "capture/file-io-error" | "capture/create-temp-file-error" | "capture/invalid-video-options" | "capture/create-recorder-error" | "capture/recorder-error" | "capture/no-valid-data" | "capture/inactive-source" | "capture/insufficient-storage" | "capture/file-size-limit-reached" | "capture/invalid-photo-codec" | "capture/not-bound-error" | "capture/capture-type-not-supported" | "capture/video-not-enabled" | "capture/photo-not-enabled" | "capture/aborted" | "capture/unknown"

Defined in​

CameraError.ts:31


DeviceError​

Ƭ DeviceError: "device/configuration-error" | "device/no-device" | "device/invalid-device" | "device/torch-unavailable" | "device/microphone-unavailable" | "device/pixel-format-not-supported" | "device/low-light-boost-not-supported" | "device/focus-not-supported" | "device/camera-not-available-on-simulator"

Defined in​

CameraError.ts:8


FormatError​

Ƭ FormatError: "format/invalid-fps" | "format/invalid-hdr" | "format/invalid-low-light-boost" | "format/invalid-format" | "format/invalid-color-space"

Defined in​

CameraError.ts:18


FrameProcessor​

Ƭ FrameProcessor: Object

Type declaration​

NameType
frameProcessor(frame: Frame) => void
type"frame-processor"

Defined in​

CameraProps.ts:7


ParameterError​

Ƭ ParameterError: "parameter/invalid-parameter" | "parameter/unsupported-os" | "parameter/unsupported-output" | "parameter/unsupported-input" | "parameter/invalid-combination"

Defined in​

CameraError.ts:2


PermissionError​

Ƭ PermissionError: "permission/microphone-permission-denied" | "permission/camera-permission-denied"

Defined in​

CameraError.ts:1


PhysicalCameraDeviceType​

Ƭ PhysicalCameraDeviceType: "ultra-wide-angle-camera" | "wide-angle-camera" | "telephoto-camera"

Indentifiers for a physical camera (one that actually exists on the back/front of the device)

  • "ultra-wide-angle-camera": A built-in camera with a shorter focal length than that of a wide-angle camera. (focal length between below 24mm)
  • "wide-angle-camera": A built-in wide-angle camera. (focal length between 24mm and 35mm)
  • "telephoto-camera": A built-in camera device with a longer focal length than a wide-angle camera. (focal length between above 85mm)

Some Camera devices consist of multiple physical devices. They can be interpreted as logical devices, for example:

  • "ultra-wide-angle-camera" + "wide-angle-camera" = dual wide-angle camera.
  • "wide-angle-camera" + "telephoto-camera" = dual camera.
  • "ultra-wide-angle-camera" + "wide-angle-camera" + "telephoto-camera" = triple camera.

Defined in​

CameraDevice.ts:26


SessionError​

Ƭ SessionError: "session/camera-not-ready" | "session/camera-cannot-be-opened" | "session/camera-has-been-disconnected" | "session/audio-session-setup-failed" | "session/audio-in-use-by-other-app" | "session/audio-session-failed-to-activate"

Defined in​

CameraError.ts:24


SystemError​

Ƭ SystemError: "system/camera-module-not-found" | "system/no-camera-manager" | "system/frame-processors-unavailable" | "system/view-not-found"

Defined in​

CameraError.ts:53


UnknownError​

Ƭ UnknownError: "unknown/unknown"

Defined in​

CameraError.ts:58


VideoStabilizationMode​

Ƭ VideoStabilizationMode: "off" | "standard" | "cinematic" | "cinematic-extended" | "auto"

Indicates a format's supported video stabilization mode. Enabling video stabilization may introduce additional latency into the video capture pipeline.

  • "off": No video stabilization. Indicates that video should not be stabilized
  • "standard": Standard software-based video stabilization. Standard video stabilization reduces the field of view by about 10%.
  • "cinematic": Advanced software-based video stabilization. This applies more aggressive cropping or transformations than standard.
  • "cinematic-extended": Extended software- and hardware-based stabilization that aggressively crops and transforms the video to apply a smooth cinematic stabilization.
  • "auto": Indicates that the most appropriate video stabilization mode for the device and format should be chosen automatically

Defined in​

CameraDevice.ts:46

Variables​

VisionCameraProxy​

• Const VisionCameraProxy: TVisionCameraProxy = proxy

Defined in​

FrameProcessorPlugins.ts:95

Functions​

createFrameProcessor​

â–¸ createFrameProcessor(frameProcessor, type): FrameProcessor

Create a new Frame Processor function which you can pass to the <Camera>. (See "Frame Processors")

Make sure to add the 'worklet' directive to the top of the Frame Processor function, otherwise it will not get compiled into a worklet.

Also make sure to memoize the returned object, so that the Camera doesn't reset the Frame Processor Context each time.

Parameters​

NameType
frameProcessor(frame: Frame) => void
type"frame-processor"

Returns​

FrameProcessor

Defined in​

hooks/useFrameProcessor.ts:13


getCameraFormat​

â–¸ getCameraFormat(device, filter): CameraDeviceFormat

Get the best matching Camera format for the given device that satisfies your requirements using a sorting filter.

Parameters​

NameTypeDescription
deviceCameraDeviceThe Camera Device you're currently using
filterFormatFilterThe filter you want to use. The format that matches your filter the closest will be returned

Returns​

CameraDeviceFormat

The format that matches your filter the closest.

Defined in​

devices/getCameraFormat.ts:64


isErrorWithCause​

â–¸ isErrorWithCause(error): error is ErrorWithCause

Checks if the given error is of type ErrorWithCause

Parameters​

NameTypeDescription
errorunknownAny unknown object to validate

Returns​

error is ErrorWithCause

true if the given error is of type ErrorWithCause

Defined in​

CameraError.ts:176


runAsync​

â–¸ runAsync(frame, func): void

Runs the given function asynchronously, while keeping a strong reference to the Frame.

For example, if you want to run a heavy face detection algorithm while still drawing to the screen at 60 FPS, you can use runAsync(...) to offload the face detection algorithm to a separate thread.

Example

const frameProcessor = useFrameProcessor((frame) => {
'worklet'
console.log('New Frame')
runAsync(frame, () => {
'worklet'
const faces = detectFaces(frame)
const face = [faces0]
console.log(`Detected a new face: ${face}`)
})
})

Parameters​

NameTypeDescription
frameFrameThe current Frame of the Frame Processor.
func() => voidThe function to execute.

Returns​

void

Defined in​

FrameProcessorPlugins.ts:177


runAtTargetFps​

â–¸ runAtTargetFps<T>(fps, func): T | undefined

Runs the given function at the given target FPS rate.

For example, if you want to run a heavy face detection algorithm only once per second, you can use runAtTargetFps(1, ...) to throttle it to 1 FPS.

Example

const frameProcessor = useFrameProcessor((frame) => {
'worklet'
console.log('New Frame')
runAtTargetFps(5, () => {
'worklet'
const faces = detectFaces(frame)
console.log(`Detected a new face: ${faces[0]}`)
})
})

Type parameters​

Name
T

Parameters​

NameTypeDescription
fpsnumberThe target FPS rate at which the given function should be executed
func() => TThe function to execute.

Returns​

T | undefined

The result of the function if it was executed, or undefined otherwise.

Defined in​

FrameProcessorPlugins.ts:136


sortDevices​

â–¸ sortDevices(left, right): number

Compares two devices by the following criteria:

  • wide-angle-cameras are ranked higher than others
  • Devices with more physical cameras are ranked higher than ones with less. (e.g. "Triple Camera" > "Wide-Angle Camera")

Note that this makes the sort() function descending, so the first element ([0]) is the "best" device.

Example

const devices = camera.devices.sort(sortDevices)
const bestDevice = devices[0]

Method

Parameters​

NameType
leftCameraDevice
rightCameraDevice

Returns​

number

Defined in​

utils/FormatFilter.ts:18


sortFormats​

â–¸ sortFormats(left, right): number

Sort formats by resolution and aspect ratio difference (to the Screen size).

Note that this makes the sort() function descending, so the first element ([0]) is the "best" device.

Parameters​

NameType
leftCameraDeviceFormat
rightCameraDeviceFormat

Returns​

number

Defined in​

utils/FormatFilter.ts:72


tryParseNativeCameraError​

â–¸ tryParseNativeCameraError<T>(nativeError): CameraCaptureError | CameraRuntimeError | T

Tries to parse an error coming from native to a typed JS camera error.

Method

Type parameters​

Name
T

Parameters​

NameTypeDescription
nativeErrorTThe native error instance. This is a JSON in the legacy native module architecture.

Returns​

CameraCaptureError | CameraRuntimeError | T

A CameraRuntimeError or CameraCaptureError, or the nativeError itself if it's not parsable

Defined in​

CameraError.ts:202


useCameraDevice​

â–¸ useCameraDevice(position, filter): CameraDevice | undefined

Get the best matching Camera device that best satisfies your requirements using a sorting filter.

Example

const [position, setPosition] = useState<CameraPosition>('back')
const device = useCameraDevice(position, { devices: ['wide-angle-camera'] })

Parameters​

NameTypeDescription
positionCameraPositionThe position of the Camera device relative to the phone.
filterDeviceFilterThe filter you want to use. The Camera device that matches your filter the closest will be returned

Returns​

CameraDevice | undefined

The Camera device that matches your filter the closest.

Defined in​

hooks/useCameraDevice.ts:16


useFrameProcessor​

â–¸ useFrameProcessor(frameProcessor, dependencies): FrameProcessor

Returns a memoized Frame Processor function wich you can pass to the <Camera>. (See "Frame Processors")

Make sure to add the 'worklet' directive to the top of the Frame Processor function, otherwise it will not get compiled into a worklet.

Example

const frameProcessor = useFrameProcessor((frame) => {
'worklet'
const qrCodes = scanQRCodes(frame)
console.log(`QR Codes: ${qrCodes}`)
}, [])

Parameters​

NameTypeDescription
frameProcessor(frame: Frame) => voidThe Frame Processor
dependenciesDependencyListThe React dependencies which will be copied into the VisionCamera JS-Runtime.

Returns​

FrameProcessor

The memoized Frame Processor.

Defined in​

hooks/useFrameProcessor.ts:49