/// <summary> /// Create a new <see cref="Common.WaveBuffer"/> for use by the <see cref="Dsp.AudioProcessor"/>. /// </summary> /// <param name="version">The target version of the wavebuffer.</param> /// <returns>A new <see cref="Common.WaveBuffer"/> for use by the <see cref="Dsp.AudioProcessor"/>.</returns> public Common.WaveBuffer ToCommon(int version) { Common.WaveBuffer waveBuffer = new Common.WaveBuffer(); waveBuffer.Buffer = BufferAddressInfo.GetReference(true); waveBuffer.BufferSize = (uint)BufferAddressInfo.Size; if (ContextAddressInfo.CpuAddress != 0) { waveBuffer.Context = ContextAddressInfo.GetReference(true); waveBuffer.ContextSize = (uint)ContextAddressInfo.Size; } waveBuffer.StartSampleOffset = StartSampleOffset; waveBuffer.EndSampleOffset = EndSampleOffset; waveBuffer.Looping = ShouldLoop; waveBuffer.IsEndOfStream = IsEndOfStream; if (version == 2) { waveBuffer.LoopCount = LoopCount; waveBuffer.LoopStartSampleOffset = LoopStartSampleOffset; waveBuffer.LoopEndSampleOffset = LoopEndSampleOffset; } else { waveBuffer.LoopCount = -1; } return(waveBuffer); }
public void TestGetReference() { MemoryPoolState[] memoryPoolState = new MemoryPoolState[1]; memoryPoolState[0] = MemoryPoolState.Create(MemoryPoolState.LocationType.Cpu); memoryPoolState[0].SetCpuAddress(0x1000000, 0x10000); memoryPoolState[0].DspAddress = 0x4000000; AddressInfo addressInfo = AddressInfo.Create(0x1000000, 0x1000); addressInfo.ForceMappedDspAddress = 0x2000000; Assert.AreEqual(0x2000000, addressInfo.GetReference(true)); addressInfo.SetupMemoryPool(memoryPoolState.AsSpan()); Assert.AreEqual(0x4000000, addressInfo.GetReference(true)); }
public CircularBufferSinkCommand(uint bufferOffset, ref CircularBufferParameter parameter, ref AddressInfo circularBufferAddressInfo, uint currentOffset, int nodeId) { Enabled = true; NodeId = nodeId; Input = new ushort[Constants.ChannelCountMax]; InputCount = parameter.InputCount; for (int i = 0; i < InputCount; i++) { Input[i] = (ushort)(bufferOffset + parameter.Input[i]); } CircularBuffer = circularBufferAddressInfo.GetReference(true); CircularBufferSize = parameter.BufferSize; CurrentOffset = currentOffset; Debug.Assert(CircularBuffer != 0); }