private void PlatformInitializeIma4(byte[] buffer, int offset, int count, int sampleRate, AudioChannels channels, int blockAlignment, int loopStart, int loopLength) { if (!OpenALSoundController.GetInstance.SupportsIma4) { // If IMA/ADPCM is not supported, convert to 16-bit signed PCM buffer = AudioLoader.ConvertIma4ToPcm(buffer, offset, count, (int)channels, blockAlignment); PlatformInitializePcm(buffer, 0, buffer.Length, 16, sampleRate, channels, loopStart, loopLength); return; } var format = AudioLoader.GetSoundFormat(AudioLoader.FormatIma4, (int)channels, 0); int sampleAlignment = AudioLoader.SampleAlignment(format, blockAlignment); // bind buffer SoundBuffer = new OALSoundBuffer(); SoundBuffer.BindDataBuffer(buffer, format, count, sampleRate, sampleAlignment); }
private void PlatformInitializeAdpcm(byte[] buffer, int offset, int count, int sampleRate, AudioChannels channels, int blockAlignment, int loopStart, int loopLength) { if (!OpenALSoundController.GetInstance.SupportsAdpcm) { // If MS-ADPCM is not supported, convert to 16-bit signed PCM buffer = AudioLoader.ConvertMsAdpcmToPcm(buffer, offset, count, (int)channels, blockAlignment); PlatformInitializePcm(buffer, 0, buffer.Length, 16, sampleRate, channels, loopStart, loopLength); return; } var format = AudioLoader.GetSoundFormat(AudioLoader.FormatMsAdpcm, (int)channels, 0); int sampleAlignment = AudioLoader.SampleAlignment(format, blockAlignment); // bind buffer SoundBuffer = new OALSoundBuffer(); // Buffer length must be aligned with the block alignment int alignedCount = count - (count % blockAlignment); SoundBuffer.BindDataBuffer(buffer, format, alignedCount, sampleRate, sampleAlignment); }