Exemplo n.º 1
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            stream.WriteBEUInt32(ReferenceId);
            stream.WriteBEUInt32(Timescale);

            if (Version == 1)
            {
                stream.WriteBEUInt64(EarliestPresentationTime);
                stream.WriteBEUInt64(FirstOffset);
            }
            else // v0
            {
                stream.WriteBEUInt32((uint)EarliestPresentationTime);
                stream.WriteBEUInt32((uint)FirstOffset);
            }

            stream.WriteBEUInt16(Reserved1);
            stream.WriteBEUInt16(ReferenceCount);

            for (int i = 0; i < Entries.Length; i++)
            {
                ref SegmentIndexEntry entry = ref Entries[i];

                entry.WriteTo(stream);
            }
Exemplo n.º 2
0
        protected override void LoadFromStream(Stream stream)
        {
            base.LoadFromStream(stream);

            ReferenceId = stream.ReadBEUInt32();
            Timescale   = stream.ReadBEUInt32();

            if (Version == 1)
            {
                EarliestPresentationTime = stream.ReadBEUInt64();
                FirstOffset = stream.ReadBEUInt64();
            }
            else // v0
            {
                EarliestPresentationTime = stream.ReadBEUInt32();
                FirstOffset = stream.ReadBEUInt32();
            }

            Reserved1      = stream.ReadBEUInt16();
            ReferenceCount = stream.ReadBEUInt16();

            Entries = new SegmentIndexEntry[ReferenceCount];

            for (int i = 0; i < ReferenceCount; i++)
            {
                uint referenceValue = stream.ReadBEUInt32();
                uint duration       = stream.ReadBEUInt32();
                uint sapValue       = stream.ReadBEUInt32();

                Entries[i] = new SegmentIndexEntry(referenceValue, duration, sapValue);
            }
        }