@@ -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