커뮤니티 Q&A

Audiokinetic의 커뮤니티 Q&A 포럼에 오신 것을 환영합니다. 이 포럼은 Wwise와 Strata 사용자들이 서로 도움을 주는 곳입니다. Audiokinetic의 직접적인 도움을 얻으려면 지원 티켓 페이지를 사용하세요. 버그를 보고하려면 Audiokinetic 런처에서 Bug Report 옵션을 사용하세요. (Q&A 포럼에 제출된 버그 보고는 거절됩니다. 전용 Bug Report 시스템을 사용하면 보고 내용이 담당자에게 정확히 전달되어 문제 해결 가능성이 크게 높아집니다.)<segment 6493>

빠르고 정확한 답변을 얻으려면 질문을 올릴 때 다음 팁을 참고하세요.

  • 구체적인 내용을 적어주세요: 무엇을 하려는지, 혹은 어떤 특정 문제에 부딪혔는지 설명하세요.
  • 핵심 정보를 포함하세요: Wwise와 게임 엔진 버전, 운영체제 등 관련 정보를 함께 제공하세요.
  • 시도한 방법들을 알려주세요: 문제 해결을 위해 이미 어떤 단계를 시도해봤는지 설명해주세요.
  • 객관적인 사실에 초점을 맞추세요: 문제의 기술적 사실을 중심으로 설명하세요. 문제에 집중할수록 다른 사람들이 더 빠르게 해결책을 찾을 수 있습니다.

0 투표

For out-of-place effect plugins, IAkEffectPlugin::Init mentions the io_rFormat can be changed.  Changing from an input of 1 to 3 channels works as expected, but 2 to 3 (with respective changes to fields like uBlockAlign and channel mask) crashes in wwise.  This occurs in various versions, e.g. v2023.1.5.8522.  Any recommendations for effect plugins that change the number of channels? 
Stacks below:

CRASH 1:
Crashes immediately upon playback:

> UnrealEditor-WwiseSoundEngine.dll!CAkIndexBase::AkIndexKeyPolicy::Key(const CAkIndexable * in_pItem) Line 239 C++

  UnrealEditor-WwiseSoundEngine.dll!AkHashListBare<unsigned int,CAkIndexable,AkArrayAllocatorNoAlign<0>,CAkIndexBase::AkIndexKeyPolicy,AkHashListBareMemberPolicy<unsigned int,CAkIndexable>>::ExistsInList(unsigned int in_Key, unsigned int in_uiTable) Line 1216 C++

  UnrealEditor-WwiseSoundEngine.dll!AkHashListBare<unsigned int,CAkIndexable,AkArrayAllocatorNoAlign<0>,CAkIndexBase::AkIndexKeyPolicy,AkHashListBareMemberPolicy<unsigned int,CAkIndexable>>::Exists(unsigned int in_Key) Line 1029 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkIndexBase::AddRefUnsafe(unsigned int in_ID) Line 209 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkIndexBase::AddRefIndexable(unsigned int in_ID) Line 70 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkIndexItem<CAkFxCustom *>::GetPtrAndAddRef(unsigned int in_ID) Line 255 C++

  UnrealEditor-WwiseSoundEngine.dll!AkEffectStruct::ToFXPtr() Line 56 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkParameterNodeBase::GetOverridenFX(unsigned int in_uFXIndex, CAkRegisteredObj * in_GameObjPtr) Line 1140 C++

~~~~~~~~~~~~~~~~~~~~~CRASH 2:

plays the content, throws Wwise errors about "in_uIndex < NumChannels()", and then crashes when I exit PIE

 ntdll.dll!RtlEnterCriticalSection() Unknown

> UnrealEditor-WwiseSoundEngine.dll!CAkLock::Lock() Line 55 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkFxBase::RemoveInstance(PluginRTPCSub * in_instance) Line 496 C++

  UnrealEditor-WwiseSoundEngine.dll!PluginRTPCSub::Term() Line 1290 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkBusFX::Processor::_DropEffect(unsigned int idx) Line 188 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkBusFX::Processor::GarbageCollect(const CAkBusFX & in_owner, unsigned char in_uProcessorIdx, const AkArray<CAkBusFX::Object,CAkBusFX::Object const &,AkArrayAllocatorNoAlign<5>,AkGrowByPolicy_Proportional,AkTransferMovePolicy<CAkBusFX::Object>> * in_pInputObjects, const AK::AkHashTable<unsigned __int64,unsigned int> * in_pInputObjIndex, const AkArray<CAkBusFX::Object,CAkBusFX::Object const &,AkArrayAllocatorNoAlign<5>,AkGrowByPolicy_Proportional,AkTransferMovePolicy<CAkBusFX::Object>> * & out_pOutputObjects, const AK::AkHashTable<unsigned __int64,unsigned int> * & out_pOutputObjIndex, bool & out_bStaleDependencies) Line 292 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkVPLMixBusNode::ReleaseBuffer() Line 1803 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkLEngine::ReleaseBuffersAndFeedback() Line 3319 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkLEngine::DispatchBusGraphAsync::__l5::<lambda>() Line 3187 C++

  UnrealEditor-WwiseSoundEngine.dll!AK::JobMgr::Job::ThenWithGlobalLock::__l2::<lambda>() Line 147 C++

  UnrealEditor-WwiseSoundEngine.dll!AK::JobMgr::Internal::JobBody<AK::JobMgr::Job <lambda>(void),AK::JobMgr::Job>::Execute() Line 278 C++

  UnrealEditor-WwiseSoundEngine.dll!AK::JobMgr::Internal::JobManager_internalWorkerFunction(AK::JobMgr::Internal::WorkerState & workerState, unsigned int in_uExecutionTimeUsec) Line 653 C++

  UnrealEditor-WwiseSoundEngine.dll!AK::JobMgr::WorkUntilDone(AK::JobMgr::Job && targetJob) Line 1341 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkAudioMgr::Perform(bool in_bProcessMessageQueueOnly) Line 607 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkAudioMgr::PerformOnline() Line 547 C++

  UnrealEditor-WwiseSoundEngine.dll!CAkAudioThread::EventMgrThreadFunc(void * lpParameter) Line 70 C++

General Discussion Sserpenthraxus-fw (110 포인트) 로 부터

1 답변

0 투표
Hi,

Reviewing the code, and behaviour around some Out-of-place effect plug-ins that we have, things continue to operate within our expectations. That is, setting a new value for io_rFormat's channel configuration during plug-in initialization should be reflected in the channel count of the output audiobuffer when executing the plug-in later, with the memory properly allocated with whatever the channel config specified was.

Since we do not have any publicly accessible examples of an out-of-place effect plug-in in action to refer to, would it be possible to provide your plug-in's code for a brief review to see what may be going wrong, so that we can do a brief review to see if a problem sticks out?

Or, if you wish to debug yourself, one debugging tool that we have, which may be useful, is our stomp allocator. This can be enabled by initializing the memory allocator with AkMemSettings::uMemoryDebugLevel to 2 as described here: https://www.audiokinetic.com/en/library/2023.1.9_8628/?source=SDK&id=memorymanager.html

The crashes that you're describing seem like the kind of issue that would result from a memory overrun, so this tool should help to catch any memory overruns that may be performed by the code, be it yours, or ours. Since you appear to be running Wwise using the Wwise-Unreal Integration, you may have to modify the code in the integration to activate this setting. Instead of Unreal, it may also be worth attempting to get your plug-in operational in our IntegrationDemo application included in the SDK, if only so that you can test your plug-in in isolation of a full game engine application, giving you more direct control of the memory management and other configuration settings for Wwise, but also provide a more lightweight operating environment.
ak_dcrooks (220 포인트) 로 부터
...