Creates a sample stream from a WebM or Matroska file.

    BOOL mem,
    void *file,
    QWORD offset,
    QWORD length,
    DWORD flags,
    DWORD track


memTRUE = stream the file from memory.
fileFilename (mem = FALSE) or a memory location (mem = TRUE).
offsetFile offset to begin streaming from (only used if mem = FALSE).
lengthData length... 0 = use all data up to the end of the file (if mem = FALSE).
flagsA combination of these flags.
BASS_SAMPLE_FLOATUse 32-bit floating-point sample data. See Floating-point channels for info.
BASS_SAMPLE_3DEnable 3D functionality. The stream must be mono. The SPEAKER flags cannot be used together with this flag.
BASS_SAMPLE_LOOPLoop the file. This flag can be toggled at any time using BASS_ChannelFlags.
BASS_STREAM_AUTOFREEAutomatically free the stream when playback ends.
BASS_STREAM_DECODEDecode the sample data, without playing it. Use BASS_ChannelGetData to retrieve decoded sample data. The BASS_SAMPLE_3D, BASS_STREAM_AUTOFREE and SPEAKER flags cannot be used together with this flag.
BASS_SPEAKER_xxxSpeaker assignment flags. These flags have no effect when the stream is more than stereo.
BASS_ASYNCFILERead the file asynchronously. When enabled, the file is read and buffered in parallel with the decoding, to reduce the chances of the decoder being affected by I/O delays. This can be particularly useful with slow storage media and/or low latency output. The size of the file buffer is determined by the BASS_CONFIG_ASYNCFILE_BUFFER config option. This flag is ignored when streaming from memory (mem = TRUE).
BASS_UNICODEfile is in UTF-16 form. Otherwise it is ANSI on Windows or Windows CE, and UTF-8 on other platforms.
trackThe track to play from the file... 1 = first, 0 = first playable track. When requesting the first playable track, all tracks will be checked in numerical order until a playable one is found. The active track is available via the BASS_ATTRIB_WEBM_TRACK attribute.

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_INITBASS_Init has not been successfully called.
BASS_ERROR_ILLPARAMThe length must be specified when streaming from memory.
BASS_ERROR_FILEOPENThe file could not be opened.
BASS_ERROR_FILEFORMThe file's format is not recognised/supported.
BASS_ERROR_NOTAUDIOThe track or file does not contain audio.
BASS_ERROR_CODECThe file uses a codec that is not available/supported.
BASS_ERROR_FORMATThe sample format is not supported.
BASS_ERROR_SPEAKERThe specified SPEAKER flags are invalid.
BASS_ERROR_MEMThere is insufficent memory.
BASS_ERROR_NO3DCould not initialize 3D support.
BASS_ERROR_WEBM_TRACKtrack is invalid.
BASS_ERROR_UNKNOWNSome other mystery problem!


WebM is a subset of the Matroska file format. WebM files can contain Vorbis or Opus audio data, while Matroska also supports other codecs including AAC / AC3 / MP3. BASS includes support for Vorbis and MP3, and AAC on some platforms, but add-ons are required (loaded via BASS_PluginLoad) to support other codecs, eg. BASSOPUS for Opus. Not all Matroska features are supported but most Matroska files should be playable.

When using the plugin system, the availability of the BASS_ATTRIB_WEBM_TRACK attribute can be used to identify a WebM or Matroska file. The stream's ctype value from BASS_ChannelGetInfo tells the format of the active track from the file.

WebM and Matroska files can have tags for the file as a whole and for individual tracks. When present, they are available as a series of null-terminated UTF-8 strings from BASS_ChannelGetTags with BASS_TAG_WEBM and BASS_TAG_WEBM_TRACK, respectively. In the case of BASS_TAG_WEBM_TRACK, the active track's tags are given. When the Vorbis codec is used, BASS_TAG_OGG tags may also be available.

See also

BASS_WEBM_StreamCreateFileUser, BASS_WEBM_StreamCreateURL

BASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_StreamFree, BASS_StreamGetFilePosition