public WaveFormat(BinaryStream stream) { UInt32 riffChunkSize = Riff.VerifyChunkIdAndGetSize(stream, Riff.RiffHeaderID); Console.WriteLine("Riff Chunk Size {0}", riffChunkSize); Riff.Verify(stream, Wave.WaveHeaderID, "Expected RIFF format to be"); UInt32 formatChunkSize = Riff.VerifyChunkIdAndGetSize(stream, Wave.FmtHeaderID); if (formatChunkSize < 16) { throw new FormatException(String.Format("Expected wave 'fmt ' chunk size to be at least 16 but is {0}", formatChunkSize)); } this.audioFormat = stream.LittleEndianReadUInt16(); this.channelCount = stream.LittleEndianReadUInt16(); this.samplesPerSecond = stream.LittleEndianReadUInt32(); this.avgBytesPerSecond = stream.LittleEndianReadUInt32(); this.blockAlign = stream.LittleEndianReadUInt16(); this.bitsPerSample = stream.LittleEndianReadUInt16(); // skip extra parameters stream.Skip((Int32)formatChunkSize - 16); // this.dataChunkSize = Riff.VerifyChunkIdAndGetSize(stream, Wave.DataHeaderID); }