/// <summary> /// Creates a <see cref="WaveFileWriter"/> that writes to a <see cref="Stream"/>. /// </summary> public WaveFileWriter(Stream outStream, WaveFormat format) { _ofstream = outStream; _writer = new BinaryWriter(outStream, UTF8); _writer.Write(UTF8.GetBytes("RIFF")); _writer.Write(0); // placeholder _writer.Write(UTF8.GetBytes("WAVEfmt ")); _waveFormat = format; _writer.Write(18 + format.ExtraSize); // wave format Length format.Serialize(_writer); // CreateFactChunk if (format.Encoding != WaveFormatTag.Pcm) { _writer.Write(UTF8.GetBytes("fact")); _writer.Write(4); _factSampleCountPos = outStream.Position; _writer.Write(0); // number of samples } // WriteDataChunkHeader _writer.Write(UTF8.GetBytes("data")); _dataSizePos = outStream.Position; _writer.Write(0); // placeholder Length = 0; }