ensureInitialized method

  1. @override
Future<void> ensureInitialized()
override

Implementation

@override
Future<void> ensureInitialized() async {
  if (_isEnsureInitialized) {
    return;
  }
  _isEnsureInitialized = true;
  try {
    try {
      CoastAudioNative.initialize(
        library: DynamicLibrary.open(
          sharedLibraryPath,
        ),
      );
      _isCrash = true;
    } catch (e) {
      rethrow;
    }
    _isCrash = false;

    for (final backend in AudioDeviceBackend.values) {
      backends[backend] = switch (backend) {
        AudioDeviceBackend.coreAudio => Platform.isMacOS || Platform.isIOS,
        AudioDeviceBackend.aaudio => Platform.isAndroid,
        AudioDeviceBackend.openSLES => Platform.isAndroid,
        AudioDeviceBackend.wasapi => Platform.isWindows,
        AudioDeviceBackend.alsa => Platform.isLinux,
        AudioDeviceBackend.pulseAudio => Platform.isLinux,
        AudioDeviceBackend.jack => Platform.isLinux,
        AudioDeviceBackend.dummy => true,
      };
    }
    audioDeviceContext = AudioDeviceContext(
      backends:
          backends.entries.where((e) => e.value).map((e) => e.key).toList(),
    );
  } catch (e) {}
  _isDeviceSupport = true;
}