internal static byte[] GetWaveFormat(BinaryReader br) { RIFFHDR rIFFHDR = default(RIFFHDR); rIFFHDR._id = br.ReadUInt32(); rIFFHDR._len = br.ReadInt32(); rIFFHDR._type = br.ReadUInt32(); if (rIFFHDR._id != 1179011410 && rIFFHDR._type != 1163280727) { return(null); } BLOCKHDR bLOCKHDR = default(BLOCKHDR); bLOCKHDR._id = br.ReadUInt32(); bLOCKHDR._len = br.ReadInt32(); if (bLOCKHDR._id != 544501094) { return(null); } byte[] array = br.ReadBytes(bLOCKHDR._len); if (bLOCKHDR._len == 16) { byte[] array2 = new byte[18]; Array.Copy(array, array2, 16); array = array2; } return(array); }
internal void GetStreamOffsets(Stream stream) { BinaryReader binaryReader = new BinaryReader(stream); RIFFHDR rIFFHDR = default(RIFFHDR); rIFFHDR._id = binaryReader.ReadUInt32(); rIFFHDR._len = binaryReader.ReadInt32(); rIFFHDR._type = binaryReader.ReadUInt32(); if (rIFFHDR._id != 1179011410 && rIFFHDR._type != 1163280727) { throw new FormatException(); } BLOCKHDR bLOCKHDR = default(BLOCKHDR); bLOCKHDR._id = binaryReader.ReadUInt32(); bLOCKHDR._len = binaryReader.ReadInt32(); if (bLOCKHDR._id != 544501094) { throw new FormatException(); } _wfx = binaryReader.ReadBytes(bLOCKHDR._len); if (bLOCKHDR._len == 16) { byte[] array = new byte[18]; Array.Copy(_wfx, array, 16); _wfx = array; } DATAHDR dATAHDR; while (true) { dATAHDR = default(DATAHDR); if (stream.Position + 8 < stream.Length) { dATAHDR._id = binaryReader.ReadUInt32(); dATAHDR._len = binaryReader.ReadInt32(); if (dATAHDR._id == 1635017060) { break; } stream.Seek(dATAHDR._len, SeekOrigin.Current); continue; } return; } _endOfStreamPosition = stream.Position + dATAHDR._len; }
internal static void WriteWaveHeader(Stream stream, WAVEFORMATEX waveEx, long position, int cData) { RIFFHDR rIFFHDR = new RIFFHDR(0); BLOCKHDR bLOCKHDR = new BLOCKHDR(0); DATAHDR dATAHDR = new DATAHDR(0); int num = Marshal.SizeOf((object)rIFFHDR); int num2 = Marshal.SizeOf((object)bLOCKHDR); int length = waveEx.Length; int num3 = Marshal.SizeOf((object)dATAHDR); int num4 = num + num2 + length + num3; using (MemoryStream memoryStream = new MemoryStream()) { BinaryWriter binaryWriter = new BinaryWriter(memoryStream); try { rIFFHDR._len = num4 + cData - 8; binaryWriter.Write(rIFFHDR._id); binaryWriter.Write(rIFFHDR._len); binaryWriter.Write(rIFFHDR._type); bLOCKHDR._len = length; binaryWriter.Write(bLOCKHDR._id); binaryWriter.Write(bLOCKHDR._len); binaryWriter.Write(waveEx.ToBytes()); dATAHDR._len = cData; binaryWriter.Write(dATAHDR._id); binaryWriter.Write(dATAHDR._len); stream.Seek(position, SeekOrigin.Begin); stream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length); } finally { ((IDisposable)binaryWriter).Dispose(); } } }