// Type definitions for WebRTC // Project: http://dev.w3.org/2011/webrtc/ // Definitions by: Ken Smith // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // Taken from http://dev.w3.org/2011/webrtc/editor/getusermedia.html // version: W3C Editor's Draft 29 June 2015 interface ConstrainBooleanParameters { exact?: boolean; ideal?: boolean; } interface NumberRange { max?: number; min?: number; } interface ConstrainNumberRange extends NumberRange { exact?: number; ideal?: number; } interface ConstrainStringParameters { exact?: string | string[]; ideal?: string | string[]; } interface MediaStreamConstraints { video?: boolean | MediaTrackConstraints; audio?: boolean | MediaTrackConstraints; } declare namespace W3C { type LongRange = NumberRange; type DoubleRange = NumberRange; type ConstrainBoolean = boolean | ConstrainBooleanParameters; type ConstrainNumber = number | ConstrainNumberRange; type ConstrainLong = ConstrainNumber; type ConstrainDouble = ConstrainNumber; type ConstrainString = string | string[] | ConstrainStringParameters; } interface MediaTrackConstraints extends MediaTrackConstraintSet { advanced?: MediaTrackConstraintSet[]; } interface MediaTrackConstraintSet { width?: W3C.ConstrainLong; height?: W3C.ConstrainLong; aspectRatio?: W3C.ConstrainDouble; frameRate?: W3C.ConstrainDouble; facingMode?: W3C.ConstrainString; volume?: W3C.ConstrainDouble; sampleRate?: W3C.ConstrainLong; sampleSize?: W3C.ConstrainLong; echoCancellation?: W3C.ConstrainBoolean; latency?: W3C.ConstrainDouble; deviceId?: W3C.ConstrainString; groupId?: W3C.ConstrainString; } interface MediaTrackSupportedConstraints { width?: boolean; height?: boolean; aspectRatio?: boolean; frameRate?: boolean; facingMode?: boolean; volume?: boolean; sampleRate?: boolean; sampleSize?: boolean; echoCancellation?: boolean; latency?: boolean; deviceId?: boolean; groupId?: boolean; } interface MediaStream extends EventTarget { //id: string; //active: boolean; //onactive: EventListener; //oninactive: EventListener; //onaddtrack: (event: MediaStreamTrackEvent) => any; //onremovetrack: (event: MediaStreamTrackEvent) => any; clone(): MediaStream; stop(): void; getAudioTracks(): MediaStreamTrack[]; getVideoTracks(): MediaStreamTrack[]; getTracks(): MediaStreamTrack[]; getTrackById(trackId: string): MediaStreamTrack; addTrack(track: MediaStreamTrack): void; removeTrack(track: MediaStreamTrack): void; } interface MediaStreamTrackEvent extends Event { //track: MediaStreamTrack; } interface MediaStreamTrack extends EventTarget { //id: string; //kind: string; //label: string; enabled: boolean; //muted: boolean; //remote: boolean; //readyState: MediaStreamTrackState; //onmute: EventListener; //onunmute: EventListener; //onended: EventListener; //onoverconstrained: EventListener; clone(): MediaStreamTrack; stop(): void; getCapabilities(): MediaTrackCapabilities; getConstraints(): MediaTrackConstraints; getSettings(): MediaTrackSettings; applyConstraints(constraints: MediaTrackConstraints): Promise; } interface MediaTrackCapabilities { //width: number | W3C.LongRange; //height: number | W3C.LongRange; //aspectRatio: number | W3C.DoubleRange; //frameRate: number | W3C.DoubleRange; //facingMode: string; //volume: number | W3C.DoubleRange; //sampleRate: number | W3C.LongRange; //sampleSize: number | W3C.LongRange; //echoCancellation: boolean[]; latency: number | W3C.DoubleRange; //deviceId: string; //groupId: string; } interface MediaTrackSettings { //width: number; //height: number; //aspectRatio: number; //frameRate: number; //facingMode: string; //volume: number; //sampleRate: number; //sampleSize: number; //echoCancellation: boolean; latency: number; //deviceId: string; //groupId: string; } interface MediaStreamError { //name: string; //message: string; //constraintName: string; } interface NavigatorGetUserMedia { (constraints: MediaStreamConstraints, successCallback: (stream: MediaStream) => void, errorCallback: (error: MediaStreamError) => void): void; } // to use with adapter.js, see: https://github.com/webrtc/adapter declare var getUserMedia: NavigatorGetUserMedia; interface Navigator { getUserMedia: NavigatorGetUserMedia; webkitGetUserMedia: NavigatorGetUserMedia; mozGetUserMedia: NavigatorGetUserMedia; msGetUserMedia: NavigatorGetUserMedia; mediaDevices: MediaDevices; } interface MediaDevices { getSupportedConstraints(): MediaTrackSupportedConstraints; getUserMedia(constraints: MediaStreamConstraints): Promise; enumerateDevices(): Promise; } interface MediaDeviceInfo { //label: string; //deviceId: string; //kind: string; //groupId: string; }