解密显卡的数字视频
技术大讲堂
除对速度、画质的追逐之外,新一代的显卡已经开始强调对数字视频的优化。什么是数字视频、数字视频到底与显卡有什么关系、NVIDIA公司大力宣传的数字视频技术——PureVideo到底指的是什么?我们这里从视频与显卡两个方面来简单地分析一下。
帧与场
谈及数字视频,谈及显卡对数字视频的优化支持,就必须涉及到帧(Frame)与场(Field)这两个术语。解释这两个术语之前,我们先来了解一些基本制式。为了便于理解,本文采用了一些比较形象的方式介绍。
在现实生活中,我们看到的景物都是完全连续的,而用视频来记录和显示人眼可以看的景物,以现有的技术水平,是不可能采用这种完全连续方式的。专家发现人眼存在着一种叫“视觉惰性”的特性,视觉惰性也称视觉暂留,指的就是人眼亮度感觉并不会随着物体亮度的消失而立即消失。
利用这个特性,在一定时间内连续播放“足够多”的画面,人眼就会觉得图像是连续的,我们看到的电视、电影都是在这个基础上建立的。“足够多”到底是多少,这是一个因人而异的标准,通常认为每秒播放17幅画面是标准,而现在比较常见的两种电视制式PAL和NTSC,每秒播放的画面数目是25幅和30幅,这个已经超越了17幅这个标准,对大多数人来说,画面就已经是连续的。
在上面解释中,我们提到的“一幅画面”,就是视频中“帧”的概念。对于这个概念还有另一个理解,用户可以把视频播放的过程看做一张一张切换的幻灯片,每一张幻灯片就是“帧”,而幻灯片切换的速度我们称之为帧速率,英文全称为Frame Per Second(缩写为fps)。
利用视觉惰性,用短时间内连续播放的帧替代完全连续的画面,这已经在很大程度上降低了记录、保存和播放视频的难度。但这在具体实现上却又出现新的难题,那就是在CRT显示设备(主要指CRT电视,下同)上,是不可能一下子显示出一个完整的帧,只能把一帧拆成很多行,再一行一行地在屏幕上显示出来。先显示出来的行也就会先消除掉,那么也就是说如果时间流逝得足够慢,比如用户的眼睛可以分辨μs级的图像,那么用户在任何时刻都不会在CRT显示设备的屏幕上看到一个完整的帧。
前面介绍了,如果以24fps显示图像,人眼就会觉得这是连续的图像。但在CRT显示设备不能一下子显示一帧图像,其结果就是在CRT显示设备上播放24fps的图像,观看者会觉得图像有闪烁感和不连续感。解决办法有两种,第一个是不使用CRT显示设备,用LCD这一类不需要用扫描这种方式显示图像的设备,就可以轻松地实现24fps。第二个解决办法也很简单,在CRT显示设备上,24fps既然还有闪烁感和不连续感,那么我们就进一步增加fps就可以消除这种感觉了。
增加fps势必会对显示设备提出更高的要求,对显示设备更高的要求除了技术上的障碍以外,成本也是一个难以逾越的障碍,此时“场”就出来“救场”了。其实“场”非常简单,就是把一个帧拆成两半,拆法是按照扫描线来分的,所有编号为奇数扫描线组成的集合为奇数场,所有偶数扫描线组成的集合为偶数场。
每次只显示一个场,这样24fps的信号就变成48fps,不过前一个fps里面的f指的是帧(Frame),后一个f指的是场(Field)。有了场的概念,在CRT显示设备上的显示问题可以在一定程度上得到解决,但这将会带来新的问题——画面交错。
可以这样说,只有在有扫描线的CRT显示设备上才有“场”这个概念,在LCD显示设备上“场”的概念是不存在的,或者可以理解为场与帧概念等价。在MPEG-2标准中,帧图像和场图像这样的概念出现频率是相当高的,明白帧和场的概念对数字视频的理解有很大帮助,在后文还会进一步介绍这些概念。
fps的转换技巧
有了对数字视频比较基本的概念以后,我们不妨来看一些实例。NVIDIA公司在推出GeForce 6系列显卡的时候,就大肆鼓吹其名为PureVideo的视频全硬件加速和优化技术。在PureVideo的宣传中,NVIDIA公司提到了对3∶2 Pull down的优化和支持,我们来看看这到底是什么?
NVIDIA官方给出的3∶2 Pulldown说明见图1,我们先来解释一下这项技术是怎么进行操作的。如图1所示,A、B、C、D分别是四个帧,每个帧被拆分为奇数场和偶数场,于是四个帧就拆成了八个场。接下来就是对这八个场重新组合,还是参见图1,两两组合,A1和C2这两场都被重复使用了一次,这样子就组合出了五帧。

这五帧中,第一帧、第四帧和第五帧这三帧与未重新组合前的帧完全是一样的,如果信号源是非交错的,那么这三帧也就一定是非交错的。而组合出来的五帧中,第二帧和第三帧这两帧,肯定是交错的。如果把视频连起来看,就会发现有三帧非交错帧,然后是两帧交错帧,这样不断循环,“3∶2”这个名称的由来就是如此。
我们再回头来看看为什么要弄出个3∶2 Pulldown,这个原因要回溯到PAL和NTSC技术出现的时候。当时因为交流电对显示设备干扰的问题,就弄出了25fps的PAL制式和30fps的NTSC制式。但是片源是24fps的,那应该怎样进行fps转换呢?答案就是用3∶2 Pulldown这项技术(PAL制式的2∶2 Pulldown因为比较简单,所以省略不谈),利用它就可以把4帧变为5帧,也就是说24fps就直接变为30fps了,这个过程有时候也被称为Telecine。
从24fps到30fps,那么存储容量就增加了,这显然不合算。于是,RFF(Repeat First Field)和TFF(Top Field First)这一类标志就应运而生了。大家知道,视频即使只有24fps的内容,但利用RFF和TFF这些标志,让这些标志来控制场出现的顺序,在容量基本不变的前提下就可以实现从24fps到30fps的提升。
了解了基础知识,我们看看Pure Video技术中对3∶2 Pulldown支持的真实含义。图2就是NVIDIA官方对这项技术的对比展示,左边五帧是使用了3∶2 Pulldown将24fps信号源转为30fps后的连续五个帧,右边则是无交错的24fps的信号源。右面五帧画质没有任何问题,左边五帧中第一、四、五帧也和右侧一样没有问题,而第二、三两帧,在边沿出现了明显的重影。这种情况正好符合前面提到的,每五张中有两张的情形。
对于那些不存在扫描概念的显示设备而言,面对NTSC制式的30fps视频,还原出无交错的24fps画面,播放质量会更好,也不会出现每五张中有两张交错的情况。换句话说,这也就是3∶2 Pulldown或者说IVTC技术也能起到反交错作用的原因。
PureVideo技术对3∶2 Pulldown在播放上的支持,只是读取RFF和TFF控制信息,这一点大多播放软件都能做到,而且完成这个工作对现在的CPU来说毫不费力。PureVideo技术对3∶2 Pulldown在视频压缩上的支持比播放上更为复杂一些,但也只不过是写入RFF和TFF标志而已。
在不少介绍中,都浓墨重彩地介绍了对3∶2 Pulldown技术支持带来的画质提升,但从PureVideo对3∶2 Pulldown的支持来看,只是把对软件做的事情变成了“硬件”来实现而已。
对于HDTV甚至未来真正的高清数字视频而言,因为早就不需要顾虑交流电对显示设备的干扰,那么3∶2 Pulldown很可能就会被扔进废纸堆中。在硬件层面,支持一个兼顾老设备而开发的技术,在数字视频的浪潮中,并不值得大书特书。
交错的困惑
在图2中,我们已经看到了交错(Interlaced)现象对画质的损害,在这里我们可以进一步来看看显卡对视频播放的反交错(De-Interlacing),除了IVTC,还有别的手段可以实现。

大多数电影都是24fps非交错(Progressive)的,以下对这种信源简称24P,本文主要讨论这种信号源。对于这种24P的信号源,在帧图像出现交错的主要原因就是使用了3∶2 Pulldown技术来提高fps。
对于LCD这一类非CRT显示器而言,面对使用了3∶2 Pulldown技术来提高fps的视频,最佳的播放方式就是还原出24P信号源进行播放,但在CRT类显示设备上这种做法就不妥当。前文提到对于用扫描方式显示图像的CRT显示设备,将24P信源用24fps播放是会产生闪烁的,此时只能用48Field/s的方式来播放。
但对于可以逐行显示的CRT显示器而言,隔行显示的场图像显然对画质是有影响。此时两种最常见的De-Interlacing方式就出现了,那就是BOB和Weave。
BOB模式其实就是简单的复制,比如当前需要显示奇数场的信号,就把第一条扫描线上的信号复制到第二条上去,依此类推。比如NTSC制式每帧是525行,拆成场就是262/263行,但用BOB模式进行复制,每场也可以达到525行。而Weave模式更简单,将奇数场和偶数场在帧缓存中直接相加就可以了。
NVIDIA官方介绍某些图像使用的是“Spatial-Temporal”反交错算法。只看这个名字我们很难了解它的技术底细,但Pure Video在技术实现时,除了硬件支持、驱动支持还需要安装一个DVD解码器,从这个解码器设置界面中(图3),我们就可以看出一些端倪。

De-interlace Control部分其实主要的用途就是用来设置fps的,我们主要关注的应该是De-interlace Mode这部分。在下拉框中,我们可以选择Best available、Display fields separately 和Combine fields三种模式。Display fields separately模式就是强制使用BOB模式,而Combine fields模式就是强制使用Weave模式。而Best available就应该是名为“Spatial-Temporal”的反交错模式。
如果信号源本身就是有交错的,这种加权平均计算后输出的办法对画质会有所提升。对视频压缩经验和硬件架构有一定了解的用户都知道,要真正通过计算画面反交错达到较好的效果,简单缓冲几帧进行分析是远远不够的,但现在的显卡哪怕是最顶级的产品,也远远不具备在实时播放中全面计算反交错的能力。
当然,显卡对数字视频的优化也并不是一无是处,包含PureVideo技术的GeForce6系列显卡,在物理架构上大都有专门的硬件解码部分,这才是真正的亮点。而被本文用来做例子和没有被本文用来做例子的很多“优化画质”技术,其实多半都是“看上去很美”。这就像我拿着一块GeForce 6800Ultra显卡,告诉大家它有多么强大有多么好,但这并不意味着我对这块显卡的设计、制造有多大的贡献。真正能带来“质变”的才是好技术!