private void OnPeerShutdown()
        {
            AudioStreamStopped.Invoke();
            var nativePeer = PeerConnection.Peer;

            nativePeer.RemoveLocalAudioTrack();
            //nativePeer.I420LocalVideoFrameReady -= I420LocalVideoFrameReady;
        }
        private void OnPeerShutdown()
        {
            AudioStreamStopped.Invoke();
            var nativePeer = PeerConnection.Peer;

            //nativePeer.LocalAudioFrameReady -= LocalAudioFrameReady;
            nativePeer.RemoveLocalAudioTrack();
            //FrameQueue.Clear();
        }
 /// <summary>
 /// Internal free-threaded helper callback on track added, which enqueues the
 /// <see cref="VideoSource.VideoStreamStopped"/> event to be fired from the main
 /// Unity thread.
 /// </summary>
 private void TrackRemoved(WebRTC.PeerConnection.TrackKind trackKind)
 {
     if (trackKind == WebRTC.PeerConnection.TrackKind.Audio)
     {
         // Enqueue invoking the unity event from the main Unity thread, so that listeners
         // can directly access Unity objects from their handler function.
         _mainThreadWorkQueue.Enqueue(() => AudioStreamStopped.Invoke());
     }
 }
        protected void OnDisable()
        {
            var nativePeer = PeerConnection.Peer;

            if ((nativePeer != null) && nativePeer.Initialized)
            {
                AudioStreamStopped.Invoke();
                nativePeer.RemoveLocalAudioTrack();
            }
        }
        protected void OnDisable()
        {
            var nativePeer = PeerConnection.Peer;

            if ((nativePeer != null) && nativePeer.Initialized)
            {
                AudioStreamStopped.Invoke();
                //nativePeer.LocalAudioFrameReady -= LocalAudioFrameReady;
                nativePeer.RemoveLocalAudioTrack();
                //FrameQueue.Clear();
            }
        }