/**
* These are the list of available video codecs settings that Skylink would use
* when streaming video stream with Peers.
* - The video codec would be used if the self and Peer's browser supports the selected codec.
* - This would default to the browser selected codec. In most cases, option <code>VP8</code> is
* used by default.
* @attribute VIDEO_CODEC
* @param {String} AUTO <small><b>DEFAULT</b> | Value <code>"auto"</code></small>
* The option to let Skylink use any video codec selected by the browser generated session description.
* @param {String} VP8 <small>Value <code>"VP8"</code></small>
* The option to let Skylink use the [VP8](https://en.wikipedia.org/wiki/VP8) codec.<br>
* This is the common and mandantory video codec used by most browsers.
* @param {String} H264 <small>Value <code>"H264"</code></small>
* The option to let Skylink use the [H264](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC) codec.<br>
* This only works if the browser supports the H264 video codec.
* @type JSON
* @readOnly
* @component Stream
* @for Skylink
* @since 0.5.10
*/
Skylink.prototype.VIDEO_CODEC = {
AUTO: 'auto',
VP8: 'VP8',
H264: 'H264'
};
/**
* These are the list of available audio codecs settings that Skylink would use
* when streaming audio stream with Peers.
* - The audio codec would be used if the self and Peer's browser supports the selected codec.
* - This would default to the browser selected codec. In most cases, option <code>OPUS</code> is
* used by default.
* @attribute AUDIO_CODEC
* @param {String} AUTO <small><b>DEFAULT</b> | Value <code>"auto"</code></small>
* The option to let Skylink use any audio codec selected by the browser generated session description.
* @param {String} OPUS <small>Value <code>"opus"</code></small>
* The option to let Skylink use the [OPUS](https://en.wikipedia.org/wiki/Opus_(audio_format)) codec.<br>
* This is the common and mandantory audio codec used.
* @param {String} ISAC <small>Value <code>"ISAC"</code></small>
* The option to let Skylink use the [iSAC](https://en.wikipedia.org/wiki/Internet_Speech_Audio_Codec).<br>
* This only works if the browser supports the iSAC video codec.
* @type JSON
* @readOnly
* @component Stream
* @for Skylink
* @since 0.5.10
*/
Skylink.prototype.AUDIO_CODEC = {
AUTO: 'auto',
ISAC: 'ISAC',
OPUS: 'opus'
};
/**
* Stores the preferred Peer connection streaming audio codec.
* @attribute _selectedAudioCodec
* @type String
* @default Skylink.AUDIO_CODEC.AUTO
* @private
* @component Stream
* @for Skylink
* @since 0.5.10
*/
Skylink.prototype._selectedAudioCodec = 'auto';
/**
* Stores the preferred Peer connection streaming video codec.
* @attribute _selectedVideoCodec
* @type String
* @default Skylink.VIDEO_CODEC.AUTO
* @private
* @component Stream
* @for Skylink
* @since 0.5.10
*/
Skylink.prototype._selectedVideoCodec = 'auto';
/**
* These are the list of suggested video resolutions that Skylink should configure
* when retrieving self user media video stream.
* - Setting the resolution may not force set the resolution provided as it
* depends on the how the browser handles the resolution.
* - It's recommended to use video resolution option to maximum <code>FHD</code>, as the other
* resolution options may be unrealistic and create performance issues. However, we provide them
* to allow developers to test with the browser capability, but do use it at your own risk.
* - The higher the resolution, the more CPU usage might be used, hence it's recommended to
* use the default option <code>VGA</code>.
* - This follows the
* [Wikipedia Graphics display resolution page](https://en.wikipedia.org/wiki/Graphics_display_resolution#Video_Graphics_Array)
* @param {JSON} QQVGA <small>Value <code>{ width: 160, height: 120 }</code> | Aspect Ratio <code>4:3</code></small>
* The option to use QQVGA resolution.
* @param {JSON} HQVGA <small>Value <code>{ width: 240, height: 160 }</code> | Aspect Ratio <code>3:2</code></small>
* The option to use HQVGA resolution.
* @param {JSON} QVGA <small>Value <code>{ width: 320, height: 240 }</code> | Aspect Ratio <code>4:3</code></small>
* The option to use QVGA resolution.
* @param {JSON} WQVGA <small>Value <code>{ width: 384, height: 240 }</code> | Aspect Ratio <code>16:10</code></small>
* The option to use WQVGA resolution.
* @param {JSON} HVGA <small>Value <code>{ width: 480, height: 320 }</code> | Aspect Ratio <code>3:2</code></small>
* The option to use HVGA resolution.
* @param {JSON} VGA <small><b>DEFAULT</b> | Value <code>{ width: 640, height: 480 }</code> | Aspect Ratio <code>4:3</code></small>
* The option to use VGA resolution.
* @param {JSON} WVGA <small>Value <code>{ width: 768, height: 480 }</code> | Aspect Ratio <code>16:10</code></small>
* The option to use WVGA resolution.
* @param {JSON} FWVGA <small>Value <code>{ width: 854, height: 480 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use FWVGA resolution.
* @param {JSON} SVGA <small>Value <code>{ width: 800, height: 600 }</code> | Aspect Ratio <code>4:3</code></small>
* The option to use SVGA resolution.
* @param {JSON} DVGA <small>Value <code>{ width: 960, height: 640 }</code> | Aspect Ratio <code>3:2</code></small>
* The option to use DVGA resolution.
* @param {JSON} WSVGA <small>Value <code>{ width: 1024, height: 576 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use WSVGA resolution.
* @param {JSON} HD <small>Value <code>{ width: 1280, height: 720 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use HD resolution.
* @param {JSON} HDPLUS <small>Value <code>{ width: 1600, height: 900 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use HDPLUS resolution.
* @param {JSON} FHD <small>Value <code>{ width: 1920, height: 1080 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use FHD resolution.
* @param {JSON} QHD <small>Value <code>{ width: 2560, height: 1440 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use QHD resolution.
* @param {JSON} WQXGAPLUS <small>Value <code>{ width: 3200, height: 1800 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use WQXGAPLUS resolution.
* @param {JSON} UHD <small>Value <code>{ width: 3840, height: 2160 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use UHD resolution.
* @param {JSON} UHDPLUS <small>Value <code>{ width: 5120, height: 2880 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use UHDPLUS resolution.
* @param {JSON} FUHD <small>Value <code>{ width: 7680, height: 4320 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use FUHD resolution.
* @param {JSON} QUHD <small>Value <code>{ width: 15360, height: 8640 }</code> | Aspect Ratio <code>16:9</code></small>
* The option to use QUHD resolution.
* @attribute VIDEO_RESOLUTION
* @type JSON
* @readOnly
* @component Stream
* @for Skylink
* @since 0.5.6
*/
Skylink.prototype.VIDEO_RESOLUTION = {
QQVGA: { width: 160, height: 120, aspectRatio: '4:3' },
HQVGA: { width: 240, height: 160, aspectRatio: '3:2' },
QVGA: { width: 320, height: 240, aspectRatio: '4:3' },
WQVGA: { width: 384, height: 240, aspectRatio: '16:10' },
HVGA: { width: 480, height: 320, aspectRatio: '3:2' },
VGA: { width: 640, height: 480, aspectRatio: '4:3' },
WVGA: { width: 768, height: 480, aspectRatio: '16:10' },
FWVGA: { width: 854, height: 480, aspectRatio: '16:9' },
SVGA: { width: 800, height: 600, aspectRatio: '4:3' },
DVGA: { width: 960, height: 640, aspectRatio: '3:2' },
WSVGA: { width: 1024, height: 576, aspectRatio: '16:9' },
HD: { width: 1280, height: 720, aspectRatio: '16:9' },
HDPLUS: { width: 1600, height: 900, aspectRatio: '16:9' },
FHD: { width: 1920, height: 1080, aspectRatio: '16:9' },
QHD: { width: 2560, height: 1440, aspectRatio: '16:9' },
WQXGAPLUS: { width: 3200, height: 1800, aspectRatio: '16:9' },
UHD: { width: 3840, height: 2160, aspectRatio: '16:9' },
UHDPLUS: { width: 5120, height: 2880, aspectRatio: '16:9' },
FUHD: { width: 7680, height: 4320, aspectRatio: '16:9' },
QUHD: { width: 15360, height: 8640, aspectRatio: '16:9' }
};