From 031893f7582b7a43011443d0f919abf3d7ec5686 Mon Sep 17 00:00:00 2001 From: John Janus Date: Thu, 21 Sep 2017 08:27:25 +0200 Subject: [PATCH] reduce cracking, buffer ptobably needs to be filled asynchronously --- mp3player.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/mp3player.c b/mp3player.c index ad7b989..4661b26 100644 --- a/mp3player.c +++ b/mp3player.c @@ -62,22 +62,20 @@ void* playFunc(void* arg) driver = ao_default_driver_id(); mpg123_init(); mem->mh = mpg123_new(NULL, &err); - buffer_size = mpg123_outblock(mem->mh); + buffer_size = mpg123_outblock(mem->mh)*30; mem->buffer = (unsigned char*) malloc(buffer_size * sizeof(unsigned char)); - mem->aodev = ao_open_live(driver, &format, NULL); + if (mpg123_open(mem->mh, settings->file) != MPG123_OK) return NULL; + if (mpg123_getformat(mem->mh, &rate, &channels, &encoding) != MPG123_OK) return NULL; + + format.bits = mpg123_encsize(encoding) * BITS; + format.rate = rate; + format.channels = channels; + format.byte_format = AO_FMT_NATIVE; + format.matrix = 0; + ao_option options = {"debug","",NULL}; + mem->aodev = ao_open_live(driver, &format, &options); pthread_cleanup_push(cleanupThread, (void*) mem); do { - if (mpg123_open(mem->mh, settings->file) != MPG123_OK) return NULL; - if (mpg123_getformat(mem->mh, &rate, &channels, &encoding) != MPG123_OK) return NULL; - - format.bits = mpg123_encsize(encoding) * BITS; - format.rate = rate; - format.channels = channels; - format.byte_format = AO_FMT_NATIVE; - format.matrix = 0; - - - while (mpg123_read(mem->mh, mem->buffer, buffer_size, &done) == MPG123_OK && running) { ao_play(mem->aodev, mem->buffer, done); -- 2.47.1