MAME:DSP 指针计算,避免下标再次计算指针

This commit is contained in:
sin365 2025-11-17 16:28:22 +08:00
parent 212810384e
commit c1ad639f7a

View File

@ -100,23 +100,27 @@ public class UniSoundPlayer : MonoBehaviour, ISoundPlayer /*, AxiAudioPull*/
}
}
void OnAudioFilterRead(float[] data, int channels)
unsafe void OnAudioFilterRead(float[] data, int channels)
{
if (!UMAME.bInGame) return;
int step = channels;
for (int i = 0; i < data.Length; i += step)
int length = data.Length;
fixed (float* dataptr = &data[0])
{
float rawFloat = lastData;
float rawData;
if (_buffer.TryRead(out rawData))
float* dataptr_index = &dataptr[0];
for (int i = 0; i < length; i += step)
{
rawFloat = rawData;
float rawFloat = lastData;
float rawData;
if (_buffer.TryRead(out rawData))
rawFloat = rawData;
for (int fill = 0; fill < step; fill++)
{
*dataptr_index = rawFloat;
dataptr_index++;
}
lastData = rawFloat;
}
data[i] = rawFloat;
for (int fill = 1; fill < step; fill++)
data[i + fill] = rawFloat;
lastData = rawFloat;
}
}