Creates a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plugin supported file.
HSTREAM BASS_StreamCreateFile(
DWORD filetype,
void *file,
QWORD offset,
QWORD length,
DWORD flags
);
| filetype | One of the following.
| ||||||||||||||||||||
| file | The file as described by filetype. | ||||||||||||||||||||
| offset | File offset to begin reading from. | ||||||||||||||||||||
| length | Maximum read length... 0 = to the end of the file. | ||||||||||||||||||||
| flags | A combination of these flags.
|
| BASS_ERROR_INIT | BASS_Init has not been successfully called. |
| BASS_ERROR_NOTAVAIL | The BASS_STREAM_AUTOFREE flag cannot be combined with the BASS_STREAM_DECODE flag. |
| BASS_ERROR_ILLPARAM | filetype and/or length is invalid. length cannot be 0 when streaming from memory. |
| BASS_ERROR_FILEOPEN | The file could not be opened. |
| BASS_ERROR_FILEFORM | The file's format is not recognised/supported. |
| BASS_ERROR_NOTAUDIO | The file does not contain audio, or it also contains video and videos are disabled. |
| BASS_ERROR_CODEC | The file uses a codec that is not available/supported. This can apply to WAV and AIFF files. |
| BASS_ERROR_FORMAT | The sample format is not supported. |
| BASS_ERROR_SPEAKER | The specified SPEAKER flags are invalid. |
| BASS_ERROR_MEM | There is insufficient memory. |
| BASS_ERROR_NO3D | Could not initialize 3D support. |
| BASS_ERROR_UNKNOWN | Some other mystery problem! |
MPEG 1.0, 2.0 and 2.5 layer 3 (MP3) files are supported, layers 1 (MP1) and 2 (MP2) are also supported. Standard RIFF and RF64 WAV files are supported. All PCM formats from 8 to 32-bit are supported in WAV and AIFF files, but the output will be restricted to 16-bit unless the BASS_SAMPLE_FLOAT flag is used. 64-bit floating-point WAV and AIFF files are also supported, but they are rendered in 16-bit or 32-bit floating-point depending on the flags. The file's original resolution is available from BASS_ChannelGetInfo.
Chained OGG files containing multiple logical bitstreams are supported, but they will need to be scanned to get their length or to seek in them. That scanning will be done at stream creation or at the first BASS_ChannelGetLength or BASS_ChannelSetPosition call, depending on whether the BASS_CONFIG_OGG_PRESCAN option is enabled (or the BASS_STREAM_PRESCAN flag is used). The BASS_POS_OGG "mode" can be used with BASS_ChannelGetLength to get the number of bitstreams and with BASS_ChannelSetPosition to seek to a particular one. A BASS_SYNC_OGG_CHANGE sync can be set via BASS_ChannelSetSync to be informed of when a new bitstream begins during decoding/playback.
Multi-channel (ie. more than stereo) OGG, WAV and AIFF files are supported.
Use BASS_ChannelGetInfo to retrieve information on the file format and sample format of the stream. The playback length of the stream can be retrieved using BASS_ChannelGetLength.
If length = 0 (use all data up to the end of the file), and the file length increases after creating the stream (ie. the file is still being written), then BASS will play the extra data too, but the length returned by BASS_ChannelGetLength will not be updated until the end is reached. The BASS_StreamGetFilePosition return values will be updated during playback of the extra data though.
When a plugin is used by a stream, there may be additional flags that are supported by it. Any such flags can be set after stream creation via BASS_ChannelFlags. BASS_ChannelGetInfo can be used to check which, if any, plugin is being used.
To stream a file from the internet, use BASS_StreamCreateURL. To stream from other locations, see BASS_StreamCreateFileUser.
On Android, when using Java, file may be one of the following: String, ByteBuffer, ParcelFileDescriptor (Android 3.1 and above), BASS.Asset. A ParcelFileDescriptor will be duplicated, so the original can be closed whenever wanted but it should not be used to access the file while the stream is.
HSTREAM stream = BASS_StreamCreateFile(0, "afile.mp3", 0, 0, 0);