2012-09-14 06:19:05 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
|
|
// This file is part of the ANX.Framework and originally taken from
|
|
|
|
|
// the AC.AL OpenAL library, released under the MIT License.
|
|
|
|
|
// For details see: http://acal.codeplex.com/license
|
|
|
|
|
|
|
|
|
|
namespace WaveUtils
|
|
|
|
|
{
|
|
|
|
|
public class WaveConverter
|
|
|
|
|
{
|
|
|
|
|
private WaveInfo loadedData;
|
|
|
|
|
|
2012-11-04 08:46:52 +00:00
|
|
|
|
public WaveConverter(WaveInfo loadedData)
|
2012-09-14 06:19:05 +00:00
|
|
|
|
{
|
2012-11-04 08:46:52 +00:00
|
|
|
|
this.loadedData = loadedData;
|
2012-09-14 06:19:05 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ConvertToPcm()
|
|
|
|
|
{
|
|
|
|
|
ConvertToPcm(loadedData.Channels);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ConvertToPcm(int resultChannelCount)
|
|
|
|
|
{
|
|
|
|
|
switch (loadedData.WaveFormat)
|
|
|
|
|
{
|
|
|
|
|
case WaveFormat.ALAW:
|
|
|
|
|
ALaw.ConvertToPcm(loadedData, resultChannelCount);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case WaveFormat.MULAW:
|
|
|
|
|
MuLaw.ConvertToPcm(loadedData, resultChannelCount);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case WaveFormat.IEEE_FLOAT:
|
|
|
|
|
IEEEFloat.ConvertToPcm(loadedData, resultChannelCount);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case WaveFormat.MS_ADPCM:
|
|
|
|
|
MsAdpcm.ConvertToPcm(loadedData);
|
|
|
|
|
break;
|
|
|
|
|
|
2015-09-06 01:11:09 +02:00
|
|
|
|
case WaveFormat.PCM:
|
|
|
|
|
//If it's already PCM, don't convert anything.
|
|
|
|
|
break;
|
|
|
|
|
|
2012-09-14 06:19:05 +00:00
|
|
|
|
default:
|
|
|
|
|
throw new NotSupportedException("The WAVE format " + loadedData.WaveFormat +
|
|
|
|
|
" is not supported yet. Unable to load!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|