BASS_Encode_CastInit
Initializes sending an encoder's output to a Shoutcast or Icecast server.
BOOL BASS_Encode_CastInit( HENCODE handle, char *server, char *pass, char *content, char *name, char *url, char *genre, char *desc, char *headers, DWORD bitrate, BOOL pub );
Parameters
handle | The encoder handle. | ||||||
server | The server to send to, in the form of "address:port" (Shoutcast) or "address:port/mount" (Icecast). | ||||||
pass | The server password. | ||||||
content | The MIME type of the encoder output. This can be one of the following.
| ||||||
name | The stream name... NULL = no name. | ||||||
url | The URL, for example, of the radio station's webpage... NULL = no URL. | ||||||
genre | The genre... NULL = no genre. | ||||||
desc | Description... NULL = no description. This applies to Icecast only. | ||||||
headers | Other headers to send to the server... NULL = none. Each header should end with a carriage return and line feed ("\r\n"). | ||||||
bitrate | The bitrate (in kbps) of the encoder output... 0 = undefined bitrate. In cases where the bitrate is a "quality" (rather than CBR) setting, the headers parameter can be used to communicate that instead, eg. "ice-bitrate: Quality 0\r\n". | ||||||
pub | Public? If TRUE, the stream is added to the public directory of streams, at shoutcast.com or dir.xiph.org (or as defined in the server config). |
Return value
If successful, TRUE is returned, else FALSE is returned. Use BASS_ErrorGetCode to get the error code.Error codes
BASS_ERROR_HANDLE | handle is not valid. |
BASS_ERROR_ALREADY | There is already a cast set on the encoder. |
BASS_ERROR_ILLPARAM | server doesn't include a port number. |
BASS_ERROR_FILEOPEN | Couldn't connect to the server. |
BASS_ERROR_CAST_DENIED | pass is not valid. |
BASS_ERROR_UNKNOWN | Some other mystery problem! |
Remarks
This function sets up a Shoutcast/Icecast source client, sending the encoder's output to a server, which listeners can then connect to and receive the data from. The Shoutcast and Icecast server software is available from www.shoutcast.com/download/serve.phtml and www.icecast.org/download.php, respectively.An encoder needs to be started, but with no data yet sent to it, before using this function to setup the sending of the encoder's output to a Shoutcast or Icecast server. If BASS_Encode_Start is used, the encoder should be setup to write its output to STDOUT. Due to the length restrictions of WAVE headers/files, the encoder should also be started with the BASS_ENCODE_NOHEAD flag, and the sample format details sent via the command-line.
Unless the BASS_ENCODE_CAST_NOLIMIT flag is set on the encoder, BASSenc automatically limits the rate that data is processed to real-time speed to avoid overflowing the server's buffer, which means that it is safe to simply try to process data as quickly as possible, eg. when the source is a decoding channel. Encoders set on recording channels are automatically exempt from the rate limiting, as they are inherently real-time. With BASS 2.4.6 or above, also exempt are encoders that are fed in a playback buffer update cycle (including BASS_Update and BASS_ChannelUpdate calls), eg. when the source is a playing channel; that is to avoid delaying the update thread, which could result in playback buffer underruns.
BASS_Encode_ServerInit can be used to setup a server that listeners can connect to directly, without a Shoutcast/Icecast server intermediary.
Platform-specific
This function is not available on Windows CE.Example
Start encoding a stereo 44100hz channel to 128kb/s MP3, and send the output to a Shoutcast server.HENCODE encoder=BASS_Encode_Start(channel, "lame -r -s 44100 -b 128 -", BASS_ENCODE_NOHEAD, NULL, 0); // setup the encoder BASS_Encode_CastInit(encoder, "server.com:8000", "password", BASS_ENCODE_TYPE_MP3, "name", "url", "genre", NULL, NULL, 128, TRUE); // start the cast