Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
                    });
                }
            };
        }