The ICY name can both mean the source and client protocol. Here we assume it means the client protocol. ICY is built on HTTP but early versions might report ICY instead of HTTP. This is now deprecated and should not be used as it might break HTML5 compatibility.
Server headers
icy-br: send the bitrate in kilobits per secondicy-genre: sends the genreicy-name: sends the stream's nameicy-url: is the URL of the radio stationicy-pub: can be 1 or 0 to tell if it is listed or not
icy-notice1:This stream requires Winampicy-notice2:SHOUTcast DNAS/posix(linux x86) v2.4.7.256These notices are probably still here for legacy reasons or just free advertising. In Cast we left them out and still got no compatibility issues.
Metadata
If the client sends the Icy-MetaData:1 header this means the client supports ICY-metadata. The server should respond icy-metaint: 8192. 8192 is the number of bytes between 2 metadata chunks. It is suggested to use this value as some players might have issues parsing other values. In these chunks StreamTitle='title of the song'; send the new song title. There also is a StreamURL field which should be able to also send album art links or more info. The exact implementation is however unknown.
Read more
http://www.smackfu.com/stuff/programming/shoutcast.html
Trivia
ICY stands for I Can Yell. ICYcast was also the name of the "beta" builds of SHOUTcast. There are a few of these still running.