预备知识

场的概念

在视频传输协议中,“场”(field)是指构成一帧完整图像的两个半幅图像之一。在传统的隔行扫描视频系统中,一帧完整的图像由两个场组成:上场(top field)和下场(bottom field)。这种扫描方式主要用于模拟电视信号中,以减少带宽需求并提高图像质量。

场的基本概念:
隔行扫描:在隔行扫描中,屏幕上的像素不是一次性全部刷新,而是分成两个阶段来完成。首先刷新所有偶数行(上场),然后刷新所有奇数行(下场),这样就完成了一帧图像的显示。
上场与下场:上场包含所有偶数行,下场包含所有奇数行。这两个场结合在一起组成一帧完整的图像。

帧与场:
在隔行扫描中,每两场构成一帧。帧是完整的图像,而场则是帧的一半。因此,在模拟电视系统中,每秒显示的场数通常是帧数的两倍。

隔行扫描与逐行扫描的区别:
隔行扫描:每一帧图像分成两个场显示,每个场包含一半的扫描线。这种方式减少了带宽需求,但也可能导致运动图像出现闪烁或交错现象(interlacing effect)。
逐行扫描:每一帧图像的所有扫描线一次性显示完毕。这种方式可以提供更平滑的图像,但需要更大的带宽。

应用场景:
模拟电视系统:在 PAL 和 NTSC 等模拟电视标准中,使用隔行扫描技术来传输视频信号。例如,NTSC 系统的帧率为每秒 30 帧,但实际上是以每秒 60 场的速度传输。

PAL,NTSC,SECAM

三者都是模拟电视信号标准。

NTSC: 全称为 National Television Standards Committee。视频格式为一张 NTSC 的图片包含 525 个交错行(interlaced lines), 每秒 29.97 帧。

PAL: 全称为 Phase Alternate Line。视频格式为一张 PAL 图片 625 个交错行,每秒 25 帧。

SECAM: 全称为 Sequential Color and Memory。视频格式和 PAL 一样,一张 SECAM 图片 625 个交错行,每秒 25 帧。但是 SECAM 处理颜色信息的方式和 PAL 不同。

BT.601

为了代替模拟电视信号,定义了标准清晰度视频信号的数字化格式 YCbCr。

BT.601(标清),BT.709(高清),BT.2020(超高清)定义的 YCbCr 标准格式各不相同。

其中 BT.601 Full-Range(YCbCr 的取值都为 0~255)的 YUV 数据格式与 RGB 转换关系为:

\(Y=0.299R+0.587G+0.114B\)
\(Cb=0.564(B-Y)\)
\(Cr=0.713(R-Y)\)

算出来结果为:

\(Y=0.299R+0.587G+0.114B\)
\(Cb=-0.169R-0.331G+0.500B + 128\)
\(Cr=0.500R-0.418G-0.081B + 128\)

电视机色域不能做到全覆盖,比如Y的取值只能在[16,235], CbCr的取值在[16,240],那么计算的公式需要变化,像下面这个公式一样,需要乘上系数(240-16)/(235-16)

BT.656

Introduction

BT.656 定义了 parallel(已不再使用) 和 serial 接口,在视频电子设备间传输 4:2:2 YCbCr digital video。video 的分辨率可以是 720*486(525/60 video systems)或 720*576(625/50 video systems)。

BT.656 使用 8-bit10-bit 编码的 YCbcr 数据和 27MHz 的 clock 传输。与传统的视频时序信号(Hsync, Vsync, Blank)不同,BT.656 使用独特的时序编码,可以有效地减少接口数量(IC pins)。

传输的video data 格式是遵循 ITU-R 601 协议的,BT.656 是定义了设备间传输video data的interface

Data stream format

每行由 EAV + BLANKING + SAV + ACTIVE VIDEO DATA 组成。

虽然 EAV,BLANKING,SAV 是三个独立的 fields,但都属于 horizontal blanking interval。

8-bit 编码会占据 bit2~9, bit1 和 0 会填充为 0。

使用 8-bit 编码的 YCbCr Bt.656 video stream 如图所示:

EAV and SAV

EAV(end of active video), SAV(start of active video)。

  • EAV: 标志当前行的开始。
  • SAV: 标志当前行 active video data 的开始。

这些信号的存在,使得传统的时序信号(HSYNC, VSYNC, BLANK)不再需要了。

EAV 和 SAV 都由 4 字节组成,开头的三个字节是固定的:0xFF-0x00-0x00。

第四个字节的格式如下(status word):

D9 1: always 1。
D8 F: field bit. 0-field1, 1-field2。
D7 V: vertical blanking status. 1-处在 vertical filed blanking interval. 其余时间保持 0。
D6 H: horizontal blanking status. 1-EAV, 0-SAV。
D5 P3: protection bit 3。
D4 P2: protection bit 2。
D3 P1: protection bit 1。
D2 P0: protection bit 0。

protection bits 可以用来发现 2bit 的错误以及纠正 1 bit 的错误。
P3~P0 的值根据 F,V,H 而定,如下图所示。

Active Video Data

根据 ITU-R BT.601 规定,每个 pixel 的格式为 4:2:2 YCbCr。在标准的 525/625 行系统中,每行包括采样 720 个 Y 和 360 个 Cb 和 Cr,这样总的数量就是 1440 个。

在 SAV 之后,active video data 以这样的格式传输:

$$Cb_0\:Y_0\:Cr_0\:Y_1\:Cb_1\:Y_2\:Cr_1\:Y_3\:...\:Cb_{359}\:Y_{718}\:Cr_{359}\:Y_{719}$$

Bit2~9 all set to 1 or 0 are reserved for data identification.

Blanking

除了 EAV 和 SAV 的 blanking 区域,剩下的 blanking 区域也由\(CbYCrY\)这样的序列构成,其中 Cb=0x80, Y=0x10, Cr=0x80。

因此 blanking 的序列为:

8-bit: 80h, 10h, 80h, 10h,… 10-bit: 200h, 40h, 200h, 40h,…

标准的 525-line system 一行中 blanking region 大小为 268 个数据, 625-line system 有 280 个数据。

Ancillary Data

辅助数据(digital audio, closed-captioning, teletext)可以被插入到每行的 blanking interval, 在 EAV 和 SAV 中间。也可以在任意的 vertical blanking intervals 传递。

TODO: 辅助数据的格式有需要再整理,这一部分在 ITU-R BT.1364

Reference

BT656.pptx

https://ez.analog.com/cfs-file/__key/communityserver-wikis-components-files/00-00-00-01-91/an9728.pdf