public void DecompressFile()
{
uint dwDataSize = /*((m_DecompressedSize - 24) - (m_DecompressedSize - 24) / 15) * 4;*/m_DecompressedSize;
uint dwFMTSize = 16;
uint dwRIFFSize = /*dwFMTSize + 8 + dwDataSize + 8 + 4;*/ 8 + 4 + dwFMTSize + 4 + 4 + dwDataSize;
m_Writer.Write(new char[] { 'R', 'I', 'F', 'F' });
m_Writer.Write(dwRIFFSize); //Size of file minus this field and the above field.
m_Writer.Write(new char[] { 'W', 'A', 'V', 'E', 'f', 'm', 't', ' ' });
m_Writer.Write(dwFMTSize); //Size of WAVEFORMATEX structure (all before 'data').
m_Writer.Write(m_Tag);
m_Writer.Write(m_Channels);
m_Writer.Write(m_SampleRate);
m_Writer.Write(m_AvgByteRate);
m_Writer.Write(m_Align);
m_Writer.Write(m_Bits);
m_Writer.Write(new char[] { 'd', 'a', 't', 'a' });
m_Writer.Write(dwDataSize);
if (m_Channels == 1) //Mono
{
while (m_Reader.BaseStream.Position < m_Reader.BaseStream.Length)
{
DecompressMono(m_Reader.ReadBytes(0xF));
}
}
else if (m_Channels == 2) //Stereo
{
while (m_Reader.BaseStream.Position < m_Reader.BaseStream.Length)
{
DecompressStereo(m_Reader.ReadBytes(0x1E));
}
}
}