用于视频解码的方法和设备的制作方法

文档序号:7599628阅读:159来源:国知局
专利名称:用于视频解码的方法和设备的制作方法
背景技术
1.发明领域本发明涉及视频解码领域,更具体地,本发明涉及用于解码压缩视频的方法和设备。
2.相关技术描述视频数据经常被压缩以便减少所消耗的存储空间量。一种用于视频压缩的标准是运动图像专家组2(MPEG2)。压缩标准通常采用公知的技术,例如基于空间变换的压缩和基于时间运动估计的压缩。因此,将压缩数据转换成未压缩(解码)数据的解码过程包括变换解码和运动补偿重构。变换解码包括可变长解码、逆量化和反离散余弦变换(IDCT)。变换解码过程通常产生命令、运动矢量数据和校正数据。此后,运动补偿是通过对运动矢量数据和校正数据执行这些命令而被实施的,从而产生一个用于显示的帧。
在一种解码压缩视频的方法中,一个通用中央处理单元(CPU)执行变换解码和运动补偿。但是,CPU的性能可能不足以执行变换解码和运动补偿而在没有停顿的情况下重放该视频。特别地,一个通用CPU上运动补偿的性能受到存储器子系统的限制,并且不会随该通用CPU的性能提高而升高。
当执行一个MPEG2数据帧的解码时,从一个存储介质(例如一个数字视频磁盘DVD)复制该压缩视频的帧到系统存储器以便由该CPU处理。带有720个图像单元(像素)×480像素分辨率和16比特精度的一帧校正数据包含大约15兆字节(MB)的数据。由于典型的等级1(L1)高速缓冲存储器的大小是大约16千字节(K)且典型的等级2(L2)高速缓冲存储器的大小是大约512K,所以既不能在L1也不能在L2高速缓冲存储器中存储校正数据的整个帧。用于变换解码的高速缓存命中率可以低至20%。这样,在变换解码过程访问的很多数据是从较慢的系统存储器去取回而不是到较快的高速缓冲存储器。低的高速缓存命中率降低了重放性能。
通常,在一帧校正数据的变换解码后,图形软件在发出给图形控制器的命令以实施运动补偿之前会将该校正数据复制到本地的图形存储器中。这个将校正数据复制到本地图形存储器的过程导致会降低重放性能的总线周期。
所需要的是一种方法和设备,它可以更高效地使用系统资源去提供更好的压缩视频的重放性能。
发明概要一种用于解码压缩视频的方法和设备,该压缩视频的解码包括以下步骤解码第一帧的第一部分以产生一个第一数据;生成一个第一信号;响应第一信号而使用第一数据实施运动补偿;生成一个第二信号;响应第二信号而解码第一帧的第二部分以产生一个第二数据;生成一个第三信号;以及响应该第三信号而使用第二数据实施运动补偿。
附图简述

图1说明一个用于完成该压缩视频解码的计算机系统的实施例。
图2说明一个用于完成一种压缩视频解码的方法的实施例。
详述一种更有效地实施视频解码和运动补偿以重放例如压缩视频的方法和设备。在一个实施例中,本发明用于分别地解码帧发明的各部分。
一个计算机系统100包括一个具有级别1(Ll)的高速缓冲存储器160的中央处理器(CPU)115。级别2(L2)高速缓冲存储器168被耦合到该CPU115。该CPU115通过一个桥120被耦合到一个本地总线171,一个先进的图形端口(AGP)视频总线172,和一个外围部件接口(PCI)总线173。一个系统存储器105被耦合到该本地总线171。一个显示设备130和一个本地图形存储器通过一个图形控制器125被耦合到该AGP视频总线172。一个数字视频盘(DVD)驱动器140被耦合以接收存储在一个数字视频盘(DVD)156上的压缩视频数据。一个输入/输出(I/O)设备150被耦合到该PCI总线173以接收来自机器可读媒体155的程序和信息。在一个可选实施例中,压缩视频可以是从耦合到该I/O设备150的机器可读媒体155取回的。
在一个实施例中该机器可读媒体155是一个诸如软盘,硬盘,或者盒式磁带的磁媒体。在另一个实施例中,该I/O设备150以及该机器可读媒体155是一个网络,例如一个局域网(LAN)。在又一个实施例中,该机器可读媒体155是一个其中嵌入信号的电磁载波,而该I/O设备155是一个能够从该电磁载波中提取信号的设备。对本领域的技术人员而言将显而易见,该机器可读媒体155可以是能够携带可由该I/O设备150读取的信息的任何媒体。在一个实施例中,该机器可读媒体155存储用于执行本发明方法的软件。做为替换,该机器可读媒体155存储该压缩视频145。
在一个实施例中,一个临时缓冲器161包含一个相对少量的数据,在对一个相对大的压缩视频块进行解压缩时该数据会被经常地访问。例如,该临时缓冲器可以包含一个用于变换该压缩视频块的变换系数表。
该L1高速缓冲存储器160存放该临时缓冲器161,它包括校正数据162、一个IDCT系数表163、一个霍夫曼码本164、以及一个逆量化表165。在一个实施例中,该校正数据162包括仅一个宏块。在另一个实施例中,该校正数据162包括几个宏块。
在一个实施例中,为各个解码步骤选择的宏块数目被这样选择,使该临时缓冲器161可以将其整体存储到该Ll高速缓冲存储器160中。通过使用一个将其整体填入该L1高速缓冲存储器160中的临时缓冲器161,该解码软件可以用一个较好的高速缓存命中率来解码该选择的宏块。当达到一个较好的高速缓存命中率时解码性能通常会得到改善。
在一个实施例中,不将该全部的临时缓冲器161贮存到该L1高速缓冲存储器160中。例如,可以将该临时缓冲器161的一部分贮存到该L1高速缓冲存储器160中,而将该临时缓冲器161的另一部分贮存到该L2高速缓冲存储器168中。在又一个实施例中,可以将该临时缓冲器161的一部分贮存到该系统存储器105中。该解码操作的性能通常是下列两者的函数该临时缓冲器161中有多少是装在该L1高速缓冲存储器中的以及是否曾有任何其他总线周期将该临时缓冲器161的多个部分从该L1高速缓冲存储器160中排挤出。
包括在该临时缓冲器161内的数据不局限于用于一特定压缩/解压缩技术的数据。而且,这些压缩/解压缩标准可以使用不同的数值方法,比如小波变换。在一个实施例中,该临时缓冲器161包括一个小波变换系数表用于小波变换。可以使用其他的变换技术与数据。在一个实施例中,该系统存储器105包括一AGP孔径110。桥120包括一个图形地址重映射表(GART)175,专门为该图形控制器125与该中央处理机115用来接入该AGP孔径110。该CPU115使用该写组合(WC)缓冲器170在AGP孔径110中将该变换解码操作的输出存入一个命令缓冲器111中,该输出包括运动矢量112、校正数据113、以及宏块信息114。在一个实施例中,该宏块信息114包括离散余弦变换(DCT)类型、宏块类型、运动预测类型、以及编码块图案。其他的信息可以被包括在该宏块信息内。由于该CPU115发出的输出操作是不经高速缓存而是利用该WC缓冲器170的,所以该L2高速缓冲存储器168的内容不被这些输出操作干扰。该AGP孔径可以包括其他的命令缓冲器,例如命令缓冲器116。
该解码器软件或者该图形软件将Ll高速缓冲存储器161中的校正数据162的一部分复制给命令缓冲器111中的校正数据113。该校正数据162相应于压缩视频数据的宏块。在一个实施例中,该校正数据162整体地贮存到该Ll高速缓冲存储器160中。因而,当软件执行该校正数据113的数据复制时,对校正数据162的访问会导致高速缓存命中。这样,本发明避免了从L2高速缓冲存储器168或者系统存储器105中校正数据162的冗余检索。做为替换,因为该校正数据162的一部分不在该L1高速缓冲存储器160中,对一些校正数据162的访问可能导致高速缓存未中。
图2说明一个本发明方法的实施例。该方法参考图1的计算机系统100来描述。CPU115执行该解码器软件和该图形软件而该图形控制器130通过直接存储器存取(DMA)执行该命令缓冲器111中的命令。可以使用其他的设备来执行本发明的方法。
在步骤200中,该解码器软件检索该压缩视频数据145。在一个实施例中,该解码器软件通过DVD驱动器140从DVD156中检索该压缩视频数据145,并且将该压缩视频145存储在系统存储器105中。
在步骤205中,该解码器软件选择该压缩视频145的一个帧。通常,如同按照在该压缩视频数据中指定的帧次序对该压缩视频145解码一样,每个帧被顺序地选择。可以使用其他的方法选择一个帧。
在步骤207中,该图形软件从该AGP孔径110的多个命令缓冲器中选择其中一个命令缓冲器。在一个实施例中,该图形控制器125执行来自一个缓冲器的指令而该解码器软件装满另一个命令缓冲器。在一个实施例中该图形软件在决定选择哪个缓冲器时考虑各个缓冲器的不同特征,例如缓冲区大小,对本领域的技术人员而言将显而易见的是,可以使用各种缓冲器配置,而且可以使用各种选择准则来选择该命令缓冲器。
在步骤210中,解码器软件选择该压缩视频145的一帧的一个宏块。每个宏块包括该帧中8个图像元素(像素)乘8个像素区域的6个块。6个块中4个是亮度(Y)块,6个块中2个是色度(U和V)块。每一个像素的显示特征用8位精度定义。在一个实施例中,该宏块通过对该压缩视频数据145使用保存在该临时缓冲器161中的霍夫曼码本进行可变长度解码而被识别。
在一个实施例中,如同宏块从该压缩视频数据145解码一样,该宏块被顺序地选择。做为替换,可以按照MPEG2标准跳过一些宏块,使得后来的宏块被选取。对应于被跳过宏块的校正数据不从该临时缓冲器161复制到该命令缓冲器111中。对被跳过宏块的补偿可以用具有可变宏块像素宽度的单一命令来执行。可以使用其他的方法来选择供处理的特定宏块。
在一个实施例中,可以跳过任何有零值的块。与那些宏块有联系的命令包括标识6个块中哪个块被跳过的编码块图案信息。这样,有零值的块不从该临时缓冲器161复制到该命令缓冲器111。处理跳过块和跳过宏块的能力使得该命令缓冲器中的大部分都可用并且避免与从该临时缓冲器161将该跳过的数据复制到该命令缓冲器111相关联的总线周期。
做为替换,一个帧内宏块的特征可以按照不同的标准选取。例如,块数目,每个块的像素宽度和高度,以及像素元素的尺寸可以不同于在这里描述的。
在步骤215中,该解码器软件使用该逆量化表165以及该可变长度解码的输出来执行逆量化。在步骤220中,该解码器软件使用该IDCT系数表163和该逆量化的输出来执行一个IDCT以产生该校正数据162。在一个实施例中,该校正数据162,该IDCT系数表163,该霍夫曼码本164,和该逆量化表165包含于一个临时缓冲器161中。在步骤210,215和220中要被解码的宏块数目要这样选取,以使该临时缓冲器161能被装入该Ll高速缓冲存储器160中。
在其他实施例中可以使用其他的解码方法来解码该帧的宏块。例如,可以在该解码处理期间执行小波变换。另外,可以使用像素的其他的安排来定义每个宏块。可以使用其他尺寸的数据单元来定义每一个像素。而且,可以在步骤210,215和220中解码该帧的两个或更多宏块。
在步骤225中,该图形软件通过经该WC缓冲器170向该AGP孔径110发出写组合、非可高速缓存的总线周期来生成包括宏块信息,运动矢量和相应于该解码过程输出的校正数据的命令。因为该图形软件发出非可高速缓存的总线周期,所以该Ll高速缓冲存储器160和该L2高速缓冲存储器168的内容不受干扰。因为该图形软件发出写组合的总线周期,所以到相同高速缓冲存储器线的写入在被发出到该本地总线171之前就被组合到该WC缓冲器170中,从而达到对本地总线170的更有效的利用。这些命令被写入该命令缓冲器111中。该运动矢量被写入该运动矢量112中,而该校正数据162被写入该校正数据113中。
在一个实施例中,各命令是由解码器软件生成的,该软件通过使用独立于具体硬件而实现的标准应用程序接口(API)来调用图形软件中的各种功能。该解码器软件使用该API作为到该图形软件的标准接口来访问那些存在于硬件特定的AGP存储器中的命令缓冲器。这样,可以用来自不同图形控制器硬件厂商的计算机系统来使用单一的具体解码器软件。在一个实施例中该图形软件是一个硬件特定的设备驱动程序。通常,该硬件制造商或者该操作系统厂商提供硬件特定的设备驱动程序。
该API被定义以提供宏块级别上该解码器软件和该图形软件之间的接口。在该解码器软件和该图形软件之间共享一个公共的宏块数据结构。做为替换,该解码器软件可以直接地访问该硬件特定的AGP存储器。这个替换方案可以用于例如当该解码器软件被开发用于特定的图形控制器硬件时的情况。
在步骤230中,如果该帧完成,则图形软件从该解码器软件接收信息。如果该解码器软件通知该图形软件该帧完成,则该图形软件向图形控制器125发出一个特定命令以执行步骤250。如果该帧完成,该解码器软件有来自该解码器软件的信息,则图形控制器执行步骤235。
该图形软件也通过图形控制器检查该命令缓冲器的执行的完成。在一个实施例中,该图形软件向解码器软件提供状态信息,例如该压缩帧有多少已经由该图形软件处理。例如,该图形软件可以提供已处理的宏块数目、已解码帧的百分比、或者该图形软件进展的其它的指示符。
在一个实施例中,该图形控制器125发出一硬件中断信号,它启动图形软件对该命令缓冲器执行的检查。在另一个实施例中,该图形控制器125通过DMA将状态信息写入到系统存储器105中的一个单元中,以及图形软件按解码器软件的要求读取这个状态信息。在又一个实施例中,图形控制器125更新一个状态寄存器以便该图形软件按照解码器软件的要求去读取。
在步骤235中,该图形软件确定命令缓冲器111是否为满。如果该命令缓冲器111是满的,则图形软件发出一特定的命令到该图形控制器125以执行步骤250。如果该命令缓冲器111不满,则该图形控制器执行步骤235。
在步骤250中,该图形软件向图形控制器125发出一个命令以通过执行来自命令缓冲器111的命令和使用DMA获取该运动矢量以及校正数据来实施运动补偿。运动补偿的输出被写入本地图形存储器135中。当该图形软件完成这个步骤时,控制被传递给该解码器软件以执行步骤280。
在步骤260中该图形软件向该图形控制器125发出一个命令以通过执行来自命令缓冲器111的AGP命令和使用直接存储器存取(DMA)获取运动矢量及校正数据来实施运动补偿。运动补偿的输出被写入本地图形存储器135中。接下来,该图形软件执行步骤207以选取一个新的缓冲器。
在步骤280中,该解码器软件确定该压缩视频是否被解码。如果该压缩视频没有完成,则执行步骤205以选取另一个帧。
对本领域的技术人员而言将显而易见,本发明可以应用于按照许多压缩标准压缩的压缩视频。而且,本发明可以应用于其他的压缩数据标准。本发明可以应用于其他的类型的压缩数据,例如音频数据。
权利要求
1.一种方法包括以下步骤解码第一帧的第一部分以产生一个第一数据;生成一个第一信号;响应第一信号而使用第一数据实施运动补偿;生成一个第二信号;响应第二信号而解码第一帧的第二部分以产生一个第二数据;生成一个第三信号;响应该第三信号而使用第二数据实施运动补偿。
2.如权利要求1的方法还包括将该第一数据的一部分存储到一个命令缓冲器的步骤,该第一信号是响应该命令缓冲器被装满而生成的。
3.如权利要求1的方法还包括将该第一数据的一部分存储到一个命令缓冲器的步骤,该第一信号是响应第一数据被存储到该命令缓冲器而生成的。
4.如权利要求1的方法,其中第二信号是响应使用第一数据实施运动补偿的步骤的完成而生成的。
5.如权利要求1的方法,其中解码第一帧的第一部分的步骤包括以下步骤对第一帧的第一部分执行可变长度解码以产生第一中间数据;对第一中间数据执行逆量化以产生第二中间数据;以及对第二中间数据执行反离散余弦变换IDCT以产生第一数据。
6.如权利要求1的方法,其中第一帧的第一部分是一个宏块。
7.如权利要求1的方法,其中第一帧的第一部分包括多个宏块。
8.如权利要求1的方法,还包括通过一个设备驱动程序接口将第一数据存储在一个图形孔径中的步骤。
9.如权利要求8的方法,其中将第一数据存储在该图形孔径中的步骤包括将第一数据的一部分识别为写组合、非可高速缓存的数据类型的步骤。
10.如权利要求9的方法,其中第一数据包括一个第一校正数据。
11.如权利要求10的方法,其中第一数据包括一个第一运动矢量。
12.如权利要求11的方法,其中使用单一数据流存储第一校正数据以及第一运动矢量。
13.如权利要求11的方法,其中使用第一数据流存储第一校正数据以及使用第二数据流存储第一运动矢量。
14.一种机器可读媒体,其上已经存储有一组指令,所述指令组当由机器执行时完成以下步骤解码第一帧的第一部分以产生一个第一数据;生成一个第一信号;响应第一信号而使用第一数据实施运动补偿;生成一个第二信号;响应第二信号而解码第一帧的第二部分以产生一个第二数据;生成一个第三信号;响应该第三信号而使用第二数据实施运动补偿。
全文摘要
用于解码压缩视频的方法和设备,压缩视频的解码包括以下步骤:解码第一帧的第一部分以产生第一数据;生成第一信号;响应第一信号而使用该第一数据去实施运动补偿;生成第二信号;响应该第二信号而解码该第一帧的第二部分以产生第二数据;生成第三信号;以及响应该第三信号而使用该第二数据去实施运动补偿。
文档编号H04N7/50GK1385035SQ00809873
公开日2002年12月11日 申请日期2000年5月1日 优先权日1999年5月7日
发明者H·蒋 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1