public ReadUInt16 ( EndianType endianType ) : |
||
endianType | EndianType | |
return |
public UInt16 ReadUInt16(EndianType endianType)
{
if ((BitConverter.IsLittleEndian && endianType != EndianType.Little) || (!BitConverter.IsLittleEndian && endianType != EndianType.Big))
{
byte[] b = base.ReadBytes(2);
Array.Reverse(b);
return BitConverter.ToUInt16(b, 0);
}
else
return base.ReadUInt16();
}
public static WavSingleChunkHeader ParseWavSingleChunkHeader(Stream wavStream) { WavSingleChunkHeader w = new WavSingleChunkHeader(); byte[] b; BinaryEndianReader r = new BinaryEndianReader(wavStream); b = r.ReadBytes(4); w.FileId = Encoding.Default.GetString(b); w.FileLength = r.ReadUInt32(EndianType.Little); b = r.ReadBytes(4); w.RiffType = Encoding.Default.GetString(b); b = r.ReadBytes(4); w.ChunkHeaderId = Encoding.Default.GetString(b); w.ChunkHeaderLength = r.ReadUInt32(EndianType.Little); long p = wavStream.Position; w.FormatTag = r.ReadUInt16(EndianType.Little); w.Channels = r.ReadUInt16(EndianType.Little); w.SamplesPerSec = r.ReadUInt32(EndianType.Little); w.AvgBytesPerSec = r.ReadUInt32(EndianType.Little); w.BlockAlign = r.ReadUInt16(EndianType.Little); w.BitsPerSample = r.ReadUInt16(EndianType.Little); if (wavStream.Position - p != w.ChunkHeaderLength) w.ExtraBytes = r.ReadBytes((int)(w.ChunkHeaderLength - (wavStream.Position - p))); b = r.ReadBytes(4); w.ChunkId = Encoding.Default.GetString(b); w.ChunkLength = r.ReadUInt32(EndianType.Little); w.DataOffset = (int)wavStream.Position; return w; }