Ich geh erstmal davon aus, dass du dein MP3 erst dekodieren willst,
bevor das an die Soundkarte geht, sonst wird sich das recht seltsam
anhören...
Wenns komplett innerhalb deines Programms ablaufen soll, nimm eine
entsprechende Decoder-Library, z.B. libmad, xine-lib, etc.
Wenns auch über ein externes Programm laufen darf (VIEL einfacher zu
implementieren!), nimm z.B "mpg321". Mit der Kommandozeilenoption "-"
aufgerufen, spielt das MP3-Daten von STDIN ab.
in perl würd das in etwa so aussehen:
1 | open(MP3HANDLE,'|/usr/bin/mpg321 -');
|
2 | while (buffer_hat_daten) {
|
3 | print MP3HANDLE $stueck_vom_buffer;
|
4 | }
|
5 | close(MP3HANDLE);
|
In reinem C wirds etwas schwieriger, mit "dup","pipe", etc filehandle
für STDIN erzeugen, fork(), exec "mpg321" im Child, im Parent Daten
schreiben auf den Filehandle...