|
|
@ -28,39 +28,6 @@ var localConnectionQuality = 100; |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
var remoteConnectionQuality = {}; |
|
|
|
var remoteConnectionQuality = {}; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Converts statistics to format used by VideoLayout |
|
|
|
|
|
|
|
* @param stats |
|
|
|
|
|
|
|
* @returns {{bitrate: {download: *, upload: *}, packetLoss: {total: *, download: *, upload: *}}} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
function parseMUCStats(stats) { |
|
|
|
|
|
|
|
if(!stats || !stats.children || !stats.children.length) |
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
var children = stats.children; |
|
|
|
|
|
|
|
var extractedStats = {}; |
|
|
|
|
|
|
|
children.forEach((child) => { |
|
|
|
|
|
|
|
if(child.tagName !== "stat" || !child.attributes) |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
var attrKeys = Object.keys(child.attributes); |
|
|
|
|
|
|
|
if(!attrKeys || !attrKeys.length) |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
attrKeys.forEach((attr) => { |
|
|
|
|
|
|
|
extractedStats[attr] = child.attributes[attr]; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
bitrate: { |
|
|
|
|
|
|
|
download: extractedStats.bitrate_download, |
|
|
|
|
|
|
|
upload: extractedStats.bitrate_upload |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
packetLoss: { |
|
|
|
|
|
|
|
total: extractedStats.packetLoss_total, |
|
|
|
|
|
|
|
download: extractedStats.packetLoss_download, |
|
|
|
|
|
|
|
upload: extractedStats.packetLoss_upload |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Calculates the quality percent based on passed new and old value. |
|
|
|
* Calculates the quality percent based on passed new and old value. |
|
|
|
* @param newVal the new value |
|
|
|
* @param newVal the new value |
|
|
@ -90,8 +57,7 @@ export default { |
|
|
|
* @param data the statistics |
|
|
|
* @param data the statistics |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
updateRemoteStats: function (id, data) { |
|
|
|
updateRemoteStats: function (id, data) { |
|
|
|
data = parseMUCStats(data); |
|
|
|
if (!data || !("packetLoss" in data) || !("total" in data.packetLoss)) { |
|
|
|
if (!data || !data.packetLoss || !data.packetLoss.total) { |
|
|
|
|
|
|
|
eventEmitter.emit(CQEvents.REMOTESTATS_UPDATED, id, null, null); |
|
|
|
eventEmitter.emit(CQEvents.REMOTESTATS_UPDATED, id, null, null); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -115,24 +81,5 @@ export default { |
|
|
|
|
|
|
|
|
|
|
|
addListener: function (type, listener) { |
|
|
|
addListener: function (type, listener) { |
|
|
|
eventEmitter.on(type, listener); |
|
|
|
eventEmitter.on(type, listener); |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Converts statistics to format for sending through XMPP |
|
|
|
|
|
|
|
* @param stats the statistics |
|
|
|
|
|
|
|
* @returns [{tagName: "stat", attributes: {{bitrate_donwload: *}}, |
|
|
|
|
|
|
|
* {tagName: "stat", attributes: {{ bitrate_uplpoad: *}}, |
|
|
|
|
|
|
|
* {tagName: "stat", attributes: {{ packetLoss_total: *}}, |
|
|
|
|
|
|
|
* {tagName: "stat", attributes: {{ packetLoss_download: *}}, |
|
|
|
|
|
|
|
* {tagName: "stat", attributes: {{ packetLoss_upload: *}}] |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
convertToMUCStats: function (stats) { |
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
{tagName: "stat", attributes: {"bitrate_download": stats.bitrate.download}}, |
|
|
|
|
|
|
|
{tagName: "stat", attributes: {"bitrate_upload": stats.bitrate.upload}}, |
|
|
|
|
|
|
|
{tagName: "stat", attributes: {"packetLoss_total": stats.packetLoss.total}}, |
|
|
|
|
|
|
|
{tagName: "stat", attributes: {"packetLoss_download": stats.packetLoss.download}}, |
|
|
|
|
|
|
|
{tagName: "stat", attributes: {"packetLoss_upload": stats.packetLoss.upload}} |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|