| @@ -32,18 +32,18 @@ namespace Discord.Audio | |||||
| _lock = new AsyncLock(); | _lock = new AsyncLock(); | ||||
| } | } | ||||
| public void Push(byte[] buffer, int bytes, CancellationToken cancelToken) | |||||
| public void Push(byte[] buffer, int offset, int count, CancellationToken cancelToken) | |||||
| { | { | ||||
| if (cancelToken.IsCancellationRequested) | if (cancelToken.IsCancellationRequested) | ||||
| throw new OperationCanceledException("Client is disconnected.", cancelToken); | throw new OperationCanceledException("Client is disconnected.", cancelToken); | ||||
| int wholeFrames = bytes / _frameSize; | |||||
| int wholeFrames = count / _frameSize; | |||||
| int expectedBytes = wholeFrames * _frameSize; | int expectedBytes = wholeFrames * _frameSize; | ||||
| int lastFrameSize = bytes - expectedBytes; | |||||
| int lastFrameSize = count - expectedBytes; | |||||
| using (_lock.Lock()) | using (_lock.Lock()) | ||||
| { | { | ||||
| for (int i = 0, pos = 0; i <= wholeFrames; i++, pos += _frameSize) | |||||
| for (int i = 0, pos = offset; i <= wholeFrames; i++, pos += _frameSize) | |||||
| { | { | ||||
| //If the read cursor is in the next position, wait for it to move. | //If the read cursor is in the next position, wait for it to move. | ||||
| ushort nextPosition = _writeCursor; | ushort nextPosition = _writeCursor; | ||||