There is an application for radio automation (sofisticated audio player) that plays music and other audio clips through 4 separate audio channels. That channels are routed to separate waveOut devices, and later mixed on radio mixing console.
A software component is needed that can be plugged into existing playback architecture, that will mix all 4 channels, encode them for Shoutcast streaming and push the content to appropriate Shoutcast distribution server.
Here are some pointers for making software component in question:
* source code for making a plug-in will be available on bidder request, and test application should be made using code supplied.
* supplied source code should be adapted to use new plug-in that is produced.
* since output at waveOut channels can be in different sampling rates, sound should be up/downsampled if needed (code to do so can be supplied if needed, coder can provide own solution)
* mp3 encoding could be done with LAME, or coder can provide own solution
* solution is needed that can make several streams from one set of waveOut channels, so each instance of the application could stream multiple bitrates at once
* Shoutcast metadata manipulation should be provided through component interface
* server connection should be robust and able to work 24/7, reconnecting if needed, with appropriate logging
* since all waveOut channels work independently (this is the current situation with the application) some method of timing Shoutcast stream should be devised; suggested methods are: IReferenceClock, or attaching to one of the waveOut channels (opening one waveOut and playing silence on it)
* clock issues must be resolved by replicating sample data if there is too little data, or dropping it when there is too much data (appropriate function is that every 100th sample is duplicated or dropped or replicated until sync is reached)
* suggested interface to the current waveOut implementation is that every audio buffer that is waveOutWritte-n should be queue into streaming component along with the timestamp, later to be picked up, converted to proper sample rate if necessary, mixed to one sound, encoded and so on
Please direct any questions to resolve ambiguities before making a bid.