tethr
Version:
Controlls USB-connected cameras, webcam, and smartphone camera from browser
166 lines (165 loc) • 4.93 kB
TypeScript
import { BiMap } from 'bim';
import { vec2 } from 'linearly';
/**
* Aperture value. `'auto'` means auto aperture. The corresponding property in PTP spec is `fNumber`.
* @example `'auto', 5.6, 9`
* @category Config
*/
export type Aperture = 'auto' | number;
/**
* Battery level represented as a number between `0` and `100`. `100` means full battery.
* . `'ac'` means AC power, `'low'` means low battery.
* @ccategory Config
*/
export type BatteryLevel = 'ac' | 'low' | number;
/**
* Color mode.
* @category Config
*/
export type ColorMode = string;
/**
* Drive mode. The corresponding property in PTP spec is `stillCaptureMode`.
* @category Config
*/
export type DriveMode = 'normal' | 'burst' | 'timelapse';
/**
* Exposure bias compensation.
* @example `'-5', '0', '1 1/3'`
* @category Config
*/
export type ExposureComp = string;
/**
* Exposure metering mode.
* @category Config
*/
export type ExposureMeteringMode = 'average' | 'center-weighted-average' | 'multi-spot' | 'center-spot';
/**
* Exposure program mode. The corresponding property in PTP spec is `exposureProgramMode`.
* @category Config
*/
export type ExposureMode = 'P' | 'A' | 'S' | 'M' | 'creative' | 'action' | 'portrait' | 'video' | `C${1 | 2 | 3}` | `vendor:${string}`;
/**
* Color mode.
* @category Config
*/
export type FlashMode = 'auto' | 'off' | 'fill' | 'red eye auto' | 'red eye fill' | 'external sync';
/**
* Focus mode.
* @category Config
*/
export type FocusMode = 'af' | 'mf';
/**
* Functional mode. `'standard'` means normal mode, `'sleep'` means sleep mode.
* @category Config
*/
export type FunctionalMode = 'standard' | 'sleep';
/**
* Which automatic focus is used.
* @category Config
*/
export type FocusMeteringMode = 'center spot' | 'multi spot' | `vendor:${string}`;
/**
* Focus peaking mode. This usually corresponds to the color of the peaking. `false` means disabled.
* @example `false, 'red', 'white'`
* @category Config
*/
export type FocusPeaking = false | string;
/**
* Focal length in millimeters. Note that it is not 35mm equivalent focal length.
* @category Config
*/
export type FocalLength = number | 'spherical';
/**
* Image aspect.
* @example `'3:2', '16:9', 'a size'`
* @category Config
*/
export type ImageAspect = `${number}:${number}` | 'a size';
/**
* Image quality.
* @category Config
*/
export type ImageQuality = string;
/**
* Image size.
* @example `'L', 'M', 'S'`
* @category Config
*/
export type ImageSize = string;
/**
* ISO sensitivity.
* @category Config
*/
export type ISO = 'auto' | number;
/**
* Manual focus option.
*/
export type ManualFocusOption = `${'near' | 'far'}:${1 | 2 | 3}`;
/**
* Shutter speed.
* @example `'auto', 'bulb', 'sync', '1/100', '15'`
* @category Config
*/
export type ShutterSpeed = 'auto' | 'bulb' | 'sync' | `${number}/${number}` | `${number}`;
/**
* White balance.
* @category Config
*/
export type WhiteBalance = 'auto' | 'auto cool' | 'auto warm' | 'auto ambience' | 'daylight' | 'shade' | 'cloud' | 'incandescent' | 'fluorescent' | 'tungsten' | 'flash' | 'underwater' | 'manual' | 'custom' | `vendor:${string}`;
export type ConfigType = {
aperture: Aperture;
autoFocusFrameCenter: vec2;
autoFocusFrameSize: string;
batteryLevel: BatteryLevel;
burstInterval: number;
burstNumber: number;
canRunAutoFocus: boolean;
canRunManualFocus: boolean;
canStartLiveview: boolean;
canTakePhoto: boolean;
captureDelay: number;
colorMode: ColorMode;
colorTemperature: number;
contrast: number;
dateTime: Date;
destinationToSave: string;
digitalZoom: number;
driveMode: DriveMode;
exposureComp: ExposureComp;
exposureMeteringMode: ExposureMeteringMode;
exposureMode: ExposureMode;
facingMode: string;
flashMode: FlashMode;
focalLength: FocalLength;
focusDistance: number;
focusMeteringMode: FocusMeteringMode;
focusMode: FocusMode;
focusPeaking: FocusPeaking;
functionalMode: FunctionalMode;
imageAspect: ImageAspect;
imageQuality: ImageQuality;
imageSize: ImageSize;
iso: ISO;
liveview: MediaStream;
liveviewMagnifyRatio: number;
liveviewSize: string;
manualFocusOptions: ManualFocusOption[];
manufacturer: string;
model: string;
serialNumber: string;
sharpness: number;
shutterSpeed: ShutterSpeed;
shutterSound: number;
timelapseInterval: number;
timelapseNumber: number;
whiteBalance: WhiteBalance;
};
export type ConfigName = keyof ConfigType;
/**
* All configuration names in the order of dependencies.
*/
export declare const ConfigNameList: ConfigName[];
export declare const ConfigForDevicePropTable: BiMap<number, keyof ConfigType>;
export declare const ExposureModeTable: BiMap<number, ExposureMode>;
export declare const WhiteBalanceTable: BiMap<number, WhiteBalance>;
export declare const DriveModeTable: BiMap<number, DriveMode>;