react-native-vision-camera
Version:
VisionCamera is the fastest and most powerful Camera for react-native.
50 lines (49 loc) • 2.06 kB
TypeScript
import type { HybridObject, Sync } from 'react-native-nitro-modules';
import type { FrameDroppedReason } from '../common-types/FrameDroppedReason';
import type { MediaType } from '../common-types/MediaType';
import type { NativeThread } from '../frame-processors/NativeThread.nitro';
import type { Depth } from '../instances/Depth.nitro';
import type { Frame } from '../instances/Frame.nitro';
import type { CameraOutput } from './CameraOutput.nitro';
/**
* A {@linkcode CameraOutputSynchronizer} synchronizes 2 or more
* {@linkcode CameraOutput}s to align their timestamps.
*
* The most common use-case is to synchronize a
* {@linkcode CameraFrameOutput} and a {@linkcode CameraDepthFrameOutput}
* to ensure the delivered {@linkcode Frame} and {@linkcode Depth}
* are synchronized.
*
* When an output is connected to the {@linkcode CameraOutputSynchronizer}
* you should no longer use its own frame callback, but instead
* use the {@linkcode setOnFramesCallback} provided here.
*
* @platform iOS
*/
export interface CameraOutputSynchronizer extends HybridObject<{
ios: 'swift';
android: 'kotlin';
}> {
/**
* The {@linkcode NativeThread} this
* {@linkcode CameraOutputSynchronizer} is running on.
*/
readonly thread: NativeThread;
/**
* The list of {@linkcode CameraOutput}s that are connected to this
* {@linkcode CameraOutputSynchronizer}.
*/
readonly outputs: CameraOutput[];
/**
* Set the callback to be called when a new set of synchronized
* Frames arrive.
* @note This method has to be called on a Worklet running on this {@linkcode thread}.
*/
setOnFramesCallback(onFrames: Sync<(frames: (Frame | Depth)[]) => boolean> | undefined): void;
/**
* Sets the callback that gets called when a {@linkcode Frame} or
* {@linkcode Depth}-frame has been dropped, possibly due to a long
* drift in timelines.
*/
setOnFrameDroppedCallback(onFrameDropped: ((frameType: MediaType, reason: FrameDroppedReason) => void) | undefined): void;
}