diff --git a/app/src/main/java/com/limelight/binding/audio/AndroidAudioRenderer.java b/app/src/main/java/com/limelight/binding/audio/AndroidAudioRenderer.java index f0f1758c..1901692c 100644 --- a/app/src/main/java/com/limelight/binding/audio/AndroidAudioRenderer.java +++ b/app/src/main/java/com/limelight/binding/audio/AndroidAudioRenderer.java @@ -168,8 +168,17 @@ public class AndroidAudioRenderer implements AudioRenderer { } @Override - public void playDecodedAudio(byte[] audioData) { - track.write(audioData, 0, audioData.length); + public void playDecodedAudio(short[] audioData) { + // Only queue up to 40 ms of pending audio data in addition to what AudioTrack is buffering for us. + if (MoonBridge.getPendingAudioFrames() < 8) { + // This will block until the write is completed. That can cause a backlog + // of pending audio data, so we do the above check to be able to bound + // latency at 40 ms in that situation. + track.write(audioData, 0, audioData.length); + } + else { + LimeLog.info("Too many pending audio frames: " + MoonBridge.getPendingAudioFrames()); + } } @Override diff --git a/moonlight-common b/moonlight-common index 39c6a3c8..9f409da6 160000 --- a/moonlight-common +++ b/moonlight-common @@ -1 +1 @@ -Subproject commit 39c6a3c8b10ff7c705f33d49e2217728ff9772c1 +Subproject commit 9f409da618424136c50bd4c8b6185841be857353