Allow clients to provide custom scheduler to AudioModule
Bug: None Change-Id: Ie80f84c64a43e957d7f8c4b61ac2f1495d292b50 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/184300 Commit-Queue: Bin Zhu <ricebin@google.com> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Reviewed-by: Henrik Andreassson <henrika@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32201}
This commit is contained in:
@ -15,6 +15,7 @@ import android.media.AudioDeviceInfo;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import org.webrtc.JniCommon;
|
||||
import org.webrtc.Logging;
|
||||
|
||||
@ -31,6 +32,7 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
|
||||
|
||||
public static class Builder {
|
||||
private final Context context;
|
||||
private ScheduledExecutorService scheduler;
|
||||
private final AudioManager audioManager;
|
||||
private int inputSampleRate;
|
||||
private int outputSampleRate;
|
||||
@ -53,6 +55,11 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
|
||||
this.outputSampleRate = WebRtcAudioManager.getSampleRate(audioManager);
|
||||
}
|
||||
|
||||
public Builder setScheduler(ScheduledExecutorService scheduler) {
|
||||
this.scheduler = scheduler;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method if the default handling of querying the native sample rate shall be
|
||||
* overridden. Can be useful on some devices where the available Android APIs are known to
|
||||
@ -208,9 +215,13 @@ public class JavaAudioDeviceModule implements AudioDeviceModule {
|
||||
}
|
||||
Logging.d(TAG, "HW AEC will not be used.");
|
||||
}
|
||||
final WebRtcAudioRecord audioInput = new WebRtcAudioRecord(context, audioManager, audioSource,
|
||||
audioFormat, audioRecordErrorCallback, audioRecordStateCallback, samplesReadyCallback,
|
||||
useHardwareAcousticEchoCanceler, useHardwareNoiseSuppressor);
|
||||
ScheduledExecutorService executor = this.scheduler;
|
||||
if (executor == null) {
|
||||
executor = WebRtcAudioRecord.newDefaultScheduler();
|
||||
}
|
||||
final WebRtcAudioRecord audioInput = new WebRtcAudioRecord(context, executor, audioManager,
|
||||
audioSource, audioFormat, audioRecordErrorCallback, audioRecordStateCallback,
|
||||
samplesReadyCallback, useHardwareAcousticEchoCanceler, useHardwareNoiseSuppressor);
|
||||
final WebRtcAudioTrack audioOutput = new WebRtcAudioTrack(
|
||||
context, audioManager, audioTrackErrorCallback, audioTrackStateCallback);
|
||||
return new JavaAudioDeviceModule(context, audioManager, audioInput, audioOutput,
|
||||
|
||||
Reference in New Issue
Block a user