使用可编程图形硬件的帧内编码的制作方法

文档序号:7941745阅读:171来源:国知局

专利名称::使用可编程图形硬件的帧内编码的制作方法
技术领域
:本主题公开涉及使用图形硬件的有效帧内编码。
背景技术
:H.264是一种常用并且广泛采用的国际视频编码或压缩标准,也叫做高级视频编码(AdvancedVideoCoding,AVC)或者运动图像专家组(MPEG)-4M10部分。和诸如H.263+和MEPG-4的先前标准相比,H.264/AVC显著地提高了压缩效率。为了获得这种高编码效率,H.264配备有增强内容预测的一组工具,但代价是计算复杂度增加了。在H.264中使用宏块,其中,宏块(macro-block,MB)是在视频压缩领域中普遍使用的术语,其表示16X16个像素的块。在YUV色彩空间模型中,每一个宏块包含4个8X8亮度子块(或者Y块)、1个U块和1个V块(4:2:0,其中,U和V提供了色彩信息)。其也可以由4:2:2或者4:4:4YCbCr格式来表示(Cb和Cr是蓝色和红色色度分量)。诸如H.261/3/4和MPEG-V2/4的大多数视频系统利用源视频中的空间、时间和统计冗余。某些宏块属于更高级的宏块类型,比如跳跃(skipped)和非跳跃(non-skipped)宏块。在非跳跃宏块中,编码器确定宏块的8X8亮度子块和4X4色度子块中的每一个是否要被编码,在每一个宏块编码时间给出不同数量的编码子块。已经发现连续帧之间的比特的相关性较高。由于冗余水平逐帧变化,所以即使对于所有的帧使用相同的量化参数,每帧的比特数量也是可变的。因此,通常采用缓冲器来平滑可变的视频输出速率,并提供恒定的视频输出速率。使用速率控制来防止缓冲器上溢(导致帧跳跃)或/和下溢(导致低通道利用率),以便获得良好的视频质量。对于例如视频会议的实时视频通信,当采用速率控制来满足低延迟约束时,特别是在低比特率通道中,适当的速率控制更有挑战性。因此,期望在视频数据的编码期间提供更快的帧内处理。上面描述的用于视频编码的当前设计的缺陷仅仅意欲提供对目前设计的某些问题的概述(overview),并非打算穷举。在回顾下面对各种非限制性实施例的描述之后,现有技术的其他问题以及本发明的相应益处将变得更为清晰。
发明内容提供了用于视频编码和输出过程的有效地编码和输出数据的视频数据处理优化。这里描述了基于图形处理单元(graphicsprocessingunit,GPU)的帧内处理实施方案,用于将计算负载从中央处理单元(CPU)卸载到GPU。通过重新安排4X4块编码顺序,所述过程可以得益于GPU上的并行机制。块列表大小影响速度,并且通过针对选择使用最佳块列表大小,相对于未受益于并行计算的传统计算,使用这里描述的技术可以获得高达30倍的4速度提高。在一个示例非限制性实施例中,提供了用于把图像帧划分为块的方法,包括例如利用GPU把所述帧划分为对角NXN块列表。一种示例非限制性方法包括通过利用除法把数据嵌入小数位(decimalplace)来输出数据,并且通过利用乘法把数据嵌入整数位(integerplace)来输出数据,从而输出第一个数据集合。所述方法还可以包括通过输出第二个数据集合而不执行乘法来输出所述第二个数据集合。这里提供了简化的概要(summary)以帮助实现对后面的更详细的描述和附图中的示例非限制性实施例的各个方面的基本或者大致理解。但是,这个概要并非意欲作为广泛的或者穷举的概述。这个概要的唯一目的是以简化形式给出和本发明(innovation)的各种示例非限制性实施例有关的一些概念,作为随后的更详细描述的前序。参考附图进一步描述这里描述的根据本发明的用于视频编码过程的最优化,在附图中图1示出了根据本发明的一个方面的现代图形流水线的高层次图;图2示出了根据本发明的一个方面的4X4±夬巾贞内预测(intraprediction);图3是示出根据本发明的一个方面的按光栅扫描顺序完成MB编码的高层次框图;图4是根据本发明的一个方面的基于GPU的帧内处理的高层次框图;图5示出了根据本发明的一个方面的在一个MB内16个4X4块的原始编码顺序;图6示出了根据本发明的一个方面的4X4块列表的划分,具有相同号码的4X4块属于同一块列表,并且该号码也表示块列表编码顺序;图7示出了根据本发明的一个方面的数据打包的方法;图8示出了根据本发明的一个方面的不同大小的块列表的执行时间;图9示出了使用SO作为阈值的CPU或GPU选择的性能;图10是示出根据这里给出的一个或更多个实施例的示例帧内编码过程的流程图;图11是示出根据这里给出的一个或更多个实施例的用于使对视频进行编码的一个或更多个部分并行化的示例过程的流程图;图12是表示其中可以实施本发明的示例非限制性计算系统或操作环境的框图;和图13示出了适于本发明的实施例服务的网络环境的概观。具体实施例方式概述作为概述,随着因特网和无线网络的发展,多媒体信息,特别是视频内容,已变得日益普及(例如www.youtube.com)。但是,由于未压缩视频的大小通常相当大,所以在没有超常的带宽的情况下,传送未被压缩的视频是不切实际的。H.264是一种由IS0/IECMPEG和ITU-TVCEG的联合视频组(JointVideoTeam,JVT)开发的国际编码标准草案ITU-T建议和联合视频规范的最终草案国际标准(ITU-TRec.H.264/IS0/IEC14496-10AVC).(2003)JVT-G050。JVT由来自ITU-T的视频编码专家组(videocodingexpertsgroup,VCEG)和ISO/IECs运动图像专家组(MPEG)中的成员的专家组成。该标准包含许多以更有效的方式实现视频压缩的新的特征,例如,多个参考帧、子像素运动估计和各种帧内模式(intramode)处理技术。利用这样的高级帧内模式判决(decision),帧内编码的速率失真性能被大大改善。但是,编码复杂度同时增大。为了减小计算复杂度,在快速帧内预测方面的传统尝试以峰值信噪比(peaksignaltonoiseratio,PSNR)的减小或者损失换取了提高的速度。在另一方面,在过去几年,图形硬件技术已经以空前的速度成长。数十亿美元的视频游戏市场推动了发明创造,并把图形硬件的专业本质(specializednature)演化到将额外的晶体管而非高速缓存用于计算。当今,图形硬件不仅是用于加速三维图形处理和渲染(rendering)的专用硬件,而且也是配备有图形处理单元(GPU)的协处理器(co-processor),其利用用户开发的程序来处理数据流。根据摩尔定律,CPU的性能已经并且正在以大约1.4倍的年增长率提高。但是,GPU性能的年增长率目前是1.7倍(像素/秒)到2.3倍(顶点/秒),这比CPU的年增长率快得多,因而明显地胜过了摩尔定律。GPU随着计算质量和可编程性的显著改善而增长,这为通用计算提供了强大的数据并行处理机制和更多的灵活性。就这一点而言,某些传统应用已提出把GPU用于图形和非图形应用二者以利用性能增益。例如,已提出了基于GPU的视频解码和基于GPU的运动估计。但是,没有已知的加速帧内编码的尝试。因此,在各种非限制性实施例中,实现了高效帧内编码,其不仅执行块内预测,而且还通过在GPU上重新安排4X4块的编码顺序来生成重构的块,而不损失任何编码效率。作为下面内容的概述,接着描述代表性可编程图形流水线,然后讨论H.264/AVC中的块内编码。在讨论块内编码之后,是示例非限制性的基于GPU的实施方案的细节。接着,评估这里描述的方法的性能,以及概括地基于所述性能评估的一些结论。最后,针对一般非限制上下文给出了可以利用如这里所述的基于GPU的帧内编码的一般网络环境和计算设备。可编程图形流水线(pipeline)图1示出了代表性图形流水线的高层次(high-level)图。图形硬件的典型使用是处理3D数据。应用120使用API(applicationprogramminginterface,应用编程接口,例如OpenGL或者Direct3D)把图形几何描述作为顶点流从CPU100发送到GPU110。这些顶点被顶点处理器130变换为它们最终的屏幕位置,顶点处理器130也基于场景照明(scenelighting)给每一个顶点分配颜色,并且基元(privmitive)在140组装。光栅化器(rasterizer)150把几何表示(顶点)转换为图像表示(片段(fragment))0并且其跨像素插值每个顶点量。然后,片段处理器160(片段处理器160为并行的多个)将计算每一个像素的最终颜色,并将其存回帧缓冲器170。用户可以通过针对每个顶点和每个片段计算分别在顶点处理器130和片段处理器160上编写称为着色器(shader)的程序来实施定制操作。就这一点而言,顶点处理器130和片段处理器160是完全可编程的,并且在具有4个分量的向量上执行类似单指令多数据(Singlelnstruction,MultipleData,SIMD)的操作。在通用GPU(generalpurposeGPU,GPGPU)计算中,GPU是提供独立的并行处理的流处理器,其在数据流上执行若干核心程序(kernel)。核心程序像是在流的每一个数据元素上施加的函数。对于这里描述的块内处理,核心程序被用于4X4块预测和帧内模式选择、包括正向整数余弦变换(forwardlntegerCosineTransform,ICT)、量化、反向ICT(inverseICT,ICT-1)、逆量化(De-Quantization,DeQ)和反向预测(inverseprediction)的图像重构过程。使用纹理(texture)来存储原始帧和先前重构的相邻块信息,下面给出进一步的细节。H.264/AVC中的帧内预测图2示出了4X4块帧内预测,其中符号A到D代表4个上方的4X4块,E代表右上方的4X4块,F到H代表右侧的4X4块,I到L代表左侧的4X4块,并且X代表左上方的4X4±夬。小块a到ρ表示MB内部的4X4块。在4X4块预测中,每一个4X4块被从空间相邻的采样预测(见图200),其中符号a到ρ是当前块像素,并且符号A到L和X是产生预测块的相邻块像素。存在9种预测模式一个DC预测模式和8个方向预测(directionalprediction)模式,如图2的图200中所见。在模式判决部分,代价函数由绝对差的和(sumofabsolutedifference,SAD)和模式代价(ModeCost)组成,这带来了速率受限的最优化问题,并且选择最佳模式以使拉格朗日代价函数最小化。模式代价是4X4块预测模式m、最可能模式(MostProbableMode,MPM)和拉格朗乘数λ的函数,拉格朗乘数λ施加依赖于QP(quantizationparameter,量化参数)的编码模式信息的率限制(rateconstraint)。在下面的等式中示出了代价函数,其中C是原始的4X4块,Pm是利用相应模式m的预测块,并且MPM代表最可能模式,其被根据左侧和上方的4X4块的帧内模式(Intramode)计算。COST(m,λ,ΜΡΜ)=SAD(C,Pm)+Mode_C0ST(m,λ,MPM)SAD{C,P{m))=ΣΣ\€\γ,χ\-Pm\y,z\\y=Xx=\ModeCOST(m,λ,MPM)=(m!=MPM)Xλ由于帧内预测需要先前的编码相邻块信息,所以用于构建预测块的重构像素和用于计算MPM的块模式考虑了相邻块间的相关性(cbpendency)。用于帧内处理的CPU工作流在一个实施例中使用的参考软件中,按光栅扫描顺序执行MB编码。图3中示出了高层次框图,其中Q代表量化器,DeQ代表逆量化器,并且VLC代表可变长度编码器。如流程图中所指示,在300读取宏块,然后执行帧内预测310,并且执行处理330和340。从330开始,接着执行ICT350、Q360、VLC370,并且之后也执行DeQ380和ICT1390。重构帧缓冲器320存储重构数据的结果。就这一点而言,预测块使用先前编码的相邻MB,因此下一个MB的处理必须等到当前MB的处理完成为止。因此,在MB之间引入了高相关性,从而由于MB编码顺序而导致弱的数据并行性。考虑到这种不足,下面描述经修改的MB和4X4块编码顺序,其使得GPU上的数据并行处理的吞吐率最大化。基于GPU的帧内处理在一个实施例中,实现了基于GPU的帧内处理,其执行4X4块内预测并产生重构块作为用于将来的块的预测信息,从而以有效的方式有效地重新使用信息。图4示出了这里在一个实施例中描述的基于GPU的帧内处理的高层次框图,并且在下面的分部中讨论额外的细节。图4一般性地示出了MB内的4X4块的编码顺序。原始帧400和重构帧420以及用于有效并行化的相关联块列表数据430被CPU402传送到GPU404的纹理存储器410供进一步处理。在从帧内预测440确定最佳模式460、从量化444确定一组残差系数(residualcoefficient)462以及从重构450确定重构块464时,数据经历帧内预测440、ICT442、量化444、逆量化446、反向ICT448和重构450。通过用于输出的数据打包470准备最佳模式460、残差系数462以及重构块464,以便从GPU404输出回到CPU402,在CPU402,数据通过CPU402进行数据提取480而被拆包。重构帧被输出并且准备好用于下一帧400,并且被发送到VLC490以便调节用于渲染、传输等的输出。图形硬件中的数据表示对于输入数据,当前的原始4X4块和先前的编码相邻块信息(像素值和4X4帧内预测模式)都被用作输入以及当前块可用性。就此而言,如图4中所示,这些可以被表示为纹理对象,并存储在纹理存储器中,尽管注意到从CPU到GPU的存储器访问带宽可能很昂虫贝ο作为示例非限制性实施方案,GLRGBA可被用作输入数据类型,它是包含4个浮点数据(红、绿、蓝和阿尔法(RGBA))的OpenGL向量。当前原始帧被加载到纹理存储器中一次,并且剩下的数据被打包到一个缓冲器中,并针对每一个过程被加载到纹理存储器中。数据级并行性上面,注意到和帧内编码有关,相邻块之间存在依赖性。就此而言,图5示出了一个MB内16个4X4块的原始编码顺序。符号A到D代表4个上方的4X4块,E代表右上方的4X4±夬,F到I代表4个左侧的4X4块,并且X代表左上方的4X4±夬。小块表示MB内部的4X4块,并且块中的编号表示该块在编码顺序中的位置。虽然已经提出重新安排4X4块编码顺序以便在4X4块之间提供并行处理,但是到目前为止,这种并行处理还限于应用在同一MB内。因此,如在这里的各种实施例中提供的那样,考虑到GPU内部的大量流处理器,并行过程不仅可被应用于同一MB内的4X4块,而且也可以应用于同一帧内的4X4块。就此而言,这里描述的是把帧划分为多个对角4X4块列表的技术。图6示出了根据这种技术的4X4块列表的示例划分,具有相同编号的4X4块属于同一个块列表,并且所述编号也表示块列表编码顺序。列表是对角的,因为9以及其他数字是对角的。这里,每一行比上一行少2,但是偏移量可以是1或者3,或者另一个数字。由于偏移量保持固定,所以编号的对角化性质保持为真(true)。每一行表示并行处理路径或者通道。因此,图6示出了相对于多个并行处理通道对角编码的多个NXN块列表的例子,更具体来说,示出了相对于偏移量为2的多个并行处理通道对角编码的多个NXN块列表的例子。每一个正方形或者块1、8、9等均表示一个4X4块,并且每一行均表示一个列表(一个NXN块列表),并且多个列表形成了多个NXN块列表。这些列表是对角的,因为偏移量导致每一个特定数字(除了1以外)在对角线上。对于块列表中的每一个4X4块,经由图4的CPU-GPU环(loop),在前一个块列表处理完成后可获得必需的相邻数据,并且它们相互独立。编码器从左上到右下处理4X4对角块列表。就此而言,由于GPU的并行性,因此所有4X4块的编码可以同时完成。这个方法解决了依赖性问题,并提供了高度的并行性。输出数据打包现有的图形硬件可以同时支持最大1024位作为输出,并且消费者级图形硬件通常支持512位作为输出。该输出具有拥有四个分量的4个向量,并且使用32位浮点作为每一个分量的数据类型。对于输出数据,存在一个4X4重构块,一个4X4残差系数块和当前块模式。GPU提供了总共16个浮点数(每一个32位)来存储输出数据。在核心内部,不支持位移(bitshifting)操作。因此,人们不能把数据直接嵌入高16位。因为浮点数可以表示为一个整数加一个小于1的小数,所以人们可以通过如下面所述的一个示例非限制性实施例中所示那样对数据进行乘法和除法,把输出数据嵌入到整数和小数位。对于全为正并且在0到255范围内的4X4重构块,其更适于嵌入小数位。图7示出了示例数据打包过程。对于第一个数据输出700,残差系数720被进行乘法725,并在存储器740中被置于整数位中,而重构系数730被进行除法735,并在存储器740中被置于小数位中。乘法被示出为乘以10,并且除法被示出为除以1000,但是这些仅仅是例子,并且可以采用其他合适的数字。对于非限制性示例,所述乘法可以是乘以5到15之间的数字。可替代地,所述乘法可以是乘以2到50之间的数字。所述除法也可以是除以10到10000之间的数字,包括10和100000。后续数据702输出没有进行乘法或修改的残差系数750,而重构系数760被进行除法765,并在存储器770中被置于小数位中。性能对于上述技术的性能的示例非限制性观测(observation),在配备了具有96个流处理器(每一个1200Mhz)的图形卡和4个具有IGBDDR2内存的3.2GHz处理器的PC上运行了某些仿真。仿真被设计成观测对从GPU到CPU的有限下载带宽的影响,以及和传统的只有CPU的实施方案相比的加速比(speedupratio)。执行时间性能在帧内预测开始,并在产生重构图像处结束。为了示出从GPU到CPU的下载带宽限制如何影响性能,观测了具有和不具有从GPU到CPU的读回数据(readbackdata)的性能。针对不同块列表大小的执行时间,图8示出了结果。正如所预期的,对于较短的块列表,可以并行地处理较少的块,因此,数据I/O的开销变得显著。但是对于较长的块列表,由于并行化机制的占主导的益处,从利用GPU来处理列表得到的增益显著,这减少了GPU建立开销(setupoverhead)对整体处理时间的影响。简言之,块列表越长,产生的速度增加(speedup)越大。针对不同的测试条件可以获取最佳的块列表大小So。例如,当块列表大小比So长时,加速比大于1。最后,作为优化,人们可以根据阈值确定调整对于使用CPU还是GPU来处理块列表的选择。如果块列表的大小小于S。,则处理可以在CPU上运行,否则在GPU上运行。图9示出了分别在不同的高清晰分辨率720p或者1080p,对于不同图像序列使用S。作为阈值的CPU或GPU选择的性能,所述图像序列名为全体人员(crew)、晚上、城市、蓝天、河床和车站2。从结果中可以看出,应用读回的结果对没有读回的结果的加速比大约为2,或者是速度的两倍。不言自明,2倍是处理速度的显著提高,与传统方法相比,对于给定时间,完成两倍那么多的处理。因此图9示出从GPU把数据读回到CPU是主要的瓶颈,即从GPU把数9据读回到CPU的开销是处理的范围(domain)。图10是流程图,示出了根据这里给出的一个和更多个实施例的示例帧内编码过程。在1000,由CPU接收原始帧用于编码。在1010,在CPU处可获得重构帧,其表示在编码中使用的先前信息。在1020,确定表示并行化操作的块处理顺序的对角化NXN块列表集合。在1030,对于阈值长度的NXN块列表,使用GPU执行并行化的帧内编码。否则,可选地使用CPU,因为对于较短的块列表,可能不能实现GPU的益处。在1040,对于GPU的情况,把原始帧、重构帧和块列表传送到GPU,在1050,在GPU处,确定最佳模式、残差系数和重构块,并且数据被打包用于输出回CPU。图11是流程图,示出了根据一个和更多个实施例的用于并行化视频编码过程的一个和更多个部分的示例过程。在1100,接收要被编码的图像帧序列中的一帧。在1110,把该帧划分为相对于用于对该帧的块执行帧内编码的并行处理通道对角编码的NXN块列表。在1120,基于重构帧并按由多个NXN块列表规定的顺序,使用所述并行处理通道使对该帧的块的帧内编码操作并行化。在1130,数据输出包括把数据中的一些嵌入存储位置的整数位,并把数据中的一些嵌入存储位置的小数位。观测这里,给出了各种基于GPU的帧内处理实施方案,用于把计算负载从CPU卸载到GPU0通过重新安排4X4块编码顺序,该过程可以受益于GPU上的并行机制。通过针对选择使用最佳的块列表大小,可以实现高达30倍的速度增加。但是,性能改善受下载带宽限度的限制。由于用于一个16X16MB的输出数据超过了目前的输出数据大小的限度,为了支持16X16帧内预测,人们可以在输出过程之前压缩数据。示例计算机网络和环境本领域普通技术人员可以理解,本发明可以结合任何计算机或者其他的客户端或者服务器设备实施,所述计算机或者其他的客户端或者服务器设备可以被部署为计算机网络的一部分,或者被部署在分布式计算环境中,连接到任何种类的数据存储器。就此而言,本发明适合具有任意数量的存储器或者存储单元以及跨过任意数量的存储单元或者卷发生的任意数量的应用和过程的任何计算机系统或者环境,所述应用和过程可以结合根据本发明执行的优化算法和过程使用。本发明可以应用于具有部署在网络环境或者分布式计算环境中具有远程或者本地存储设备的服务器计算机和客户端计算机的环境。本发明以可以被应用于独立的计算设备,所述计算设备具有编程语言功能,解释和执行能力,用于结合远程或者本地服务和过程产生、接收和发送信息。分布式计算通过在计算设备和系统之间的交换来提供计算机资源和服务的共享。这些资源和服务包括信息、高速缓存和用于例如文件的对象的盘存储器的交换。分布式计算利用了网络连接性,允许客户端利用(leverage)其集体力量使整个企业受益。就此而言,各种设备可以具有可以暗含本发明的最优化算法和过程的应用、对象或资源。图12提供了示例的联网或者分布式计算环境的示意图。分布式计算环境包含计算对象1210a、1210b等,以及计算对象或设备1220a、1220b、1220c、1220d、1220e等。这些对象可以包含程序、方法、数据存储、可编程逻辑等。对象可以包含例如PDA、音频/视频设备、MP3播放器、个人计算机等的相同或者不同设备的部分。每一个对象可以经过通信网络1240和另一个对象通信。这个网络自身可以包含其他的向图12的系统提供服务的计算对象和计算设备,并且这个网络自身可以表示多个互连的网络。根据本发明的一个方面,每一个对象1210a、1210b等或者1220a、1220b、1220c、1220d、1220e等可以包含应用,所述应用可以利用适于和根据本发明的设计框架一起使用的API或者其他对象、软件、固件和/或硬件。也可以理解,例如1220c的对象可以被托管(hostedon)在另一计算设备1210a、1210b等或者1220a、1220b、1220c、1220d、1220e等上面。因此,尽管所描绘的物理环境可以把所连接的设备示出为计算机,但是这种图示仅仅是示例性的,并且可替代地,物理环境可以被描绘或者描述为包含各种数字设备,例如PDA、电视、MP3播放器等,它们中的任何一个均可以采用各种有线或者无线服务、诸如接口、COM对象等的软件对象。存在各种支持分布式计算环境的系统、组件和网络配置。例如,计算系统可以通过本地网络或者广域分布式网络由有线或者无线系统连接在一起。目前,很多网络被耦合到因特网,这为广域分布式计算提供了基础设施,并构成了(encompass)很多不同的网络。任何基础设施均可用于根据本发明的最优化算法和过程易发生的示例通信。在家庭联网环境中,存在至少四种不同的均可以支持唯一协议的网络传输媒体,例如电力线、数据(无线和有线二者)、语音(例如电话)和娱乐媒体。诸如灯开关和家用电器的大多数家庭控制设备可以使用电力线用于连接。数据服务可以作为宽带(例如DSL或者电缆调制解调器)进入家庭,并且可以在家庭内使用无线(例如HomeRF或者802.IlA/B/G)或者有线(例如HomePNA、Cat5、以太网、甚至电力线)连接来访问。语音业务可以作为有线(例如Cat3)或者无线(例如蜂窝电话)进入家庭,并且可以使用Cat3布线在家庭内分布。娱乐媒体或者其他图形数据可以通过卫星或者电缆进入家庭,并且通常使用同轴电缆在家庭中分布。IEEE1394和DVI也是用于媒体设备集群的数字互连。这些网络环境以及其他可能作为协议标准出现或者已经出现的网络环境全都可以互连以形成诸如内联网(intranet)的网络,其可以经过诸如因特网的广域网连接到外部世界。简而言之,存在各种不同的源用于数据的存储和传输,因此,本发明的任何计算设备可以以任何现有方式共享和传递数据,并且在这里的实施例中描述的所有方式都并非旨在限制。因特网一般指利用传输控制协议/因特网协议(TCP/IP)协议套件的网络和网关的集合,其在计算机联网(networking)技术中是公知的。因特网可以被描述为由执行联网协议的计算机互连的地理上分布的远程计算机网络的系统,所述联网协议允许用户通过网络交互并共享信息。由于这种广泛传播的信息共享,诸如因特网的远程网络目前已总体上演进为一种开放系统,利用所述开放系统,开发者能够根本不受限制地设计用于执行专门操作或服务的软件应用。因此,网络基础设施实现诸如客户端/服务器、对等或者混合体系结构的网络拓扑的主机(host)。“客户端”是类或者组的成员,所述类和组使用与其不相关的另一个类或者组的服务。因此,在计算中,客户端是过程,即大致一组指令或者任务,其请求由另一程序提供的服务。客户端过程利用被请求的服务而不必“知道”关于所述另一程序或者服务自身的任何工作细节。在客户端/服务器体系结构中,特别是联网的系统中,客户端通常是访问由诸如服务器的另一计算机提供的共享网络资源的计算机。在图12的图示中,例如,计算机1220a、1220b、1220c、1220d、1220e等可被看作客户端,并且计算机1210a、1210b等可以被看作服务器,其中,服务器1210a、1210b等保持随后被复制到客户端计算机1220a、1220b、1220c、1220d、1220e等的数据,尽管根据情况任何计算机都可以被视为客户端、服务器,或者两者皆有。这些计算设备中的任何一个均可以处理数据或者请求可能暗含根据本发明的最优化算法和过程的服务或者任务。服务器通常是可通过诸如因特网或者无线网络基础设施的远程或者本地网络访问的远程计算机系统。客户端过程可能在第一计算机系统中是活动的,并且服务器过程可能在第二计算机系统中是活动的,通过通信介质相互通信,因而提供了分布式功能,并允许多个客户端利用服务器的信息收集能力。依据本发明的最优化算法和过程使用的任何软件对象可以被跨过多个计算设备或者对象分布。客户端和服务器利用由协议层提供的功能相互通信。例如,超文本传输协议(HTTP)是结合万维网(WorldWideWeb,WWW)或者“(theWeb)”使用的公共协议。通常,诸如因特网协议(IP)地址的计算机网络地址或者诸如统一资源定位符(UniversalResourceLocator,URL)的其他引用(reference)可被用来识别服务器或者客户端计算机彼此。网络地址可以被称作URL地址。可以通过通信介质提供通信,例如,客户端和服务器可以通过TCP/IP连接相互耦合,用于高容量通信。因此,图12示出了其中可以采用本发明的示例联网或者分布式环境,其中服务器经由网络/总线与客户端计算机通信。更具体地,根据本发明,许多服务器1210a、1210b等经由通信网络/总线1240和许多客户端或者远程计算设备1220a、1220b、1220c、1220d、1220e等互连,所述通信网络/总线1240可以是LAN、WAN、内联网、GSM网络、因特网等,所述客户端或者远程计算设备诸如便携式计算机、手持计算机、瘦客户端、联网家用电器或其它设备,所述其它设备诸如VCR、TV、烤箱、灯、加热器等。因此,预期本发明可以应用于期望通过与其相连的网络传送数据的任何计算设备。例如在其中通信网络/总线1240是因特网的网络环境中,服务器1210a、1210b等可以是Web服务器,客户端1220a、1220b、1220c、1220d、1220e等经由诸如HTTP的许多已知协议中的任何一个与所述Web服务器通信。服务器1210a、1210b等也可以起到客户端1220a、1220b、1220c、1220d、1220e等的作用,这可以是分布式计算环境的特性。如所提及的,通信可以是有线或者无线的,或者在适当的情况下是它们的组合。客户端设备1220a、1220b、1220c、1220d、1220e等可以或可以不经由通信网络/总线14通信,并且可以具有与其相关联的独立通信。例如,在TV或者VCR的情况下,可以存在或者可以不存在对其进行控制的联网的方面。每一个客户端计算机1220a、1220b、1220c、1220d、1220e等和服务器计算机1210a、1210b等可以配备有各种应用程序模块或者对象1235a、1235b、1235c等,并且具有到各种类型的存储元件或者对象的连接或者访问,文件或者数据流可以在所述存储元件或者对象上存储,或者,文件或者数据流的部分可以被下载、传送或者迁移到所述存储元件或者对象。根据本发明,计算机1210a、1210b、1220a、1220b、1220c、1220d、1220e等中的任意一个或更多个可以负责维护或者更新数据库1230或者其他的存储元件,例如用于存储被处理或保存的数据的数据库或者存储器1230。因此,可以在具有客户端计算机1220a、1220b、1220c、1220d、1220e等的计算机网络环境中利用本发明,所述客户端计算机1220a、1220b、1220c、1220d、1220e等可以访问并和计算机网络/总线1240和所述服务器计算机1210a、1210b等交互,所述服务器计算机1210a、1210b等可以与客户端计算机1220a、1220b、1220c、1220d、1220e等和其他类似的设备以及数据库1230交互。12示例计算设备如所提及的,本发明应用于任何期望把例如数据传递到移动设备的设备。因此应该理解,所有种类的手持、便携式和其他计算设备和计算对象被预期与本发明结合使用,即,设备可以传递数据或者接收、处理或存储数据的任何地方。因此,以下在图13中描述的下面的通用远程计算机只是一个例子,并且本发明可以利用任何具有网络/总线互操作性和交互作用的客户端实施。因此,本发明可以在涉及非常少或者最小的客户端资源的联网托管服务(hostedservice)的环境中实施,例如,其中客户端设备只作为到网络/总线的接口的联网环境,所述客户端设备诸如置于家用电器中的对象。尽管不要求,但是本发明可以部分地通过操作系统实施,供设备或者对象的服务开发者使用,并且/或者被包括在结合本发明的组件操作的应用软件内。软件可以被在计算机可执行指令的一般上下文中描述,例如由一个或更多个计算机执行的程序模块,所述一个或更多个计算机例如客户端工作站、服务器,或者其他设备。本领域技术人员将理解,可以利用其他计算机系统配置和协议实践本发明。因此图13示出了其中可以实施本发明的合适的计算系统环境1300a的例子,尽管如上面所明示的那样,计算系统环境1300a只是用于媒体设备的适合的计算环境的一个例子,并且并非旨在暗示对于本发明的功能或者使用范围的任何限制。计算环境1300a也不应该被解释为具有和在示例操作环境1300a中所示部件中的任何一个或者组合相关的任何依赖或者要求。参考图13,用于实施本发明的示例远程设备包括计算机1310a形式的通用计算设备。计算机1310a的组件可以包括但不限于处理单元1320a、系统存储器1330a和把包括系统存储器的各种系统组件耦合到处理单元1320a的系统总线1321a。系统总线1321a可以是几种类型的总线结构中的任何一种,包括存储器总线或者存储器控制器、外围总线,以及使用各种总线体系结构中的任何一种的局部总线。计算机1310a通常包括各种计算机可读介质。计算机可读介质可以是任何可被计算机1310a访问的可获得的介质。作为示例而非限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包括以用于存储例如计算机可读指令、数据结构、程序模块或者其他数据的信息的任何方法或者技术实施的易失性和非易失性、可移动和非可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPR0M、快闪存储器或者其他存储器技术、CDR0M、数字多功能盘(DVD)和其他光盘存储设备、磁带盒、磁带、磁盘存储设备或者其他磁性存储设备,或者任何其他可被用来存储期望的信息并可被计算机1310a访问的介质。通信介质通常以例如载波的调制数据信号或者其他的传输机制具体实施计算机可读指令、数据结构、程序模块或者其他数据,并且包括任何信息传递介质。系统存储器1330a可以包括易失性和/或非易失性存储器形式的计算机存储介质,例如只读存储器(ROM)和/或随机存取存储器(RAM)。包含帮助在例如启动期间在计算机1310a内的元件之间转移信息的基本例程的基本输入/输出系统(basicinput/outputsystem,BIOS)可以被存储在存储器1330a内。存储器1330a通常也包含数据和/或程序模块,所述数据和/或程序模块可被处理单元1320a立即访问并且/或者目前正被处理单元1320a操作。作为示例而非限制,存储器1330a也可以包括操作系统、应用程序、其他程序模块和程序数据。计算机1310a也可以包括其他的可移动/非可移动、易失性/非易失性计算机存储介质。例如,计算机1310a可以包括对非可移动、非易失性磁性介质进行读或写的硬盘驱动器、对可移动、非易失性磁盘进行读或写的磁盘驱动器,和/或例如CD-ROM或其他光学介质的可移动、非易失性光盘进行读或写的光盘驱动器。可在示例操作环境中使用的其他的可移动/非可移动、易失性/非易失性计算机存储介质包括但不限于磁带盒、快闪存储器卡、数字多功能盘、数字视频带、固态RAM、固态ROM,等等。硬盘驱动器通常通过例如接口的非可移动存储器接口连接到系统总线1321a,并且磁盘驱动器或者光盘驱动器通常由例如接口的可移动存储器接口连接到系统总线1321a。用户可以通过例如键盘和通常称为鼠标、跟踪球或者触摸板的指点设备的输入设备把命令和信息输入计算机1310a中。其他的输入设备可以包括麦克风、游戏杆、游戏板、卫星接收器、扫描仪等。这些以及其他的输入设备经常通过用户输入1340a和相关联的接口连接到处理单元1320a,所述相关联的接口耦合到系统总线1321a,但是可以被其他的接口和总线结构,例如并行端口、游戏端口或者通用串行总线(USB)连接。图形子系统也可以被连接到系统总线1321a。监视器或者其他类型的显示设备也通过例如输出接口1350a的接口连接到系统总线1321a,输出接口1350a转而和视频存储器通信。除了监视器以外,计算机还可以包括其他的外围输出设备,例如扬声器和打印机,它们可以通过输出接口1350a连接。计算机1310a可以使用到例如远程计算机1370a的一个或更多个其他的远程计算机的逻辑连接在联网或者分布式环境中工作,所述远程计算机转而可以具有不同于设备1310a的媒体能力。远程计算机1370a可以是个人计算机、服务器、路由器、网络PC、对等设备或者其他的常见网络节点,或者任何其他的远程媒体消费或传输设备,并且可以包括上面相对于计算机1310a描述的任意或者全部元件。图13中描绘的逻辑连接包括例如局域网(localareanetwork,LAN)或者广域网(wideareanetwork,WAN)的网络1371a,但是也可以包括其他网络/总线。这些联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见。当在LAN联网环境中使用时,计算机1310a通过网络接口或适配器连接到LAN1371a。当在WAN联网环境中使用时,计算机1310a通常包括通信组件,例如调制解调器,或者用于在例如因特网的WAN上建立通信的其他部件。例如调制解调器的通信组件可以通过输入1340a的用户输入接口或者其他适当的机制连接到系统总线1321a,所述调制解调器可以是内部的或者外部的。在联网环境中,相对于计算机1310a或者其部分描绘的程序模块可以被存储在远程存储器存储设备中。将会理解,被示出和描述的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。虽然已经结合各个附图的优选实施例描述了本发明,但是要理解,可以使用其他类似的实施例,或者,可以对所描述的实施例做出修改和添加,用于执行本发明的相同的功能而不从其偏离。例如,本领域技术人员将意识到,在本申请中描述的本发明可以应用于任何环境,无论是有线的还是无线的,并且可以被应用于通过通信网络连接并跨过该网络交互的任意数量的这种设备。因此,本发明不应该限于任何单个实施例,而应该在宽度和范围上根据所附权利要求来理解。这里使用词“示例/示例性”意在作为例子、实例或者图示。为了避免疑惑,这里公开的主题不受这种例子的限制。此外,这里被描述为“示例/示例性”的任何方面或者设计不一定要被理解为相对于其他方面或者设计是优选的或者有利的,并且其也不意味着排除本领域普通技术人员已知的等同示例结构和技术。此外,就术语“包括”、“具有”、“包含”和其他类似的词在详细描述或权利要求中所使用的范围来说,为了避免疑惑,这些术语旨在包括在内的方式,和术语“包含”类似,作为开放的过渡词而不排除任何添加或者其他元件。这里描述的本发明的各种实施方案可以具有完全是硬件、部分是硬件并且部分是软件,以及是软件的方面。如这里所使用的那样,术语“组件”、“系统”等同样旨在指代计算机相关的实体,或者是硬件、硬件和软件的组合、软件,或者是执行中的软件。例如,组件可以是但不限于是在处理器上运行的过程、处理器、对象、可执行文件(executable)、执行的线程、程序,和/或计算机。例如,在计算机上运行的应用和计算机都可以是组件。一个和更多个组件可以驻留在过程和/或执行的线程内,并且组件可以集中在一个计算机上,并且/或者在两个和更多个计算机之间分布。因此,本发明的方法和装置,或者其某些方面或者部分可以具有具体实施在例如软盘、CD-ROM、硬驱动器或者任何其他机器可读存储介质的有形介质中的程序代码的形式(即指令),其中,当程序代码被加载到例如计算机的机器中并被机器执行时,所述机器变成用于实践本发明的装置。在可编程计算机上的程序代码执行的情况下,计算设备一般包括处理器、所述处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。此外,所公开的主题可以被使用标准的编程和/或工程技术实施为系统、方法、装置,或者制造物,所述标准的编程和/或工程技术用于产生软件、固件、硬件或者其任意组合,以控制基于计算机或者处理器的设备实施这里详述的方面。这里使用的术语“制造物”、“计算机程序产品”或者类似的术语旨在包含可从任何计算机可读设备、载波或者介质访问的计算机程序。例如,计算机可读介质可以包括但不限于磁存储设备(例如硬盘、软盘、磁条...)、光盘(例如致密盘(CD)、数字多功能盘(DVD)...)、智能卡,以及快闪存储设备(例如卡、棒)。此外,已知可以采用载波来携带计算机可读电子数据,例如在发送和接收电子邮件或访问例如因特网或者局域网(LAN)时使用的那些。已经针对几个组件之间的交互描述了前述系统。可以理解,这些系统和组件可以包括那些组件或者指定的子组件,指定的组件或者子组件中的一些,和/或额外的组件,并且根据前述的各种置换和组合。子组件也可以被实施为可通信地耦合到其他组件而非例如根据层次结构安排被包括在双亲组件内的组件。此外,应该注意,一个或更多个组件可以被组合为提供聚合功能的单个组件,或者被划分为几个单独的子组件,并且,可以提供任何一个或更多个中间层,例如管理层,以便可通信地耦合到这些子组件,从而提供整合的功能。这里描述的任何组件也可以与未在这里具体描述、但是本领域技术人员一般已知的一个或更多个其他组件交互。考虑到前面描述的示例系统,参考各种流程图将更好地理解根据所公开的主题可以实施的方法学。虽然出于解释简单的目的,这些方法学被示出和描述为一系列块,但是要体会和理解所请求保护的主题不受这些块的顺序的限制,因为一些块可以按不同的顺序出现,和/或与来自这里绘出和描述的内容的其他块同时出现。在非顺序或者分支的情况下,流程通过流程图示出,可以理解实现相同或者类似结果的各种其他的分支、流路径以及块的顺序可以被实施。而且,为了实施此后描述的方法学,可能不需要所有被示出的块。此外,将会理解,上面公开的系统和下面的方法的各个部分可以包括或由人工智能或者基于知识或规则的组件、子组件、过程、部件、方法学或机制(例如支持向量机、神经网络、专家系统、贝叶斯信念网络、模糊逻辑、数据融合引擎、分类器...)组成。除了别的之外,这些组件可以使某些机制或者由此执行的过程自动化,从而使系统和方法的部分更为自适应以及高效和智能。这里描述了用于将图像帧划分为块的方法,在一个实施例中该方法包括把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。所述方法可以包括把帧划分为相对于多个并行处理通道对角编码的多个4X4块列表。所述方法也可以包括利用GPU把帧划分为相对于多个并行处理通道对角编码的多个4X4块列表。所述方法也可以包括利用GPU把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。所述方法也可以包括通过把数据嵌入小数位来输出数据。所述方法也可以包括通过把数据嵌入小数位来输出数据,并且通过把数据嵌入整数位来输出数据,从而输出第一数据集合。所述方法也可以包括通过利用除法把数据嵌入小数位来输出数据,并且通过利用乘法把数据嵌入整数位来输出数据,从而输出第一数据集合。所述方法也可以包括通过输出第二数据集合而不执行乘法来输出所述第二数据集合。所述方法也可以包括通过对第一数据集合既执行除法也执行乘法来输出第一数据集合。所述方法也可以包括通过对第二数据集合仅执行除法,在第一集合之后输出第二集合。所述方法也可以包括确定块列表的大小并至少部分地基于所确定的大小来决定使用CPU还是GPU来执行处理。这里也描述了用于在计算系统中编码视频的视频编码装置,所述装置包括至少一个用于存储多个视频数据帧的数据存储器;请求编码所述多个帧的应用组件;以及用于响应于所述请求处理所述多个帧的处理组件,所述处理组件被配置成确定块列表的大小并至少部分地基于所确定的大小决定使用CPU还是GPU。所述装置可以被配置成使得所述处理部件还被配置成把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。所述装置可以被配置成使得所述处理组件还被配置成利用GPU把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。所述装置可以被配置成使得所述处理组件被配置成通过利用除法把数据嵌入小数位来输出数据,并且通过利用乘法把数据嵌入整数位来输出数据,从而输出第一数据集合。所述装置可以被配置成使得所述处理组件被配置成通过输出第二数据集合而不执行乘法来输出所述第二数据集合。所述装置可以被配置成使得所述处理组件还被配置成利用GPU把帧划分为多个NXN块列表。所述装置可以被配置成使得所述处理部件还被配置成利用GPU把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。用于在计算系统中编码视频的视频编码装置也在这里公开,所述装置包括用于存储多个视频数据帧的至少一个数据存储器;请求编码所述多个帧的应用组件;以及用于响应于所述请求处理所述多个帧的处理组件,所述处理组件被配置成利用GPU把视频帧划分为多个NXN块列表。所述装置可以被配置成使得所述处理部件还被配置成确定块列表的大小并至少部分地基于所确定的大小决定使用CPU还是GPU来执行处理。这里也公开了用于在计算系统中编码视频的视频编码装置,所述装置包括用于存16储多个视频数据帧的至少一个数据存储器;和,用于响应于所述请求处理所述多个帧的处理组件,所述处理组件被配置成利用GPU把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。虽然已经结合各个附图的优选实施例描述了本发明,但是要理解可以使用其他的类似实施例,或者,可以对所描述的实施例做出修改和添加,用于执行本发明的相同的功能而不从其偏离。虽然示例实施例是指在具体编程语言结构、规范或者标准的上下文中利用本发明,但是本发明不限于此,而是可以用任何语言来实施以执行所述最优化算法和过程。更进一步地,本发明可以在多个处理芯片或者设备中实施或者跨多个处理芯片或者设备实施,并且,存储设备可以类似地跨多个设备实现。因此,本发明不应限于任何单个实施例,而应在宽度和范围上根据所附权利要求来理解。1权利要求一种用于编码视频数据的方法,包含由至少一个中央处理单元(CPU)接收数据的原始帧和数据的重构帧,所述数据的重构帧表示由所述视频数据表示的图像帧序列中的数据的先前帧;由至少一个协处理单元确定块列表数据,所述块列表数据确定在施加于所述原始帧和重构帧的至少一个帧内编码过程内处理N×N块的顺序;以及把所述原始帧、所述重构帧和所述块列表数据发送到至少一个协处理单元,由此所述至少一个协处理单元基于至少所述块列表数据将所述至少一个帧内编码过程的处理并行化。2.如权利要求1所述的方法,还包含由所述至少一个协处理单元基于所述原始帧、所述重构帧或者这两者执行以下处理中的至少一个帧内预测、整数余弦变换、量化、逆量化、反向整数余弦变换或者重构。3.如权利要求2所述的方法,还包含由所述至少一个处理单元确定用于编码的模式。4.如权利要求2所述的方法,还包含由所述至少一个处理单元确定用于编码的残差系数的集合。5.如权利要求2所述的方法,还包含由所述至少一个处理单元从所述原始帧确定重构块。6.如权利要求1所述的方法,还包含把所述原始帧、所述重构帧和所述块列表数据存储在所述至少一个协处理单元的纹理存储器中。7.如权利要求1所述的方法,其中,所述发送包括把所述原始帧、所述重构帧和所述块列表数据发送到至少一个图形处理单元(GPU)。8.一种计算机可读介质,包含用于执行如权利要求1所述方法的计算机可执行指令。9.一种用于把图像帧划分为块的方法,包含接收多个图像帧中的一帧;和把所述帧划分为相对于用于对所述帧的块执行帧内编码的多个并行处理通道对角编码的多个NXN块列表。10.如权利要求9所述的方法,还包含基于至少一个先前的重构帧并按由所述多个NXN块列表规定的顺序,使用所述多个并行处理通道对所述帧的块执行并行化的帧内编码操作。11.如权利要求9所述的方法,其中,所述划分包括把所述帧划分为相对于多个并行处理通道对角编码的多个4X4块列表。12.如权利要求9所述的方法,其中,所述划分包括把所述帧划分为相对于图形处理单元(GPU)的多个并行处理通道对角编码的多个NXN块列表。13.如权利要求9所述的方法,还包括通过以下步骤输出编码数据的第一个集合第一把所述编码数据的一些嵌入整数位存储位置;以及第二把所述编码数据的一些嵌入小数位存储位置。14.如权利要求13所述的方法,其中,所述第一或者第二嵌入所述编码数据包括以下步骤中的至少一个在所述第一或者第二嵌入之前将所述数据乘以或者除以一个值。15.如权利要求9所述的方法,还包括确定块列表的大小,并且对于阈值大小或者更小的情况,使用中央处理单元(CPU)执行所述图像帧的帧内编码,并且对于大于所述阈值大小的情况,使用图形处理单元(GPU)执行所述图像帧的帧内编码。16.如权利要求9所述的方法,其中,所述划分包括在块的每一行引入偏移,以便能够根据经由所述多个并行处理通道执行的帧内编码的并行化过程来重新使用重构块信息。17.一种用于在计算系统中编码视频的视频编码装置,包含至少一个数据存储器,用于存储视频数据的多个帧;和处理组件,用于执行所述多个帧的帧内编码,所述处理组件被配置为确定和要被编码的所述多个帧相关联的、指示处理的顺序的块列表的大小,并且被配置为至少部分地基于所述块列表的大小,利用中央处理单元(CPU)或者图形处理单元(GPU)执行所述帧内编码。18.如权利要求17所述的装置,其中,所述块列表确定对所述多个帧中的帧的块执行帧内编码的步骤的顺序。19.如权利要求17所述的装置,其中,所述处理组件还被配置为把帧划分为相对于多个并行处理通道对角编码的多个NXN块列表。20.一种用于在计算系统中编码视频的视频编码装置,包含用于存储视频数据的多个帧的部件;和用于利用帧内预测信息编码所述多个帧的部件,包括把所述帧的块划分为多个对角编码的有序NXN块列表,供使用并行处理通道来重新使用重构帧数据的部件。全文摘要提供了一种基于GPU的帧内处理技术来选择性地把计算负载从CPU卸载到GPU。通过重新安排4×4块编码顺序,过程可以得益于在GPU上可获得的并行处理机制。块列表大小影响速度,并且通过针对选择使用最佳块列表大小,可以取得帧内处理中高达大约2倍的速度提高。文档编号H04N11/04GK101904174SQ200880119513公开日2010年12月1日申请日期2008年12月4日优先权日2007年12月7日发明者区子廉,龚文长申请人:彩升集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1