toMediaConstraintsMap method

  1. @override
Map<String, dynamic> toMediaConstraintsMap()
override

Implementation

@override
Map<String, dynamic> toMediaConstraintsMap() {
  final constraints = <String, dynamic>{};

  if (Native.bypassVoiceProcessing) {
    constraints['optional'] = <Map<String, dynamic>>[
      <String, dynamic>{'googEchoCancellation': false},
      <String, dynamic>{'googEchoCancellation2': false},
      <String, dynamic>{'googNoiseSuppression': false},
      <String, dynamic>{'googNoiseSuppression2': false},
      <String, dynamic>{'googAutoGainControl': false},
      <String, dynamic>{'googHighpassFilter': false},
      <String, dynamic>{'googTypingNoiseDetection': false},
      <String, dynamic>{'noiseSuppression': false},
      <String, dynamic>{'echoCancellation': false},
      <String, dynamic>{'autoGainControl': false},
      <String, dynamic>{'voiceIsolation': false},
      <String, dynamic>{'googDAEchoCancellation': false},
    ];
  } else {
    /// in we platform it's not possible to provide optional and mandatory parameters.
    /// deviceId is a mandatory parameter
    if (!kIsWeb || (kIsWeb && deviceId == null)) {
      constraints['optional'] = <Map<String, dynamic>>[
        <String, dynamic>{'echoCancellation': echoCancellation},
        <String, dynamic>{'noiseSuppression': noiseSuppression},
        <String, dynamic>{'autoGainControl': autoGainControl},
        <String, dynamic>{'voiceIsolation': noiseSuppression},
        <String, dynamic>{'googDAEchoCancellation': echoCancellation},
        <String, dynamic>{'googEchoCancellation': echoCancellation},
        <String, dynamic>{'googEchoCancellation2': echoCancellation},
        <String, dynamic>{'googNoiseSuppression': noiseSuppression},
        <String, dynamic>{'googNoiseSuppression2': noiseSuppression},
        <String, dynamic>{'googAutoGainControl': autoGainControl},
        <String, dynamic>{'googHighpassFilter': highPassFilter},
        <String, dynamic>{'googTypingNoiseDetection': typingNoiseDetection},
      ];
    }
  }

  if (deviceId != null && deviceId!.isNotEmpty) {
    if (kIsWeb) {
      if (isChrome129OrLater()) {
        constraints['deviceId'] = {'exact': deviceId};
      } else {
        constraints['deviceId'] = {'ideal': deviceId};
      }
    } else {
      constraints['optional'].cast<Map<String, dynamic>>().add(<String, dynamic>{'sourceId': deviceId});
    }
  }
  return constraints;
}