import type { Constraint } from '../common-types/Constraint'; import type { CameraDevice } from '../inputs/CameraDevice.nitro'; import type { CameraOutputConfiguration } from './CameraOutputConfiguration'; import type { CameraSessionConfig } from './CameraSessionConfig.nitro'; /** * Specifies a single Camera input stream connection * streaming into zero or more outputs. */ export interface CameraSessionConnection { /** * The input device of this {@linkcode CameraSessionConnection}. * This {@linkcode CameraDevice} will stream into all given * {@linkcode outputs}. */ input: CameraDevice; /** * All output configurations that the given {@linkcode input} * device will stream into. */ outputs: CameraOutputConfiguration[]; /** * Constraints specifically for this connection. */ constraints: Constraint[]; /** * Sets the initial {@linkcode CameraController.zoom | zoom} * value for the {@linkcode CameraController}. * * This value can later be adjusted * via {@linkcode CameraController.setZoom | CameraController.setZoom(...)}. */ initialZoom?: number; /** * Sets the initial {@linkcode CameraController.exposureBias | exposureBias} * value for the {@linkcode CameraController}. * * This value can later be adjusted * via {@linkcode CameraController.setExposureBias | CameraController.setExposureBias(...)}. */ initialExposureBias?: number; /** * A callback that will be called after the given {@linkcode constraints} have * been fully resolved, and a valid {@linkcode CameraSessionConfig} has been * constructed. * * This is equivalent to calling {@linkcode CameraFactory.resolveConstraints | CameraFactory.resolveConstraints(...)} * with the {@linkcode input}, {@linkcode outputs} and {@linkcode constraints} listed here. * * @discussion * The given {@linkcode config} can be used to provide visual feedback in * Camera apps where buttons have to be greyed out when they are not supported, * e.g. when passing a HDR {@linkcode Constraint} but the session didn't end up * selecting a {@linkcode CameraSessionConfig.selectedVideoDynamicRange}. */ onSessionConfigSelected?: (config: CameraSessionConfig) => void; }