FSO.Files.XA.XAFile.DecompressFile C# (CSharp) 메소드

DecompressFile() 공개 메소드

Decompresses the sounddata and stores it in the the decompressed stream in this class.
public DecompressFile ( ) : void
리턴 void
        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));
                }
            }
        }