@@ -53,6 +53,7 @@ class AudioSessionManager: AudioSessionManaging {
5353 private var lastBufferTime : AVAudioTime ?
5454 private var accumulatedData = Data ( )
5555 private var recentData = [ Float] ( ) // This property stores the recent audio data
56+ private var lastSoundLevel : Float = - 160.0 // Track the last calculated sound level
5657
5758 weak var delegate : AudioStreamManagerDelegate ? // Define the delegate here
5859
@@ -520,7 +521,7 @@ class AudioSessionManager: AudioSessionManaging {
520521 if !accumulatedData. isEmpty {
521522 let currentTime = Date ( )
522523 let recordingTime = currentTime. timeIntervalSince ( startTime)
523- delegate? . audioStreamManager ( self , didReceiveAudioData: accumulatedData, recordingTime: recordingTime, totalDataSize: totalDataSize)
524+ delegate? . audioStreamManager ( self , didReceiveAudioData: accumulatedData, recordingTime: recordingTime, totalDataSize: totalDataSize, soundLevel : lastSoundLevel )
524525 accumulatedData. removeAll ( )
525526 }
526527
@@ -808,8 +809,12 @@ class AudioSessionManager: AudioSessionManaging {
808809 if let startTime = startTime {
809810 let recordingTime = currentTime. timeIntervalSince ( startTime)
810811 let dataToProcess = accumulatedData
812+
813+ // Calculate sound level from the working buffer
814+ let soundLevel = AudioUtils . calculatePowerLevel ( from: workingBuffer)
815+ lastSoundLevel = soundLevel
811816
812- delegate? . audioStreamManager ( self , didReceiveAudioData: dataToProcess, recordingTime: recordingTime, totalDataSize: totalDataSize)
817+ delegate? . audioStreamManager ( self , didReceiveAudioData: dataToProcess, recordingTime: recordingTime, totalDataSize: totalDataSize, soundLevel : soundLevel )
813818
814819 self . lastEmissionTime = currentTime
815820 self . lastEmittedSize = totalDataSize
0 commit comments