EDID的作用

1.概要

2.内容

EDID(Extended Display Identification Data,扩展显示识别数据)在显示设备中起着至关重要的作用。它是一种由VESA(Video Electronics Standards Association,视频电子标准协会)定义的标准数据格式,用于描述显示器和其他显示设备的能力,以便系统自动调整输出设置,确保最佳的显示效果和兼容性。EDID的主要作用体现在以下几个方面:

1. 自动配置显示参数

当计算机、笔记本电脑、高清电视接收机、数字录像机、DVD播放器、蓝光播放器甚至游戏机等设备与显示器连接时,EDID信息会被自动读取和解析。通过EDID,视频源设备能够获取显示器的关键信息,如分辨率、刷新率、颜色深度等,并据此自动调整其输出设置。这样,视频源设备就能够输出最适合当前显示器的图像,避免了因设置错误而导致的显示问题,如分辨率不匹配、刷新率不正确等。

2. 提高兼容性和可靠性

在多媒体展示环境中,如会议室或教室,EDID确保了多种不同类型的显示器或投影仪能够正确显示内容。通过EDID,视频源设备能够识别并配置显示器的物理属性和显示特性,从而提高了系统的兼容性和可靠性。此外,在家庭娱乐场景中,当高清电视接收机、蓝光播放器等设备与显示器连接时,EDID信息也发挥着重要作用,帮助设备自动调整输出设置以适应显示器的特性。

3. 支持显示设备的性能优化

EDID不仅帮助视频源设备识别显示器的物理属性,还支持显示设备的性能优化。例如,通过EDID,视频源设备可以调整色彩空间、伽玛值等参数,以改善显示效果。这为用户提供了更加真实、细腻的视觉体验。

4. 提供显示器详细信息

EDID数据结构中包含了显示器的详细信息,如厂商信息、产品序列号、生产日期、显示器尺寸、支持的分辨率和刷新率等。这些信息对于用户了解显示器的性能和特性非常有帮助,同时也为视频源设备提供了准确的配置依据。

5. 支持热插拔和即插即用

EDID和DDC(Display Data Channel,显示器数据通道)协议一起支持热插拔功能。这意味着,当用户将新的显示设备连接到计算机或其他视频源设备时,无需重新启动计算机即可自动识别和配置新的显示设备。这为用户提供了更加便捷、高效的使用体验。

EDID数据结构和传输方式

  • 数据结构:EDID数据结构通常包含多个部分,如头文件、显示器生产商/产品识别码、产品串号、生产日期、EDID结构版本号、特色功能支持数据、最佳显示模式支持等。以VGA和DVI接口为例,EDID数据由主块组成,共128字节。而HDMI接口的EDID则增加了扩展块(也是128字节),扩展块的内容主要是与音频属性相关的。
  • 传输方式:EDID数据通常是通过DDC通道(类似于I2C总线)进行传输的。在HDMI接口中,EDID数据通过DDC通道进行双向的数据传输,确保视频源设备能够准确读取和解析显示器的EDID信息。

实际应用中的注意事项

  • EDID错误或不符合预期:在某些情况下,EDID数据可能会出现错误或不符合某些视频源设备的预期,导致显示问题。此时,用户可能需要手动编辑EDID数据或使用兼容性模式来解决问题。
  • EDID透传功能:在使用HDMI延长器、切换器等中间设备时,需要确保这些设备支持EDID透传功能。EDID透传功能允许中间设备将源设备的EDID信息完整地传递给显示设备,从而确保最佳的图像和音频输出效果。

概括起来,EDID在显示设备中扮演着至关重要的角色。它通过提供显示器的详细信息和支持自动配置显示参数等功能,确保了视频源设备能够输出最适合当前显示器的图像,提高了系统的兼容性和可靠性,为用户提供了更加优质、便捷的显示体验。

3.关联链接

4.关联知识

1.EDID是显示器给系统提供的的吗

是的,EDID(Extended Display Identification Data,扩展显示识别数据)是由显示器提供给系统的。这是一种由VESA(视频电子标准协会)定义的标准数据格式,用于描述显示器的能力和特性。

当显示器与计算机或其他视频源设备连接时,显示器会通过DDC(Display Data Channel,显示器数据通道)将EDID信息发送给视频源设备。视频源设备读取并解析这些EDID信息,以了解显示器的分辨率、刷新率、颜色深度等关键参数。然后,视频源设备会根据这些信息自动调整其输出设置,以确保最佳的显示效果和兼容性。

因此,EDID是显示器与视频源设备之间进行通信和自动配置的重要机制,它使得视频源设备能够智能地适应不同显示器的特性和能力。

2.EDID能决定系统可选择的分辨率吗 

EDID确实能决定系统可选择的分辨率

EDID(Extended Display Identification Data,扩展显示识别数据)是显示器向系统提供的一组数据,其中包含了显示器的详细信息,如分辨率、刷新率、颜色深度等。当计算机或其他视频源设备连接到显示器时,它会读取EDID信息,以了解显示器的物理属性和显示特性。

具体来说,EDID中的分辨率信息会告诉视频源设备,显示器支持哪些分辨率。视频源设备会根据这些信息,在其设置界面中提供与显示器兼容的分辨率选项。因此,EDID直接决定了系统可选择的分辨率范围。

例如,如果显示器的EDID信息表明它支持的最大分辨率为1920x1080,那么视频源设备的设置界面中通常只会出现1920x1080及以下的分辨率选项。如果尝试选择一个高于显示器支持分辨率的设置,可能会导致图像无法正常显示。

此外,EDID还支持自定义分辨率功能。在某些情况下,用户可能需要使用显示器不支持的标准分辨率。这时,可以通过修改EDID信息,添加自定义分辨率选项。但需要注意的是,这种操作需要谨慎进行,因为不恰当的修改可能会导致显示器无法正常工作。

总的来说,EDID是显示器与视频源设备之间通信的重要桥梁,它决定了系统可选择的分辨率范围,并有助于确保最佳的显示效果和兼容性。

3.EDID能决定系统的分辨率;我有一个显示器,他在windows显示的分辨率是1280*800,但在ubuntu上提供的分辨率是确是1280*720。这是因为这个显示器向两个系统提供的EDID不同吗 

您提到的现象确实可能与显示器向不同操作系统提供的EDID信息有关。EDID(扩展显示识别数据)是显示器向系统提供的一组数据,用于描述显示器的物理属性和显示特性,包括支持的分辨率、刷新率等。

在您的例子中,显示器在Windows系统中显示的分辨率是1280x800,而在Ubuntu系统中提供的分辨率却是1280x720。这种情况可能是由于以下几个原因导致的:

  1. EDID信息不同

    • 显示器可能针对不同的操作系统或视频输出方式,提供了不同的EDID信息。例如,某些显示器可能会根据连接的接口类型(如HDMI、VGA、DVI等)或操作系统类型,调整其EDID数据。
  2. 操作系统处理EDID的方式不同

    • 不同的操作系统可能对EDID信息的解析和处理方式存在差异。这可能导致即使显示器提供的EDID信息相同,但在不同操作系统上显示的分辨率选项也有所不同。
  3. 驱动程序或软件设置

    • 在某些情况下,驱动程序或软件设置可能会影响系统对EDID信息的识别和处理。例如,如果某个系统的显卡驱动程序版本较旧或存在兼容性问题,可能会导致系统无法正确识别或应用显示器提供的EDID信息。
  4. 显示器的固件或设置

    • 显示器本身的固件或设置也可能影响EDID信息的输出。例如,如果显示器被设置为特定的显示模式或分辨率范围,那么它可能只会向系统提供与这些设置兼容的EDID信息。

为了解决这个问题,您可以尝试以下方法:

  • 检查显示器设置

    • 确保显示器没有被设置为特定的显示模式或分辨率范围,这可能会影响EDID信息的输出。
  • 更新显卡驱动程序

    • 确保您的计算机上安装了最新的显卡驱动程序。过时的驱动程序可能会导致系统无法正确识别或应用显示器提供的EDID信息。
  • 使用第三方软件

    • 在某些情况下,您可以使用第三方软件来修改或模拟EDID信息。例如,一些显示器校准工具或分辨率管理工具允许用户自定义分辨率选项。但请注意,这种方法需要谨慎使用,因为不恰当的修改可能会导致显示器无法正常工作。
  • 检查连接线

    • 确保显示器与计算机之间的连接线(如HDMI线、VGA线等)没有问题。有时连接线的问题也可能导致系统无法正确读取显示器的EDID信息。

如果以上方法都无法解决问题,您可能需要联系显示器的制造商或技术支持团队,寻求更专业的帮助。他们可能需要检查显示器的固件或设置,以确定是否存在与EDID信息相关的问题。

4.ubuntu系统上,我如何获取到显示器提供的EDID信息

在Ubuntu系统上,您可以通过以下几种方法来获取显示器提供的EDID(扩展显示识别数据)信息:

方法一:使用get-edidparse-edid工具

  1. 安装工具

    打开终端,输入以下命令来安装read-edid工具包,该工具包包含了get-edidparse-edid两个工具:

    sudo apt-get install read-edid

  2. 获取EDID信息

    使用get-edid命令获取EDID原始数据,并将其重定向到一个文件中(例如edid.bin):

    
    

    sudo get-edid > edid.bin

  3. 解析EDID信息

    使用parse-edid命令解析EDID原始数据,并输出可读的信息:

    
    

    parse-edid < edid.bin

    执行上述命令后,您将会看到显示器的制造商、型号、支持的分辨率等详细参数。

方法二:使用xrandr命令

  1. 查看显示器信息

    打开终端,输入以下命令来查看当前连接的显示设备的信息:

    
    

    xrandr --verbose

    在输出的信息中,您可能会找到与EDID相关的内容,包括显示器的名称、分辨率、刷新率等。

方法三:使用edid-decode工具

  1. 安装工具

    打开终端,输入以下命令来安装edid-utils软件包,该软件包包含了edid-decode工具:

    
    

    sudo apt-get install edid-utils

  2. 获取并解码EDID信息

    首先,找到您的显示器设备对应的EDID文件路径。这通常位于/sys/class/drm/目录下,您可以使用ls命令列出所有设备:

    
    

    ls /sys/class/drm/

    假设您的显示器设备对应的路径是/sys/class/drm/card0-HDMI-A-1,您可以使用以下命令来查看EDID信息并解码:

    
    

    cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode

    执行上述命令后,您将会看到解码后的EDID信息,包括显示器的制造商、型号、支持的分辨率等详细参数。

方法四:使用ddcutil工具

  1. 安装工具

    打开终端,输入以下命令来安装ddcutil工具:

    
    

    sudo apt-get install ddcutil

  2. 获取EDID信息

    使用ddcutil命令获取EDID信息。例如,您可以使用以下命令来检测连接的显示设备并输出详细的EDID信息:

    
    

    ddcutil detect --verbose

    执行上述命令后,您将会看到显示器的制造商、型号、EDID版本、支持的分辨率等详细参数。

注意事项

  • 在执行上述命令时,您可能需要具有超级用户权限(sudo)。
  • 由于不同的显示器、显卡和连接方式,EDID信息的获取和解析结果可能会有所不同。
  • 如果您无法找到显示器的EDID信息,或者信息不完整、不准确,可能需要检查连接线、显示器设置或显卡驱动程序是否存在问题。

通过以上方法,您可以在Ubuntu系统上获取到显示器提供的EDID信息,并了解显示器的详细参数和特性。

5.Modeline "1280x800_60.00" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync

这行Modeline是一个X Window系统中的显示器模式行(Modeline),用于定义显示器的分辨率、刷新率以及其他相关的时序参数。让我们逐一解析这个Modeline的含义:

  • "1280x800_60.00":这是模式的名称,表示这是一个1280像素宽、800像素高的分辨率,刷新率为60.00赫兹的模式。

  • 83.50:这是像素时钟频率,单位是MHz。它表示每秒传输的像素数量,是计算其他参数的基础。

  • 1280 1352 1480 1680:这四个数字定义了水平扫描的时序参数:

    • 1280:有效像素宽度,即屏幕实际显示的像素宽度。
    • 1352:水平前沿(Horizontal Front Porch),是从有效像素结束到水平同步信号开始之间的像素数。
    • 1480:水平同步脉冲宽度(Horizontal Sync Pulse Width),是水平同步信号的宽度。
    • 1680:水平总周期(Horizontal Total),是一个水平扫描周期的总像素数。
  • 800 803 809 831:这四个数字定义了垂直扫描的时序参数:

    • 800:有效行数,即屏幕实际显示的行数。
    • 803:垂直前沿(Vertical Front Porch),是从有效行结束到垂直同步信号开始之间的行数。
    • 809:垂直同步脉冲宽度(Vertical Sync Pulse Width),是垂直同步信号的宽度。
    • 831:垂直总周期(Vertical Total),是一个垂直扫描周期的总行数。
  • -hsync +vsync:这两个参数指定了同步信号的极性:

    • -hsync:表示水平同步信号是负极性,即在同步期间信号电平低于平时。
    • +vsync:表示垂直同步信号是正极性,即在同步期间信号电平高于平时。

这个Modeline为显示器提供了一个详细的配置,使得X Window系统能够正确地设置显示模式,以达到指定的分辨率和刷新率。这对于确保图像正确显示、避免屏幕闪烁或画面撕裂等问题非常重要。如果你在使用Linux或类Unix系统,并且需要手动配置显示器设置,了解如何解读和应用Modeline是非常有用的技能。

6.qt,我开发一个app设置的分辨率是1280*800;但是目前在ubuntu环境上,这个显示器支持的分辨率是1280*720。可以将app的分辨率缩放到1280*720的屏幕上吗 

在Qt中开发应用时,如果你的应用设计为1280x800分辨率,但实际运行环境(如Ubuntu系统的显示器)只支持1280x720分辨率,你可以通过一些方法来调整应用的显示,使其适应较低的分辨率。这里有几种可能的解决方案:

  1. 使用布局管理器
    • 确保你的应用使用了Qt的布局管理器(如QVBoxLayout, QHBoxLayout, QGridLayout等)。布局管理器可以自动调整组件的大小和位置,以适应不同的窗口大小。
  2. 设置窗口的最小尺寸和弹性尺寸
    • 你可以为应用窗口设置一个最小尺寸(setMinimumSize)和弹性尺寸(setSizePolicy),这样当窗口被调整到较小尺寸时,布局管理器可以根据这些设置来调整内部组件。
  3. 调整字体和图标大小
    • 在较低分辨率的屏幕上,可能需要减小字体和图标的大小以保持界面的可用性。你可以通过QSS(Qt Style Sheets)或编程方式来调整这些元素的大小。
  4. 使用缩放因子
    • Qt支持高DPI缩放,你可以通过设置环境变量QT_SCALE_FACTOR来调整整个应用的缩放比例。例如,如果你的应用设计为1280x800,而显示器是1280x720,你可以尝试设置一个略小于1的缩放因子来缩小界面元素。
  5. 手动调整组件大小和位置
    • 如果布局管理器不能满足你的需求,你也可以手动调整各个组件的大小和位置。这通常不是最佳实践,因为它会使代码更难维护,但在某些情况下可能是必要的。
  6. 测试和优化
    • 在目标分辨率上测试你的应用,看看哪些部分需要调整。可能需要对某些布局或组件进行微调以达到最佳效果。
  7. 考虑使用不同的窗口模式
    • 如果可能,考虑实现一个“紧凑模式”或“小屏幕模式”,在这种模式下,应用会使用更小的字体和更紧凑的布局来适应较小的屏幕。
  8. 检查显示器设置
    • 确保Ubuntu系统的显示器设置已经配置为最佳分辨率。有时候,系统的默认设置可能不是最优的,手动调整可能会找到更适合的分辨率。

通过上述方法,你可以使你的Qt应用更好地适应1280x720的分辨率。这可能需要一些试验和错误,但最终你应该能够找到一个适合你应用的解决方案。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值