CN101123723B - 基于图形处理器的数字视频解码方法 - Google Patents
基于图形处理器的数字视频解码方法 Download PDFInfo
- Publication number
- CN101123723B CN101123723B CN2006100892521A CN200610089252A CN101123723B CN 101123723 B CN101123723 B CN 101123723B CN 2006100892521 A CN2006100892521 A CN 2006100892521A CN 200610089252 A CN200610089252 A CN 200610089252A CN 101123723 B CN101123723 B CN 101123723B
- Authority
- CN
- China
- Prior art keywords
- point
- coefficient
- gpu
- texture
- decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提出了一种基于GPU的压缩视频解码方法。该方法利用点图元而不是矩形来表示视频块,将除变长解码外的所有解码环节成功映射到GPU上,利用CPU将视频数据组织成点集并通过绘制点集的方式完成解码过程。本发明结合了CPU和GPU各自的优势,使两者并行工作加速视频解码过程,同时具有硬件解码的高性能和软件解码的灵活性,可以处理多样的视频压缩格式和标准,能用来替代配备GPU的个人计算机,游戏主机,手持移动设备等上的专用解码硬件,提高硬件资源的利用率,降低成本。
Description
技术领域
本发明属于计算机数字视频压缩领域,具体涉及一种利用图形处理器(GraphicsProcessing Unit-GPU)来完成视频解码的方法。
背景技术
数字视频已经广泛应用于人们的日常生活中,涉及数字电视,个人计算机,手持移动设备以及娱乐,教育等各个领域。对于广大用户来讲,最基本的要求就是对视频内容的高质量实时播放(解码)。但是视频压缩标准为了取得高的压缩率和好的图像质量,需要采用高计算复杂度的视频压缩技术,这直接导致其解码过程需要消耗大量的计算资源。
常见的视频压缩标准大多以16×16大小的宏块为基本的处理单元,参考图1,为完成解码过程,需对每个宏块依次完成以下处理环节:变长解码,反量化,逆离散余弦变换(Inverse Discrete Cosine Transform-IDCT),运动补偿和颜色空间转换。变长解码完成视频比特流的解析,恢复视频的熵编码信息,例如每个宏块的参数,系数和运动向量等,该过程为严格串行的位操作。随后的反量化和IDCT作用在构成宏块的每个系数块上,处理稀疏的DCT系数,用来恢复原始的像素块,该变换过程计算复杂度高。运动补偿是减少视频序列中时间冗余的有效方法,以宏块为基本的单位。该过程在编码阶段的基本原理是在参考帧中搜索一个与当前图像中宏块最相似的图像块,即预测块,搜索结果用运动向量来表示,计算当前宏块和预测块之间的差值,然后将此差值和运动向量加以编码。运动补偿就是通过差值和运动向量恢复出编码图像的过程。由于好的预测往往带来更好的编码效率,因此常见的视频编码系统都采用了双向预测(B帧)和子象素精度运动向量等技术来提高运动估计的准确度。虽然提高了预测精度和压缩率,但是却进一步增加了运算的复杂度。最后的颜色空间转换过程针对图像中的每个像素进行颜色向量(RGB)与变换矩形的乘法运算,为典型的计算密集型过程。由此可见,视频的解码过程是由多个耗时的处理环节所共同构成的复杂系统。
面对高质量和高分辨率视频以及新一代压缩标准(例如H.264)所引入的复杂压缩技术,目前计算机系统中单纯利用CPU的软件解码器甚至无法满足实时解码视频的需求。因此,需要其他的子系统来分担部分解码任务从而缓解CPU的压力。近十年来专用的视频解码硬件被引入到计算机系统中,以独立板卡或集成于图形硬件内的形式出现。微软的DirectX Video Acceleration(DXVA)规范的推广使后者成为目前的主流。但是这种专用解码硬件往往只能针对某种特定的视频压缩标准(大部分为MPEG-2)因而具备非常有限的扩展性和可编程性,缺少足够的灵活性来应对目前多样的视频压缩格式。虽然目前图形卡上已经开始集成可编程的视频处理硬件,例如Nvidia的PureVideo和ATI的Avivo等技术,但是它们需要额外的硬件开销和更高的成本,而且目前缺少有效的高级语言和应用程序接口来方便的控制这些底层硬件资源。
另一方面,随着三维图形应用的发展和推广,图形硬件已经演化成为一种兼具高性能和灵活性的图形处理器,也就是GPU,目前主要的可编程部分包括顶点处理器(Vertex Processor)和像素处理器(Fragment Processor)。这两部分处理单元结合光栅和合成器件构成GPU的流水线处理结构。图形处理器大规模并行所带来的高性能,成熟的高级着色语言所带来的可编程性以及高精度数据类型的支持(32位浮点数)使得GPU成为计算机系统中除CPU外的一个极具吸引力的协处理器,并且可被用于解决图形领域之外的很多通用计算问题(GPGPU),例如数值计算,信号处理,流体模拟等。从体系结构的角度来考虑,GPU是以向量操作为基础的高度并行的流处理器,该结构同一些成功的专用多媒体和视频处理器具有很大的相似形。这些都为在GPU上实现高效的视频解码提供了强有力的支持。
但是GPU从设计到发展都是为了加速图形计算,处理的数据都是相对规整的顶点和像素,所以并不能直接用于相对复杂和多分支的视频解码过程。除了最后的颜色空间转换环节外,GPGPU领域常用的纹理方法并不适用于该解码过程。主要原因在于目前的大多数视频压缩标准都基于宏块/系数块这种组织结构;每个宏块或系数块都有自己特有的参数和属性,彼此有所不同,不便于用规整的单一纹理来表示。一些以纹理表示法为基础的前人工作,例如利用GPU的DCT/IDCT变换,性能同CPU相比并没有优势,而且还存在相当可观的数据传输开销。文献“Acceleratevideo decoding with generic GPU”(Shen G.等,IEEE Transaction on Circuits andSystems for Video Technology,May 2005)利用小矩形来表示宏块,从而完成解码中的运动补偿过程,虽然有效但仍然存在数据冗余等问题。这些方法没有充分利用GPU的计算资源导致性能偏低,并不适用于实用的视频解码系统。
发明内容
本发明的目的是解决目前软硬件解码方案在性能或灵活性上的不足,提出了一种基于GPU的压缩视频解码方法。该方法兼具硬件的高性能和软件的灵活性,适用于多种视频压缩标准,能用来替代配备GPU的个人计算机,游戏主机,手持移动设备等上的专用解码硬件,提高硬件资源的利用率,降低成本。
本发明的上述目的是通过如下的技术方案予以实现的:
一种基于图形处理器的数字视频解码方法,其步骤包括:
1)CPU变长解码得到宏块和系数块,并用图形绘制中的基本图元“点”表示,分别生成宏块对应的宏块点集和系数块对应的DCT系数点集;
2)CPU将宏块点集和DCT系数点集以批处理方式分批送入GPU;
3)绘制宏块点集和DCT系数点集,GPU执行相应的顶点和像素处理程序完成视频解码过程。
本发明将构成视频的基本单位-“宏块和系数块”用图形绘制中的基本图元-“点”来的表示,从而将传统的视频解码过程映射为点集的绘制过程,继而充分发挥出GPU流水线处理和大规模并行处理的优势,取得更高的解码性能。在绘制点集的过程,通过顶点和像素程序来控制GPU上可编程的顶点处理器和像素处理器来完成解码过程中的主要环节:反量化,IDCT,运动补偿和颜色空间转换,并进一步利用GPU上的合成单元(Blending)和纹理过滤单元来分担部分计算任务。该技术方案具体包括以下几个方面:
1)利用点图元而不是矩形来表示视频块信息。工作原理在于利用点的属性(四维向量)如位置,法线和纹理坐标等存储视频中的宏块和系数块的类型,位置,参数,系数等信息。其中宏块和系数块分别对应两类不同的点集:宏块点集和DCT系数点集,分别用于运动补偿和IDCT。其中DCT系数点集的生成过程利用了Zigzag扫描来减少点集中点的个数。考虑到GPU低效的分支处理能力和不同类型的宏块或系数块对应的不同操作过程,在生成DCT系数点集和宏块点集的过程中,利用CPU对两类点集做了进一步的细分,对应同类操作的块被分到一类子集中,例如宏块中所有的非预测宏块(Intra)聚为一类,所有的前向预测宏块(forward)聚为另一类。
2)解码过程中的反量化和IDCT过程通过一次绘制1)中创建的DCT系数点集来完成。其中反量化完全由GPU的顶点处理器完成,而IDCT主要在像素处理器中完成,两者构成流水线结构提高了执行效率。反量化中的量化参数和DCT系数通过点图元的属性送入顶点处理器而量化矩形通过uniform参数预先设置放入顶点处理器的常量寄存器。IDCT过程通过在像素处理单元中线性组合DCT系数和对应的基图像来完成,基图像经预处理后,以纹理的形式存放在GPU的显存中。对于分布于多个点中的属于同一个系数块的DCT系数,利用GPU中的混合器件(blending)累加多个点图元中的结果到IDCT输出缓存中(残差图像纹理)。
3)运动补偿过程通过绘制1)中创建的宏块点集来完成,在像素处理单元中采样参考图像纹理和步骤2)中输出的IDCT输出纹理,累加采样结果并做饱和化运算,完成运动补偿过程。对于子像素精度的运动补偿,利用GPU纹理单元的双线性过滤硬件来实现子像素的插值运算。
本发明的优点可以总结为以下几个方面:
1)该方法结合了CPU和GPU各自的优势,使两者并行工作加速视频解码过程,同时具有硬件解码的高性能和软件解码的灵活性,可以处理多样的视频压缩格式和标准。
2)对比专用的视频硬件,该解决方案基于上层的图形API(如OpenGL)和高级着色语言(如CG和GLSL)可以做到平台无关和系统无关,独立于底层的具体硬件实现,适用于各种配有GPU的系统中,如个人计算机,游戏主机,手机和PDA等。GPU的演化速度快,性能增长幅度远远超过摩尔定律,不断增加新的功能和特性带来更灵活的可编程性,从长远看比CPU软解码和专用硬件更具潜力。
3)该方法用点来表示宏块和系数块,实现简单,控制灵活。对比纹理表示法,基于点的方法仅传输非零系数;对比矩形表示法,消除了矩形中四个顶点的大量冗余数据,从而减少了传输开销,降低了带宽需求。同时,点方法控制灵活,方便剔除未编码块(non-coded block),而且系数块所对应的DCT系数点图元生成过程自动剔除了零系数,减少了不必要的计算。基于点的表示方式,也方便利用GPU处理流水线中的顶点处理器和光栅化硬件,充分挖掘GPU的计算资源。另一方面,利用CPU划分为不同点集的方法,消除了GPU分支处理的瓶颈,提高了性能。
附图说明
下面是对本发明附图的简要说明:
图1是典型的视频解码过程的主要环节示意图。
图2是本发明对应的硬件系统结构图。
图3是数字视频的宏块/块结构的示意图。
图4是本发明通过绘制点集来利用GPU进行视频解码的整体流程图。
图5是本发明中从视频的系数块产生DCT系数点图元的示意图。
图6是DCT基图像形成纹理的示意图。
图7a是IDCT过程的输出缓存的结构示意图。
图7b是运动补偿过程的帧缓存的结构示意图。
图8a是子像素精度运动补偿插值过程的示意图。
图8b是纹理过滤单元双线性插值的示意图。
图9是绘制DCT系数点集完成反量化和IDCT的过程示意图。
图10是绘制宏块点集完成运动补偿的过程示意图。
具体实施方式
下面参照本发明的附图,更详细地描述本发明的最佳实施例。
图2说明了本发明所对应的硬件系统的结构图。本发明需要CPU和GPU合作完成整个解码过程,两者可以并行执行,进一步提高效率。CPU和GPU间通过系统总线相连接,例如PCIE或AGP。总线带宽是个有限资源,数据传输开销是影响整体性能的重要因素。本发明对比现有方法的一个重要优势就在于避免了无用或冗余数据,明显降低了数据传输量。CPU将视频中宏块和系数块的解码所需信息封装进绘制用的点集中,以顶点数组或其他形式暂存于系统内存中,然后通过系统总线传入GPU。GPU是本发明中解码任务的主要执行单元,完成主要的解码任务,要求具有可编程性的顶点和像素处理器以及一定容量的显存用于存放计算数据和中间结果。
本发明提出了一种用点图元表示视频中宏块和系数块,通过图形硬件GPU绘制对应宏块和系数块所对应的点集来实现视频解码的方法。本发明的处理流程如图4所示。下面结合附图详细的说明本发明实现视频解码的具体步骤:
1)CPU变长解码生成视频中宏块和系数块对应的点集。
首先CPU完成变长解码得到视频中宏块和系数块的信息,然后将视频信息封装进点图元的属性中,并根据宏块和系数块的不同类型或处理过程分类到不同的点集中,处理完所有的视频块后,对应的点集以批处理的方式(如顶点数组)分批送入GPU,提高GPU并行和流水线执行的效率。
点集被划分为两个大类:DCT系数点集和宏块点集。这一划分的主要依据是目前压缩视频基于块的构成结构,如图3所示,其中的宏块是运动补偿的基本单位,而构成宏块的系数块是反量化和IDCT的基本单位。两大类点集都可以依据块的类型和特性进一步划分为新的子集。例如DCT系数点集可以根据DCT编码方式的不同进一步划分为场DCT编码点集和帧DCT编码点集;宏块点集可以根据宏块类型细分为非预测宏块(Intra)集,单向预测宏块集和双向预测宏块集等。这些不同类型的视频块往往对应不同的解码处理过程,预先利用CPU分类到子集并分别送入GPU执行,可以避免GPU上耗时的分支操作,提高整体的解码效率。
宏块和系数块中的信息封装进点图元的过程有所不同,但是基本思想都是利用点图元的多个向量属性如位置,法线,颜色,纹理坐标等来存储视频块中的类型,参数,系数等有用信息。
宏块中包含的主要信息为宏块的位置,类型(intra,inter)和运动向量,可以直接放入点图元的向量属性中,从而将宏块转化为点图元。
系数块的主要信息为DCT系数。得益于DCT的能量汇聚特性和量化过程,一个8×8系数块中的64个DCT系数仅有少量非零值分布在低频部分。虽然能够将少量系数直接放入点图元的属性中,但是不同系数块内的系数分布无规律,不利于形成适合GPU处理的规整点集,所以需要对每个系数块中的系数重新组织生成规整的结构。我们利用DCT系数的Zigzag存储形式来生成对应的系数点图元,如图5所示。Zigzag扫描将二维转化为一维形式将非零系数尽可能的集中起来。以Zigzag的一维系数数组为基础,每四个系数为一个组对应点图元中的一个四维属性。为保证点的规整性,每一个或特定多个四维属性放入一个点中,同时装入该组系数在此一维数组中的索引(系数索引),连同系数块的位置,类型,量化参数信息,形成一个DCT系数点图元。该方法的直接结果就是对每个视频块可能产生多个点图元。我们随后利用IDCT过程将分散到不同点中的结果累加起来。
上述点图元的生成方法作用于每帧图像中的所有的宏块和系数块,产生的点集以顶点数组(Vertex Array)的形式存储在系统内存中,然后利用图形API绘制点集,数据以批处理的方式送入GPU完成随后的解码过程。
2)初始化图形API绘制环境。
a)调用API函数设置点图元光栅化后的大小(例如OpenGL中的glPointSize)。绘制DCT系数点集时大小设置为8并激活点精灵方式的纹理生成(Point Sprite ARBExtension),绘制宏块点集时设置为16。对于可变大小的块结构,可以将块的大小存放在点的属性中,改变GPU的顶点处理器中的PSIZE寄存器来实现不同的光栅化大小。
b)在GPU上分配好离屏缓存(off-screen buffer)空间,存放中间输出结果。我们分配了一个IDCT输出缓存和三个帧缓存。为了保证IDCT运算的精度,IDCT的输出缓存为单通道的16位浮点数格式(fp16),亮度和色度分量如图7a所示。由于运动补偿过程需要保留参考帧,三个帧缓存分别用于保存前向参考帧,后向参考帧和当前帧,帧缓存的结构为8位RGB三通道的Unsigned Byte类型,结构如图7b所示,亮度分量保存在R通道中,两个色度分量经过插值后分别保存在G和B通道中。利用GPU的“渲染到纹理”功能,如OpenGL的render to texture extension或FBO,这些缓存可以在渲染完成后直接作为纹理供采样和访问。对于IDCT输出纹理设置纹理过滤模式为“Nearest”;对于用于运动预测的帧缓存设置纹理过滤为“Bilinear”以便纹理采样时自动激活纹理过滤功能用于子像素精度运动补偿;同时设置纹理寻址模式为“Clamp”用于“非受限的运动向量”所需的对图象边缘的像素填充(padding)。
c)处理DCT基图像,合成供GPU采样用的基图像纹理。IDCT变换可以看作是DCT系数和其对应基图像的线性组合,如下列公式所示:
其中的x表示IDCT后的像素块,X(u,v)表示DCT系数块中(u,v)处的系数,T表示DCT变换矩阵,T(u)是该矩阵的第u行,系数(u,v)所应对的基图像通过列向量T(u)T和行向量T(v)的外积生成。上述公式的计算过程为标量和矩阵的乘法运算和矩阵的线性组合运算。该过程的主要优势在于每个系数的计算相对独立,而且可以直接剔除零值系数减少计算量。
基图像纹理生成过程如图7所示。按照Zigzag扫描的次序,每四个系数对应的基图像存放在一个8×8纹理块的RGBA通道中,为了保证IDCT运算的精度,每个颜色通道的数据精度为16位。这样最终可以得到一个32×32大小,16位浮点数精度RGBA格式的纹理。
d)装入对应于绘制DCT系数点集的顶点处理程序(Vertex Program)和像素处理程序(Fragment Program)。通过Uniform参数将量化矩阵装入顶点处理程序,用于反量化。
3)完成准备工作2)后,开始绘制步骤1)生成的DCT系数点集,在绘制过程中GPU完成反量化和IDCT过程,如图9所示。
a)顶点处理器实现反量化。反量化过程本质上是量化步长和系数的乘法运算。操作过程如下:
Xiq(u,v)=qp×QM(u,v)×Xq(u,v)
其中的Xq(u,v)和Xiq(u,v)分别表示反量化前后的DCT系数,qp所表示的量化参数已经通过步骤1)中系数点图元的生成过程放入点的属性中,QM(u,v)表示量化矩阵的对应项,整个量化矩阵已经在步骤2)d)中装入常量寄存器,对应的项(entry)可以通过步骤1)中引入的系数索引获取。由于系数以向量形式存放,顶点处理程序中一次向量乘法可以完成四个系数的反量化过程。
顶点处理程序还可以根据系数索引计算出系数对应的基图像的纹理坐标,并传递到随后的光栅化阶段。
b)光删化阶段根据步骤2)a)中设定的点的大小和顶点处理器输出的位置,将点图元转化为相应位置上指定大小的像素块。同时像素块所覆盖的每个像素都继承了点图元在顶点处理阶段的输出属性。对于系数点集,激活步骤2)a)点精灵纹理生成后,每个像素会生成对应的块内纹理坐标,范围(0,0)-(1,1)。
c)像素处理器结合a)中输出的基图像纹理坐标和b)中形成的块内纹理坐标,可以精确采样每个像素点对应的基图像纹理值。考虑步骤2)c)中的IDCT计算公式。此时已经将标量与矩阵间的乘法运算转换为了像素间的直接运算形式。由于系数和基图像纹理值都以RGBA四维向量的形式存在,像素处理程序中的一次向量点乘操作就可以完成四个系数的乘法和累加,然后输出结果到缓存中。
d)激活GPU硬件的混合功能(Blending),并设置为Add运算。由于步骤1)中每个系数块可能生成的多个系数点图元,通过该步骤每个点图元输出的运算结果可以最终在输出缓存中累加,从而完成步骤2)c)中IDCT计算公式中对所有系数的线性累加。
到此,DCT系数点集的绘制完成,视频中系数块反量化和IDCT后的结果保存在IDCT的输出缓存中,作为残差图像纹理用于随后的运动补偿过程。
4)装入用于运动补偿的顶点和像素处理程序,设置宏块点的大小(16),绘制宏块点集完成运动补偿过程,如图10所示。
a)顶点处理程序主要用于对运动向量进行预处理。根据运动向量的像素精度产生对应的小数部分,以便在纹理采样时利用纹理的双线性过滤硬件自动完成像素的插值。例如对于半像素精度,小数部分为0.5。图8a和图8b简单说明了像素插值和纹理双线性过滤过程。
b)光栅化产生宏块大小的像素块,每个像素都继承a)中输出的运动向量。
c)像素处理程序中,首先利用WPOS寄存器得到每个像素的位置,然后利用运动向量对该位置进行偏移得出对应参考块的纹理坐标。像素处理程序采样参考帧纹理和IDCT输出的残差图像纹理,累加采样值并做饱和化处理,输出结果到帧缓存中。
5)帧缓存中的图像如果需要输出到显示设备上,需要进行颜色空间转化。实现过程为绘制一个图像大小的矩形,利用像素处理程序采样步骤4)c)输出的帧缓存,并对每个像素做颜色变化,并将结果输出显示。最终完成整个解码过程。
上述步骤给出了利用GPU完成视频解码的全部过程,本发明中CPU仅用于生成和组织绘制用的点集,其他所有解码环节都在GPU上完成,最大限度降低了CPU的计算负担;通过将视频中宏块和系数块表示为点图元,整个解码过程高效的映射为点图元的绘制过程,充分发挥了GPU上的计算资源,借助于GPU硬件的并行计算和流水线处理的加速功能,本发明显著提高了视频解码的效率。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容。
Claims (9)
1.一种基于图形处理器的数字视频解码方法,其步骤包括:
1)CPU变长解码得到宏块和系数块,并用图形绘制中的基本图元“点”表示,生成视频块对应的点集;所述宏块中包含的主要信息为宏块的位置,类型和运动向量可以直接放入点图元的向量属性中,所述系数块的主要信息为DCT系数,利用DCT系数的Zigzag存储形式来生成对应的系数点图元,以Zigzag的一维系数数组为基础,每四个系数为一个组对应点图元中的一个四维属性,每一个或特定多个四维属性放入一个点中,同时装入该组系数在此一维数组中的索引,连同系数块的位置,类型,量化参数信息,形成一个DCT系数点图元;
2)CPU将视频块对应的点集以批处理方式分批送入GPU;
3)绘制宏块点集和DCT系数点集,GPU执行相应的顶点和像素处理程序完成解码过程,解码过程中的IDCT过程通过在像素处理单元中线性组合DCT系数和对应的基图像来完成,基图像经预处理后,以纹理的形式存放在GPU的显存中;对于分布于多个点中的属于同一个系数块的DCT系数,利用GPU中的混合器件累加多个点图元中的结果到IDCT输出缓存中;其中运动补偿过程通过创建的宏块点集来完成,在像素处理单元中采样参考图像纹理和IDCT输出纹理,累加采样结果并做饱和化运算,完成运动补偿过程;解码过程中的反量化操作在GPU顶点处理器中完成,量化矩阵通过Uniform参数装入常量寄存器,结合点属性中存储的系数索引和量化参数,利用向量乘法完成反量化。
2.如权利要求1所述的一种基于图形处理器的数字视频解码方法,其特征在于:步骤1)将宏块表示为点图元的方法为,将宏块的解码所需信息存储在点图元的属性中,上述解码所需信息为宏块的位置,类型,运动向量,上述点图元的属性为位置,法线,纹理坐标等向量属性。
3.如权利要求1或2所述的一种基于图形处理器的数字视频解码方法,其特征在于:步骤1)将系数块表示为点图元的方法为,将系数块中的DCT系数存放在点图元的属性中,DCT系数利用CPU预处理生成规整的系数存放结构。
4.如权利要求1所述的基于图形处理器的数字视频解码方法,其特征在于:步骤1)CPU在生成宏块和系数块对应的点图元时,根据宏块和系数块的不同类型和操作过程,预先划分点图元到不同的点集。
5.如权利要求1所述的一种基于图形处理器的数字视频解码方法,其特征在于:步骤3)解码过程中的逆DCT过程是通过DCT系数和对应基图像的线性组合来实现的,基图像生成纹理,并以纹理的形式存放在GPU中。
6.如权利要求5所述的一种基于图形处理器的数字视频解码方法,其特征在于:从基图像生成纹理的过程同权利要求3所述的将系数块表示为点图元的过程相对应,每个四元组系数对应的基图像分别存储在同一个纹理块的RGBA通道中。
7.如权利要求1所述的一种基于图形处理器的数字视频解码方法,其特征在于:步骤3)解码过程中的逆DCT操作过程依次包含以下步骤:
1)顶点处理程序计算基图像的纹理坐标;
2)按照设定的点图元大小光栅化为像素块;
3)像素处理程序采样基图像,并与继承的系数属性做点乘运算;
4)激活GPU混合功能并设置为加法操作,累加不同点图元中的计算结果,输出到预测残差图像纹理。
8.如权利要求1所述的一种基于图形处理器的数字视频解码方法,其特征在于:步骤3)解码过程中的运动补偿过程依次包含以下步骤:
1)顶点处理程序根据预测精度处理运动向量,设置对应的小数部分;
2)光栅化宏块点图元为像素块;
3)像素处理程序根据运动向量计算参考块在参考帧中的纹理坐标,采样参考帧和权利要求7步骤4)输出的预测残差图像纹理,累加结果并做饱和化操作。
9.如权利要求8所述的一种基于图形处理器的数字视频解码方法,其特征在于:所述采样参考帧过程是利用了GPU纹理单元的双线性过滤功能来完成子像素精度运动补偿所需要的插值运算。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN2006100892521A CN101123723B (zh) | 2006-08-11 | 2006-08-11 | 基于图形处理器的数字视频解码方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN2006100892521A CN101123723B (zh) | 2006-08-11 | 2006-08-11 | 基于图形处理器的数字视频解码方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN101123723A CN101123723A (zh) | 2008-02-13 |
| CN101123723B true CN101123723B (zh) | 2011-01-12 |
Family
ID=39085869
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN2006100892521A Expired - Fee Related CN101123723B (zh) | 2006-08-11 | 2006-08-11 | 基于图形处理器的数字视频解码方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN101123723B (zh) |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101577110B (zh) * | 2009-05-31 | 2012-04-25 | 腾讯科技(深圳)有限公司 | 视频播放方法及视频播放器 |
| CN102164284A (zh) * | 2010-02-24 | 2011-08-24 | 富士通株式会社 | 视频解码方法和系统 |
| CN102158694B (zh) * | 2010-12-01 | 2012-12-26 | 航天恒星科技有限公司 | 一种基于gpu的遥感图像解压缩方法 |
| CN102904857A (zh) * | 2011-07-25 | 2013-01-30 | 风网科技(北京)有限公司 | 客户端视频播放系统及其方法 |
| CN102404576A (zh) * | 2011-11-30 | 2012-04-04 | 国云科技股份有限公司 | 云终端解码器及其负载均衡算法和gpu的解码算法 |
| CN102497550A (zh) * | 2011-12-05 | 2012-06-13 | 南京大学 | H.264编码中运动补偿插值的并行加速方法及装置 |
| CN108924563B (zh) * | 2011-12-19 | 2022-11-15 | 索尼公司 | 图像处理设备和方法 |
| CN102547289B (zh) * | 2012-01-17 | 2015-01-28 | 西安电子科技大学 | 基于gpu并行实现的快速运动估计方法 |
| CN102932003B (zh) * | 2012-09-07 | 2016-05-04 | 上海交通大学 | 基于gpu架构的qc-ldpc码的加速译码方法 |
| CN103077688B (zh) * | 2013-01-11 | 2015-02-18 | 北京京东方光电科技有限公司 | 一种液晶显示屏的源极驱动装置和源极驱动方法 |
| CN103108186A (zh) * | 2013-02-21 | 2013-05-15 | 中国对外翻译出版有限公司 | 实现视频高清传播的方法 |
| CN104104958B (zh) * | 2013-04-08 | 2017-08-25 | 联发科技(新加坡)私人有限公司 | 图像解码方法及其图像解码装置 |
| CN104143334B (zh) * | 2013-05-10 | 2017-06-16 | 中国电信股份有限公司 | 可编程图形处理器及其对多路音频进行混音的方法 |
| CN103327413A (zh) * | 2013-06-26 | 2013-09-25 | 四川长虹电器股份有限公司 | 一种在智能电视中实现alpha动画的方法 |
| CN103427844B (zh) * | 2013-07-26 | 2016-03-02 | 华中科技大学 | 一种基于gpu和cpu混合平台的高速无损数据压缩方法 |
| CN104519353B (zh) * | 2013-09-29 | 2019-02-05 | 联想(北京)有限公司 | 图像处理方法和电子设备 |
| CN104702954B (zh) * | 2013-12-05 | 2017-11-17 | 华为技术有限公司 | 视频编码方法及装置 |
| US9693077B2 (en) * | 2013-12-13 | 2017-06-27 | Qualcomm Incorporated | Controlling sub prediction unit (sub-PU) motion parameter inheritance (MPI) in three dimensional (3D) HEVC or other 3D coding |
| CN103841389B (zh) * | 2014-04-02 | 2015-10-21 | 北京奇艺世纪科技有限公司 | 一种视频播放方法及播放器 |
| US10666960B2 (en) | 2014-11-14 | 2020-05-26 | Lg Electronics Inc. | Method and device for performing graph-based transform using generalized graph parameter |
| CN104836970B (zh) * | 2015-03-27 | 2018-06-15 | 北京联合大学 | 基于gpu实时视频处理的多投影融合方法和系统 |
| CN105120293B (zh) * | 2015-08-26 | 2018-07-06 | 中国航空工业集团公司洛阳电光设备研究所 | 基于cpu和gpu的图像协同解码方法及装置 |
| CN105678681A (zh) * | 2015-12-30 | 2016-06-15 | 广东威创视讯科技股份有限公司 | Gpu数据处理方法、gpu、pc架构处理器及gpu数据处理系统 |
| CN105787987B (zh) * | 2016-03-15 | 2019-07-30 | 广州爱九游信息技术有限公司 | 一种纹理处理方法及电子设备 |
| CN107239268A (zh) * | 2016-03-29 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 一种业务处理方法、装置和智能终端 |
| US10237566B2 (en) | 2016-04-01 | 2019-03-19 | Microsoft Technology Licensing, Llc | Video decoding using point sprites |
| US10575007B2 (en) | 2016-04-12 | 2020-02-25 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of blocks in a graphics pipeline |
| US10157480B2 (en) | 2016-06-24 | 2018-12-18 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of inter-coded blocks in a graphics pipeline |
| CN106210726A (zh) * | 2016-08-08 | 2016-12-07 | 成都佳发安泰科技股份有限公司 | 根据cpu与gpu的使用率对视频数据进行自适应解码的方法 |
| CN106331852A (zh) * | 2016-09-13 | 2017-01-11 | 武汉斗鱼网络科技有限公司 | 一种用于wp手机进行h264硬件解码的方法及系统 |
| US11197010B2 (en) | 2016-10-07 | 2021-12-07 | Microsoft Technology Licensing, Llc | Browser-based video decoder using multiple CPU threads |
| CN106504185B (zh) * | 2016-10-26 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 一种渲染优化方法和装置 |
| CN106792066A (zh) * | 2016-12-20 | 2017-05-31 | 暴风集团股份有限公司 | 优化的视频解码播放的方法及系统 |
| CN107172432A (zh) | 2017-03-23 | 2017-09-15 | 杰发科技(合肥)有限公司 | 一种视频处理方法、装置及终端 |
| CN109005160A (zh) * | 2018-07-10 | 2018-12-14 | 广州虎牙信息科技有限公司 | 视频解码方法、装置及计算机可读存储介质、终端 |
| CN109408028B (zh) * | 2018-09-21 | 2021-03-05 | 东软集团股份有限公司 | 浮点数运算方法、装置及存储介质 |
| CN111464773A (zh) * | 2020-04-08 | 2020-07-28 | 湖南泽天智航电子技术有限公司 | 一种多路视频显示方法及系统 |
-
2006
- 2006-08-11 CN CN2006100892521A patent/CN101123723B/zh not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| CN101123723A (zh) | 2008-02-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101123723B (zh) | 基于图形处理器的数字视频解码方法 | |
| US7565021B2 (en) | Efficient implementation of block-based transform on graphics processing unit | |
| US10783698B2 (en) | Point cloud operations | |
| US10719447B2 (en) | Cache and compression interoperability in a graphics processor pipeline | |
| CN102752594B (zh) | 一种基于图像编解码与传输并行的集群渲染方法 | |
| US10008034B2 (en) | System, method, and computer program product for computing indirect lighting in a cloud network | |
| US20140153635A1 (en) | Method, computer program product, and system for multi-threaded video encoding | |
| US10140732B2 (en) | Method and apparatus for efficient texture compression | |
| CN111402380B (zh) | 一种gpu压缩纹理处理方法 | |
| WO2017172053A2 (en) | Method and apparatus for multi format lossless compression | |
| US10397542B2 (en) | Facilitating quantization and compression of three-dimensional graphics data using screen space metrics at computing devices | |
| CN102158694A (zh) | 一种基于gpu的遥感图像解压缩方法 | |
| WO2017105595A1 (en) | Graphics processor logic for encoding increasing or decreasing values | |
| CN101754039A (zh) | 面向移动设备的3d参数解码系统 | |
| JP7676447B2 (ja) | デルタトリプレットインデックス圧縮 | |
| CN101415117A (zh) | 基于gpgpu的高真实感图像的传输方法 | |
| US11978234B2 (en) | Method and apparatus of data compression | |
| CN102572436B (zh) | 一种基于cuda实现的帧内压缩方法 | |
| US10198850B2 (en) | Method and apparatus for filtering compressed textures | |
| Datla et al. | Parallelizing motion JPEG 2000 with CUDA | |
| JP2017536740A (ja) | ハイブリッドブロックベースの圧縮 | |
| US20080049041A1 (en) | Drawing device, drawing method, and drawing program | |
| Kwan et al. | Packing vertex data into hardware-decompressible textures | |
| Han et al. | Efficient video decoding on GPUs by point based rendering | |
| CN120186364A (zh) | 基于压缩感知的gpu渲染纹理图像压缩传输方法及系统 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| C17 | Cessation of patent right | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110112 Termination date: 20130811 |