VisionCamera
Classes​
Interfaces​
- CameraDevice
- CameraDeviceFormat
- CameraProps
- ErrorWithCause
- PhotoFile
- Point
- RecordVideoOptions
- TakePhotoOptions
- TemporaryFile
- VideoFile
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:53
CameraDevices​
Ƭ CameraDevices: { [key in CameraPosition]: CameraDevice | undefined }
Defined in​
hooks/useCameraDevices.ts:7
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" | "unspecified" | "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
iOS only​
"unspecified": Indicates that the device's position relative to the system hardware is unspecified
Android only​
"external": The camera device is an external camera, and has no fixed facing relative to the device's screen. (Android only)
Defined in​
CameraPosition.ts:13
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​
| Name | Type |
|---|---|
frameProcessor | (frame: Frame) => void |
type | "frame-processor" |
Defined in​
CameraProps.ts:7
LogicalCameraDeviceType​
Ƭ LogicalCameraDeviceType: "dual-camera" | "dual-wide-camera" | "triple-camera"
Indentifiers for a logical camera (Combinations of multiple physical cameras to create a single logical camera).
"dual-camera": A combination of wide-angle and telephoto cameras that creates a capture device."dual-wide-camera": A device that consists of two cameras of fixed focal length, one ultrawide angle and one wide angle."triple-camera": A device that consists of three cameras of fixed focal length, one ultrawide angle, one wide angle, and one telephoto.
Defined in​
CameraDevice.ts:21
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)
Defined in​
CameraDevice.ts:12
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:64
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​
| Name | Type |
|---|---|
frameProcessor | (frame: Frame) => void |
type | "frame-processor" |
Returns​
Defined in​
hooks/useFrameProcessor.ts:13
isErrorWithCause​
â–¸ isErrorWithCause(error): error is ErrorWithCause
Checks if the given error is of type ErrorWithCause
Parameters​
| Name | Type | Description |
|---|---|---|
error | unknown | Any unknown object to validate |
Returns​
error is ErrorWithCause
true if the given error is of type ErrorWithCause
Defined in​
CameraError.ts:176
parsePhysicalDeviceTypes​
â–¸ parsePhysicalDeviceTypes(physicalDeviceTypes): PhysicalCameraDeviceType | LogicalCameraDeviceType
Parses an array of physical device types into a single PhysicalCameraDeviceType or LogicalCameraDeviceType, depending what matches.
Method
Parameters​
| Name | Type |
|---|---|
physicalDeviceTypes | PhysicalCameraDeviceType[] |
Returns​
PhysicalCameraDeviceType | LogicalCameraDeviceType
Defined in​
CameraDevice.ts:27
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​
| Name | Type | Description |
|---|---|---|
frame | Frame | The current Frame of the Frame Processor. |
func | () => void | The 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​
| Name | Type | Description |
|---|---|---|
fps | number | The target FPS rate at which the given function should be executed |
func | () => T | The 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​
| Name | Type |
|---|---|
left | CameraDevice |
right | CameraDevice |
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​
| Name | Type |
|---|---|
left | CameraDeviceFormat |
right | CameraDeviceFormat |
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​
| Name | Type | Description |
|---|---|---|
nativeError | T | The 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
useCameraDevices​
â–¸ useCameraDevices(): CameraDevices
Gets the best available CameraDevice. Devices with more cameras are preferred.
Throws
CameraRuntimeError if no device was found.
Example
const device = useCameraDevice()
// ...
return <Camera device={device} />
Returns​
The best matching CameraDevice.
Defined in​
hooks/useCameraDevices.ts:29
â–¸ useCameraDevices(deviceType): CameraDevices
Gets a CameraDevice for the requested device type.
Throws
CameraRuntimeError if no device was found.
Example
const device = useCameraDevice('wide-angle-camera')
// ...
return <Camera device={device} />
Parameters​
| Name | Type | Description |
|---|---|---|
deviceType | PhysicalCameraDeviceType | LogicalCameraDeviceType | Specifies a device type which will be used as a device filter. |
Returns​
A CameraDevice for the requested device type.
Defined in​
hooks/useCameraDevices.ts:44
useCameraFormat​
â–¸ useCameraFormat(device?): CameraDeviceFormat | undefined
Returns the best format for the given camera device.
This function tries to choose a format with the highest possible photo-capture resolution and best matching aspect ratio.
Parameters​
| Name | Type | Description |
|---|---|---|
device? | CameraDevice | The Camera Device |
Returns​
CameraDeviceFormat | undefined
The best matching format for the given camera device, or undefined if the camera device is undefined.
Defined in​
hooks/useCameraFormat.ts:14
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​
| Name | Type | Description |
|---|---|---|
frameProcessor | (frame: Frame) => void | The Frame Processor |
dependencies | DependencyList | The React dependencies which will be copied into the VisionCamera JS-Runtime. |
Returns​
The memoized Frame Processor.
Defined in​
hooks/useFrameProcessor.ts:49