Creates a sample stream from an Opus file.
HSTREAM BASS_OPUS_StreamCreateFile( BOOL mem, void *file, QWORD offset, QWORD length, DWORD flags );
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.
|
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 | 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. |
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! |
The Opus file format is Ogg-based, so the standard BASS_TAG_OGG and BASS_TAG_VENDOR tag types apply to Opus too, via BASS_ChannelGetTags.
Chained Opus 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.
To stream a file from the internet, use BASS_OPUS_StreamCreateURL. To stream from other locations, see BASS_OPUS_StreamCreateFileUser. To stream raw Opus packets (without an Ogg container), use BASS_OPUS_StreamCreate.
HSTREAM stream = BASS_OPUS_StreamCreateFile(FALSE, "afile.opus", 0, 0, 0);
BASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_StreamFree, BASS_StreamGetFilePosition