Version History

v2.23.2 (March 10th, 2021)
   PUN2: v2.28.3 (3c4b188)
   PhotonVoiceApi: revision 6004
   NOTE: [BREAKING] if you update from a version before 2.23, make sure to delete "Assets\Photon" root folder before importing. 
        Otherwise you need to move (from Editor or from explorer by moving .meta files also) 
        "Assets\Photon\PhotonUnityNetworking\Code\Editor\AccountService.cs" and
        "Assets\Photon\PhotonUnityNetworking\Code\Editor\PhotonEditorUtils.cs" to respectively
        "Assets\Photon\Realtime\Code\Unity\Editor\AccountService.cs" and
   ADDED: VoiceDebugScript to try to diagnose common issues in PUN integration
   FIXED: correct warning number pragma suppression (649 -> 414)
   FIXED: [DemoProximityVoiceChat] ChangeColour script to call RPC only if IsMine.
   FIXED: [DemoProximityVoiceChat] ChangeColour RPC is buffered.
   FIXED: [DemoProximityVoiceChat] ProximityVoiceTrigger checks if attached to local player and disable it if not.
   ADDED: debug logs when Recorder is destoryed or local voice removed.

v2.23.1 (February 25th, 2021)
   PUN2: v2.28.1 (433550f)
   PhotonVoiceApi: revision 5982

v2.23 (February 24th, 2021)
   PUN2: v2.28 (0a0ddf5)
   PhotonVoiceApi: revision 5982
   FIXED: Recorder.IsCurrentlyTransmitting in some cases starts true although it should be false.
   FIXED: Speaker.IsPlaying in some cases remains returns true although it should be false.
   FIXED: [Editor only] CS0414 warnings in Android or iOS context in Unity Editor.
   FIXED: CS649 warnings in for obsolete Speaker.playDelayMs and VoiceConnection.globalPlaybackDelay.
   FIXED: Speaker.Lag is -1 when Speaker is not playing.
   CHANGED: [Editor only] Recorder custom editor will recommend WebRtcAudioDsp.VAD instead of Recorder.VAD.
   CHANGED: Recorder.IsCurrentlyTransmitting property checks Recorder.IsRecording and Recorder.TransmitEnabled inside.
   FIXED: [DemoProximityVoiceChat] proximity voice chat's character pointer up status
   CHANGED: [DemoProximityVoiceChat] Recorder.TransmitEnabled disabled by default in scene for PrimaryRecorder
   CHANGED: making use of the new LoadBalancingClient.ClientType in LoadBalancingTransport and removing AppId switch workaround in VoiceConnection.ConnectUsingSettings.
   ADDED: DisallowMultipleComponents to VoiceConnection.
   CHANGED: Voice core is now using its own logger and log level decoupled from Realtime.
   CHANGED: [Editor only] Recorder.ReactOnSystemChanges & Recorder.SkipDeviceChangeChecks hidden from custom inspector when in Android or iOS.
   CHANGED: [Editor only] obsolete serialized fields hidden from inspector.
   CHANGED: [Editor only] allow ReactOnSystemChanges in Editor even if target platform is Android or iOS.

v2.22.3 (December 10th, 2020)
   PUN2: v2.26 (1bb4b17)
   PhotonVoiceApi: revision 5901
   CHANGED: skipping linking incoming remote streams with codec other than opus.

v2.22.2 (December 2nd, 2020)
   PUN2: v2.25.1 (cc3faf8)
   PhotonVoiceApi: revision 5901
   FIXED: [PhotonVoiceApi macOS, iOS] AudioInPusher: 'pushCallback' null check added in native callback to avoid NullReferenceException if SetCallback() gets called later than native input starts to produce samples.
   FIXED: [PhotonVoiceApi Windows] WindowsAudioInPusher.SetCallback(): 'pushCallback' is initialized last to make sure that null check in native callback guards all members.

v2.22.1 (November 29th, 2020)
   PUN2: v2.24 (b503239)
   PhotonVoiceApi: revision 5897
   FIXED: broken leftover code after renaming in Speaker.
   FIXED: [>=Unity 2019.1] incorrect method name in UiExtensions : InputField.SetTextWithoutNotify instead of InputField.SetValueWithoutNotify.
   FIXED: more CS649 warnings.
   CHANGED: fields used in Unity 2019.1 or higher wrapped in #ifdef.
   CHANGED: moved macOS voice libs under same folder "Assets\Photon\PhotonVoice\PhotonVoiceLibs\OSX".
   ADDED: PhotonVoiceNetwork private flags to support manual explicit voice client connect calls (e.g. ConnectUsingSettings).
   CHANGED: VoiceLogger timestamp format as an attempt to fix exception in Thai calendar/culture.
   REMOVED: minor, cleanup unused using in PhotonVoiceNetwork.

v2.22 (November 20th, 2020)
   PUN2: v2.23 (9c75048)
   PhotonVoiceApi: revision 5856
   FIXED: Speaker.StartPlayback should fail if Speaker is not enabled/active and PlaybackOnlyWhenEnabled is used.
   ADDED: [BREAKING] PhotonVoiceNetwork.UsePunAuthValues (default true): if used Photon Voice client will use the same AuthValues as PUN client. AuthMode and EncrytionMode are applied also now.
   ADDED: PlaybackDelaySettings which makes old PlayDelayMs/GlobalPlaybackDelay obsolete. Playback delay is now finetuned using 3 parameters. This should help fix the "high pitch" issue when player tries to catch up and does resampling.
   ADDED: Speaker.playbackExplicitlyStopped flag to make sure Speaker playback does not auto start again when not needed.
   CHANGED: NativeAndroidMicrophoneSettings to struct.
   ADDED: DisallowMultipleComponent attribute to Speaker, Recorder and WebRtcAudioDsp.
   ADDED: minor check to detect and log case where PUN & Voice clients are both connected to MasterServer.
   ADDED: [DemoVoiceUI] new AudioTone factory source to test playback delay.
   ADDED: [DemoVoiceUI] new playback delay settings.

v2.21 (September 8th, 2020)
   PUN2: v2.22 (9b9f51f5)
   PhotonVoiceApi: revision 5731
   CHANGED: DemoVoiceUI improved with more features, more insights and control over voice streams.
   CHANGED: some fields are now serialized no matter the platform to avoid unnecessary VCS changes when switching platforms.
   FIXED: IgnoreGlobalLogLevel taken into consideration when setting log level for Recorder or Speaker.
   CHANGED: Recorder.ReactOnSystemChanges ignored when Photon microphone type is used on Android or iOS as this is handled internally automatically via native plugins for the respective platforms.
   FIXED: 649 warnings for private SerializedFields not initialized.
   ADDED: Recorder.ResetLocalAudio to reset audio session and parameters locally to fix broken recording due to system configuration modifications or audio interruptions or audio routing changes. 
   CHANGED: Recorder.ResetLocalAudio is now used internally instead of or before Recorder.RestartRecording to try to automatically recover or resume recording.
   CHANGED: moved StopRecordingWhenPaused check in outer scope
   ADDED: Recorder.UseMicrophoneTypeFallback to optionally disable microphone type fallback in case of failures with initial type from Unity to Photon when applicable (and vice versa).
   FIXED: Recorder.subscribedToSystemChangesX flags are now properly reset when unsubscribed from callbacks.
   FIXED: when system callbacks fire, RequiresRestart is set only when mic device in use is no longer valid and do not it is not used as a check for this.
   ADDED: WebRtcAudioDsp.AecHighPass to be used with WebRtcAudioDsp.AEC.
   ADDED: WebRtcAudioDsp.AgcCompressionGain to be used with WebRtcAudioDsp.AGC, values are from 0 to 99. Default is 9.
   ADDED: checks & error logs when trying to assign Speaker.Actor for linked speakers.
   ADDED: [Experimental] WebRtcAudioDsp.ForceNormalAecInMobile to use regular non-mobile WebRTC AEC on Android or iOS.
   CHANGED: [PhotonVoiceApi] Android and iOS native audio input plugins updated to better handle routing changes, interruptions and make use of hardware audio processing features.

v2.20.1 (August 20th, 2020)
   PUN2: v2.21 (f42b1155)
   PhotonVoiceApi: revision 5698
   ADDED: [Logging] Info log entry when Speaker is about to start playback
   ADDED: list of linked speakers in VoiceConnection.linkedSpeakers
   CHANGED: setting VoiceConnection.GlobalPlaybackDelay will change Speaker.PlayDelayMs for linked speakers
   CHANGED: setting VoiceConnection.GlobalSpeakersLogLevel will change Speaker.LogLevel for linked speakers only

v2.20 (August 14th, 2020)
   PUN2: v2.20.2 (24c76182)
   PhotonVoiceApi: revision 5698
   CHANGED: delayed Speaker initialization until speaker is linked (once/the first time). This was necessary for PlayStation to be able to set UserID before playback start, but we chose to apply to all platforms.
   ADDED: [Logging] info log entries when subscribing and unsubscribing from audio config/device changes callbacks.
   FIXED: [PlayStation] Speaker.PlayStationUserID set before Speaker initialization. This fix is good unlike previous ones.
   FIXED: [Editor only] Recorder editor exception in WebGL context. UnityMicrophone.devices (also UnityMicrophone.IsRecording) now returns a value instead of thrown NotImplementedException.
   ADDED: [Experimental] Recorder.UseOnAudioFilterRead to make use of Unity's audio processing chain.
   REMOVED: Linux opus library (x86(_64)\ files as it's not an officially supported platform.
   CHANGED: [PhotonVoiceApi] playback via UnityAudioOut enhanced to better handle network delay variations.

v2.19.1 (August 5th, 2020)
   PUN2: v2.20.2 (24c76182)
   PhotonVoiceApi: revision 5687
   FIXED: [PlayStation] setting UserID properly.

v2.19 (August 3rd, 2020)
   PUN2: v2.20.1 (6911d589)
   PhotonVoiceApi: revision 5685
   FIXED: Photon mic name logging, ID was passed instead of index.
   ADDED: fallback from Unity mic to Photon mic, the other way around exists already.
   FIXED: Recorder.RequiresRestart set only when really all necessary conditions are met.
   CHANGED: Android plugin for native microphone input updated to allow setting effects AEC, AGC and NS optionally & separately.
   ADDED: Native Android Microphone Settings when Photon mic type is used.
   ADDED: [Editor only] Best Region Box from PUN's ServerSettings to VoiceConnection's custom editor
   REMOVED: best region logic from VoiceConnection as we rely on LoadBalancingClient for this.
   CHANGED: VoiceConnection.ConnectUsingSettings relies on LoadBalancingClient's ConnectUsingSettings.
   FIXED: PhotonVoice connects to the same region as PUN when the integration is used.
   FIXED: Applied 'static' custom editor views when component is attached to prefab.
   ADDED: PhotonVoiceNetwork.WorkInOfflineMode.
   ADDED: UnityMicrophone instead of Microphone to compile for WebGL.
   FIXED: [PS4] auto set linked speakers' PS4UserID to the VoiceConnection's PS4UserID.
   FIXED: [DemoVoiceUI] show DSP settings in builds when enabled.
   ADDED: [Editor only] warning & detach button to VoiceConnection custom Editor when AppyDontDestroyOnLoad is enabled.
   FIXED: PhotonVoiceNetwork singleton pattern enforced (error logs, destroy extra, etc.).
   CHANGED: WebRTC dependency library updated to the latest. Wrapper and API adjusted accordingly.
   CHANGED: Playback enhanced when VAD is used.
   CHANGED: Recorder can change SamplingRate if it's not supported by WebRtcAudioDsp.

v2.18.2 (July 9th, 2020)
   PUN2: v2.19.3 (4b127d55)
   PhotonVoiceApi: revision 5639
   FIXED: broken WebRtcAudioDspEditor after removing WebRtcAudioDsp.aecMobile and WebRtcAudioDsp.aecMobileComfortNoise in 2.18.
   CHANGED: [Logging] some log calls levels from INFO to DEBUG
   FIXED: changing Recorder.SamplingRate when Recorder.TrySamplingRateMatch is false will now set Recorder.RequiresRestart as expected.
   CHANGED: finished returning hardcoded sampling rate per Photon mic plugin platform when Recorder.TrySamplingRateMatch is true.
   FIXED: plugin "Assets/Photon/PhotonVoice/PhotonVoiceLibs/x86/" excluded from macOS builds.

v2.18.1 (July 8th, 2020)
   PUN2: v2.19.3 (4b127d55)
   PhotonVoiceApi: revision 5637
   FIXED: an error that caused the project to not compile in 2.18 on macOS or Linux.

v2.18 (July 8th, 2020)
   PUN2: v2.19.3 (4b127d55)
   PhotonVoiceApi: revision 5637
   ADDED: [Logging] debug logs when recorder starts, stops or restarts.
   CHANGED: [Logging] Voice PhotonPeer log level is now set early to make PhotonVoiceApi (Voice core, [PV]) logs work before connection attempt.
   CHANGED: [Logging] Voice PhotonPeer log level is now set to max log level between VoiceConnection.LogLevel & VoiceConnection.Settings.NetworkLogging. This is because PhotonVoiceApi (Voice core, [PV]) logs use the same log level as the networking peer log level. We may decouple in the future.
   CHANGED: [Logging] default log levels is now INFO instead of ERROR.
   CHANGED: [Logging] Voice components loggers will log timestamps.
   ADDED: VoiceConnection.GlobalPlaybackDelay to have a default PlaybackDelay for all Speaker components.
   CHANGED: Recorder.LoopAudioClip setter will not set RequiresRestart.
   ADDED: Recorder.Bitrate setter value checks: range is 6000-510000.
   CHANGED: VoiceConnection will ping regions only when OpGetRegion response is successful.
   CHANGED: [Logging] Recorder will log Error instead of Info when no Unity device mic is available. The log message was also improved.
   ADDED: PublishUserId option to ConnectAndJoin.
   ADDED: [Logging] error log when create room fails in ConnectAndJoin.
   CHANGED: ConnectAndJoin uses JoinRandomOrCreateRoom for faster matchmaking.
   FIXED: Voice can compile for WebGL without the demos. It's still not supported though.
   FIXED: RecorderEditor will not overwrite recorder.UnityMicrophoneDevice when Recorder inspector is selected. Always get Unity mic device index from recorder.
   ADDED: [Logging] global log levels per component type (Recorder / Speaker). Use IgnoreGlobalLogLevel to set a log level per component.
   CHANGED: [Logging] default voice component log levels will be reset to the new global default set in VoiceConnection/PhotonVoiceNetwork.
   CHANGED: [WebRtcAudioDsp] LogLevel follows Recorder unless IgnoreGlobalLogLevel is true.
   CHANGED: AutoCreateSpeakerIfNotFound moved from PhotonVoiceNetwork to VoiceConnection and used there in SimpleSpeakerFactory.
   CHANGED: checking if VoiceConnection.SpeakerPrefab has multiple speakers in VoiceConnection.SimpleSpeakerFactory and PhotonVoiceView.SetupSpeaker.
   CHANGED: [minor, breaking] we do not set spatialBlend to 1 anymore when Speaker is automatically created when AutoCreateSpeakerIfNotFound is true.
   ADDED: Recorder.RestartRecording(force) has a new param to force restart even if Recorder.RequiresRestart == false.
   CHANGED: [WebRtcAudioDsp] recording is restarted if WebRtcAudioDsp is added after recording is started.
   CHANGED: [WebRtcAudioDsp] dispose old processor if any before starting new one.
   CHANGED: [WebRtcAudioDsp] AEC Mobile obsolete: it should be automatically set when a mobile platform (Android or iOS) is detected.
   CHANGED: [WebRtcAudioDsp] AEC CN made obsolete.
   CHANGED: [Experimental] Speaker.PlayDelayMs can be adjusted on the fly at runtime.
   ADDED: [Experimental] USE_NEW_TRANSPORT custom define to make it easier to switch to a new breaking less-alloc transport layer in VoiceConnection.
   ADDED: [Experimental] Recorder.TrySamplingRateMatch to avoid resampling between encoder and microphone. Default is false.
   CHANGED: [PhotonVoiceApi] Opus FEC enabled and packet loss percentage (max expected) set to 30%.
   CHANGED: [PhotonVoiceApi iOS] audio session reinitialized on interruption end.
   CHANGED: [PhotonVoiceApi iOS] workaround added for AudioUnitInitialize() returning -66635 sometimes.

v2.17 (May 29th, 2020)
   PUN2: v2.18.1 (624dae8c)
   PhotonVoiceApi: revision 5558
   FIXED: [PhotonVoiceApi] macOS Photon mic enumerator to support all mic names strings & skip virtual/'ghost' devices.
   FIXED: [PhotonVoiceApi] UnityAudioOut clip play loop detection which was triggering "overrun" warning every ~5 seconds or so.
   ADDED: [PhotonVoiceView] warnings during setup about unexpected AudioSource settings.
   ADDED: [PhotonVoiceView] warnings during setup about Recorder settings.
   CHANGED: [PhotonVoiceView] log message level WARNING -> DEBUG in Setup when already setup.
   CHANGED: [PhotonVoiceView] refactored for a better clear setup of Recorder & Speaker.
   ADDED: [PhotonVoiceView] back Awake and attempt to init there.
   ADDED: [PhotonVoiceNetwork] attempt to setup PhotonVoiceView when receiving voice info.
   CHANGED: [PhotonVoiceView] using GetComponent instead of GetComponentInChildren for AudioSource as it is on the same GameObject as the Speaker.
   CHANGED: [PhotonVoiceNetwork.CheckLateLinking] refactored to accept Speaker directly.
   CHANGED: [PhotonVoiceNetwork.CheckLateLinking] 'UserData not ViewId': error log is now warning and better message.
   ADDED: [PhotonVoiceNetwork.CheckLateLinking] warning when received UserData does not match ViewId but ActorNumber match.
   FIXED: [DemoVoiceUI scene] proper UI update of speaker objects by adjusting previous RemoteSpeakerUI.cs changes.
   ADDED: [PunVoiceDemo] manual instantiation's custom local/remote prefabs.
   CHANGED: [PunVoiceDemo] CharacterInstantiation PUN demo script updated to be in sync w/ PUN 2's new OnJoinedInstantiate.
   FIXED: [PhotonVoiceView] correct way to tell if PhotonView is valid or not yet.
   FIXED: 2 CS0649 warnings: Field is never assigned by setting default value to false.
   FIXED: inconsistent EoL warning in on (re)complie/import.
   FIXED: [Editor only] minor, removing wrong useless code in RecorderEditor.RefreshPhotonMicrophoneDevices.
   FIXED: [Editor only] NullReferenceException when Photon mic name is null.
   CHANGED: [Editor only] minor, RecorderEditor.SetEnumIndex method is used in iOS Editor only.
   CHANGED: minor, consistency, usage of "this." enforced.

v2.16.1 (April 30th, 2020)
   PUN2: v2.18.1 (624dae8c)
   PhotonVoiceApi: revision 5464

v2.16 (April 29th, 2020)
   PUN2: v2.18 (8d47c57f)
   PhotonVoiceApi: revision 5464
   ADDED: Recorder.StopRecordingWhenPaused, default is false.
   ADDED: Recorder.RecordOnlyWhenEnabled and Speaker.PlaybackOnlyWhenEnabled both defaults are false.
   ADDED: Recorder.SkipDeviceChangeChecks to be used with Recorder.ReactOnSystemChanges. The default is false. Set to true to force restart in all cases.
   CHANGED: Speaker playback is optimized (AudioStreamPlayer no longer used) and runs on a separate coroutine.
   ADDED: Speaker playback methods: StartPlayback, StopPlayback and RestartPlayback.
   ADDED: Speaker.PlaybackStarted property (which is not the same as Speaker.IsPlaying).
   CHANGED: PhotonVoiceView will try Init in Awake and keeps retrying in Start which was changed to a coroutine.
   FIXED: harmless PhotonMicrophoneEnumerator error logs on iOS or Android.
   FIXED: Photon type microphone device validity checks in Recorder.
   CHANGED: PhotonVoiceStatsGui now shows actual voice frames stats.
   CHANGED: WebRtcAudioDsp can be used with all Recorder input source types but logs warning when not used with a microphone.
   FIXED: [DemoVoiceUI scene] Consistency between UI values and actual microphone type and device being used.
   ADDED: [DemoVoiceUI scene] Option to stream AudioClip.
   ADDED: [DemoVoiceUI scene] Option to toggle Photon VAD.
   ADDED: [DemoVoiceUI scene] Option to disable WebRTC DSP.
   FIXED: [DemoVoiceUI scene] Errors when the room name input field is used when the client is not joined nor connected.
   CHANGED: [Editor only] Runtime options are now hidden from the Recorder inspector when in play mode.
   CHANGED: [Editor only] AppSettings hidden from VoiceConnection/PhotonVoiceNetwork when the client is connected.
   CHANGED: [Editor only] UserData displayed in CachedRemoteVoiceInfos in VoiceConnection/PhotonVoiceNetwork inspector.

v2.15 (April 07th, 2020)
   PUN2: v2.17 (793fc726)
   PhotonVoiceApi: revision 5434
   FIXED: iOS crash when using Photon MicrophoneType which was introduced in v2.13 due to moving some logic to a worker thread.
   CHANGED: ReactOnSystemChanges now relies on a native plugin on iOS instead of Unity's AudioSettings.OnAudioConfigurationChanged.
   CHANGED: always refresh Recorder.PhotonMicrophoneEnumerator when ReactOnSystemChanges is enabled.
   ADDED: inspector tooltips when hovering over on some VoiceConnection fields shared with PUN's PhotonServerSettings.

v2.14 (March 30th, 2020)
   PUN2: v2.17 (a5c45f77)
   PhotonVoiceApi: revision 5350
   CHANGED: PunVoiceDemo now has AutoTransmit & VAD enabled by default.
   CHANGED: PunVoiceDemo now has AudioSource added to all prefabs with proper 3D Settings.
   CHANGED: PunVoiceDemo now has the ground plan/quad 10x bigger so characters don't fall off the edges quickly.
   CHANGED: PunVoiceDemo now has mesh colliders in trees so characters can't go through them.
   CHANGED: AppSettings are shown/unfolded by default in VoiceConnection.
   CHANGED: Recorder.UnityMicrophoneDevice name will hold the full device name over null for default device.
   CHANGED: transport protocol restrictions lifted, replaced with warning if not UDP.
   CHANGED: Recorder.ReactOnSystemChanges will restart recording only when the device in use is no longer available.

v2.13 (February 03rd, 2020)
   PUN2: v2.16 (ad87bf1e)
   PhotonVoiceApi: revision 5350
   FIXED: switching or rejoining rooms in PUN integration.
   FIXED: Recorder.InterestGroup returns used value in all cases.
   FIXED: iOS WebRTC library no longer contains 'main' symbol to not clash with other libraries.
   FIXED: IL2CPP support for Windows builds using Photon MicrophoneType.
   CHANGED: Recorder.DebugEchoMode forced to false when Recorder.InterestGroup != 0.
   CHANGED: prevent connection attempt when app is quitting.
   CHANGED: PhotonVoiceNetwork.JoinRoom returns bool.
   ADDED: error logs in case of join or leave failures by voice client.
   CHANGED: voice client will try to use same UserId as PUN when usePunAppSettings is true.
   FIXED: minor, avoiding exception when quitting in PUN integration demo.

v2.12 (November 26th, 2019)
   PUN2: v2.16 (ad87bf1e)
   PhotonVoiceApi: revision 5282
   FIXED: DivideByZeroException due to AudioClip.channels becoming zero in Unity.
   FIXED: voice not working when rejoining or switching rooms in voice clients.
   ADDED: extra safety checks and error logs when voice channels number is zero from sender or receiver end to avoid exceptions.
   CHANGED: Speaker component initializtion, setup and linking refactored for easier debugging.
   CHANGED: Recorder will not set RequiresRestart to true when 'overriding' default Unity microphone device string.
   ADDED: Unity Microphone helpers methods to Recorder.
   ADDED: new WebRtcAudioDspEditor warnings if component is disabled or Recorder does not use Microphone type.
   CHANGED: minor, Recorder caching moved to Awake from OnEnable.
   CHANGED: WebRtcAudioDsp now supports inactive AudioListener detection and can switch AudioListener used.
   FIXED: minor, channels number for AudioSpeakerMode.Prologic in WebRtcAudioDsp.
   FIXED: Type Short conversion check delayed in WebRtcAudioDsp.

v2.11 (October 11th, 2019)
   PUN2: v2.15 (11b52d6)
   PhotonVoiceApi: revision 5209
   FIXED: changes made to some voice components were not persisted on scene save due to custom editors.
   FIXED: ConnectAndJoin utility script's custom editor errors by removing leftover serialized property.
   CHANGED: [Better, easier Recorder initialization] Recorder.Init(VoiceClient, object) obsolete replaced with Recorder.Init(VoiceConnection).
   ADDED: [Better, easier Recorder initialization] VoiceConnection.InitRecorder(Recorder) method. 
   CHANGED: [Better, easier Recorder initialization] VoiceConnection.PrimaryRecorder is now automatically (internally/implicitly) initialized.
   CHANGED: Recorder.DebugEchoMode disabled when InterestGroup set to a value != 0.
   CHANGED: Recorder.AutoStart hidden in custom editor when Recorder is already initialized.
   CHANGED: always add PrimaryRecorder in ConnectAndJoin utility script if none found no matter the value of AutoTransmit.
   CHANGED: [Revised custom editor of WebRtcAudioDsp] better placement of warnings.
   CHANGED: [Revised custom editor of WebRtcAudioDsp] enabling "Bypass" hides other options & warnings.
   ADDED: info help box to custom editor about speaker prefab requiring Speaker component.

v2.10 (September 25th, 2019)
   PUN2: v2.15 (11b52d6)
   PhotonVoiceApi: revision 5209
   CHANGED: ConnectAndJoin utility script won't override AppVersion.
   CHANGED: VAD calibration now requires transmission to be enabled to work.
   FIXED: Usage of custom Settings with PUN integration.
   FIXED: MissingReferenceException when trying to destroy a Speaker that's already destroyed.
   ADDED: PhotonVoiceView now has a public Init method that you may call to force setup and initialization in case this did not happen automatically which is unexpected.
   FIXED: PhotonVoiceView setup and Recorder initialization with PUN integration that uses manual prefab instantiation by delaying first Init to Start from OnEnable.
   ADDED: New manual instantiation option in CharacterInstantiation utility script which can be tested in DemoVoicePun-Scene.
   FIXED: minor Android build issues when android:allowBackup and some other attributes or properties are used in the application's AndroidManifest.xml.
   ADDED: Option to dispatch incoming messages, even if Time.timeScale = 0: PhotonVoiceNetwork.MinimalTimeScaleToDispatchInFixedUpdate. It defaults to not being used. This idea is borrowed from PUN. See PhotonNetwork.MinimalTimeScaleToDispatchInFixedUpdate. Audio playback still does not work when Time.timeScale is 0.

v2.9 (August 16th, 2019)
   PUN2: v2.14 (7cb46fd)
   PhotonVoiceApi: revision 5193
   CHANGED: minimal Unity version from 5.6.6f2 to 2017.4.7f1
   ADDED: DemoProximityVoiceChat
   ADDED: MicAmplifier UtilityScript
   CHANGED: check for minimal connection settings before connecting
   CHANGED: WebRTC DSP AECMobileComfortNoise param exposed
   FIXED: support for 2019.2 (AudioSpeakerMode.Raw deprecated)

v2.8 (June 25th, 2019)
   PUN2: v2.13 (26fd056)
   PhotonVoiceApi: revision 5153
   CHANGED: PhotonVoiceNetwork.usePunAppSettings added to replace VoiceConnection.usePunSettings removed in previous version.
   FIXED: Recorder VAD properties.
   CHANGED: Photon mic. enum is now refreshed automatically on system changes.
   CHANGED: Recorder.SampleTypeConv obsolete, logic is now implicit.
   FIXED: Setting audio session category for iOS to Photon.Voice.IOS.AudioSessionCategory.MultiRoute.
   ADDED: "Leave a Review" menu shortcut.
   CHANGED: Recorder.VoiceDetectionThreshold is now a slider in the custom editor and not a float field.

v2.7 (May 17th, 2019)
   PUN2: v2.12 (8ea5f65)
   PhotonVoiceApi: revision 5102
   CHANGED: Recorder.PhotonVoiceCreatedParams obsolete.
   CHANGED: asmdef: PhotonUnityNetworking no longer referenced from PhotonVoice.
   CHANGED: asmdef: PhotonUnityNetworking no longer referenced from PhotonVoice.Editor.
   ADDED: asmdef: PhotonVoice.PUN and PhotonVoice.PUN.Editor. 
   CHANGED: VoiceConnection.usePunSettings and related custom editor code removed: use VoiceConnection.ConnectUsingSettings(settings) to pass PUN settings if needed.
   ADDED: PhotonVoiceEditorUtils and Editor shortcuts to remove PUN or Photon Chat. 
   CHANGED: iOS's audio initialization session parameters exposed in Editor and can be set using Recoder.SetIosAudioSessionParameters methods.
   CHANGED: changelog.txt renamed to changes-voice.txt.

v2.6.1 (April 30th, 2019)
   PUN2: v2.10 (c4cec86)
   PhotonVoiceApi: revision 5005
   FIXED: asmdef issue in VoiceConnection's custom Editor Script.

v2.6 (April 26th, 2019)
   PUN2: v2.10 (c4cec86)
   PhotonVoiceApi: revision 5005
   CHANGED: Recorder.ReInit renamed to Recorder.RestartRecording.
   CHANGED: Recorder.RequiresInit renamed to Recorder.RequiresRestart.
   CHANGED: IsInitialized is now only checking if Recorder.voiceClient is not null, other logic moved to Recorder.IsRecording.
   CHANGED: Recorder.RequiresRestart is always false when Recorder.IsRecording is false.
   CHANGED: Recorder.StartRecording and Recorder.StopRecording methods added.
   CHANGED: Recorder.AutoStart property added and exposed in custom editor.
   FIXED: Recorder.TypeConvert changes applied properly when recording is restarted.
   CHANGED: Recorder.Init should not be used to restart recording, use Recoder.RestartRecording instead.
   CHANGED: extra checks added for WebRtcAudioDsp (only Microphone supported, once disabled won't be reused)
   CHANGED: shortcut to PhotonServerSettings added to VoiceConnection custom editor
   CHANGED: warning removed from PhotonVoiceNetwork after using the newly renamed PascalCase ClientState values
   CHANGED: showing Photon peer traffic stats from VoiceConnection and PhotonVoiceNetwork editors
   CHANGED: shortcuts to documentation pages added from main Voice components (help icon)

v2.5.1 (April 3rd, 2019)
   PUN2: v2.9 (2211f0c)
   PhotonVoiceApi: revision 5005
   FIXED: ArgumentException on Speaker end by not starting stream when channels are 0 from Recorder end

v2.5 (March 11th, 2019)
   PUN2: v2.7 (1fa6aff)
   PhotonVoiceApi: revision 5005
   CHANGED: Recorder.IsRecording property added to stop and restart 'recording' after initialization.
   CHANGED: Recorder.ReactOnSystemChanges property added to reinit due to changes in system audio devices. Default is false for backward compatibility.
   FIXED: UI in DemoVoice scene, left sidebar should contain all info and gets updated if you change values in Editor.
   FIXED: WebRtcAudioDsp: proper mapping of AudioSettings.speakerMode to channels number.
   CHANGED: WebRtcAudioDsp: minor refactoring.
   FIXED: PhotonVoiceStatsGui, PhotonVoiceLagSimulationGui: return after auto disable components when no VoiceConnection is not found.
   FIXED: PhotonVoiceLagSimulationGui: VoiceClient.DebugLostPercent applied only when simulation is enabled.
   FIXED: VoiceConnection: Frames stats reset if not receiving any.
   FIXED: Recorder custom inspector: "Level" is shown only when recording and set to 0 when not transmitting.

v2.4.1 (February 15th, 2019)
   PUN2: v2.7 (1fa6aff)
   PhotonVoiceApi: revision 5005
       CHANGED: iOS native plugin initialization moved to separate thread to avoid 0.5 - 1 sec. pauses in main thread execution
   FIXED: issue that was breaking asset import
   NOTE: Unity 5.6.6f2 is now the minimum supported Unity version

v2.4 (February 15th, 2019)
   PUN2: v2.7 (1fa6aff)
   PhotonVoiceApi: revision 4981
   ADDED: Android 64-bit libraries (Unity 2017.4+)
   ADDED: PhotonVoiceStatsGui Utility Script
   ADDED: more debug info to VoiceConnection (and PhotonVoiceNetwork) custom Editor
   CHANGED: Recorder.AudioGroup obsolete, use Recorder.InterestGroup instead
   CHANGED: VoiceConnection.Client is now LoadBalancingTransport after renaming LoadBalancingFrontend
   FIXED: AEC Mobile couldn't be enabled in WebRtcAudioDsp
   CHANGED: allow PhotonVoiceNetwork to join a room with a custom name when AutoConnectAndJoin is disabled
   CHANGED: DemoVoiceUI scene now has UI properly initialized with correct values
   CHANGED: PhotonVoiceLagSimulationGui refactored to not clash with PhotonLagSimulationGui

v2.3 (January 25th, 2019)
    PUN2: v2.6 (578494a)
    PhotonVoiceApi: revision 4948
    FIXED: Speaker linking issues (debug echo toggling, disconnect & reconnect)

v2.2 (December 20th, 2018)
    PUN2: v2.6v (eeaa6a7)
    PhotonVoiceApi: revision 4948
    FIXED: self-hosted Photon Server support (Photon Voice client UserId if no set, will use the same UserId as PUN if available or a new GUID)
    ADDED: Nintendo Switch support (requires separate add-on)
    FIXED: 'late Speaker linking' (if a remote voice info event is received before PUN prefab instantiation, could happen during scene switching) 
    FIXED: AudioSource.spatialBlend is set to 1.0f only when Speaker/AudioSource are created automatically by PhotonVoiceView
    FIXED: log level filtering
    FIXED: VAD threshold calibration persists between Recorder sessions
    FIXED: PS4 integration after update to PhotonVoice2 (still require separate add-on)

v2.1.3 (December 7th, 2018)
    PUN2: v2.5 (4d59ede)
    PhotonVoiceApi: revision 4915
    FIXED: disconnects during delays due to scene loading
    FIXED: iOS crash due to native plugin files versions mismatch
    CHANGED: iOS audio output forced to speaker by default when using Photon microphone type

v2.1.2 (December 3rd, 2018)
    PUN2: v2.5 (4d59ede)
    PhotonVoiceApi: revision 4876
    FIXED: issue due to using Mic. name/Id from Editor in builds
    CHANGED: renamed Recorder.PhotonVoiceCreatedParams.AudioSource to Recorder.PhotonVoiceCreatedParams.AudioDesc 
    CHANGED: renamed VoiceAudioPreprocessor to WebRtcAudioDsp

v2.1.1 (November 21st, 2018)
    PUN2: v2.5 (4d59ede)
    PhotonVoiceApi: revision 4876 
    FIXED: Unity Editor freezing when using PUN 2 integration

v2.1 (November 8th, 2018)
    PUN2: v2.4.1v (14cb68f)
    PhotonVoiceApi: revision 4876 
    FIXED: PhotonVoiceNetwork fields can now be updated from the Unity Editor
    ADDED: Assembly Definitions for Photon Voice 2
    ADDED: Photon Chat as it was forgotten in initial release
    FIXED: Photon Voice 2 can connect to self-hosted Photon Server after setting SerializtionProtocol version to 1.6 in this case
    FIXED: NullRefException when trying to access Recorder.Logger before Recorder.Awake is called
    FIXED: PhotonVoiceView's Recorder setup when the ViewID changes if the Recorder is not part of the prefab
    FIXED: Errors or crashes when trying to setup local voice due to exceptions
    CHANGED: Recorder falls back to Unity microphone if Photon microphone setup encounter an error

v2.0 (October 10th, 2018)
    PUN2: v2.2.1 (3cd5540)
    PhotonVoiceApi: revision 4823
    Initial release of the new major Photon Voice version 2.
    Work-in-progress documentation:
    PhotonVoice reference API:

To Document Top