2018-10-23 01:05:09 +03:00
|
|
|
define(["globalize"], function(globalize) {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function getVideoQualityOptions(options) {
|
|
|
|
var maxStreamingBitrate = options.currentMaxBitrate,
|
|
|
|
videoWidth = options.videoWidth,
|
|
|
|
maxAllowedWidth = videoWidth || 4096,
|
|
|
|
qualityOptions = [];
|
|
|
|
maxAllowedWidth >= 3800 && (qualityOptions.push({
|
|
|
|
name: "4K - 120 Mbps",
|
|
|
|
maxHeight: 2160,
|
|
|
|
bitrate: 12e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "4K - 100 Mbps",
|
|
|
|
maxHeight: 2160,
|
|
|
|
bitrate: 1e8
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "4K - 80 Mbps",
|
|
|
|
maxHeight: 2160,
|
|
|
|
bitrate: 8e7
|
|
|
|
})), maxAllowedWidth >= 1900 ? (qualityOptions.push({
|
|
|
|
name: "1080p - 60 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 6e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 50 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 5e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 40 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 4e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 30 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 3e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 25 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 25e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 20 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 2e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 15 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 15e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 10 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 10000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 8 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 8000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 6 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 6000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 5 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 5000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1080p - 4 Mbps",
|
|
|
|
maxHeight: 1080,
|
|
|
|
bitrate: 4000002
|
|
|
|
})) : maxAllowedWidth >= 1260 ? (qualityOptions.push({
|
|
|
|
name: "720p - 10 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 1e7
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 8 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 8e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 6 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 6e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 5 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 5e6
|
|
|
|
})) : maxAllowedWidth >= 620 && (qualityOptions.push({
|
|
|
|
name: "480p - 4 Mbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 4000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "480p - 3 Mbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 3000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "480p - 2.5 Mbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 25e5
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "480p - 2 Mbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 2000001
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "480p - 1.5 Mbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 1500001
|
|
|
|
})), maxAllowedWidth >= 1260 && (qualityOptions.push({
|
|
|
|
name: "720p - 4 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 4e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 3 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 3e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 2 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 2e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 1.5 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 15e5
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "720p - 1 Mbps",
|
|
|
|
maxHeight: 720,
|
|
|
|
bitrate: 1000001
|
|
|
|
})), qualityOptions.push({
|
|
|
|
name: "480p - 1 Mbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 1e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "480p - 720 kbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 72e4
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "480p - 420 kbps",
|
|
|
|
maxHeight: 480,
|
|
|
|
bitrate: 42e4
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "360p",
|
|
|
|
maxHeight: 360,
|
|
|
|
bitrate: 4e5
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "240p",
|
|
|
|
maxHeight: 240,
|
|
|
|
bitrate: 32e4
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "144p",
|
|
|
|
maxHeight: 144,
|
|
|
|
bitrate: 192e3
|
|
|
|
});
|
|
|
|
var autoQualityOption = {
|
|
|
|
name: globalize.translate("sharedcomponents#Auto"),
|
|
|
|
bitrate: 0,
|
|
|
|
selected: options.isAutomaticBitrateEnabled
|
|
|
|
};
|
|
|
|
if (options.enableAuto && qualityOptions.push(autoQualityOption), maxStreamingBitrate) {
|
|
|
|
for (var selectedIndex = -1, i = 0, length = qualityOptions.length; i < length; i++) {
|
|
|
|
var option = qualityOptions[i]; - 1 === selectedIndex && option.bitrate <= maxStreamingBitrate && (selectedIndex = i)
|
|
|
|
} - 1 === selectedIndex && (selectedIndex = qualityOptions.length - 1);
|
|
|
|
var currentQualityOption = qualityOptions[selectedIndex];
|
|
|
|
options.isAutomaticBitrateEnabled ? autoQualityOption.autoText = currentQualityOption.name : currentQualityOption.selected = !0
|
|
|
|
}
|
|
|
|
return qualityOptions
|
|
|
|
}
|
|
|
|
|
|
|
|
function getAudioQualityOptions(options) {
|
|
|
|
var maxStreamingBitrate = options.currentMaxBitrate,
|
|
|
|
qualityOptions = [];
|
|
|
|
qualityOptions.push({
|
|
|
|
name: "2 Mbps",
|
|
|
|
bitrate: 2e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1.5 Mbps",
|
|
|
|
bitrate: 15e5
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "1 Mbps",
|
|
|
|
bitrate: 1e6
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "320 kbps",
|
|
|
|
bitrate: 32e4
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "256 kbps",
|
|
|
|
bitrate: 256e3
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "192 kbps",
|
|
|
|
bitrate: 192e3
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "128 kbps",
|
|
|
|
bitrate: 128e3
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "96 kbps",
|
|
|
|
bitrate: 96e3
|
|
|
|
}), qualityOptions.push({
|
|
|
|
name: "64 kbps",
|
|
|
|
bitrate: 64e3
|
|
|
|
});
|
|
|
|
var autoQualityOption = {
|
|
|
|
name: globalize.translate("sharedcomponents#Auto"),
|
|
|
|
bitrate: 0,
|
|
|
|
selected: options.isAutomaticBitrateEnabled
|
|
|
|
};
|
|
|
|
if (options.enableAuto && qualityOptions.push(autoQualityOption), maxStreamingBitrate) {
|
|
|
|
for (var selectedIndex = -1, i = 0, length = qualityOptions.length; i < length; i++) {
|
|
|
|
var option = qualityOptions[i]; - 1 === selectedIndex && option.bitrate <= maxStreamingBitrate && (selectedIndex = i)
|
|
|
|
} - 1 === selectedIndex && (selectedIndex = qualityOptions.length - 1);
|
|
|
|
var currentQualityOption = qualityOptions[selectedIndex];
|
|
|
|
options.isAutomaticBitrateEnabled ? autoQualityOption.autoText = currentQualityOption.name : currentQualityOption.selected = !0
|
|
|
|
}
|
|
|
|
return qualityOptions
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
getVideoQualityOptions: getVideoQualityOptions,
|
|
|
|
getAudioQualityOptions: getAudioQualityOptions
|
|
|
|
}
|
|
|
|
});
|