Broadcast extension for AppRTCMobile on iOS
This provides an environment for testing out using WebRTC from an iOS
extension. It implements a ReplayKit broadcast extension for live
streaming games and screensharing.
The extension is only supported on iOS 11+ and is guarded by a build
flag.
Bug: webrtc:9335
Change-Id: Id218d6c73ef7599f5953c5a1e0e62e5d0dc4f10b
Reviewed-on: https://webrtc-review.googlesource.com/80000
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23504}
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 3d9e4ee..35124db 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -48,6 +48,12 @@
]
}
+ config("used_from_extension") {
+ if (is_ios && rtc_apprtcmobile_broadcast_extension) {
+ cflags = [ "-fapplication-extension" ]
+ }
+ }
+
rtc_static_library("common_objc") {
sources = [
"objc/Framework/Classes/Common/NSString+StdString.h",
@@ -71,7 +77,10 @@
"../rtc_base:checks",
"../rtc_base:rtc_base",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
public_configs = [ ":common_config_objc" ]
@@ -176,7 +185,10 @@
"objc/Framework/Headers/WebRTC/RTCAudioSession.h",
"objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
public_configs = [ ":common_config_objc" ]
@@ -218,7 +230,10 @@
"//third_party/libyuv",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin
# (bugs.webrtc.org/163).
@@ -244,7 +259,10 @@
"//rtc_base:rtc_base_approved",
"//third_party/libyuv",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
}
rtc_static_library("video_objc") {
@@ -294,7 +312,10 @@
"../rtc_base:rtc_base",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin
# (bugs.webrtc.org/163).
@@ -629,7 +650,10 @@
"objc/Framework/Headers/WebRTC/RTCMediaSource.h",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
public_configs = [ ":common_config_objc" ]
deps = [
@@ -734,7 +758,10 @@
"objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
public_configs = [ ":common_config_objc" ]
if (!build_with_chromium && is_clang) {
@@ -1056,7 +1083,10 @@
"GLKit.framework",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
public_configs = [ ":common_config_objc" ]
@@ -1218,7 +1248,14 @@
"objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm",
]
- configs += [ "..:common_objc" ]
+ configs += [
+ "..:common_objc",
+ ":used_from_extension",
+ ]
+
+ if (is_ios && rtc_apprtcmobile_broadcast_extension) {
+ defines = [ "RTC_APPRTCMOBILE_BROADCAST_EXTENSION" ]
+ }
deps = [
":common_objc",