// give user a chance to change MicrophoneDevice in Awake()
    void Start()
    {
        if (photonView.isMine)
        {
            var pvs = PhotonVoiceSettings.Instance;

            Application.RequestUserAuthorization(UserAuthorization.Microphone);
            // put required sample rate into audio source and encoder - both adjust it if needed
            Voice.IBufferReader <float> audioStream;
            int channels           = 0;
            int sourceSamplingRate = 0;
            if (AudioClip == null)
            {
                if (Microphone.devices.Length < 1)
                {
                    // Error already logged in PhotonVoiceNetwork.Awake()
                    return;
                }

                var micDev = this.MicrophoneDevice != null ? this.MicrophoneDevice : PhotonVoiceNetwork.MicrophoneDevice;
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's microphone device to {0}", micDev);
                }
                var mic = new MicWrapper(micDev, (int)pvs.SamplingRate);
                sourceSamplingRate = mic.SourceSamplingRate;
                channels           = mic.Channels;
                audioStream        = mic;
            }
            else
            {
                audioStream        = new AudioClipWrapper(AudioClip);
                sourceSamplingRate = AudioClip.frequency;
                channels           = AudioClip.channels;
                if (this.LoopAudioClip)
                {
                    ((AudioClipWrapper)audioStream).Loop = true;
                }
            }

            Voice.VoiceInfo voiceInfo = Voice.VoiceInfo.CreateAudioOpus(pvs.SamplingRate, sourceSamplingRate, channels, pvs.FrameDuration, pvs.Bitrate, photonView.viewID);
            this.voice                   = createLocalVoice(voiceInfo, audioStream);
            this.VoiceDetector.On        = PhotonVoiceSettings.Instance.VoiceDetection;
            this.VoiceDetector.Threshold = PhotonVoiceSettings.Instance.VoiceDetectionThreshold;
            if (this.voice != Voice.LocalVoiceAudio.Dummy)
            {
                this.voice.Transmit = PhotonVoiceSettings.Instance.AutoTransmit;
            }
            else if (PhotonVoiceSettings.Instance.AutoTransmit)
            {
                Debug.LogWarning("PUNVoice: Cannot Transmit.");
            }
            sendVoiceCreatedMessage(voiceInfo);
        }
    }
    // give user a chance to change MicrophoneDevice in Awake()
    void Start()
    {
        if (photonView.isMine)
        {
            var pvs = PhotonVoiceSettings.Instance;

            if (!this.microphoneDeviceSet)
            {
                this.MicrophoneDevice = PhotonVoiceNetwork.MicrophoneDevice;
            }

            Application.RequestUserAuthorization(UserAuthorization.Microphone);
            // put required sample rate into audio source and encoder - both adjust it if needed
            Voice.IAudioStream audioStream;
            int channels = 0;
            if (AudioClip == null)
            {
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.Log("PUNVoice: Setting recorder's microphone device to " + this.MicrophoneDevice);
                }
                var mic = new MicWrapper(this.MicrophoneDevice, (int)pvs.SamplingRate);
                this.microphoneDeviceUsed = true;
                channels    = mic.Channels;
                audioStream = mic;
            }
            else
            {
                audioStream = new AudioClipWrapper(AudioClip);
                channels    = AudioClip.channels;
                if (this.LoopAudioClip)
                {
                    ((AudioClipWrapper)audioStream).Loop = true;
                }
            }

            Voice.VoiceInfo voiceInfo = new Voice.VoiceInfo((int)pvs.SamplingRate, channels, (int)pvs.Delay, pvs.Bitrate, photonView.viewID);
            this.voice = PhotonVoiceNetwork.CreateLocalVoice(audioStream, voiceInfo);

            this.VoiceDetector.On        = PhotonVoiceSettings.Instance.VoiceDetection;
            this.VoiceDetector.Threshold = PhotonVoiceSettings.Instance.VoiceDetectionThreshold;
        }
    }
Esempio n. 3
0
    private void InitialVoiceSetUp()
    {
        var pvs = PhotonVoiceSettings.Instance;

        Application.RequestUserAuthorization(UserAuthorization.Microphone);
        // put required sample rate into audio source and encoder - both adjust it if needed
        Voice.IAudioStream audioStream;
        int channels = 0;

        if (AudioClip == null)
        {
            var micDev = microphoneDevice ?? PhotonVoiceNetwork.MicrophoneDevice ?? (Microphone.devices.Any() ? Microphone.devices.First() : null);
            microphoneDevice = micDev;
            if (PhotonVoiceSettings.Instance.DebugInfo)
            {
                Debug.LogFormat("PUNVoice: Setting recorder's microphone device to {0}", micDev);
            }
            var mic = new MicWrapper(micDev, (int)pvs.SamplingRate);
            channels    = mic.Channels;
            audioStream = mic;
        }
        else
        {
            audioStream = new AudioClipWrapper(AudioClip);
            channels    = AudioClip.channels;
            if (LoopAudioClip)
            {
                ((AudioClipWrapper)audioStream).Loop = true;
            }
        }

        Voice.VoiceInfo voiceInfo = new Voice.VoiceInfo((int)pvs.SamplingRate, channels, (int)pvs.Delay, pvs.Bitrate, photonView.viewID);
        voice                   = PhotonVoiceNetwork.CreateLocalVoice(audioStream, voiceInfo);
        VoiceDetector.On        = PhotonVoiceSettings.Instance.VoiceDetection;
        VoiceDetector.Threshold = PhotonVoiceSettings.Instance.VoiceDetectionThreshold;
        MicrophoneDevice        = microphoneDevice;
    }
Esempio n. 4
0
    private Voice.LocalVoice createLocalVoiceAudioAndSource()
    {
        var pvs = PhotonVoiceSettings.Instance;

        switch (Source)
        {
        case AudioSource.Microphone:
        {
            Application.RequestUserAuthorization(UserAuthorization.Microphone);
            if (this.MicrophoneType == MicAudioSourceType.Settings && pvs.MicrophoneType == PhotonVoiceSettings.MicAudioSourceType.Photon ||
                this.MicrophoneType == MicAudioSourceType.Photon)
            {
                var hwMicDev = this.PhotonMicrophoneDeviceID != -1 ? this.PhotonMicrophoneDeviceID : PhotonVoiceNetwork.PhotonMicrophoneDeviceID;
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to Photon microphone device {0}", hwMicDev);
                }

                audioSource = new WindowsAudioInPusher(hwMicDev);
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to WindowsAudioInPusher");
                }
                break;
#elif UNITY_IOS && !UNITY_EDITOR || (UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
                audioSource = new AppleAudioInPusher(hwMicDev);
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to AppleAudioInPusher");
                }
                break;
#elif UNITY_ANDROID && !UNITY_EDITOR
                audioSource = new AndroidAudioInAEC();
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to AndroidAudioInAEC");
                }
                break;
#else
                Debug.LogFormat("PUNVoice: Photon microphone type is not supported for the current platform. Using Unity microphone.");
#endif
            }
            if (Microphone.devices.Length < 1)
            {
                // Error already logged in PhotonVoiceNetwork.Start()
                return(Voice.LocalVoiceAudio.Dummy);
            }
            var micDev = this.MicrophoneDevice != null ? this.MicrophoneDevice : PhotonVoiceNetwork.MicrophoneDevice;

            if (PhotonVoiceSettings.Instance.DebugInfo)
            {
                Debug.LogFormat("PUNVoice: Setting recorder's source to microphone device {0}", micDev);
            }
            // mic can ignore passed sampling rate and set it's own
            var mic = new MicWrapper(micDev, (int)pvs.SamplingRate);
            audioSource = mic;
        }
        break;

        case AudioSource.AudioClip:
        {
            if (AudioClip == null)
            {
                Debug.LogErrorFormat("PUNVoice: AudioClip property must be set for AudioClip audio source");
                return(Voice.LocalVoiceAudio.Dummy);
            }
            audioSource = new AudioClipWrapper(AudioClip);
            if (this.LoopAudioClip)
            {
                ((AudioClipWrapper)audioSource).Loop = true;
            }
        }
        break;

        case AudioSource.Factory:
        {
            if (PhotonVoiceNetwork.AudioSourceFactory == null)
            {
                Debug.LogErrorFormat("PUNVoice: PhotonVoiceNetwork.AudioSourceFactory must be specified if PhotonVoiceRecorder.Source set to Factory");
                return(Voice.LocalVoiceAudio.Dummy);
            }
            audioSource = PhotonVoiceNetwork.AudioSourceFactory(this);
        }
        break;

        default:
            Debug.LogErrorFormat("PUNVoice: unknown Source value {0}", Source);
            return(Voice.LocalVoiceAudio.Dummy);
        }

        Voice.VoiceInfo voiceInfo = Voice.VoiceInfo.CreateAudioOpus(pvs.SamplingRate, audioSource.SamplingRate, audioSource.Channels, pvs.FrameDuration, pvs.Bitrate, photonView.viewID);
        return(createLocalVoiceAudio(voiceInfo, audioSource));
    }
Esempio n. 5
0
    // Token: 0x0600006B RID: 107 RVA: 0x00003B3C File Offset: 0x00001D3C
    private LocalVoice createLocalVoiceAudioAndSource()
    {
        PhotonVoiceSettings instance = PhotonVoiceSettings.Instance;

        switch (this.Source)
        {
        case PhotonVoiceRecorder.AudioSource.Microphone:
            if ((this.MicrophoneType == PhotonVoiceRecorder.MicAudioSourceType.Settings && instance.MicrophoneType == PhotonVoiceSettings.MicAudioSourceType.Photon) || this.MicrophoneType == PhotonVoiceRecorder.MicAudioSourceType.Photon)
            {
                int num = (this.PhotonMicrophoneDeviceID != -1) ? this.PhotonMicrophoneDeviceID : PhotonVoiceNetwork.PhotonMicrophoneDeviceID;
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to Photon microphone device {0}", new object[]
                    {
                        num
                    });
                }
                this.audioSource = new WindowsAudioInPusher(num);
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to WindowsAudioInPusher", Array.Empty <object>());
                }
            }
            else
            {
                if (Microphone.devices.Length < 1)
                {
                    return(LocalVoiceAudio.Dummy);
                }
                string text = (this.MicrophoneDevice != null) ? this.MicrophoneDevice : PhotonVoiceNetwork.MicrophoneDevice;
                if (PhotonVoiceSettings.Instance.DebugInfo)
                {
                    Debug.LogFormat("PUNVoice: Setting recorder's source to microphone device {0}", new object[]
                    {
                        text
                    });
                }
                MicWrapper micWrapper = new MicWrapper(text, (int)instance.SamplingRate);
                this.audioSource = micWrapper;
            }
            break;

        case PhotonVoiceRecorder.AudioSource.AudioClip:
            if (this.AudioClip == null)
            {
                Debug.LogErrorFormat("PUNVoice: AudioClip property must be set for AudioClip audio source", Array.Empty <object>());
                return(LocalVoiceAudio.Dummy);
            }
            this.audioSource = new AudioClipWrapper(this.AudioClip);
            if (this.LoopAudioClip)
            {
                ((AudioClipWrapper)this.audioSource).Loop = true;
            }
            break;

        case PhotonVoiceRecorder.AudioSource.Factory:
            if (PhotonVoiceNetwork.AudioSourceFactory == null)
            {
                Debug.LogErrorFormat("PUNVoice: PhotonVoiceNetwork.AudioSourceFactory must be specified if PhotonVoiceRecorder.Source set to Factory", Array.Empty <object>());
                return(LocalVoiceAudio.Dummy);
            }
            this.audioSource = PhotonVoiceNetwork.AudioSourceFactory(this);
            break;

        default:
            Debug.LogErrorFormat("PUNVoice: unknown Source value {0}", new object[]
            {
                this.Source
            });
            return(LocalVoiceAudio.Dummy);
        }
        VoiceInfo voiceInfo = VoiceInfo.CreateAudioOpus(instance.SamplingRate, this.audioSource.SamplingRate, this.audioSource.Channels, instance.FrameDuration, instance.Bitrate, base.photonView.viewID);

        return(this.createLocalVoiceAudio(voiceInfo, this.audioSource));
    }