- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
利用软件开发出高弹性影像编解码系统
面对更精细显示的趋势需求,全球各业者积极的开发研究更高阶的影像编解码系统与电路。日本KDDI研究所在先前便开发了利用MPEG-2,将4K×2K的高精细影像进行即时编码的系统,这个即时编码系的特点是,透过集群连接9颗CPU来进行软件处理,乍看之下所耗费的运算资源相当的庞大,但是从另外一个角度来看,也可以认为4K×2K的高精细影像已经不再是梦想了,目前需要克服的只剩下如何降低运算成本,以及如何达到高资料量传输的技术了。
所以,不只系统开发者全力朝向4K×2K的高精细影像发展,甚至连面板业者也加入了这一波的趋势,积极开发符合4K×2K的高精细影像面板。例如像夏普就开始朝向这方面进行研发,希望让液晶面板走在1080p之前,以高解析的技术摆脱对手的竞争。期望在其他的平面显示还在设法达到1080p的时候,夏普的液晶面板已经在1080p之前又迈出了一步。夏普这次开发的64吋液晶面板的画素数与4K数字电影规格同为4096×2160,而且支援10 bit灰阶显示能力。此外,奇美电子也曾在2005年开发出了,在画素方面接近4K数位电影规格,解析度为3840×2160、为超高解析度液晶面板。4K×2K数字电影规格,是由好莱坞的主要电影公司组成的「数字电影协会(DCI;Digital Cinema Initiative)」所定义的高解析显示规格。
图说:不只系统开发者全力朝向4K×2K的高精细影像发展,甚至连面板业者也加入了这一波的趋势,积极开发符合4K×2K的高精细影像液晶电视。
就基础来看,日本KDDI研究所这次开发的系统,相当适用于利用数字元播放的动态影像内容,当然其他的编解码技术,包括H.264/MPEG-4、AVC MPEG-4等也可以达到这样的目标,但是,其最大的差异是,这项技术是利用软件来完成即时编码处理,这部分与硬件相比,可以将开发期限缩短大约1/2∼1/4,而其中的开发重点在于,进行即时编码而进行的CPU之间的连接。日本KDDI透过软件运算机制,实现了开发出将4096×2160、也就是4K×2K的高精细影像,以40MBit/秒的速度进行编码处理的系统。开发的系统采用了将9颗CPU逐点相连的集群结构,透过系统,将编码处理中的各节点相互结合,来降低演算量的系统架构。
利用软件开发高弹性编解码系统
日本KDDI会如此开发设计,是因为考量到完成软件运算即时的编码处理是为了降低成本。因为当进行高品质的影像放送系统时,如果没有进行即时编码处理时,就需要大容量存储设备来保存原来影像,但是如果采用了这项机制,进行即时编码,这样的存储设备所需要的成本就可以降低。除此之外,因为利用软件进行的编码处理,也可以实现开发成本的降低。这对于高品质影像的需求逐年递增来说,应该是一项好消息,因为就目前而言专用编解码晶片的开发成本问题还是无法的得到有效的解决。一直以来,数字电影之类的高精细影像编码,往往需要使用专用晶片,但是专用晶片的开发需要相当长的一段时间,而且期望支援更精细影像、提高编码效率、或者增加支援其他的编码方式时,就必须从头开始重新设计晶片。
例如,如果是使用专用晶片进行编码的系统的话,通常从MPEG-2过渡到H.264/MPEG-4AVC(H.264)需要近两年的时间,因为如果采用阿拉伯计数法的基本设计,和详细的内部设计各需要三个月,而在电路设计的部分则是需要六个月,再加上六个月的晶片硬件开发,以及晶片的测试及调整也需要六个月的时间,所以整体加起来就需要耗费将近两年的开发时间。另一方面,这还不包括成本因素的考量。
但是与此相对的,用软件进行编码处理时,最长用半年时间就可以实现系统的过渡。通常,在晶片开发中,也会在阿拉伯计数法的详细设计阶段,进行验证逻辑的类比软件的开发,但是在详细设计的完成阶段,是为了最终用晶片处理的内容透过软件可以进行搭配。所以系统除了编码处理部分需要进行软件变更,而对于4K×2K的影像的输入部分,和编码资料的输出部分原来也必须编入各种软件程式库,但是这项作业流程却是不满一个月。
图说:如果是使用专用晶片进行编码的系统的话,通常从MPEG-2过渡到H.264/MPEG-4AVC (H.264) 需要近两年的时间。
软件编解码三大特色
这一次日本KDDI开发的软件编解码系统有三个特色,分别是最佳化的节点间连结、运动补偿预测性能的提高、编码资料速度的最合适分配。就如前述,这个系统是由连接9片CPU板所构成的,每一片CPU板上都搭配了一颗运算时脉为2.5GHz的86系列架构微处理器「Opteron」,以及与之直接相连的2G的主记忆。
而在这些的系统基础上,日本KDDI所采用的作业系统是Linux。9CPU板分别使用Rapid Array来进行逐点相连的,使得每1频道的最大资料传输速率为4GBit/秒,当然日本KDDI也考虑过使用Ethernet、Myrinet、InfiniBand等等的架构,但是整体而言Latency都相当小,只能有1.7μs左右,因此最后,日本KDDI选择了采用Rapid Array作为连接的技术。在系统所有的九片CPU板中,日本KDDI使用了八片CPU板进行了运动补偿预测以及DCT的编码处理,这些叫做编码节点,而剩下来最后一片,则是作为进行整体控制的首尾节点。
在系统规划上,当进行4K×2K影像进行即时编码时,会将画面分割成八个领域,再将各个领域的编码处理,分别分配到各个编码节点上。日本KDDI之所以把4K×2K分割成八个领域是考虑到了,现在的电脑处理能力。以MPEG-2为例,使用运算频率为3GHz左右的「Pentium 4」,可以进行即时编码的动态影像画素只有HDTV的一半左右。而4K×2K的画素更是HDTV的4倍,所以这样的观念下,日本KDDI才会将画面分割成八个领域,再由八片CPU板进行了运动补偿预测以及DCT的编码处理。
图说:利用软件进行的编码处理,也可以实现开发成本的降低。这对于高品质影像的需求逐年递增来说,应该是一项好消息。
MPI与CPU板之间的结合
为了让九片CPU板得到完美的资料通信,在系统中日本KDDI则是利用了MPI(Message Passing Interface)介面。MPI是在并联电脑中,经常使用的代表性通信技术,这具备用于主机板间资讯交换的常用的API。所以日本KDDI使用MPI通信,作为对各编码主板发出影像资料的分配、处理开始的指示等。利用MPI在输入4K×2K影像的首尾CPU板中触发开始录影垂直同步信号。
就基本规格上,动态影像的画面比率为30画面/秒。所以每1画面所费的时间大约为30ms。也就是说,即时处理基本拥有的条件是,将一系列的画面处理需要在30ms以内完成。所谓的一系列处理是指,将4K×2K的影像输入到首尾节点上以后,还有画面的分割、往各编码节点上的分配、各编码节点的编码处理、从各编码节点向首尾节点的编码资料传送、首尾节点中的编码资料的再构成等等。所以就这个处理传节流程上,首尾节点中的整体控制变得很重要。
首尾节点相对于编码节点,在给予分割领域影像资料的同时,还指定了编码处理时间、编码量、量子化误差电力的目标值。这些目标值作为控制资讯,与影像资料一起向编码节点发送资讯。在日本KDDI开发的系统中,所分配的各编码节点的性能是一样,所以用首尾节点分割的领域,全部作为同一画素。然而在未来开发系统的设计,由于对不同运转频率的微处理器进行组合时,节点的性能会变得零散。这个原因是与编码节点的性能相对应,所以必须变更用首尾节点分割的领域的画素。具体来说,在系统启动时,对于首尾节点和各编码节点之间必须进行测试的动作,也就是把由于首尾节点而固定的画素的测试影像资讯,发送到编码节点上一直到得出结果。一般而言,编码处理所需要的时间与画素成比例,在测试中如果量测出相对于互换的固定画素影像的编码处理时间,就可以估计各编码节点的性能。
采用共有的主存储架构
虽然这样的系统架构,可以实现利用软件进行的即时编码。但是如果期望获得画质提高的目标,就必在分割成的八个领域中,利用互相共有主存储来分担相邻领域的编码节点之间负担,提高运动补偿预测的效率。这样设计的原因是,如果运动补偿预测的效率得到提升的话,就可以以更低的编码资料速度实现相同画质。换言之,如果是相同编码资料速度,那么运动补偿预测效率编码处理的画质就会得到提高。
虽然这样的系统架构可以获得相当不错的效率,但是开发这样分割画面进行处理时,必须对运动补偿预测做一番努力。因为,即将出现的画面中有的物件,在移动到在后面画面中,由其他编码节点担任的领域时,编码节点之间没有联接的话这样的处理结果传输就无法完成。因此必须再次重新对画面全体进行编码,这就成为编码资料量增大的原因。
如果编码节点之间如果存在共有主存储的话,那么必要的资料就可以从其他编码节点上读取出来。如此一来,在即将出现的画面中即使是其他编码节点中存在的物件物,运动补偿预测也可以发挥效果。在这个系统中,日本KDDI限制了横向领域是64×540画素,上下领域是2048×32画素,这个限制是尽量参考了担任相邻领域的节点的主记忆中的影像,一般而言因为动影像水平方向的运动比较多,所以相邻领域中大多参考了横向影像。
另外,也可以考虑按照分散共有存储方式,参考所有编码节点主存储的方法,但是这样一来就难以进行即时处理。所以分散共有存储中,MPI利用到了参考其他主存储的资料,因为如果参考所有的主存储,这样的话与MPI传输的频率就会增大,而导致Latency增长。
所以MPI的上面置了提供共有存储空间的软件程式库,利用这个程式库的API记述了程式。因此在进行运动补偿预测的基础上,影像在前面的画面中,只有在相邻领域中存在时,才向其他节点的主存储进行存取,因此就可能的降低了编码节点之间的通信。
图说:利用互相共有主存储来分担相邻领域的编码节点之间负担,提高运动补偿预测的效率。
调整编码资料速度完成最佳化
为了提高画面的画质,在这系统中,日本KDDI也加入了与画面相适应、且灵活变更各编码节点中的编码资料速度架构。例如假设各编码节点的编码资料速度完全相同,那么根据给予各编码节点的不同影像,使得满足一定画质必需的编码资料量也会不同,因此画质不可能在画面整体上都达到平均,这就是降低导致画面的画质的原因,也就是说,编码越难的话,画质的劣化就会越严重。
所以,首尾节点从各编码节点接收到编码资讯后,必须决定对于下一画面编码资料速度和量子化误差电力的目标值。具体而言,当各编码节点完成编码时,与编码资料一起,把在编码处理的过程中,提取的比率扭曲函数参数作为控制资讯,然后发送到首尾节点上。
因此,利用各编码节点接收到的比率扭曲函数的参数为基础,为使量子化误差电力相同,计算出各领域的编码资料速度。再进行下一画面编码时,将这里计算出的编码资料速度,和量子化误差电力发送到各编码节点上,就可以提高了画质的平均性。另外编码处理中,实际的编码资料速度,有时会比从首尾节点接收的目标编码资料速度大。这是在编码节点中,会慢慢地按大致方向调整量子化参数,增大作为目标值收到首尾节点指示的量子化误差电力。
就系统架构而言,这样的设计似乎是相当完善的,不过就实际上是否能如预期。日本KDDI就用真实的影像对系统进行了测试。
在样本影像中,日本KDDI所采用的输入影像,是以数位电影的内容为样本,将70mm胶片的影片内容,利用4K×2K的解像度品质进行扫描,所得到的样本品质就可以达到4096×2160画素。而编码的部分,则是使用了MPEG-2的Main Profile中High Level,设定在High Level,是因为在MPEG-2的编码规则中不能处理4K×2K的画素。而这个实际测试所得到的结果是,在新设计的系统中,可以实现以40MBit/秒的速度进行即时编码。顺带一提的是,到目前为止,市场上还没有仅仅用软件,就可以对4K×2K的高精细影像进行即时编码的系统。
利用软件编解码 需考虑稳定性课题
当这个系统要达到实用化或商品化时,有一点不得不考量的是,系统的高持久性,以及耐用度。所以为了达到长时间的稳定运转,就必须让作业系统、电路元件等,与软件系统达到更高层次的合适化。另外,硬件基板的生产中特有的问题,存在着包括Over Flow变数的过大、存储洩漏等,这些也会给长时间运转带来问题,因此,在产品完成时必须进行仔细的测试和调整。与专用晶片构成的系统相比,利用软件完成的编解码系统还是有性能方面的问题,例如需要配合网路区域,来保持IP包发送间隔的平均,这个要求对于时间的控制要相当的精确,其对这样的处理有些不适合,这点必须加以解决。这样的问题是基于作业系统提供的Task Switching精度,在Windows、Linux等通用的作业系统中是ms的等级。活动影像的画面週期为大约30画面/秒,从这点而言,可以说ms等级的时间控制方面是不足的。
一方面现在根据用途各种各样的编码方式相当多,因此软件编码的开发是有其存在的意义性。例如,从H.261到H.264的一系列编码方式的发展中,编码的记述规则本身发生了变化,但是所谓的「运动补偿预测与DCT的并用」的基本框架却继承下来了。只要不超出这个框架,就像前面所叙述的,利用资料并列与硬体的结合就能够比较简单实现。以H.264为例,虽然面板尺寸的规格,比原来的增大,导致各个演算更为复杂了,但是如果能够妥善处理资料并列,就不成太难的问题了。