Retrieves stats from the Shoutcast or Icecast server.

const char *BASS_Encode_CastGetStats(
    HENCODE handle
    DWORD type,
    char *pass


handleThe encoder handle.
typeThe type of stats to retrieve. One of the following.
BASS_ENCODE_STATS_SHOUTShoutcast stats, including listener information and additional server information.
BASS_ENCODE_STATS_ICEIcecast mount-point listener information.
BASS_ENCODE_STATS_ICESERVIcecast server stats, including information on all mount points on the server.
passThe server admin password... NULL = use the password provided in the BASS_Encode_CastInit call. A username can also be included in the form of "username:password".

Return value

If successful, the stats are returned, else NULL is returned. Use BASS_ErrorGetCode to get the error code.

Error codes

BASS_ERROR_HANDLEhandle is not valid.
BASS_ERROR_ILLTYPEtype is invalid.
BASS_ERROR_NOTAVAILThere isn't a cast of the requested type set on the encoder.
BASS_ERROR_TIMEOUTThe server did not respond to the request within the timeout period, as set with the BASS_CONFIG_NET_TIMEOUT config option.
BASS_ERROR_MEMThere is insufficient memory.
BASS_ERROR_UNKNOWNSome other mystery problem!


The stats are returned in XML format.

Each encoder has a single stats buffer, which is reused by each call of this function for the encoder. So if the data needs to be retained across multiple calls, it should be copied to another buffer.


Display the number of listeners.
int listeners = 0;
const char *stats;
if (stats = BASS_Encode_CastGetStats(encoder, BASS_ENCODE_STATS_SHOUT, NULL)) {
    const char *t = strstr(stats, "<CURRENTLISTENERS>"); // Shoutcast listener count
    if (t) listeners = atoi(t + 18);
} else if (stats = BASS_Encode_CastGetStats(encoder, BASS_ENCODE_STATS_ICE, NULL)) {
    const char *t = strstr(stats, "<Listeners>"); // Icecast listener count
    if (t) listeners = atoi(t + 11);
printf("listeners = %d\n", listeners);

See also

BASS_Encode_CastInit, BASS_Encode_GetCount