From: John Janus Date: Thu, 21 Sep 2017 09:48:53 +0000 (+0200) Subject: decode in loop X-Git-Url: https://git.johnzone.org/?a=commitdiff_plain;h=c2b12471a73024ffbd4250df0350174246febf95;p=FakeRadio.git decode in loop --- diff --git a/mp3player.c b/mp3player.c index 4661b26..6e9b012 100644 --- a/mp3player.c +++ b/mp3player.c @@ -62,7 +62,7 @@ void* playFunc(void* arg) 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; @@ -76,8 +76,9 @@ void* playFunc(void* arg) 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(); }