public static WaveFile Import(Stream stream) { WaveFile wav = new WaveFile(); while (stream.Position < stream.Length) { byte[] id = new byte[4]; stream.Read(id, 0, 4); string idn = Encoding.UTF8.GetString(id, 0, 4); switch (idn) { default: GenericChunk.Import(stream); break; case "RIFF": wav.RiffHeader = RiffChunk.Import(stream); break; case "fmt ": wav.FmtHeader = FmtChunk.Import(stream); break; case "data": wav.DataChunk = WaveDataChunk.Import(stream); break; } } return(wav); }
public static new FmtChunk Import(Stream stream) { FmtChunk chunk = new FmtChunk(); chunk.Size = stream.ReadInt(); chunk.AudioFormat = stream.ReadShort(); chunk.NumChannels = stream.ReadShort(); chunk.SampleRate = stream.ReadInt(); chunk.ByteRate = stream.ReadInt(); chunk.BlockAlign = stream.ReadShort(); chunk.BitsPerSample = stream.ReadShort(); if (chunk.Size > 16) { chunk.ExtraParamSize = stream.ReadShort(); chunk.ExtraParams = new byte[chunk.ExtraParamSize]; stream.Read(chunk.ExtraParams, 0, chunk.ExtraParamSize); } return(chunk); }