@@ -11,6 +11,15 @@ import StreamWebRTC
1111/// audio pipeline can stay in sync with application logic.
1212final class AudioDeviceModule : NSObject , RTCAudioDeviceModuleDelegate , Encodable , @unchecked Sendable {
1313
14+ enum Constant {
15+ // WebRTC interfaces are returning integer result codes. We use this typed/named
16+ // constant to define the Success of an operation.
17+ static let successResult = 0
18+
19+ // The down limit of audio pipeline in DB that is considered silence.
20+ static let silenceDB : Float = - 160
21+ }
22+
1423 /// Events emitted as the underlying audio engine changes state.
1524 enum Event : Equatable {
1625 case speechActivityStarted
@@ -35,7 +44,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
3544 var isMicrophoneMuted : Bool { isMicrophoneMutedSubject. value }
3645 var isMicrophoneMutedPublisher : AnyPublisher < Bool , Never > { isMicrophoneMutedSubject. eraseToAnyPublisher ( ) }
3746
38- private let audioLevelSubject = CurrentValueSubject < Float , Never > ( - 160 ) // default to silence
47+ private let audioLevelSubject = CurrentValueSubject < Float , Never > ( Constant . silenceDB ) // default to silence
3948 var audioLevel : Float { audioLevelSubject. value }
4049 var audioLevelPublisher : AnyPublisher < Float , Never > { audioLevelSubject. eraseToAnyPublisher ( ) }
4150
@@ -159,7 +168,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
159168 didCreateEngine engine: AVAudioEngine
160169 ) -> Int {
161170 subject. send ( . didCreateAudioEngine( engine) )
162- return 0
171+ return Constant . successResult
163172 }
164173
165174 func audioDeviceModule(
@@ -171,7 +180,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
171180 subject. send ( . willEnableAudioEngine( engine) )
172181 isPlayingSubject. send ( isPlayoutEnabled)
173182 isRecordingSubject. send ( isRecordingEnabled)
174- return 0
183+ return Constant . successResult
175184 }
176185
177186 func audioDeviceModule(
@@ -183,7 +192,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
183192 subject. send ( . willStartAudioEngine( engine) )
184193 isPlayingSubject. send ( isPlayoutEnabled)
185194 isRecordingSubject. send ( isRecordingEnabled)
186- return 0
195+ return Constant . successResult
187196 }
188197
189198 func audioDeviceModule(
@@ -196,7 +205,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
196205 audioLevelsAdapter. uninstall ( on: 0 )
197206 isPlayingSubject. send ( isPlayoutEnabled)
198207 isRecordingSubject. send ( isRecordingEnabled)
199- return 0
208+ return Constant . successResult
200209 }
201210
202211 func audioDeviceModule(
@@ -209,7 +218,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
209218 audioLevelsAdapter. uninstall ( on: 0 )
210219 isPlayingSubject. send ( isPlayoutEnabled)
211220 isRecordingSubject. send ( isRecordingEnabled)
212- return 0
221+ return Constant . successResult
213222 }
214223
215224 func audioDeviceModule(
@@ -218,7 +227,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
218227 ) -> Int {
219228 subject. send ( . willReleaseAudioEngine( engine) )
220229 audioLevelsAdapter. uninstall ( on: 0 )
221- return 0
230+ return Constant . successResult
222231 }
223232
224233 func audioDeviceModule(
@@ -235,7 +244,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
235244 bus: 0 ,
236245 bufferSize: 1024
237246 )
238- return 0
247+ return Constant . successResult
239248 }
240249
241250 func audioDeviceModule(
@@ -246,13 +255,13 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
246255 format: AVAudioFormat ,
247256 context: [ AnyHashable : Any ]
248257 ) -> Int {
249- 0
258+ Constant . successResult
250259 }
251260
252261 func audioDeviceModuleDidUpdateDevices(
253262 _ audioDeviceModule: RTCAudioDeviceModule
254263 ) {
255- // TODO:
264+ /* No-op */
256265 }
257266
258267 private enum CodingKeys : String , CodingKey {
@@ -281,7 +290,7 @@ final class AudioDeviceModule: NSObject, RTCAudioDeviceModuleDelegate, Encodable
281290 ) throws {
282291 let result = operation ( )
283292
284- guard result != 0 else {
293+ guard result != Constant . successResult else {
285294 return
286295 }
287296
0 commit comments