Exemplo n.º 1
0
        private void ReadHeader()
        {
            BinaryReader binaryReader = new BinaryReader(this._stream);

            if (WaveFile.ReadChunk(binaryReader) != "RIFF")
            {
                throw new Exception("Invalid file format");
            }
            binaryReader.ReadInt32();
            if (WaveFile.ReadChunk(binaryReader) != "WAVE")
            {
                throw new Exception("Invalid file format");
            }
            if (WaveFile.ReadChunk(binaryReader) != "fmt ")
            {
                throw new Exception("Invalid file format");
            }
            int num = binaryReader.ReadInt32();

            if (num < 16)
            {
                throw new Exception("Invalid file format");
            }
            this._formatTag = binaryReader.ReadInt16();
            this._isPCM     = (this._formatTag == 1);
            if (binaryReader.ReadInt16() != 2)
            {
                throw new Exception("Invalid file format");
            }
            this._sampleRate     = binaryReader.ReadInt32();
            this._avgBytesPerSec = binaryReader.ReadInt32();
            this._blockAlign     = binaryReader.ReadInt16();
            this._bitsPerSample  = binaryReader.ReadInt16();
            for (num -= 16; num > 0; num--)
            {
                binaryReader.ReadByte();
            }
            while (this._stream.Position < this._stream.Length && WaveFile.ReadChunk(binaryReader) != "data")
            {
                num = binaryReader.ReadInt32();
                while (this._stream.Position < this._stream.Length && num > 0)
                {
                    binaryReader.ReadByte();
                    num--;
                }
            }
            if (this._stream.Position >= this._stream.Length)
            {
                throw new Exception("Invalid file format");
            }
            this._length  = binaryReader.ReadInt32();
            this._dataPos = this._stream.Position;
        }
Exemplo n.º 2
0
        private void ReadHeader()
        {
            BinaryReader binaryReader = new BinaryReader(this._stream);

            if (WaveFile.ReadChunk(binaryReader) != "RIFF")
            {
                throw new Exception("Invalid file format");
            }
            int num = binaryReader.ReadInt32();

            if (WaveFile.ReadChunk(binaryReader) != "WAVE")
            {
                throw new Exception("Invalid file format");
            }
            if (WaveFile.ReadChunk(binaryReader) != "fmt ")
            {
                throw new Exception("Invalid file format");
            }
            num = binaryReader.ReadInt32();
            if (num < 16)
            {
                throw new Exception("Invalid file format");
            }
            this._formatTag = binaryReader.ReadInt16();
            this._isPCM     = (this._formatTag == 1);
            short num2 = binaryReader.ReadInt16();

            if (num2 != 2)
            {
                throw new Exception("Invalid file format");
            }
            this._sampleRate     = binaryReader.ReadInt32();
            this._avgBytesPerSec = binaryReader.ReadInt32();
            this._blockAlign     = binaryReader.ReadInt16();
            this._bitsPerSample  = binaryReader.ReadInt16();
            for (num -= 16; num > 0; num--)
            {
                binaryReader.ReadByte();
            }
            string text = "";

            while (this._stream.Position < this._stream.Length)
            {
                text = WaveFile.ReadChunk(binaryReader);
                if (text == "data")
                {
                    break;
                }
                num = binaryReader.ReadInt32();
                while (this._stream.Position < this._stream.Length && num > 0)
                {
                    binaryReader.ReadByte();
                    num--;
                }
            }
            if (this._stream.Position >= this._stream.Length)
            {
                throw new Exception("Invalid file format");
            }
            this._size    = binaryReader.ReadInt32();
            this._dataPos = this._stream.Position;
            int num3 = num2 * this._sampleRate * this._bitsPerSample / 8;

            this._duration = this._size / num3;
        }