driver = ao_default_driver_id();
mpg123_init();
mem->mh = mpg123_new(NULL, &err);
- buffer_size = mpg123_outblock(mem->mh)*30;
+ buffer_size = mpg123_outblock(mem->mh)*2;
mem->buffer = (unsigned char*) malloc(buffer_size * sizeof(unsigned char));
if (mpg123_open(mem->mh, settings->file) != MPG123_OK) return NULL;
if (mpg123_getformat(mem->mh, &rate, &channels, &encoding) != MPG123_OK) return NULL;
mem->aodev = ao_open_live(driver, &format, &options);
pthread_cleanup_push(cleanupThread, (void*) mem);
do {
- while (mpg123_read(mem->mh, mem->buffer, buffer_size, &done) == MPG123_OK && running)
+ while (running)
{
+ if (mpg123_read(mem->mh, mem->buffer, buffer_size, &done) != MPG123_OK) break;
ao_play(mem->aodev, mem->buffer, done);
pthread_testcancel();
}