@szdziedzic/sim-on 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +51 -0
  2. package/bin/sim-on.js +5 -0
  3. package/dist/simon.mjs +307 -0
  4. package/package.json +38 -0
  5. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/LiveKitWebRTC.h +113 -0
  6. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioBuffer.h +38 -0
  7. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioCustomProcessingDelegate.h +52 -0
  8. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioDeviceModule.h +287 -0
  9. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioProcessingConfig.h +37 -0
  10. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioProcessingModule.h +31 -0
  11. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioProcessingState.h +137 -0
  12. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioRenderer.h +35 -0
  13. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioSource.h +32 -0
  14. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCAudioTrack.h +150 -0
  15. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCVPixelBuffer.h +52 -0
  16. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCallbackLogger.h +41 -0
  17. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCameraVideoCapturer.h +71 -0
  18. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCertificate.h +47 -0
  19. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCodecSpecificInfo.h +24 -0
  20. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCodecSpecificInfoH264.h +27 -0
  21. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCConfiguration.h +278 -0
  22. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCCryptoOptions.h +66 -0
  23. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDataChannel.h +134 -0
  24. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDataChannelConfiguration.h +52 -0
  25. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDataPacketCryptor.h +52 -0
  26. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDefaultAudioProcessingModule.h +47 -0
  27. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDefaultVideoDecoderFactory.h +26 -0
  28. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDefaultVideoEncoderFactory.h +31 -0
  29. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDesktopCapturer.h +60 -0
  30. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDesktopMediaList.h +51 -0
  31. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDesktopSource.h +40 -0
  32. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDispatcher.h +46 -0
  33. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCDtmfSender.h +73 -0
  34. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCEncodedImage.h +52 -0
  35. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCFieldTrials.h +34 -0
  36. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCFileLogger.h +75 -0
  37. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCFileVideoCapturer.h +51 -0
  38. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCFrameCryptor.h +77 -0
  39. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCFrameCryptorKeyProvider.h +76 -0
  40. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCH264ProfileLevelId.h +60 -0
  41. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCI420Buffer.h +22 -0
  42. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCIODevice.h +41 -0
  43. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCIceCandidate.h +50 -0
  44. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCIceCandidateErrorEvent.h +45 -0
  45. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCIceServer.h +114 -0
  46. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCLegacyStatsReport.h +37 -0
  47. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCLogging.h +66 -0
  48. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMTLNSVideoView.h +22 -0
  49. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMTLVideoView.h +63 -0
  50. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMacros.h +69 -0
  51. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMediaConstraints.h +47 -0
  52. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMediaSource.h +34 -0
  53. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMediaStream.h +50 -0
  54. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMediaStreamTrack.h +50 -0
  55. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMetrics.h +24 -0
  56. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMetricsSampleInfo.h +48 -0
  57. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMutableI420Buffer.h +24 -0
  58. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCMutableYUVPlanarBuffer.h +28 -0
  59. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCNativeI420Buffer.h +23 -0
  60. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCNativeMutableI420Buffer.h +24 -0
  61. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCPeerConnection.h +416 -0
  62. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCPeerConnectionFactory.h +159 -0
  63. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCPeerConnectionFactoryOptions.h +38 -0
  64. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtcpParameters.h +30 -0
  65. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpCapabilities.h +31 -0
  66. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpCodecCapability.h +58 -0
  67. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpCodecParameters.h +74 -0
  68. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpEncodingParameters.h +81 -0
  69. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpHeaderExtension.h +33 -0
  70. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpHeaderExtensionCapability.h +39 -0
  71. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpParameters.h +63 -0
  72. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpReceiver.h +105 -0
  73. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpSender.h +55 -0
  74. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpSource.h +66 -0
  75. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCRtpTransceiver.h +180 -0
  76. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCSSLAdapter.h +20 -0
  77. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCSSLCertificateVerifier.h +25 -0
  78. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCSessionDescription.h +48 -0
  79. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCStatisticsReport.h +58 -0
  80. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCTracing.h +21 -0
  81. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoCapturer.h +37 -0
  82. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoCodecInfo.h +43 -0
  83. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoder.h +41 -0
  84. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoderAV1.h +25 -0
  85. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoderFactory.h +33 -0
  86. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoderFactoryH264.h +18 -0
  87. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoderH264.h +18 -0
  88. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoderVP8.h +25 -0
  89. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoDecoderVP9.h +27 -0
  90. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoder.h +62 -0
  91. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderAV1.h +34 -0
  92. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderFactory.h +78 -0
  93. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderFactoryH264.h +18 -0
  94. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderFactorySimulcast.h +16 -0
  95. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderH264.h +22 -0
  96. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderQpThresholds.h +29 -0
  97. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderSettings.h +42 -0
  98. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderSimulcast.h +13 -0
  99. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderVP8.h +30 -0
  100. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoEncoderVP9.h +34 -0
  101. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoFrame.h +86 -0
  102. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoFrameBuffer.h +40 -0
  103. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoRenderer.h +44 -0
  104. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoSource.h +37 -0
  105. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoTrack.h +41 -0
  106. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCVideoViewShading.h +39 -0
  107. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCYUVHelper.h +118 -0
  108. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Headers/RTCYUVPlanarBuffer.h +46 -0
  109. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/LiveKitWebRTC +0 -0
  110. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Modules/module.modulemap +6 -0
  111. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Resources/Info.plist +36 -0
  112. package/vendor/helper/LiveKitWebRTC.framework/Versions/A/Versions/A/Resources/PrivacyInfo.xcprivacy +32 -0
  113. package/vendor/helper/simon-helper +0 -0
  114. package/vendor/web/app.js +54 -0
  115. package/vendor/web/index.html +15 -0
  116. package/vendor/web/styles.css +435 -0
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@szdziedzic/sim-on",
3
+ "version": "0.1.0",
4
+ "description": "Agentic mobile testing CLI + simulator-in-the-browser. Explore with an LLM once, replay as deterministic Maestro-compatible flows forever. By Expo.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/expo/sim-on"
9
+ },
10
+ "type": "module",
11
+ "bin": {
12
+ "sim-on": "bin/sim-on.js",
13
+ "simon": "bin/sim-on.js"
14
+ },
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
18
+ "os": [
19
+ "darwin"
20
+ ],
21
+ "cpu": [
22
+ "arm64"
23
+ ],
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "keywords": [
28
+ "expo",
29
+ "ios",
30
+ "simulator",
31
+ "testing",
32
+ "e2e",
33
+ "maestro",
34
+ "agent",
35
+ "mcp",
36
+ "webrtc"
37
+ ]
38
+ }
@@ -0,0 +1,113 @@
1
+ /*
2
+ * Copyright 2026 The WebRTC project authors. All Rights Reserved.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license
5
+ * that can be found in the LICENSE file in the root of the source
6
+ * tree. An additional intellectual property rights grant can be found
7
+ * in the file PATENTS. All contributing project authors may
8
+ * be found in the AUTHORS file in the root of the source tree.
9
+ */
10
+
11
+ #import <LiveKitWebRTC/RTCAudioDeviceModule.h>
12
+ #import <LiveKitWebRTC/RTCIODevice.h>
13
+ #import <LiveKitWebRTC/RTCAudioSource.h>
14
+ #import <LiveKitWebRTC/RTCAudioTrack.h>
15
+ #import <LiveKitWebRTC/RTCAudioProcessingState.h>
16
+ #import <LiveKitWebRTC/RTCCertificate.h>
17
+ #import <LiveKitWebRTC/RTCConfiguration.h>
18
+ #import <LiveKitWebRTC/RTCCryptoOptions.h>
19
+ #import <LiveKitWebRTC/RTCDataChannel.h>
20
+ #import <LiveKitWebRTC/RTCDataChannelConfiguration.h>
21
+ #import <LiveKitWebRTC/RTCDataPacketCryptor.h>
22
+ #import <LiveKitWebRTC/RTCDtmfSender.h>
23
+ #import <LiveKitWebRTC/RTCFrameCryptor.h>
24
+ #import <LiveKitWebRTC/RTCFrameCryptorKeyProvider.h>
25
+ #import <LiveKitWebRTC/RTCFieldTrials.h>
26
+ #import <LiveKitWebRTC/RTCIceCandidate.h>
27
+ #import <LiveKitWebRTC/RTCIceCandidateErrorEvent.h>
28
+ #import <LiveKitWebRTC/RTCIceServer.h>
29
+ #import <LiveKitWebRTC/RTCLegacyStatsReport.h>
30
+ #import <LiveKitWebRTC/RTCMediaConstraints.h>
31
+ #import <LiveKitWebRTC/RTCMediaSource.h>
32
+ #import <LiveKitWebRTC/RTCMediaStream.h>
33
+ #import <LiveKitWebRTC/RTCMediaStreamTrack.h>
34
+ #import <LiveKitWebRTC/RTCMetrics.h>
35
+ #import <LiveKitWebRTC/RTCMetricsSampleInfo.h>
36
+ #import <LiveKitWebRTC/RTCPeerConnection.h>
37
+ #import <LiveKitWebRTC/RTCPeerConnectionFactory.h>
38
+ #import <LiveKitWebRTC/RTCPeerConnectionFactoryOptions.h>
39
+ #import <LiveKitWebRTC/RTCRtcpParameters.h>
40
+ #import <LiveKitWebRTC/RTCRtpCapabilities.h>
41
+ #import <LiveKitWebRTC/RTCRtpCodecCapability.h>
42
+ #import <LiveKitWebRTC/RTCRtpCodecParameters.h>
43
+ #import <LiveKitWebRTC/RTCRtpEncodingParameters.h>
44
+ #import <LiveKitWebRTC/RTCRtpHeaderExtension.h>
45
+ #import <LiveKitWebRTC/RTCRtpHeaderExtensionCapability.h>
46
+ #import <LiveKitWebRTC/RTCRtpParameters.h>
47
+ #import <LiveKitWebRTC/RTCRtpReceiver.h>
48
+ #import <LiveKitWebRTC/RTCRtpSender.h>
49
+ #import <LiveKitWebRTC/RTCRtpSource.h>
50
+ #import <LiveKitWebRTC/RTCRtpTransceiver.h>
51
+ #import <LiveKitWebRTC/RTCSSLAdapter.h>
52
+ #import <LiveKitWebRTC/RTCSessionDescription.h>
53
+ #import <LiveKitWebRTC/RTCStatisticsReport.h>
54
+ #import <LiveKitWebRTC/RTCTracing.h>
55
+ #import <LiveKitWebRTC/RTCVideoSource.h>
56
+ #import <LiveKitWebRTC/RTCVideoTrack.h>
57
+ #import <LiveKitWebRTC/RTCVideoDecoderAV1.h>
58
+ #import <LiveKitWebRTC/RTCVideoDecoderVP8.h>
59
+ #import <LiveKitWebRTC/RTCVideoDecoderVP9.h>
60
+ #import <LiveKitWebRTC/RTCVideoEncoderAV1.h>
61
+ #import <LiveKitWebRTC/RTCVideoEncoderVP8.h>
62
+ #import <LiveKitWebRTC/RTCVideoEncoderVP9.h>
63
+ #import <LiveKitWebRTC/RTCNativeI420Buffer.h>
64
+ #import <LiveKitWebRTC/RTCNativeMutableI420Buffer.h>
65
+ #import <LiveKitWebRTC/RTCCodecSpecificInfo.h>
66
+ #import <LiveKitWebRTC/RTCEncodedImage.h>
67
+ #import <LiveKitWebRTC/RTCI420Buffer.h>
68
+ #import <LiveKitWebRTC/RTCLogging.h>
69
+ #import <LiveKitWebRTC/RTCMacros.h>
70
+ #import <LiveKitWebRTC/RTCMutableI420Buffer.h>
71
+ #import <LiveKitWebRTC/RTCMutableYUVPlanarBuffer.h>
72
+ #import <LiveKitWebRTC/RTCSSLCertificateVerifier.h>
73
+ #import <LiveKitWebRTC/RTCVideoCapturer.h>
74
+ #import <LiveKitWebRTC/RTCVideoCodecInfo.h>
75
+ #import <LiveKitWebRTC/RTCVideoDecoder.h>
76
+ #import <LiveKitWebRTC/RTCVideoDecoderFactory.h>
77
+ #import <LiveKitWebRTC/RTCVideoEncoder.h>
78
+ #import <LiveKitWebRTC/RTCVideoEncoderFactory.h>
79
+ #import <LiveKitWebRTC/RTCVideoEncoderQpThresholds.h>
80
+ #import <LiveKitWebRTC/RTCVideoEncoderSettings.h>
81
+ #import <LiveKitWebRTC/RTCVideoFrame.h>
82
+ #import <LiveKitWebRTC/RTCVideoFrameBuffer.h>
83
+ #import <LiveKitWebRTC/RTCVideoRenderer.h>
84
+ #import <LiveKitWebRTC/RTCAudioRenderer.h>
85
+ #import <LiveKitWebRTC/RTCYUVPlanarBuffer.h>
86
+ #import <LiveKitWebRTC/RTCCameraVideoCapturer.h>
87
+ #import <LiveKitWebRTC/RTCFileVideoCapturer.h>
88
+ #import <LiveKitWebRTC/RTCDesktopCapturer.h>
89
+ #import <LiveKitWebRTC/RTCDesktopSource.h>
90
+ #import <LiveKitWebRTC/RTCDesktopMediaList.h>
91
+ #import <LiveKitWebRTC/RTCMTLVideoView.h>
92
+ #import <LiveKitWebRTC/RTCMTLNSVideoView.h>
93
+ #import <LiveKitWebRTC/RTCVideoViewShading.h>
94
+ #import <LiveKitWebRTC/RTCCodecSpecificInfoH264.h>
95
+ #import <LiveKitWebRTC/RTCDefaultVideoDecoderFactory.h>
96
+ #import <LiveKitWebRTC/RTCDefaultVideoEncoderFactory.h>
97
+ #import <LiveKitWebRTC/RTCH264ProfileLevelId.h>
98
+ #import <LiveKitWebRTC/RTCVideoDecoderFactoryH264.h>
99
+ #import <LiveKitWebRTC/RTCVideoDecoderH264.h>
100
+ #import <LiveKitWebRTC/RTCVideoEncoderFactoryH264.h>
101
+ #import <LiveKitWebRTC/RTCVideoEncoderH264.h>
102
+ #import <LiveKitWebRTC/RTCCVPixelBuffer.h>
103
+ #import <LiveKitWebRTC/RTCDispatcher.h>
104
+ #import <LiveKitWebRTC/RTCYUVHelper.h>
105
+ #import <LiveKitWebRTC/RTCVideoEncoderFactorySimulcast.h>
106
+ #import <LiveKitWebRTC/RTCVideoEncoderSimulcast.h>
107
+ #import <LiveKitWebRTC/RTCAudioBuffer.h>
108
+ #import <LiveKitWebRTC/RTCAudioProcessingModule.h>
109
+ #import <LiveKitWebRTC/RTCDefaultAudioProcessingModule.h>
110
+ #import <LiveKitWebRTC/RTCAudioCustomProcessingDelegate.h>
111
+ #import <LiveKitWebRTC/RTCAudioProcessingConfig.h>
112
+ #import <LiveKitWebRTC/RTCCallbackLogger.h>
113
+ #import <LiveKitWebRTC/RTCFileLogger.h>
@@ -0,0 +1,38 @@
1
+ /*
2
+ * Copyright 2023 LiveKit
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #import <Foundation/Foundation.h>
18
+
19
+ #import <LiveKitWebRTC/RTCMacros.h>
20
+
21
+ NS_ASSUME_NONNULL_BEGIN
22
+
23
+ RTC_OBJC_EXPORT
24
+ @interface RTC_OBJC_TYPE (RTCAudioBuffer) : NSObject
25
+
26
+ @property(nonatomic, readonly) size_t channels;
27
+ @property(nonatomic, readonly) size_t frames;
28
+ @property(nonatomic, readonly) size_t framesPerBand;
29
+ @property(nonatomic, readonly) size_t bands;
30
+
31
+ // Returns pointer arrays. Index range from 0 to `frames`.
32
+ - (float* _Nonnull)rawBufferForChannel:(size_t)channel;
33
+
34
+ // TODO: More convenience methods...
35
+
36
+ @end
37
+
38
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Copyright 2023 LiveKit
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #import <Foundation/Foundation.h>
18
+
19
+ #import <LiveKitWebRTC/RTCMacros.h>
20
+
21
+ NS_ASSUME_NONNULL_BEGIN
22
+
23
+ @class RTC_OBJC_TYPE(RTCAudioBuffer);
24
+
25
+ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCAudioCustomProcessingDelegate)<NSObject>
26
+
27
+ /**
28
+ * (Re-)initialize the audio processor.
29
+ * This method can be invoked multiple times.
30
+ */
31
+ - (void)audioProcessingInitializeWithSampleRate : (size_t)sampleRateHz channels
32
+ : (size_t)channels NS_SWIFT_NAME(audioProcessingInitialize(sampleRate:channels:));
33
+
34
+ /**
35
+ * Process (read or write) the audio buffer.
36
+ * RTCAudioBuffer is a simple wrapper for webrtc::AudioBuffer and the valid scope is only inside
37
+ * this method. Do not retain it.
38
+ */
39
+ - (void)audioProcessingProcess:(RTC_OBJC_TYPE(RTCAudioBuffer) *)audioBuffer
40
+ NS_SWIFT_NAME(audioProcessingProcess(audioBuffer:));
41
+
42
+ // TOOD:
43
+ // virtual void SetRuntimeSetting(AudioProcessing::RuntimeSetting setting);
44
+
45
+ /**
46
+ * Suggests releasing resources allocated by the audio processor.
47
+ */
48
+ - (void)audioProcessingRelease;
49
+
50
+ @end
51
+
52
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,287 @@
1
+ /*
2
+ * Copyright 2022 LiveKit
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #import <AVFAudio/AVFAudio.h>
18
+ #import <CoreMedia/CoreMedia.h>
19
+ #import <Foundation/Foundation.h>
20
+
21
+ #import <LiveKitWebRTC/RTCIODevice.h>
22
+ #import <LiveKitWebRTC/RTCMacros.h>
23
+
24
+ NS_ASSUME_NONNULL_BEGIN
25
+
26
+ typedef NS_ENUM(NSInteger, RTC_OBJC_TYPE(RTCAudioDeviceModuleType)) {
27
+ RTC_OBJC_TYPE(RTCAudioDeviceModuleTypePlatformDefault),
28
+ RTC_OBJC_TYPE(RTCAudioDeviceModuleTypeAudioEngine),
29
+ };
30
+
31
+ typedef NS_ENUM(NSInteger, RTC_OBJC_TYPE(RTCSpeechActivityEvent)) {
32
+ RTC_OBJC_TYPE(RTCSpeechActivityEventStarted),
33
+ RTC_OBJC_TYPE(RTCSpeechActivityEventEnded),
34
+ };
35
+
36
+ typedef NS_ENUM(NSInteger, RTC_OBJC_TYPE(RTCAudioEngineMuteMode)) {
37
+ RTC_OBJC_TYPE(RTCAudioEngineMuteModeUnknown) = -1,
38
+ RTC_OBJC_TYPE(RTCAudioEngineMuteModeVoiceProcessing) = 0,
39
+ RTC_OBJC_TYPE(RTCAudioEngineMuteModeRestartEngine) = 1,
40
+ RTC_OBJC_TYPE(RTCAudioEngineMuteModeInputMixer) = 2,
41
+ };
42
+
43
+ // Ducking level for voice processing.
44
+ // Maps to AVAudioVoiceProcessingOtherAudioDuckingLevel (iOS 17.0+, macOS 14.0+).
45
+ typedef NS_ENUM(NSInteger, RTC_OBJC_TYPE(RTCAudioDuckingLevel)) {
46
+ RTC_OBJC_TYPE(RTCAudioDuckingLevelDefault) = 0,
47
+ RTC_OBJC_TYPE(RTCAudioDuckingLevelMin) = 1,
48
+ RTC_OBJC_TYPE(RTCAudioDuckingLevelMid) = 2,
49
+ RTC_OBJC_TYPE(RTCAudioDuckingLevelMax) = 3,
50
+ };
51
+
52
+ typedef struct {
53
+ BOOL outputEnabled;
54
+ BOOL outputRunning;
55
+ BOOL inputEnabled;
56
+ BOOL inputRunning;
57
+ BOOL inputMuted;
58
+ RTC_OBJC_TYPE(RTCAudioEngineMuteMode) muteMode;
59
+ } RTC_OBJC_TYPE(RTCAudioEngineState);
60
+
61
+ typedef struct {
62
+ BOOL isInputAvailable;
63
+ BOOL isOutputAvailable;
64
+ } RTC_OBJC_TYPE(RTCAudioEngineAvailability);
65
+
66
+ // Values must match webrtc::AudioDeviceModule::PlatformAudioProcessingTopology.
67
+ typedef NS_ENUM(NSInteger, RTC_OBJC_TYPE(RTCPlatformAudioProcessingTopology)) {
68
+ RTC_OBJC_TYPE(RTCPlatformAudioProcessingTopologyIndependent) = 0,
69
+ RTC_OBJC_TYPE(RTCPlatformAudioProcessingTopologyEchoCancellationAndNoiseSuppressionCoupled) = 1,
70
+ };
71
+
72
+ /** Diagnostic state of one platform (device built-in) processing effect.
73
+ * Requested/active read NO when the ADM or OS path cannot report the value.
74
+ */
75
+ RTC_OBJC_EXPORT
76
+ @interface RTC_OBJC_TYPE (RTCPlatformAudioProcessingComponentState) : NSObject
77
+
78
+ /** Whether the device offers this effect at all. */
79
+ @property(nonatomic, readonly, getter=isAvailable) BOOL available;
80
+ /** The last state requested from the ADM. */
81
+ @property(nonatomic, readonly, getter=isRequested) BOOL requested;
82
+ /** Live OS readback when the ADM can query the effect. */
83
+ @property(nonatomic, readonly, getter=isActive) BOOL active;
84
+
85
+ - (instancetype)init NS_UNAVAILABLE;
86
+
87
+ @end
88
+
89
+ /** Device-level snapshot of platform audio processing.
90
+ *
91
+ * On Apple AudioEngine, AEC and NS are coupled through Voice Processing I/O,
92
+ * so one shared platform path can affect both components (see `topology`).
93
+ *
94
+ * The voiceProcessing* properties reflect the Apple Voice Processing I/O
95
+ * unit. Requested values are the state stored by the ADM and can be known
96
+ * before input is configured: enabled maps to AVAudioInputNode
97
+ * setVoiceProcessingEnabled (turning it off removes the VPIO graph
98
+ * entirely); bypassed maps to voiceProcessingBypassed while VPIO is enabled
99
+ * (disables Apple's coupled AEC/NS path without rebuilding the engine); AGC
100
+ * has a separate switch that only has an effect while VPIO is active.
101
+ * Active values are live readback from the platform input node; they read NO
102
+ * before input is configured, after the input path is torn down, or where
103
+ * the value is not observable, and can temporarily differ from requested
104
+ * while the engine applies a transition or if the OS rejects a request.
105
+ */
106
+ RTC_OBJC_EXPORT
107
+ @interface RTC_OBJC_TYPE (RTCPlatformAudioProcessingState) : NSObject
108
+
109
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCPlatformAudioProcessingTopology) topology;
110
+
111
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCPlatformAudioProcessingComponentState) *echoCancellation;
112
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCPlatformAudioProcessingComponentState) *noiseSuppression;
113
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCPlatformAudioProcessingComponentState) *autoGainControl;
114
+
115
+ @property(nonatomic, readonly, getter=isVoiceProcessingEnabledRequested) BOOL voiceProcessingEnabledRequested;
116
+ @property(nonatomic, readonly, getter=isVoiceProcessingBypassedRequested) BOOL voiceProcessingBypassedRequested;
117
+ @property(nonatomic, readonly, getter=isVoiceProcessingAGCEnabledRequested) BOOL voiceProcessingAGCEnabledRequested;
118
+ @property(nonatomic, readonly, getter=isVoiceProcessingEnabledActive) BOOL voiceProcessingEnabledActive;
119
+ @property(nonatomic, readonly, getter=isVoiceProcessingBypassedActive) BOOL voiceProcessingBypassedActive;
120
+ @property(nonatomic, readonly, getter=isVoiceProcessingAGCEnabledActive) BOOL voiceProcessingAGCEnabledActive;
121
+
122
+ - (instancetype)init NS_UNAVAILABLE;
123
+
124
+ @end
125
+
126
+ RTC_EXTERN NSString *const RTC_CONSTANT_TYPE(RTCAudioEngineInputMixerNodeKey);
127
+
128
+ @class RTC_OBJC_TYPE(RTCAudioDeviceModule);
129
+ @class RTC_OBJC_TYPE(RTCAudioProcessingOptions);
130
+
131
+ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE
132
+ (RTCAudioDeviceModuleDelegate)<NSObject>
133
+
134
+ - (void)audioDeviceModule
135
+ : (RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule didReceiveSpeechActivityEvent
136
+ : (RTC_OBJC_TYPE(RTCSpeechActivityEvent))speechActivityEvent NS_SWIFT_NAME(audioDeviceModule(_:didReceiveSpeechActivityEvent:));
137
+
138
+ // Engine events
139
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
140
+ didCreateEngine:(AVAudioEngine *)engine
141
+ NS_SWIFT_NAME(audioDeviceModule(_:didCreateEngine:));
142
+
143
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
144
+ willEnableEngine:(AVAudioEngine *)engine
145
+ isPlayoutEnabled:(BOOL)isPlayoutEnabled
146
+ isRecordingEnabled:(BOOL)isRecordingEnabled
147
+ NS_SWIFT_NAME(audioDeviceModule(_:willEnableEngine:isPlayoutEnabled:isRecordingEnabled:));
148
+
149
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
150
+ willStartEngine:(AVAudioEngine *)engine
151
+ isPlayoutEnabled:(BOOL)isPlayoutEnabled
152
+ isRecordingEnabled:(BOOL)isRecordingEnabled
153
+ NS_SWIFT_NAME(audioDeviceModule(_:willStartEngine:isPlayoutEnabled:isRecordingEnabled:));
154
+
155
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
156
+ didStopEngine:(AVAudioEngine *)engine
157
+ isPlayoutEnabled:(BOOL)isPlayoutEnabled
158
+ isRecordingEnabled:(BOOL)isRecordingEnabled
159
+ NS_SWIFT_NAME(audioDeviceModule(_:didStopEngine:isPlayoutEnabled:isRecordingEnabled:));
160
+
161
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
162
+ didDisableEngine:(AVAudioEngine *)engine
163
+ isPlayoutEnabled:(BOOL)isPlayoutEnabled
164
+ isRecordingEnabled:(BOOL)isRecordingEnabled
165
+ NS_SWIFT_NAME(audioDeviceModule(_:didDisableEngine:isPlayoutEnabled:isRecordingEnabled:));
166
+
167
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
168
+ willReleaseEngine:(AVAudioEngine *)engine
169
+ NS_SWIFT_NAME(audioDeviceModule(_:willReleaseEngine:));
170
+
171
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
172
+ engine:(AVAudioEngine *)engine
173
+ configureInputFromSource:(nullable AVAudioNode *)source
174
+ toDestination:(AVAudioNode *)destination
175
+ withFormat:(AVAudioFormat *)format
176
+ context:(NSDictionary *)context
177
+ NS_SWIFT_NAME(audioDeviceModule(_:engine:configureInputFromSource:toDestination:format:context:));
178
+
179
+ - (NSInteger)audioDeviceModule:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
180
+ engine:(AVAudioEngine *)engine
181
+ configureOutputFromSource:(AVAudioNode *)source
182
+ toDestination:(nullable AVAudioNode *)destination
183
+ withFormat:(AVAudioFormat *)format
184
+ context:(NSDictionary *)context
185
+ NS_SWIFT_NAME(audioDeviceModule(_:engine:configureOutputFromSource:toDestination:format:context:));
186
+
187
+ - (void)audioDeviceModuleDidUpdateDevices:(RTC_OBJC_TYPE(RTCAudioDeviceModule) *)audioDeviceModule
188
+ NS_SWIFT_NAME(audioDeviceModuleDidUpdateDevices(_:));
189
+
190
+ @end
191
+
192
+ RTC_OBJC_EXPORT
193
+ @interface RTC_OBJC_TYPE(RTCAudioDeviceModule) : NSObject
194
+
195
+ @property(nonatomic, readonly) NSArray<RTC_OBJC_TYPE(RTCIODevice) *> *outputDevices;
196
+ @property(nonatomic, readonly) NSArray<RTC_OBJC_TYPE(RTCIODevice) *> *inputDevices;
197
+
198
+ @property(nonatomic, readonly) BOOL playing;
199
+ @property(nonatomic, readonly) BOOL recording;
200
+
201
+ @property(nonatomic, strong) RTC_OBJC_TYPE(RTCIODevice) * outputDevice;
202
+ @property(nonatomic, strong) RTC_OBJC_TYPE(RTCIODevice) * inputDevice;
203
+
204
+ // Executes low-level API's in sequence to switch the device
205
+ // Use outputDevice / inputDevice property unless you need to know if setting the device is
206
+ // successful.
207
+ - (BOOL)trySetOutputDevice:(nullable RTC_OBJC_TYPE(RTCIODevice) *)device;
208
+ - (BOOL)trySetInputDevice:(nullable RTC_OBJC_TYPE(RTCIODevice) *)device;
209
+
210
+ - (NSInteger)startPlayout;
211
+ - (NSInteger)stopPlayout;
212
+ - (NSInteger)initPlayout;
213
+ - (NSInteger)startRecording;
214
+ - (NSInteger)stopRecording;
215
+ - (NSInteger)initRecording;
216
+
217
+ - (NSInteger)initAndStartRecording;
218
+ - (NSInteger)initAndStartRecordingWithAudioProcessingOptions:
219
+ (nullable RTC_OBJC_TYPE(RTCAudioProcessingOptions) *)options
220
+ NS_SWIFT_NAME(initAndStartRecording(audioProcessingOptions:));
221
+
222
+ - (NSInteger)setEngineAvailability:(RTC_OBJC_TYPE(RTCAudioEngineAvailability))availability;
223
+
224
+ // For testing purposes
225
+ @property(nonatomic, readonly) BOOL isPlayoutInitialized;
226
+ @property(nonatomic, readonly) BOOL isRecordingInitialized;
227
+ @property(nonatomic, readonly) BOOL isPlaying;
228
+ @property(nonatomic, readonly) BOOL isRecording;
229
+ @property(nonatomic, readonly) BOOL isEngineRunning;
230
+ @property(nonatomic, readonly) BOOL isMicrophoneMuted;
231
+ - (NSInteger)setMicrophoneMuted:(BOOL)muted;
232
+
233
+ // Directly get & set engine state.
234
+ @property(nonatomic, assign) RTC_OBJC_TYPE(RTCAudioEngineState) engineState;
235
+
236
+ @property(nonatomic, readonly, getter=isRecordingAlwaysPreparedMode)
237
+ BOOL recordingAlwaysPreparedMode;
238
+ - (NSInteger)setRecordingAlwaysPreparedMode:(BOOL)enabled;
239
+ - (NSInteger)setRecordingAlwaysPreparedMode:(BOOL)enabled
240
+ audioProcessingOptions:(nullable RTC_OBJC_TYPE(RTCAudioProcessingOptions) *)options
241
+ NS_SWIFT_NAME(setRecordingAlwaysPreparedMode(_:audioProcessingOptions:));
242
+
243
+ @property(nonatomic, weak, nullable) id<RTC_OBJC_TYPE(RTCAudioDeviceModuleDelegate)> observer;
244
+
245
+ // Manual rendering.
246
+ @property(nonatomic, readonly, getter=isManualRenderingMode) BOOL manualRenderingMode;
247
+ - (NSInteger)setManualRenderingMode:(BOOL)enabled;
248
+
249
+ // Advanced other audio ducking.
250
+ @property(nonatomic, assign, getter=isAdvancedDuckingEnabled) BOOL advancedDuckingEnabled;
251
+
252
+ // Audio ducking level. Maps to AVAudioVoiceProcessingOtherAudioDuckingLevel (iOS 17.0+, macOS 14.0+).
253
+ @property(nonatomic, assign) RTC_OBJC_TYPE(RTCAudioDuckingLevel) duckingLevel;
254
+
255
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCAudioEngineMuteMode) muteMode;
256
+ - (NSInteger)setMuteMode:(RTC_OBJC_TYPE(RTCAudioEngineMuteMode))mode;
257
+
258
+ /// App-level policy for Apple's platform voice processing. Defaults to true.
259
+ ///
260
+ /// When this is false, runtime audio-processing options treat Apple Voice
261
+ /// Processing I/O as unavailable. Automatic mode falls back to WebRTC software
262
+ /// processing and platform mode is rejected by APIs that validate against this
263
+ /// ADM, including track requests created by factories that expose this ADM.
264
+ /// Factory paths without an exposed ADM may still store a platform request. In
265
+ /// that case the platform request resolves disabled at apply time. Turning this
266
+ /// off also tears down any currently requested VPIO path.
267
+ @property(nonatomic, readonly, getter=isPlatformVoiceProcessingAllowed) BOOL platformVoiceProcessingAllowed;
268
+ - (NSInteger)setPlatformVoiceProcessingAllowed:(BOOL)allowed;
269
+
270
+ /// Temporarily bypasses Voice-Processing I/O. Can be toggled at runtime without restarting the
271
+ /// Audio Engine. Defaults to false.
272
+ @property(nonatomic, assign, getter=isVoiceProcessingBypassed) BOOL voiceProcessingBypassed;
273
+
274
+ /// Indicates whether Automatic Gain Control (AGC) is enabled. Requires Voice-Processing I/O to be
275
+ /// enabled. Enabled by default when VPIO is enabled.
276
+ @property(nonatomic, assign, getter=isVoiceProcessingAGCEnabled) BOOL voiceProcessingAGCEnabled;
277
+
278
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCAudioEngineAvailability) engineAvailability;
279
+
280
+ /// Diagnostic snapshot of platform audio processing state. Requested values are
281
+ /// the last state requested from the ADM. Active values are live OS readback
282
+ /// when the ADM can query the effect.
283
+ @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCPlatformAudioProcessingState) *platformAudioProcessingState;
284
+
285
+ @end
286
+
287
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright 2023 LiveKit
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #import <Foundation/Foundation.h>
18
+ #import <LiveKitWebRTC/RTCMacros.h>
19
+
20
+ NS_ASSUME_NONNULL_BEGIN
21
+
22
+ RTC_OBJC_EXPORT
23
+ @interface RTC_OBJC_TYPE (RTCAudioProcessingConfig) : NSObject
24
+
25
+ @property(nonatomic, assign) BOOL isEchoCancellationEnabled;
26
+ @property(nonatomic, assign) BOOL isEchoCancellationMobileMode;
27
+
28
+ @property(nonatomic, assign) BOOL isNoiseSuppressionEnabled;
29
+ @property(nonatomic, assign) BOOL isHighpassFilterEnabled;
30
+
31
+ @property(nonatomic, assign) BOOL isAutoGainControl1Enabled;
32
+ @property(nonatomic, assign) BOOL isAutoGainControl2Enabled;
33
+
34
+
35
+ @end
36
+
37
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Copyright 2023 LiveKit
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #import <Foundation/Foundation.h>
18
+
19
+ #import <LiveKitWebRTC/RTCMacros.h>
20
+
21
+ NS_ASSUME_NONNULL_BEGIN
22
+
23
+ @class RTC_OBJC_TYPE(RTCAudioProcessingConfig);
24
+
25
+ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCAudioProcessingModule)<NSObject>
26
+
27
+ @property(nonatomic, strong) RTC_OBJC_TYPE(RTCAudioProcessingConfig) * config;
28
+
29
+ @end
30
+
31
+ NS_ASSUME_NONNULL_END