Xscale平台的MPEG视频输出加速方法

文档序号:7913718阅读:256来源:国知局
专利名称:Xscale平台的MPEG视频输出加速方法
技术领域
本发明涉及视频数据传输中,数据压缩和解压缩,加速数据传输的技术。
然而,由于音/视频的数据量比一般的数据流量要大得多(特别是视频数据),其传输和存储都需要花费很多的资源。同时在处理这些数据时也需要强大的性能。这就要求这些产品有强大的处理数据的能力和海量的存储空间。从而使产品的成本非常高,以至于失去了市场竞争的能力。并且,在很多产品中(特别是移动消费类电子产品如手机),高性能和大存储意味着高功耗和高成本。
由于大数据量的传输和存储给产品带来的成本提升几乎是以几何倍数增长,所以解决数据量的压缩便成了首要问题。由MPEG(运动图象专家组)提出的MPEG音/视频压缩标准就是一种压缩效率极高的音/视频流数据压缩方法。其压缩视频数据的比率可达10~50∶1,MPEG4标准甚至可达到100∶1。采用该标准将会节省大量的数据信道资源和存储资源。事实上,在数字音/视频广播领域,MPEG标准已经广泛使用并已成为行业标准。但是,压缩后的音/视频流在处理和还原时将耗费更多的处理时间。这是多媒体产品存在的主要问题。
Intel公司在2002年推出的Xscale芯片其运行主频可达400Mhz~1GHz。而其功耗仅有500mw。加上该芯片带有丰富的外围接口,使其成为移动多媒体处理器的首选。
Xscale处理器具有内嵌的LCD显示接口,可方便的连接各种标准LCD接口的LCD显示器件,让多媒体产品具有更好的图形显示效果。然而,在MPEG的各个标准中视频的输出数据格式都为YCbCr格式(亮/色度分量格式,主要是为了兼容模拟视频输出),而LCD显示接口标准为RGB(三基色格式)。为使MPEG视频数据在解码后能正确输出,必须做YCbCr到RGB的数据转换。其运算量非常巨大,并且有大量的浮点运算。在通用的高性能处理器中(如PentiumIII或PowerPC)浮点运算已经很慢,更何况Xscale(或其他低功耗的芯片)并不带有浮点运算的协处理器。这将造成花费大量的处理时间在格式的转换上。显示在MPEG解码回放过程中,耗费在格式转换上的处理时间约占总处理时间的75%以上,这是极大的资源浪费,传统的MPEG视频输出设计方法是由CPU完成全部的MPGE视频解码过程,最终将符合显示标准的RGB格式的视频数据从标准LCD接口输出,送至LCD显示。而在需要支持模拟视频显示时,还需要完成RGB格式的数模转换。如此,CPU将花费大量时间和资源在MPEG解码回放过程中。这对视频输出系统尤其是嵌入式视频输出系统而言是个非常严重的问题。
为此,提供一种用Xscale芯片为平台,将MPEG视频解码数据直接通过标准LCD接口,用简单的硬件实现YcbCr数据格式到复合视频输出的方法。
可编程芯片根据LCD显示端口送出的视频分量信号和时序控制信号进行采样,并存入寄存器中,同时根据数/模转换芯片产生的时序信号,产生写入和读取帧存储芯片的读/写控制信号和读/写地址,可编程芯片还设置有读/写判决和帧存储读/写取舍的控制区。
LCD显示端口送出的时序信号包括行、场同步信号和象素时钟信号,数/模转换芯片产生的时序控制信号包括行、场同步信号和时钟信号。
整个硬件工作流程,包括数据采样、存储流程,数汲取、模数转换流程,其中数据采样、存储的工作步骤是a,对LCD端口的控制信号行采样。
b,对采集到的行、场同步信号和像素时钟信号样本分别进行视频分量计数、行计数和分量区域计数。
c,根据LCD端口以及数/模转换器端口的控制信号,进行帧存读/写的取舍。
d,根据采样到的LCD端口的控制信号和各个计数器的计数值,生成写入帧存所需要的写入地址和写入控制信号。
e,通过帧存读写判决,调整写入控制信号,即当读/写同时发生时,优先读操作,将写控制信号延迟。
f,根据生成的控制信号,将LCD端口的数据写入帧存储芯片。数汲取、模数转换流程是a,对数/模转换器通过I2C端口进行初始化。
b,对数/模转换器端口的控制信号进行采样。
c,对采集到的行、场同步信号样本和时钟信号进视频分量计数和行计数。
d,根据数/模转换器端口以及LCD端口的控制信号,进行帧存读写的取舍。
e,根据采样到的数/模转换器端口的控制信号和各个计数器的计数值,生成读取帧存所需要的读取地址和读控制信号。根据行场同步信号,为每一场的有效行有效像素开始依次顺序生成读取地址。
f,根据采样到的数/模转换器端口的控制信号以及生成的读取地址,从帧存内将数据读出。
g,进行像素扩展,将从帧存内读取的一组四个分量数据CbY(a)CrY(a+1),转换成CbY(a)CrY(a)Cb、Y(a+1)CrY(a+1),并在每行的首尾各添加8pixels黑色。
h,数/模转换器在数据端口上得到数据后,根据初始化时设置的参数要求进行视频数据的数模转换。
i,由数/模转换器生成复合视频信号。
J,将复合视频信号送入显示器显示。
为使硬件设计更为灵活,电路更为简单,减小电路规模,视频转换模块中采用了FPGA(现场可编程门阵列器件)实现模块中的全部逻辑控制。设计时采用了一种简单、可行的可编程电路设计方法,借以FPGA的逻辑控制来完成4:2:0YUV格式到4:2:2YUV格式的转换工作,由硬件来取代原本要由软件完成的工作,从而大大加快了视频数据的处理速度。此外为了提高设计输出的通用性,模块中采用了一款低功耗数字视频译码专用芯片,用于将数字信号转换为复合模拟视频信号。使输出信号可直接用于普通的模拟监视器或电视机上。由FPGA结合一块用作帧存的SRAM为数字视频译码芯片提供接口。这样又简化了复杂的数字视频信号与模拟视频信号转换接口电路。由于以上的实现,在前端平台上的MPEG解码软件就可将处理显示输出的工作大大节省了,只需要将解码完的数据直接送到LCD接口上即可。
附图2是视频转换模块方框图。
附图3是现场可编程门阵列器件(FPGA)原理图。
附图4是数据采样和存储流程图。
附图5是数据汲取和数/模转换流程图。
附图6是帧存地址分配示意图。
具体实施例方式
请参阅附

图1、2所示,左边为Xscale硬件平台,通过LCD接口将视频数据(YCbCr分量数据)和时序信号传输到视频转换模块中,视频转换模块的最终输出为复合模拟视频信号,可直接连接到显示器或电视机上。
系统中选用了一款数字视频译码专用芯片SAA7121,用于完成数模转换功能。由于LCD端口所提供的是格式为4:2:0 YUV的16位分量信号,且图像分辨率为352*288。而D/A转换芯片所支持的视频输入格式为8位4:2:2 YUV视频分量信号,且图像分辨率为720*576。因此在硬件部分要完成一定的格式转换工作。此外LCD端口所提供的数据的速率也与D/A转换器的输入数据速率不同,所以设计时采用了一片SRAM作为帧存储器,用于数据缓存。而所有的包括视频数据的采集、寄存、格式转换、帧存储器的存取控制以及D/A转换器的输入控制都由一块FPGA完成。FPGA的内部结构框图如图3所示,从硬件结构框图以及FPGA设计框图可以看出,控制器会根据LCD端口所送出的时序控制信号(包括行、场同步信号和像素时钟信号)对分量信号进行采样,并放入寄存器中。同时控制器会根据LCD端口所送出的时序控制信号以及工作在主模式下的D/A转换器产生的时序控制信号(包括行、场同步信号和27MHz时钟信号)分别产生写入和读取帧存的读写控制信号和读写地址。根据发生器产生的帧存读写控制信号,经由读写判决,分别将寄存器中的数据写入帧存内相应的地址单元,或是从相应的地址单元将数据读出。其中写入地址的生成并非一般的顺序发生,而是要实现16位4:2:0 YUV视频分量信号到8位4:2:2YUV视频分量信号转换功能。与此同时,控制器会根据D/A转换器的时序控制信号将读取到的数据进行像素扩展后,送入D/A转换器,经过D/A转换后,形成模拟复合视频信号输出并显示。
整个硬件工作流程包括数采样和存储流程以及数汲取、模数转换流程,其中数据采样和存储流程是1.对CPU的LCD端口的控制信号(包括行、场同步信号和像素时钟信号)进行采样。
2.对采集到的行、场同步信号和像素时钟信号样本进行计数。本流程中共包括有三个计数器视频分量计数器、行计数器、分量区域计数器。视频分量计数器对每一个行同步信号开始后采样到的每一个分量信号进行计数。行计数器对每一个场同步信号开始后采样到的每一个行同步信号进行计数。分量区域计数器的作用是根据行计数器将一帧数据分为四个块区Y分量区、U分量区、V分量区、无效数据分量区。
3.根据LCD端口以及D/A转换器SAA7121端口的控制信号,进行帧存读写的取舍。由于帧存只能存放两帧图像,而且输入视频速率与输出视频速率是不同步的,因此会出现写完一帧数据时还没读完一帧数据,或是读完一帧数据时还没写完一帧数据的情况,这样一来会造成帧存的帧地址无法正常切换。为此在设计时考虑在发生上述情况的时候适当地重复或丢弃一些帧。也就是说,当写完一帧数据但另一区域中的一帧数据未被读完,则丢弃接下来将要写的一帧数据,等到另一区域的一帧数据读完,进行帧地址切换。当读完一帧数据但另一区域中的一帧数据未写完,则重复读取当前一帧数据,等到另一区域的一帧数据写完后,进行帧地址切换。如此可以避免在同一区域内同时进行读写操作。
4.根据采样到的LCD端口的控制信号和各个计数器的计数值生成写入帧存所需要的写入地址和写入控制信号。
帧存地址分配情况由于输入视频信号与输出视频信号是异步的,视频数据写入帧存操作与视频数据从帧存读出操作之间会发生地址冲突,设计时选用可存储2帧视频数据的帧存储器(存储深度达219=512K)进行视频数据的缓存。为了使读写指针不发生冲突,将整个存储空间按地址高低排列分为上下空间相等的两块区域,前后两帧数据在这两块区域交替存储。将地址位的最高位作为帧地址。前一帧位于上半区域,帧地址值为0,后一帧位于下半区域,帧地址值为1。输入视频每行有352个象素,即352*2=704个字节,按照8位字长计,总共需要704个存储单元。704的二进制码为1011000000,为了简便电路设计,取二进制数1100000000即十进制数为768作为换行的基准,使每行起始处开始于768的整数倍处,这样换行时地址变换的电路设计将更为简单。由此将帧存地址的低8位作为像素地址,剩下的位8至位17作为行地址,参看附图6。
在生成写入地址时,还要完成视频数据的格式转换。要使LCD端口数据能送到D/A转换器的输入端口,必须将4:2:0YUV的分量数据转换为4:2:2YUV的分量数据。考虑到要保证显示的实时性和连续性,设计时简化读取帧存的电路,将繁琐的格式转换电路安排在写入帧存电路部分,这样设计避免了由于格式转换电路的复杂而导致无法连续播出图像和丢失数据。根据4:2:0YUV的分量数据与4:2:2YUV的分量数据特点,设计时采用了一个尽量节省资源的简单方法。使图像相邻两行的上下两个色度分量共用同一个Cb、Cr信号。写入帧存时,根据分量区域计数器的计数值,可以判定,当前采样得到的信号是亮度分量、色度分量或是无效数据。如为亮度分量,则根据视频分量计数值和行计数值以每行的首地址偏移量为1,像素地址增量为2,行地址增量为1进行地址分配。同样如果是色度分量,则以每行的首地址偏移量Cb为0、Cr为2,像素地址增量为4,行地址增量为2地址分配,且同一个色度分量将先后两次写入相邻两行的同一像素地址进行。根据27MHz时钟及LCD端口的行场同步信号产生SRAM的写有效信号。
5.通过帧存读写判决调整写控制信号。由于输入视频与输出视频是不同步的,读写帧存的操作将可能同时发生,而读写操作又共用存储器的地址总线和数据总线,因此很容易产生总线冲突。考虑到D/A转换器工作在主方式,它对数据的要求是连续的,所以当读写操作同时发生时将优先考虑从帧存中读取数据的操作,而将要写入帧存的数据放入寄存器,等读操作完成后再完成写操作,即将写有效控制信号延后。这样就能有效地解决总线冲突。设计时D/A转换器输出的行同步信号作为基准,每8个27MHz时钟为一组,前4个时钟从帧存内读取一组分量数据CbY(a)CrY(a+1),并将CbY(a)CrY(a)送入D/A转换器,后4个时钟用于分量数据写入帧存,并将CbY(a+1)CrY(a+1)送入D/A转换器。当写操作要求在前4个时钟发生时,先将所需写入的16bits数据存放到寄存器中,待读操作完成后,再分两次写入被寄存的16bits数据。为满足D/A转换器显示需要,FPGA必须连续读取一组(四个)分量数据CbYCrY,才能满足四个像素的显示需要,即一次连续读操作完成,所需的周期为4个D/A时钟,T=4*37ns=148ns,又因为一次写入为8bits数据,所以,16bits数据中后写入的8bits数据将被延迟T=148ns+37ns=184ns。在184ns的时间里,可以保证被寄存的写入数据不会被新的数据所覆盖。这是因为寄存器被更新的最短时间为1个数据输入时钟(以3MHz为例,实际速率约为2MHz),T=333ns,333ns>184ns,因此,新到的16bits数据不会覆盖掉前面的16bits数据。
6.根据产生的写控制信号,将LCD端口上的数据写入帧存内存储。数据提取、数模转换流程是1.由CPU对D/A转换器SAA7121通过I2C端口进行初始化。
2.对D/A转换器SAA7121端口的控制信号(包括行、场同步信号)进行采样。
3.对采集到的行、场同步信号样本和27MHz时钟信号进行计数。本流成中共包括有两个计数器视频分量计数器、行计数器。视频分量计数器对每一个行同步信号开始后采样到的每一个27MHz时钟进行计数。行计数器对每一个场同步信号开始后采样到的每一个行同步信号进行计数。
4.根据D/A转换器SAA7121端口以及LCD端口的控制信号,进行帧存读写的取舍(这部分与数据采样和存储流程的步骤3雷同)。
5.根据采样到的D/A转换器SAA7121端口的控制信号和各个计数器的计数值生成读取帧存所需要的读取地址和读控制信号。根据行场同步信号,为每一场的有效行有效像素开始依次顺序生成读取地址。且行地址行起始处开始于768的整数倍地址处,像素地址连续累加。根据27MHz时钟及D/A转换器SAA7121端口行场同步信号产生SRAM的读有效信号。
6.根据采样到的D/A转换器SAA7121端口的控制信号以及生成的读取地址从帧存内将数据读出。
7.像素扩展。由于输入数据所包含的图像每行只有352pixels。因此在读取帧存数据之后,要将每次取出的一组分量信号再进行转换变为两组分量信号先后送入D/A转换器进行显示。扩展方法将从帧存内读取的一组(四个)分量数据CbY(a)CrY(a+1),转换成CbY(a)CrY(a)Cb、Y(a+1)CrY(a+1)。此外,还要在每行的首尾各添加8pixels黑色,这样可将每行像素从352pixels扩展为352*2+8*2=720pixels。由于输入数据图像原本用于逐行扫描显示,不存在奇偶场,且一帧数据为288行,因此在读取时将输入的一帧数据作为输出视频的一场,以重复读取一遍的方式将一场数据增加为两场,从而适用于隔行扫描显示。
8,D/A转换器SAA7121在数据端口上得到数据后,根据初始化时所的设置的参数要求进行视频数据的数模转换。
9,由D/A转换器SAA7121生成复合视频信号。
10,将复合视频信号送入显示器显示。
权利要求
1,一种XSCALE平台的HPEG视频输出加速方法,包括硬件和软件,其特征在于XSCALE芯片内嵌的LCD显示接口输出视频YCbCr分量数据信号和时序控制信号给视频转换模块,视频转换模块由可编程逻辑器件、帧存储芯片以及数/模转换芯片组成,可编程逻辑器件产生帧读/写地址信号和读/写控制信号给帧存储芯片,并输出视频信号给帧存储芯片和数/模转换芯片,数/模转换芯片受XSCALE芯片I2C控制信号控制,并产生时序信号给可编程芯片,视频转换模块通过数据采样和存储软件及数据汲取输出软件,输出复合视频信号。
2,按权利要求1所述的XSCALE平台的HPEG视频输出加速方法,其特征在于可编程芯片根据LCD显示端口送出的视频分量信号和时序控制信号进行采样,并存入寄存器中,同时根据数/模转换芯片产生的时序信号,产生写入和读取帧存储芯片的读/写控制信号和读/写地址,可编程芯片还设置有读/写判决和帧存储读/写取舍的控制区。
3,按权利要求1、2所述的XSCALE平台的HPEG视频输出加速方法,其特征在于LCD显示端口送出的时序信号包括行、场同步信号和象素时钟信号,数/模转换芯片产生的时序控制信号包括行、场同步信号和时钟信号。
4,按权利要求1所述的XSCALE平台的HPEG视频输出加速方法,其特征在于数据采样、存储的工作步骤是a,对LCD端口的控制信号行采样。b,对采集到的行、场同步信号和像素时钟信号样本分别进行视频分量计数、行计数和分量区域计数。c,根据LCD端口以及数/模转换器端口的控制信号,进行帧存读/写的取舍。d,根据采样到的LCD端口的控制信号和各个计数器的计数值,生成写入帧存所需要的写入地址和写入控制信号。e,通过帧存读写判决,调整写入控制信号,即当读/写同时发生时,优先读操作,将写控制信号延迟。f,根据生成的控制信号,将LCD端口的数据写入帧存储芯片。
5,按权利要求4所述的XSCALE平台的HPEG视频输出加速方法,其特征在于生成写入地址时,完成视频数格式转换,根据分量区域的计数值,判定当前采样是亮度分量、色度分量或无效数据,如为亮度分量,则根据视频分量计数值和行计数值,以每行首地址偏移量为1,象素地址增量为2,行地址增量为1进行地址分配,如果是色度分量,则以每行的首地址偏移量cb为0、cr为2,象素地址增量为4,行地址增量为2进行地址分配。
6,按权利要求5所述的XSCALE平台的HPEG视频输出加速方法,其特征在于帧存储芯片的存储空间按地址高低排列分为上、下空间相等的二块区域,前后二帧数据在二块区域交替存储,将地址的最高位作为帧地址,前一帧位于上半区,帧地址为0,后一帧位于下半区,帧地址为1。
7,按权利要求1所述的XSCALE平台的HPEG视频输出加速方法,其特征在于数据汲取输出的工作步骤是a,对数/模转换器通过I2C端口进行初始化。b,对数/模转换器端口的控制信号进行采样。c,对采集到的行、场同步信号样本和时钟信号进行视频分量计数和行计数。d,根据数/模转换器端口以及LCD端口的控制信号,进行帧存读写的取舍。e,根据采样到的数/模转换器端口的控制信号和各个计数器的计数值,生成读取帧存所需要的读取地址和读控制信号。根据行场同步信号,为每一场的有效行有效像素开始依次顺序生成读取地址。f,根据采样到的数/模转换器端口的控制信号以及生成的读取地址,从帧存内将数据读出。g,进行像素扩展,将从帧存内读取的一组四个分量数据CbY(a)CrY(a+1),转换成CbY(a)CrY(a)Cb、Y(a+1)CrY(a+1),并在每行的首尾各添加8pixels黑色。h,数/模转换器在数据端口上得到数据后,根据初始化时设置的参数要求进行视频数据的数模转换。i,由数/模转换器生成复合视频信号。J,将复合视频信号送入显示器显示。
全文摘要
为了解决MPEG解码回放过程中,耗费在格式转换上的大量处理时间,本发明将CPU所要完成的MPGE解码过程中的YCbCr到RGB的数据转换过程分离出来,直接将MPGE解码后的YCbCr格式的视频信号从CPU的标准LCD端口上输出,将费时的YCbCr到RGB的数据转换过程交由硬件部份来完成,硬件由可编程芯片、帧存储芯片以及数/模转换芯片组成,XSCALE芯片内嵌的LCD显示接口输出视频YCbCr分量数据信号和时序控制信号给可编程芯片,可编程芯片通过数据采用存储软件及数据汲取输出软件,输出复合视频信号,大大提高了工作效率。
文档编号H04N5/14GK1479527SQ03129638
公开日2004年3月3日 申请日期2003年7月3日 优先权日2003年7月3日
发明者吕家瑜, 戚丹青, 陈骏逸, 谷屹, 惠新标, 吴跃军, 顾樑, 汤毅 申请人:上海市广播科学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1