浏览代码

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

j8
hristoterezov 11 年前
父节点
当前提交
83dc70eae5
共有 5 个文件被更改,包括 60 次插入28 次删除
  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 查看文件

62
      */
62
      */
63
     function convertToMUCStats(stats) {
63
     function convertToMUCStats(stats) {
64
         return {
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
             "packetLoss_total": stats.packetLoss.total,
67
             "packetLoss_total": stats.packetLoss.total,
68
             "packetLoss_download": stats.packetLoss.download,
68
             "packetLoss_download": stats.packetLoss.download,
69
             "packetLoss_upload": stats.packetLoss.upload
69
             "packetLoss_upload": stats.packetLoss.upload
78
     function parseMUCStats(stats) {
78
     function parseMUCStats(stats) {
79
         return {
79
         return {
80
             bitrate: {
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
             packetLoss: {
84
             packetLoss: {
85
                 total: stats.packetLoss_total,
85
                 total: stats.packetLoss_total,
101
             return;
101
             return;
102
         }
102
         }
103
         remoteStats[jid] = parseMUCStats(data);
103
         remoteStats[jid] = parseMUCStats(data);
104
-        console.log(remoteStats[jid]);
105
 
104
 
106
         VideoLayout.updateConnectionStats(jid, 100 - data.packetLoss_total,remoteStats[jid]);
105
         VideoLayout.updateConnectionStats(jid, 100 - data.packetLoss_total,remoteStats[jid]);
107
 
106
 

+ 12
- 3
css/videolayout_default.css 查看文件

227
     left: 0px;
227
     left: 0px;
228
     top: 0px;
228
     top: 0px;
229
     font-size: 8pt;
229
     font-size: 8pt;
230
-    text-shadow: 1px 1px 1px rgba(0,0,0,1), -1px -1px -1px rgba(0,0,0,1);
231
     border: 0px;
230
     border: 0px;
232
     width: 18px;
231
     width: 18px;
233
     height: 13px;
232
     height: 13px;
234
 }
233
 }
235
 
234
 
236
 .connection_info
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
     text-align: left;
248
     text-align: left;
239
     font-size: 11px;
249
     font-size: 11px;
240
-    white-space:nowrap;
241
-    /*width: 260px;*/
250
+    color: #ffffff;
242
 }
251
 }
243
 
252
 
244
 #localVideoContainer>span.status:hover,
253
 #localVideoContainer>span.status:hover,

+ 1
- 1
jitsipopover.js 查看文件

90
             of: this.element,
90
             of: this.element,
91
             using: function (position, elements) {
91
             using: function (position, elements) {
92
                 var calcLeft = elements.target.left - elements.element.left + elements.target.width/2;
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
                 $(".jitsipopover > .arrow").css({left: calcLeft});
94
                 $(".jitsipopover > .arrow").css({left: calcLeft});
95
                 $(".jitsipopover > .jitsiPopupmenuPadding").css({left: calcLeft - 50});
95
                 $(".jitsipopover > .jitsiPopupmenuPadding").css({left: calcLeft - 50});
96
             }
96
             }

+ 19
- 7
rtp_sts.js 查看文件

197
         var now = this.currentStatsReport[idx];
197
         var now = this.currentStatsReport[idx];
198
         if (now.stat('googAvailableReceiveBandwidth') || now.stat('googAvailableSendBandwidth')) {
198
         if (now.stat('googAvailableReceiveBandwidth') || now.stat('googAvailableSendBandwidth')) {
199
             PeerStats.bandwidth = {
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
         {
206
         {
207
             var ip = now.stat('googRemoteAddress');
207
             var ip = now.stat('googRemoteAddress');
208
             var type = now.stat("googTransportType");
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
                 continue;
212
                 continue;
211
             var addressSaved = false;
213
             var addressSaved = false;
212
             for(var i = 0; i < PeerStats.transport.length; i++)
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
                     addressSaved = true;
219
                     addressSaved = true;
217
                 }
220
                 }
218
             }
221
             }
219
             if(addressSaved)
222
             if(addressSaved)
220
                 continue;
223
                 continue;
221
-            PeerStats.transport.push({ip: ip, type: type});
224
+            PeerStats.transport.push({localip: localIP, ip: ip, type: type});
222
             continue;
225
             continue;
223
         }
226
         }
224
 
227
 
261
             }
264
             }
262
         }
265
         }
263
         var packetsNow = now.stat(key);
266
         var packetsNow = now.stat(key);
267
+        if(!packetsNow || packetsNow < 0)
268
+            packetsNow = 0;
269
+
264
         var packetsBefore = before.stat(key);
270
         var packetsBefore = before.stat(key);
271
+        if(!packetsBefore || packetsBefore < 0)
272
+            packetsBefore = 0;
265
         var packetRate = packetsNow - packetsBefore;
273
         var packetRate = packetsNow - packetsBefore;
266
 
274
 
267
         var currentLoss = now.stat('packetsLost');
275
         var currentLoss = now.stat('packetsLost');
276
+        if(!currentLoss || currentLoss < 0)
277
+            currentLoss = 0;
268
         var previousLoss = before.stat('packetsLost');
278
         var previousLoss = before.stat('packetsLost');
279
+        if(!previousLoss || previousLoss < 0)
280
+            previousLoss = 0;
269
         var lossRate = currentLoss - previousLoss;
281
         var lossRate = currentLoss - previousLoss;
270
-
282
+        if(lossRate < 0)
283
+            lossRate = 0;
271
         var packetsTotal = (packetRate + lossRate);
284
         var packetsTotal = (packetRate + lossRate);
272
 
285
 
273
         jidStats.setSsrcLoss(ssrc, {"packetsTotal": packetsTotal, "packetsLost": lossRate,
286
         jidStats.setSsrcLoss(ssrc, {"packetsTotal": packetsTotal, "packetsLost": lossRate,
308
         if(!jidStats.resolution)
321
         if(!jidStats.resolution)
309
             jidStats.resolution = null;
322
             jidStats.resolution = null;
310
 
323
 
311
-        console.log(jid + " - resolution: " + resolution.height + "x" + resolution.width);
312
         if(resolution.height && resolution.width)
324
         if(resolution.height && resolution.width)
313
         {
325
         {
314
             if(!jidStats.resolution)
326
             if(!jidStats.resolution)

+ 24
- 12
videolayout.js 查看文件

1152
 //        <li><a href="#">Mute</a></li>
1152
 //        <li><a href="#">Mute</a></li>
1153
 //        <li><a href="#">Eject</a></li>
1153
 //        <li><a href="#">Eject</a></li>
1154
 //        </ul>
1154
 //        </ul>
1155
+
1155
         var popupmenuElement = document.createElement('ul');
1156
         var popupmenuElement = document.createElement('ul');
1156
         popupmenuElement.className = 'popupmenu';
1157
         popupmenuElement.className = 'popupmenu';
1157
         popupmenuElement.id
1158
         popupmenuElement.id
1570
             resolution = resolutionValue.width + "x" + resolutionValue.height;
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
             downloadBitrate + " <span class='jitsipopover_orange'>&uarr;</span>" +
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
         if(this.videoContainer.id == "localVideoContainer")
1580
         if(this.videoContainer.id == "localVideoContainer")
1580
             result += "<div class=\"jitsipopover_showmore\" onclick = \"VideoLayout.connectionIndicators['" +
1581
             result += "<div class=\"jitsipopover_showmore\" onclick = \"VideoLayout.connectionIndicators['" +
1596
 
1597
 
1597
             if(!this.transport || this.transport.length === 0)
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
             else
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
                 if(this.transport.length > 1)
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
                 else
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
                 for(var i = 0; i < this.transport.length; i++)
1618
                 for(var i = 0; i < this.transport.length; i++)
1613
                 {
1619
                 {
1614
                     transport += ((i !== 0)? ", " : "") +
1620
                     transport += ((i !== 0)? ", " : "") +
1615
                         this.transport[i].ip.substring(this.transport[i].ip.indexOf(":")+1,
1621
                         this.transport[i].ip.substring(this.transport[i].ip.indexOf(":")+1,
1616
                                 this.transport[i].ip.length);
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
                 "<span class='jitsipopover_green'>&darr;</span>" + downloadBandwidth +
1634
                 "<span class='jitsipopover_green'>&darr;</span>" + downloadBandwidth +
1623
                 " <span class='jitsipopover_orange'>&uarr;</span>" +
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
 

正在加载...
取消
保存