export interface ConfigParams { [ key ] : string | number ; } export type VideoFormat = { name : string ; fields : number ; width : number ; height : number ; squareWidth : number ; squareHeight : number ; timescale : number ; duration : number ; audioSampleRate : number ; audioChannels : number ; } ; export class VideoFormats { private formats : Map < string , VideoFormat > ; constructor ( ) { this . formats = new Map < string , VideoFormat > ( ) ; this . formats . set ( '720p5000' , { name : '720p5000' , fields : 1 , width : 1280 , height : 720 , squareWidth : 1280 , squareHeight : 720 , timescale : 50 , duration : 1 , audioSampleRate : 48000 , audioChannels : 8 } ) ; this . formats . set ( '1080i5000' , { name : '1080i5000' , fields : 2 , width : 1920 , height : 1080 , squareWidth : 1920 , squareHeight : 1080 , timescale : 50 , duration : 1 , audioSampleRate : 48000 , audioChannels : 8 } ) ; this . formats . set ( '1080p5000' , { name : '1080p5000' , fields : 1 , width : 1920 , height : 1080 , squareWidth : 1920 , squareHeight : 1080 , timescale : 50 , duration : 1 , audioSampleRate : 48000 , audioChannels : 8 } ) ; } get ( name ) { const format = this . formats . get ( name ) ; if ( ! format ) throw new Error ( `Video format ${ name } not found` ) ; return format ; } } export interface DeviceConfig { name : string ; deviceIndex : number ; [ key ] : unknown ; } export interface ConsumerConfig { format : VideoFormat ; devices : DeviceConfig [ ] ; }