Mercurial > hg > webaudioevaluationtool
comparison js/core.js @ 2403:52aed03f5db9
Default to using internal decoder for all files. Fallback to WAVE.js for Firefox < 45 for high-bit WAV
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Fri, 27 May 2016 08:56:54 +0100 |
parents | 5e1fb07919e7 |
children | d44b5e04acbc |
comparison
equal
deleted
inserted
replaced
2401:5e1fb07919e7 | 2403:52aed03f5db9 |
---|---|
1268 // Create callback to decode the data asynchronously | 1268 // Create callback to decode the data asynchronously |
1269 this.xmlRequest.onloadend = function() { | 1269 this.xmlRequest.onloadend = function() { |
1270 // Use inbuilt WAVE decoder first | 1270 // Use inbuilt WAVE decoder first |
1271 if (this.status == -1) {return;} | 1271 if (this.status == -1) {return;} |
1272 var waveObj = new WAVE(); | 1272 var waveObj = new WAVE(); |
1273 if (waveObj.open(bufferObj.xmlRequest.response) == 0) | 1273 audioContext.decodeAudioData(bufferObj.xmlRequest.response, function(decodedData) { |
1274 { | |
1275 bufferObj.buffer = audioContext.createBuffer(waveObj.num_channels,waveObj.num_samples,waveObj.sample_rate); | |
1276 for (var c=0; c<waveObj.num_channels; c++) | |
1277 { | |
1278 var buffer_ptr = bufferObj.buffer.getChannelData(c); | |
1279 for (var n=0; n<waveObj.num_samples; n++) | |
1280 { | |
1281 buffer_ptr[n] = waveObj.decoded_data[c][n]; | |
1282 } | |
1283 } | |
1284 | |
1285 delete waveObj; | |
1286 } else { | |
1287 audioContext.decodeAudioData(bufferObj.xmlRequest.response, function(decodedData) { | |
1288 bufferObj.buffer = decodedData; | 1274 bufferObj.buffer = decodedData; |
1289 bufferObj.status = 2; | 1275 bufferObj.status = 2; |
1290 calculateLoudness(bufferObj,"I"); | 1276 calculateLoudness(bufferObj,"I"); |
1291 }, function(e){ | 1277 }, function(e) { |
1292 // Should only be called if there was an error, but sometimes gets called continuously | 1278 var waveObj = new WAVE(); |
1293 // Check here if the error is genuine | 1279 if (waveObj.open(bufferObj.xmlRequest.response) == 0) |
1294 if (bufferObj.xmlRequest.response == undefined) { | 1280 { |
1295 // Genuine error | 1281 bufferObj.buffer = audioContext.createBuffer(waveObj.num_channels,waveObj.num_samples,waveObj.sample_rate); |
1296 console.log('FATAL - Error loading buffer on '+audioObj.id); | 1282 for (var c=0; c<waveObj.num_channels; c++) |
1297 if (request.status == 404) | 1283 { |
1284 var buffer_ptr = bufferObj.buffer.getChannelData(c); | |
1285 for (var n=0; n<waveObj.num_samples; n++) | |
1298 { | 1286 { |
1299 console.log('FATAL - Fragment '+audioObj.id+' 404 error'); | 1287 buffer_ptr[n] = waveObj.decoded_data[c][n]; |
1300 console.log('URL: '+audioObj.url); | |
1301 errorSessionDump('Fragment '+audioObj.id+' 404 error'); | |
1302 } | 1288 } |
1303 this.parent.status = -1; | |
1304 } | 1289 } |
1305 }); | 1290 |
1306 } | 1291 delete waveObj; |
1307 if (bufferObj.buffer != undefined) | 1292 } |
1308 { | 1293 if (bufferObj.buffer != undefined) |
1309 bufferObj.status = 2; | 1294 { |
1310 calculateLoudness(bufferObj,"I"); | 1295 bufferObj.status = 2; |
1311 } | 1296 calculateLoudness(bufferObj,"I"); |
1297 } | |
1298 }); | |
1312 }; | 1299 }; |
1313 | 1300 |
1314 // Create callback for any error in loading | 1301 // Create callback for any error in loading |
1315 this.xmlRequest.onerror = function() { | 1302 this.xmlRequest.onerror = function() { |
1316 this.parent.status = -1; | 1303 this.parent.status = -1; |