From 436b6d8efbfa0bffc1d9193dbb3ffb0c1be4d718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Brzezi=C5=84ski?= Date: Mon, 30 Oct 2023 17:04:18 +0100 Subject: [PATCH] gstwebrtc-api: Patch webrtc-adapter to fix Safari behaviour There's currently a Safari-side bug causing webrtc-adapter to be unable to correctly shim the empty-candidate scenario which we're using. This patch is very much a workaround and should be removed as soon as Safari and/or webrtc-adapter fixes this on their side. https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/439 https://github.com/webrtcHacks/adapter/issues/1140 Part-of: --- net/webrtc/gstwebrtc-api/package.json | 4 +++- .../patches/webrtc-adapter+8.2.3.patch | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 net/webrtc/gstwebrtc-api/patches/webrtc-adapter+8.2.3.patch diff --git a/net/webrtc/gstwebrtc-api/package.json b/net/webrtc/gstwebrtc-api/package.json index 188e3330..924cf8ad 100644 --- a/net/webrtc/gstwebrtc-api/package.json +++ b/net/webrtc/gstwebrtc-api/package.json @@ -49,6 +49,7 @@ "webpack-dev-server": "4.15.1" }, "dependencies": { + "patch-package": "8.0.0", "webrtc-adapter": "8.2.3" }, "scripts": { @@ -59,6 +60,7 @@ "make": "npm run check && npm run build && npm run docs", "test": "mocha --node-env=test --exit", "prepack": "npm run test && npm run make", - "start": "webpack serve" + "start": "webpack serve", + "postinstall": "patch-package" } } diff --git a/net/webrtc/gstwebrtc-api/patches/webrtc-adapter+8.2.3.patch b/net/webrtc/gstwebrtc-api/patches/webrtc-adapter+8.2.3.patch new file mode 100644 index 00000000..ee49be3d --- /dev/null +++ b/net/webrtc/gstwebrtc-api/patches/webrtc-adapter+8.2.3.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/webrtc-adapter/src/js/common_shim.js b/node_modules/webrtc-adapter/src/js/common_shim.js +index 96d7c8e..063ea64 100644 +--- a/node_modules/webrtc-adapter/src/js/common_shim.js ++++ b/node_modules/webrtc-adapter/src/js/common_shim.js +@@ -388,7 +388,7 @@ export function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + } + const nativeAddIceCandidate = + window.RTCPeerConnection.prototype.addIceCandidate; +- if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { ++ if (!nativeAddIceCandidate) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate =