Exemplo n.º 1
0
            public void Read(BinaryReader binaryReader, int entryIndex, long mtrlSectionOffset, long pointerPosition)
            {
                EntryIndex = entryIndex;
                PositionOfOffsetFromMtrlSectionOffset = pointerPosition;
                LocalSectionOffset = binaryReader.ReadUInt32At(PositionOfOffsetFromMtrlSectionOffset);
                HeaderPosition     = mtrlSectionOffset + LocalSectionOffset;
                ChannelCount       = binaryReader.ReadByteAt(HeaderPosition + 0x04);
                Codec              = (MaterialCodecType)binaryReader.ReadByteAt(HeaderPosition + 0x05);
                MtrlNumber         = binaryReader.ReadUInt16At(HeaderPosition + 0x06);
                SampleRate         = binaryReader.ReadUInt32At(HeaderPosition + 0x08);
                LoopStart          = binaryReader.ReadUInt32At(HeaderPosition + 0x0c);
                LoopEnd            = binaryReader.ReadUInt32At(HeaderPosition + 0x10);
                ExtraDataSize      = binaryReader.ReadUInt32At(HeaderPosition + 0x14);
                StreamSize         = binaryReader.ReadUInt32At(HeaderPosition + 0x18);
                ExtraDataId        = binaryReader.ReadUInt16At(HeaderPosition + 0x1c);
                ExtraDataOffset    = HeaderPosition + 0x20;
                StreamPosition     = ExtraDataOffset + ExtraDataSize;
                MaterialHeaderSize = StreamPosition - HeaderPosition;


                InnerStreamStartPosition = ExtraDataOffset + 0x10;
                ReadCodecInformation(binaryReader);
                StreamHeaderSize            = ExtraDataObject?.Size ?? 0;
                NoStreamHeaderExtraDataSize = ExtraDataSize - StreamHeaderSize;

                InnerStreamSize    = StreamHeaderSize + StreamSize;
                NoStreamHeaderSize = InnerStreamStartPosition - HeaderPosition;
                TrackEndPosition   = InnerStreamStartPosition + InnerStreamSize;
            }
Exemplo n.º 2
0
        public static ACodec GetCodec(MaterialCodecType codec)
        {
            switch (codec)
            {
            default: return(null);

            case MaterialCodecType.OGGVorbis: return(new OggVorbisCodec());

            case MaterialCodecType.HCA: return(new HcaACodec());
            }
        }