/// <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)); }
public MXFANCPacket(MXFReader reader) : base(reader) { this.LineNumber = reader.ReadUInt16(); this.WrappingType = (MXFANCWrappingType)reader.ReadByte(); this.PayloadSamplingCoding = (MXFANCPayloadCoding)reader.ReadByte(); this.PayloadSampleCount = reader.ReadUInt16(); 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.ReadUInt32(); UInt32 unknownData2 = reader.ReadUInt32(); // Length Alignment this.Length = 4 * ((this.Length + 3) / 4); if (this.Length > 3) { // Read the DID this.DID = reader.ReadByte(); this.SDID = reader.ReadByte(); this.Size = reader.ReadByte(); 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 = reader.ReadArray(reader.ReadByte, (int)(this.Length - 3)); break; } } }
public MXFLocalTag(MXFReader reader) : base(reader) { this.Tag = reader.ReadUInt16(); this.Size = reader.ReadUInt16(); this.DataOffset = reader.Position; this.Length = this.Size; }
public MXFSystemItem(MXFReader reader, MXFKLV headerKLV) : base(headerKLV, "SystemItem (CP)", KeyType.SystemItem) { this.m_eType = MXFObjectType.SystemItem; if (this.Key[12] == 0x14) { this.Key.Name = "SystemItem (GC)"; } reader.Seek(this.DataOffset); // Seek to the start of the data // Parse system bitmap this.SystemBitmap = (SystemBitmap)reader.ReadByte(); // Parse Content package rate byte rate = reader.ReadByte(); int rateIndex = (rate & 0x1E) >> 1; int[] rates = new int[16] { 0, 24, 25, 30, 48, 50, 60, 72, 75, 90, 96, 100, 120, 0, 0, 0 }; int rateNonDrop = 1; if (rateIndex < 16) { rateNonDrop = rates[rateIndex]; } this.PackageRate = rateNonDrop; if ((rate & 0x01) == 0x01) // 1.001 divider active? { this.PackageRate = this.PackageRate / 1.001; } // Parse Content Package Type byte type = reader.ReadByte(); this.StreamStatus = (SystemStreamStatus)((type & 0xE0) >> 5); this.LowLatencyMode = ((type & 0x10) == 0x10); this.TransferMode = (SystemTransferMode)((type & 0x0C) >> 2); this.TimingMode = (SystemTimingMode)(type & 0x03); this.ChannelHandle = reader.ReadUInt16(); this.ContinuityCount = reader.ReadUInt16(); this.SMPTE = reader.ReadULKey(); // Always read even if zero MXFTimeStamp creationTimeStamp = reader.ReadBCDTimeCode(this.PackageRate); this.CreationDate = creationTimeStamp.ToString(); this.UserDate = reader.ReadBCDTimeCode(this.PackageRate); this.UserDateFullFrameNb = this.UserDate.GetString(true); }
/// <summary> /// Overridden method to process local tags /// </summary> /// <param name="localTag"></param> protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x0404: this.EdgeCodeHeader = reader.ReadArray(reader.ReadByte, localTag.Size); return(true); case 0x0401: this.EdgeCodeStart = reader.ReadUInt64(); return(true); case 0x0403: this.EdgeCodeFormat = (MXFEdgeType)reader.ReadUInt16(); return(true); case 0x0402: this.EdgeCodeFilmFormat = (MXFFilmType)reader.ReadUInt16(); 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 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)); }
protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x3301: this.ComponentDepth = reader.ReadUInt32(); return(true); case 0x3302: this.HorizontalSubsampling = reader.ReadUInt32(); return(true); case 0x3308: this.VerticalSubsampling = reader.ReadUInt32(); return(true); case 0x3303: this.ColorSiting = (MXFColorSiting)reader.ReadByte(); return(true); case 0x330B: this.ReversedByteOrder = reader.ReadBool(); return(true); case 0x3307: this.PaddingBits = (Int16)reader.ReadUInt16(); return(true); case 0x3309: this.AlphaSampleDepth = reader.ReadUInt32(); return(true); case 0x3304: this.BlackRefLevel = reader.ReadUInt32(); return(true); case 0x3305: this.WhiteRefLevel = reader.ReadUInt32(); return(true); case 0x3306: this.ColorRange = reader.ReadUInt32(); 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.ReadUInt16(); return(true); case 0x3D0B: this.SequenceOffset = reader.ReadByte(); return(true); case 0x3D09: this.AverageBytesPerSecond = reader.ReadUInt32(); return(true); case 0x3D32: this.ChannelAssignment = reader.ReadULKey(); return(true); case 0x3D29: this.PeakEnvelopeVersion = reader.ReadUInt32(); return(true); case 0x3D2A: this.PeakEnvelopeFormat = reader.ReadUInt32(); return(true); case 0x3D2B: this.PointsPerPeakValue = reader.ReadUInt32(); return(true); case 0x3D2C: this.PeakEnvelopeBlockSize = reader.ReadUInt32(); return(true); case 0x3D2D: this.PeakChannels = reader.ReadUInt32(); return(true); case 0x3D2E: this.PeakFrames = reader.ReadUInt32(); return(true); case 0x3D2F: this.PeakOfPeaksPosition = reader.ReadUInt64(); return(true); case 0x3D30: this.PeakEnvelopeTimestamp = reader.ReadTimestamp(); return(true); case 0x3D31: this.PeakEnvelopeData = 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 == 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> /// 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; } }
public MXFEntryPrimer(MXFReader reader) : base(reader) { this.Offset = reader.Position; this.LocalTag = reader.ReadUInt16(); this.AliasUID = new MXFAUID(reader, "AliasUID"); this.Length = 20; // Fixed length (16 bytes key + 4 bytes local tag) }
public MXFPartition(MXFReader reader, MXFKLV headerKLV) : base(headerKLV, "Partition", KeyType.Partition) { this.m_eType = MXFObjectType.Partition; this.IsLoaded = false; // Determine the partition type switch (this.Key[13]) { case 2: this.PartitionType = PartitionType.Header; break; case 3: this.PartitionType = PartitionType.Body; break; case 4: this.PartitionType = PartitionType.Footer; break; default: this.PartitionType = PartitionType.Unknown; Log(MXFLogType.Error, "unknown partition type"); break; } this.Closed = (this.PartitionType == PartitionType.Footer) || (this.Key[14] & 0x01) == 0x00; this.Complete = (this.Key[14] > 2); // Make sure we read at the data position reader.Seek(this.DataOffset); this.MajorVersion = reader.ReadUInt16(); this.MinorVersion = reader.ReadUInt16(); this.KagSize = reader.ReadUInt32(); this.ThisPartition = reader.ReadUInt64(); this.PreviousPartition = reader.ReadUInt64(); this.FooterPartition = reader.ReadUInt64(); this.HeaderByteCount = reader.ReadUInt64(); this.IndexByteCount = reader.ReadUInt64(); this.IndexSID = reader.ReadUInt32(); this.BodyOffset = reader.ReadUInt64(); this.BodySID = reader.ReadUInt32(); this.OP = reader.ReadULKey(); MXFObject essenceContainers = reader.ReadAUIDSet("Essence Containers", "Essence Container"); this.AddChild(essenceContainers); }
/// <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 == rsiz: this.Rsiz = reader.ReadUInt16(); return(true); case var _ when localTag.Key == xsiz: this.Xsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == ysiz: this.Ysiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == xOsiz: this.XOsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == yOsiz: this.YOsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == xTsiz: this.XTsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == yTsiz: this.YTsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == xTOsiz: this.XTOsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == yTOsiz: this.YTOsiz = reader.ReadUInt32(); return(true); case var _ when localTag.Key == csiz: this.Csiz = reader.ReadUInt16(); return(true); case var _ when localTag.Key == pictureComponentSizing: this.PictureComponentSizing = reader.ReadArray(reader.ReadByte, localTag.Size); return(true); case var _ when localTag.Key == codingStyleDefault: this.CodingStyleDefault = reader.ReadArray(reader.ReadByte, localTag.Size); return(true); case var _ when localTag.Key == quantizationDefault: this.QuantizationDefault = reader.ReadArray(reader.ReadByte, localTag.Size); return(true); case var _ when localTag.Key == j2CLayout: this.J2CLayout = reader.ReadRGBALayout(); return(true); } } return(base.ParseLocalTag(reader, localTag)); }
public MXFANCFrameElement(MXFReader reader, MXFKLV headerKLV) : base(reader, headerKLV) { UInt16 nofPackets = reader.ReadUInt16(); for(int n = 0; n < nofPackets; n++) { MXFANCPacket newpacket = new MXFANCPacket(reader); this.AddChild(newpacket); } }
/// <summary> /// Overridden method to process local tags /// </summary> /// <param name="localTag"></param> protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x1501: this.StartTimecode = reader.ReadUInt64(); return(true); case 0x1502: this.FramesPerSecond = reader.ReadUInt16(); return(true); case 0x1503: this.DropFrame = (reader.ReadByte() != 0); return(true); } return(base.ParseLocalTag(reader, localTag)); }
protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x000c: IsOptional = reader.ReadBool(); return(true); case 0x000b: PropertyType = reader.ReadULKey(); return(true); case 0x000d: LocalIdentification = reader.ReadUInt16(); return(true); case 0x000e: IsUniqueIdentifier = reader.ReadBool(); return(true); } return(base.ParseLocalTag(reader, localTag)); }
private (byte Tag, UInt32 Size) GetTag(MXFReader reader) { byte tag = reader.ReadByte(); UInt32 size = 0; if (nofSizeSize == 2) { size = reader.ReadUInt16(); } else { size = reader.ReadUInt32(); } return(tag, size); }
public MXFCDPPacket(MXFReader reader) : base(reader) { UInt16 identifier = reader.ReadUInt16(); if (identifier == 0x9669) { this.Length = reader.ReadByte(); this.FrameRateE = (MXFCDFFrameRate)((reader.ReadByte() & 0xF0) >> 4); switch (this.FrameRateE) { case MXFCDFFrameRate.Rate_24: this.FrameRate = 24; break; case MXFCDFFrameRate.Rate_24000_1001: this.FrameRate = 24000.0 / 1001.0; break; case MXFCDFFrameRate.Rate_25: this.FrameRate = 25; break; case MXFCDFFrameRate.Rate_30: this.FrameRate = 30; break; case MXFCDFFrameRate.Rate_30000_1001: this.FrameRate = 30000.0 / 1001.0; break; case MXFCDFFrameRate.Rate_50: this.FrameRate = 50; break; case MXFCDFFrameRate.Rate_60: this.FrameRate = 60; break; case MXFCDFFrameRate.Rate_60000_1001: this.FrameRate = 60000.0 / 1001.0; break; } byte options = reader.ReadByte(); this.TimeCodePresent = ((options & 0x80) != 0); this.CCDataPresent = ((options & 0x40) != 0); this.SVCInfoPresent = ((options & 0x20) != 0); this.SVCInfoStart = ((options & 0x10) != 0); this.SVCInfoChange = ((options & 0x08) != 0); this.SVCInfoComplete = ((options & 0x04) != 0); this.CaptionServiceActive = ((options & 0x02) != 0); this.SequenceCounter = reader.ReadUInt16(); byte count = 0; long endPos = this.Offset + this.Length; while (reader.Position < endPos) { identifier = reader.ReadByte(); switch (identifier) { case 0x71: this.TimeCode = new MXFTimeStamp(); this.TimeCode.ParseSMPTE12M(reader, this.FrameRate.Value); break; case 0x72: count = (byte)(reader.ReadByte() & 0x1F); for (int n = 0; n < count; n++) { this.AddChild(new MXFEntryCCData(reader)); } break; case 0x73: count = (byte)(reader.ReadByte() & 0x0F); for (int n = 0; n < count; n++) { this.AddChild(new MXFEntrySVCInfo(reader)); } break; case 0x74: this.AddChild(new MXFCDPFooter(reader)); break; default: this.AddChild(new MXFCDPFuture(reader, (byte)identifier)); break; } } } }
/// <summary> /// Overridden method to process local tags /// </summary> /// <param name="localTag"></param> protected override bool ParseLocalTag(MXFReader reader, MXFLocalTag localTag) { switch (localTag.Tag) { case 0x8113: this.CameraSettingFileURI = reader.ReadUTF8String(localTag.Size); return(true); case 0x8114: this.CameraAttributes = reader.ReadUTF8String(localTag.Size); return(true); case 0x3210: this.TransferCharacteristic = reader.ReadULKey(); return(true); case 0x8106: this.CaptureFrameRate = reader.ReadRational(); return(true); case 0x8100: this.AutoExposureMode = reader.ReadULKey(); return(true); case 0x8101: this.AutoFocusSensingAreaSetting = (MXFAutoFocusSensingAreaSetting)reader.ReadByte(); return(true); case 0x8102: this.ColorCorrectionFilterWheelSetting = (MXFColorCorrectionFilterWheelSetting)reader.ReadByte(); return(true); case 0x8103: this.NeutralDensityFilterWheelSetting = reader.ReadUInt16(); return(true); case 0x8104: this.ImageSensorDimensionEffectiveWidth = reader.ReadUInt16(); return(true); case 0x8105: this.ImageSensorDimensionEffectiveHeight = reader.ReadUInt16(); return(true); case 0x8107: this.ImageSensorReadoutMode = (MXFImageSensorReadoutMode)reader.ReadByte(); return(true); case 0x8108: this.ShutterSpeedAngle = reader.ReadUInt32(); return(true); case 0x8109: this.ShutterSpeedTime = reader.ReadRational(); return(true); case 0x810a: this.CameraMasterGainAdjustment = (short)reader.ReadUInt16(); return(true); case 0x810b: this.ISOSensitivity = reader.ReadUInt16(); return(true); case 0x810c: this.ElectricalExtenderMagnification = reader.ReadUInt16(); return(true); case 0x8115: this.ExposureIndexOfPhotoMeter = reader.ReadUInt16(); return(true); case 0x8118: this.ColorMatrix = reader.ReadArray(reader.ReadRational, localTag.Size); return(true); case 0x810d: this.AutoWhiteBalanceMode = (MXFAutoWhiteBalanceMode)reader.ReadByte(); return(true); case 0x810e: this.WhiteBalance = reader.ReadUInt16(); return(true); case 0x810f: this.CameraMasterBlackLevel = (short)reader.ReadUInt16(); return(true); case 0x8110: this.CameraKneePoint = reader.ReadUInt16(); return(true); case 0x8111: this.CameraKneeSlope = reader.ReadUInt16(); return(true); case 0x8112: this.CameraLuminanceDynamicRange = reader.ReadUInt16(); return(true); case 0x8116: this.GammaForCDL = reader.ReadByte(); return(true); } return(base.ParseLocalTag(reader, localTag)); }
public MXFCDPFooter(MXFReader reader) : base(reader) { this.SequenceCounter = reader.ReadUInt16(); this.PacketChecksum = reader.ReadByte(); }
/// <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)); }
/// <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 == constantBPictureFlag_Key: this.AVCConstantBPictureFlag = reader.ReadBool(); return(true); case var _ when localTag.Key == codedContentKind_Key: this.AVCCodedContentKind = (MXFAVCContentScanning)reader.ReadByte(); return(true); case var _ when localTag.Key == closedGOPIndicator_Key: this.AVCClosedGOPIndicator = reader.ReadBool(); return(true); case var _ when localTag.Key == identicalGOPIndicator_Key: this.AVCIdenticalGOPIndicator = reader.ReadBool(); return(true); case var _ when localTag.Key == maximumGOPSize_Key: this.AVCMaximumGOPSize = reader.ReadUInt16(); return(true); case var _ when localTag.Key == maximumBPictureCount_Key: this.AVCMaximumBPictureCount = reader.ReadUInt16(); return(true); case var _ when localTag.Key == profile_Key: this.AVCProfile = reader.ReadByte(); return(true); case var _ when localTag.Key == maximumBitRate_Key: this.AVCMaximumBitRate = reader.ReadUInt32(); return(true); case var _ when localTag.Key == profileConstraint_Key: this.AVCProfileConstraint = reader.ReadByte(); return(true); case var _ when localTag.Key == level_Key: this.AVCLevel = reader.ReadByte(); return(true); case var _ when localTag.Key == decodingDelay_Key: this.AVCDecodingDelay = reader.ReadByte(); return(true); case var _ when localTag.Key == maximumRefFrames_Key: this.AVCMaximumRefFrames = reader.ReadByte(); return(true); case var _ when localTag.Key == sequenceParameterSetFlag_Key: this.AVCSequenceParameterSetFlag = reader.ReadByte(); return(true); case var _ when localTag.Key == pictureParameterSetFlag_Key: this.AVCPictureParameterSetFlag = reader.ReadByte(); return(true); case var _ when localTag.Key == averageBitRate_Key: this.AVCAverageBitRate = reader.ReadByte(); return(true); } } return(base.ParseLocalTag(reader, localTag)); }