private void _nAudioTest_AudioRecordEnded() { var vt = _voiceTester; if (vt != null) { vt.RecordEnded(); return; } if (_speakingRoom == null) return; var message = new VoipMessageVoice { RoomName = _speakingRoom.R.AudioRoomId, FromUserId = _userData.User.Id, Audio = new byte[0], IsTeamOnly = _speakingRoomTeamOnly, MessageNumber = _messageNumber++, StreamNumber = _streamNumber, }; _audioChatClient.Send(message); _speakingRoom.OnVoiceStopped(_userData.User); _speakingRoom = null; if (DebugSaveSentPackets) { _audioRec.Write(SerialPacketStream.AppDataPath(_audioRec)); _audioRec = null; } }
private void Stop(PgUser user, AudioRoomEx roomEx) { _nAudioTest.AudioReceiveEnded(user.Id); roomEx.OnVoiceStopped(user); lock (_receivedTimes) { _receivedTimes.Remove(new Tuple<PgUser, AudioRoomEx>(user, roomEx)); } }
private void _nAudioTest_AudioRecorded(AudioHardwareSession source, byte[] encoded, double signalPower) { var vt = _voiceTester; if (vt != null) { vt.Recorded(encoded, signalPower); return; } var isFirst = _speakingRoom == null; if (isFirst) { _speakingRoom = GetSpeakingRoom(); _messageNumber = 0; _streamNumber++; _micTrigger.Index = 0; } if (_speakingRoom == null) return; if (isFirst) { if (UserDataManager.UserData.Settings.MicTriggerSoundOffEnabled) Play(_micTrigger); _speakingRoomTeamOnly = _speakingRoom.R.IsVoiceTeamOnly; if (DebugSaveSentPackets) _audioRec = new SerialPacketStream { Id = _userData.User.Id, Parts = new List<SerialPacket>(), IsEncoded = true, RoomName = _speakingRoom.R.AudioRoomId, StreamNumber = _streamNumber, }; } var message = new VoipMessageVoice { RoomName = _speakingRoom.R.AudioRoomId, FromUserId = _userData.User.Id, Audio = encoded, IsTeamOnly = _speakingRoomTeamOnly, MessageNumber = _messageNumber++, StreamNumber = _streamNumber, }; if (DebugSaveSentPackets) _audioRec.Parts.Add(new SerialPacket(_audioRec.Parts.Count, encoded)); _audioChatClient.Send(message); if (isFirst) _speakingRoom.OnVoiceSent(_userData.User); }
private void SendLeaveRoom(AudioRoomEx roomEx) { var message = new VoipMessageLeaveRoom { RoomName = roomEx.R.AudioRoomId, FromUserId = _userData.User.Id }; _audioChatClient.Send(message); OnVoiceConnectionChanged(roomEx, false); }
private void SendJoinRoom(AudioRoomEx roomEx) { var message = new VoipMessageJoinRoom { RoomName = roomEx.R.AudioRoomId, FromUserId = _userData.User.Id }; _audioChatClient.Send(message); AddJoinRoomTimeout(roomEx); }
private void OnVoiceConnectionChanged(AudioRoomEx roomEx, bool isConnected) { ((Action)(delegate { roomEx.R.OnVoiceConnectionChanged(isConnected); })).BeginInvokeUI(); }
private void AddJoinRoomTimeout(AudioRoomEx roomEx) { var jr = new JoinTimeout { RoomEx = roomEx, Timeout = DateTime.UtcNow + TimeSpan.FromSeconds(3), }; lock (_joinTimeouts) { _joinTimeouts.Add(jr); } }
public void JoinRoom(IVoiceRoom audioRoom) { AudioRoomEx roomEx; lock (_joinedRooms) { if (!_joinedRooms.TryGetValue(audioRoom.AudioRoomId, out roomEx)) { roomEx = new AudioRoomEx(audioRoom); _joinedRooms[audioRoom.AudioRoomId] = roomEx; } } SendJoinRoom(roomEx); }