From e6a22df31580fa32a8d9e4c12e8a37a69d0d4f99 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sat, 4 Jan 2025 17:49:10 +0100 Subject: [PATCH] AudioTrack: recover underruns properly --- src/api-impl-jni/audio/android_media_AudioTrack.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/api-impl-jni/audio/android_media_AudioTrack.c b/src/api-impl-jni/audio/android_media_AudioTrack.c index 5e59028b..f36dad86 100644 --- a/src/api-impl-jni/audio/android_media_AudioTrack.c +++ b/src/api-impl-jni/audio/android_media_AudioTrack.c @@ -238,7 +238,9 @@ JNIEXPORT jint JNICALL Java_android_media_AudioTrack_native_1write(JNIEnv *env, if (ret < 0) { if (ret == -EPIPE) { printf("XRUN.\n"); - snd_pcm_prepare(pcm_handle); + snd_pcm_recover(pcm_handle, ret, 0); + ret = frames_written = snd_pcm_writei(pcm_handle, buffer + offset_in_bytes, frames_to_write); + snd_pcm_start(pcm_handle); } else { printf("ERROR. Can't write to PCM device. %s\n", snd_strerror(ret)); }