用于视频压缩的并行处理装置的制作方法

文档序号:7678136阅读:138来源:国知局
专利名称:用于视频压缩的并行处理装置的制作方法
技术领域
本发明涉及视频压縮领域。更具体地,本发明涉及利用并行处理器的 视频压縮。
背景技术
视频序列包括多个图像,这些图像通常称作帧。连续的帧十分类似, 因此从一帧到下一帧包含大量冗余信息。在经由信道被有效传输或者被存 储在存储器中之前,视频数据被压縮以节约带宽和存储器二者。目的在于 去除冗余信息以得到更好的压縮比。第一种视频压縮方法是从给定帧中减 去基准帧以生成相对差。压縮后的帧包含比基准帧更少的信息。可以以更 低的比特率来编码相对差而质量不变。解码器通过将相对差与基准帧相加 来重构原始帧。
一种更复杂的方法是逼近视频序列的整个场景(scene)和对象的运 动。通过以比特流的方式进行编码的参数来描述运动。通过经适当变换的 基准帧像素来逼近所预测帧的像素。该方法提供了一种与简单减法相比有 所改进的预测能力。然而,由运动模型参数所占用的比特率不能过大。
通常,根据许多标准来执行视频压縮,包括诸如MPEG-l、 MPEG-2 和MPEG-4之类的运动图像专家组(MPEG)中的用于音频和视频压縮的 一个或多个标准。作为MPEG-4的第10部分标准(也称作H.264或者AVC (高级视频编码))的一部分,已经作出了附加的增强。根据MPEG 标准,首先对视频数据进行编码(例如,进行压縮),然后将其存储在视 频系统的编码器一侧上的编码缓冲器中。随后,将经编码的数据传输到视 频系统的解码器一侧,在此,在对其进行解码以使得相应图像可以被査看 之前将其存储在解码缓冲器中。
H.264/AVC项目致力于开发这样一种标准,该标准能够以比先前标准 (例如,MPEG-2 、 H.263或者MPEG-4的第2部分)所需的比特率低得 多的比特率来提供良好的视频质量。此外,希望作出这些改进而不会因复 杂度的大幅增加致使设计不能实际地实现。 一个附加目的是以灵活的方式 来作出这些改变,该灵活的方式将使得标准能够广泛应用于各种应用,从 而使得标准能够既用于低比特率又用于高比特率,并且能够既用于低分辨 率视频又用于高分辨率视频。另一 目的是它能够良好地工作于各种网络和 系统上。
H.264/AVC/MPEG-4的第10部分包含许多新特征,这些新特征使其 能够比旧标准更高效地对视频进行压縮,并且能够为各种网络环境提供更 高的应用灵活性。 一些关键特征包括将先前已编码的图像用作基准的多 图像运动补偿,具有大到16X16的像素块以及小到4X4的像素块的可变 分块运动补偿(VBSMC),用于导出半像素亮度样本预测的六角(six-tap) 滤波,宏块对结构,用于运动补偿的四分之一像素精度,加权预测, 环路去块滤波器,精确匹配整数4X4像素空间块变换,对主要空间变换 的"DC"系数执行的二次Hadamard变换(其中Hadamard变换类似于快 速傅立叶变换),根据用于"帧内"编码的相邻块边缘的空间预测,基于 上下文的自适应二进制算术编码(CABAC),基于上下文的自适应可变 长编码(CAVLC),被称作指数哥伦布编码的、用于多个未经CABAC或 CAVLC编码的语法元素(syntax element)的简单且高度结构化的可变长 编码(VLC),网络抽象层(NAL)定义,切换条带(switching slice), 灵活的宏块排序,冗余条带(RS),附加增强信息(SEI)和视频可用信 息(VUI),辅助图像,帧编号和图像顺序计数。这些技术以及一些其他 技术使得H.264能够在更多情况下并且在更多环境中明显优于现有标准地
6完成任务。通过以一半的比特率或者甚至更少的比特率获得相同的质量,
H.264通常比MPEG-2视频更好地完成任务。
MPEG用于对运动图像和相关联的音频进行一般编码,并且产生由一 系列三种类型的编码数据帧构成的经压縮视频比特流。这三种类型的数据 帧是帧内编码帧(称作I帧或I图像),双向预测帧(称作B帧或B图 像),和前向预测帧(称作P帧或P图像)。这三种类型的帧可以按指定 顺序(称作GOP (图像组)结构)排列。I帧包含需要用于重构图像的所 有信息。将I帧作为正常图像来编码而不需要运动补偿。另一方面,P帧 使用在前帧的信息来重构图像,并且B帧使用在前帧、后续帧或二者的信 息来重构图像。具体地,从前一个I帧或者紧接着的前一个P帧来预测P 帧。
也可以从紧接着的后续帧来预测帧。为了以这种方式来利用后续帧, 后续帧必须在所预测的帧之前被编码。因此,编码顺序不一定与实际的帧 顺序相匹配。通常从两个方向来预测这样的帧,例如从紧接在所预测帧之 前的I帧或P帧,或者紧接在所预测帧之后的P帧来预测。这些双向预测 帧称作B帧。
存在多种可能的GOP结构。常见的GOP结构为15帧长,并且具有序 列I_BB_P_BB_P_BB_P_BB—P—BB—。类似的12帧序列也很常见。I帧针 对空间冗余进行编码,P帧和B帧针对时间冗余和空间冗余二者进行编 码。因为视频流中的相邻帧通常良好相关,所以P帧和B帧仅是I帧大小 的很小的百分比。然而,在一帧所能压縮到的大小与编码这样的压縮帧所 需的处理时间和资源之间存在折衷。虽然GOP结构中的I帧、P帧和B帧 的比是由视频流的性质和输出流的带宽约束所决定的,但是编码时间也可 能是个问题。因为与仅是I帧的文件相比,包含多个B帧的流可能花费更 长的时间用于编码,所以在实时传输时以及在具有有限计算资源的实时环 境中,这一点尤其突出。
B帧和P帧需要较少的比特用于存储图像数据,所述比特一般包含针 对当前帧与前一帧、后一帧或二者之间的差的差比特。B帧和P帧因此用 于减少帧之间所包含的冗余信息。操作中,解码器接收经编码的B帧或经帧来重构原始帧。当连续帧基本类似 时,因为帧中的差很小,所以该过程更容易并且产生更平滑的场景过渡。
每个视频图像被分离到一个亮度(Y)信道和两个色度信道中(也称 作色差信号Cb和Cr)。亮度和色度阵列的块被组织到"宏块"中,宏块 是在帧内进行编码的基本单元。
在I帧的情况下,实际图像数据被通过编码过程传递。然而,P帧和 B帧首先经过"运动补偿"过程。运动补偿是一种根据前一帧的每个宏块 移动到了何处来描述连续帧之间的差的方法。这种技术通常用于减少用于 视频压縮的视频序列的时间冗余。如编码器使用"运动向量"所选择的, P帧或B帧中的每个宏块与良好相关的前一图像或下一图像中的区域相关 联。将宏块映射到其相关区域的运动向量被编码,然后两个区域之间的差 通过编码过程被传递。
传统视频编解码器将经运动补偿的预测用于对原始输入视频流进行高 效编码。从先前帧中己移位的宏块来预测当前帧中的宏块。原始宏块及其 预测之间的差被压縮并且与移位(运动)向量一起被发送。该技术称作帧 间编码,是在MPEG标准中使用的方法。
编码过程中最耗时的成分之一是运动估计。运动估计用于通过与预测 误差的变换编码相结合地实现运动补偿预测,来减小视频信号的比特率。 与运动补偿有关的混叠(aliasing)不能够通过使用帧间像素运动补偿来避 免,并且混叠使预测效率恶化。为了解决恶化的问题,半像素内插和四分 之一像素内插被用于降低混叠的影响。为了以四分之一像素精度来估计运 动向量,通常使用三个步骤的搜索。在第一个步骤中,在指定搜索范围内 将运动估计应用于每个整数像素来找到最佳匹配。然后,在第二个步骤 中,检査在所选出的整数像素运动向量周围的八个半像素点来找到最佳的 半像素匹配点。最后,在第三个步骤中,检查在所选出的半像素运动向量 周围的八个四分之一像素点,然后将最佳匹配点选作最终的运动向量。考 虑到运动估计的复杂度,如果将完全搜索(foil-search)用于整数像素运动 估计,那么整数像素运动估计将占运动估计的主要部分。然而,如果利用 快速整数运动估计算法,那么整数像素运动向量能够通过检査少于十个的搜索点而被找到。因此,搜索半像素运动向量和四分之一像素运动向量的 计算复杂度变为主要部分。
由于不断减小晶体管尺寸以使得增大用于实现更多功能的硅空间的半 导体技术的进步,以及致使严重的热耗散的物理限制,处理器制造商开始 引入多核或多处理器系统。视频压縮处理需要处理器功率并且尝试利用并 存处理器所能提供的计算能力。然而,许多视频压縮方法或者是按顺序定
义的或者是相邻视频对象之间存在相关性(dependence),因此很难在同 时并行的计算系统上开发用于视频压縮过程的线程级并行(thread level parallelism)。用于在视频压縮应用中开发并行处理能力的方法之一是将 视频序列中的图像水平地分割为多个部分,称作条带。因为在多条带的条 带之间不存在语义相关性,所以这适用于多处理系统中的视频压縮。
然而,某些视频压縮应用要求单条带方法(每个图像一个条带)。就 单条带方法而言,在块边界周围的单个条带语法和语义中存在许多相关性 问题,尤其是在高级视频编码(AVC)规范的情况下。
一种通过单条带方法在多处理系统上并行处理视频压縮的方法是,将 图像水平地划分为顶部一半和底部一半。 一个线程处理图像的顶部一半并 且另一线程处理底部一半。两个线程处理同一图像。底部线程忽略边界周 围的相关性,并且还处理边界周围的语法一致性。当底部线程处理第一宏 块(MB)行时,它选择独立于其上部MB的MB模式。然而,与标准单 条带光栅扫描方法相比,这种一般的方法使得压縮效率更低。
另一种视频压縮的并行处理方法是将图像水平地分割为多个部分。这 些经水平分离的部分称作条带。视频压縮系统然后以并行处理的方式对这 些条带进行编码。该方法产生多个条带结果。
然而,多条带方法存在许多问题。多个条带的经编码结果与单条带不 同,因为多个条带的经编码结果在语意上彼此独立。因此,多个条带很难 或者不可能确认多条带的并行处理方法的正确性。视频质量在条带边界处 降低。使用水平多条带编码的视频压縮在视频内容的复杂度随条带的不同 而不同的情况下,存在工作负荷失衡的问题。水平多条带编码的各条带的 结果需要被连接起来以形成单个结果。这是在单条带编码中不存在的额外
9工作。

发明内容
在此描述了一种用于并行处理视频压縮的方法和装置。图像被垂直地
划分为N个区(zone),并且垂直分割并行(Vertical Split Parallelism, VSP)调配N+1个过程用于N个区中的一般宏块编码的N个M编码过 程和用于熵编码的一个E编码过程。通过将宏块编码过程划分为M编码 过程和E编码过程,多个M编码线程和一个E编码线程能够通过线程之 间适当同步而同时进行处理。因为每个宏块编码过程的M编码过程的工作 负荷大于E编码的,所以能够将两个内核指定给两个M编码过程。因为E 编码的工作负荷较轻,所以能够将所述内核的任一个指定给E编码过程。 因此,VSP有效地利用了并行处理计算能力。
在一个方面中, 一种用于对视频进行压縮的装置包括多个处理内核和 用于使多个处理内核处理N个M编码过程和一个E编码过程的程序。N 等于多个处理内核中的处理内核的个数。E编码过程由从多个处理内核中 选出的可用处理内核来处理。可用处理内核是自动选出的。N个M编码过 程包括模式判决、变换和均衡,并且E编码过程包括熵编码。N个M编码 过程是并行处理的。N个M编码过程是同时处理的。N个M编码过程的 每个都与垂直区相对应。N个M编码过程的每个都与经分割平移的(split-shifted) 垂直区相对应。N个M编码过程的每个都与对角区(diagonal zone)相对应。多个处理内核用于在对前一宏块进行的M编码完成之 后,对当前宏块进行M编码;在对当前宏块进行的M编码完成之后,对 当前宏块进行E编码;以及在对前一宏块进行的E编码完成之后,对当前 宏块进行E编码。多个处理内核用于在宏块不处于第一宏块行中的情况 下,在对右上方宏块进行的E编码完成之后,对该宏块进行M编码。多 个处理内核用于在宏块是宏块行中的最后一个宏块的情况下,在对上方宏 块进行的E编码完成之后,对该宏块进行M编码。
在另一方面中, 一种用于对视频进行压縮的装置包括第一处理内核, 其用于处理第一 M编码线程;以及第二处理内核,其耦合到第一处理内核,用于处理第二M编码线程;其中,E编码线程由从第一处理内核和第
二处理内核中选出的可用处理内核来处理。第一 M编码线程和第二 M编 码线程包括模式判决、变换和均衡,并且E编码线程包括熵编码。可用处 理内核是自动选出的。第一 M编码线程和第二 M编码线程是并行处理 的。第一M编码线程和第二M编码线程是同时处理的。第一M编码线程 与第一垂直区相对应,并且第二 M编码线程与第二垂直区相对应。第一 M编码线程与第一经分割平移的垂直区相对应,并且第二 M编码线程与 第二经分割平移的垂直区相对应。第一 M编码线程与第一对角区相对应, 并且第二 M编码线程与第二对角区相对应。
在另一方面中, 一种用于对视频进行压縮的方法包括以下步骤将图 像垂直地划分为N个区;调配N+1个过程,其中,N个过程是M编码并 且一个过程是E编码;利用多个处理内核来并行地处理N个M编码过 程;利用多个处理内核的可用处理内核来处理E编码过程;并且使这N+1 个过程同步。N个M编码过程包括在对前一宏块进行的M编码完成之 后,对当前宏块进行M编码。E编码过程包括在对当前宏块进行的M编 码完成之后,对该当前宏块进行E编码。处理E编码过程的步骤包括在对 前一宏块进行的E编码完成之后,对当前宏块进行E编码。该方法还包 括在对前一宏块进行的M编码完成之后,对当前宏块进行M编码;在 对当前宏块进行的M编码完成之后,对当前宏块进行E编码;以及在对 前一宏块进行的E编码完成之后,对当前宏块进行E编码。该方法还包括 在宏块不处于第一宏块行中的情况下,在对右上方宏块进行的E编码完成 之后,对该宏块进行M编码。该方法还包括在宏块是宏块行中的最后一个 宏块的情况下,在对上方宏块进行的E编码完成之后,对该宏块进行M 编码。


图1A到图1C示出用于视频压縮的并行处理装置的实施例的框图。 图2示出垂直分割并行的过程的流程图。 图3示出对图像的示例性垂直分割。
ii图4A示出平移分割的图形表示。
图4B示出待压縮的图像。
图5示出具有两种类型边界的线程的图形表示。
具体实施例方式
视频序列包括图像的序列。每个图像还被划分为多个宏块。传统的编 码过程按光栅扫描顺序逐个地对宏块进行编码。通常,每个宏块的编码过 程包括宏块类型选择,运动估计和补偿的前期阶段,变换和均衡的中期阶 段和熵编码的后期阶段。
垂直分割并行(VSP)将传统的视频压縮过程分为两部分M编码和 E编码。M编码代表没有熵编码过程的一般宏块编码过程。E编码代表熵 编码过程。图像被垂直地划分,其中每个垂直划分出的部分图像表示一个 区。因此,图像包括多个区。每个区首先经过M编码处理。宏块单元中每 个区的M编码的输出进一步经过E编码处理。VSP的特征在于对每个宏 块的M编码和E编码的相关性进行解耦,因此并不是紧接在宏块的M编 码之后处理其自身的E编码。此外,每个宏块并不依赖于对光栅扫描顺序 中在它之前的宏块进行的E编码的完成。
一般地,如果图像被垂直地划分为N个区,那么VSP调配N+l个过 程针对N个区的N个M编码过程和用于熵编码的一个E编码过程。例 如,如果图像被垂直地划分为两个区,那么VSP调配三个过程针对两个 区的两个M编码过程和用于熵编码的一个E编码过程。
通过将宏块编码过程划分为M编码过程和E编码过程,多个M编码 线程和一个E编码线程能够通过线程之间的适当同步而同时进行。M编码 包括模式判决、变换和均衡。与E编码的熵编码任务相比,这些M编码 阶段是较重工作负荷的任务。因为每个宏块编码过程的M编码过程的工作 负荷大于E编码的,所以能够将内核指定给每个M编码过程。例如,如 果设备或系统中有两个内核,那么将使用两个M编码过程,其中向每个内 核发送一个过程。即使两个M编码过程能够并行运行,某些AVC语法相 关性问题也仍存在,例如A-QP和宏块(MB)跳跃运行。通过引入独立的E线程能够解决这些问题。由于E编码的工作负荷较轻,所以两个内核的 任一个能够处理E编码过程。因此,VSP有效地利用了并行处理计算能 力。
VSP克服了当以并行处理方式对多个条带进行编码时所遇到的问题。 视频压縮的VSP并行处理产生了对单条带进行顺序处理的相同结果。因 此,通过比较VSP并行处理结果和单条带的顺序处理结果的等价性,很容 易确定VSP并行处理的正确性。因为VSP并行处理结果和单条带的顺序 处理结果相同,所以确保了视频质量相同。通过垂直地划分图像,VSP的 每个区一般具有相等的视频内容复杂度。因此,每个内核的预定义个体工 作负荷差不多相等。此外,如果存在工作负荷失衡,那么通过VSP的熵编 码过程来消除该失衡。因此,VSP并行处理的工作负荷被自动地平衡。 VSP的熵编码过程产生与单个条带编码相同的单个结果。因此,不存在对 多条带并行处理的部分结果进行的、额外阶段的连接工作。
优选地,在作为多处理器计算机架构的对称多处理(SMP)机器上运 行实现了 VSP的视频压縮软件,在该多处理器计算机架构中,由于通过对 共享存储器进行读取和写入来实现多过程(线程)的同步,所以两个或多
个相同的处理器或内核耦合到单个的共享主存储器。
可以经由软件、硬件或软件和硬件的组合来实现VSP。分割图像的优 选方法是垂直地分割;然而,在替代实施例中,可以对角地分割图像。
通过增大并行地处理的视频压縮量并且使顺序处理最小化,视频压縮 性能得到改善。
VSP支持图像速率控制,宏块量子化加权宏块速率控制(MQW MBRC),图像再编码,MB再编码,CAVLC禾卩CABAC熵编码,帧和场 输入格式和去块开启/关闭。
VSP解决了许多问题。解决了 SYNC的边界限制。通过在实际的MB 编码之前预先算出所有的量化参数(QP)或者通过改变去除最左侧MB与 最右侧MB的相关性的算法,解决了 QP的边界限制。通过两个阶段的算 法解决了 QP变化量(delta)相关性问题。由于存在与光栅扫描顺序中的 前一 QP的相关性以及与光栅扫描顺序中的前一 SKIP MB的相关性,所以存在QP变化量相关性问题。通过VSP,编码被分离为两个阶段,其中M 编码并行地运行并且E编码按光栅扫描的顺序顺序地运行。因此,在双核 系统中存在显著的加速。
并行方法能够通过任务或数据分解(decompose)被分类。在任务分 解中,在功能层面上,JvtEncoder (Jvt编码器)能够被分解为流水线方式 的多个过程。每个过程被作为独立的功能执行并且输出能够是下一过程的 输入。如果在每个过程中解决了负荷平衡和数据相关性,那么能够实现并 行。目前每个过程的编码计算负荷失衡。JvtCodingProcess (Jvt编码过 程)与其他过程相比,是负荷最重的功能。
在数据分解中,在帧层面上,每个图像能够被分解为两个半个的图 像,用于在不同的时间帧中同时进行编码。PaleMoonA算法实现了该方 法。在条带层面上,每个图像被编码为多个不同的条带以实现并行。在一 个图像内进行处理的情况下,在时域中不会出现基准帧。在MB层面上, 每个MB是并行的处理单元。由于数据与相邻MB的相关性在AVC编码 器中是普遍的,所以数据同步是要处理的关键问题。VSP采用该方法。在 块层面上,并行能够在MB内完成。避免在MB层面中发生的数据同步问 题是个十分低级的算法。在混合分解中,包括任务和数据分解二者。
图1A到图1C示出用于视频压縮的并行处理装置的实施例的框图。在 图1A到图1C的每个中,计算设备包含具有一个或多个内核的一个或多个 处理器。处理器和内核的任何组合都是可以的,只要总共存在至少两个内 核即可。
图1A示出具有两个处理器(第一处理器2和第二处理器4)的计算设 备1,每个处理器分别具有一个内核3, 5。图1B示出具有一个包含双核 3'的处理器2'的计算设备l'。图1C示出具有两个处理器(第一处理器2, 和第二处理器4')的计算设备l",每个处理器分别包含双核3', 5'。每个 计算设备具有至少两个内核,这些内核或者在同一处理器中或者在多个处 理器中。此外,如图1C所示,多于两个的内核能够使用。能够使用任何 数目的处理器和内核,只要内核的总数多于两个即可。计算设备是任何的 数字设备,包括但并不局限于可携式摄像机、数字相机、手机、个人数
14字助理(PDA)或计算机。
通过使用多个内核,用于视频压縮的并行处理装置能够通过利用并行 处理来加快视频压縮过程。如在此所描述的,在图像被垂直地划分为N个 区之后,N+l个过程被调配N个M编码过程和一个用于熵编码的E编码 过程。因为M编码过程的工作负荷比E编码过程的更重,所以能够针对 每个M编码过程来指定内核。例如,现参考图1A,第一M编码过程被发 送到第一处理器2中的内核3,并且第二 M编码过程被发送到第二处理器 4内的内核5,因此每个M编码过程被分开处理。然后,内核3或5的任 一个能够用于E编码过程,因为针对该过程的处理负荷相对较轻。因此, 用于视频压縮的并行处理装置高效地利用了并行处理计算能力。
图2示出垂直分割并行(VSP)的一个实施例的流程图。在步骤 200,将图像划分为N个区,其中N大于或等于2。 一般地,对图像进行 划分以使得区个数等于可用于处理的内核个数。在步骤202,调配N+1个 过程。存在N个M编码过程和一个E编码过程。在步骤204,并行地处理 N个M编码过程。然后在步骤206,利用任一个可用内核来处理E编码过 程。然后,在步骤208,对这些过程进行同步。
图3示出将具有128X96个像素(8X6个MB)的图像垂直分割为两 个区区—a (左侧部分)和区—b (右侧部分)。每个垂直区,在此即区—a 和区一b,作为独立的线程由独立的内核来处理。对于MB级的编码,仅垂 直区之间的区边界需要主同步(major synchronization)。另一独立线程用 于熵编码。每个MB通过"M编码"即宏块层编码和"E编码"即熵编码 而被编码。对于M编码,每个区由一个线程来处理。例如,由一个线程来 对区—a进行M编码,并且由另一线程来对区—b进行M编码。 一个独立的 线程执行"E编码"。因此,如果图像被分割为两个垂直区,那么总共存 在三个运行的线程。
为了确保有效地执行编码,存在多个同步规则或要求。当完成了对前 一宏块进行的M编码时,对当前宏块进行的M编码开始。例如,现参考 图3,仅当完成了 MB 0a时,MB la才能够开始。然后,仅当完成了 MB lb时,MB 2b才能够开始,并且MB lb在其能够开始之前必须等待直到
15MB0a完成为止。仅当完成了对其自身MB的M编码时,对MB的E编码 才能够开始。此外,仅当完成了对其前一个MB的E编码时,对该MB的 E编码才能够开始。
除了上述一般的同步外,还存在取决于所使用的数据结构的设计的规 则,这是因为对重复的数据结构的设计与同步算法之间关系紧密。以下描 述取决于对重复的数据结构的设计的同步算法的实现方式。对于每一列宏 块,存在两组数据。例如,对于8X6像素块的MB图像,存在8X2组数 据16组相邻宏块信息(AdjacentMblnfo),用于算术编码的先前 CABAC信息(PrcvCabacInfoSet),宏块编码(MbCoding),宏块编码, 制作(authoring)编码模式(MbCodingAE)和宏块编码模式判决
(ModeDedsion)。对于每一列宏块,存在两组熵函数调用记录缓冲器。 每个MB缓冲器能够记录至多32个函数调用。例如,对于8X6像素块的 MB图像,VspSims[8X2][32]是熵函数调用记录缓冲器。对于不在第一 MB行中的MB,仅当完成了对其右上方MB进行的E编码时,M编码才 能够开始。如果MB是MB行中最后一个MB,那么仅当完成了对其上方 MB进行的E编码时,M编码才能够开始。例如,现参考图3,仅当完成 了对MB e03进行的E编码时,对MB e10进行的M编码才能够开始。然 后,MB e10再使用与MB e02相同的一组数据,因为MB e10和MB e02 在相同的MB列中。
用于视频压縮的并行处理装置的另一改进涉及使用垂直区而非水平 区。除上述的那些优点之外,垂直区具有优于水平区的其他优点。 一般 地,垂直方向上的像素比水平方向上的更少,因此如果列数或行数不是偶 数,那么垂直方向上的不一致性比水平方向上的更小。因此, 一个处理器 的工作负荷不会明显地大于其他的。垂直分区的另一优点是,当列数是如 图4A所示的奇数时,能够垂直地进行平移分割(shift-splitting)。平移分 割是这样的,其中在图像中的一点处修改垂直分割以使得区的大小相等。 现参考图4A,例如,当生成两个区(第一区400和第二区402)时,在存 在奇数个列的情况下,分割404在图像的中央点406处平移了一列,这使 得两个区大小相等。垂直分区的另一个优点是对于许多图像而言,在图像中存在静态成分,例如图像顶部处的蓝天或图像底部处的水。例如,与图
4B所示的图像相类似的, 一幅图像包含在图像顶部处的蓝天和在图像的较
低部分处的房屋、树和人。如果该图像被水平地分割,那么对蓝天进行的 处理需要较少的处理功率用于压縮,因为它是相对静态的,而具有房屋、 树和人的部分则需要很多的处理,因此会不平衡。然而,如果图像被垂直 地分割,那么两侧都将具有一半的天空和一半的房屋、树和人,从而提供 更好的平衡的处理方案。
使用VSP提供了优于其他压縮实现方式的多个优点。关于负荷平衡, 对于每个较重工作负荷的线程,存在几乎相等个数的MB。所有的MB在 同一帧内得到处理。垂直地进行划分实现了平衡的负荷。就可扩展性而 言,很容易调节线程个数。关于同步,需要同步的项数被最小化。仅与区 边界相邻的、区中的第一列MB需要主同步。数据相关性映射能够用于同 步。同步的"OkToGo (可以继续)"结果的概率是很高的,而 "NotOkToGo (不可继续)"到"OkToGo"的等待时间是短暂的。大部 分基准MB存在于同一本地高速缓存中。x86双核处理器具有两个L2高速 缓存。CELL具有用于每个SPE的本地存储器。跨越边界的Ref MB不需 要被传送。x86使用预取(pre-fetch)技术来传送Ref MB。 CELL使用 DMA来进行传送。每个较重工作负荷的线程仅处理帧的一部分。由每个 较重工作负荷的线程来完成每个垂直区域。
如果在多内核机器上的多个较重工作负荷线程(M编码)之间存在任 何工作负荷失衡,那么独立的较轻工作负荷线程(E编码)能够填充间 隙。因此,多内核的工作负荷被自动地平衡。通过在此描述的实现方式, 双核机器上的处理器利用率在大部分时间内高于90%。 VSP使存储器利用 率略微地增大了约2.3%。
速率控制算法能够解决MQW MBRC算法以外的一般速率控制算法的 QP相关性问题。第一线程500和第二线程502在图5中被示出为具有两种 类型的边界。SYNC边界504由帧内预测需求决定。MB[1]与MB[H]相关 (例如,直到完成了 MB[H] , MB[1]才能够开始)。MB[P]与MB[1]相关 (例如,直到完成了 MB[l] , MB[P]才能够开始)。QP边界506由速率控制算法决定。MB[I]与MB[8]相关(例如,在决定了 MB[8]的QP之后决 定MB[I]的QP) 。 MB[Q]与MB[16]相关(例如,在决定了 MB[16]的QP 之后决定MB[Q]的QP)。
消除了 QP边界问题的算法改变独立于最右侧MB来决定最左侧MB 的QP,并且MB之间的其余的QP相关性(例如,除最左侧MB与最右侧 MB的相关性之外的、MB对光栅扫描顺序中的前一 MB的所有其他相关 性)不受影响(例如,在MB编码期间针对每个MB来改变QP)。因 此,VSP能够克服MB之间相关性的弱点。MB[9]的QP能够或者与MB[8] 的QP相关或者与MB[P]的QP相关。新的速率控制算法将经分割的图像 视为两个图像(针对按两个光栅扫描顺序的QP相关性的左侧一半图像和 右侧一半图像)。最左侧MB和最右侧MB之间没有关联,并且QP边界 相关性能够被去除。
在操作中,用于视频压縮的并行处理装置使用多个内核的并行处理能 力以加快视频压縮。因为许多设备和系统包括多个内核(或者在一个处理 器中或者在多个处理器中),所以出于效率的目的,视频压縮使用多个内 核是必要的。虽然在利用多个内核方面作出了其他尝试,但是它们具有使 其效率降低的固有缺点。VSP将每个图像分离为N个垂直区,其中这些区 的大小通常相同。除一个E编码过程之外,针对每个区生成M编码过 程。因为每个M编码过程具有近似的复杂度,所以每个内核将花费近似相 同的时间量来处理它们。此外,E编码过程具有很小的工作负荷,因此它 能够由任一个可用内核来处理。然后,这些过程被同步。
如所描述的,设备通过将图像分离为垂直区并且然后将每个相应过程 发送到独立内核以进行处理,来使用垂直分割并行。此外,熵编码过程被 发送到可用内核。此后,使这些过程同步,然后获得经快速压縮的视频。 能够以硬件、软件或二者的组合来实现垂直分割并行。
垂直分割并行能够用于多种应用中,包括但并不局限于视频编辑、存 储、广播和通信。
已经根据具体实施例描述了本发明,这些具体实施例包括用于帮助理 解本发明的构造和操作原理的许多细节。在此提到的具体实施例及其细节并非意欲将本发明的范围局限于此。本领域中的技术人员应容易理解,可 以在被选出用于进行说明的实施例中做出其他各种修改而不会脱离如权利 要求书所定义的本发明的精神和范围。
权利要求
1. 一种用于对视频进行压缩的装置,包括a. 多个处理内核;以及b. 用于使所述多个处理内核处理N个M编码过程和一个E编码过程的程序。
2. 如权利要求1所述的装置,其中,N等于所述多个处理内核中的处 理内核的个数。
3. 如权利要求l所述的装置,其中,所述E编码过程由从所述多个处 理内核中选出的可用处理内核来处理。
4. 如权利要求3所述的装置,其中,所述可用处理内核是自动选出的。
5. 如权利要求1所述的装置,其中,所述N个M编码过程包括模式 判决、变换和均衡,并且所述E编码过程包括熵编码。
6. 如权利要求1所述的装置,其中,所述N个M编码过程是并行处 理的。
7. 如权利要求6所述的装置,其中,所述N个M编码过程是同时处 理的。
8. 如权利要求1所述的装置,其中,所述N个M编码过程各自对应 于一垂直区。
9. 如权利要求1所述的装置,其中,所述N个M编码过程各自对应 于一经分割平移的垂直区。
10. 如权利要求l所述的装置,其中,所述N个M编码过程各自对应 于一对角区。
11. 如权利要求l所述的装置,其中,所述多个处理内核用于a. 在对前一宏块进行的M编码完成之后,对当前宏块进行M编 码;b. 在对所述当前宏块进行的M编码完成之后,对所述当前宏块进 行E编码;以及c. 在对所述前一宏块进行的E编码完成之后,对所述当前宏块进 行E编码。
12. 如权利要求1所述的装置,其中,所述多个处理内核用于在宏块 不处于第一宏块行中的情况下,在对右上方宏块进行的E编码完成之后, 对所述宏块进行M编码。
13. 如权利要求1所述的装置,其中,所述多个处理内核用于在宏块 是宏块行中的最后一个宏块的情况下,在对上方宏块进行的E编码完成之 后,对所述宏块进行M编码。
14. 一种用于对视频进行压縮的装置,包括-a. 第一处理内核,其用于处理第一M编码线程;以及b. 第二处理内核,其耦合到所述第一处理内核,用于处理第二 M 编码线程;其中,E编码线程由从所述第一处理内核和所述第二处理内核中选出 的可用处理内核来处理。
15. 如权利要求14所述的装置,其中,所述第一M编码线程和所述第 二 M编码线程包括模式判决、变换和均衡,并且所述E编码线程包括熵 编码。
16. 如权利要求14所述的装置,其中,所述可用处理内核是自动选出的。
17. 如权利要求14所述的装置,其中,所述第一M编码线程和所述第 二M编码线程是并行处理的。
18. 如权利要求17所述的装置,其中,所述第一M编码线程和所述第 二M编码线程是同时处理的。
19. 如权利要求14所述的装置,其中,所述第一M编码线程与第一垂 直区相对应,并且所述第二M编码线程与第二垂直区相对应。
20. 如权利要求14所述的装置,其中,所述第一M编码线程与第一经 分割平移的垂直区相对应,并且所述第二 M编码线程与第二经分割平移的 垂直区相对应。
21. 如权利要求14所述的装置,其中,所述第一M编码线程与第一对角区相对应,并且所述第二M编码线程与第二对角区相对应。
22. —种用于对视频进行压縮的方法,包括以下步骤a. 将图像垂直地划分为N个区;b. 调配N+l个过程,其中,N个过程是M编码并且一个过程是E 编码;c. 利用多个处理内核来并行地处理所述N个M编码过程;d. 利用所述多个处理内核中的可用处理内核来处理所述E编码过 程;并且e. 使所述N+1个过程同步。
23. 如权利要求22所述的方法,其中,处理所述N个M编码过程的 步骤包括在对前一宏块进行的M编码完成之后,对当前宏块进行M编 码。
24. 如权利要求22所述的方法,其中,处理所述E编码过程的步骤包 括在对当前宏块进行的M编码完成之后,对所述当前宏块进行E编码。
25. 如权利要求22所述的方法,其中,处理所述E编码过程的步骤包 括在对前一宏块进行的E编码完成之后,对当前宏块进行E编码。
26. 如权利要求22所述的方法,还包括a. 在对前一宏块进行的M编码完成之后,对当前宏块进行M编 码;b. 在对所述当前宏块进行的M编码完成之后,对所述当前宏块进 行E编码;以及c. 在对所述前一宏块进行的E编码完成之后,对所述当前宏块进 行E编码。
27. 如权利要求22所述的方法,还包括在宏块不处于第一宏块行中的 情况下,在对右上方宏块进行的E编码完成之后,对所述宏块进行M编 码。
28. 如权利要求22所述的方法,还包括在宏块是宏块行中的最后一个 宏块的情况下,在对上方宏块进行的E编码完成之后,对所述宏块进行M 编码。
全文摘要
在此描述了一种用于并行处理视频压缩的方法和装置。图像被垂直地划分为N个区,并且垂直分割并行(VSP)调配N+1个过程用于N个区中的一般宏块编码的N个M编码过程和用于熵编码的一个E编码过程。通过将宏块编码过程划分为M编码过程和E编码过程,多个M编码线程和一个E编码线程能够通过线程之间适当同步而同时进行处理。因为每个宏块编码过程的M编码过程的工作负荷大于E编码的,所以能够将两个内核指定给两个M编码过程。因为E编码的工作负荷较轻,所以能够将所述内核的任一个指定给E编码过程。因此,VSP高效地利用了并行处理计算能力。
文档编号H04B1/66GK101490968SQ200780027016
公开日2009年7月22日 申请日期2007年7月12日 优先权日2006年7月17日
发明者乔纳森·健彰·黄, 再发·尤, 贵-崇(拉里)·杜 申请人:索尼株式会社;索尼电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1