From 432c0255bcc874dd77648cbd5c70d4dea631e752 Mon Sep 17 00:00:00 2001 From: Aman Karmani Date: Tue, 19 Oct 2021 14:26:26 -0700 Subject: ao_audiotrack: set device_buffer based on underlying buffer size when available Signed-off-by: Aman Karmani --- audio/out/ao_audiotrack.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/audio/out/ao_audiotrack.c b/audio/out/ao_audiotrack.c index 52d57e952d..eb8ab7ed4f 100644 --- a/audio/out/ao_audiotrack.c +++ b/audio/out/ao_audiotrack.c @@ -95,6 +95,7 @@ struct JNIAudioTrack { jmethodID writeV23; jmethodID writeShortV23; jmethodID writeBufferV21; + jmethodID getBufferSizeInFramesV23; jmethodID getPlaybackHeadPosition; jmethodID getTimestamp; jmethodID getLatency; @@ -128,6 +129,7 @@ struct JNIAudioTrack { {"android/media/AudioTrack", "write", "([BIII)I", MP_JNI_METHOD, OFFSET(writeV23), 0}, {"android/media/AudioTrack", "write", "([SIII)I", MP_JNI_METHOD, OFFSET(writeShortV23), 0}, {"android/media/AudioTrack", "write", "(Ljava/nio/ByteBuffer;II)I", MP_JNI_METHOD, OFFSET(writeBufferV21), 1}, + {"android/media/AudioTrack", "getBufferSizeInFrames", "()I", MP_JNI_METHOD, OFFSET(getBufferSizeInFramesV23), 0}, {"android/media/AudioTrack", "getTimestamp", "(Landroid/media/AudioTimestamp;)Z", MP_JNI_METHOD, OFFSET(getTimestamp), 1}, {"android/media/AudioTrack", "getPlaybackHeadPosition", "()I", MP_JNI_METHOD, OFFSET(getPlaybackHeadPosition), 1}, {"android/media/AudioTrack", "getLatency", "()I", MP_JNI_METHOD, OFFSET(getLatency), 1}, @@ -345,6 +347,14 @@ static int AudioTrack_New(struct ao *ao) return -1; } + if (AudioTrack.getBufferSizeInFramesV23) { + int bufferSize = MP_JNI_CALL_INT(audiotrack, AudioTrack.getBufferSizeInFramesV23); + if (bufferSize > 0) { + MP_VERBOSE(ao, "AudioTrack.getBufferSizeInFrames = %d\n", bufferSize); + ao->device_buffer = bufferSize; + } + } + p->audiotrack = (*env)->NewGlobalRef(env, audiotrack); (*env)->DeleteLocalRef(env, audiotrack); if (!p->audiotrack) -- cgit v1.2.3