MAME:DSP 指针计算,避免下标再次计算指针
This commit is contained in:
parent
212810384e
commit
c1ad639f7a
@ -100,25 +100,29 @@ public class UniSoundPlayer : MonoBehaviour, ISoundPlayer /*, AxiAudioPull*/
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnAudioFilterRead(float[] data, int channels)
|
unsafe void OnAudioFilterRead(float[] data, int channels)
|
||||||
{
|
{
|
||||||
if (!UMAME.bInGame) return;
|
if (!UMAME.bInGame) return;
|
||||||
int step = channels;
|
int step = channels;
|
||||||
for (int i = 0; i < data.Length; i += step)
|
int length = data.Length;
|
||||||
|
fixed (float* dataptr = &data[0])
|
||||||
|
{
|
||||||
|
float* dataptr_index = &dataptr[0];
|
||||||
|
for (int i = 0; i < length; i += step)
|
||||||
{
|
{
|
||||||
float rawFloat = lastData;
|
float rawFloat = lastData;
|
||||||
float rawData;
|
float rawData;
|
||||||
if (_buffer.TryRead(out rawData))
|
if (_buffer.TryRead(out rawData))
|
||||||
{
|
|
||||||
rawFloat = rawData;
|
rawFloat = rawData;
|
||||||
|
for (int fill = 0; fill < step; fill++)
|
||||||
|
{
|
||||||
|
*dataptr_index = rawFloat;
|
||||||
|
dataptr_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
data[i] = rawFloat;
|
|
||||||
for (int fill = 1; fill < step; fill++)
|
|
||||||
data[i + fill] = rawFloat;
|
|
||||||
lastData = rawFloat;
|
lastData = rawFloat;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void SubmitSamples(byte[] buffer, int samples_a)
|
public void SubmitSamples(byte[] buffer, int samples_a)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user