private void OnAudioReceivedInternal(float[] audioData, int sampleRate, int channels, int numOfFrames) { if (_streamRenderer == null) { if (frameCountReceiveDataForIgnoring < MaxFrameCountReceiveDataForIgnoring) { frameCountReceiveDataForIgnoring++; return; } _streamRenderer = new AudioStreamRenderer(this.Id, sampleRate, channels); OnAudioReceived?.Invoke(_streamRenderer.clip); } _streamRenderer?.SetData(audioData); }
void Init() { node.OnServerStartSuccess += () => OnCreatedChatroom?.Invoke(); node.OnServerStartFailure += e => OnChatroomCreationFailed?.Invoke(e); node.OnServerStop += () => OnlosedChatroom?.Invoke(); node.OnConnectionFailed += ex => OnChatroomJoinFailed?.Invoke(ex); node.OnReceiveID += id => { if (id != 0) { OnJoinedChatroom?.Invoke(id); OnPeerJoinedChatroom?.Invoke(0); // server joins instantly } }; node.OnDisconnected += () => OnLeftChatroom?.Invoke(); node.OnRemoteServerClosed += () => OnLeftChatroom?.Invoke(); node.OnClientJoined += id => OnPeerJoinedChatroom?.Invoke(id); node.OnClientLeft += id => OnPeerLeftChatroom?.Invoke(id); node.OnPacketReceived += (sender, packet) => { if (packet.Tag.Equals("audio")) { var reader = new BytesReader(packet.Payload); var index = reader.ReadInt(); var frequency = reader.ReadInt(); var channels = reader.ReadInt(); var samples = reader.ReadFloatArray(); OnAudioReceived?.Invoke(new ChatroomAudioDTO { id = sender, segmentIndex = index, frequency = frequency, channelCount = channels, samples = samples }); } }; }