Community Q&A

Where Wwise users help each other out!

Audiokinetic's Community Q&A is the forum where Wwise users ask and answer questions within the Wwise community. Contact Sales if your project requires a support plan.

SceAudio3d/HRTF on PS4 using UE4

+2 votes
Is libSceAudio3d enabled by default with the UE4 plugin?  If not, what steps are necessary to get it enabled?

It's pretty clear that HRTF is not working in our game, and our log output appears to corroborate it:
>AK Error: Could not find plugin dynamic library SceAudio3d

I've been digging around and it seems like SceAudio3dSink needs to enabled and registered, but it doesn't appear to be registered by default (nor even included as part of the integration process for UE4).  Am I on the right track here, or there is something else we're missing/doing wrong?

Thanks,

Jared
asked Mar 14 in General Discussion by Jared N. (120 points)
We were running into the same issue as well. We were able to patch around the SceAudio3d prx not loading by making sure the "/app0/prx" folder was included in initSettings.szPluginDLLPath and that the SceAudio3d.prx file got coped into <GameName>/Build/PS4/prx.

#if PLATFORM_PS4
    FString PluginDLLPath(TEXT("/app0/prx/"));
#ifndef AK_SUPPORT_WCHAR
    AkOSChar * pszPluginDLLPath = TCHAR_TO_ANSI(*PluginDLLPath);
#else
    AkOSChar * pszPluginDLLPath = 0;
    CONVERT_WIDE_TO_OSCHAR(*PluginDLLPath, pszPluginDLLPath);
#endif
    initSettings.szPluginDLLPath = pszPluginDLLPath;
#endif

But then wwise still doesn't appear to open the 3d audio port like it does when you run the 3d audio sample from the SDK PS4 SDK (ORBIS SDKs\4.000\target\samples\sample_code\audio_video\api_audio3d\).

Rain 3d audio console output:

19:40:43 [audiod/a3d] port.cc:212 - Notified of creation of shm /audio3d-port-0x65-0 of size 379456
19:40:43 [audiod/a3d] morpheus.cc:225 - MorpheusPluginPortOpen...
19:40:43 [audiod/a3d] sparkuplus.cc:184 - SparkUplusPluginPortOpen - S3DA_CPU_OPTIMIZED (0)...
19:40:43 [audiod/a3d] iothread.cc:46 - IoThread (MorpheusIo) iHandle=0 started.
19:40:43 [audiod/a3d] sparkuplus.cc:184 - SparkUplusPluginPortOpen - S3DA_CPU_OPTIMIZED (1)...
19:40:43 [audiod/a3d] devel.cc:195 - DevelPluginPortOpen
19:40:43 [audiod/a3d] iothread.cc:46 - IoThread (SparkUplusIo) iHandle=-1 started.
19:40:43 [audiod/a3d] iothread.cc:46 - IoThread (SparkUplusIo) iHandle=-1 started.
19:40:43 [audiod/a3d] iothread.cc:46 - IoThread (NetworkIo) iHandle=-1173159408 started.
19:40:43 [audiod/a3d] iothread.cc:84 - IoThread (MorpheusIo) detected connection.
19:40:43 [audiod/a3d] module.cc:309 - sceAudiodA3dModuleNotify!
19:40:43 [audiod/a3d] devel.cc:84 - Connecting to 10.0.0.221...
19:40:43 [audiod/a3d] morpheus.cc:311 - Setting up Morpheus for Legacy mode
19:40:43 [audiod/a3d] process.cc:110 - Output via plugin 0
19:40:43 [audiod/a3d] devel.cc:98 - Connecting to 10.0.0.221... failed with error 0x3d!
19:40:43 [audiod/a3d] process.cc:267 (throttled) - No data!
19:40:43 [audiod/a3d] process.cc:129 (throttled) - No data!

By comparison, our game's 3d audio console output:

23:35:15    [audiod/a3d] event.cc:187 - --> SceAudiodA3dEventWorkModeParam(4 0)
23:35:15    [audiod/a3d] morpheus.cc:561 - sceAudiodA3dMorpheusNotify, bAttached=1 bLegacyMode=0
23:35:15    [audiod/a3d] module.cc:307 - FORCE sceAudiodA3dModuleNotify!
23:35:15    [audiod/a3d] morpheus.cc:321 - Setting up Morpheus for Native mode

I can get the logging I would expect if I manualy open the 3d audio port:

#if PLATFORM_PS4
    {
        // Load audio3d Module
        int32 Ret = sceSysmoduleLoadModule(SCE_SYSMODULE_AUDIO_3D);
        checkf(Ret == SCE_OK, TEXT("sceSysmoduleLoadModule(SCE_SYSMODULE_AUDIO_3D) failed: 0x%x\n"), Ret);
        // Initialize Audio 3D
        Ret = sceAudio3dInitialize(0);
        checkf(Ret == SCE_OK, TEXT("sceAudio3dInitialize failed: 0x%x\n"), Ret);
    }

    SceAudio3dOpenParameters sParameters;

    sceAudio3dGetDefaultOpenParameters(&sParameters);
    sParameters.uiGranularity = 1024;
    sParameters.uiMaxObjects = 32;
    sParameters.uiQueueDepth = 1;

    SceAudio3dPortId uiPort;
    int iRet = sceAudio3dPortOpen(SCE_USER_SERVICE_USER_ID_SYSTEM, &sParameters, &uiPort);
    if (iRet) {
        UE_LOG(LogInit, Warning, TEXT("sceAudio3dPortOpen() failed: 0x%x"), iRet);
    }
#endif

We have the "SCE Audio 3d bed" setup in our wwise project config, but no dice so far.

Please sign-in or register to answer this question.

...