组合的并行流水线视频编码器的制造方法_3

文档序号:9240338阅读:来源:国知局
输出的系数进行量化。
[0050]技术人员将认识到如何执行这样的量化,因此这里将不再重复对量化模块27的进一步解释。量化的系数随后被输出至熵编码器29。
[0051]熵编码器29对从量化模块27输出的系数进行编码以形成编码的流37。技术人员将认识到如何实现熵编码器,因此这里将不提供更全面的解释。
[0052]来自量化模块27的输出还被发送到上面提到的宏块重建模块19。宏块重建模块19包括反量化模块31、逆离散余弦变换(IDCT)模块33和环路滤波器35。
[0053]反量化模块31接收来自量化模块27的输出,并对量化的输出执行反量化处理。IDCT模块33随后对反量化的输出执行逆DCT。技术人员将认识到如何实现这两个过程,因此这里将不再重复全面的解释。而注意如下内容就足够了:来自IDCT模块33的输出采用重建的宏块的形式。
[0054]来自IDCT模块33的输出被传送至环路滤波器35。环路滤波器35用以去除可由使用不同的估计技术对相邻宏块进行编码的情况引起的假象。例如,如果使用运动估计对第一宏块进行编码,同时使用帧内估计对相邻的第二宏块进行编码,则可在这些宏块之间的边界处出现假象。技术人员将理解如何实现环路滤波器,因此这里将不提供更加详细的解释。
[0055]来自IDCT模块33的输出还被传送至旁通模块15。因此,如上所述,旁通模块15可使用来自IDCT 33的重建的宏块作为如上所述的残差的部分计算。
[0056]来自环路滤波器35的输出被传送至运动估计器(ME)21。ME 21得到重建的经环路滤波的宏块,并对每个宏块执行运动估计,以确定该宏块相对于前一帧或者相对于前一帧和后一帧两者的运动估计。如上所述,ME 21还接收输入流1,用以生成针对每个宏块的运动估计。ME 21导出针对当前宏块的运动向量的最佳估计。这里的最佳运动向量被假定为产生估计的宏块和对其进行运动估计的宏块之间的最小SAD的运动向量。技术人员将认识到如何使用这些输入实现这样的运动估计,因此这里将省略全面的解释。ME 21的输出采用估计的宏块和其相应的SAD的形式。
[0057]来自ME 21的输出被传送至预测器23,该预测器23基于针对每个宏块或子宏块的最佳运动向量计算运动补偿的帧。
[0058]预测器23将帧间预测的宏块和相关联的SAD传送至决策模块13。如上所述,在决策模块中的该SAD比较的结果随后用于确定哪个版本的宏块被传送至编码器17用以包含在编码的流37内。
[0059]因此,总之,该方法的作用如下:确定每个宏块的帧内估计版本和运动估计版本,选择具有最小SAD的版本用以编码。所选版本的宏块随后被编码并被用在输出流37中。
[0060]在替选的实施方式中,偏差(bias)被添加到用于在使用帧内估计的宏块或使用帧间估计的宏块之间进行确定的SAD标准。因此,在该实施方式中,使用如下关系在宏块的帧内编码版本和帧间估计版本之间进行确定:
[0061]如果SA%_i+ +偏差>SA%_Si+,则选择帧间估计;否则选择帧内估计。
[0062]其中,SADSWSi+表示从帧内估计的宏块计算的SAD,SADlj!贞表示从帧间估计的宏块计算的SAD。这样的实施方式可用于帮助确保通过特定的方法对宏块的期望部分进行编码。
[0063]在图3中描述的实施方式中,以GPU实现IE模块11和预测器23两者。以HW实现ME模块21,以及以SW实现剩余的全部组件,即MB (宏块)编码模块17、MB重建模块19、决策模块13和旁通模块15。因此,可以采用最适合的方式实现所描述的编码器的各个不同的功能。因此,所描述的编码器可实现对可用HW资源的最佳使用,同时保持在CPU或GPU上运行的、在SW环境内经历频繁改变的功能。另外,能够以并行和流水线两者的方式运行编码处理。
[0064]图4示出使用图3的编码方法处理数据帧时出现的步骤。图的顶行指示流水线中的步骤。这处于1、2、3、4的重复模式。因此,针对每帧,该流水线被划分为四个处理步骤,并对每帧重复该处理。在各流水线步骤之间要求同步,因此在处理系统的CPU上发生中断。
[0065]第二行指示由GPU执行的步骤。处于流水线步骤I的第一步骤是对第一帧的第一区段执行帧内估计。该区段被标记为Al,其指示这是序列中的第一帧的正被编码的区段A。因此,该帧是图2中示出的帧的顶部区段。在第二行中的随后步骤(换句话说对于GPU的随后步骤)是对第一帧的区段B执行帧内估计,这被标记为BI。换句话说,区段BI是序列的第一帧的区段Al下方的区段。对于GPU的第三步骤是处理帧I中的区段C,即Cl。随后,区段Dl被处理。在处理第一帧的每个区段后,GPU随后以与对于第一帧相同的次序处理第二帧的区段。换句话说,处理区段A2、区段B2、区段C2和随后的区段D2。
[0066]在图4的表格的第三行中,CPU执行第一区段Al的宏块编码和宏块重建。在图4中,该进程被标记为“E”。CPU在流水线的步骤2处(换句话说,在GPU正执行区段BI的帧内估计的时候)执行该处理。这是因为宏块编码和宏块重建进程需要对区段Al的帧内估计的结果,因此不能在该结果可用之前开始。对于CPU的随后步骤是在流水线步骤3期间对区段BI执行进程E (宏块编码和宏块重建)。CPU随后以与GPU相同的次序对帧区段执行进程E,每个区段在该区段已被GPU处理之后的一个流水线步骤被处理。
[0067]在图4的第四行中,HW执行运动估计。针对第二帧的区段A(即A2)的运动估计相对于第一帧中的相应区段Al而进行。因此,针对第一帧不进行运动估计,这是因为不存在用于产生运动估计的前一帧。如关于图3所述,运动估计的随后步骤是运动预测,随后,决策模块13比较帧内估计的宏块和运动补偿的宏块的SAD。相比之下,在宏块编码之前紧连的进程E中,在帧内估计之后紧接的步骤中,在决策模块13中比较每个帧内估计的宏块。因此,要求特定宏块的运动估计先于针对该同一宏块的帧内估计一步。因此,在流水线的步骤4中执行区段A2的运动估计,同时在流水线的随后步骤中(换句话说,在流水线的下一重复中的第一步骤期间)执行区段B2的运动估计。在流水线的下一步骤中执行区段B2的运动估计,接下来的步骤是依次对C2和D2的运动估计。
[0068]在图4的第五行中,GPU执行运动补偿预测(MCP)。由于MCP依赖于行4中的运动估计的结果,因此在针对每个特定宏块的运动估计之后的一个流水线步骤执行MCP。因此,在第二个流水线步骤I处(换句话说,在自流水线开始之后的流水线中的第五步骤中)执行针对区段A2的MCP。在随后的步骤中,针对B2、然后C2及然后D2的MCP依次被执行。
[0069]从图4可知,前四个步骤实际上是流水线的开始,这是因为直到这前四个步骤之后所描述的宏块编码方法所需的全部数据才可用。由此,清楚可知,由区段A1、B1、C1和Dl组成的第一帧不能以与序列中的其余帧完全相同的方式被处理。通常,完全使用帧内估计的宏块对序列中的第一帧进行编码。然而,技术人员将认识到用于处理这种情况的其它方法,因此这里将不再重复可用方法的全面解释。
[0070]从图4清楚可知,以并行流水线方式处理帧的四个区段A、B、C、D中的每个区段。由于在每个重复的流水线中具有四个待完成的任务(IE、E、ME和MCP),因此可以通过将待编码的帧划分为四个区段来实现有效处理。通过选择将帧划分为四个区段,在流水线的每个步骤期间可发生处理的意义上讲,所描述的实施方式的流
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1