/// <summary> /// Unmap the <see cref="MemoryPoolState"/> from the <see cref="Dsp.AudioProcessor"/>. /// </summary> /// <param name="memoryPool">The <see cref="MemoryPoolState"/> to unmap.</param> /// <returns>Returns true if unmapped.</returns> public bool Unmap(ref MemoryPoolState memoryPool) { if (memoryPool.IsUsed) { return(false); } AudioProcessorMemoryManager.Unmap(GetProcessHandle(ref memoryPool), memoryPool.CpuAddress, memoryPool.Size); memoryPool.SetCpuAddress(0, 0); memoryPool.DspAddress = 0; return(true); }
/// <summary> /// Force unmap the given <see cref="AddressInfo"/>. /// </summary> /// <param name="addressInfo">The <see cref="AddressInfo"/> to force unmap</param> public void ForceUnmap(ref AddressInfo addressInfo) { if (_isForceMapEnabled) { Span <MemoryPoolState> memoryPool = FindMemoryPool(addressInfo.CpuAddress, addressInfo.Size); if (!memoryPool.IsEmpty) { AudioProcessorMemoryManager.Unmap(_processHandle, memoryPool[0].CpuAddress, memoryPool[0].Size); return; } AudioProcessorMemoryManager.Unmap(_processHandle, addressInfo.CpuAddress, 0); } }