Audio Data API: Difference between revisions

Line 310: Line 310:
function audioAvailable(event) {
function audioAvailable(event) {
   // Write the current framebuffer
   // Write the current framebuffer
   var frameBuffer = event.frameBuffer;
   var frameBuffer = event.frameBuffer; // frameBuffer is Float32Array
   writeAudio(frameBuffer);
   writeAudio(frameBuffer);
}
}
Line 317: Line 317:
a1.addEventListener('loadedmetadata', loadedMetadata, false);
a1.addEventListener('loadedmetadata', loadedMetadata, false);


function writeAudio(audio) {
function writeAudio(audioBuffer) {
   buffers.push(audio);
  // audioBuffer is Float32Array
   buffers.push({buffer: audioBuffer, position: 0});


   // If there's buffered data, write that
   // If there's buffered data, write that
   while(buffers.length > 0) {
   while(buffers.length > 0) {
     var buffer = buffers.shift();
     var buffer = buffers[0].buffer;
     var written = a2.mozWriteAudio(buffer);
    var position = buffers[0].position;
     var written = a2.mozWriteAudio(buffer.subarray(position));
     // // If all data wasn't written, keep it in the buffers:
     // // If all data wasn't written, keep it in the buffers:
     if(written < buffer.length) {
     if(position + written < buffer.length) {
       buffers.unshift(buffer.slice(written));
       buffers[0].position = position + written;
       return;
       break;
     }
     }
    buffers.shift();
   }
   }
}
}
50

edits