Do not increment played wave buffers count for empty wave buffers (#568)

* Do not increment played wave buffers count for empty wave buffers

* Remove unused setter
This commit is contained in:
gdkchan 2019-02-12 14:05:05 -03:00 committed by GitHub
parent d306115750
commit 8eebbc736e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 14 deletions

View file

@ -312,7 +312,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
foreach (VoiceContext voice in _voices)
{
if (!voice.Playing)
if (!voice.Playing || voice.CurrentWaveBuffer.Size == 0)
{
continue;
}

View file

@ -14,20 +14,24 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
private int _bufferIndex;
private int _offset;
public int SampleRate;
public int ChannelsCount;
public int SampleRate { get; set; }
public int ChannelsCount { get; set; }
public float Volume;
public float Volume { get; set; }
public PlayState PlayState;
public PlayState PlayState { get; set; }
public SampleFormat SampleFormat;
public SampleFormat SampleFormat { get; set; }
public AdpcmDecoderContext AdpcmCtx;
public AdpcmDecoderContext AdpcmCtx { get; set; }
public WaveBuffer[] WaveBuffers;
public WaveBuffer[] WaveBuffers { get; }
public VoiceOut OutStatus;
public WaveBuffer CurrentWaveBuffer => WaveBuffers[_bufferIndex];
private VoiceOut _outStatus;
public VoiceOut OutStatus => _outStatus;
private int[] _samples;
@ -56,9 +60,9 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
_bufferIndex = 0;
_offset = 0;
OutStatus.PlayedSamplesCount = 0;
OutStatus.PlayedWaveBuffersCount = 0;
OutStatus.VoiceDropsCount = 0;
_outStatus.PlayedSamplesCount = 0;
_outStatus.PlayedWaveBuffersCount = 0;
_outStatus.VoiceDropsCount = 0;
}
public int[] GetBufferData(MemoryManager memory, int maxSamples, out int samplesCount)
@ -94,7 +98,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
samplesCount = size / AudioConsts.HostChannelsCount;
OutStatus.PlayedSamplesCount += samplesCount;
_outStatus.PlayedSamplesCount += samplesCount;
_offset += size;
@ -107,7 +111,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
SetBufferIndex((_bufferIndex + 1) & 3);
}
OutStatus.PlayedWaveBuffersCount++;
_outStatus.PlayedWaveBuffersCount++;
if (wb.LastBuffer != 0)
{