hi dreamshader,
nö, ein Beispiel hat noch nicht funktioniert. Und ich möchte auch keine magischen Erkenntnisse.
Vielleicht ein wenig mehr konkrete Hinweise. (Unter Delphi hab ich die auch immer gern gegeben)
Mein Ziel ist das unten stehende Programm kompilieren zu können.
Das ist der Schritt zum MP3-Player, der mir noch fehlt. Im Augenblick erkennt mein Raspi einen USB-Stick, liest Verzeichnisse ein (in Stringarrays oder wahlweise doppelt verkettete Zeigerlisten, stellt die Dateien auf einem Grafik-Display dar (über SPI), fragt Knöppe ab , und möchte dann losdudeln.
(Also bitte nicht gleich die Tour : wenn du ein bisschen C könntest [oder dich mal mit Linux beschäftigen würdest] und mal in ein Buch schaust... usw und fort - ich bin halt nicht mit C auf die Welt gekommen)
Gruss Tomas
#include <ao/ao.h>
#include <mpg123.h>
#define BITS 8
int main(int argc, char *argv[])
{
mpg123_handle *mh;
unsigned char *buffer;
size_t buffer_size;
size_t done;
int err;
int driver;
ao_device *dev;
ao_sample_format format;
int channels, encoding;
long rate;
if(argc < 2)
exit(0);
/* initializations */
ao_initialize();
driver = ao_default_driver_id();
mpg123_init();
mh = mpg123_new(NULL, &err);
buffer_size = mpg123_outblock(mh);
buffer = (unsigned char*) malloc(buffer_size * sizeof(unsigned char));
/* open the file and get the decoding format */
mpg123_open(mh, argv[1]);
mpg123_getformat(mh, &rate, &channels, &encoding);
/* set the output format and open the output device */
format.bits = mpg123_encsize(encoding) * BITS;
format.rate = rate;
format.channels = channels;
format.byte_format = AO_FMT_NATIVE;
format.matrix = 0;
dev = ao_open_live(driver, &format, NULL);
/* decode and play */
while (mpg123_read(mh, buffer, buffer_size, &done) == MPG123_OK)
ao_play(dev, buffer, done);
/* clean up */
free(buffer);
ao_close(dev);
mpg123_close(mh);
mpg123_delete(mh);
mpg123_exit();
ao_shutdown();
return 0;
}
/*
Save the code as play.c and build it. Remember you must first install libmpg123 and libao.
gcc -O2 -o play play.c -lmpg123 -lao
Run the programm with a mp3 file path in command line.
./play /path/to/file.mp3
*/