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. If the file's header does not contain the length then the file will need to be scanned for it, either in the first BASS_ChannelGetLength call or at creation with the BASS_STREAM_PRESCAN flag.
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 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. Each bitstream has its own tags.
To stream a file from the internet, use BASS_FLAC_StreamCreateURL. To stream from other locations, see BASS_FLAC_StreamCreateFileUser.
BASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_StreamFree, BASS_StreamGetFilePosition