| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Audio test utilities. | 5 // Audio test utilities. |
| 6 | 6 |
| 7 // GetStats reports audio output energy in the [0, 32768] range. | 7 // GetStats reports audio output energy in the [0, 32768] range. |
| 8 var MAX_AUDIO_OUTPUT_ENERGY = 32768; | 8 var MAX_AUDIO_OUTPUT_ENERGY = 32768; |
| 9 | 9 |
| 10 // Gathers |numSamples| samples at |frequency| number of times per second and | 10 // Gathers |numSamples| samples at |frequency| number of times per second and |
| 11 // calls back |callback| with an array with numbers in the [0, 32768] range. | 11 // calls back |callback| with an array with numbers in the [0, 32768] range. |
| 12 function gatherAudioLevelSamples(peerConnection, numSamples, frequency, | 12 function gatherAudioLevelSamples(peerConnection, numSamples, frequency, |
| 13 callback) { | 13 callback) { |
| 14 console.log('Gathering ' + numSamples + ' audio samples...'); | 14 console.log('Gathering ' + numSamples + ' audio samples...'); |
| 15 var audioLevelSamples = [] | 15 var audioLevelSamples = [] |
| 16 var gatherSamples = setInterval(function() { | 16 var gatherSamples = setInterval(function() { |
| 17 peerConnection.getStats(function(response) { | 17 peerConnection.getStats(function(response) { |
| 18 audioLevelSamples.push(getAudioLevelFromStats_(response)); | 18 audioOutputLevels = getAudioLevelFromStats_(response); |
| 19 if (audioOutputLevels.length == 0) { |
| 20 // The call probably isn't up yet. |
| 21 return; |
| 22 } |
| 23 |
| 24 // If more than one audio level is reported we get confused. |
| 25 assertEquals(1, audioOutputLevels.length); |
| 26 audioLevelSamples.push(audioOutputLevels[0]); |
| 27 |
| 19 if (audioLevelSamples.length == numSamples) { | 28 if (audioLevelSamples.length == numSamples) { |
| 20 console.log('Gathered all samples.'); | 29 console.log('Gathered all samples.'); |
| 21 clearInterval(gatherSamples); | 30 clearInterval(gatherSamples); |
| 22 callback(audioLevelSamples); | 31 callback(audioLevelSamples); |
| 23 } | 32 } |
| 24 }); | 33 }); |
| 25 }, 1000 / frequency); | 34 }, 1000 / frequency); |
| 26 } | 35 } |
| 27 | 36 |
| 28 // Tries to identify the beep-every-half-second signal generated by the fake | 37 // Tries to identify the beep-every-half-second signal generated by the fake |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 */ | 85 */ |
| 77 function getAudioLevelFromStats_(response) { | 86 function getAudioLevelFromStats_(response) { |
| 78 var reports = response.result(); | 87 var reports = response.result(); |
| 79 var audioOutputLevels = []; | 88 var audioOutputLevels = []; |
| 80 for (var i = 0; i < reports.length; ++i) { | 89 for (var i = 0; i < reports.length; ++i) { |
| 81 var report = reports[i]; | 90 var report = reports[i]; |
| 82 if (report.names().indexOf('audioOutputLevel') != -1) { | 91 if (report.names().indexOf('audioOutputLevel') != -1) { |
| 83 audioOutputLevels.push(report.stat('audioOutputLevel')); | 92 audioOutputLevels.push(report.stat('audioOutputLevel')); |
| 84 } | 93 } |
| 85 } | 94 } |
| 86 // Should only be one audio level reported, otherwise we get confused. | 95 return audioOutputLevels; |
| 87 assertEquals(1, audioOutputLevels.length); | |
| 88 | |
| 89 return audioOutputLevels[0]; | |
| 90 } | 96 } |
| OLD | NEW |