EDID的简介和解析
去年对EDID做了一个解析,下面是学习EDID过程中整理的资料。
一、EDID简介
EDID: Extended Display Identification Data (外部显示设备标识数据)----指DDC通讯中传输的显示设备数据。
Q1:EDID是什么?
A1:EDID的全称是Extended Display Identification Data(扩展显示标识数据),VGA、DVI的EDID由主块128字节组成,HDMI的EDID增加扩展块(128字节),扩展块的内容主要是和音频属性相关的,DVI和VGA没有音频,HDMI自带音频,扩展块数据规范按照CEA-861x标准定义,未来可能增加到512或256的整数倍。
其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等等。形象地说,EDID就是显示器的身份证、户口本、技能证书等证件的集合,目的就是告诉别人我是谁,我从哪来,我能干什么。
Q2:为什么要使用EDID?
A2:为了能让PC或其他的图像输出设备更好的识别显示器属性
EDID并非古而有之,在古老的CRT时期是没有EDID这个概念的,那为什么后来会有呢?因为随着显示设备的发展,显示器的种类越来越多,模拟的、数字的、普屏的、宽屏的、17寸、19寸、22寸……这让PC傻了眼,分辨率和时序的种类太多了,而每种显示器又不可能支持所有的分辨率,那怎么知道该给显示器一个什么样的分辨率啊?显示出的效果是最佳效果吗?不仅如此,随便输出一个分辨率还有损坏显示器硬件的可能,这可太危险了。于是,EDID临危受命,担当起显示器和PC之前的传话筒。“PC你好,我是A显示器,我能显示N种分辨率,最佳分辨率是XXX”。“显示器你好,收到你的信息,现在就按最佳分辨率给你输出”。这下大家明白了吧,EDID就是为了能让PC或其他的图像输出设备更好的识别显示器属性而出现的。
Q3:经常听到有同志一会说“EDID信息”,一会说“DDC信息”。那么哪种说法更准确?EDID和DDC的关系又是什么?
A3: DDC的全称是Display Data Channel(显示数据通道),顾名思义,它是一个通道。我们可以说DDC是用来传送EDID信息的,也可以说EDID信息是通过DDC传送的,所以,“DDC信息”的说法并不准确。
Q4:每个显示器只有一个EDID吗?
A4:不一定。
现在的显示器功能很强大,通常都提供多种视频接口,常见的有DVI、VGA、HDMI、Display Port等,由于每种接口的特性和带宽不同,使得不同接口的EDID也不同。使用哪个接口,PC读到的就是哪个接口的EDID。我们的设备主要使用DVI、VGA、HDMI几种接口。由于VIDEO接口的几种制式如PAL、NTSC等,其分辨率场频都是固定的,没有使用EDID的必要,故不在讨论之列。
Q5:EDID对我们到底有什么用?
A5:要回答这个问题,首先要弄清我们设备的应用场景,请看下图
这是一个典型的应用场景,PC将视频信号发送到我们的设备上,经过一系列的传输或切换,设备将视频信号发送到显示器或投影机上,也就是说,我们的设备位于PC和显示器之间。首先,在输入端,设备需要让PC知道自己是能够输入视频信号的,换句话说,设备要“欺骗”PC,让PC认为自己是一台显示器。如果不这样的话,PC可能会拒绝输出任何视频信号的(VGA接口不需要EDID也能输出)。除此之外,设备还要告诉PC自己支持的显示时序。而在输出端,当设备需要自建输出时序(如大屏控制器的输出卡)而不是简单的复制输入时序(如各种矩阵设备)的时候,就需要知道显示器支持的显示时序,从而让自己输出的信号能在显示器上正常显示。在这些地方,EDID就发挥作用了。在输入端PC通过读取设备上的EDID来获悉设备支持的显示时序,而同样,在输出端设备需要读取显示器的EDID来确定自己的输出时序。
二、EDID主块详解
1. EDID主块结构
2. Header:
在EDID的开头八个字节为EDID的开始标志,简称头,固定为:
00H |
01H |
02H |
03H |
04H |
05H |
06H |
07H |
00 |
FF |
FF |
FF |
FF |
FF |
FF |
00 |
3. Vendor / Product Identification
这十个字节表示产品ID和制造商信息。详细如下:
08H |
09H |
0AH |
0BH |
0CH |
0DH |
0EH |
0FH |
10H |
11H |
制造商名称 |
产品代码 |
产品序列号 |
制造周 |
制造年份 |
制造商名称:3个字母组成,基于压缩的ASCII码见下表,例如“00001=A”… …”11010=Z”。这两字节排列如下:
地址 |
位 |
|||||||
bit1 |
bit2 |
bit3 |
bit4 |
bit5 |
bit6 |
bit7 |
bit8 |
|
08H |
- |
(4 |
3 |
2 |
1 |
0) |
(4 |
3 |
字符1 |
字符2 |
|||||||
09H |
2 |
1 |
0) |
(4 |
3 |
2 |
1 |
0) |
字符2 |
字符3 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
00001 |
00010 |
00011 |
00100 |
00101 |
00110 |
00111 |
01000 |
01001 |
01010 |
01011 |
01100 |
01101 |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
01110 |
01111 |
10000 |
10001 |
10010 |
10011 |
10100 |
10101 |
10110 |
10111 |
11000 |
11001 |
11010 |
产品代码:固定为4位16进制数,即两个字节,为客户提供,直接填写。
产品序列号:即产品的流水号(数值型),直接转成16进制或以ASCII格式转换。序列号也可用字符型,在后面DTD部分定义。
生产周:即在当年中的生产周,范围1~52,注意0为无效值。
生产年份:规定1990开始计算,即1990年为0,然后递增计算。
4. EDID Structure Version / Revision
字节 |
EDID版本及修改 |
备注 |
1(12H) |
版本号 |
|
1(13H) |
修改号 |
5. Basic Display Parameters / Features
5 |
字节 |
基本的显示参数/特征 |
|
14H |
1 |
视频信号定义 |
见下表 |
15H |
1 |
最大水平图像尺寸 |
cm |
16H |
1 |
最大垂直图像尺寸 |
cm |
17H |
1 |
显示传输特性(Gamma) |
(gamma x 100)-100,[1.00→3.55] |
18H |
1 |
电源管理标准(DPMS) |
见下表 |
字节 |
位 |
类型 |
详细描述 |
|
14H |
7 |
模拟/数字信号 |
模拟= 0,数字= 1 |
|
如bit7=0,即模拟信号,bit6~0定义如下: |
||||
6 |
信号电平[6:5] |
参阅下列定义。 Bit6 Bit5 Operation 0 0 0.700,0.300(1.000Vp-p) 0 1 0.714,0.286(1.000Vp-p) 1 0 1.000,0.400(1.400Vp-p) 1 1 0.700,0.000(0.700Vp-p) |
||
5 |
||||
4 |
setup |
一般为0 |
||
3 |
同步输入支持[3] |
如果设置1, 支持同步分离信号; |
||
2 |
同步输入支持[2] |
如果设置1, 支持同步复合信号(在水平同步行信号上); |
||
1 |
同步输入支持[1] |
如果设置1, 支持同步SOG信号; |
||
0 |
同步输入支持[0] |
如果设置1, 场同步扫描起点,脉冲须在复合同步信号或同步SOG信号被使用; |
||
如bit7=1,即模拟信号,bit6~0定义如下: |
||||
6-1 |
保留 |
|||
0 |
DFP 1.x |
If set = 1, Interface is signal compatible with VESA DFP 1.x TMDS CRGB, 1 pixel / clock, up to 8 bits / color MSB aligned,DE active high |
字节 |
位 |
特点支持 |
详细描述 |
18H |
7 |
Standby待机 |
是否支持Standby功能 |
6 |
Suspend挂起 |
是否支持Suspend功能 |
|
5 |
Active Off/Very Low Power |
是否支持Off Mode功能 |
|
[4:3] |
显示类型[4:3] |
Bit4 Bit3 解释 0 0 黑白/灰度显示 0 1 RGB颜色显示 1 0 非RGB多彩色显示,如RGY 1 1 没有定义 |
|
2 |
标准默认颜色空间sRGB |
如果置1,显示将使用默认的颜色空间sRGB作为基色 |
|
1 |
推荐分辨率模式 |
如果置1,推荐分辨率为第一个详细描述的时序(DTD) |
|
0 |
支持GTF |
如果置1,支持GTF标准分辨率 |
6. Color Characteristics
字节 |
颜色特征 |
基于CIE出版15.2测定空间 |
19H |
Red / Green Low Bits 红绿场xy坐标低2位值 |
Rx1 Rx0 Ry1 Ry0 Gx1 Gx0 Gy1 Gy0 |
1AH |
Blue / White Low Bits 蓝白场xy坐标低2位值 |
Bx1 Bx0 By1 By0 Wx1 Wx0 Wy1 Wy0 |
1BH |
Red_x红场画面x坐标 |
Red_x bits 9 →2 |
1CH |
Red_y红场画面y坐标 |
Red_y bits 9 →2 |
1DH |
Green_x绿场画面x坐标 |
Green_x bits 9 →2 |
1EH |
Green_y绿场画面y坐标 |
Green_y bits 9 →2 |
1FH |
Blue_x蓝场画面x坐标 |
Blue_x bits 9 →2 |
20H |
Blue_y蓝场画面y坐标 |
Blue_y bits 9 →2 |
21H |
White_x白场画面x坐标 |
White_x bits 9 →2 |
22H |
White_y白场画面y坐标 |
White_y bits 9 →2 |
7. Established Timings
提供一些基本固定的VESA, Apple, Mac, IBM VGA等输出的Timing
字节 |
位 |
描述 |
信源 |
23H |
7 |
720 x 400 @ 70Hz |
IBM, VGA |
6 |
720 x 400 @ 88Hz |
IBM, XGA2 |
|
5 |
640 x 480 @ 60Hz |
IBM, VGA |
|
4 |
640 x 480 @ 67Hz |
Apple, Mac II |
|
3 |
640 x 480 @ 72Hz |
VESA |
|
2 |
640 x 480 @ 75Hz |
VESA |
|
1 |
800 x 600 @ 56Hz |
VESA |
|
0 |
800 x 600 @ 60Hz |
VESA |
|
24H |
7 |
800 x 600 @ 72Hz |
VESA |
6 |
800 x 600 @ 75Hz |
VESA |
|
5 |
832 x 624 @ 75H z |
Apple, Mac II |
|
4 |
1024 x 768 @ 87Hz(I) |
IBM |
|
3 |
1024 x 768 @ 60Hz |
VESA |
|
2 |
1024 x 768 @ 70Hz |
VESA |
|
1 |
1024 x 768 @ 75Hz |
VESA |
|
0 |
1280 x 1024 @ 75Hz |
VESA |
|
25H |
7 |
1152 x 870 @ 75Hz |
Apple, Mac II |
6-0 |
保留 |
8. Standard Timing Identification
这16个字节提供最多8种分辨率的识别,每一种分辨率都是由2个字节的模式格式和刷新率得到的。这些分辨率都没有包含Established Timings中。备注:这2个字节的识别码都是由VESA标准分辨率来定义的,它们都是VESA分辨率的一部分,未使用的字节应该设为01H. 详细设定见表12。
字节 |
位 |
描述 |
源 |
标准分辨率定义1 |
注释 |
||
26H |
(水平活动像素 /8)-31 |
一个字节能够的水平活动像范围是 256-2以 8 个像素为增加 |
|
27H |
7,6 5-0 |
画面比 Bit7 Bit6 生效 0 0 1 : 1 画面比 0 1 4 : 3 画面比 1 0 5 : 4 画面比 1 1 16 :9 画面 比 刷新率( Hz ) -60 |
画面比 = 水平像素 / 垂直活动 范围是 60-123Hz |
28H-29H |
同上 |
同上 |
|
2AH-2BH |
同上 |
同上 |
|
2CH-2DH |
同上 |
同上 |
|
2EH-2FH |
同上 |
同上 |
|
30H-21H |
同上 |
同上 |
|
32H-33H |
同上 |
同上 |
|
34H-35H |
同上 |
同上 |
9. Detailed Timing Descriptions(DTD)
共72个字节分为四个详细时序描述块(DTD),每部分18个字节,故最多可以对四个TIMING进行详细描述。
Detailed Timing Descriptions(DTD)还可以用来描述显示器的其他特性,如机型名、最大频率范围,字符型序列号SN,字符串描述信息等,如下结构:
10. Extension Flag
扩展标志:除主块128字节外,如果有扩展块则该字节置1,VGA和DVI的值为0,HDMI的值为1
11. Checksum
校验和:使前127字节加上此字节等于0。
三、EDID扩展块(CEA-861D)详解
1. CEA-861D(HDMI)结构
地址 (+80H) |
值 |
描述 |
格式 |
00H |
02H |
Tag(02H) |
|
01H |
03H |
版本号 |
|
02H |
DTD开始地址,暂用d表示 |
d为扩展块中详细时序描述(DTD)开始地址 |
|
03H |
Native DTD数量及YCbCr444/422,过扫描支持设置 |
Bit7:是否支持过扫描 Bit6:是否支持basic audio Bit5:是否支持YCbCr 4:4:4 Bit4:是否支持YCbCr4:2:2 低4bits:Native DTD个数 |
|
<d |
各功能块参数设置 |
各功能块包括: Video Data Block Audio Data Block Speaker Allocation Data Block Vendor Specific Data Block 等等.... 大部分功能块长度可变 |
|
d |
DTD开始地址,根据剩下空间情况,可定义n个DTD(每个18字节),所以DTD占用空间为n*18 |
Detailed Timing Descriptor(DTD 详细时序描述),每一个DTD包括18字节,具体结构EDID主块中已有定义。 |
|
d+(n*18) |
00H |
剩下的保留字节(Padding) |
00H填充 |
7FH |
Checksum |
使前127字节加上此字节等于0 |
2. Tag
固定数值02H,EDID标准分配给CEA-861x标准的扩展标识。
3. Revision
CEA扩展块版本号,目前使用03版本
4. 数字信号特性
此字节各位定义如下:
Bit7:是否支持过扫描
Bit6:是否支持basic audio
Bit5:是否支持YCbCr 4:4:4
Bit4:是否支持YCbCr4:2:2
低4bits:Native DTD个数
Data
5. Data Blocks(各功能块参数设置)
各Data Block结构如下:
注:L表是length,即长度,表中有说明
其中各Data Block的Tag Code值定义如下:
1.Video Data Block
根据Data Block结构,首字节的bit7~5为Video Data Block = 2,bit4~0为Video Data Block长度,后面跟的字节为多个CEA short Video Descriptor,结构如下:
Video Identification Code见CEA-861D标准定义,如下:
2.Audio Data Block
根据Data Block结构,首字节的bit7~5为Audio Data Block = 1,bit4~0为Video Data Block长度,后面跟的字节为1个或多个CEA short Audio Descriptor,每个CEA short Audio Descripto由三个字节组级,分为LPCM,AC3,MPEG2等各种Audio Format Code, Audio Format Code及CEA short Audio DZescriptor结构如下:
3.Speaker Allocation Data Block
根据Data Block结构,首字节的bit7~5为Speaker Allocation Data Block = 4,bit4~0为Speaker Allocation Data Block长度(固定为3),后面跟的3字节,结构如下:
注:F为前置,L为左置,R为右置,C为中置,Fxx=0表示预留位
4.Vendor Specific Data Block(VSDB)
厂商定义块,根据Data Block结构,首字节的bit7~5为Vendor Specific Data Block= 3,bit4~0为Vendor Specific Data Block长度,后面结构参照HDMI标准中的VSDB规范,如下是HDMI1.4a(HDMI1.4a使用CEA-861D)中的VSDB结构:
6. Detailed Timing Descriptions(DTD)
Detailed Timing Descriptions(DTD),每块18字节,详细结构见EDID主块对此部分的解释。
7. Padding(保留字节)
保留字节,用00填充。
8. Checksum
校验和:使前127字节加上此字节等于0。
参考资料:
1.EDID_V3标准规范
2.CEA-861-F 规范
EDID的简介和解析的更多相关文章
- 【转】EDID的简介和解析
转自:https://www.cnblogs.com/beyond-rxl/p/9266997.html 一.EDID简介 EDID: Extended Display Identification ...
- 跟我一起学.NetCore之中间件(Middleware)简介和解析请求管道构建
前言 中间件(Middleware)对于Asp.NetCore项目来说,不能说重要,而是不能缺少,因为Asp.NetCore的请求管道就是通过一系列的中间件组成的:在服务器接收到请求之后,请求会经过请 ...
- PDF数据提取------3.解析Demo
1.PDF中文本字符串格式中关键值信息抓取(已完成) 简介:这种解析比较传统最简单主要熟练使用Regular Expression做语义识别和验证.例如抓取下面红色圈内关键信息 string mett ...
- XML 序列化与PULL解析
简介 Pull解析XML XmlPullParser解析器的运行方式与SAX解析器相似.它提供了类似的事件(开始元素和结束元素),但需要使用parser.next()方法来提取它们.事件将作为数值代码 ...
- GSON 简介 示例
Gson简介 目前解析json最常用的三种工具:org.json(Java常用的解析),fastjson(阿里巴巴出的),Gson(Google出的),解析速度最快的是Gson. Gson的全名为Go ...
- 【Android 应用开发】 ActionBar 样式详解 -- 样式 主题 简介 Actionbar 的 icon logo 标题 菜单样式修改
作者 : 万境绝尘 (octopus_truth@163.com) 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/3926916 ...
- apache.commoms.digester3 解析xml文件
Technorati 标签: java,xml,digester,xmlrule,FromXmlRulesModule 1 简介 java解析xml,就个人所知有3种方法DOM.SAX和Digeste ...
- 文件类型解析漏洞防御与攻击(PHP)
简介: 解析漏洞主要是一些特殊文件被iis.Apache.Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞,一般的思路都是用图片木马来欺骗服务器,上传webshell,达到提权的目 ...
- mybatis源码-解析配置文件(四-1)之配置文件Mapper解析(cache)
目录 1. 简介 2. 解析 3 StrictMap 3.1 区别HashMap:键必须为String 3.2 区别HashMap:多了成员变量 name 3.3 区别HashMap:key 的处理多 ...
随机推荐
- DAO层,Service层,Controller层、View层介绍
来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ...
- Android学习之Styles And Includes
最近在看 Android Programming: The Big Nerd Ranch Guide,书写的不错,推荐级别.打算把看书学到的东西,一点一点记录下来.目前看到24章,讲的是style 和 ...
- 第八次作业——windows各种基本应用的命令处理方法
- cascade属性
cascade属性是设置级联操作的也就是在操作一端的数据如果影响到多端数据时会进行级联操作,一对一的时候直接写在标签上,其他的要写在set标签上 cascade="none|save-upd ...
- 5、Python,enumerate用法
1.enumerate()是python的内置函数 2.对于一个可迭代(iterable)/可遍历的对象(如列表,字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 3.多用 ...
- angularJs的过滤器扩展及自定义过滤器
一.过滤器扩展 1.过滤器的组合使用 <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta ...
- redis几种加锁的实现
1. redis加锁分类 redis能用的的加锁命令分表是INCR.SETNX.SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执 ...
- kubernetes 入门学习
kubernetes 学习 kubernetes 简介 Kubernetes这个名字源自希腊语,意思是"舵手",也是"管理者","治理者"等 ...
- POJ1375 Intervals
嘟嘟嘟 题意简述:给出一个光源\((x_0, y_0)\),和一些圆,求投影区间. 这道题其实就是求经过\((x_0, y_0)\))的圆的切线. 刚开始我想到了一个用向量旋转的方法,但是写起来特别麻 ...
- [19/04/28-星期日] GOF23_结构型模式(享元模式)
一.享元模式(FlyWeight,轻量级) [共享类与非共享类] /*** *FlyweightFactory享元工厂类: 创建并管理享元对象,享元池一般设计成键值对 */ package cn.sx ...