public static StreamInfo ReadBfwav(BinaryReader reader, NwVersion version) { var info = new StreamInfo(); info.Codec = (NwCodec)reader.ReadByte(); info.Looping = reader.ReadBoolean(); reader.BaseStream.Position += 2; info.SampleRate = reader.ReadInt32(); info.LoopStart = reader.ReadInt32(); info.SampleCount = reader.ReadInt32(); if (Common.IncludeUnalignedLoopWave(version)) { info.LoopStartUnaligned = reader.ReadInt32(); } else { reader.BaseStream.Position += 4; } //Peek at the number of entries in the reference table info.ChannelCount = reader.ReadInt32(); reader.BaseStream.Position -= 4; return(info); }
public static StreamInfo ReadBfstm(BinaryReader reader, NwVersion version) { var info = new StreamInfo { Codec = (NwCodec)reader.ReadByte(), Looping = reader.ReadBoolean(), ChannelCount = reader.ReadByte(), RegionCount = reader.ReadByte(), SampleRate = reader.ReadInt32(), LoopStart = reader.ReadInt32(), SampleCount = reader.ReadInt32(), InterleaveCount = reader.ReadInt32(), InterleaveSize = reader.ReadInt32(), SamplesPerInterleave = reader.ReadInt32(), LastBlockSizeWithoutPadding = reader.ReadInt32(), LastBlockSamples = reader.ReadInt32(), LastBlockSize = reader.ReadInt32(), BytesPerSeekTableEntry = reader.ReadInt32(), SamplesPerSeekTableEntry = reader.ReadInt32(), AudioReference = new Reference(reader) }; if (Common.IncludeRegionInfo(version)) { info.RegionInfoSize = reader.ReadInt16(); reader.BaseStream.Position += 2; info.RegionReference = new Reference(reader); } if (Common.IncludeUnalignedLoop(version)) { info.LoopStartUnaligned = reader.ReadInt32(); info.LoopEndUnaligned = reader.ReadInt32(); } if (Common.IncludeChecksum(version)) { info.Checksum = reader.ReadUInt32(); } return(info); }