Пример #1
0
 /// <summary>
 /// Named Reference key
 /// </summary>
 /// <param name="reader"></param>
 public MXFRefKey(MXFReader reader, UInt32 size, string name)
     : base(reader.Position)
 {
     this.Name   = name;
     this.Key    = new MXFKey(reader, size);
     this.Length = this.Key.Length;
 }
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x3D0D: this.Emphasis = reader.ReadB(); return(true);

            case 0x3D0F: this.BlockStartOffset = reader.ReadW(); return(true);

            case 0x3D08: this.AuxiliaryBitsMode = reader.ReadB(); return(true);

            case 0x3D10:
                this.ChannelStatusMode = new byte[localTag.Size];
                reader.Read(this.ChannelStatusMode, localTag.Size);
                return(true);

            case 0x3D11:
                this.FixedChannelStatusData = new byte[localTag.Size];
                reader.Read(this.FixedChannelStatusData, localTag.Size);
                return(true);

            case 0x3D12:
                this.UserDataMode = new byte[localTag.Size];
                reader.Read(this.UserDataMode, localTag.Size);
                return(true);

            case 0x3D13:
                this.FixedUserData = new byte[localTag.Size];
                reader.Read(this.FixedUserData, localTag.Size);
                return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
Пример #3
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x3D0D: this.Emphasis = (MXFEmphasis)reader.ReadByte(); return(true);

            case 0x3D0F: this.BlockStartOffset = reader.ReadUInt16(); return(true);

            case 0x3D08: this.AuxiliaryBitsMode = (MXFAuxBitsMode)reader.ReadByte(); return(true);

            case 0x3D10: this.ChannelStatusMode = reader.ReadArray(reader.ReadChannelstatusMode, 8); return(true);

            case 0x3D11:
                this.FixedChannelStatusData = reader.ReadArray(reader.ReadByte, localTag.Size);
                return(true);

            case 0x3D12:
                this.UserDataMode = reader.ReadArray(reader.ReadUserDataMode, 2); return(true);

            case 0x3D13:
                this.FixedUserData = reader.ReadArray(reader.ReadByte, localTag.Size);
                return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            if (localTag.Key != null)
            {
                switch (localTag.Key)
                {
                case var _ when localTag.Key == bitRate_Key: this.BitRate = reader.ReadUInt32(); return(true);

                case var _ when localTag.Key == identicalGOPIndicator_Key: this.IdenticalGOPIndicator = reader.ReadBool(); return(true);

                case var _ when localTag.Key == maxGOPSize_Key: this.MaximumGOPSize = reader.ReadUInt16(); return(true);

                case var _ when localTag.Key == maxBPictureCount_Key: this.MaximumBPictureCount = reader.ReadUInt16(); return(true);

                case var _ when localTag.Key == constantBPictureFlag_Key: this.ConstantBPictureFlag = reader.ReadBool(); return(true);

                case var _ when localTag.Key == codedContentScanningKind_Key: this.CodedContentScanningKind = (MXFCodedContentScanning)reader.ReadByte(); return(true);

                case var _ when localTag.Key == profileAndLevel_Key: this.ProfileAndLevel = reader.ReadByte(); return(true);

                case var _ when localTag.Key == singleSequenceFlag_Key: this.SingleSequenceFlag = reader.ReadBool(); return(true);

                case var _ when localTag.Key == closedGOP_Key: this.ClosedGOPIndicator = reader.ReadBool(); return(true);

                case var _ when localTag.Key == lowDelay_Key: this.LowDelayIndicator = reader.ReadBool(); return(true);
                }
            }

            return(base.ParseLocalTag(reader, localTag));
        }
Пример #5
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x3301: this.ComponentDepth = reader.ReadD(); return(true);

            case 0x3302: this.HorizontalSubsampling = reader.ReadD(); return(true);

            case 0x3308: this.VerticalSubsampling = reader.ReadD(); return(true);

            case 0x3303: this.ColorSiting = reader.ReadB(); return(true);

            case 0x330B: this.ReversedByteOrder = reader.ReadBool(); return(true);

            case 0x3307: this.PaddingBits = (Int16)reader.ReadW(); return(true);

            case 0x3309: this.AlphaSampleDepth = reader.ReadD(); return(true);

            case 0x3304: this.BlackRefLevel = reader.ReadD(); return(true);

            case 0x3305: this.WhiteRefLevel = reader.ReadD(); return(true);

            case 0x3306: this.ColorRange = reader.ReadD(); return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
Пример #6
0
 /// <summary>
 /// Parse this tag
 /// </summary>
 /// <param name="reader"></param>
 public void Parse(MXFReader reader)
 {
     if (this.Size == 1)
     {
         this.Value = reader.ReadByte();
     }
     else if (this.Size == 2)
     {
         this.Value = reader.ReadUInt16();
     }
     else if (this.Size == 4)
     {
         this.Value = reader.ReadUInt32();
     }
     else if (this.Size == 8)
     {
         this.Value = reader.ReadUInt64();
     }
     else
     {
         byte[] data = new byte[this.Size];
         for (int n = 0; n < this.Size; n++)
         {
             data[n] = reader.ReadByte();
         }
         this.Value = data;
     }
 }
Пример #7
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            if (localTag.Key != null)
            {
                switch (localTag.Key)
                {
                case var _ when localTag.Key == initMetadata_Key: this.VC1InitializationMetadata = reader.ReadArray(reader.ReadByte, localTag.Size); return(true);

                case var _ when localTag.Key == singleSequence_Key: this.VC1SingleSequence = reader.ReadBool(); return(true);

                case var _ when localTag.Key == codedContent_Key: this.VC1CodedContentType = (MXFCodedContentScanning)reader.ReadByte(); return(true);

                case var _ when localTag.Key == identicalGOP_Key: this.VC1IdenticalGOP = reader.ReadBool(); return(true);

                case var _ when localTag.Key == maxGOP_Key: this.VC1MaxGOP = reader.ReadUInt16(); return(true);

                case var _ when localTag.Key == pictureCount_Key: this.VC1BPictureCount = reader.ReadUInt16(); return(true);

                case var _ when localTag.Key == avgBitRate_Key: this.VC1AverageBitRate = reader.ReadUInt32(); return(true);

                case var _ when localTag.Key == maxBitRate_Key: this.VC1MaximumBitRate = reader.ReadUInt32(); return(true);

                case var _ when localTag.Key == profile_Key: this.VC1Profile = reader.ReadByte(); return(true);

                case var _ when localTag.Key == level_Key: this.VC1Level = reader.ReadByte(); return(true);
                }
            }

            return(base.ParseLocalTag(reader, localTag));
        }
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x3D0A: this.BlockAlign = reader.ReadW(); return(true);

            case 0x3D0B: this.SequenceOffset = reader.ReadB(); return(true);

            case 0x3D09: this.AveragesBytesPerSecond = reader.ReadD(); return(true);

            case 0x3D32: this.ChannelAssignment = reader.ReadKey(); return(true);

            case 0x3D29: this.PeakEnvelopeVersion = reader.ReadD(); return(true);

            case 0x3D2A: this.PeakEnvelopeFormat = reader.ReadD(); return(true);

            case 0x3D2B: this.PointsPerPeakValue = reader.ReadD(); return(true);

            case 0x3D2C: this.PeakEnvelopeBlockSize = reader.ReadD(); return(true);

            case 0x3D2D: this.PeakChannels = reader.ReadD(); return(true);

            case 0x3D2E: this.PeakFrames = reader.ReadD(); return(true);

            case 0x3D2F: this.PeakOfPeaksPosition = reader.ReadL(); return(true);

            case 0x3D30: this.PeakEnvelopeTimestamp = reader.ReadTimestamp(); return(true);

            case 0x3D31:
                this.PeakEnvelopeData = new byte[localTag.Size];
                reader.Read(this.PeakEnvelopeData, localTag.Size);
                return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
Пример #9
0
 /// <summary>
 /// Create the KLV key
 /// </summary>
 /// <param name="reader"></param>
 public MXFKLV(MXFReader reader, MXFKey key)
     : base(reader)
 {
     this.Key        = CreateAndValidateKey(reader);
     this.Length     = DecodeBerLength(reader);
     this.DataOffset = reader.Position;
 }
        /// <summary>
        /// Read a list of keys
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="categoryName"></param>
        /// <returns></returns>
        protected UInt32 ReadKeyList(MXFReader reader, string categoryName, string singleItem)
        {
            MXFObject keylist = reader.ReadKeyList(categoryName, singleItem);

            this.AddChild(keylist);
            return((UInt32)keylist.ChildCount);
        }
Пример #11
0
        /// <summary>
        /// Validate if the current position is a valid SMPTE key
        /// </summary>
        private MXFKey CreateAndValidateKey(MXFReader reader)
        {
            byte iso = reader.ReadB();
            byte len = reader.ReadB();
            byte smp = 0, te = 0;
            bool valid = false;

            if (iso == 0x06)              // Do not check length when not iso
            {
                smp   = reader.ReadB();
                te    = reader.ReadB();
                valid = (smp == 0x2B && te == 0x34);                 // SMPTE define
            }
            if (!valid)
            {
                //throw new ApplicationException(string.Format("Invalid SMPTE Key found at offset {0}! Incorrect MXF file!", reader.Position - 4));
                MXFKey key = new MXFKey(iso, len, smp, te, reader);
                LogError("Invalid SMPTE Key found at offset {0}! Key: {1}", reader.Position - 4, key.Name);
                return(key);
            }
            else
            {
                return(new MXFKey(iso, len, smp, te, reader));
            }
        }
Пример #12
0
 public MXFCDPFuture(MXFReader reader, byte sectionID)
     : base(reader)
 {
     this.SectionID = sectionID;
     this.Length    = reader.ReadByte();
     this.Data      = reader.ReadArray(reader.ReadByte, (int)this.Length);
 }
Пример #13
0
        public MXFEntryIndex(UInt64 index, MXFReader reader, byte?sliceCount, byte?posTableCount, UInt32 length)
            : base(reader)
        {
            this.m_eType = MXFObjectType.Index;

            this.Length         = length;
            this.Index          = index;
            this.TemporalOffset = reader.ReadSignedByte();
            this.KeyFrameOffset = reader.ReadSignedByte();
            this.Flags          = new IndexEntryFlags(reader.ReadByte());
            this.StreamOffset   = reader.ReadUInt64();

            if (sliceCount.HasValue && sliceCount.Value > 0)
            {
                this.SliceOffsets = new UInt32[sliceCount.Value];
                for (int n = 0; n < sliceCount; n++)
                {
                    this.SliceOffsets[n] = reader.ReadUInt32();
                }
            }

            if (posTableCount.HasValue && posTableCount.Value > 0)
            {
                this.PosTable = new MXFRational[posTableCount.Value];
                for (int n = 0; n < posTableCount; n++)
                {
                    this.PosTable[n] = reader.ReadRational();
                }
            }
        }
Пример #14
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x3D03: this.AudioSamplingRate = reader.ReadRational(); return(true);

            case 0x3D02: this.Locked = reader.ReadBool(); return(true);

            case 0x3D04: this.AudioRefLevel = reader.ReadSignedByte(); return(true);

            case 0x3D05: this.ElectroSpatialFormulation = (MXFElectroSpatialFormulation)reader.ReadByte(); return(true);

            case 0x3D07: this.ChannelCount = reader.ReadUInt32(); return(true);

            case 0x3D01: this.QuantizationBits = reader.ReadUInt32(); return(true);

            case 0x3D0C: this.DialNorm = reader.ReadSignedByte(); return(true);

            case 0x3D06: this.SoundEssenceCoding = reader.ReadULKey(); return(true);

            case var _ when localTag.Key == refImageEditRate_Key: this.ReferenceImageEditRate = reader.ReadRational(); return(true);

            case var _ when localTag.Key == refAudioAlignmentLevel: this.ReferenceAudioAlignmentLevel = reader.ReadByte(); return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
Пример #15
0
        /// <summary>
        /// Decode the length
        /// </summary>
        /// <param name="reader"></param>
        private MXFBER DecodeBerLength(MXFReader reader)
        {
            long size = reader.ReadByte();

            if (size <= 0x7F)
            {
                // short form, size = length
                return(new MXFBER(0, size));
            }
            else if (size > 0x80)
            {
                // long form: size is number of octets following, 1 + x octets
                int additionalOctets = (int)size - 0x80;

                // SMPTE 379M 5.3.4 guarantee that additional octets must not exceed 8 bytes
                if (additionalOctets > 8)
                {
                    LogWarning("KLV length has more than 8 octets (not valid according to SMPTE 379M 5.3.4) found at offset {0}!", reader.Position);
                }
                size = 0;
                for (int i = 0; i < additionalOctets; i++)
                {
                    size = size << 8 | reader.ReadByte();
                }

                return(new MXFBER(additionalOctets, size));
            }
            else
            {
                // size is 0x80, which means indefinite
                LogWarning("KLV length having value 0x80 (=indefinite, not valid according to SMPTE 379M 5.3.4) found at offset {0}!", reader.Position);
                return(new MXFBER(-1, -1));
            }
        }
Пример #16
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x8007: this.LensAttributes = reader.ReadUTF8String(localTag.Size); return(true);

            case 0x8000: this.IrisFNumber = reader.ReadUInt16(); return(true);

            case 0x8001: this.FocusPositionFromImagePlane = reader.ReadUInt16();  return(true);

            case 0x8002: this.FocusPositionFromFrontLensVertex = reader.ReadUInt16(); return(true);

            case 0x8003: this.MacroSetting = reader.ReadBool(); return(true);

            case 0x8004: this.LensZoom35mmStillCameraEquivalent = reader.ReadUInt16(); return(true);

            case 0x8005: this.LensZoomActualFocalLength = reader.ReadUInt16(); return(true);

            case 0x8006: this.OpticalExtenderMagnification = reader.ReadUInt16(); return(true);

            case 0x8008: this.IrisTNumber = reader.ReadUInt16(); return(true);

            case 0x8009: this.IrisRingPosition = reader.ReadUInt16(); return(true);

            case 0x800a: this.FocusRingPosition = reader.ReadUInt16(); return(true);

            case 0x800b: this.ZoomRingPosition = reader.ReadUInt16(); return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
Пример #17
0
        /// <summary>
        /// Load the entire partition from disk (when not yet loaded)
        /// </summary>
        public void Load()
        {
            if (!this.IsLoaded)
            {
                MXFKLVFactory klvFactory = new MXFKLVFactory();
                using (MXFReader reader = new MXFReader(this.File.Filename))
                {
                    // Seek just after this partition
                    reader.Seek(this.DataOffset + this.Length);

                    while (!reader.EOF)
                    {
                        MXFKLV klv = klvFactory.CreateObject(reader, this);

                        if (klv.Key.Type == KeyType.Partition || klv.Key.Type == KeyType.RIP || klv.Key.Type == KeyType.PrimerPack)
                        {
                            break; // Next partition or other segment, quit reading
                        }
                        if (!this.Children.Any(a => a.Offset == klv.Offset))
                        {
                            // Normal, just add the new child
                            this.AddChild(klv);
                        }

                        // Next KLV please
                        reader.Seek(klv.DataOffset + klv.Length);
                    }
                }
                this.IsLoaded = true;
            }
        }
Пример #18
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            if (localTag.Key != null)
            {
                switch (localTag.Key)
                {
                case var _ when localTag.Key == pictureFormatObject_Key:
                    this.AddChild(reader.ReadReference <MXFDescriptiveObject>("PictureFormatObject"));
                    return(true);

                case var _ when localTag.Key == projectObject_Key:
                    this.AddChild(reader.ReadReference <MXFDescriptiveObject>("ProjectObject"));
                    return(true);

                case var _ when localTag.Key == captionsDescriptionObjects_Key:
                    this.AddChild(reader.ReadReferenceSet <MXFDescriptiveObject>("CaptionsDescriptionObjects", "CaptionsDescriptionObject"));
                    return(true);

                case var _ when localTag.Key == contractObjects_Key:
                    this.AddChild(reader.ReadReferenceSet <MXFDescriptiveObject>("ContractObjects", "ContractObject"));
                    return(true);
                }
            }

            return(base.ParseLocalTag(reader, localTag));
        }
Пример #19
0
        public MXFANCPacket(MXFReader reader)
            : base(reader)
        {
            this.LineNumber            = reader.ReadW();
            this.WrappingType          = (MXFANCWrappingType)reader.ReadB();
            this.PayloadSamplingCoding = (MXFANCPayloadCoding)reader.ReadB();
            this.PayloadSampleCount    = reader.ReadW();

            this.Length = this.PayloadSampleCount;
            if (this.PayloadSamplingCoding == MXFANCPayloadCoding.Coding_10_bit_luma_samples ||
                this.PayloadSamplingCoding == MXFANCPayloadCoding.Coding_10_bit_color_difference_samples ||
                this.PayloadSamplingCoding == MXFANCPayloadCoding.Coding_10_bit_luma_and_color_difference_samples)
            {
                this.Length = 4 * (this.PayloadSampleCount / 3);                 // 3 samples are stored in 4 bytes
            }

            // Skip 8 bytes (seems to be data but cannot find any meaning in the spec!)
            UInt32 unknownData1 = reader.ReadD();
            UInt32 unknownData2 = reader.ReadD();

            // Length Alignment
            this.Length = 4 * ((this.Length + 3) / 4);

            if (this.Length > 3)
            {
                // Read the DID
                this.DID  = reader.ReadB();
                this.SDID = reader.ReadB();
                this.Size = reader.ReadB();

                UInt16 combinedID = (UInt16)((((UInt16)this.DID) << 8) | this.SDID);
                if (m_DIDDescription.ContainsKey(combinedID))
                {
                    this.ContentDescription = m_DIDDescription[combinedID];
                }
                else
                {
                    this.ContentDescription = "<unknown content>";
                }

                switch (combinedID)
                {
                case 0x6101:                         // CDP
                    this.AddChild(new MXFCDPPacket(reader));
                    break;

                case 0x4105:                         // AFD
                    break;

                case 0x4302:                         // OP47
                    break;

                default:
                    // Read the real payload without the did/sdid/size
                    this.Payload = new byte[this.Length - 3];
                    reader.Read(this.Payload, this.Length - 3);
                    break;
                }
            }
        }
Пример #20
0
        /// <summary>
        /// Overridden method to process local tags
        /// </summary>
        /// <param name="localTag"></param>
        protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
        {
            switch (localTag.Tag)
            {
            case 0x3B02: this.LastModificationDate = reader.ReadTimestamp(); return(true);

            case 0x3B05: this.Version = reader.ReadVersion(); return(true);

            case 0x3B07: this.ObjectModelVersion = reader.ReadUInt32(); return(true);

            case 0x3B03: this.AddChild(reader.ReadReference <MXFContentStorage>("ContentStorage")); return(true);

            case 0x3B08: this.AddChild(reader.ReadReference <MXFGenericPackage>("PrimaryPackage")); return(true);

            case 0x3B09: this.OperationalPattern = reader.ReadULKey(); return(true);

            case 0x3B06: this.AddChild(reader.ReadReferenceSet <MXFIdentification>("Identifications", "Identification")); return(true);

            case 0x3B0A: this.AddChild(reader.ReadAUIDSet("EssenceContainers", "EssenceContainer")); return(true);

            // TODO review how the metadataschemes are read (especially if there are no schemes present)
            case 0x3B0B: this.AddChild(reader.ReadAUIDSet("Descriptive Metadata Schemes", "DM scheme")); return(true);

            case var _ when localTag.Key == isRIPPresent_Key: this.IsRIPPresent = reader.ReadBool(); return(true);
            }
            return(base.ParseLocalTag(reader, localTag));
        }
Пример #21
0
 public MXFAUID(MXFReader reader, string name)
     : base(reader.Position)
 {
     this.Name   = name;
     this.Key    = reader.ReadULKey();
     this.Length = this.Key.Length;
 }
Пример #22
0
        /// <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();
        }
Пример #23
0
 /// <summary>
 /// Overridden method to process local tags
 /// </summary>
 /// <param name="localTag"></param>
 protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
 {
     switch (localTag.Tag)
     {
     }
     return(base.ParseLocalTag(reader, localTag));
 }
Пример #24
0
 public MXFMetadataBaseclass(MXFReader reader, MXFKLV headerKLV)
     : base(headerKLV, "MetaData", KeyType.MetaData)
 {
     this.m_eType      = MXFObjectType.Meta;
     this.MetaDataName = "<unknown>";
     Initialize(reader);
 }
Пример #25
0
 /// <summary>
 /// Overridden method to process local tags
 /// </summary>
 /// <param name="localTag"></param>
 protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
 {
     switch (localTag.Tag)
     {
     case 0x3101: this.AIFCSummary = reader.ReadArray(reader.ReadByte, localTag.Size); return(true);
     }
     return(base.ParseLocalTag(reader, localTag));
 }
Пример #26
0
 /// <summary>
 /// Overridden method to process local tags
 /// </summary>
 /// <param name="localTag"></param>
 protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
 {
     switch (localTag.Tag)
     {
     case 0x4001: LocatorName = reader.ReadS(localTag.Size); return(true);
     }
     return(base.ParseLocalTag(reader, localTag));
 }
Пример #27
0
 public MXFEntryRIP(MXFReader reader)
     : base(reader)
 {
     this.m_eType         = MXFObjectType.RIP;
     this.BodySID         = reader.ReadD();
     this.PartitionOffset = reader.ReadL();
     this.Length          = 12;    // Fixed length
 }
Пример #28
0
 /// <summary>
 /// Overridden method to process local tags
 /// </summary>
 /// <param name="localTag"></param>
 protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
 {
     switch (localTag.Tag)
     {
     case 0x4701: this.AddChild(reader.ReadReference <MXFGenericDescriptor>("EssenceDescription")); return(true);
     }
     return(base.ParseLocalTag(reader, localTag));
 }
Пример #29
0
 public MXFMetadataBaseclass(MXFReader reader, MXFKLV headerKLV, string metaDataName)
     : base(headerKLV, "MetaData", KeyType.MetaData)
 {
     this.m_eType      = MXFObjectType.Meta;
     this.MetaDataName = metaDataName;
     this.Key.Name     = metaDataName; // TODO Correct??
     Initialize(reader);
 }
Пример #30
0
 /// <summary>
 /// Overridden method to process local tags
 /// </summary>
 /// <param name="localTag"></param>
 protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag)
 {
     switch (localTag.Tag)
     {
     case 0x4101: LocationName = reader.ReadUTF16String(localTag.Size); return(true);
     }
     return(base.ParseLocalTag(reader, localTag));
 }