public void ID3ChunkWrite(BinaryWriter bw, string title, string album, string artists, byte[] albumCoverArt, string mimeType) { var chunkId = new byte[4]; chunkId[0] = (byte)'i'; chunkId[1] = (byte)'d'; chunkId[2] = (byte)'3'; chunkId[3] = (byte)' '; bw.Write(chunkId); long posStart = bw.BaseStream.Position; int chunkSize = 0; bw.Write(chunkSize); var id3w = new PcmDataLib.ID3Writer(); id3w.Write(bw, title, album, artists, albumCoverArt, mimeType); long posEnd = bw.BaseStream.Position; chunkSize = (int)(posEnd - posStart - 4); bw.BaseStream.Seek(posStart, SeekOrigin.Begin); bw.Write(chunkSize); bw.BaseStream.Seek(posEnd, SeekOrigin.Begin); AddPadIfNecessary(bw, chunkSize); }