BT601 BT656 BT709 BT1120 解析

article/2025/9/26 5:18:06
从ITU-R BT1120文档上可知,BT1120支持的是1080p:

文档定义一帧为1 125 总行数和1 080 有效行;每行有效像素为1920
图像频率60、 50、 30、 25 和 24Hz包括逐行、隔行和帧分段传输;60、 3024 Hz系统中,也包括这些值除以1.001
的图像频率, 

文档规定对于10位接口对应于数字量化级0(10)3(10)1 020(10)1 023(10)的数据字保留用于数据标识目的,不得
作为图像数据出现。 

 

 

 

 下面是逐行扫描系统帧结构

 

 SAV和EAV称为定时基准码,定时基准码由 个字的序列组成 ,前 个字为固定前缀, 第 4个字运载的信息定义出场识别F)、 场/帧消隐期V) 和行消隐期H)。  使用SAV和EAV来指示视频时序,可以减少视频传输的引脚数量。
注1 —EAV和SAV中(F/V/H)的值反映F、V和H比特的状态;该值以F、V、H组成的3比特字用二—十进制记数(BCD)表示(F对应MSB,H对应LSB)。例如,数值3代表的比特为F=0、V=1和H=1
 

 

8bit

 

SAV/EAV
 
F
V
H
P3
P2
P1
P0
  
0
1
0
0
0
0
0
0
0
80
 
1
1
0
0
1
1
1
0
1
9D
 
2
1
0
1
0
1
0
1
1
AB
 
3
1
0
1
1
0
1
1
0
B6
 
P3 = V xor H
P2 = F xor H
P1 = F xor V
P0 = F xor V xor H
 
 辅助数据
EAV终端和SAV始端之间的水平消隐间隔可被应用于传送辅助数据包。 在逐行系统中,在线路141(包括)和1 122 到 1 125(包括)期间; 

消隐数据

数字消隐期间不应用于定时基准码SAV 和 EAV) 、行号或者不应用于辅助数据ANC) 的数据字根据复用数据流中的合适位置, 在这些位置上填充以对应于下列消隐电平的字

16(8)对于 Y、 R、 G、 信号
128(8)对于 CB/CR时分复用的色差信号)。

  64(10) 对于Y、 R、 G、 B信号;
512(10) 对于CB、 CR(时分复用的色差信号)。
接口行号数数据 
 
行号数数据由指明行号数的两个字组成。 行号数数据的位置应紧接在EAV之后 ,行号数数据的比特分配如下:

 

 误码检测码
误码检测码为循环冗余校验码(CRC),用以检测有效数字行、 EAV和行号数数据中的
误码,它由两个字组成,决定于下列多项式发生器式子:
EDC(x)=x18+x5+x4+1
校验码的初始值置0,计算起始于数字有效行的第一个字,结束于行号数数据的末一个
字。计算两个误码检测码,一个用于亮度数据(YCR),一个用于色差数据(CCR)。误码
检测码的比特分配如表9所示。误码检测码的位置应紧接在行号数数据之后。

 并行数据与并行数据复用

并行数据流中Y与CbCr分别用10位数据传输,在并行复用中Y与CbCr合并成10位传输。从下图中可以看到SAV/EAV、行号和误码检测码的位置。


 

 视频数据格式 
BT656接口使用的是8位或者10位4:2:2 YCbCr数据,为了能够处理HDTV数据传输,有些设计使用16位或者20位YCbCr的接口(本质上是两个BT656数据流,一个为数据Y,一个为数据CbCr),或者使用时钟的两个边沿传输数据。

BT1120与BT656的区别

         BT656主要是针对PAL/NTSC等标清视频。时钟频率是27MHz。注意采样频率灰度为12.5MHz,色度为6.25MHz。随着高清视频的发展的需要,又推出了BT1120标准,它与BT656是类似的,只不过时钟频率更高了,以适合高清视频的传输。

 601是SDTV的数据结构 656是SDTV的interface
709是HDTV的数据结构 1120是HDTV的interface


 

实际的同步信号现行同行信号的关系
============================================================================
============================================================================
//该程序通过内嵌同步码产生行和场同步信号
复制代码
 1 module sav_eav_detec(
 2 input clk,
 3 input [15:0] din,
 4 output[15:0] dout,
 5 output h_sync_out,
 6 output v_sync_out
 7  
 8 );
 9  
10 reg [15:0] v_data [6:0] ;
11  
12 always @( posedge clk )
13 begin
14 v_data[0] <= din;
15 end
16 genvar i ;
17 generate
18  
19 for( i = 0;i <= 5;i = i+1 )
20 begin :data_dly
21 always@( posedge clk )begin
22 v_data[i+1] <= v_data[i];
23 end
24 assign dout = v_data[6];
25  
26 end
27 endgenerate
28 wire [6:0] time_ref_code;
29 reg [6:0] time_ref_code_r = 0;
30 assign time_ref_code [6] = (v_data[3][7:0] == 8'hff ) ? 1'b1 : 1'b0;
31 assign time_ref_code [5] = (v_data[2][7:0] == 8'h00 ) ? 1'b1 : 1'b0;
32 assign time_ref_code [4] = (v_data[1][7:0] == 8'h00 ) ? 1'b1 : 1'b0;
33 //assign time_ref_code [1:0] = (v_data[0][7:0] ==8'h80 )? 2'b00 : ((v_data[0][7:0] ==8'h9d) ? 2'b01:((v_data[0][7:0] ==8'hab )? 2'b10:((v_data[0][7:0] )==8'hab ? 2'b11:0)));
34 assign time_ref_code[0] = (v_data[0][7:0] ==8'h80) ?1'b1 : 1'b0;
35 assign time_ref_code[1] = (v_data[0][7:0] ==8'h9d) ?1'b1 : 1'b0;
36 assign time_ref_code[2] = (v_data[0][7:0] ==8'hab) ?1'b1 : 1'b0;
37 assign time_ref_code[3] = (v_data[0][7:0] ==8'hb6) ?1'b1 : 1'b0;
38 // always @( * )
39 // begin
40 // case( v_data[0][7:0] )
41 // 8'h80 :time_ref_code[1:0] = 2'b00;
42 // 8'h9d :time_ref_code[1:0] = 2'b01;
43 // 8'hab :time_ref_code[1:0] = 2'b10;
44 // 8'hb6 :time_ref_code[1:0] = 2'b11;
45 // default :;
46 // endcase
47 // end
48  
49 always @( posedge clk )
50 begin
51 time_ref_code_r <= time_ref_code;
52 end
53  
54 // reg h_sync;
55 // reg v_sync;
56 reg h_sync_r = 0;
57 reg v_sync_r = 0;
58 always @( posedge clk )
59 begin
60 case(time_ref_code_r )
61 7'h71 :begin h_sync_r = 1'b0; v_sync_r = 1'b0; end
62 7'h72 :begin h_sync_r = 1'b1; v_sync_r = 1'b0; end
63 7'h74 :begin h_sync_r = 1'b0; v_sync_r = 1'b1; end
64 7'h78 :begin h_sync_r = 1'b1; v_sync_r = 1'b1; end
65 default : begin h_sync_r = h_sync_r; v_sync_r = v_sync_r; end
66 endcase
67 end
68  
69 reg [3:0] h_sync_dly = 0;
70 reg [3:0] v_sync_dly = 0;
71 always @( posedge clk )
72 begin
73 h_sync_dly[3:0] <= {h_sync_dly[2:0],h_sync_r};
74 v_sync_dly[3:0] <= {v_sync_dly[2:0],v_sync_r};
75 end
76  
77 wire h_black ;
78 reg h_black_r = 0;
79 reg v_black_r = 0;
80 assign h_black = h_sync_r | h_sync_dly[3] ;
81 always @( posedge clk )
82 begin
83 h_black_r <= h_black;
84 v_black_r <= v_sync_r;
85 end
86  
87  
88  
89  
90 assign h_sync_out = h_black_r;
91 assign v_sync_out = v_black_r;
92 endmodule
复制代码

http://chatgpt.dhexx.cn/article/wOuwfY31.shtml

相关文章

ITU-R BT.709

ITU-R BT.709主要定义了高清电视视频的参数值 709 OETF L表示图像亮度信号&#xff0c;V表示电信号色度坐标 R:(0.640, 0.330) G:(0.300, 0.600) B:(0.150, 0.060) 参考白坐标W:(0.3127, 0.3290)

RGB转YCbCr422_BT709颜色空间转换仿真

1.前言 表示图像颜色的方法除了RGB颜色模型之外&#xff0c;还有一些别的颜色模型&#xff0c;这些颜色模型被叫做色彩空间&#xff0c;色域空间&#xff0c;或颜色空间。 常见的颜色空间有RGB&#xff0c;YIQ&#xff0c;HSV&#xff0c;YCbCr。 RGB图像又称真彩色图像&#…

bt709和srgb_选择用于多用途视频编辑和色彩校正的显示器— sRGB,DCI-P3,REC 709

bt709和srgb **Note from the author: if you enjoy this article, please follow me or this publication for more video production and marketing related content.** **作者注:如果您喜欢本文,请关注我或此出版物以获取更多与视频制作和营销相关的内容。** I will star…

BT601和BT709到底什么关系

每每遇到这两个玩意&#xff0c;头脑就一片空白&#xff0c;去baidu&#xff0c;都是讲一大堆历史故事&#xff0c;故事看完&#xff0c;还是没弄懂他们之间到底是什么关系&#xff0c;在我们日常编程中要怎样才能遵从这两个玩意。 下面利用一个包含视频采集和视频显示的设备讲…

关于BT.709标准

有人因为709的事情吵起来了...... HOMEBOY电影洗印厂 HOMEBOY电影数字洗印厂是一家专注于影视调色的后期公司 12 人赞同了该文章 前两天一篇名为“到底啥是Rec.709&#xff1f;”的文章因为一些翻译上疏漏&#xff0c;造成了不少朋友的困惑和争论&#xff0c;对此我们先向大…

大时代势不可挡,隔行扫描已经消失。BT.709色彩空间也开始离我们远去

BT.709,这个色域空间满足ITU-R BT.709标准&#xff0c;并被用于现有的视频摄像机中。以前被ITU-R推广的Rec.709这个名字已经改变了。在升级后被称为BT.709。 去年下半年&#xff0c;国际电信联盟无线电通信部门(ITU-R)颁布了面向新一代超高清UHD(Ultra-high definition)视频制作…

视频基本原理 - BT709和BT1120

上文描述了BT601和BT656的内容以及两者之间的关系。本文主要描述BT1120规范&#xff0c;但是在这之前&#xff0c;先讲述一下BT709规范。 就如上文描述的&#xff1a;BT601是SDTV的数据结构&#xff0c;BT656是SDTV的接口定义&#xff1b; BT709是HDTV的数据结构&#xff0c;B…

codeql

title: codeql categories: javacodeql date: YYYY-MM-DD HH:mm:ss tags:javacodeql代码审计 codeql 下一个靶场来测试 https://github.com/l4yn3/micro_service_seclab/ 引擎安装(codeql) https://github.com/github/codeql-cli-binaries/releases SDK安装(ql) https:/…

VScode连接SQL Server数据库执行语句

VScode的下载地址&#xff1a;VScode官网 推荐插件&#xff1a;VScode实现HTML的编写、运行和调试&推荐插件 sql文件中文乱码&#xff1a;解决VScode打开文件后中文显示为乱码 安装SQL Server (mssql)拓展 连接到SQL Server 按Ctrl Shift P或F1以打开命令面板输入sql…

【DB2报错】创建存储过程报SQLSTATE:-104 SQLCODE:42601

今天创建存储过程的时候碰到这个报错&#xff1a; AN unexpected tkoen "END-OF-STATEMENT" was found following "COMMIT",Expected tokens may include:"END IF"..SQLSTATE:-104 SQLCODE:42601 翻译&#xff1a;在“COMMIT”之后发现了一个异…

TinyXML2下载与编译

最近有使用到用XML格式来封装UDP报文&#xff0c;所以研究下TinyXML。 TinyXML下载地址&#xff1a; https://github.com/leethomason/tinyxml2 进入到tinyxml2文件目录下&#xff0c;找到.sln文件&#xff08;解决方案文件&#xff09; 直接用VS2010以上版本打开&#xff0…

C++ 使用 tinyxml2 解析创建 xml

目录 1. github 地址 2. 使用 3. 解析xml demo 4. 注意点 5. 解析效果展示 6.创建xml 7.创建xml效果展示 8. 完整的示例&#xff0c;添加Vector 9. 参考 1. github 地址 GitHub - leethomason/tinyxml2: TinyXML2 is a simple, small, efficient, C XML parser that …

TinyXML2 学习

换cocos2d-x版本到2.1.3之后&#xff0c;自己的文件读写也用了引擎CCUserDefault使用的TinyXML2&#xff0c;在这汇总了一下TinyXML2的使用&#xff0c;希望大家看这一篇文章就可以解决自己的问题&#xff0c;省得到处查阅…… 注意&#xff0c;文章一次解释了写操作->读操…

Tiny-XML

Tiny-XML 2023-01-15:基于C语言实现的小型XML解析器 解析代码实现仅600余行大部分数据结构使用链表实现&#xff0c;malloc、free、realloc、strdup函数已在文件开头使用宏定义设置&#xff0c;方便移植于别的平台项目注释内容丰富&#xff0c;数据结构和常用函数方法已于文件…

xml开发笔记(一):tinyXml2库介绍、编译和工程模板

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/111828450 长期持续带来更多项目与技术分享&#xff0c;咨询请加QQ:21497936、微信&#xff1a;yangsir198808 红胖子(红模仿)的博文大全&#x…

tinyxml2的安装使用及示例总结

TinyXml2 库使用方法 安装 下载地址 https://github.com/leethomason/tinyxml2 使用 git 下载 &#xff08;1&#xff09;下载 tinyxml2 git clone https://github.com/leethomason/tinyxml2.git &#xff08;2&#xff09;进入相应目录并编译 cd tinyxml2/ cmake . make &…

C++使用TinyXml2解析Xml

1. TinyXml2 简介 TinyXml 一直是一个非常好用的 Xml 解析工具 , 最新的开源版本 TinyXml2 相对于旧版本的 TinyXml 使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳选择 , 除非您有维护TinyXML-1代码的要求 ; TinyX…

使用tinyxml2库解析xml

tinyxml2简介 tinyxml2是c编写的轻量级的xml解析器&#xff0c;而且是开放源代码的&#xff0c;在一些开源的游戏引擎中用的比较多。源码托管在github上。 源码地址&#xff1a;https://github.com/leethomason/tinyxml2 tinyxml2使用起来非常简单&#xff0c;下载源码后无需…

TinyXml学习笔记

TinyXml学习笔记 张弛<> 注:本文的最新版本可以在下面的地址找到 http://amidiot.512j.com/article/tinyxml/tinyxml_note.htm 一、 TinyXml的特点 TinyXml是一个基于DOM模型的、非验证的轻量级C解释器。 1. SAX和DOM 目前XML的解析主要有两大模型&#…

TinyXml使用详解

本文用一个详细的例子说明了TinyXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。 首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^: 1、TinyXml源代码只有4个cpp文件和2个头文件。 2、首先要理解TinyXml中的各个基本类型之间的关系,看看这个继承图大家…