import type { CameraFactory } from '../CameraFactory.nitro' 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 }