Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }