Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }