@@ -8,14 +8,19 @@ import com.facebook.react.bridge.ReactApplicationContext
88import com.facebook.react.bridge.ReactContextBaseJavaModule
99import com.facebook.react.bridge.ReactMethod
1010import com.facebook.react.bridge.ReadableMap
11+ import com.facebook.react.modules.core.DeviceEventManagerModule
1112import com.livekit.reactnative.audio.AudioDeviceKind
1213import com.livekit.reactnative.audio.AudioManagerUtils
1314import com.livekit.reactnative.audio.AudioSwitchManager
15+ import com.livekit.reactnative.audio.events.Events
1416import com.livekit.reactnative.audio.processing.AudioSinkManager
17+ import com.livekit.reactnative.audio.processing.AudioSinkProcessor
1518import com.livekit.reactnative.audio.processing.MultibandVolumeProcessor
1619import com.livekit.reactnative.audio.processing.VolumeProcessor
1720import com.oney.WebRTCModule.WebRTCModuleOptions
1821import org.webrtc.audio.WebRtcAudioTrackHelper
22+ import java.lang.Thread.sleep
23+ import kotlin.concurrent.thread
1924import kotlin.time.Duration.Companion.milliseconds
2025
2126// NOTE: As of 0.80 react-native new architecture requires all
@@ -134,6 +139,23 @@ class LivekitReactNativeModule(reactContext: ReactApplicationContext) : ReactCon
134139 promise.resolve(null )
135140 }
136141
142+ @ReactMethod(isBlockingSynchronousMethod = true )
143+ fun createAudioSinkListener (pcId : Int , trackId : String ): String {
144+ val processor = AudioSinkProcessor (reactApplicationContext)
145+ val reactTag = audioSinkManager.registerSink(processor)
146+ audioSinkManager.attachSinkToTrack(processor, pcId, trackId)
147+ processor.reactTag = reactTag
148+
149+ return reactTag
150+ }
151+
152+ @ReactMethod(isBlockingSynchronousMethod = true )
153+ fun deleteAudioSinkListener (reactTag : String , pcId : Int , trackId : String ): Boolean {
154+ audioSinkManager.detachSinkFromTrack(reactTag, pcId, trackId)
155+ audioSinkManager.unregisterSink(reactTag)
156+ return true
157+ }
158+
137159 @ReactMethod(isBlockingSynchronousMethod = true )
138160 fun createVolumeProcessor (pcId : Int , trackId : String ): String {
139161 val processor = VolumeProcessor (reactApplicationContext)
0 commit comments