BASS_Mixer_ChannelGetPosition
Retrieves the playback position of a mixer source channel.
QWORD BASS_Mixer_ChannelGetPosition(
DWORD handle,
DWORD mode
);
Parameters
| handle | The channel handle.
|
| mode | How to retrieve the position. One of the following.
| BASS_POS_BYTE | Get the position in bytes.
| | BASS_POS_RAW | Get the raw position in bytes. This is a monotonic count (never goes backwards) that is unaffected by seeking/looping.
| | BASS_POS_MUSIC_ORDER | Get the position in orders and rows... LOWORD = order, HIWORD = row * scaler (BASS_ATTRIB_MUSIC_PSCALER). (HMUSIC only)
| | BASS_POS_MIXER_DELAY | Get the amount remaining of any start delay that was set via BASS_Mixer_StreamAddChannelEx.
|
Other modes may be supported by add-ons.
|
Return value
If successful, then the channel's position is returned, else -1 is returned. Use BASS_ErrorGetCode to get the error code.
Error codes
| BASS_ERROR_HANDLE | handle is not a mixer source.
|
| BASS_ERROR_NOTAVAIL | The requested position is not available.
|
| BASS_ERROR_UNKNOWN | Some other mystery problem!
|
Remarks
This function is like the standard BASS_ChannelGetPosition, but it compensates for the mixer's playback buffering to return the position that is currently being heard. If the mixer is not being played by BASS, it is possible to account for any other output system latency with a MIXERLATENCYPROC callback function or the BASS_ATTRIB_MIXER_LATENCY attribute, or the BASS_Mixer_ChannelGetPositionEx function.
If the mixer is a submixer (source of another mixer) without its own latency then the parent mixer's latency will be used. If the parent mixer is also a submixer then the process will be repeated, and so on, until a final latency value is obtained (if possible). This is only possible if the submixer(s) have the BASS_MIXER_POSEX flag set, to enable keeping a record of source positions.
See also
BASS_Mixer_ChannelGetPositionEx, BASS_Mixer_ChannelIsActive, BASS_Mixer_ChannelSetPosition, BASS_Mixer_ChannelSetSync
BASS_ChannelGetPosition