Photon Voice For ARM64?

Hello,
I hope this is the proper place to query on this matter.

I'm using Photon Voice with HoloLens 2 and it is working great.
Currently, though, I cant build for ARM64 since the opus binaries are only compiled for ARM.

Any chance to get binaries for ARM64?
Thanks in advance.

Comments

  • Hi @YanivClone,

    Yes this is a good place for such query.

    We already received a similar request in the past few days.
    We still need time to do some research and try to estimate this.
    But we want to support it.

    Thanks for your patience and understanding.
  • Thank you,
    Where should I check for future updates? the asset store Photon Voice 2 Asset?
  • hi @YanivClone,

    could you try this lib?
  • Thank you, I will try and update.
  • Currently Receiving this error on the device:

    [PV] OpusCodec.Encoder: System.DllNotFoundException: Unable to load DLL 'opus_egpv': The specified module could not be found.
    at POpusCodec.Wrapper.opus_encoder_create (POpusCodec.Enums.SamplingRate Fs, POpusCodec.Enums.Channels channels, POpusCodec.Enums.OpusApplicationType application) [0x00000] in <00000000000000000000000000000000>:0
    at POpusCodec.OpusEncoder..ctor (POpusCodec.Enums.SamplingRate inputSamplingRateHz, POpusCodec.Enums.Channels numChannels, System.Int32 bitrate, POpusCodec.Enums.OpusApplicationType applicationType, POpusCodec.Enums.Delay encoderDelay) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.OpusCodec+Encoder`1[T]..ctor (Photon.Voice.VoiceInfo i, Photon.Voice.ILogger logger) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.OpusCodec+EncoderFloat..ctor (Photon.Voice.VoiceInfo i, Photon.Voice.ILogger logger) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.OpusCodec+Factory.CreateEncoder (Photon.Voice.VoiceInfo i, Photon.Voice.ILogger logger) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoiceAudio`1[T].CreateDefaultEncoder (Photon.Voice.VoiceInfo info) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoice..ctor (Photon.Voice.VoiceClient voiceClient, Photon.Voice.IEncoder encoder, System.Byte id, Photon.Voice.VoiceInfo voiceInfo, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoiceFramedBase..ctor (Photon.Voice.VoiceClient voiceClient, Photon.Voice.IEncoder encoder, System.Byte id, Photon.Voice.VoiceInfo voiceInfo, System.Int32 channelId, System.Int32 frameSize) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoiceFramed`1[T]..ctor (Photon.Voice.VoiceClient voiceClient, Photon.Voice.IEncoder encoder, System.Byte id, Photon.Voice.VoiceInfo voiceInfo, System.Int32 channelId, System.Int32 frameSize) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoiceAudio`1[T]..ctor (Photon.Voice.VoiceClient voiceClient, Photon.Voice.IEncoder encoder, System.Byte id, Photon.Voice.VoiceInfo voiceInfo, Photon.Voice.IAudioDesc audioSourceDesc, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoiceAudioFloat..ctor (Photon.Voice.VoiceClient voiceClient, Photon.Voice.IEncoder encoder, System.Byte id, Photon.Voice.VoiceInfo voiceInfo, Photon.Voice.IAudioDesc audioSourceDesc, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.LocalVoiceAudio`1[T].Create (Photon.Voice.VoiceClient voiceClient, System.Byte voiceId, Photon.Voice.IEncoder encoder, Photon.Voice.VoiceInfo voiceInfo, Photon.Voice.IAudioDesc audioSourceDesc, System.Int32 channelId) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.VoiceClient+<>c__DisplayClass45_0`1[T].<CreateLocalVoiceAudio>b__0 (System.Byte vId, System.Int32 chId) [0x00000] in <00000000000000000000000000000000>:0
    at System.Func`3[T1,T2,TResult].Invoke (T1 arg1, T2 arg2) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.VoiceClient.createLocalVoice (Photon.Voice.VoiceInfo voiceInfo, System.Int32 channelId, System.Func`3[T1,T2,TResult] voiceFactory) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.VoiceClient.CreateLocalVoiceAudio[T] (Photon.Voice.VoiceInfo voiceInfo, Photon.Voice.IAudioDesc audioSourceDesc, System.Int32 channelId, Photon.Voice.IEncoder encoder) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.VoiceClient.CreateLocalVoiceAudioFromSource (Photon.Voice.VoiceInfo voiceInfo, Photon.Voice.IAudioDesc source, System.Boolean forceShort, System.Int32 channelId, Photon.Voice.IEncoder encoder) [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.Unity.Recorder.CreateLocalVoiceAudioAndSource () [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.Unity.Recorder.Setup () [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.Unity.Recorder.StartRecording () [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.Unity.Recorder.Init (Photon.Voice.VoiceClient voiceClient, System.Object customObj) [0x00000] in <00000000000000000000000000000000>:0
    at PhotonVoiceNetworkManager.OnJoinedRoom () [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Realtime.MatchMakingCallbacksContainer.OnJoinedRoom () [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Realtime.LoadBalancingClient.OnEvent (ExitGames.Client.Photon.EventData photonEvent) [0x00000] in <00000000000000000000000000000000>:0
    at ExitGames.Client.Photon.PeerBase.DeserializeMessageAndCallback (ExitGames.Client.Photon.StreamBuffer stream) [0x00000] in <00000000000000000000000000000000>:0
    at ExitGames.Client.Photon.EnetPeer.DispatchIncomingCommands () [0x00000] in <00000000000000000000000000000000>:0
    at ExitGames.Client.Photon.PhotonPeer.DispatchIncomingCommands () [0x00000] in <00000000000000000000000000000000>:0
    at Photon.Voice.Unity.VoiceConnection.FixedUpdate () [0x00000] in <00000000000000000000000000000000>:0
    UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogError(Object)
    Photon.Realtime.LoadBalancingClient:DebugReturn(DebugLevel, String)
    Photon.Voice.LoadBalancingTransport:LogError(String, Object[])
    Photon.Voice.Encoder`1:.ctor(VoiceInfo, ILogger)
    Photon.Voice.EncoderFloat:.ctor(VoiceInfo, ILogger)
    Photon.Voice.Factory:CreateEncoder(VoiceInfo, ILogger)
    Photon.Voice.LocalVoiceAudio`1:CreateDefaultEncoder(VoiceInfo)
    Photon.Voice.LocalVoice:.ctor(VoiceClient, IEncoder, Byte, VoiceInfo, Int32)
    Photon.Voice.LocalVoiceFramedBase:.ctor(VoiceClient, IEncoder, Byte, VoiceInfo, Int32, Int32)
    Photon.Voice.LocalVoiceFramed`1:.ctor(VoiceClient, IEncoder, Byte, VoiceInfo, Int32, Int32)
    Photon.Voice.LocalVoiceAudio`1:.ctor(VoiceClient, IEncoder, Byte, VoiceInfo, IAudioDesc, Int32)
    Photon.Voice.LocalVoiceAudioFloat:.ctor(VoiceClient, IEncoder, Byte, VoiceInfo, IAudioDesc, Int32)
    Photon.Voice.LocalVoiceAudio`1:Create(VoiceClient, Byte, IEncoder, VoiceInfo, IAudioDesc, Int32)
    Photon.Voice.<>c__DisplayClass45_0`1:<CreateLocalVoiceAudio>b__0(Byte, Int32)
    System.Func`3:Invoke(T1, T2)
    Photon.Voice.VoiceClient:createLocalVoice(VoiceInfo, Int32, Func`3)
    Photon.Voice.VoiceClient:CreateLocalVoiceAudio(VoiceInfo, IAudioDesc, Int32, IEncoder)
    Photon.Voice.VoiceClient:CreateLocalVoiceAudioFromSource(VoiceInfo, IAudioDesc, Boolean, Int32, IEncoder)
    Photon.Voice.Unity.Recorder:CreateLocalVoiceAudioAndSource()
    Photon.Voice.Unity.Recorder:Setup()
    Photon.Voice.Unity.Recorder:StartRecording()
    Photon.Voice.Unity.Recorder:Init(VoiceClient, Object)
    PhotonVoiceNetworkManager:OnJoinedRoom()
    Photon.Realtime.MatchMakingCallbacksContainer:OnJoinedRoom()
    Photon.Realtime.LoadBalancingClient:OnEvent(EventData)
    ExitGames.Client.Photon.PeerBase:DeserializeMessageAndCallback(StreamBuffer)
    ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands()
    ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands()
    Photon.Voice.Unity.VoiceConnection:FixedUpdate()


    It is odd because everything looks fine in the plugin folder (I have the opus_egpv.dll in the WSA/ARM64 folder and it manages to build to ARM64 which it wouldn't if the plugin wasn't there ).
    Maybe Something in the code needs to change?
    Ill keep trying, Yaniv.
  • JohnTubeJohnTube mod
    edited February 6
    Hey @YanivClone,

    Maybe it works only with UWP?
    What scripting backend did you try?
  • I'm building For UWP WSA ARM64 with IL2CPP scripting backend (HoloLens 2)
    The same configuration works with ARM
  • hi @YanivClone,

    What Unity version is this?
    Did you try re opening Unity or re opening project?
    Or maybe a clean build, not sure how to do that from Unity?
  • Unity version: 2019.2.12f
    I tried a clean build (deleting all the previous build file and building it again from scratch)
    I'll try to reimport all the photon voice libs + if it doesn't work ill try to reopen a project and copy everything there
  • ok, I saw a log from the device that I have missed:
    "Loading native plugins
    Loading opus_egpv.dll
    Plugins: Failed to load 'opus_egpv' because one or more of its dependencies could not be loaded."

    Maybe it could help us understand the problem?
  • I see, thanks @YanivClone.
    We will investigate internally.
  • Hey @YanivClone,

    Could you try this one instead?
    Remove old "WSA/ARM64" folder first.
  • Trying now will update.
    Thank you!
  • Now it loads properly into the device without any error,
    Upon usage, it crashes the software.

    To be sure I have built it without using the voice comms and it won't crash.
    I can't even seem to get any log about the crash as the logging stream stops abruptly.

    I'll try enabling the INFO log on Voice Communication component to get logs
  • Hey John,
    Can't seem to gather anything interesting from the logs, just keep crushing once it starts.
  • Hey @YanivClone,

    Thanks a lot again for your testing.
    We will investigate further.
Sign In or Register to comment.