SkiaCameraProps
interface SkiaCameraProps extends CameraProps, PickRepresents props for a SkiaCamera.
Properties
cameraExtension?
optional cameraExtension: CameraExtensionInherited from
colorSpace?
optional colorSpace:
| ColorSpace
| "auto"Inherited from
depthFormat?
optional depthFormat:
| CameraFormat
| nullInherited from
device
device:
| CameraPosition
| CameraDeviceInherited from
enableDistortionCorrection?
optional enableDistortionCorrection: booleanInherited from
CameraProps.enableDistortionCorrection
enableLowLightBoost?
optional enableLowLightBoost: booleanInherited from
CameraProps.enableLowLightBoost
enableMultiCamSupport?
optional enableMultiCamSupport: booleanInherited from
CameraProps.enableMultiCamSupport
enablePhysicalBufferRotation?
optional enablePhysicalBufferRotation: booleanPhysically rotates buffers to the desired target Orientation
and MirrorMode.
By default, it is disabled as Skia rotates and mirrors the
Frame via efficient GPU-based transforms.
Enabling this results in the Frame always being
upright and never mirrored.
Default
falseenablePreviewSizedOutputBuffers?
optional enablePreviewSizedOutputBuffers: booleanConfigures the underlying CameraVideoOutput
to downscale Frames to a size suitable for
preview, such as the screen size.
This may be more efficient if you chose a high-resolution
CameraFormat as Skia doesn't have to operate
on high-resolution Frames, but ideally you
should choose a matching CameraFormat (possibly
a preview-sized one) upfront, so no scaling would be necessary
at any point in the pipeline.
Default
falseenableSmoothAutoFocus?
optional enableSmoothAutoFocus: booleanInherited from
CameraProps.enableSmoothAutoFocus
enableVideoHDR?
optional enableVideoHDR: booleanInherited from
format?
optional format: CameraFormatInherited from
fps?
optional fps: RangeInherited from
getInitialExposureBias()?
optional getInitialExposureBias: () => number | undefinedInherited from
CameraProps.getInitialExposureBias
getInitialZoom()?
optional getInitialZoom: () => number | undefinedInherited from
isActive
isActive: booleanInherited from
mirrorMode?
optional mirrorMode: MirrorModeInherited from
onConfigured()?
optional onConfigured: () => voidCalled whenever the CameraSession
has been configured with new connections via
configure(...)
and connections to the individual outputs are formed.
This is a good place to check output
capabilities, such as CameraVideoOutput.getSupportedVideoCodecs()
Inherited from
onError()?
optional onError: (error: Error) => voidCalled whenever the CameraSession
has encountered an error.
Inherited from
onFrame()
onFrame: (frame: Frame, render: (onDraw: (state: SkiaOnFrameState) => void) => void) => voidCalled on every Frame with the current state.
Note
You must render the Frame to the Canvas yourself
via render, otherwise it'll just be a black screen.
Worklet
Example
onFrame(frame, render) {
'worklet'
render(({ frameTexture, canvas }) => {
canvas.drawImage(frameTexture, 0, 0)
})
frame.dispose()
}onInterruptionEnded()?
optional onInterruptionEnded: () => voidCalled when a previous interruption
has ended and the CameraSession
is running uninterrupted again.
Inherited from
CameraProps.onInterruptionEnded
onInterruptionStarted()?
optional onInterruptionStarted: (interruption: InterruptionReason) => voidCalled whenever the CameraSession
has encountered an interruption of the given
InterruptionReason.
Interruptions are temporarily.
Inherited from
CameraProps.onInterruptionStarted
onStarted()?
optional onStarted: () => voidCalled when the CameraSession
has been started.
Inherited from
onStopped()?
optional onStopped: () => voidCalled when the CameraSession
has been stopped.
Inherited from
orientationSource?
optional orientationSource:
| OrientationSource
| "custom"Set a desired OrientationSource
for automatically applying Orientation
to all outputs, or 'custom' if you
prefer to manually specify Orientation
yourself.
Inherited from
outputs?
optional outputs: CameraOutput[]Inherited from
pixelFormat?
optional pixelFormat: TargetVideoPixelFormatSelects the TargetVideoPixelFormat for the
Frame Output using the Skia rendering pipeline.
It is recommended to use 'native'
if your currently selected CameraFormat's
nativePixelFormat is
supported by Skia as this is a zero-copy GPU-only path.
Only resort back to 'yuv'
(or possibly even 'rgb') if
CPU-based Frame access is required.
Note
Use 'native' with caution,
as the device's native format could be a format that is not
supported by Skia - for example
'raw-bayer-packed96-12-bit'.
The 'private' pixel format is the
most efficient GPU-only pixel format supported by Skia.
Default
'native' or 'yuv'ref?
optional ref: Ref<SkiaCameraRef>A reference to a SkiaCamera.
See
videoStabilizationMode?
optional videoStabilizationMode: VideoStabilizationModeInherited from
CameraProps.videoStabilizationMode
warnIfRenderSkipped?
optional warnIfRenderSkipped: booleanWarns the developer if the onFrame(...)
callback did not call render(...).
Disable this if you intentionally want to skip a render.
Default
true