Default mic settings (#37)

This commit is contained in:
davidliu
2021-11-29 20:42:26 +09:00
committed by GitHub
parent 2642b6e49d
commit c71bcaeaf8
2 changed files with 31 additions and 7 deletions
+3 -6
View File
@@ -21,14 +21,11 @@ class LocalAudioTrack extends AudioTrack with LocalTrack {
/// Creates a new audio track from the default audio input device.
static Future<LocalAudioTrack> create(
[LocalAudioTrackOptions? options]) async {
// TODO: have back up incase the options fail
final audioConstraints = options?.toMediaConstraintsMap() ??
const LocalAudioTrackOptions().toMediaConstraintsMap();
final stream =
await rtc.navigator.mediaDevices.getUserMedia(<String, dynamic>{
// 'audio': <String, dynamic>{
// 'echoCancellation': true,
// 'noiseSuppression': true,
// },
'audio': true,
'audio': audioConstraints,
'video': false,
});
+28 -1
View File
@@ -236,5 +236,32 @@ class VideoParameters {
/// Options when creating an LocalAudioTrack. Placeholder for now.
class LocalAudioTrackOptions {
const LocalAudioTrackOptions();
final bool noiseSuppression;
final bool echoCancellation;
final bool autoGainControl;
final bool highPassFilter;
final bool typingNoiseDetection;
const LocalAudioTrackOptions({
this.noiseSuppression = true,
this.echoCancellation = true,
this.autoGainControl = true,
this.highPassFilter = false,
this.typingNoiseDetection = true,
});
Map<String, dynamic> toMediaConstraintsMap() => <String, dynamic>{
'optional': <Map<String, dynamic>>[
<String, dynamic>{'echoCancellation': echoCancellation},
<String, dynamic>{'googDAEchoCancellation': echoCancellation},
<String, dynamic>{'googEchoCancellation': echoCancellation},
<String, dynamic>{'googEchoCancellation2': echoCancellation},
<String, dynamic>{'noiseSuppression': noiseSuppression},
<String, dynamic>{'googNoiseSuppression': noiseSuppression},
<String, dynamic>{'googNoiseSuppression2': noiseSuppression},
<String, dynamic>{'googAutoGainControl': autoGainControl},
<String, dynamic>{'googHighpassFilter': highPassFilter},
<String, dynamic>{'googTypingNoiseDetection': typingNoiseDetection},
],
};
}