Browse Source

Adds local addresses and ports to connection quality tooltip. Aligns the values in the tooltip. Fixes issues with the statistics.

j8
hristoterezov 11 years ago
parent
commit
83dc70eae5
5 changed files with 60 additions and 28 deletions
  1. 4
    5
      connectionquality.js
  2. 12
    3
      css/videolayout_default.css
  3. 1
    1
      jitsipopover.js
  4. 19
    7
      rtp_sts.js
  5. 24
    12
      videolayout.js

+ 4
- 5
connectionquality.js View File

@@ -62,8 +62,8 @@ var ConnectionQuality = (function () {
62 62
      */
63 63
     function convertToMUCStats(stats) {
64 64
         return {
65
-            "bitrate_donwload": stats.bitrate.download,
66
-            "bitrate_uplpoad": stats.bitrate.upload,
65
+            "bitrate_download": stats.bitrate.download,
66
+            "bitrate_upload": stats.bitrate.upload,
67 67
             "packetLoss_total": stats.packetLoss.total,
68 68
             "packetLoss_download": stats.packetLoss.download,
69 69
             "packetLoss_upload": stats.packetLoss.upload
@@ -78,8 +78,8 @@ var ConnectionQuality = (function () {
78 78
     function parseMUCStats(stats) {
79 79
         return {
80 80
             bitrate: {
81
-                download: stats.bitrate_donwload,
82
-                upload: stats.bitrate_uplpoad
81
+                download: stats.bitrate_download,
82
+                upload: stats.bitrate_upload
83 83
             },
84 84
             packetLoss: {
85 85
                 total: stats.packetLoss_total,
@@ -101,7 +101,6 @@ var ConnectionQuality = (function () {
101 101
             return;
102 102
         }
103 103
         remoteStats[jid] = parseMUCStats(data);
104
-        console.log(remoteStats[jid]);
105 104
 
106 105
         VideoLayout.updateConnectionStats(jid, 100 - data.packetLoss_total,remoteStats[jid]);
107 106
 

+ 12
- 3
css/videolayout_default.css View File

@@ -227,18 +227,27 @@
227 227
     left: 0px;
228 228
     top: 0px;
229 229
     font-size: 8pt;
230
-    text-shadow: 1px 1px 1px rgba(0,0,0,1), -1px -1px -1px rgba(0,0,0,1);
231 230
     border: 0px;
232 231
     width: 18px;
233 232
     height: 13px;
234 233
 }
235 234
 
236 235
 .connection_info
236
+{
237
+    float: left;
238
+    padding-bottom: 5px;
239
+}
240
+
241
+.connection_info > table
242
+{
243
+    white-space: nowrap;
244
+}
245
+
246
+.connection_info, .connection_info > table
237 247
 {
238 248
     text-align: left;
239 249
     font-size: 11px;
240
-    white-space:nowrap;
241
-    /*width: 260px;*/
250
+    color: #ffffff;
242 251
 }
243 252
 
244 253
 #localVideoContainer>span.status:hover,

+ 1
- 1
jitsipopover.js View File

@@ -90,7 +90,7 @@ var JitsiPopover = (function () {
90 90
             of: this.element,
91 91
             using: function (position, elements) {
92 92
                 var calcLeft = elements.target.left - elements.element.left + elements.target.width/2;
93
-                $(".jitsipopover").css({top: position.top, left: position.left, display: "block"});
93
+                $(".jitsipopover").css({top: position.top, left: position.left, display: "table"});
94 94
                 $(".jitsipopover > .arrow").css({left: calcLeft});
95 95
                 $(".jitsipopover > .jitsiPopupmenuPadding").css({left: calcLeft - 50});
96 96
             }

+ 19
- 7
rtp_sts.js View File

@@ -197,8 +197,8 @@ StatsCollector.prototype.processStatsReport = function () {
197 197
         var now = this.currentStatsReport[idx];
198 198
         if (now.stat('googAvailableReceiveBandwidth') || now.stat('googAvailableSendBandwidth')) {
199 199
             PeerStats.bandwidth = {
200
-                "download": Math.round((now.stat('googAvailableReceiveBandwidth') * 8) / 1000),
201
-                "upload": Math.round((now.stat('googAvailableSendBandwidth') * 8) / 1000)
200
+                "download": Math.round((now.stat('googAvailableReceiveBandwidth')) / 1000),
201
+                "upload": Math.round((now.stat('googAvailableSendBandwidth')) / 1000)
202 202
             };
203 203
         }
204 204
 
@@ -206,19 +206,22 @@ StatsCollector.prototype.processStatsReport = function () {
206 206
         {
207 207
             var ip = now.stat('googRemoteAddress');
208 208
             var type = now.stat("googTransportType");
209
-            if(!ip || !type)
209
+            var localIP = now.stat("googLocalAddress");
210
+            var active = now.stat("googActiveConnection");
211
+            if(!ip || !type || !localIP || !active)
210 212
                 continue;
211 213
             var addressSaved = false;
212 214
             for(var i = 0; i < PeerStats.transport.length; i++)
213 215
             {
214
-                if(PeerStats.transport[i].ip == ip && PeerStats.transport[i].type == type)
216
+                if(PeerStats.transport[i].ip == ip && PeerStats.transport[i].type == type &&
217
+                    PeerStats.transport[i].localip == localIP)
215 218
                 {
216 219
                     addressSaved = true;
217 220
                 }
218 221
             }
219 222
             if(addressSaved)
220 223
                 continue;
221
-            PeerStats.transport.push({ip: ip, type: type});
224
+            PeerStats.transport.push({localip: localIP, ip: ip, type: type});
222 225
             continue;
223 226
         }
224 227
 
@@ -261,13 +264,23 @@ StatsCollector.prototype.processStatsReport = function () {
261 264
             }
262 265
         }
263 266
         var packetsNow = now.stat(key);
267
+        if(!packetsNow || packetsNow < 0)
268
+            packetsNow = 0;
269
+
264 270
         var packetsBefore = before.stat(key);
271
+        if(!packetsBefore || packetsBefore < 0)
272
+            packetsBefore = 0;
265 273
         var packetRate = packetsNow - packetsBefore;
266 274
 
267 275
         var currentLoss = now.stat('packetsLost');
276
+        if(!currentLoss || currentLoss < 0)
277
+            currentLoss = 0;
268 278
         var previousLoss = before.stat('packetsLost');
279
+        if(!previousLoss || previousLoss < 0)
280
+            previousLoss = 0;
269 281
         var lossRate = currentLoss - previousLoss;
270
-
282
+        if(lossRate < 0)
283
+            lossRate = 0;
271 284
         var packetsTotal = (packetRate + lossRate);
272 285
 
273 286
         jidStats.setSsrcLoss(ssrc, {"packetsTotal": packetsTotal, "packetsLost": lossRate,
@@ -308,7 +321,6 @@ StatsCollector.prototype.processStatsReport = function () {
308 321
         if(!jidStats.resolution)
309 322
             jidStats.resolution = null;
310 323
 
311
-        console.log(jid + " - resolution: " + resolution.height + "x" + resolution.width);
312 324
         if(resolution.height && resolution.width)
313 325
         {
314 326
             if(!jidStats.resolution)

+ 24
- 12
videolayout.js View File

@@ -1152,6 +1152,7 @@ var VideoLayout = (function (my) {
1152 1152
 //        <li><a href="#">Mute</a></li>
1153 1153
 //        <li><a href="#">Eject</a></li>
1154 1154
 //        </ul>
1155
+
1155 1156
         var popupmenuElement = document.createElement('ul');
1156 1157
         popupmenuElement.className = 'popupmenu';
1157 1158
         popupmenuElement.id
@@ -1570,11 +1571,11 @@ var VideoLayout = (function (my) {
1570 1571
             resolution = resolutionValue.width + "x" + resolutionValue.height;
1571 1572
         }
1572 1573
 
1573
-        var result = "<span class='jitsipopover_blue'>Bitrate:</span> <span class='jitsipopover_green'>&darr;</span>" +
1574
+        var result = "<table style='width:100%'><tr><td><span class='jitsipopover_blue'>Bitrate:</span></td><td><span class='jitsipopover_green'>&darr;</span>" +
1574 1575
             downloadBitrate + " <span class='jitsipopover_orange'>&uarr;</span>" +
1575
-            uploadBitrate + "<br />" +
1576
-            "<span class='jitsipopover_blue'>Packet loss: </span>" + packetLoss  + "<br />" +
1577
-            "<span class='jitsipopover_blue'>Resolution:</span> " + resolution + "<br />";
1576
+            uploadBitrate + "</td></tr><tr><td>" +
1577
+            "<tr><td><span class='jitsipopover_blue'>Packet loss: </span></td><td>" + packetLoss  + "</td></tr><tr><td>" +
1578
+            "<span class='jitsipopover_blue'>Resolution:</span></td><td>" + resolution + "</td></tr></table>";
1578 1579
 
1579 1580
         if(this.videoContainer.id == "localVideoContainer")
1580 1581
             result += "<div class=\"jitsipopover_showmore\" onclick = \"VideoLayout.connectionIndicators['" +
@@ -1596,34 +1597,45 @@ var VideoLayout = (function (my) {
1596 1597
 
1597 1598
             if(!this.transport || this.transport.length === 0)
1598 1599
             {
1599
-                transport = "<span class='jitsipopover_blue'>Address:</span> N/A";
1600
+                transport = "<tr><td><span class='jitsipopover_blue'>Address:</span></td><td> N/A</td></tr>";
1600 1601
             }
1601 1602
             else
1602 1603
             {
1603
-                transport = "<span class='jitsipopover_blue'>Address:</span> " + this.transport[0].ip.substring(0,this.transport[0].ip.indexOf(":")) + "<br />";
1604
+                var localTransport = "<tr><td><span class='jitsipopover_blue'>Local address: </span></td><td> " +
1605
+                    this.transport[0].localip.substring(0,this.transport[0].localip.indexOf(":")) + "</td></tr>"
1606
+                transport = "<tr><td><span class='jitsipopover_blue'>Remote address:</span></td><td> " +
1607
+                    this.transport[0].ip.substring(0,this.transport[0].ip.indexOf(":")) + "</td></tr>";
1604 1608
                 if(this.transport.length > 1)
1605 1609
                 {
1606
-                    transport += "<span class='jitsipopover_blue'>Ports:</span> ";
1610
+                    transport += "<tr><td><span class='jitsipopover_blue'>Remote ports:</span></td><td>";
1611
+                    localTransport += "<tr><td><span class='jitsipopover_blue'>Local ports:</span></td><td>";
1607 1612
                 }
1608 1613
                 else
1609 1614
                 {
1610
-                    transport += "<span class='jitsipopover_blue'>Port:</span> ";
1615
+                    transport += "<tr><td><span class='jitsipopover_blue'>Remote port:</span></td><td>";
1616
+                    localTransport += "<tr><td><span class='jitsipopover_blue'>Local port:</span></td><td>";
1611 1617
                 }
1612 1618
                 for(var i = 0; i < this.transport.length; i++)
1613 1619
                 {
1614 1620
                     transport += ((i !== 0)? ", " : "") +
1615 1621
                         this.transport[i].ip.substring(this.transport[i].ip.indexOf(":")+1,
1616 1622
                                 this.transport[i].ip.length);
1623
+                    localTransport += ((i !== 0)? ", " : "") +
1624
+                        this.transport[i].localip.substring(this.transport[i].localip.indexOf(":")+1,
1625
+                            this.transport[i].localip.length);
1617 1626
                 }
1618
-                transport += "<br /><span class='jitsipopover_blue'>Transport:</span> " + this.transport[0].type + "<br />";
1627
+                transport += "</td></tr>";
1628
+                transport += localTransport + "</td></tr>";
1629
+                transport +="<tr><td><span class='jitsipopover_blue'>Transport:</span></td><td>" + this.transport[0].type + "</td></tr>";
1630
+
1619 1631
             }
1620 1632
 
1621
-            result += "<span class='jitsipopover_blue'>Estimated bandwidth:</span> " +
1633
+            result += "<table  style='width:100%'><tr><td><span class='jitsipopover_blue'>Estimated bandwidth:</span> </td><td>" +
1622 1634
                 "<span class='jitsipopover_green'>&darr;</span>" + downloadBandwidth +
1623 1635
                 " <span class='jitsipopover_orange'>&uarr;</span>" +
1624
-                uploadBandwidth + "<br />";
1636
+                uploadBandwidth + "</td></tr>";
1625 1637
 
1626
-            result += transport;
1638
+            result += transport + "</table>";
1627 1639
 
1628 1640
         }
1629 1641
 

Loading…
Cancel
Save