BASSenc

BASS_Encode_CastGetStats


Retrieves stats from the Shoutcast or Icecast server.

char *BASS_Encode_CastGetStats(
    HENCODE handle
    DWORD type,
    char *pass
);

Parameters

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.
passPassword when retrieving Icecast server stats... NULL = use the password provided in the BASS_Encode_CastInit call.

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_UNKNOWNSome other mystery problem!

Remarks

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.

Example

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

See also

BASS_Encode_CastInit, BASS_Encode_GetCount