Creates a sample stream from a FLAC file.
HSTREAM BASS_FLAC_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_FORMAT | The sample format is not supported. |
| BASS_ERROR_SPEAKER | The specified SPEAKER flags are invalid. |
| BASS_ERROR_MEM | There is insufficent memory. |
| BASS_ERROR_NO3D | Could not initialize 3D support. |
| BASS_ERROR_UNKNOWN | Some other mystery problem! |
Use BASS_ChannelGetInfo to retrieve information on the format (sample rate, resolution, channels) of the stream. The playback length of the stream can be retrieved using BASS_ChannelGetLength. Until the whole file has been streamed, whatever length the file's header says is returned, which may or may not be exact.
FLAC streams have a few different types of tag available via BASS_ChannelGetTags. The FLAC format uses Ogg Vorbis tags, so the standard BASS_TAG_OGG and BASS_TAG_VENDOR tags apply for those. Embedded cuesheets are supported and are available via the BASS_TAG_FLAC_CUE tag, which gives a pointer to a TAG_FLAC_CUE structure. Embedded images are also supported and are available via the BASS_TAG_FLAC_PICTURE+<index> tag (index=0 is the first picture), which gives a pointer to a TAG_FLAC_PICTURE structure. Application metadata blocks are also supported and available via the BASS_TAG_FLAC_METADATA+<index> tag (index=0 is the first block), which gives a pointer to a TAG_FLAC_METADATA structure.
Chained Ogg FLAC files are supported, and a BASS_SYNC_OGG_CHANGE sync can be set via BASS_ChannelSetSync to be informed of when a new bitstream begins during decoding/playback of them, at which point new tags may be available. The length of a chained Ogg FLAC file will be unavailable until the entire file has been decoded, and seeking via BASS_ChannelSetPosition is not possible except for going back to the start (or the BASS_POS_DECODETO option is used).
To stream a file from the internet, use BASS_FLAC_StreamCreateURL. To stream from other locations, see BASS_FLAC_StreamCreateFileUser.
HSTREAM stream = BASS_FLAC_StreamCreateFile(FALSE, "afile.flac", 0, 0, 0);
BASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_StreamFree, BASS_StreamGetFilePosition