* Move everything into package * Remove .DS_Store * Move scripts and eslintrc to package * Create CODE_OF_CONDUCT.md * fix some links * Update all links (I think) * Update generated docs * Update notice-yarn-changes.yml * Update validate-android.yml * Update validate-cpp.yml * Delete notice-yarn-changes.yml * Update validate-cpp.yml * Update validate-cpp.yml * Update validate-js.yml * Update validate-cpp.yml * Update validate-cpp.yml * wrong c++ style * Revert "wrong c++ style" This reverts commit 55a3575589c6f13f8b05134d83384f55e0601ab2.
20 KiB
id, title, sidebar_label, sidebar_position, custom_edit_url
| id | title | sidebar_label | sidebar_position | custom_edit_url |
|---|---|---|---|---|
| index | VisionCamera | Overview | 0.5 | null |
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
CameraDevices
Ƭ CameraDevices: { [key in CameraPosition]: CameraDevice | undefined }
Defined in
CameraPermissionRequestResult
Ƭ CameraPermissionRequestResult: "granted" | "denied"
Defined in
CameraPermissionStatus
Ƭ CameraPermissionStatus: "granted" | "not-determined" | "denied" | "restricted"
Defined in
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
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
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
FormatError
Ƭ FormatError: "format/invalid-fps" | "format/invalid-hdr" | "format/invalid-low-light-boost" | "format/invalid-format" | "format/invalid-color-space"
Defined in
FrameProcessor
Ƭ FrameProcessor: Object
Type declaration
| Name | Type |
|---|---|
frameProcessor |
(frame: Frame) => void |
type |
"frame-processor" |
Defined in
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
ParameterError
Ƭ ParameterError: "parameter/invalid-parameter" | "parameter/unsupported-os" | "parameter/unsupported-output" | "parameter/unsupported-input" | "parameter/invalid-combination"
Defined in
PermissionError
Ƭ PermissionError: "permission/microphone-permission-denied" | "permission/camera-permission-denied"
Defined in
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
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
SystemError
Ƭ SystemError: "system/camera-module-not-found" | "system/no-camera-manager" | "system/frame-processors-unavailable" | "system/view-not-found"
Defined in
UnknownError
Ƭ UnknownError: "unknown/unknown"
Defined in
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
Variables
VisionCameraProxy
• Const VisionCameraProxy: TVisionCameraProxy = proxy
Defined in
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
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
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
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
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
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
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
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
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
▸ 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
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
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.