diff --git a/.changes/bump-libwebrtc-to-m150 b/.changes/bump-libwebrtc-to-m150 new file mode 100644 index 000000000..b94f81f9c --- /dev/null +++ b/.changes/bump-libwebrtc-to-m150 @@ -0,0 +1 @@ +minor type="changed" "Bump libwebrtc to m150(flutter-webrtc 1.6.2), added `enableWARP` and `zeroPlayoutDelay` options to LiveKitClient.initialize" \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 5a671d109..1df4a933d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -60,7 +60,7 @@ android { dependencies { testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito:mockito-core:5.0.0") - implementation 'io.github.webrtc-sdk:android:144.7559.09' + implementation 'io.github.webrtc-sdk:android:150.7871.01' implementation 'io.livekit:noise:2.0.0' // Audio device/focus/mode routing. Pinned to the same revision used by // the LiveKit Android SDK (AudioSwitchHandler). diff --git a/ios/livekit_client.podspec b/ios/livekit_client.podspec index e4b3795bc..ad7d75aa2 100644 --- a/ios/livekit_client.podspec +++ b/ios/livekit_client.podspec @@ -16,6 +16,6 @@ Pod::Spec.new do |s| s.static_framework = true s.dependency 'Flutter' - s.dependency 'WebRTC-SDK', '144.7559.09' + s.dependency 'WebRTC-SDK', '150.7871.01' s.dependency 'flutter_webrtc' end diff --git a/lib/src/livekit.dart b/lib/src/livekit.dart index 6f73d284d..ab215be67 100644 --- a/lib/src/livekit.dart +++ b/lib/src/livekit.dart @@ -17,7 +17,7 @@ import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; import 'audio/audio_manager.dart'; import 'audio/audio_session.dart'; import 'support/native.dart'; -import 'support/platform.dart' show PlatformType, lkPlatformIs, lkPlatformIsMobile; +import 'support/platform.dart' show PlatformType, lkPlatformIs, lkPlatformIsMobile, lkPlatformIsDesktop; import 'support/webrtc_initialize_options.dart'; /// Main entry point to connect to a room. @@ -51,6 +51,8 @@ class LiveKitClient { static Future initialize({ bool bypassVoiceProcessing = false, AudioSessionOptions? initialAudioSessionOptions, + bool enableWARP = false, + bool zeroPlayoutDelay = false, }) async { if (lkPlatformIsMobile()) { // bypassVoiceProcessing controls only WebRTC voice processing. Android @@ -62,11 +64,23 @@ class LiveKitClient { bypassVoiceProcessing: bypassVoiceProcessing, initialAudioSessionOptions: initialAudioSessionOptions, includeAndroidAudioConfiguration: lkPlatformIs(PlatformType.android), + enableWARP: enableWARP, + zeroPlayoutDelay: zeroPlayoutDelay, ), ); if (lkPlatformIs(PlatformType.android) && initialAudioSessionOptions != null) { AudioManager.instance.setInitialAudioSessionOptions(initialAudioSessionOptions); } + } else if (lkPlatformIsDesktop()) { + await rtc.WebRTC.initialize( + options: liveKitWebRTCInitializeOptions( + bypassVoiceProcessing: false, + initialAudioSessionOptions: null, + includeAndroidAudioConfiguration: false, + enableWARP: enableWARP, + zeroPlayoutDelay: zeroPlayoutDelay, + ), + ); } } } diff --git a/lib/src/support/webrtc_initialize_options.dart b/lib/src/support/webrtc_initialize_options.dart index 7c655fe71..ebcba96e9 100644 --- a/lib/src/support/webrtc_initialize_options.dart +++ b/lib/src/support/webrtc_initialize_options.dart @@ -22,8 +22,12 @@ Map liveKitWebRTCInitializeOptions({ required bool bypassVoiceProcessing, required AudioSessionOptions? initialAudioSessionOptions, required bool includeAndroidAudioConfiguration, + bool enableWARP = false, + bool zeroPlayoutDelay = false, }) => { if (bypassVoiceProcessing) 'bypassVoiceProcessing': bypassVoiceProcessing, if (includeAndroidAudioConfiguration && initialAudioSessionOptions != null) 'androidAudioConfiguration': androidAudioSessionConfigurationToMap(initialAudioSessionOptions.android), + if (enableWARP) 'enableWARP': enableWARP, + if (zeroPlayoutDelay) 'zeroPlayoutDelay': zeroPlayoutDelay, }; diff --git a/macos/livekit_client.podspec b/macos/livekit_client.podspec index e96b9ca24..14e9eb0aa 100644 --- a/macos/livekit_client.podspec +++ b/macos/livekit_client.podspec @@ -16,6 +16,6 @@ Pod::Spec.new do |s| s.static_framework = true s.dependency 'FlutterMacOS' - s.dependency 'WebRTC-SDK', '144.7559.09' + s.dependency 'WebRTC-SDK', '150.7871.01' s.dependency 'flutter_webrtc' end diff --git a/pubspec.yaml b/pubspec.yaml index 82dc7e81b..60c63f646 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,7 +54,7 @@ dependencies: json_annotation: ^4.12.0 # Fix version to avoid version conflicts between WebRTC-SDK pods, which both this package and flutter_webrtc depend on. - flutter_webrtc: 1.6.0 + flutter_webrtc: 1.6.2 dart_webrtc: ^1.8.0 dev_dependencies: