diff --git a/lib/src/track/local_audio_track.dart b/lib/src/track/local_audio_track.dart index d4d3c2c..547bfbd 100644 --- a/lib/src/track/local_audio_track.dart +++ b/lib/src/track/local_audio_track.dart @@ -21,14 +21,11 @@ class LocalAudioTrack extends AudioTrack with LocalTrack { /// Creates a new audio track from the default audio input device. static Future 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({ - // 'audio': { - // 'echoCancellation': true, - // 'noiseSuppression': true, - // }, - 'audio': true, + 'audio': audioConstraints, 'video': false, }); diff --git a/lib/src/track/options.dart b/lib/src/track/options.dart index 2ec865a..f8535bd 100644 --- a/lib/src/track/options.dart +++ b/lib/src/track/options.dart @@ -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 toMediaConstraintsMap() => { + 'optional': >[ + {'echoCancellation': echoCancellation}, + {'googDAEchoCancellation': echoCancellation}, + {'googEchoCancellation': echoCancellation}, + {'googEchoCancellation2': echoCancellation}, + {'noiseSuppression': noiseSuppression}, + {'googNoiseSuppression': noiseSuppression}, + {'googNoiseSuppression2': noiseSuppression}, + {'googAutoGainControl': autoGainControl}, + {'googHighpassFilter': highPassFilter}, + {'googTypingNoiseDetection': typingNoiseDetection}, + ], + }; }