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++