专利名称:视频解码方法和系统的制作方法
技术领域:
本发明涉及视频处理领域,更具体地涉及一种使用可编程图形处理单元进行视频解码的视频解码方法和系统。
背景技术:
在传统的桌面或手持设备中,视频解码通常由中央处理单元(CPU)执行。对于不具有强大CPU的系统而言,对高清(HD)视频进行解码是非常困难的。为了对HD视频进行解码,一个解决方案是在这种系统中添加专用的视频解码芯片,但是这种方案成本太高;另一种解决方案在这种系统中设置图形处理单元(GPU),由GPU来完成部分解码任务。利用GPU来加速HD视频解码已经有一定的历史。图形芯片商已经提供了数代GPU 来支持桌面设备的HD视频解码。然而,目前还不存在用于手持式嵌入设备的加速HD视频解码的方法/系统。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种新颖的视频解码方法和系统。根据本发明实施例的视频解码方法包括通过利用中央处理单元对一帧画面的编码视频数据进行变长解码和反扫描,获取变长解码和反扫描后的视频数据;通过利用可编程图形处理单元对变长解码和反扫描后的视频数据进行反量化、反离散余弦变换、运动补偿以及色彩空间转换,获取完成解码后的视频数据。根据本发明实施例的视频解码系统包括中央处理单元,用于通过对一帧画面的视频数据进行变长解码和反扫描,获取变长解码和反扫描后的视频数据;可编程图形处理单元,用于通过对变长解码和反扫描后的视频数据进行反量化、反离散余弦变换、运动补偿以及色彩空间转换,获取完成解码后的视频数据。本发明利用可编程图形处理单元来对需要解码的视频数据进行IQ、IDCT、MC以及 CSC处理,而将可变长度解码(VLD)和反扫描(1 处理留给CPU进行,大大减轻了 CPU的计算负荷,从而提高了视频解码的速度。
从下面结合附图对本发明的具体实施方式
的描述中可以更好地理解本发明,其中图1示出了根据本发明实施例的视频解码方法和系统的逻辑图;图2示出了根据本发明实施例的遵循OpenGL ES 2. 0 (其是一种嵌入式3D图形算法标准)的可编程图形流水线;图3示出了由图2中的片断着色器实现的IQ着色器的逻辑图;图4示出了由图2中的片断着色器实现的IDCT着色器的逻辑图5示出了由IDCT着色器实现的IDCT处理方法的示意图;图6示出了由图2中的片断着色器实现的MC着色器的逻辑图;图7示出了由图2中的片断着色器实现的CSC着色器的逻辑图。
具体实施例方式下面将详细描述本发明各个方面的特征和示例性实施例。下面的描述涵盖了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说显而易见的是, 本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更清楚的理解。本发明绝不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了相关元素、部件和算法的任何修改、替换和改进。由于在MPEG-2视频解码中按照从左到右、从上到下的顺序对宏块(MB)进行处理, 所以MPEG-2视频解码系统中的坐标系χ轴指向右,y轴指向下。而在OpenGL ES 2. 0 (其是Khronos Group在2007年3月份制定的一种业界标准应用程序编程接口,可以大大提高不同消费电子设备的三维图形渲染速度,在嵌入式系统上实现了全面可编程的三维图形) 中,坐标系χ轴指向右,y轴指向上。图1示出了根据本发明实施例的视频解码方法和系统的逻辑图。如图1所示,该视频解码方法和系统在逻辑上包括变长解码(VLD)、反扫描(IS)、反量化(IQ)、反离散余弦变换(IDCT)、运动补偿(MC)以及色彩空间转换(CSC)处理102 114。除了 CSC处理以外的所有处理都遵循MPEG-2标准。具体地,该视频解码方法和系统对需要解码的一帧(或者一场)画面的视频数据进行解码,并将解码后的视频数据发送给显示器以显示该一帧画面。也就是说,该视频解码方法和系统逐画面地对视频数据流进行解码处理。在图1中,VLD 和IS处理将在CPU 116中完成,VLD和IS处理后的视频数据被存储在应用存储器120中。 应用存储器也可以被称为CPU存储器、用户空间存储器或客户存储器。在VLD和IS处理后的视频数据被从应用存储器传递到图形存储器122后,IQ、IDCT、MC以及CSC处理将在GPU 118中完成(主要由GPU中的片断着色器完成)。在图形术语中,图形存储器通常被称为主机存储器。由于IQ、IDCT、MC以及CSC处理都是以像素块或者像素为基础执行的,并且一帧画面中的所有像素块或像素都将经受相同的处理,所以IQ、IDCT、MC以及CSC处理可以在GPU 中实现。另外,由于上述这些处理是以向量或矩阵为基础的,所以可以加快解码速度。图2示出了根据本发明实施例的遵循OpenGL ES 2. 0的可编程图形流水线。该流水线包括顶点着色器202、图元装配单元204、栅格化单元206、片断着色器208、以及逐片断操作单元210。其中,顶点着色器和片断着色器是可编程的,其他单元是固定功能。由可编程着色器实现的GPU被称为可编程GPU。下面详细描述图2所示的可编程图形流水线的具体处理过程。在图2中,一帧画面(该帧画面可以看作一个矩形块)的坐标(即,该帧画面的四个顶点的位置坐标和纹理坐标)被发送给顶点缓存(其由顶点着色器202使用)。顶点着色器对该帧画面的四个顶点逐一进行处理。在OpenGL ES 2. 0中,顶点着色器进行的处理包括对顶点坐标进行平移、 旋转、透视变换等几何操作,为顶点计算光照值或生成纹理坐标等,但是在本发明中,这些操作都不会使用,唯一要做的就是保持顶点的位置坐标不变。图元装配单元所完成的操作包括裁剪、透视除法、以及视图变换等,这些操作能将该帧画面的大小设置为期望尺寸。栅格化单元完成图元的栅格化过程,将该帧画面所对应的两个三角形图元用片段进行填充, 这里一个片段包含对应的像素以及附属的信息。在图元装配单元和栅格化单元的处理之后,图形流水线生成将由片断着色器进行处理的片断。在片段着色器的使用过程中,该帧画面的视频数据将被作为纹理对象发送给纹理存储器(其由片断着色器使用)。片段着色器对每个片段进行IQ、IDCT、MC和CSC处理过程,然后每个片段被送入逐片段操作单元。逐片段操作单元对每个片段进行裁剪框检测、模板缓冲区检测、深度缓冲区检测、混色、以及抖动操作,这些操作能将片段转化为可见的像素,以用于显示。在以上图形流水线的每个阶段,产生的结果被存储到帧缓存中。帧缓存可以是与将要描画的表面或者纹理对象有关的图形缓存。帧缓存中的这些纹理对象也可以被用作纹理存储器中的对象。当然,OpenGL ES 2.0 API可以控制顶点缓存对象、流水线中的着色器、 纹理存储器中的纹理对象、以及帧缓存。由于片断着色器可以更灵活地访问图形存储器并且具有更多的计算资源,所以在根据本发明实施例的视频解码处理中,IQ、IDCT、MC以及CSC处理由片断着色器完成。其中,每帧画面将被作为一个矩形进行处理。每个矩形包括两个三角形,这两个三角形都可以被画为三角形扇或者三角形条带。图3示出了由图2中的片断着色器实现的IQ着色器的逻辑图。当片断着色器充当IQ着色器对需要解码的一帧画面中的某个像素的亮度/色度值进行IQ处理时,所需的信息包括该像素的亮度值、色度值、量化矩阵值、IQ符号值、该像素所在MB的MB类型指示值以及量化缩放值。IQ着色器所需的这些信息包括在VLD和IS处理后的视频数据中,并且经由RGBA(红-绿-蓝-透明度)通道(每个通道具有8个比特,并且这8比特数据没有正负之分,即都为正)被从应用存储器传递到图形存储器。需要解码的一帧画面中每个像素的亮度值和色度值可以被以RGBA格式发送给IQ着色器。当由于需要解码的一帧画面中的某个像素的亮度或色度值大于255(8比特都取 1)而导致该像素的亮度或色度值无法经由RGBA通道从应用存储器传递到图形存储器时, 可以将这个像素的亮度或色度值划分为高位值和低位值,其中,高位值为亮度或色度值除以255所得的商的整数部分,低位值为亮度或色度值除以255所得的余数,高位值和低位值中的每个值都不大于255。在本实施例中,可以利用RGBA格式将需要解码的一帧图像中的任意一个像素的亮度或色度值、量化矩阵值以及IQ符号值打包为以下的向量形式从应用存储器传递到图形存储器(高位值,低位值,量化矩阵值,IQ符号值),这里每个分量占用 8比特。对于IQ符号值,0表示IQ符号为正,1表示IQ符号为负。并且可以将需要解码的一帧图像中的任意一个像素所在的MB的MB类型指示值和量化缩放值打包为以下的向量形式从应用存储器传递到图形存储器(MB类型指示值,量化缩放值),这里每个分量占用8比特。对于MB类型指示值,0表示帧内编码MB,1表示其他编码方式MB。在本实施例中,需要解码的一帧画面的每个像素的亮度值(Y)、红色色度值(Cr)、 蓝色色度值(Cb)被打包为RGBA格式从应用存储器传递到图形存储器。对于每一个像素而言,其Y值、Cr值和Cb值被单独处理。同时,每个像素所在MB的MB类型指示值、量化缩放值也被从应用存储器传递到图形存储器。这里为了便于说明,将一个像素的亮度值、红色色度值以及蓝色色度值记为(Y0,CrO, CbO)。具体地,对于需要解码的一帧画面中的任意一个像素,IQ着色器从图形存储器中采样出该像素的Y值、Cr值和Cb值。如上所述,采样出的是与该像素的Y值、Cr值或Cb值相关联的向量(高位值、低位值、量化矩阵值、IQ符号值)。下面以某个像素的Y值的反量化过程为例进行说明。IQ着色器对某个像素的Y值进行反量化的过程包括1)结合与该像素的Y值有关的向量中的高位和低位值,计算该像素的Y值的绝对值,即|Y| =高位值X255+低位值;幻当该像素的量化矩阵值等于0时,直接将Y值的绝对值作为该像素的反量化后的Y值的绝对值,当该像素的量化矩阵值不等于0 时,利用以下等式来求解该像素的反量化后的Y值的绝对值tempData = ((data*2. 0+mb_ type) *qmatVal*scale) /32. 0,其中tempData表示该像素的反量化后的Y值的绝对值,data 表示该像素的Y值的绝对值,mb_type表示该像素所在MB的MB类型指示值,qmatVal表示该像素的量化矩阵值,scale表示该像素所在MB的量化缩放值;幻将该像素的IQ符号值作为该像素的反量化后的Y值的符号值。由于该像素的反量化后的Y值的绝对值可能会大于 255,所以这里将该像素的反量化后的Y值打包为以下的向量形式(高位值,低位值,0. 0, IQ符号值),其中高位值为该像素的反量化后的Y值的绝对值除以255所得的商的整数部分,低位值为该像素的反量化后的Y值的绝对值除以255所得的余数。需要说明的是,对像素的Cr和Cb值的反量化也可以通过以上过程实现。IQ着色器在完成某个像素的Y值、Cr值和Cb值的反量化后,将该像素的量化后的Y值、Cr值和Cb 值存储在帧缓存中。这里为了便于说明,将一个像素的反量化后的Y值、Cr值和Cb值记为 (Yl,Crl, Cbl)。在本实施例中,为了处理方便,对于任意一个像素,IQ着色器将该像素的反量化后的亮度/色度值的绝对值和该像素的反量化符号值打包为以下格式(高位值,低位值, 0. 0,反量化符号值),其中高位值是通过用该像素的反量化后的亮度/色度值的绝对值除以255所得的商的整数部分,低位值是通过用该像素的反量化后的亮度/色度值的绝对值除以255所得的余数值。图4示出了由图2中的片断着色器实现的IDCT着色器的逻辑图。IDCT着色器具有类似于IQ着色器的逻辑结构。片断着色器充当IDCT着色器时,使用IQ着色器生成的、存储在帧缓存中的各个像素的IQ后的亮度值和色度值。对于每一个像素来说,其Yl值、Crl 值和Cbl值被单独处理。在本实施例中,需要解码的一帧画面由多个8x8像素块组成。任意一个8x8像素块中的任意一个像素在该一个8x8像素块中的位置由该像素的位置坐标表示,并且一个8x8 像素块中的像素的位置坐标独立于其他8x8像素块中的像素的位置坐标。例如,任意一个8x8像素块A中的各个像素的反量化后的亮度/色度值按照各个
_Z)0 D;
像素在8x8像素块A中的位置组成了 8x8亮度/色度值矩阵
D =
。用于8x8像素
块A的IDCT系数矩阵的转置矩阵为τ
Cr--
C C
A D3
。其中,DO D3和CO C3中的每一个
C11 C3
都具有4x4个元素。 IDCT着色器可以通过以下处理来获取8x8像素块A中的例如位置坐标为(dx,dy)的一个像素的反离散余弦变换后的亮度值(参见图5所示)1)通过将8x8像素块A中的各个像素的IQ后的Y值组成的8x8亮度值矩阵D的各行(S卩,第0行至第7行)与用于8x8 像素块A的反离散余弦变换系数矩阵C的转置矩阵Ct的各行点乘,获取中间矩阵TR ;2)通过将中间矩阵TR的第dy列与反离散余弦变换系数矩阵C的转置矩阵Ct的第dx行点乘,获取位置坐标为(dx,dy)的像素的反离散余弦变换后的亮度/色度值。这里为了便于说明, 将一个像素的IDCT后的亮度值、红色色度值以及蓝色色度值记为(Y2,Cr2, Cb2)。需要解码的一帧画面中的各个像素的IDCT后的亮度/色度值将被限制在[-256, 255]的范围内。在本实施例中,当一个像素的反离散余弦变换后的亮度/色度值为-256以外的其他值时,IDCT着色器将该像素的反离散余弦变换后的亮度/色度值表示为(反离散余弦变换后的亮度/色度值的绝对值,0. 0,0. 0,反离散余弦变换后的亮度/色度值的符号值)。当一个像素的反离散余弦变换后的亮度/色度值为-256时,IDCT着色器将该像素的反离散余弦变换后的亮度/色度值表示为(1. 0,1. 0,0. 0,1. 0)。图6示出了由图2中的片断着色器实现的MC着色器的逻辑图。MC着色器的逻辑结构比IQ着色器和IDCT着色器复杂一些。片断着色器充当MC着色器时,使用IDCT着色器生成的、存储在帧缓存中的各个像素的IDCT后的亮度值和色度值。对于每一个像素来说, 其Y2值、Cr2值和Cb2值被单独处理。这里为了便于说明,将一个像素的MC后的亮度值、 红色色度值以及蓝色色度值记为(Y3,Cr3,Cb3)。当片断着色器充当MC着色器对需要解码的一帧画面中的某个像素的亮度/色度值进行MC处理时,所需的信息包括需要解码的一帧画面中的每个宏块是否为预测编码宏块的信息、需要解码的一帧画面中的每个预测编码宏块的参考方向信息、需要解码的一帧画面中的每个宏块的运动矢量信息、需要解码的一帧画面中的每个宏块是场离散余弦变换编码宏块还是帧离散余弦变换编码宏块的信息、需要解码的一帧画面的场选择信息、以及需要解码的一帧画面中的每个宏块的参考帧的场选择信息。MC着色器所需的这些信息包括在VLD和IS处理后的视频数据中,并且经由RGBA通道被从应用存储器传递到图形存储器。对于需要解码的一帧画面中的任意一个像素,如果该像素所在宏块不是预测编码宏块,则MC着色器通过将该像素的反离散余弦变换后的亮度/色度值与1 相加,来获取该像素的运动补偿后的亮度/色度值。对于需要解码的一帧画面中的任意一个像素,如果该像素所在宏块是预测编码宏块,则MC着色器可以通过以下处理对该像素的反离散余弦变换后的亮度/色度值进行运动补偿1)根据该像素所在宏块的参考方向信息、运动矢量信息、场选择信息、以及运动矢量场选择信息,获取位于该像素所在宏块的参考帧上、且对应于该像素的另一个像素的完成解码后的亮度/色度值;幻通过将另一个像素的完成解码后的亮度/色度值与该像素的反离散余弦变换后的亮度/色度值相加,来获取该像素的运动补偿后的亮度/色度值。图7示出了由图2中的片断着色器实现的CSC着色器的逻辑图。CSC着色器具有类似于IQ着色器和IDCT着色器的逻辑结构。由于MC处理结果可能不是直接描画的帧(诸如,I帧和P帧),所以MC结果需要在图形存储器中被重新排序和更新。如果一个画面帧是 I帧(帧内编码帧)或者P帧(前向预测帧),则位于它前面的一个I帧或P帧将被作为描画帧,如果一个画面帧是B帧(双向预测帧),则也被设置为描画帧。描画帧需要通过以下处理对其上的每个像素的亮度/色度值进行色彩空间转换通过将由一个像素的运动补偿后的亮度值、色度值和1组成的向量与色彩空间转换矩阵相乘,来获取该像素的色彩分量。需要注意的是,对于一个画面帧上的所有像素使用的色彩空间转换矩阵是相同的一个矩阵。综上所述,本发明提供了一种基于计算机图形学的OpenGL ES 2. 0 (嵌入式3D图形算法标准),利用可编程图形处理单元(GPU)对MPEG-2视频进行解码的技术。本发明可以被用在装配有支持0penGLES2. 0的GPU的手持式嵌入设备中。通过本发明提供的视频解码方法和系统,可以执行大部分高清视频解码任务,并可以减轻主CPU的计算负荷。以上已经参考本发明的具体实施例来描述了本发明,但是本领域技术人员均了解,可以对这些具体实施例进行各种修改、组合和变更,而不会脱离由所附权利要求或其等同物限定的本发明的精神和范围。根据需要可以用硬件或软件来执行步骤。注意,在不脱离本发明范围的前提下,可向本说明书中给出的流程图添加步骤、从中去除步骤或修改其中的步骤。一般来说,流程图只是用来指示用于实现功能的基本操作的一种可能的序列。本发明的实施例可利用编程的通用数字计算机、利用专用集成电路、可编程逻辑器件、现场可编程门阵列、光的、化学的、生物的、量子的或纳米工程的系统、组件和机构来实现。一般来说,本发明的功能可由本领域已知的任何手段来实现。可以使用分布式或联网系统、组件和电路。数据的通信或传送可以是有线的、无线的或者通过任何其他手段。还将意识到,根据特定应用的需要,附图中示出的要素中的一个或多个可以按更分离或更集成的方式来实现,或者甚至在某些情况下被去除或被停用。实现可存储在机器可读介质中的程序或代码以允许计算机执行上述任何方法,也在本发明的精神和范围之内。此外,附图中的任何信号箭头应当被认为仅是示例性的,而不是限制性的,除非另有具体指示。当术语被预见为使分离或组合的能力不清楚时,组件或者步骤的组合也将被认为是已经记载了。
权利要求
1.一种视频解码方法,包括通过利用中央处理单元对一帧画面的编码后的视频数据进行变长解码和反扫描,获取变长解码和反扫描后的视频数据;通过利用可编程图形处理单元对变长解码和反扫描后的视频数据进行反量化、反离散余弦变换、运动补偿以及色彩空间转换,获取完成解码后的视频数据。
2.根据权利要求1所述的视频解码方法,其特征在于,所述变长解码和反扫描后的视频数据包括以下信息所述一帧画面中的每个像素的亮度值、色度值、量化矩阵值和反量化符号值、以及所述一帧画面中的每个宏块的宏块类型指示值和量化缩放值。
3.根据权利要求2所述的视频解码方法,其特征在于,所述一帧画面中的每个像素的亮度/色度值、量化矩阵值和反量化符号值被打包为以下格式(第一高位值,第一低位值, 量化矩阵值,反量化符号值),其中,所述第一高位值是通过用所述一帧画面中的每个像素的亮度/色度值除以255所得的商的整数部分,所述第一低位值是通过用所述一帧画面中的每个像素的亮度/色度值除以255所得的余数值。
4.根据权利要求2所述的视频解码方法,其特征在于,所述一帧画面中的每个宏块的宏块类型指示值和量化缩放值被打包为以下格式(宏块类型指示值,量化缩放值,0. 0, 0. 0)。
5.根据权利要求2所述的视频解码方法,其特征在于,对所述一帧画面中的任意一个像素的亮度/色度值进行反量化的处理包括判断所述一个像素的量化矩阵值是否等于0 ;如果等于0,则保持所述一个像素的亮度/色度值不变,否则根据以下等式对所述一个像素的亮度/色度值的绝对值进行反量化tempData = ((data*2. 0+mb_ type)氺qmatVal氺scale) /32. 0,其中tempData表示所述一个像素的反量化后的亮度/色度值的绝对值,data表示所述一个像素的亮度/色度值的绝对值,mb_type表示所述一个像素所在宏块的宏块类型指示值, qmatVal表示所述一个像素的量化矩阵值,scale表示所述一个像素所在宏块的量化缩放值,其中,宏块类型指示值0指示帧内编码宏块,宏块类型指示值1指示帧内编码方式以外的编码方式的宏块。
6.根据权利要求5所述的视频解码方法,其特征在于,对所述一帧画面中的任意一个像素的亮度/色度值进行反量化的处理还包括将所述一个像素的反量化符号值作为所述一个像素的反量化后的亮度/色度值的符号值,并将所述一个像素的反量化后的亮度/色度值的绝对值和所述一个像素的反量化符号值打包为以下格式(第二高位值,第二低位值,0. 0,反量化符号值),其中,所述第二高位值是通过用所述一个像素的反量化后的亮度/色度值的绝对值除以255所得的商的整数部分,所述第二低位值是通过用所述一个像素的反量化后的亮度/色度值的绝对值除以 255所得的余数值。
7.根据权利要求2所述的视频解码方法,其特征在于,所述一帧画面由多个8x8像素块组成,所述多个8x8像素块中的任意一个8x8像素块中的任意一个像素在所述一个8x8像素块中的位置由所述一个像素的位置坐标表示,并且所述一个8x8像素块中的像素的位置坐标独立于所述多个8x8像素块中的其他8x8像素块中的像素的位置坐标。
8.根据权利要求7所述的视频解码方法,其特征在于,所述一个8x8像素块中的各个像素的反量化后的亮度/色度值按照各个像素在所述一个8x8像素块中的位置组成了一个 8x8亮度/色度值矩阵D,其中,获取所述一个8x8像素块中的位置坐标为(dx,dy)的一个像素的反离散余弦变换后的亮度/色度值的处理包括通过将所述一个8x8亮度/色度值矩阵D的各行与反离散余弦变换系数矩阵C的转置矩阵Ct的各行点乘,获取中间矩阵TR ;通过将所述中间矩阵TR的第dy列与所述反离散余弦变换系数矩阵C的转置矩阵Ct的第dx行点乘,获取位置坐标为(dx,dy)的所述一个像素的反离散余弦变换后的亮度/色度值。
9.根据权利要求8所述的视频解码方法,其特征在于,当所述一个像素的反离散余弦变换后的亮度/色度值为-256以外的其他值时,所述一个像素的反离散余弦变换后的亮度/色度值被表示为(反离散余弦变换后的亮度/色度值的绝对值,0. 0,0. 0,反离散余弦变换后的亮度/色度值的符号值),当所述一个像素的反离散余弦变换后的亮度/色度值为-256时,所述一个像素的反离散余弦变换后的亮度/色度值被表示为(1. 0,1. 0,0. 0,1. 0)。
10.根据权利要求2所述的视频解码方法,其特征在于,所述变长解码和反扫描后的视频数据进一步包括以下信息所述一帧画面中的每个宏块是否为预测编码宏块的信息、所述一帧画面中的每个预测编码宏块的参考方向信息、所述一帧画面中的每个宏块的运动矢量信息、所述一帧画面中的每个宏块是场离散余弦变换编码宏块还是帧离散余弦变换编码宏块的信息、所述一帧画面的场选择信息、和所述一帧画面中的每个宏块的参考帧的场选择信息。
11.根据权利要求10所述的视频解码方法,其特征在于,对于所述一帧画面中的任意一个像素,如果所述一个像素所在宏块不是预测编码宏块,则通过将所述一个像素的反离散余弦变换后的亮度/色度值与1 相加,来获取所述一个像素的运动补偿后的亮度/色度值。
12.根据权利要求10所述的视频解码方法,其特征在于,对于所述一帧画面中的任意一个像素,如果所述一个像素所在宏块是预测编码宏块,则对所述一个像素的反离散余弦变换后的亮度/色度值进行运动补偿的处理包括根据所述一个像素所在宏块的参考方向信息、所述一个像素所在宏块的运动矢量信息、所述一帧画面的场选择信息、以及所述一个像素所在宏块的参考帧的场选择信息,获取位于所述一个像素所在宏块的参考帧上、且对应于所述一个像素的另一个像素的完成解码后的亮度/色度值;通过将所述另一个像素的完成解码后的亮度/色度值与所述一个像素的反离散余弦变换后的亮度/色度值相加,来获取所述一个像素的运动补偿后的亮度/色度值。
13.根据权利要求2所述的视频解码方法,其特征在于,对所述一帧画面中的任意一个像素的运动补偿后的亮度/色度值进行色彩空间转换的处理包括通过将由所述一个像素的运动补偿后的亮度值、色度值和1组成的向量与色彩空间转换矩阵相乘,来获取所述一个像素的色彩分量。
14.一种视频解码系统,包括中央处理单元,用于通过对一帧画面的编码后的视频数据进行变长解码和反扫描,获取变长解码和反扫描后的视频数据;可编程图形处理单元,用于通过对变长解码和反扫描后的视频数据进行反量化、反离散余弦变换、运动补偿以及色彩空间转换,获取完成解码后的视频数据。
15.根据权利要求14所述的视频解码系统,其特征在于,所述变长解码和反扫描后的视频数据包括以下信息所述一帧画面中的每个像素的亮度值、色度值、量化矩阵值和反量化符号值、以及所述一帧画面中的每个宏块的宏块类型指示值和量化缩放值。
16.根据权利要求15所述的视频解码系统,其特征在于,所述中央处理单元将所述一帧画面中的每个像素的亮度/色度值、量化矩阵值和反量化符号值打包为以下格式(第一高位值,第一低位值,量化矩阵值,反量化符号值),其中,所述第一高位值是通过用所述一帧画面中的每个像素的亮度/色度值除以255所得的商的整数部分,所述第一低位值是通过用所述一帧画面中的每个像素的亮度/色度值除以255所得的余数值。
17.根据权利要求15所述的视频解码系统,其特征在于,所述中央处理单元将所述一帧画面中的每个宏块的宏块类型指示值和量化缩放值打包为以下格式(宏块类型指示值,量化缩放值,0.0,0. 0)。
18.根据权利要求15所述的视频解码系统,其特征在于,所述可编程图形处理单元通过以下处理对所述一帧画面中的任意一个像素的亮度/色度值进行反量化判断所述一个像素的量化矩阵值是否等于0 ;如果等于0,则保持所述一个像素的亮度/色度值不变,否则根据以下等式对所述一个像素的亮度/色度值的绝对值进行反量化AempData = ((data*2. 0+mb_ type)氺qmatVal氺scale) /32. 0,其中tempData表示所述一个像素的反量化后的亮度/色度值的绝对值,data表示所述一个像素的亮度/色度值的绝对值,mb_type表示所述一个像素所在宏块的宏块类型指示值, qmatVal表示所述一个像素的量化矩阵值,scale表示所述一个像素所在宏块的量化缩放值,宏块类型指示值0指示帧内编码宏块,宏块类型指示值1指示帧内编码方式以外的编码方式的宏块。
19.根据权利要求18所述的视频解码系统,其特征在于,所述可编程图形处理单元将所述一个像素的反量化符号值作为所述一个像素的反量化后的亮度/色度值的符号值,并将所述一个像素的反量化后的亮度/色度值的绝对值和所述一个像素的反量化符号值打包为以下格式(第二高位值,第二低位值,0. 0,反量化符号值),其中,所述第二高位值是通过用所述一个像素的反量化后的亮度/色度值的绝对值除以255所得的商的整数部分, 所述第二低位值是通过用所述一个像素的反量化后的亮度/色度值的绝对值除以255所得的余数值。
20.根据权利要求15所述的视频解码系统,其特征在于,所述一帧画面由多个8x8像素块组成,所述多个8x8像素块中的任意一个8x8像素块中的任意一个像素在所述一个8x8 像素块中的位置由所述一个像素的位置坐标表示,并且所述一个8x8像素块中的像素的位置坐标独立于所述多个8x8像素块中的其他8x8像素块中的像素的位置坐标。
21.根据权利要求20所述的视频解码方法,其特征在于,所述一个8x8像素块中的各个像素的量化后的亮度/色度值按照各个像素在所述一个8x8像素块中的位置组成了一个8x8亮度/色度值矩阵D,其中,所述可编程图形处理单元通过以下处理来获取所述一个8x8 像素块中的位置坐标为(dx,dy)的一个像素的反离散余弦变换后的亮度/色度值通过将所述一个8x8亮度/色度值矩阵D的各行与反离散余弦变换系数矩阵C的转置矩阵Ct的各行点乘,获取中间矩阵TR ;通过将所述中间矩阵TR的第dy列与所述反离散余弦变换系数矩阵C的转置矩阵Ct的第dx行点乘,获取位置坐标为(dx,dy)的所述一个像素的反离散余弦变换后的亮度/色度值。
22.根据权利要求21所述的视频解码系统,其特征在于,当所述一个像素的反离散余弦变换后的亮度/包度值为-256以外的其他值时,所述可编程图形处理单元将所述一个像素的反离散余弦变换后的亮度/色度值表示为(反离散余弦变换后的亮度/色度值的绝对值,0. 0,0. 0,反离散余弦变换后的亮度/色度值的符号值),当所述一个像素的反离散余弦变换后的亮度/色度值为-256时,所述可编程图形处理单元将所述一个像素的反离散余弦变换后的亮度/色度值表示为(1. 0,1. 0,0. 0,1. 0)。
23.根据权利要求15所述的视频解码系统,其特征在于,所述变长解码和反扫描后的视频数据进一步包括以下信息所述一帧画面中的每个宏块是否为预测编码宏块的信息、 所述一帧画面中的每个预测编码宏块的参考方向信息、所述一帧画面中的每个宏块的运动矢量信息、所述一帧画面中的每个宏块是场离散余弦变换编码宏块还是帧离散余弦变换编码宏块的信息、所述一帧画面的场选择信息、和所述一帧画面中的每个宏块的参考帧的场选择信息。
24.根据权利要求23所述的视频解码系统,其特征在于,对于所述一帧画面中的任意一个像素,如果所述一个像素所在宏块不是预测编码宏块,则所述可编程图形处理单元通过将所述一个像素的反离散余弦变换后的亮度/色度值与1 相加,来获取所述一个像素的运动补偿后的亮度/色度值。
25.根据权利要求23所述的视频解码系统,其特征在于,对于所述一帧画面中的任意一个像素,如果所述一个像素所在宏块是预测编码宏块所述可编程图形处理单元通过以下处理对所述一个像素的反离散余弦变换后的亮度/色度值进行运动补偿根据所述一个像素所在宏块的参考方向信息、所述一个像素所在宏块的运动矢量信息、场选择信息、以及所述一个像素所在宏块的的参考帧的场选择信息,获取位于所述一个像素所在宏块的参考帧上、且对应于所述一个像素的另一个像素的完成解码后的亮度/色度值;通过将所述另一个像素的完成解码后的亮度/色度值与所述一个像素的反离散余弦变换后的亮度/色度值相加,来获取所述一个像素的运动补偿后的亮度/色度值。
26.根据权利要求15所述的视频解码系统,其特征在于,所述可编程图形处理单元通过以下处理对所述一帧画面中的任意一个像素的运动补偿后的亮度/色度值进行色彩空间转换通过将由所述一个像素的运动补偿后的亮度值、色度值和1组成的向量与色彩空间转换矩阵相乘,来获取所述一个像素的色彩分量。
全文摘要
提供了一种视频解码方法和系统。该视频解码方法包括通过利用中央处理单元对一帧画面的编码后的视频数据进行变长解码和反扫描,获取变长解码和反扫描后的视频数据;通过利用可编程图形处理单元对变长解码和反扫描后的视频数据进行反量化、反离散余弦变换、运动补偿以及色彩空间转换,获取完成解码后的视频数据。
文档编号H04N7/26GK102164284SQ20101011484
公开日2011年8月24日 申请日期2010年2月24日 优先权日2010年2月24日
发明者洲镰康, 白向晖, 谭志明 申请人:富士通株式会社