/// <summary> /// Generate a new <see cref="MixRampGroupedCommand"/>. /// </summary> /// <param name="mixBufferCount">The mix buffer count.</param> /// <param name="inputBufferIndex">The base input index.</param> /// <param name="outputBufferIndex">The base output index.</param> /// <param name="previousVolume">The previous volume.</param> /// <param name="volume">The new volume.</param> /// <param name="state">The <see cref="VoiceUpdateState"/> to generate the command from.</param> /// <param name="nodeId">The node id associated to this command.</param> public void GenerateMixRampGrouped(uint mixBufferCount, uint inputBufferIndex, uint outputBufferIndex, Span <float> previousVolume, Span <float> volume, Memory <VoiceUpdateState> state, int nodeId) { MixRampGroupedCommand command = new MixRampGroupedCommand(mixBufferCount, inputBufferIndex, outputBufferIndex, previousVolume, volume, state, nodeId); command.EstimatedProcessingTime = _commandProcessingTimeEstimator.Estimate(command); AddCommand(command); }
public uint Estimate(MixRampGroupedCommand command) { int volumeCount = 0; for (int i = 0; i < command.MixBufferCount; i++) { if (command.Volume0[i] != 0.0f || command.Volume1[i] != 0.0f) { volumeCount++; } } return((uint)(_sampleCount * 14.4f * 1.2f * volumeCount)); }
public uint Estimate(MixRampGroupedCommand command) { const float costPerSample = 7.245f; Debug.Assert(_sampleCount == 160 || _sampleCount == 240); int volumeCount = 0; for (int i = 0; i < command.MixBufferCount; i++) { if (command.Volume0[i] != 0.0f || command.Volume1[i] != 0.0f) { volumeCount++; } } return((uint)(_sampleCount * costPerSample * volumeCount)); }