BASS_ALAC_StreamCreateFile
Creates a sample stream from an ALAC file.
HSTREAM BASS_ALAC_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.
BASS_SAMPLE_FLOAT | Use 32-bit floating-point sample data. See Floating-point channels for info.
| BASS_SAMPLE_3D | Enable 3D functionality. The stream must be mono. The SPEAKER flags cannot be used together with this flag.
| BASS_SAMPLE_LOOP | Loop the file. This flag can be toggled at any time using BASS_ChannelFlags.
| BASS_STREAM_AUTOFREE | Automatically free the stream when playback ends.
| BASS_STREAM_DECODE | Decode 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_xxx | Speaker assignment flags. These flags have no effect when the stream is more than stereo.
| BASS_ASYNCFILE | Read 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_UNICODE | file is in UTF-16 form. Otherwise it is ANSI on Windows and UTF-8 on other platforms.
|
|
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 | 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 insufficient memory.
|
BASS_ERROR_NO3D | Could not initialize 3D support.
|
BASS_ERROR_UNKNOWN | Some other mystery problem!
|
Remarks
All ALAC sample resolutions from 16 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 from BASS_ChannelGetInfo, as is the sample rate and channel count. The playback length is available from BASS_ChannelGetLength. ALAC files can have MP4 tags, which can be retrieved by using BASS_TAG_MP4 with BASS_ChannelGetTags.
To stream a file from the internet, use BASS_ALAC_StreamCreateURL. To stream from other locations, see BASS_ALAC_StreamCreateFileUser.
Example
Create a stream from an ALAC file.
HSTREAM stream = BASS_ALAC_StreamCreateFile(FALSE, "alacfile.m4a", 0, 0, 0);
See also
BASS_ALAC_StreamCreateFileUser, BASS_ALAC_StreamCreateURL
BASS_ChannelGetInfo, BASS_ChannelGetLength, BASS_ChannelGetTags, BASS_ChannelPlay, BASS_ChannelSetAttribute, BASS_ChannelSetDSP, BASS_ChannelSetFX, BASS_StreamFree, BASS_StreamGetFilePosition