So the put is failing. What does BASS_ERROR_ENDED mean?
BASS_ERROR_ENDED would result when the BASS_STREAMPROC_END flag (which marks the end of the data) has been used in a previous BASS_StreamPutData call.
Still don't understand why the returned byte from put is more than I told it to put.
The only explanation that comes to mind is that there is data queued from a previous BASS_StreamPutData call. Is that not the case? Note BASS_StreamPutData returns the total amount of data that is currently queued, not only the amount from the current call.