本文整理汇总了C#中FMOD.Sound.@lock方法的典型用法代码示例。如果您正苦于以下问题:C# Sound.@lock方法的具体用法?C# Sound.@lock怎么用?C# Sound.@lock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FMOD.Sound
的用法示例。
在下文中一共展示了Sound.@lock方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetSampleMinMax
private static uint GetSampleMinMax(int startSample, int sampleCount, Sound sound, int bitsPerSample, int audioChannels)
{
var bytesPerSample = (bitsPerSample >> 3) * audioChannels;
var audioByte = startSample * bytesPerSample;
var length = bytesPerSample * sampleCount;
var ptr1 = IntPtr.Zero;
var ptr2 = IntPtr.Zero;
uint refLen1 = 0;
uint refLen2 = 0;
[email protected]((uint) audioByte, (uint) length, ref ptr1, ref ptr2, ref refLen1, ref refLen2);
var destination = new byte[length];
Marshal.Copy(ptr1, destination, 0, length);
audioByte = 0;
var max = short.MinValue;
var min = short.MaxValue;
for (var currentSample = 0; currentSample < sampleCount; currentSample++) {
for (var currentAudioChannel = 0; currentAudioChannel < audioChannels; currentAudioChannel++) {
var amplitude = (bitsPerSample == 16)
? BitConverter.ToInt16(destination, audioByte + (currentAudioChannel * 2))
: (sbyte) destination[audioByte + currentAudioChannel];
max = Math.Max(max, amplitude);
min = Math.Min(min, amplitude);
}
audioByte += bytesPerSample;
}
sound.unlock(ptr1, ptr2, refLen1, refLen2);
return (uint) ((max << 16) | ((ushort) min));
}