/// <summary> /// /// </summary> /// <param name="reader"></param> private void Initialize(MXFReader reader) { // Make sure we read at the data position reader.Seek(this.DataOffset); // Read all local tags long klvEnd = this.DataOffset + this.Length; while (reader.Position + 4 < klvEnd) { MXFLocalTag tag = new MXFLocalTag(reader); long next = tag.DataOffset + tag.Size; AddRefKeyFromPrimerPack(tag); // Allow derived classes to handle the data if (!ParseLocalTag(reader, tag)) { // Not processed, use default tag.Parse(reader); // Add to the collection AddChild(tag); } reader.Seek(next); } // Allow derived classes to do some final work PostInitialize(); }
/// <summary> /// /// </summary> /// <param name="reader"></param> private void Initialize(MXFReader reader) { // Make sure we read at the data position reader.Seek(this.DataOffset); // Read all local tags long klvEnd = this.DataOffset + this.Length; while (reader.Position + 4 < klvEnd) { MXFLocalTag tag = new MXFLocalTag(reader); long next = tag.DataOffset + tag.Size; if (tag.Tag == 0x3C0A) { // Generic instance UID this.InstanceUID = reader.ReadKey(); } else { if (tag.Tag > 0x7FFF) { // Find the tag in the primerpack's keys if (this.Partition != null && this.Partition.PrimerKeys != null) { if (this.Partition.PrimerKeys.ContainsKey(tag.Tag)) { MXFEntryPrimer entry = this.Partition.PrimerKeys[tag.Tag]; tag.Name = entry.AliasUID.Key.Name; } } } // Allow derived classes to handle the data if (!ParseLocalTag(reader, tag)) { // Not processed, use default tag.Parse(reader); // Add to the collection AddChild(tag); } } reader.Seek(next); } // Allow derived classes to do some final work PostInitialize(); }