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.
Return valueIf successful, the new stream's handle is returned, else 0 is returned. Use BASS_ErrorGetCode to get the error code.
|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!|
RemarksUse BASS_ChannelGetInfo to retrieve information on the format of the stream. Opus always has a sample rate of 48000 Hz, but the source material may have had a different sample rate, which is available via the BASS_ATTRIB_OPUS_ORIGFREQ attribute. The playback length of the stream can be retrieved using BASS_ChannelGetLength.
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 seeking within them is only fully supported if the BASS_STREAM_PRESCAN flag is used (or the BASS_CONFIG_OGG_PRESCAN option is enabled) to have them pre-scanned. Without pre-scanning, seeking will only be possible back to the start. 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.
Platform-specificAway 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.
ExampleCreate a stream of an Opus file.
HSTREAM stream=BASS_OPUS_StreamCreateFile(FALSE, "afile.opus", 0, 0, 0);
See alsoBASS_OPUS_StreamCreateFileUser, BASS_OPUS_StreamCreateURL
BASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_ChannelSetLink, BASS_StreamFree, BASS_StreamGetFilePosition