BASS_FLAC_StreamCreateFile
Creates a sample stream from a FLAC file.
HSTREAM BASS_FLAC_StreamCreateFile( BOOL mem, void *file, QWORD offset, QWORD length, DWORD flags );
Parameters
mem | TRUE = stream the file from memory. | ||||||||||||||||||||
file | Filename (mem = FALSE) or a memory location (mem = TRUE). | ||||||||||||||||||||
offset | File offset to begin streaming from (only used if mem = FALSE). | ||||||||||||||||||||
length | Data length... 0 = use all data up to the end of the file (if mem = FALSE). | ||||||||||||||||||||
flags | A combination of these flags.
|
Return value
If successful, the new stream's handle is returned, else 0 is returned. Use BASS_ErrorGetCode to get the error code.Error codes
BASS_ERROR_INIT | BASS_Init has not been successfully called. |
BASS_ERROR_NOTAVAIL | Only decoding channels (BASS_STREAM_DECODE) are allowed when using the "no sound" device. The BASS_STREAM_AUTOFREE flag is also unavailable to decoding channels. |
BASS_ERROR_ILLPARAM | The length must be specified 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 by the device/drivers. If the stream is more than stereo or the BASS_SAMPLE_FLOAT flag is used, it could be that they are not supported. |
BASS_ERROR_SPEAKER | The specified SPEAKER flags are invalid. The device/drivers do not support them, they are attempting to assign a stereo stream to a mono speaker or 3D functionality is enabled. |
BASS_ERROR_MEM | There is insufficent memory. |
BASS_ERROR_NO3D | Could not initialize 3D support. |
BASS_ERROR_UNKNOWN | Some other mystery problem! |
Remarks
All FLAC sample resolutions from 8 to 32-bit are supported, but the output will be restricted to 16-bit unless the BASS_SAMPLE_FLOAT flag is used. The file's original resolution is available via BASS_ChannelGetInfo.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.
Platform-specific
Away from Windows, all mixing is done in software (by BASS), so the BASS_SAMPLE_SOFTWARE flag is unnecessary. The BASS_SAMPLE_FX flag is also ignored.Example
Create a stream of a FLAC file.HSTREAM stream=BASS_FLAC_StreamCreateFile(FALSE, "afile.flac", 0, 0, 0);
See also
BASS_FLAC_StreamCreateFileUser, BASS_FLAC_StreamCreateURLBASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_ChannelSetLink, BASS_StreamFree, BASS_StreamGetFilePosition