Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ android/.settings/org.eclipse.buildship.core.prefs
# vs
*.pdb
ios/Frameworks
macos/Frameworks

# SPM
.build/
Expand Down
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,13 @@ This release introduces a fully isolated per-call PC factory model: each call no
* `WebRTC.initialize`: replaced `options['reinitialize']` with `bool refresh = false`. Re-initialization no longer disposes existing PeerConnections, tracks, or streams. It refreshes build defaults for the next factory.
* [iOS / macOS] Removed `FlutterWebRTCPlugin.peerConnectionFactory`. Use `factories[factoryId]`, `resolveFactoryForId()`, or `resolveFactoryForStreamId()`.
* [Android] `MethodCallHandlerImpl` no longer lazily creates a default `AudioProcessingController`. Register one via `FlutterWebRTCPlugin.sharedSingleton.setAudioProcessingFactoryProvider(...)` if you need an external APM.
* Temporarily removed FrameCryptor support across all platforms (Dart, C++, iOS, Android). The `frameCryptorFactory` getter now throws `UnimplementedError`. FrameCryptor will be re-added in a future release.

**New**

* `NativePeerConnectionFactory` — representing one native factory with an isolated ADM per call.
* Bumped WebRTC to M145 (`stream-video-swift-webrtc` 145.9.0).
* Added Swift Package Manager support for macOS.

**Audio lifecycle**

Expand All @@ -27,8 +30,8 @@ This release introduces a fully isolated per-call PC factory model: each call no

**Fixes**

* [Android] Fixed multi-call audio corruption caused by the shared `ExternalAudioProcessingFactory` leaking APM state across concurrent factories.
* [iOS] `setAppleAudioConfiguration` now uses the atomic `setCategory:mode:options:error:` API, preventing Bluetooth route drops during mid-transition category changes.
* Fixed multi-call audio corruption caused by the leaking APM state across concurrent factories.
* [iOS] `setAppleAudioConfiguration` now uses the atomic `setCategory` API, preventing Bluetooth route drops during mid-transition category changes.

[2.2.7] - 2026-04-27
* [iOS] Fixed missing result callback in video effects method.
Expand Down
6 changes: 3 additions & 3 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@ let package = Package(
.library(name: "stream-webrtc-flutter", targets: ["stream_webrtc_flutter"])
],
dependencies: [
.package(name: "FlutterFramework", path: "../FlutterFramework"),
.package(
url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "137.0.54"
url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "145.9.0"
)

],
targets: [
.target(
name: "stream_webrtc_flutter",
dependencies: [
.product(name: "FlutterFramework", package: "FlutterFramework"),
.product(name: "StreamWebRTC", package: "stream-video-swift-webrtc")
],
path: "ios/stream_webrtc_flutter/Sources/stream_webrtc_flutter",
Expand Down
4 changes: 3 additions & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ buildscript {
repositories {
google()
mavenCentral()
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}

dependencies {
Expand All @@ -19,6 +20,7 @@ rootProject.allprojects {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}
}

Expand Down Expand Up @@ -52,7 +54,7 @@ android {
}

dependencies {
implementation 'io.getstream:stream-video-webrtc-android:137.0.1'
implementation("io.getstream:stream-video-webrtc-android:145.9.0")
implementation 'com.github.davidliu:audioswitch:89582c47c9a04c62f90aa5e57251af4800a62c9a'
implementation 'androidx.annotation:annotation:1.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
Expand Down
18 changes: 0 additions & 18 deletions example/ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,6 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
F3FBAC538468FF33051E9409 /* [CP] Copy Pods Resources */,
0E2A4621236E319E6196FD19 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
Expand Down Expand Up @@ -289,23 +288,6 @@
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
0E2A4621236E319E6196FD19 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
2AF6F0BE0DE220B6C4838EC9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion example/macos/Podfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform :osx, '10.15'
platform :osx, '11.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
36 changes: 10 additions & 26 deletions example/macos/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,13 @@
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
6C71FB95414757DD39C78C06 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
811369FC2B504DB38C8FD91C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
B6C988E1EDA0500EDF915A78 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
E58FC4135E1382C65E2EEFF9 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
FE789675E9B5707AFCFA2C07 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -235,9 +235,6 @@
productType = "com.apple.product-type.bundle.unit-test";
};
33CC10EC2044A3C60003C045 /* Runner */ = {
packageProductDependencies = (
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */,
);
isa = PBXNativeTarget;
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
Expand All @@ -247,14 +244,16 @@
33CC10EB2044A3C60003C045 /* Resources */,
33CC110E2044A8840003C045 /* Bundle Framework */,
3399D490228B24CF009A79C7 /* ShellScript */,
DFEA526B9A053BB11393E2F2 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
33CC11202044C79F0003C045 /* PBXTargetDependency */,
);
name = Runner;
packageProductDependencies = (
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */,
);
productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* flutter_webrtc_example.app */;
productType = "com.apple.product-type.application";
Expand All @@ -263,9 +262,6 @@

/* Begin PBXProject section */
33CC10E52044A3C60003C045 /* Project object */ = {
packageReferences = (
781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */,
);
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0920;
Expand Down Expand Up @@ -301,6 +297,9 @@
Base,
);
mainGroup = 33CC10E42044A3C60003C045;
packageReferences = (
781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */,
);
productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
projectDirPath = "";
projectRoot = "";
Expand Down Expand Up @@ -414,23 +413,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
DFEA526B9A053BB11393E2F2 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
Expand Down Expand Up @@ -799,12 +781,14 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */

/* Begin XCLocalSwiftPackageReference section */
781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = {
781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = {
isa = XCLocalSwiftPackageReference;
relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage;
};
/* End XCLocalSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = {
isa = XCSwiftPackageProductDependency;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ios/stream_webrtc_flutter.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ A new flutter plugin project.
s.vendored_frameworks = 'Frameworks/StreamWebRTC.xcframework'
s.prepare_command = <<-CMD
mkdir -p Frameworks/
curl -sL "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/137.0.54/StreamWebRTC.xcframework.zip" -o Frameworks/StreamWebRTC.zip
curl -sL "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/145.9.0/StreamWebRTC.xcframework.zip" -o Frameworks/StreamWebRTC.zip
unzip -o Frameworks/StreamWebRTC.zip -d Frameworks/
rm Frameworks/StreamWebRTC.zip
CMD
Expand Down
6 changes: 3 additions & 3 deletions ios/stream_webrtc_flutter/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions ios/stream_webrtc_flutter/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@ let package = Package(
.library(name: "stream-webrtc-flutter", targets: ["stream_webrtc_flutter"])
],
dependencies: [
.package(name: "FlutterFramework", path: "../FlutterFramework"),
.package(
url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "137.0.54"
url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "145.9.0"
)

],
targets: [
.target(
name: "stream_webrtc_flutter",
dependencies: [
.product(name: "FlutterFramework", package: "FlutterFramework"),
.product(name: "StreamWebRTC", package: "stream-video-swift-webrtc")
],
resources: []
Expand Down
4 changes: 2 additions & 2 deletions lib/stream_webrtc_flutter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ export 'src/native/ios/audio_management.dart';
export 'src/native/rtc_video_platform_view_controller.dart';
export 'src/native/rtc_video_platform_view.dart';

const String androidWebRTCVersion = '137.0.1';
const String iosWebRTCVersion = '137.0.54';
const String androidWebRTCVersion = '145.9.0';
const String iosWebRTCVersion = '145.9.0';
1 change: 0 additions & 1 deletion macos/Classes/AudioManager.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/AudioManager.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/AudioProcessingAdapter.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/AudioProcessingAdapter.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/AudioUtils.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/AudioUtils.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/CameraUtils.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/CameraUtils.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterDataPacketCryptor.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterDataPacketCryptor.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRPScreenRecorder.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRPScreenRecorder.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRTCDataChannel.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRTCDataChannel.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRTCDesktopCapturer.h

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRTCDesktopCapturer.m

This file was deleted.

1 change: 0 additions & 1 deletion macos/Classes/FlutterRTCFrameCapturer.h

This file was deleted.

Loading
Loading