From 80b7e7c5661205bd66ceeab53a3555272441dc9e Mon Sep 17 00:00:00 2001 From: Duan Weiwei Date: Sat, 9 Jul 2022 05:32:51 +0000 Subject: [PATCH] fix: Add WebRTCDelegate.cloneStream to adapt to platform differences. --- lib/src/voip/call.dart | 11 ++++++----- lib/src/voip/voip.dart | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/src/voip/call.dart b/lib/src/voip/call.dart index cba98f92..4ed8765d 100644 --- a/lib/src/voip/call.dart +++ b/lib/src/voip/call.dart @@ -473,9 +473,9 @@ class CallSession { waitForLocalAVStream = false; - callFeeds.forEach((element) { - // Safari can't send a MediaStream to multiple sources, so clone it - addLocalStream(element.stream!.clone(), element.purpose); + callFeeds.forEach((element) async { + addLocalStream( + await voip.delegate.cloneStream(element.stream!), element.purpose); }); answer(); @@ -504,8 +504,9 @@ class CallSession { return; } - callFeeds.forEach((element) { - addLocalStream(element.stream!.clone(), element.purpose); + callFeeds.forEach((element) async { + addLocalStream( + await voip.delegate.cloneStream(element.stream!), element.purpose); }); if (requestScreenshareFeed) { diff --git a/lib/src/voip/voip.dart b/lib/src/voip/voip.dart index 5dcb25fb..fc836e23 100644 --- a/lib/src/voip/voip.dart +++ b/lib/src/voip/voip.dart @@ -13,6 +13,7 @@ abstract class WebRTCDelegate { Map configuration, [Map constraints = const {}]); VideoRenderer createRenderer(); + Future cloneStream(MediaStream stream); void playRingtone(); void stopRingtone(); void handleNewCall(CallSession session);