Assembly: Bass.Net (in Bass.Net.dll) Version: 220.127.116.11
Unbuffered file system (like also used by BASS_StreamCreateFile(String, Int64, Int64, BASSFlag)).
The unbuffered file system is what is used by BASS_StreamCreateFile(String, Int64, Int64, BASSFlag). In this system, BASS does not do any intermediate buffering - it simply requests data from the file as and when it needs it. This means that reading (FILEREADPROC) must be quick, otherwise the decoding will be delayed and playback buffer underruns (old data repeated) are a possibility. It's not so important for seeking (FILESEEKPROC) to be fast, as that is generally not required during decoding, except when looping a file.
Buffered file system (like also used by BASS_StreamCreateURL(String, Int32, BASSFlag, DOWNLOADPROC, IntPtr)).
The buffered file system is what is used by BASS_StreamCreateURL(String, Int32, BASSFlag, DOWNLOADPROC, IntPtr). As the name suggests, data from the file is buffered so that it's readily available for decoding - BASS creates a thread dedicated to "downloading" the data. This is ideal for when the data is coming from a source that has high latency, like the internet. It's not possible to seek in buffered file streams, until the download has reached the requested position - it's not possible to seek at all if it's being streamed in blocks.
Buffered, with the data pushed to BASS via BASS_StreamPutFileData(Int32, IntPtr, Int32).
The push buffered file system is the same as STREAMFILE_BUFFER, except that instead of the file data being pulled from the FILEREADPROC function in a "download" thread, the data is pushed to BASS via BASS_StreamPutFileData(Int32, IntPtr, Int32). A FILEREADPROC function is still required, to get the initial data used in the creation of the stream.