/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.ColorCharacteristics.Blue, Color(ColorManagementDataDescriptor.KnownColor.Blue)); properties.Add(EedidProperty.Edid.ColorCharacteristics.Green, Color(ColorManagementDataDescriptor.KnownColor.Green)); properties.Add(EedidProperty.Edid.ColorCharacteristics.Red, Color(ColorManagementDataDescriptor.KnownColor.Red)); properties.Add(EedidProperty.Edid.ColorCharacteristics.White, Color(ColorManagementDataDescriptor.KnownColor.White)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorManagementData.VersionNumber, VersionNumber); properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorManagementData.Red, Color(KnownColor.Red)); properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorManagementData.Green, Color(KnownColor.Green)); properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorManagementData.Blue, Color(KnownColor.Blue)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { ExtendedTag extendedTag = (ExtendedTag)RawData[0x01]; switch (extendedTag) { case ExtendedTag.Colorimetry: ColorimetryDataBlock colorimetryDataBlock = new ColorimetryDataBlock(RawData); properties.Add(EedidProperty.Cea.DataBlock.Extended.Colorimetry.AdobeRGB, colorimetryDataBlock.AdobeRGB); properties.Add(EedidProperty.Cea.DataBlock.Extended.Colorimetry.AdobeYCC601, colorimetryDataBlock.AdobeYCC601); properties.Add(EedidProperty.Cea.DataBlock.Extended.Colorimetry.sYCC601, colorimetryDataBlock.SYCC601); properties.Add(EedidProperty.Cea.DataBlock.Extended.Colorimetry.xvYCC709, colorimetryDataBlock.XVYCC709); properties.Add(EedidProperty.Cea.DataBlock.Extended.Colorimetry.xvYCC601, colorimetryDataBlock.XVYCC601); break; case ExtendedTag.MiscellaneousAudioFields: break; case ExtendedTag.VendorSpecificAudio: break; case ExtendedTag.VendorSpecificVideo: break; case ExtendedTag.VideoCapability: VideoCapabilityDataBlock videoCapabilityDataBlock = new VideoCapabilityDataBlock(RawData); properties.Add(EedidProperty.Cea.DataBlock.Extended.VideoCapability.CEOverscan, GetCEOverUnderscan(videoCapabilityDataBlock.CEOverscan)); properties.Add(EedidProperty.Cea.DataBlock.Extended.VideoCapability.ITOverscan, GetITOverUnderscan(videoCapabilityDataBlock.ITOverscan)); properties.Add(EedidProperty.Cea.DataBlock.Extended.VideoCapability.PTOverscan, GetPTOverUnderscan(videoCapabilityDataBlock.PTOverscan)); properties.Add(EedidProperty.Cea.DataBlock.Extended.VideoCapability.QuantizationRangeRGB, videoCapabilityDataBlock.QuantizationRangeRGB ? "Selectable" : "No Data"); properties.Add(EedidProperty.Cea.DataBlock.Extended.VideoCapability.QuantizationRangeYCC, videoCapabilityDataBlock.QuantizationRangeYCC ? "Selectable" : "No Data"); break; } }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.Manufacturer, Version >= 0x20 ? Operations.GetManufacturer(RawData.ToArray().Extract(0x03, 0x03)) : $"{RawData[0x03]}{RawData[0x04]}{RawData[0x05]}"); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.ProductIdCode, ProductIdCode); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.SerialNumber, SerialNumber); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.WeekOfManufactureOrModelTag, WeekOfManufactureOrModelTag); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.YearOfManufactureOrModelYear, YearOfManufactureOrModelYear); var modelYearStrategy = WeekOfManufactureOrModelTag == 0xff || WeekOfManufactureOrModelTag == 0x00 ? KnownModelYearStrategy.ModelYear : KnownModelYearStrategy.YearOfManufacture; properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.ModelYearStrategy, modelYearStrategy); if (modelYearStrategy == KnownModelYearStrategy.ModelYear) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.ManufactureDate, 2000 + YearOfManufactureOrModelYear); } else { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.ManufactureDate, $"week {WeekOfManufactureOrModelTag} of {2000 + YearOfManufactureOrModelYear}"); } if (ProductNameSize == 0x00) { return; } if (ProductNameSize > 0x01 && ProductNameSize <= 0xec) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.ProductIdentification.ProductName, Encoding.Default.GetString(ProductNameData)); } }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DisplayID.General.Version, Version); properties.Add(EedidProperty.DisplayID.General.Revision, Revision); properties.Add(EedidProperty.DisplayID.General.ExtensionCount, ExtensionCount); properties.Add(EedidProperty.DisplayID.General.DisplayProduct, GetDisplayProduct(DisplayProductType, Version)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.Vendor.IdManufacturerName, IdManufacturerName); properties.Add(EedidProperty.Edid.Vendor.IdProductCode, IdProductCode); var idSerialNumber = IdSerialNumber; if (idSerialNumber != 0x0000) { properties.Add(EedidProperty.Edid.Vendor.IdSerialNumber, (int?)IdSerialNumber); } properties.Add(EedidProperty.Edid.Vendor.WeekOfManufactureOrModelYear, WeekOfManufactureOrModelYearFlag); properties.Add(EedidProperty.Edid.Vendor.YearOfManufactureOrModelYear, YearOfManufactureOrModelYear); var modelYearStrategy = WeekOfManufactureOrModelYearFlag == 0xff || WeekOfManufactureOrModelYearFlag == 0x00 ? KnownModelYearStrategy.ModelYear : KnownModelYearStrategy.YearOfManufacture; properties.Add(EedidProperty.Edid.Vendor.ModelYearStrategy, modelYearStrategy); if (modelYearStrategy == KnownModelYearStrategy.ModelYear) { properties.Add(EedidProperty.Edid.Vendor.ManufactureDate, 1990 + YearOfManufactureOrModelYear); } else { properties.Add(EedidProperty.Edid.Vendor.ManufactureDate, $"week {WeekOfManufactureOrModelYearFlag} of {1990 + YearOfManufactureOrModelYear}"); } }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Cea.MonitorSupport.IsDvtUnderscan, IsDvtUnderscan); properties.Add(EedidProperty.Cea.MonitorSupport.BasicAudioSupported, BasicAudioSupported); properties.Add(EedidProperty.Cea.MonitorSupport.YCbCr444Supported, YCbCr444Supported); properties.Add(EedidProperty.Cea.MonitorSupport.YCbCr422Supported, YCbCr422Supported); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { var audioAllocationDataBlock = GetAudioAllocationDataBlocks(RawData); var i = 0; var audioDescriptors = new List <SectionPropertiesTable>(); foreach (var allocationDataBlock in audioAllocationDataBlock) { var descriptor = new SectionPropertiesTable { { EedidProperty.Cea.DataBlock.Audio.Descriptor, (byte)i }, { EedidProperty.Cea.DataBlock.Audio.BitDepth, allocationDataBlock.BitDepth.ToList().AsReadOnly() }, { EedidProperty.Cea.DataBlock.Audio.Channels, allocationDataBlock.Channels }, { EedidProperty.Cea.DataBlock.Audio.Format, allocationDataBlock.Format }, }; if (allocationDataBlock.MaxBitrate != -1) { descriptor.Add(EedidProperty.Cea.DataBlock.Audio.MaxBitrate, allocationDataBlock.MaxBitrate); } if (allocationDataBlock.SamplingFrequencies.Length > 0) { descriptor.Add(EedidProperty.Cea.DataBlock.Audio.SamplingFrequencies, allocationDataBlock.SamplingFrequencies.ToList().AsReadOnly()); } audioDescriptors.Add(descriptor); i++; } properties.Add(EedidProperty.Cea.DataBlock.Tags.Audio, audioDescriptors); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.LegacyModes, GetLegacyModes(LegacyModes)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.StereoVideo, GetStereoVideo(StereoVideo)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ScalerOnBoard, ScalerOnBoard); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ImageCentering, ImageCentering); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ConditionalUpdate, ConditionalUpdate); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.InterlacedVideo, InterlacedVideo); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.FrameLock, FrameLock); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.FrameRateConversion, GetFrameRateConversion(FrameRateConversion)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.VerticalFrequency, VerticalFrequency); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.HorizontalFrequency, HorizontalFrequency); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.DisplayScanOrientationType, GetDisplayScanOrientationType(DisplayScanOrientationType)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ScreenOrientation, GetScreenOrientation(ScreenOrientation)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ZeroPixelLocation, GetZeroPixelLocation(ZeroPixelLocation)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ScanDirection, GetScanDirection(ScanDirection)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.StandaloneProjector, StandaloneProjector); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.DefaultColorLuminanceDecoding, GetDefaultColorLuminanceDecoding(DefaultColorLuminanceDecoding)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.PreferredColorLuminanceDecoder, GetPreferredColorLuminanceDecoder(PreferredColorLuminanceDecoder)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.ColorLuminanceDecodingCapabilities, GetColorLuminanceDecodingCapabilities(ColorLuminanceDecodingCapabilities)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.Dithering, Dithering); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.SupportedColorBitDepthSubChannel0Blue, SupportedColorBitDepthSubChannel0Blue); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.SupportedColorBitDepthSubChannel1Green, SupportedColorBitDepthSubChannel1Green); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.SupportedColorBitDepthSubChannel2Red, SupportedColorBitDepthSubChannel2Red); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.SupportedColorBitDepthSubChannel0CbPb, SupportedColorBitDepthSubChannel0CbPb); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.SupportedColorBitDepthSubChannel1Y, SupportedColorBitDepthSubChannel1Y); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.SupportedColorBitDepthSubChannel2CrPr, SupportedColorBitDepthSubChannel2CrPr); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.AspectRatioConversionModes, GetAspectRatioConversionModes(AspectRatioConversionModes)); properties.Add(EedidProperty.DI.DisplayCapabilitiesAndFeatureSupportSet.PacketizedDigitalVideoSupportInformation, PacketizedDigitalVideoSupportInformation); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.DisplayRangeLimits.MinimumVerticalRate, MinimumVerticalRate); properties.Add(EedidProperty.Edid.DataBlock.Definition.DisplayRangeLimits.MaximumVerticalRate, MaximumVerticalRate); properties.Add(EedidProperty.Edid.DataBlock.Definition.DisplayRangeLimits.MinimumHorizontalRate, MinimumHorizontalRate); properties.Add(EedidProperty.Edid.DataBlock.Definition.DisplayRangeLimits.MaximumHorizontalRate, MaximumHorizontalRate); properties.Add(EedidProperty.Edid.DataBlock.Definition.DisplayRangeLimits.MaximumPixelClock, MaximumPixelClock); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.VersionNumber, VersionNumber); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Priority1, Priority(KnownCvt3ByteCodePriority.Priority1)); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Priority2, Priority(KnownCvt3ByteCodePriority.Priority2)); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Priority3, Priority(KnownCvt3ByteCodePriority.Priority3)); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Priority4, Priority(KnownCvt3ByteCodePriority.Priority4)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DynamicVideoTimingRangeLimits.MinimumPixelClock, MinimumPixelClock); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DynamicVideoTimingRangeLimits.MaximumPixelClock, MaximumPixelClock); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DynamicVideoTimingRangeLimits.MinimumVerticalRefreshRate, MinimumVerticalRefreshRate); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DynamicVideoTimingRangeLimits.MaximumVerticalRefreshRate, MaximumVerticalRefreshRate); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DynamicVideoTimingRangeLimits.SupportSeamlessDynamicVideoTiming, SupportSeamlessDynamicVideoTiming); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.StandardTimingIdentifier.Timing9, Timing(KnownStandardTiming.Timing9)); properties.Add(EedidProperty.Edid.DataBlock.Definition.StandardTimingIdentifier.Timing10, Timing(KnownStandardTiming.Timing10)); properties.Add(EedidProperty.Edid.DataBlock.Definition.StandardTimingIdentifier.Timing11, Timing(KnownStandardTiming.Timing11)); properties.Add(EedidProperty.Edid.DataBlock.Definition.StandardTimingIdentifier.Timing12, Timing(KnownStandardTiming.Timing12)); properties.Add(EedidProperty.Edid.DataBlock.Definition.StandardTimingIdentifier.Timing13, Timing(KnownStandardTiming.Timing13)); properties.Add(EedidProperty.Edid.DataBlock.Definition.StandardTimingIdentifier.Timing14, Timing(KnownStandardTiming.Timing14)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { var descriptors = DataBlockDescriptorsData().ToList(); properties.Add(EedidProperty.Edid.DataBlock.Descriptor1, descriptors[0]); properties.Add(EedidProperty.Edid.DataBlock.Descriptor2, descriptors[1]); properties.Add(EedidProperty.Edid.DataBlock.Descriptor3, descriptors[2]); properties.Add(EedidProperty.Edid.DataBlock.Descriptor4, descriptors[3]); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.HorizontalImageSize, HorizontalImageSize); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.VerticalImageSize, VerticalImageSize); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.HorizontalPixelCount, HorizontalPixelCount); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.VerticalPixelCount, VerticalPixelCount); if (Version >= 0x20) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.ScanOrientation, GetScanOrientation(ScanOrientation)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.LuminanceInformation, GetLuminanceInformation(LuminanceInformation)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.ColorInformationCie1931, ColorInformationCie1931); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.AudioSpeakersIntegrated, AudioSpeakersIntegrated); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.PrimaryColor1, CalculateNativeColorCromaticity(RawPrimaryColor1.ToArray())); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.PrimaryColor2, CalculateNativeColorCromaticity(RawPrimaryColor2.ToArray())); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.PrimaryColor3, CalculateNativeColorCromaticity(RawPrimaryColor3.ToArray())); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.WhitePoint, CalculateNativeColorCromaticity(RawWhiteColor.ToArray())); var nativeMaximumLuninanceFullCoverage = NativeMaximumLuninanceFullCoverage.FromIEEE754(); if (nativeMaximumLuninanceFullCoverage >= 0.0f) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.NativeMaximumLuninanceFullCoverage, nativeMaximumLuninanceFullCoverage); } var nativeMaximumLuninanceRectangularCoverage = NativeMaximumLuninanceRectangularCoverage.FromIEEE754(); if (nativeMaximumLuninanceRectangularCoverage >= 0.0f) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.NativeMaximumLuninanceRectangularCoverage, nativeMaximumLuninanceRectangularCoverage); } var nativeMinimumLuninance = NativeMinimumLuninance.FromIEEE754(); if (nativeMinimumLuninance >= 0.0f) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.NativeMinimumLuninance, nativeMinimumLuninance); } properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.NativeColorDepth, GetNativeColorDepth(NativeColorDepth)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.DisplayDeviceTechnology, GetDisplayDeviceTechnology(DisplayDeviceTechnology)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Gamma, NativeGamma); } else { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.AudioSupportOnVideoInterface, AudioSupportOnVideoInterface); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.SeparateAudioInputs, SeparateAudioInputs); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.AudioInputOverride, AudioInputOverride); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.VesaPowerManagementSupported, VesaPowerManagementSupported); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.FixedTiming, FixedTiming); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.FixedPixelFormat, FixedPixelFormat); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.SupportAI, SupportAI); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Features.DeInterlacing, DeInterlacing); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.Gamma, TransferCharacteristicGamma); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.AspectRatio, AspectRatio); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.DisplayOverallColorBitDepth, DisplayOverallColorBitDepth); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DisplayParameters.DisplayDeviceColorBitDepth, DisplayDeviceColorBitDepth); } }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { VendorDataBlock vendorAllocationDataBlock = new VendorDataBlock(RawData); properties.Add(EedidProperty.Cea.DataBlock.Vendor.IEEERegistrationIdentifier, vendorAllocationDataBlock.IEEERegistrationIdentifier); properties.Add(EedidProperty.Cea.DataBlock.Vendor.PhysicalAddress, vendorAllocationDataBlock.PhysicalAddress); properties.Add(EedidProperty.Cea.DataBlock.Vendor.Flags, vendorAllocationDataBlock.Flags); properties.Add(EedidProperty.Cea.DataBlock.Vendor.MaxClock, vendorAllocationDataBlock.MaxClock); properties.Add(EedidProperty.Cea.DataBlock.Vendor.VendorPayload, vendorAllocationDataBlock.PayLoad); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { if (Gamma != 0xff) { properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorPointData.Item.Gamma, (double?)((Gamma + 100) / 100)); } properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorPointData.Item.Index, Number); properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorPointData.Item.White, GetWhitePoint(WhiteXY, WhiteX, WhiteY)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { var shortDataBlocks = GetDataBlockCollection(RawData); foreach (var shortDataBlock in shortDataBlocks) { var key = shortDataBlock.Tag.ToString(); var exist = shortDataBlock.Tag != ShortDataBlockTag.ExtendedTag; // && properties.ContainsKey(key); if (exist) { var propertiesToAdd = new SectionPropertiesTable(); switch (shortDataBlock.Tag) { case ShortDataBlockTag.Audio: var descriptor = new ShortAudioDescriptorSection(shortDataBlock.RawData); var hasProperties = descriptor.Properties.Any(); if (hasProperties) { propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.Audio, descriptor.Properties.FirstOrDefault().Value); } break; case ShortDataBlockTag.Video: propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.Video, new ShortVideoDescriptorSection(shortDataBlock.RawData).Properties); break; case ShortDataBlockTag.Vendor: propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.Vendor, new ShortVendorDescriptorSection(shortDataBlock.RawData).Properties); break; case ShortDataBlockTag.Speaker: propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.Speaker, new ShortSpeakerDescriptorSection(shortDataBlock.RawData).Properties); break; case ShortDataBlockTag.VESA: propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.VESA, new ShortSpeakerDescriptorSection(shortDataBlock.RawData).Properties); break; case ShortDataBlockTag.ExtendedTag: propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.Extended, new ShortExtendedTagDescriptorSection(shortDataBlock.RawData).Properties); break; default: propertiesToAdd.Add(EedidProperty.Cea.DataBlock.Tags.Reserved, new ShortReservedDescriptorSection(shortDataBlock.RawData).Properties); break; } foreach (var property in propertiesToAdd) { properties.Add(property); } } } }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.AddressableVerticalLines, LogicHelper.Word(LowerAddressableLines, UpperAddressableLines)); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.AspectRatio, GetAspectRatio(AspectRatio)); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.PreferredVerticalRate, GetVerticalRate(PreferredVerticalRate)); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.SupportedVerticalRateAndBlanking.IsSupported50HzWithStandardBlanking, IsSupported50HzWithStandardBlanking); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.SupportedVerticalRateAndBlanking.IsSupported60HzWithStandardBlanking, IsSupported60HzWithStandardBlanking); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.SupportedVerticalRateAndBlanking.IsSupported75HzWithStandardBlanking, IsSupported75HzWithStandardBlanking); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.SupportedVerticalRateAndBlanking.IsSupported85HzWithStandardBlanking, IsSupported85HzWithStandardBlanking); properties.Add(EedidProperty.Edid.DataBlock.Definition.Cvt3ByteCode.Item.SupportedVerticalRateAndBlanking.IsSupported60HzWithReducedBlanking, IsSupported60HzWithReducedBlanking); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.StandardTimings.Timing1, Timing(KnownStandardTiming.Timing1)); properties.Add(EedidProperty.Edid.StandardTimings.Timing2, Timing(KnownStandardTiming.Timing2)); properties.Add(EedidProperty.Edid.StandardTimings.Timing3, Timing(KnownStandardTiming.Timing3)); properties.Add(EedidProperty.Edid.StandardTimings.Timing4, Timing(KnownStandardTiming.Timing4)); properties.Add(EedidProperty.Edid.StandardTimings.Timing5, Timing(KnownStandardTiming.Timing5)); properties.Add(EedidProperty.Edid.StandardTimings.Timing6, Timing(KnownStandardTiming.Timing6)); properties.Add(EedidProperty.Edid.StandardTimings.Timing7, Timing(KnownStandardTiming.Timing7)); properties.Add(EedidProperty.Edid.StandardTimings.Timing8, Timing(KnownStandardTiming.Timing8)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { byte[] data = RawData.ToArray(); properties.Add(EedidProperty.Edid.DataBlock.Definition.DummyData.OriginalData, Encoding.ASCII.GetString(data, 0x00, data.Length)); //byte[] rawData = RawData.ToArray(); //string originalString = Encoding.ASCII.GetString(rawData, 0x00, rawData.Length); //string printableString = new string(originalString.Where(c => !char.IsControl(c)).ToArray()); //properties.Add(EedidProperty.Edid.DataBlock.Definition.DummyData.OriginalData, originalString); //properties.Add(EedidProperty.Edid.DataBlock.Definition.DummyData.PrintableData, printableString); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DI.DisplayDevice.SubPixelLayout, GetSubPixelLayout(SubPixelLayout)); properties.Add(EedidProperty.DI.DisplayDevice.SubPixelConfiguration, GetSubPixelConfiguration(SubPixelConfiguration)); properties.Add(EedidProperty.DI.DisplayDevice.SubPixelShape, GetSubPixelShape(SubPixelShape)); properties.Add(EedidProperty.DI.DisplayDevice.HorizontalDotPixelPitch, HorizontalDotPixelPitch); properties.Add(EedidProperty.DI.DisplayDevice.VerticalDotPixelPitch, VerticalDotPixelPitch); properties.Add(EedidProperty.DI.DisplayDevice.FixedPixelFormat, MajorDisplayDeviceCharacteristics.CheckBit(Bits.Bit07)); properties.Add(EedidProperty.DI.DisplayDevice.ViewDirection, GetViewDirection(ViewDirection)); properties.Add(EedidProperty.DI.DisplayDevice.DisplayBackground, MajorDisplayDeviceCharacteristics.CheckBit(Bits.Bit04)); properties.Add(EedidProperty.DI.DisplayDevice.PhysicalImplementation, GetPhysicalImplementation(PhysicalImplementation)); properties.Add(EedidProperty.DI.DisplayDevice.DDC, MajorDisplayDeviceCharacteristics.CheckBit(Bits.Bit01)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { SpeakerDataBlock speakerAllocationDataBlock = new SpeakerDataBlock(RawData); properties.Add(EedidProperty.Cea.DataBlock.Speaker.FrontLeftRightHigh, speakerAllocationDataBlock.FrontLeftRightHigh); properties.Add(EedidProperty.Cea.DataBlock.Speaker.FrontLeftRightWide, speakerAllocationDataBlock.FrontLeftRightWide); properties.Add(EedidProperty.Cea.DataBlock.Speaker.RearLeftRightCenter, speakerAllocationDataBlock.RearLeftRearCenter); properties.Add(EedidProperty.Cea.DataBlock.Speaker.FrontLeftRightCenter, speakerAllocationDataBlock.FrontLeftRightCenter); properties.Add(EedidProperty.Cea.DataBlock.Speaker.RearCenter, speakerAllocationDataBlock.RearCenter); properties.Add(EedidProperty.Cea.DataBlock.Speaker.RearLeftRight, speakerAllocationDataBlock.RearLeftRight); properties.Add(EedidProperty.Cea.DataBlock.Speaker.FrontCenter, speakerAllocationDataBlock.FrontCenter); properties.Add(EedidProperty.Cea.DataBlock.Speaker.LFEChannel, speakerAllocationDataBlock.LFEChannel); properties.Add(EedidProperty.Cea.DataBlock.Speaker.FrontLeftRight, speakerAllocationDataBlock.FrontLeftRight); properties.Add(EedidProperty.Cea.DataBlock.Speaker.TopCenter, speakerAllocationDataBlock.TopCenter); properties.Add(EedidProperty.Cea.DataBlock.Speaker.FrontCenterHigh, speakerAllocationDataBlock.FrontCenterHigh); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.PixelClock, PixelClock); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.HorizontalResolution, HorizontalAddressableVideo); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.HorizontalBlanking, HorizontalBlanking); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.VerticalLines, VerticalLines); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.VerticalBlanking, VerticalBlanking); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.HorizontalFrontPorch, HorizontalFrontPorch); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.HorizontalSyncPulseWidth, HorizontalSyncPulseWidth); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.VerticalFrontPorch, VerticalFrontPorch); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.VerticalSyncPulseWidth, VerticalSyncPulseWidth); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.HorizontalImageSize, HorizontalAddresableVideoImageSize); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.VerticalImageSize, VerticalAddresableVideoImageSize); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.HorizontalBorder, HorizontalBorder); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.VerticalBorder, VerticalBorder); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.IsInterlaced, IsInterlaced); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.StereoViewingSupport, GetStereoViewingSupport(StereoViewingSupport)); properties.Add(EedidProperty.Edid.DataBlock.Definition.DetailedTimingMode.SyncSignalType, SyncSignalType); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.PixelClock, PixelClock); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.AspectRatio, GetAspectRatio(AspectRatio)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.InterfaceFrameScanningType, GetInterfaceFrameScanningType(Interlaced)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.Stereo3DSupport, GetStereo3DSupport(Stereo3DSupport)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.IsPreferredTiming, IsPreferredTiming); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.HorizontalActiveImage, HorizontalActiveImagePixels); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.HorizontalBlankPixels, HorizontalBlankPixels); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.HorizontalFrontPorchOffset, HorizontalFrontPorchOffset); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.HorizontalSyncPolarity, GetSyncPolarity(IsHorizontalPositiveSyncPolarity)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.HorizontalSyncWidth, HorizontalSyncWidth); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.HorizontalSyncWidth, HorizontalSyncWidth); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.VerticalActiveImage, VerticalActiveImageLines); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.VerticalBlankLines, VerticalBlankLines); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.VerticalSyncFrontPorchOffset, VerticalSyncFrontPorchOffset); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.VerticalSyncPolarity, GetSyncPolarity(IsVerticalSyncPositivePolarity)); properties.Add(EedidProperty.DisplayID.DataBlocks.Blocks.DetailedTimingTypeI.Timing.VerticalSyncWidth, VerticalSyncWidth); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorManagementData.Item.A2, LogicHelper.Word(A2Lsb, A2Msb)); properties.Add(EedidProperty.Edid.DataBlock.Definition.ColorManagementData.Item.A3, LogicHelper.Word(A3Lsb, A3Msb)); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.DataBlock.Definition.EstablishedTimingsIII.Revision, Revision); properties.Add(EedidProperty.Edid.DataBlock.Definition.EstablishedTimingsIII.Resolutions, GetResolutionCollection()); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.DI.UnusedBytes.Data, RawData); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { properties.Add(EedidProperty.Edid.EstablishedTimings.Resolutions, GetResolutionCollection()); }
/// <summary> /// Populates the property collection for this section. /// </summary> /// <param name="properties">Collection of properties of this section.</param> protected override void PopulateProperties(SectionPropertiesTable properties) { }