/// <summary>
        /// Create the local sender track from the current media track source if that source
        /// is active and enabled. Otherwise do nothing.
        /// </summary>
        private void CreateSenderIfNeeded()
        {
            // Only create a sender track if the source is active, i.e. has an underlying frame source.
            if (_senderTrack == null && _source != null && _source.isActiveAndEnabled)
            {
                if (MediaKind == MediaKind.Audio)
                {
                    var audioSource = (_source as AudioTrackSource);

                    var initConfig = new LocalAudioTrackInitConfig
                    {
                        trackName = _senderTrackName
                    };
                    _senderTrack = LocalAudioTrack.CreateFromSource(audioSource.Source, initConfig);
                }
                else
                {
                    Debug.Assert(MediaKind == MediaKind.Video);
                    var videoSource = (_source as VideoTrackSource);

                    var initConfig = new LocalVideoTrackInitConfig
                    {
                        trackName = _senderTrackName
                    };
                    _senderTrack = LocalVideoTrack.CreateFromSource(videoSource.Source, initConfig);
                }
            }
        }
        private void CreateSender()
        {
            Debug.Assert(_senderTrack == null);
            if (MediaKind == MediaKind.Audio)
            {
                var audioSource = (AudioTrackSource)_source;

                var initConfig = new LocalAudioTrackInitConfig
                {
                    trackName = _senderTrackName
                };
                _senderTrack = LocalAudioTrack.CreateFromSource(audioSource.Source, initConfig);
            }
            else
            {
                Debug.Assert(MediaKind == MediaKind.Video);
                var videoSource = (VideoTrackSource)_source;

                var initConfig = new LocalVideoTrackInitConfig
                {
                    trackName = _senderTrackName
                };
                _senderTrack = LocalVideoTrack.CreateFromSource(videoSource.Source, initConfig);
            }
        }
 private void DestroySenderIfNeeded()
 {
     if (_senderTrack != null)
     {
         _senderTrack.Dispose();
         _senderTrack = null;
     }
 }
 private void DestroySender()
 {
     _senderTrack.Dispose();
     _senderTrack = null;
 }