VisionCamera
Classes​
Interfaces​
- CameraDevice
- CameraDeviceFormat
- CameraProps
- ErrorWithCause
- FormatFilter
- PhotoFile
- Point
- RecordVideoOptions
- TakePhotoOptions
- 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: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​
| Name | Type |
|---|---|
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​
| Name | Type |
|---|---|
frameProcessor | (frame: Frame) => void |
type | "frame-processor" |
Returns​
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​
| Name | Type | Description |
|---|---|---|
device | CameraDevice | The Camera Device you're currently using |
filter | FormatFilter | The filter you want to use. The format that matches your filter the closest will be returned |
Returns​
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​
| 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
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
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​
| Name | Type | Description |
|---|---|---|
position | CameraPosition | The position of the Camera device relative to the phone. |
filter | DeviceFilter | The 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​
| 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