浏览代码

Fixes audio level interface in the single user in conference case.

master
yanas 11 年前
父节点
当前提交
913cdb9c7a
共有 2 个文件被更改,包括 32 次插入21 次删除
  1. 7
    8
      app.js
  2. 25
    13
      audio_levels.js

+ 7
- 8
app.js 查看文件

@@ -293,7 +293,8 @@ $(document).bind('remotestreamadded.jingle', function (event, data, sid) {
293 293
     data.stream.onended = function () {
294 294
         console.log('stream ended', this.id);
295 295
 
296
-        // Mark video as removed to cancel waiting loop(if video is removed before has started)
296
+        // Mark video as removed to cancel waiting loop(if video is removed
297
+        // before has started)
297 298
         sel.removed = true;
298 299
         sel.remove();
299 300
 
@@ -455,9 +456,8 @@ function statsUpdated(statsCollector)
455 456
         var peerStats = statsCollector.jid2stats[jid];
456 457
         Object.keys(peerStats.ssrc2AudioLevel).forEach(function (ssrc)
457 458
         {
458
-            if (jid !== connection.emuc.myRoomJid)
459
-                AudioLevels.updateAudioLevel(   Strophe.getResourceFromJid(jid),
460
-                                                peerStats.ssrc2AudioLevel[ssrc]);
459
+            AudioLevels.updateAudioLevel(   Strophe.getResourceFromJid(jid),
460
+                                            peerStats.ssrc2AudioLevel[ssrc]);
461 461
         });
462 462
     });
463 463
 }
@@ -469,10 +469,9 @@ function statsUpdated(statsCollector)
469 469
  */
470 470
 function localStatsUpdated(statsCollector)
471 471
 {
472
-    if (connection.emuc.myRoomJid)
473
-        AudioLevels.updateAudioLevel(
474
-                Strophe.getResourceFromJid(connection.emuc.myRoomJid),
475
-                statsCollector.audioLevel);
472
+    AudioLevels.updateAudioLevel(
473
+            AudioLevels.LOCAL_LEVEL,
474
+            statsCollector.audioLevel);
476 475
 }
477 476
 
478 477
 /**

+ 25
- 13
audio_levels.js 查看文件

@@ -7,6 +7,8 @@ var AudioLevels = (function(my) {
7 7
     var SHADOW_COLOR = '#00ccff';
8 8
     var audioLevelCanvasCache = {};
9 9
 
10
+    my.LOCAL_LEVEL = 'local';
11
+
10 12
     /**
11 13
      * Updates the audio level canvas for the given peerJid. If the canvas
12 14
      * didn't exist we create it.
@@ -71,17 +73,12 @@ var AudioLevels = (function(my) {
71 73
     my.updateAudioLevel = function (resourceJid, audioLevel) {
72 74
         drawAudioLevelCanvas(resourceJid, audioLevel);
73 75
 
74
-        var videoSpanId = null;
75
-        if (resourceJid
76
-                === Strophe.getResourceFromJid(connection.emuc.myroomjid))
77
-            videoSpanId = 'localVideoContainer';
78
-        else
79
-            videoSpanId = 'participant_' + resourceJid;
76
+        var videoSpanId = getVideoSpanId(resourceJid);
80 77
 
81 78
         var audioLevelCanvas = $('#' + videoSpanId + '>canvas').get(0);
82 79
 
83 80
         if (!audioLevelCanvas)
84
-            return ;
81
+            return;
85 82
 
86 83
         var drawContext = audioLevelCanvas.getContext('2d');
87 84
 
@@ -92,6 +89,9 @@ var AudioLevels = (function(my) {
92 89
         drawContext.drawImage(canvasCache, 0, 0);
93 90
     };
94 91
 
92
+    /**
93
+     * Resizes the given audio level canvas to match the given thumbnail size.
94
+     */
95 95
     function resizeAudioLevelCanvas(audioLevelCanvas,
96 96
                                     thumbnailWidth,
97 97
                                     thumbnailHeight) {
@@ -108,12 +108,8 @@ var AudioLevels = (function(my) {
108 108
      */
109 109
     function drawAudioLevelCanvas(resourceJid, audioLevel) {
110 110
         if (!audioLevelCanvasCache[resourceJid]) {
111
-            var videoSpanId = null;
112
-            if (resourceJid
113
-                    === Strophe.getResourceFromJid(connection.emuc.myroomjid))
114
-                videoSpanId = 'localVideoContainer';
115
-            else
116
-                videoSpanId = 'participant_' + resourceJid;
111
+
112
+            var videoSpanId = getVideoSpanId(resourceJid);
117 113
 
118 114
             var audioLevelCanvasOrig = $('#' + videoSpanId + '>canvas').get(0);
119 115
 
@@ -173,6 +169,22 @@ var AudioLevels = (function(my) {
173 169
         return shadowLevel;
174 170
     };
175 171
 
172
+    /**
173
+     * Returns the video span id corresponding to the given resourceJid or local
174
+     * user.
175
+     */
176
+    function getVideoSpanId(resourceJid) {
177
+        var videoSpanId = null;
178
+        if (resourceJid === AudioLevels.LOCAL_LEVEL
179
+                || (connection.emuc.myroomjid && resourceJid
180
+                    === Strophe.getResourceFromJid(connection.emuc.myroomjid)))
181
+            videoSpanId = 'localVideoContainer';
182
+        else
183
+            videoSpanId = 'participant_' + resourceJid;
184
+
185
+        return videoSpanId;
186
+    };
187
+
176 188
     /**
177 189
      * Indicates that the remote video has been resized.
178 190
      */

正在加载...
取消
保存