Esempio n. 1
0
 internal void CheckLateLinking(PhotonVoiceView photonVoiceView, int viewId)
 {
     if (this.Client.InRoom && photonVoiceView != null && viewId > 0)
     {
         for (int i = 0; i < this.cachedRemoteVoices.Count; i++)
         {
             RemoteVoiceLink remoteVoice = this.cachedRemoteVoices[i];
             if (remoteVoice.Info.UserData is int)
             {
                 int photonViewId = (int)remoteVoice.Info.UserData;
                 if (viewId == photonViewId)
                 {
                     Speaker speaker = photonVoiceView.SpeakerInUse;
                     if (this.Logger.IsInfoEnabled)
                     {
                         this.Logger.LogInfo("Speaker 'late-linking' for the PhotonView with ID {0} with remote voice {1}/{2}.", viewId, remoteVoice.PlayerId, remoteVoice.VoiceId);
                     }
                     this.LinkSpeaker(speaker, remoteVoice);
                     break;
                 }
             }
             else if (this.Logger.IsErrorEnabled)
             {
                 this.Logger.LogError("Unexpected: VoiceInfo.UserData should be int/ViewId, received: {0}",
                                      remoteVoice.Info.UserData == null ? "null" : string.Format("{0} ({1})", remoteVoice.Info.UserData, remoteVoice.Info.UserData.GetType()));
             }
         }
     }
 }
        private string GetFilePath(RemoteVoiceLink remoteVoiceLink)
        {
            string filename = string.Format("in_{0}_{1}_{2}_{3}_{4}.wav",
                                            System.DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss-ffff"), Random.Range(0, 1000),
                                            remoteVoiceLink.ChannelId, remoteVoiceLink.PlayerId, remoteVoiceLink.VoiceId);

            return(Path.Combine(Application.persistentDataPath, filename));
        }
Esempio n. 3
0
 internal void CheckLateLinking(Speaker speaker, int viewId)
 {
     if (!speaker || speaker == null)
     {
         if (this.Logger.IsWarningEnabled)
         {
             this.Logger.LogWarning("Cannot check late linking for null Speaker");
         }
         return;
     }
     if (viewId <= 0)
     {
         if (this.Logger.IsWarningEnabled)
         {
             this.Logger.LogWarning("Cannot check late linking for ViewID = {0} (<= 0)", viewId);
         }
         return;
     }
     if (!this.Client.InRoom)
     {
         if (this.Logger.IsWarningEnabled)
         {
             this.Logger.LogWarning("Cannot check late linking while not joined to a voice room, client state: {0}", System.Enum.GetName(typeof(ClientState), this.ClientState));
         }
         return;
     }
     for (int i = 0; i < this.cachedRemoteVoices.Count; i++)
     {
         RemoteVoiceLink remoteVoice = this.cachedRemoteVoices[i];
         if (remoteVoice.Info.UserData is int)
         {
             int photonViewId = (int)remoteVoice.Info.UserData;
             if (viewId == photonViewId)
             {
                 if (this.Logger.IsInfoEnabled)
                 {
                     this.Logger.LogInfo("Speaker 'late-linking' for the PhotonView with ID {0} with remote voice {1}/{2}.", viewId, remoteVoice.PlayerId, remoteVoice.VoiceId);
                 }
                 this.LinkSpeaker(speaker, remoteVoice);
                 break;
             }
         }
         else if (this.Logger.IsWarningEnabled)
         {
             this.Logger.LogWarning("VoiceInfo.UserData should be int/ViewId, received: {0}, do you have a Recorder not used with a PhotonVoiceView? is this expected?",
                                    remoteVoice.Info.UserData == null ? "null" : string.Format("{0} ({1})", remoteVoice.Info.UserData, remoteVoice.Info.UserData.GetType()));
             if (remoteVoice.PlayerId == viewId / PhotonNetwork.MAX_VIEW_IDS)
             {
                 this.Logger.LogWarning("Player with ActorNumber {0} has started recording (voice # {1}) too early without setting a ViewId maybe? (before PhotonVoiceView setup)", remoteVoice.PlayerId, remoteVoice.VoiceId);
             }
         }
     }
 }
        private void OnRemoteVoiceAdded(RemoteVoiceLink remoteVoiceLink)
        {
            int    bitsPerSample = 32;
            string filePath      = this.GetFilePath(remoteVoiceLink);

            if (this.Logger.IsInfoEnabled)
            {
                this.Logger.LogInfo("Incoming stream, output file path: {0}", filePath);
            }
            WaveWriter waveWriter = new WaveWriter(filePath, new WaveFormat(remoteVoiceLink.Info.SamplingRate, bitsPerSample, remoteVoiceLink.Info.Channels));

            remoteVoiceLink.FloatFrameDecoded  += f => { waveWriter.WriteSamples(f.Buf, 0, f.Buf.Length); };
            remoteVoiceLink.RemoteVoiceRemoved += () =>
            {
                if (this.Logger.IsInfoEnabled)
                {
                    this.Logger.LogInfo("Remote voice stream removed: Saving wav file.");
                }
                waveWriter.Dispose();
            };
        }
Esempio n. 5
0
 internal void CheckLateLinking(PhotonVoiceView photonVoiceView, int viewId)
 {
     if (this.Client.InRoom && photonVoiceView != null && viewId > 0)
     {
         for (int i = 0; i < cachedRemoteVoices.Count; i++)
         {
             RemoteVoiceLink remoteVoice = cachedRemoteVoices[i];
             if (remoteVoice.Info.UserData is int)
             {
                 int photonViewId = (int)remoteVoice.Info.UserData;
                 if (viewId == photonViewId)
                 {
                     Speaker speaker = photonVoiceView.SpeakerInUse;
                     if (this.Logger.IsInfoEnabled)
                     {
                         this.Logger.LogInfo("Speaker 'late-linking' for the PhotonView with ID {0} with remote voice {1}/{2}.", viewId, remoteVoice.PlayerId, remoteVoice.VoiceId);
                     }
                     LinkSpeaker(speaker, remoteVoice);
                     break;
                 }
             }
         }
     }
 }
        }                                                                           // 0x0000000180F44A90-0x0000000180F44CF0

        private string GetFilePath(RemoteVoiceLink remoteVoiceLink) => default;     // 0x0000000180F445B0-0x0000000180F448E0
        }                                   // 0x0000000180F448E0-0x0000000180F44A90

        private void OnRemoteVoiceAdded(RemoteVoiceLink remoteVoiceLink)
        {
        }                                                                           // 0x0000000180F44A90-0x0000000180F44CF0