private bool FillBuffer(int bufferIdx, IPlayableStream stream)
{
AudioBuffer buffer = this.streamBuffers[bufferIdx];
byte[] byteBuffer = this.byteBuffers[bufferIdx];
bool isDone;
var dataRead = stream.GetWaveData(byteBuffer, StreamingBufferSize);
if (dataRead > 0)
{
streamBuffered += dataRead;
isDone = (streamBuffered >= streamLength);
buffer.Flags = isDone ? BufferFlags.EndOfStream : BufferFlags.None;
buffer.AudioBytes = dataRead;
buffer.Context = (IntPtr)bufferIdx;
sourceVoice.SubmitSourceBuffer(buffer);
bufferStatus.Set(bufferIdx, true);
} else {
isDone = true;
}
return isDone;
}