欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ADV7619芯片分辨率、帧率、I/P 格式获取

程序员文章站 2022-03-13 17:24:18
...

ADV7619芯片数据获取

1、ADV7619

  ADV7619是一款高质量、双输入、单输出(2:1)多路复用高清多媒体接口(HDMI)接收器。现需要获取输入视频数据的分辨率、色彩空间、I制/P制和帧率信息。

  • 分辨率:单位英寸中所包含的像素点数。如 1920 x 1080。
  • 色彩空间:一定的色彩范围,是一种色彩模型。如 RGB、YUV。
  • I制/P制:I 表示采用交错式扫描视频显示方式,P 表示逐行扫描视频显示方式。
  • 帧率:用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)。

2、数据获取

  adv7619 芯片分为多个 IIC 从地址,对应地址如下:

#define IO_I2C_addr         0x98    /* same of the ADV7619_I2C */
#define CEC_I2C_addr        0x80
#define INFO_I2C_addr       0x7c
#define DPLL_I2C_addr       0x4c
#define KSV_I2C_addr        0x64
#define EDID_I2C_addr       0x6c
#define HDMI_I2C_addr       0x68
#define CP_I2C_addr         0x44

  从对应的IIC地址中,读取相关寄存器,获取需要的视频信息。

2.1 颜色空间

  从 HDMI 地址中获取寄存器数据,IIC 地址:0x68(HDMI_I2C_addr),寄存器地址:0x53。
ADV7619芯片分辨率、帧率、I/P 格式获取
  假设读到的寄存器的值为 0xXX ,根据(0xXX & 0x0F)的值得到相对应的颜色空间。

2.2 I/P 格式

  读取输入视频流的格式是 I 制还是 P 制。
  从 HDMI 地址中获取寄存器数据,IIC 地址:0x68,寄存器地址:0x0B。
ADV7619芯片分辨率、帧率、I/P 格式获取

  假设读到的寄存器的值为 0xXX,计算(0xXX & 0x20),结果大于 0 表示输入视频流为 I 制,否则为 P 制。

2.3 分辨率

  视频分辨率分为像素宽和像素高。
  像素宽从 HDMI 地址中获取寄存器数据,IIC地址:0x68,寄存器地址:0x07和0x08。
ADV7619芯片分辨率、帧率、I/P 格式获取
  假设从寄存器 0x07 读到的值为 0xAA,从寄存器 0x08 读到的值为 0xBB,计算((0xAA & 0x1F) * 256 + 0xBB),得到的即为像素宽。
  
  像素高从 HDMI 地址中获取寄存器数据,IIC 地址:0x68,如果输入视频流为P制,寄存器地址:0x09 和 0x0A,如果输入视频流为 I 制,寄存器地址:0x0B 和 0x0C。
ADV7619芯片分辨率、帧率、I/P 格式获取ADV7619芯片分辨率、帧率、I/P 格式获取
  假设从寄存器 0x09 或 0x0B 读到的值为 0xAA,从寄存器 0x0A 或 0x0C 读到的为 0xBB,计算((0xAA & 0x1F) * 256 + 0xBB),得到的即为像素高。
  
  注意,以上获取的为有效像素数。

2.4 获取帧率

  帧率计算公式如下:


fps=TMDSWidthHeighfps = \frac{TMDS}{Width * Heigh}

  其中:

  • TMDS:时钟频率。
  • Width:每行像素数(实际像素数,非有效像素数)。
  • Height:行数。

  
  以 1080P60 为例,相关参数对应的寄存器如下:
  
  1. TMDS
  从 HDMI 地址中获取寄存器数据,IIC 地址:0x68,寄存器地址:0x51 和 0x52。
ADV7619芯片分辨率、帧率、I/P 格式获取

  0x51 寄存器计算出的频率单位为 MHz,0x52 寄存器计算出的频率单位为 1/128MHz。
  
  以 1080P60 为例,0x51 和 0x52 寄存器数据分别为 0x4A(74) 和 0x3E(62)。计算实际的时钟频率为:


742+62128=148.484375MHz74 * 2 + \frac{62}{128} = 148.484375 MHz

  
  2.Width
  从 HDMI 地址中获取寄存器数据,IIC 地址:0x68,寄存器地址:0x1E 和 0x1F。
ADV7619芯片分辨率、帧率、I/P 格式获取
  以 1080P60 为例,0x1E 和 0x1F 寄存器数据分别为 0x8 和 0x98,计算每行像素数为 (0x8 & 0x3F)*256 + 0x98,结果为 2200。
  
  3.Height
  从 HDMI 中获取寄存器数据,IIC 地址:0x68,如果输入视频流为 P 制,寄存器地址:0x26 和 0x27;如果输入视频流为 I 制,寄存器地址为 0x28 和 0x29。
ADV7619芯片分辨率、帧率、I/P 格式获取

  获得结果后,要将值除以 2。
  
  以 1080P60 为例,0x26 和 0x27 寄存器数据分别为 0x8 和 0xCA,计算行数为:((0x8 & 0x3F)*256 + 0xCA)/2,结果为 1125。
  
  4.计算结果
  根据公式,1080P60 的帧率计算结果为:


148.484375MHz22001125=59.994Hz\frac{148.484375MHz}{2200 * 1125} = 59.994Hz

  取值为 60 HZ。

3、中断

  当输入视频流的分辨率和帧率发生变化时,需要通知应用层重新获取视频信息。
  
  由驱动程序获取中断后向应用层发送信号实现。需要分辨率和帧率变化时能产生相应中断。格式变化时会造成像素时钟频率的变化。
  
  相关寄存器:

寄存器 地址 说明
NEW_TMDS_FRQ_MB1
IO 0x87 bit[1]
使能 INT1 上的像素时钟频率变化中断
NEW_TMDS_FRQ_ST
IO 0x84 bit[1]
像素时钟频率变化状态寄存器
NEW_TMDS_FRQ_CLR
IO 0x85 bit[1]
清除 NEW_TMDS_FRQ_ST。清除后,下次像素时钟频率变化时才会产生中断

  
  
  ADV7619 寄存器手册:
  链接:https://pan.baidu.com/s/1r1onF-uk1FYgX2YXGOz__A
  提取码:x48g

相关标签: ARM