具有用于运动向量存储的地址管理机制的帧间预测处理器的制作方法

文档序号:7643107阅读:151来源:国知局
专利名称:具有用于运动向量存储的地址管理机制的帧间预测处理器的制作方法
技术领域
本发明涉及用于根据其他帧预测帧的设备和方法,并且涉及使用这种 设备和方法的视频编码和解码设备。更具体而言,本发明涉及基于可变尺 寸的块执行视频帧的帧间预测的帧间预测处理器和其方法、视频编码设备 以及视频解码设备。
背景技术
数字视频压縮技术被广泛用于许多应用中。MPEG和H.264是该技术 领域中的标准规范,其中MPEG代表"运动图片专家组"。用在这些标准 中的编码和解码算法将每个给定图片划分为小的区域,并且利用运动补偿 技术处理这些区域。这种区域被称为"宏块"(macroblock)。视频编码 过程涉及帧内预测和帧间预测。帧内预测通过利用正交变换、量化和其他 数据处理算法减少了单个帧内的冗余。另一方面,帧间预测通过对运动补 偿残余(即,当前帧和经运动补偿的参考帧之间的差)编码减少了连续帧 之间的冗余。所得到的视频数据随后被进行熵编码以用于传输或存储。视 频解码过程反转上述步骤以从经压縮的视频中重构原始视频。这种视频编码算法的大部分工作是计算运动向量以用于帧间预测。因 此,希望开发一种更快速和更有效的运动向量计算方法。 一种方法例如在 日本未审查专利申请公开No. 2004-266731中提出。所提出的视频编码方法通过选择性地存储己被确定为用在下一经运动补偿的帧间编码中的有限 数目的参考宏块,减轻了对存储器容量的需求。为了提高用于包含边(edge)和框(outline)的宏块的运动向量预测 的精度,某些现有的编码算法将这种宏块分割为更小的块,并且针对每个 块计算运动向量。例如,R264支持将16X16像素的基本宏块按需要划分 为各种块尺寸(包括4X4像素的子分区)的宏块分区。
图24示出了在R264中定义的块尺寸,其中箭头指示处理顺序。在图 24的最上部示出了尺寸为16X16像素的基本宏块91。在该规范中,块的 尺寸被适当地指定为代表宽度X高度的前缀(如"16X16宏块91")。 16X16基本宏块91可被垂直分区为两个16X8宏块92,或被水平分区为 两个8X16宏块93,或被以两种方式同时分区为四个8X8宏块94。 16X 8宏块92被从上到下地加以处理。8 X 16宏块93被从左到右地加以处理。 8X8宏块94被从左上到右上,然后从左下到右下地加以处理。H.264还允许8X8宏块94被划分为更小的分区,称为"子宏块"。 上述尺寸的前缀也可被应用于这些子宏块。在图24所示的示例中,左上8 X 8宏块94被划分为两个8 X4子宏块95a,右上8 X 8宏块94被划分为两 个4X8子宏块95b,右下8X8宏块94被划分为四个4X4子宏块95c。子 宏块假定按与在上述宏块分区中相同的顺序加以处理。从上文中可见,视频编码设备被允许使用更小的块来进行运动补偿, 以更好地跟踪视频中对象的更快和/或更精细的运动。然而,该技术的使用 导致运动向量的编码数据量增大。因此,若千研究者提出了一种视频编码 设备,该设备可以通过根据用在运动向量预测中的宏块尺寸动态确定虚拟 样本的精度,从而减少产生虚拟样本所需的存储器带宽。例如见日本未审 查专利申请公开No. 2004-48552。这种现有帧间预测技术的一个缺点是必 须根据最小块尺寸对参考图片数据公式化,以使得其可以应对各种尺寸的 宏块。视频编码设备计算与每个个别宏块相对应的运动向量(在适当的情况 下縮写为"MV"),然后根据所计算的当前宏块的周围宏块的运动向量 确定当前宏块的运动向量预测值(在适当的情况下縮写为"MVP")。视 频编码设备随后对MV和MVP之间的运动向量差(在适当的情况下缩写 为"MVD")编码,并将其与宏块信息一起输出作为经编码的视频数据 流。该视频流被视频解码设备接收。视频解码设备对经编码的MVD和宏 块信息解码,并根据MVD和MVP计算运动向量,其中宏块的MVP可以 根据已经被解码的周围块的运动向量确定。利用这些运动向量,视频解码 设备重构原始视频流。
更具体而言,视频解码设备以以下方式产生运动向量。图25是传统 的视频解码设备中的运动向量计算器的框图。该视频解码设备具有存储器901、 MVP计算控制器902、运动向量计算控制器903、 4X4块存储处理 器904、 MB-A向量存储管理器905和MB-BCD向量存储管理器906。符 号"MB-A"指相邻宏块A, "MB-BCD"指相邻宏块B、 C和D (将在下 面描述)。存储器901提供向量存储位置以存储与最小尺寸块(即,4X4 子宏块)相对应的运动向量以供以后参考。这些向量存储位置被用于存储 当前被处理的宏块的运动向量,以及已对与当前宏块相邻的宏块计算的运 动向量。在操作中,图示的视频解码设备在接收到以下几条信息后开始产生运 动向量宏块尺寸、子宏块尺寸和经解码的MVD。 MVP计算控制器902 读出与当前宏块相邻的宏块的运动向量。基于这些运动向量,MVP计算控 制器902产生当前宏块的MVP。这里,MVP计算控制器902以最小块尺 寸为基础指定要读取哪些相邻块。运动向量计算控制器903随后从所计算 的MVP和经解码的MVD中再现运动向量。对于每个4X4像素块(即, 最小块尺寸),4X4块存储处理器904在为当前宏块保留的向量存储位置 上复制经再现的运动向量。存储器901还提供向量存储位置以存储所计算 的相邻宏块的运动向量,与当前宏块的情形类似,这些向量存储位置是以 最小块尺寸为基础保留的。MB-A和MB-BCD向量存储管理器905和906 利用相邻宏块的运动向量填充这些向量存储位置(假定4X4最小块尺 寸)。图26示出了 16X16宏块910和其相邻宏块,其中运动向量被扩展。 当前被处理的宏块由符号"Cu"指代,其周围宏块被称为"MB-A"(紧 挨着左边的)、"MB-B"(紧挨着上面的)、"MB-C"(对角线右上 角)、"MB-D"(对角线左上角)。当读取参考运动向量时,MVP计算 控制器902以最小块为基础指定这些相邻宏块。在图26的示例中,当前焦点(focus)在16X16宏块910上。则其相 邻宏块MB-A是4X4子宏块911,在当前宏块910的左侧的四个子宏块的 最上部。类似地,MB-B是4X4子宏块912,在当前宏块910的紧挨着上
面的四个子宏块的最左侧。MB-C是4X4子宏块913,位于当前宏块910 的右上角的对角线上方。MB-D是4X4子宏块914,位于当前宏块910的 左上角的对角线上方。根据针对这些子宏块计算的运动向量确定当前宏块 910的MVP,然后根据确定的MVP和给定的MVD计算当前宏块910的 运动向量MVO。 4X4块存储处理器904将所计算的运动向量MVO保存在 与当前宏块910相对应的多个向量存储位置910-1中。如上所述,多个向量存储位置910-1被保留在存储器901中以容纳与 最小尺寸块数目相等的运动向量。更具体而言,预备了十六个向量存储位 置,假定尺寸为16X16像素的宏块被分区为4X4像素的最小尺寸块。4 X4块存储处理器904将MVO存储到所有十六个向量存储位置中。(注 意,图26只示出了向量存储位置和宏块之间的逻辑关系,而不是存储器 区域的物理布置。)图26中所示的配置将所计算的运动向量MVO与构成当前宏块910的 每一个子宏块相关联。当焦点移到下一宏块时,宏块910随后将被参考作 为针对新的当前宏块的相邻宏块。例如,宏块910的右上子宏块现在被参 考作为新的当前宏块的MB-A。图26的逻辑配置允许该MB-A的运动向量 被从相应的向量存储位置911-1读出。类似地,宏块910的左下子宏块在 以后的处理中可被参考作为MB-B或MB-C,在这种情形中MB-B和MB-C的运动向量可以从存储器901中的向量存储位置912-1取得。宏块910 的右下子宏块可被参考作为MB-D,在这种情形中其运动向量可以在向量 存储位置914-1处得到。图27示出了与16X8宏块相邻的宏块。图示的16X8宏块921和922 是16X16基本宏块的上分区和下分区。假定当前焦点在上16X8宏块921 上。随后参考四个相邻宏块MB-A 921a、 MB-B 921b、 MB-C921c和MB-D 921d的现有运动向量计算该宏块的运动向量。当焦点移到下16X8宏块 922上时,参考另一组相邻宏块MB-A 922a、 MB-B 922b、 MB-C 922c和 MB-D 922d处的现有运动向量计算其运动向量。注意,与相邻宏块MB-B 922b相对应的运动向量已被计算作为上16X8宏块921的运动向量。从以上示例中可见,传统的方法在与4X4子宏块相对应的向量存储
位置中保存了先前已计算的运动向量的多个拷贝。这些存储的运动向量可 以在以后用于计算另一宏块的运动向量。图28A和28B示出了运动向量是如何在多个向量存储位置中复制的。 具体而言,图28A示出了写入16X16宏块的运动向量的序列,图28B示 出了写入16X8宏块的运动向量的序列。在16X16宏块的情形中,针对一个基本宏块产生一个运动向量 MVO,并且该运动向量MVO被写入在十六个向量存储位置中。在图28A 的示例中可见,写序列由写使能信号(EN)的上升沿触发以在将写地址 (WAD)从O增大到15的同时写入相同的运动向量MV0。该操作允许后 续的运动向量计算过程从这十六个地址中的任何一个取得相同的MVO。在16X8宏块的情形中,针对16X16基本宏块的上半部分和下半部 分计算两个运动向量MVO禾n MV1。 MVO被写入在与上16X8宏块921 (图27)相对应的向量存储位置中,而MV1被写入在与下16X8宏块 922 (图27)相对应的向量存储位置中。如图28B所示,由EN的上升沿 触发的向量写序列开始通过将WAD从0增大到7将MVO写入到前八个向 量存储位置中。紧接着,另一系列八个存储器周期通过将WAD从8增大 到15将MV1写入到后八个向量存储位置中。因此,可以通过指定范围从 0到7的地址,从与上16X8宏块921相对应的向量存储位置中取得 MVO。另外,可以通过指定范围从8到15的地址,从与下16X8宏块922 相对应的向量存储位置中取得MV1 。由于先前计算的运动向量的多个拷贝被存储在与16X16宏块相对应 的向量存储位置中,因此后续对于其他宏块的处理可以在这些向量存储位 置中的任何一个处得到该参考运动向量。然而,将运动向量重复地写入与 16X16宏块相对应的所有向量存储位置是费时的。这对于其他尺寸和形状 的宏块来说也是一样的。返回图25, MB-A向量存储管理器905将相邻宏块MB-A的数据存储 在被保留作为存储器901的一部分的存储位置中,以供后续处理中使用。 在假定宏块被分区为4X4子宏块的情形中,也必需复制数据。该假设导 致运动向量计算的处理时间增大。H.264的帧间编码允许在前向和后向两个方向上使用多个参考帧以提高预测精度。该特征必然需要更大数目的向量存储位置。随后屏幕尺寸或 像素数目的增大,视频编码和解码设备将不得不处理更大数目的宏块。从 而,在多个位置中复制运动向量的任务将越来越费时。因此,需要开发一种能加速MVP计算从而可以以高精度预测具有大图片尺寸的视频帧的新技术。发明内容考虑到上述内容,本发明的目的是提供一种用于处理可变尺寸宏块以 实现高速帧间预测的设备和方法。本发明的另一个目的是提供一种采用所 提出的帧间预测设备的视频编码设备和视频解码设备。为了实现上述第一目的,本发明提供了一种以块为基础执行视频帧的帧间预测的帧间预测处理器。该帧间预测处理器包括以下元件(a)参考图片存储器,其提供与最小尺寸块相对应的向量存储位置以存储针对可变尺寸的块计算的运动向量;(b)地址计算器,其至少基于被指定的块 的尺寸计算参考图片存储器中向量存储位置的地址;(c)预测值计算 器,其向地址计算器指定与当前块相邻的块以便从其获得针对被指定的相 邻块计算的运动向量的地址,从所获得的参考图片存储器的地址中读出运 动向量,并基于从参考图片存储器中读出的运动向量确定当前块的运动向 量预测值;以及(d)参考图片存储管理器,其将所计算的运动向量写入 到在参考图片存储器内保留的向量存储位置中。另外,为了实现上述第二目的,本发明提供了一种通过以块为基础执 行源图片和参考图片之间的运动补偿预测来将视频帧编码为压縮视频数据 的视频编码设备。该视频编码设备包括以下元件(a)参考图片存储 器,其提供与最小尺寸块相对应的向量存储位置以存储针对可变尺寸的块 计算的运动向量;(b)地址计算器,其至少基于被指定的块的尺寸计算 参考图片存储器中向量存储位置的地址;(c)预测值计算器,其向地址 计算器指定与当前块相邻的块以便从其获得针对被指定的相邻块计算的运 动向量的地址,从所获得的参考图片存储器的地址中读出运动向量,并基
于从参考图片存储器中读出的运动向量确定当前块的运动向量预测值;以 及(d)参考图片存储管理器,其将所计算的运动向量写入到在参考图片 存储器内保留的向量存储位置中。另外,为了实现上述第二目的,本发明提供了一种从压縮视频信号中 重构原始视频帧的视频解码设备,所述压縮视频信号是通过以块为基础执 行运动补偿帧间预测产生的。该视频解码设备包括以下元件(a)参考 图片存储器,其提供与最小尺寸块相对应的向量存储位置以存储针对可变 尺寸的块计算的运动向量;(b)地址计算器,其至少基于被指定的块的 尺寸计算参考图片存储器中向量存储位置的地址;(C)预测值计算器, 其向地址计算器指定与当前块相邻的块以便从其获得针对被指定的相邻块 计算的运动向量的地址,从所获得的参考图片存储器的地址中读出运动向 量,基于从参考图片存储器中读出的运动向量确定当前块的运动向量预测 值,并从所确定的运动向量预测值和经解码的运动向量差重构所述当前块 的运动向量;以及(d)参考图片存储管理器,其将经重构的运动向量写 入到在参考图片存储器内保留的向量存储位置中。本发明的以上和其他的目的、特征和优点将从下面结合附图的描述中 变清楚,附图以示例方式图示了本发明的优选实施例。


图1示出了实现本发明的帧间预测处理器的概念。图2是根据本发明实施例的视频编码设备的框图。图3是根据本发明实施例的视频解码设备的框图。图4是作为所提出的视频解码设备的一个元件的帧间预测器的功能框 图,其在帧间预测模式中产生运动向量。图5示出了根据本实施例的帧结构和向量存储位置之间的关系。图6示出了构成16X16基本宏块的4X4块和其块号。图7A和7B示出了在16X16宏块的情形中本实施例是如何计算并保 存运动向量的。图8A和8B示出了在16X8宏块的情形中本实施例是如何计算并保存
运动向量的。图9A和9B示出了在8X16宏块的情形中本实施例是如何计算并保存 运动向量的。图IOA和IOB示出了在8X8宏块的情形中本实施例是如何计算并保 存运动向量的。图IIA和IIB示出了本实施例是如何将宏块分区为子宏块以及如何为 其产生代表性运动向量的。图12A是另一副示出了本实施例是如何产生子宏块的运动向量的图。 图12B示出了本实施例是如何将代表性运动向量保存在存储器中的。 图13示出了地址翻译表是如何被用于参考16X16宏块和16X8宏块的。图14示出了地址翻译表是如何被用于参考8X16宏块、8X8宏块、8 X4子宏块、4X8子宏块和4X4子宏块的。图15示出了本实施例是如何将相邻宏块的运动向量保存在MB-A向 量存储位置中的。图16示出了本实施例是如何将相邻宏块的运动向量保存在MB-BCD 向量存储位置中的。图17A和17B示出了根据本实施例的相邻16X16宏块和16X8宏块 的代表性向量存储位置。图18A和18B示出了根据本实施例的相邻8X16宏块和8X8宏块的 代表性向量存储位置。图19示出了根据本实施例的相邻4X4子宏块的代表性向量存储位置。图20和21示出了地址翻译表是如何被用于参考MB-A向量存储位置的。图22和23示出了地址翻译表是如何被用于参考MB-BCD向量存储位 置的。图24示出了在H.264中定义的宏块的各种尺寸。
图26示出了与16X16宏块相邻的宏块和在4X4块上扩展的运动向图27示出了与16X8宏块相邻的宏块。图28A和28B示出了在多个存储位置中复制运动向量的过程。
具体实施方式
下面将参考附图描述本发明的优选实施例,附图中相似的标号在全文 中指代相似的元件。首先描述本发明的概述,然后描述本发明的特定实施 例。在该文件的以下部分,宏块(及其分区)的尺寸和形状由代表其宽度 和高度的前缀指示。例如,术语"16X8宏块"表示该宏块为16个像素宽 以及8个像素高。尽管本实施例应对各种块尺寸,但是16X16像素的全 尺寸宏块被称为"基本宏块"。还要注意,术语"宏块"(或简称 "块")在该说明书中用来指用于运动补偿的数字图像的基本单元。除非 这种区别是必要的,否则这种意义上的宏块指16X16基本宏块,以及具 有在前面部分中说明的规定尺寸的宏块分区和宏块子分区(或子宏块)。图1示出了实现本发明的帧间预测处理器的概念。该实施例意图用在 视频编码设备和视频解码设备中,这些设备通过将每个给定的图片帧划分 为具有适当尺寸的小区域(被称为宏块)以用于运动向量预测目的来处理 视频数据流。块尺寸(即,宏块的面积尺寸)是取决于图像运动幅度或冃 标的所需分辨率而从若干个规定尺寸中选出的。本发明并不讨论如何确定 块尺寸的细节,因为某些现有的技术文献已经提供了这些信息。帧间预测处理器用于参考周围块的运动向量(MV)计算特定宏块的 运动向量预测值(MVP)。为此,所提出的帧间预测处理器包括以下元 件参考图片存储器1、预测值计算器2、地址计算器3和参考图片存储 管理器4。参考图片存储器1存储包括与当前被处理的宏块相邻的那些宏块的多 个宏块的运动向量,这些相邻宏块可以在计算该当前宏块的MVP时被参 考。参考图片存储器1提供至少两组保留的向量存储位置。 一组用于存储 在当前被处理的基本宏块中包括的宏块的运动向量。另一组用于存储与当
前宏块相邻的被参考宏块的运动向量。每组向量存储位置可以容纳最大数 目的运动向量,该最大数目是根据基本宏块的分区的最小尺寸确定的。例如,在H.264的情形中, 一个16X16基本宏块可被划分为16个4X4子宏 块。在假定该分区的最小尺寸的情况下,参考图片存储器l针对每个16X 16基本宏块提供了 16个向量存储位置。针对可变尺寸宏块计算的运动向 量可被存储在与一个基本宏块相对应的这十六个向量存储位置之一中。 即,当当前被处理的宏块例如是16X16基本宏块时,其运动向量不被输 入到全部十六个向量存储位置,而是被输入到从这十六个位置中选出的-个向量存储位置。根据规定规则进行适当的选择,这种规则对于每种不同 形状的宏块是唯一的。选出的向量存储位置在下文中将被称为"代表性向 量存储位置",并且存储在该位置中的运动向量将被称为"代表性向预测值计算器2向地址计算器3指定具体的相邻宏块以获得其在参考 图片存储器1中的相应代表性向量存储位置的存储器地址。所获得的存储 器地址被用于从参考图片存储器1中读出期望的运动向量。基于这些运动 向量,预测值计算器2计算当前块的MVP。在视频编码的情形中,这种 MVP和MV之间的运动向量差(MVD)被计算并被压縮以递送到解码器 设备。在视频解码的情形中,预测值计算器2从所计算的MVP和解码的 MVD中再现运动向量。再现的运动向量被用于重构视频图片。当从预测值计算器2接收到指定相邻宏块的地址请求时,地址计算器 3基于所指定的相邻宏块的块尺寸确定其相应代表性向量在参考图片存储 器1中的存储器地址。针对在先宏块计算的运动向量可以在与这些宏块相 对应的代表性向量存储位置中得到。由于与特定宏块相对应的代表性向量 存储位置可以唯一地从该宏块的块尺寸确定,因此地址计算器3首先杳看 给定的地址请求以指出指定宏块的尺寸。地址计算器3根据块尺寸计算存 储器地址,并将其传递回预测值计算器2。如下文中详细所述,地址计算 器3可被设计为使用将代表性向量存储位置的存储器地址值与不同的块尺 寸相关联的翻译表。参考图片存储管理器4在适当的向量存储位置中存储代表性向量以供 参考,以计算下一宏块和后续宏块的运动向量。相邻的宏块向量存储位置 已被保留在参考图片存储器1中,以存储用于计算其他宏块的MVP的运 动向量。在操作中,预测值计算器2按预定顺序连续选择给定源图片的宏块,以计算每个宏块的运动向量。参考图片存储器1在先前保留的代表性向量 存储位置中尺寸针对在先宏块计算的代表性运动向量。为了计算当前选择的宏块的MVP,预测值计算器2需要与围绕当前宏块的相邻宏块相对应的 每个代表性向量存储位置的存储器地址。因此,预测值计算器2将地址请 求发送到地址计算器3,指定想要知道的这些相邻宏块。地址计算器3基 于该宏块的块尺寸计算每个指定的相邻宏块的存储器地址。利用从地址计 算器3接收到的存储器地址,预测值计算器2从参考图片存储器1中取得 相关的运动向量,从而产生MVP。在视频编码应用中,MVP被用于计算 要编码的运动向量差MVD。在视频解码应用中,MVP被用于从解码后的 MVD中重构运动向量。参考图片存储管理器4在向量存储位置之一中保 存所计算的当前宏块的运动向量,以便该向量可以在以后被参考作为相邻 宏块的运动向量。从上文中可见,所提出的帧间预测处理器采用地址计算器3来提供存 储先前计算的运动向量的代表性向量存储位置的地址。地址计算器3消除 了在参考图片存储器1中的多个存储位置内复制所计算的运动向量以允许 使用最小块尺寸的需要。从而,本实施例减少了运动向量计算的处理时 间。H.264视频编码设备这一部分和以下的部分将讨论H.264视频编码和解码设备作为本发明 的更加具体的实施例。如前所述,H.264标准提供了以下的宏块尺寸选 项16X16、 16X8、 8X16禾卩8X8。如果选择8X8,则这四个8X8宏块 分区中的每一个可被分割为具有以下尺寸的更小的块8X8、 8X4、 4X8 和4X4 (被称为宏块子分区)。基线编码算法以宏块为基础对每个给定的 源帧进行编码,在利用一个帧内的空间冗余的帧内编码和利用连续帧之间 的时间冗余的帧间编码之间切换。解码算法遵循与之相反的过程。
尽管H.264允许双向运动预测,但是下面的描述假定了前向预测以进行简化。然而,本发明不应当限于前向预测。本领域技术人员将意识到, 通过添加某些存储器区域以存储过去和未来参考帧的运动向量,本发明也 可以应用于双向预测。图2是根据本发明实施例的视频编码设备的框图。图示的视频编码设 备IOO包括以下元件宏块划分器101、运动向量估计器102、过去帧缓 冲器103、帧间预测器104、帧内预测器105、当前帧缓冲器106、预测模 式选择器107、减法器108、正交变换和量化单元109、熵编码器110、解 量化和反向正交变换单元111、加法器112、解块滤波器113和帧缓冲器 管理器114。宏块划分器101将给定源图片划分为预定尺寸的宏块。运动向量估计 器102将源宏块的视频信号分量与存储在过去帧缓冲器103中的参考宏块 的视频信号分量相比较,从而计算该源宏块的运动向量。由于邻近块的运 动向量经常是高度相关的,因此可以从周围块的向量中预测出某个块的运 动向量。从而,帧间预测器104根据周围的运动向量计算运动向量预测值 MVP,然后通过从真实运动向量中减去MVP来计算运动向量差MVD。另 一方面,帧内预测器105执行存储在当前帧缓冲器106中的帧的帧内编 码。预测模式选择器107例如通过将帧间预测器104的预测误差与帧内预 测器105的预测误差相比较,来选择使得当前宏块的编码效率最大的编码 模式。预测模式选择器107创建编码模式参数以指示选择结果。编码模式 参数被传递到熵编码器110,作为要进行熵编码的数据的一部分。编码模 式参数包括宏块分区的尺寸和子宏块分区的尺寸。当选择帧内模式时,划分后的源宏块被原样从宏块划分器101提供给 正交变换和量化单元109。这些宏块被进行正交变换和量化,所得到的变 换系数被传递到熵编码器110以进行熵编码和传输。变换系数还被解量化 和反向正交变换单元111解码并被发送到当前帧缓冲器106中。当选择帧间模式时,帧间预测器104向熵编码器110提供MVD以用 于熵编码。另外,利用MVP预测的图片通过预测模式选择器107被给予
减法器108。减法器108以宏块为基础从源图片中减去预测的图片,并将结果发送到正交变换和量化单元109。经量化的输出数据被解量化和反向 正交变换单元111本地解码并被导向加法器112,在加法器112处添加通 过预测模式选择器107提供的预测图片。所得到的图片被写入到当前帧缓 冲器106中。熵编码器IIO利用熵编码算法对给定数据编码,从而输出携 带有压縮形式的视频数据的经编码视频信号。存储在当前帧缓冲器106中 的参考图片受到解块滤波器113的处理,在解块滤波器113处对宏块之间 的边界区域进行平滑。所得到的图片被通过帧缓冲器管理器U4输入到过 去帧缓冲器103。H.264视频解码设备图3是根据本发明实施例的视频解码设备的框图。图示的视频解码设 备200由以下元件构成熵解码器201、解量化和反向正交变换单元 202、加法器203、当前帧缓冲器204、帧内预测器205、预测模式选择器 206、解块滤波器207、帧缓冲器管理器208、过去帧缓冲器209和帧间预 测器210。利用这些元件,视频解码设备200对由图2的视频编码设备 100产生的经编码视频信号进行解码。给定的经编码视频信号被熵解码器201进行熵解码,然后被解量化和 反向正交变换单元202解量化并反向变换。该解码过程的结果包括MVD 形式的运动向量数据和编码模式参数等等。基于编码模式参数,预测模式 选择器206选择帧内预测器205或帧间预测器210。当选择帧内预测器205时,由解量化和反向正交变换单元202重构的 图片帧被路由到当前帧缓冲器204。当选择预测模式选择器206时,运动 向量差MVD被解码回视频编码设备100针对各个宏块产生的原始运动向 量。利用所得到的运动向量,帧间预测器210再现预测图片,并将预测图 片通过预测模式选择器206提供给加法器203。在解量化和反向正交变换 单元202处解码的预测误差随后被添加到该预测图片。所得到的经解码图 片被输入到当前帧缓冲器204。当前帧缓冲器204中的该图片数据被通过 解块滤波器207和帧缓冲器管理器208传送到过去帧缓冲器209之一。上述视频解码设备中的帧间预测器210按以下方式对运动向量解码。 图4是帧间预测器210的功能框图。具体而言,帧间预测器210包括以下 元件存储器211、 MVP计算器212、地址翻译器213、运动向量计算器 214、 MB-A向量存储管理器215和MB-BCD向量存储管理器216。如前 所述,当前宏块由符号"Cu"指代,其相邻宏块被称为"MB-A"(紧挨 着左边的)、"MB-B"(紧挨着上面的)、"MB-C"(对角线右上 角)、"MB-D"(对角线左上角)。另外,三个相邻宏块MB-B、 MB-C 和MB-D被统称为符号"MB-BCD"。存储器211存储先前已针对在先宏块计算的运动向量。这些运动向量 中的某一些被用于计算当前宏块的MVP。存储器211还提供用于当前块的 运动向量的存储空间。更多细节将在下面描述。MVP计算器212向地址翻译器213指定围绕当前宏块的每个相关的相 邻宏块,从而获得存储器211中每个相应的代表性向量存储位置的地址。 利用从所获得的地址中读出的代表性向量,MVP计算器212计算MVP。 尽管有各种确定MVP的方式,但是本实施例计算相邻宏块的运动向量的 中值作为运动向量预测值MVP:MVP-中值(MV画A, MV-B, MV-C) ......(1)其中MV-A、 MV-B和MV-C分别指相邻宏块MB-A、 MB-B和MB-C的运动向量。在当前宏块位于帧的右边的情形中(其中不可获得MV-C),公式(1)中的运动向量MV-C可被替换以另一个宏块MB-D的运动向量MV-D。三个变量x、 y和z的中值表达如下中值(x, y, z)=x+y+z-Min(x, Min(y, z))-Max(x, Max(y, z))......(2)其中Min(x, y)指x和y中的较小值,Max(x, y)指x和y中的较大值。 地址翻译器213将给定的相邻宏块尺寸(或子宏块尺寸)翻译为代表性向量存储位置地址。运动向量计算器214按以下方式根据由MVP计算器212计算的MVP和经解码MVD重构运动向量 MV=MVP+MVD......(3)所得到的运动向量MV被保存在存储器211中,更具体而言,是保存 在与当前宏块相对应的代表性向量存储位置中。存储器211维护先前针对每个宏块计算的运动向量。MB-A向量存储
管理器215读出这些存储中与一个宏块相对应的运动向量之一,以在后续的向量预测过程中被参考作为相邻宏块MB-A,并将其输入到MB-A向量 存储位置。类似地,MB-BCD向量存储管理器216读出与宏块相对应的存 储的运动向量,以在后续的向量预测过程中被参考作为相邻宏块MB-B、 MB-C和MB-D,并将其输入到同一存储器211中保留的MB-BCD向量存 储位置。上述帧间预测器210根据在本实施例中提出的帧间预测方法进行操 作。帧间预测的细节将在下面的部分中给出。 运动向量的存储器布置根据本实施例,存储器211提供针对计算的运动向量保留的向量存储 位置。具体而言,图5示出了根据本实施例帧结构和若干类向量存储位置 之间的关系。对于帧间预测,给定帧300被划分为多个16X16基本宏块 301,其中宏块的尺寸可以按需要变化。根据本实施例,存储器211提供当前块向量存储位置310以存储针对 当前宏块Cu计算的运动向量。还提供了相邻块数据存储位置320、 331和 332以存储相邻宏块MB-A和MB-BCD的运动向量。假定16X16基本宏 块被分区为十六个4X4基本宏块,即最小尺寸分区,当前宏块存储位置 310可以容纳高达十六个向量。相邻块向量存储位置被划分为两类。 一类是用于存储作为相邻宏块 MB-A被参考的宏块的运动向量的MB-A向量存储位置320。 MB-A向量 存储位置320被映射到当前宏块Cu左边的四个垂直对齐的4X4子宏块 上。当当前宏块Cu 310的运动向量在当前块向量存储位置中变得可用时, MB-A向量存储管理器215将它们拷贝到这些MB-A向量存储位置320。 细节将在后面参考图15描述。另一类是被保留来存储作为相邻宏块MB-B、 MB-C和MB-D被参考 的宏块的运动向量的MB-BCD向量存储位置331和332。 MB-BCD向量存 储位置331被映射到紧挨着当前宏块Cu 310上方的4X4子宏块的最下一 行上。该行包括相邻宏块MB-B、 MB-C和MB-D。 MB-BCD向量存储位 置332被映射到当前宏块Cu 310所属的帧线上的4X4子宏块的最下一行 上。当当前宏块CU的运动向量在当前块向量存储位置310中变得可用时,MB-BCD向量存储管理器216将它们拷贝到MB-BCD存储位置332。 MB-BCD存储位置332中的这些运动向量将在焦点到达帧的下一条线时被 参考。更多细节将在后面参考图16描述。随着处理焦点的移动,存储在存储器211中的以上向量存储位置内的 运动向量被更新。例如,假定焦点从当前宏块移到下一宏块311。已被用 于存储在先宏块的运动向量的向量存储位置随后开始为新的当前宏块311 服务。从而,MB-A向量存储位置320被用于存储前一宏块的运动向量。 MB-BCD向量存储位置331和332也以类似方式被重写。子宏块标号为了说明方便,基本宏块的4X4子宏块分区按以下方式标号。图6 示出了被分配给构成16X16基本宏块340的十六个子宏块的框号。具体 而言,图示的16X16基本宏块340首先被分区为四个8X8宏块,并且标 号过程按左上、右上、左下和右下的顺序进行。另外,每个8X8宏块被 分区为四个4X4子宏块,并且所得到的左上、右上、左下和右下的块按 该顺序标号。因此,构成左上8X8宏块的左上、右上、左下和右下子块 分别被标号为bO、 bl、 b2和b3。然后构成右上8X8宏块的左上、右上、 左下和右下子块分别被标号为b4、 b5、 b6和b7。类似地,构成左下8X8 宏块的四个4X4子宏块被标号为b8到bll,构成右下8X8宏块的四个4 X4子宏块被标号为b12到b15。在下一部分中,以上定义的块号b0到b15将被用于指代与宏块分区 相对应的向量存储位置。运动向量计算和存储管理再次参考图5, MVP计算器212咨询地址翻译器213以获得存储有每 个被参考的相邻宏块的运动向量的存储器地址。MVP计算器212从所获得 的存储器地址中读出所需的运动向量,并根据公式(1)计算MVP。然后 利用公式(3),运动向量计算器214根据所计算的MVP和经解码MVD 产生运动向量MVO,然后将结果写到存储器211中的代表性向量存储位置 中。现在假设该代表性向量存储位置对应于当前宏块的左上角处的4X4
子宏块。图7A和图7B示出了在16X16宏块的情形中本实施例如何产生运动 向量和如何将它们存储到存储器中。MVP计算器212读出与16X16当前 宏块Cu 400相邻的MB-A的b5 400a、 MB-B的b10 400b、 MB-C的b10 400c和MB-D的b15 400d的运动向量,从而根据公式(1)计算MVP。然 后利用公式(3),运动向量计算器214根据所计算的MVP和经解码的 MVD产生运动向量MVO。所计算的运动向量MVO被存储在位于当前宏 块Cu400的左上角的bO 401中。参考图7B的序列图,EN信号发起将MVO写入到地址WAD=0的存 储位置bO中的写周期。当随后的MVP计算过程参考该向量时,地址翻译 器213自动提供上述存储地址,从而消除了在存储器211中的预定向量存 储位置上复制同一向量的需要。即,所提出的方法只写入一个地址,而传 统方法写入十六个地址。本实施例极大地减少了处理时间。图8A和8B示出了本实施例是如何产生代表性运动向量以及在16X8宏块的情形中是如何将其保存到存储器中的过程。假定当前焦点在上16X8宏块CuO 411上。MVP计算器212从与16X 8当前宏块CuO 411相邻的MB-A的b5 411a、 MB陽B的b10 411b、 MB-C 的b10 411c和MB-D的b15 411d读取运动向量。MVP计算器212根据这 些运动向量确定MVP,从而允许运动向量计算器214计算当前宏块CuO 411的运动向量MVO。所计算的运动向量MVO被存储在位于当前宏块 CuO 411的左上角的块b0 412中。现在假定焦点移到下16X8宏块Cul 413。 MVP计算器212从与16X 8当前宏块Cul 413相邻的MB-A的b13 413a、 CuO 411的b2 413b (如同 MB-B —样)和MB-D的b7 413d读取运动向量。MVP计算器212根据这 些运动向量确定MVP,从而允许运动向量计算器214计算当前宏块Cul 413的运动向量MV1。注意,对于位于相邻宏块MB-C位置处的宏块X 413c没有计算运动向量。由此,运动向量MV1通过修改公式(1)以使得 运动向量MV-A、 MV-B和MV-D的中值被选择来计算。所计算的MV1 随后被存储在位于当前宏块Cul 413的左上角的b8 414中。
参考图8B的序列图,EN信号被两次断言以发起两个写周期。第一写 周期将MVO存储到地址WAD=0的存储位置b0中。第二写周期将MV1 存储到地址WAD=8的另一个存储位置b8中。图9A和9B示出了本实施例是如何产生代表性运动向量以及在8X16 宏块的情形中是如何将其保存到存储器中的过程。假定当前焦点在左8X 16宏块CuO 421上。MVP计算器212从与8X16当前宏块CuO 421相邻的 MB-A的b5 421a、 MB-B的b10 421b、 MB-C的b14 421c和MB-D的b15 421d读取运动向量。MVP计算器212根据这些运动向量确定MVP,从而 允许运动向量计算器214计算当前宏块CuO 421的运动向量MVO。所计算 的运动向量MVO被存储在位于当前宏块CuO 421的左上角的b0 422中。现在假定焦点移到右8X16宏块Cul 423。 MVP计算器212从与16X 8当前宏块CuO 411相邻的MB-A的bl 423a (=前一 8X 16宏块CuO)、 MB-B的b14 423b、 MB-C的blO 423c和MB-D的bll 423d读取运动向 量。MVP计算器212根据这些运动向量确定MVP,从而允许运动向量计 算器214计算当前宏块Oil 423的运动向量MV1。所计算的运动向量 MV1被存储在位于当前宏块Cul 423的左上角的b4 424中。参考图9B的序列图,EN信号被两次断言以发起两个写周期。第一写 周期将MV0存储到地址WAD=0的存储位置b0中。第二写周期将MV1 存储到地址WAD=4的另一个存储位置b4中。图IOA和IOB示出了本实施例是如何产生代表性运动向量以及在8X8宏块的情形中是如何将其保存到存储器中的过程。假定当前焦点在左上 8X8宏块Cu0 431上。MVP计算器212从与当前宏块Cu0 431相邻的MB-A的b5 431a、 MB-B的b10 431b、 MB-C的b14 431c和MB-D的b15 431d 读取运动向量。MVP计算器212根据这些运动向量确定MVP,从而允许 运动向量计算器214计算当前宏块Cu0 431的运动向量MV0。所计算的运 动向量MV0被存储在位于当前宏块Cu0 431的左上角的b0 432中。假定焦点移到右上8X8宏块Cul 433。则MVP计算器212从围绕当 前宏块Cul 433的MB-A的bl 433a (=前一 8X8宏块CuO) 、 MB-B的 bl4 433b、 MB-C的bl0 433c和MB-D的b11 433d读取运动向量。MVP计
算器212根据这些运动向量确定MVP,从而允许运动向量计算器214计算 当前宏块Cul 433的运动向量MV1。所计算的运动向量MV1被存储在位 于当前宏块Cul 433的左上角的b4 434中。
假定焦点移到左下8X8宏块Cu2 435。则MVP计算器212从围绕当 前宏块Cu2 435的MB-A的b13 435a、 MB-B的b2 435b (=左上8 X 8宏块 CuO 431) 、 MB誦C的b6 435c (=右上8X8宏块Cul 433)禾卩MB-D的b7 435d读取运动向量。MVP计算器212根据这些运动向量确定MVP,从而 允许运动向量计算器214计算当前宏块Cu2 435的运动向量MV2。所计算 的运动向量MV2被存储在位于当前宏块Cu2 435的左上角的b8 436中。
假定焦点移到右下8X8宏±央Cu3 437。则MVP计算器212从围绕当 前宏块Cu3 437的MB-A的b9 437a (=在先8X8宏块Cu2 435) 、 MB-B 的b6 437b (=右上宏块Cul 433)和b3 437d (=左上宏块CuO 431)读取 运动向量。MVP计算器212根据这些运动向量确定MVP,从而允许运动 向量计算器214计算当前宏块Cu3 437的运动向量MV3。注意,在该过程 中不考虑在MB-C位置处的分区X 437c。所得到的向量MV3被存储在位 于当前宏块Cu3 437的左上角的b12 438中。
参考图10B的序列图,EN信号被四次断言以发起四个写周期。第-写周期将MVO存储到地址WAD=0的存储位置b0中。第二写周期将MV1 存储到地址WAD=4的另一个存储位置b4中。第三写周期将MV2存储到 地址WAD=8的另一个存储位置b8中。第四写周期将MV3存储到地址 WAD=12的另一个存储位置b12中。
图IIA、 IIB、 12A和12B示出了本实施例是如何将宏块分区为子宏块以及如何产生并保存子宏块的代表性运动向量的过程。具体而言,图 IIA示出了宏块子分区的示例,图UB示出了针对子宏块SB0到SB2产生 的代表性运动向量。图12A示出了针对另一个子宏块SB3产生的代表性运 动向量。图12B是示出了如何在存储器211中保存所得到的运动向量的序 列图。
参考图IIA,图IIA示出了宏块子分区的示例。每个8X8宏块可被 分区为更小的块。具体而言,左上8X8宏块实际不被分区,而是仍保持
为单个8X8块SB0 441。右上8X8宏块被划分为两个8X4块,SB1-0 451 和SB1陽1 453。左下8X8宏块被划分为两个4X8块,SB2誦0 461和SB2-1 463。右下8X8宏块被划分为四个4X4块,SB3-0 471、 SB3-1 472、 SB3-2 473和SB3-3 474。参考图IIB,按以下方式确定这些子宏块的运动向量。针对左上子宏 块SB0 441,根据周围块的运动向量确定运动向量MVO,并保存在位于 SBO 441的左上角的bO 442中。针对上8X4子宏块SB1-0 451 ,根据周围 块的运动向量确定运动向量MV1,并保存在与SB1-0 451的左半部分相对 应的b4 452中。类似地,针对下8X4子宏块SB1-1 453产生运动向量 MV2,并保存在与SB1-1 453的左半部分相对应的b6 454中。以类似方 式,针对左4X8子宏块SB2-0 461产生运动向量MV3,并保存在b8 462 中,针对右4X8子宏块产生运动向量MV4,并保存在b9464中。参考图12A,分别针对最小尺寸的子宏块SB3-0 471、 SB3-1 472、 SB3-2 473禾卩SB3-3 474确定运动向量MV5、 MV6、 MV7禾卩MV8。这些 运动向量被保存在其相应的存储位置b12、 b13、 bl4和bl5中。参考图12B的序列图,EN信号发起九个写周期。第一写周期将MVO 存储到地址WAD=0的b0中,第二写周期将MV1存储到地址WAD=4的 b4中。第三写周期将MV2存储到地址WAD=6的b6中,第四写周期将 MV3存储到地址WAD=8的b8中。第五写周期将MV4存储到地址 WAD=9的b9中,第六写周期将MV5存储到地址WAD=12的b12中。第 七写周期将MV6存储到地址WAD=13的b13中,第八写周期将MV7存 储到地址WAD=14的b14中。最后,第九写周期将MV8存储到地址 WAD=15的bl5中。本实施例仅在特定的向量存储位置(例如,与左上块相对应的一个位 置)中保存所产生的运动向量,该特定存储位置代表了产生该向量的宏块 域。从图7A到10B中可见,对于被分区的基本宏块的预测过程在分区尺 寸为8X8或更大时至多涉及四个写周期。只有当每个分区是4X4块时,基本宏块的全部十六个存储位置才被填满。在大多数情形中,与传统过程 不同,利用较小数目的写周期完成了预测过程。从而,本实施例减少了预 测运动向量所需的时间。上述过程允许运动向量被存储在向量存储位置310、 320、 331和332 中,这些向量存储位置是为当前宏块Cu和其周围的宏块MB-A和MB-BCD保留的,如图5中所述。地址翻译地址翻译器213通过将指定相邻宏块的给定信息翻译为与该宏块相对 应的代表性向量存储位置的特定地址,来为MVP计算器212服务。艮IJ, 地址翻译器213从MVP计算器212接收指定要参考的4X4相邻宏块的一 条信息。更具体而言,MVP计算器212发送期望的16X16基本宏块的标 识符以及特定的块号(例如,图6中所示的b0到b15)。地址翻译器213 具有地址翻译表,该表将宏块尺寸和子宏块尺寸与代表性向量存储位置相 关联,以提供与指定的相邻宏块相对应的地址。如前在图5中所述,本实施例从与相邻宏块MB-A和MB-BCD相对 应的向量存储位置320、 331和332中读出参考运动向量(当该参考运动 向量位于当前被处理的宏块Cu外部时)。具体的参考运动向量是外部向 量还是内部向量不仅取决于当前宏块的形状,还取决于当前宏块的位置。 这一部分将首先说明内部运动向量的情形,然后说明外部运动向量的情 形。出于说明目的,我们假定外部向量可以按与内部向量相同的方式处 理。即,假定每一宏块中的运动向量按与图5的当前宏块Cu相同的方式 存储。图13和14示出了地址翻译表在本实施例中是如何起作用的。具体而 言,图13示出了地址翻译表是如何用于参考16X16宏块和16X8宏块 的。图14示出了地址翻译表是如何用于参考8X16宏块、8X8宏块、8X 4子宏块、4X8子宏块和4X4子宏块的。当相邻宏块是16X16宏块时,MVP计算器212可以在其地址请求中 指定十六个块b0到b15之一。然而,这种情形中,代表性向量只存储在 与块b0相对应的一个向量存储位置中,如图7中所述。因此,响应于来 自MVP计算器212的请求,地址翻译器213返回块b0的向量存储位置地
址,而不论在该请求中指定了哪一个块。被参考作为相邻宏块的宏块已经 经受了向量预测处理,这意味着其尺寸是已知的。因此,该实施例可被配 置为将这种相邻宏块的尺寸信息保留在存储器中的某处以供以后参考。当相邻宏块是上16X8宏块时,MVP计算器212可以在其地址请求中 指定前八个块b0到b7之一。这种情形中,代表性向量被存储在与块bO相 对应的向量存储位置中,如图8中所述。因此,响应于来自MVP计算器 212的请求,地址翻译器213返回块b0的向量存储位置地址,而不论在该 请求中指定了哪一个块。当相邻宏块是下16X8宏块(未示出)时,MVP计算器212可以在其 地址请求中指定后八个块b8到b15之一。这种情形中,代表性向量被存 储在与块b8相对应的向量存储位置中,如图8中所述。因此,地址翻译 器213向MVP计算器212返回块b8的向量存储位置地址,而不论在该请 求中指定了哪一个块。参考图14,当相邻宏块是左8X16宏块时,MVP计算器212可以在 其地址请求中指定以下块之一b0、 bl、 b2、 b3、 b8、 b9、 b10禾n bll。 这种情形中,代表性向量被存储在与块b0相对应的向量存储位置中,如 图9中所述。因此,地址翻译器213向MVP计算器212返回块b0的地 址。当相邻宏块是右8X16宏块(未在图14中示出)时,MVP计算器 212可以在其地址请求中指定以下块之一b4、 b5、 b6、 b7、 b12、 b13、 bl4和bl5。这种情形中,代表性向量被存储在与块b4相对应的向量存储 位置中,如图9中所述。因此,地址翻译器213向MVP计算器212返回 块b4的地址。当相邻宏块是左上8X8宏块时,MVP计算器212可以指定块b0、 bl、 b2或b3。这种情形中,代表性向量被存储在与块bO相对应的向量存 储位置中,如图10中所述。因此,地址翻译器213向MVP计算器212返 回块b0的地址。类似地,当MVP计算器212指定右上8X8宏块(未在 图14中示出)和块b4、 b5、 b6或b7时,地址翻译器213返回块b4的代 表性向量存储位置的地址。当MVP计算器212指定左下8X8宏块(未在
图14中示出)和块b8、 b9、 blO或bll时,地址翻译器213返回块b8的 代表性向量存储位置的地址。当MVP计算器212指定右下8X8宏块(未 在图14中示出)和块b12、 b13、 b14或b15时,地址翻译器213返回块 b12的代表性向量存储位置的地址。运动向量计算器214可以请求子宏块的地址。下面的描述说明了地址 翻译器213是如何处理该请求的,为了简化,假定所指定的子宏块属于左 上8X8宏块。地址翻译器213以类似的方式处理其他类型的子宏块,以 根据指定的块尺寸和位置唯一地确定代表性向量存储位置。在左上8X8宏块的上8X4子宏块的情形中,运动向量计算器214可 以指定块b0或块bl作为相邻宏块。这种情形中,代表性向量存储位置是 与块b0相对应的向量存储位置。因此,地址翻译器213向运动向量计算 器214返回该向量存储位置的地址。在左上8X8宏块的左8X4子宏块的情形中,运动向量计算器214可 以指定块b0或块b2作为相邻宏块。这种情形中,代表性向量存储位置是 与块b0相对应的向量存储位置。因此,地址翻译器213向运动向量计算 器214返回该向量存储位置的地址。在左上8X8宏块的左上4X4子宏块的情形中,运动向量计算器214 可以指定块b0作为相邻宏块。这种情形中,代表性向量存储位置是与块 bO相对应的向量存储位置。因此,地址翻译器213向运动向量计算器214返回该向量存储位置的地址。从上文中可见,代表性向量存储位置可以通过利用相邻宏块的宏块尺 寸和子宏块尺寸以及指定的块位置(b0到b15)对翻译表执行查找来加以 确定。该特征允许MVP计算器212得到由运动向量计算器214存储在代 表性向量存储位置中的运动向量。尽管图13和14中所示的并不是每se的翻译表,但是所提出的地址翻译表的基本功能是从指定的相邻宏块尺寸和块位置的组合中导出存储地 址。因此,该翻译表可以是能够将相邻宏块的宏块尺寸和子宏块尺寸以及 指定的块位置(b0到b15)与特定的代表性向量存储位置相关联的任何形 式。
代表性向量存储位置在期望参考运动向量位于当前宏块Cu外部的情形中,本实施例按以下方式操作。例如,假定当前焦点在16X16基本宏块上。这种情形中, 每个参考运动向量必须在为相邻宏块MB-A和MB-BCD保留的向量存储 位置320、 331和332 (图5)中的某处找到。图15示出了本实施例是如何将相邻宏块的运动向量保存在MB-A向 量存储位置中的。假定当前焦点在宏块501上。用于该当前宏块501的向 量预测过程参考其相邻块MB-A (AO、 Al、 A2、 A3)。在当前宏块501 之前的宏块502已被处理,并且所得到的运动向量被存储在向量存储位置 中作为代表性运动向量。MB-A向量存储管理器215读出相关的代表性运 动向量,并将其存储在与MB-A (A0、 Al、 A2、 A3)相对应的存储位置 中。在多个代表性运动向量存在于同一行上的情形中,MB-A向量存储管 理器215选择最右侧的向量,并将其输入到相应的MB-A向量存储位置。 例如,当宏块502被水平分区为8X 16宏块时,针对AO行上的两个块b0 和b4计算代表性运动向量。在这种情形中,MB-A向量存储管理器215选 择块b4的向量并将其存储在AO中,因为b4位于b0右侧。图16示出了本实施例是如何将相邻宏块的运动向量保存在MB-BCD 向量存储位置中的。用于当前宏块501的向量预测过程按需要分别访问 MB-BCD向量存储位置N0、 Nl、 N2、 N3、 N4和N5。宏块503、 504和 505已被处理,并且所得到的运动向量被存储在向量存储位置中作为代表 性运动向量。MB-BCD向量存储管理器216读出例如块503的相关的代表 性运动向量,并将其存储在MB-BCD向量存储位置Nl、 N2、 N3和N4 中。类似地,MB-BCD向量存储位置NO和N5分别接收针对宏块504和 505产生的代表性运动向量。在多个代表性运动向量存在于同一列上的情 形中,MB-BCD向量存储管理器216选择最下侧的向量,并将其输入到相 应的MB-BCD向量存储位置。例如,当宏块503被垂直分区为16X8宏块 时,针对Nl列上的两个块b0和b8计算代表性运动向量。在这种情形 中,MB-BCD向量存储管理器216选择块b9的向量并将其存储在Nl中, 因为b8比bO更靠近底部。
代表性运动向量的存储地址取决于块尺寸。下面将描述存储每个块尺寸的运动向量的过程。图17A到19B示出了根据本实施例的相邻宏块的代 表性向量存储位置。更具体而言,图17示出了 16X16宏块的代表性向量 存储位置。运动向量计算器214针对16X16宏块510产生一个代表性运动 向量MVO,并将其存储在块bO中。MB-A向量存储管理器215从块bO'l' 读出MVO,并将其存储在位于b0右侧的MB-A向量存储位置AO 511中。 另外,MB-BCD向量存储管理器216读出块b0的MVO,并将其存储在位 于b0下方的MB-BCD向量存储位置Nl 512中。图17B示出了相邻16X8宏块的代表性向量存储位置。在16X16基 本宏块被分区为两个16X8宏块520的情形中,运动向量计算器214产生 两个代表性运动向量MVO和MV8。运动向量计算器214将MVO存储在 块b0中,将MV8存储在块b8中。MB-A向量存储管理器215从块b0和 b8中读出MVO和MV8,并将其分别存储在位于b0和b8右侧的MB-A向 量存储位置AO 521和A2 522中。另一方面,MB-BCD向量存储管理器 216选择MV8,因为b8比b0更靠近底边。MB-BCD向量存储管理器216 随后将该MV8存储在位于b0和b8下方的MB-BCD向量存储位置Nl 523 中。图18A示出了相邻8X16宏块的代表性向量存储位置。在16X16基 本宏块被分区为两个8X16宏块530的情形中,运动向量计算器214产生 两个代表性运动向量MVO和MV4,并将其分别存储在块b0和b4中。在 这种情形中,MB-A向量存储管理器215选择性地从块b4中读出MV4, 因为b4比b0更接近右边。MB-A向量存储管理器215随后将其存储在位 于b4右侧的MB-A向量存储位置AO 531中。另一方面,MB-BCD向量存 储管理器216从块b0和b4中读出MVO和MV4,并将其分别存储在位于 b0和b4下方的MB-BCD向量存储位置Nl 532和N3 533中。图18B示出了相邻8X8宏块的代表性向量存储位置。在16X16基本 宏块被分区为8X8宏块540的情形中,运动向量计算器214产生四个代表 性运动向量MVO、 MV4、 MV8和MV12,并将其分别存储在块b0、 M、 b8和b12中。在这种情形中,MB-A向量存储管理器215分别从块b4和bl2中读出MV4和MV12,因为b4和b12比b0和b8更接近右边。MB-A 向量存储管理器215随后将MV4和MV12存储在MB-A向量存储位置AO 541和A2 542中。另一方面,MB-BCD向量存储管理器216读出MV8和 MV12,因为b8和b12比b0和b4更靠近底边。MB-BCD向量存储管理器 216随后将MV8和MV12分别存储在MB-BCD向量存储位置Nl 543和 N3 544中。
图19示出了相邻4X4宏块的代表性向量存储位置。在16X16基本宏 块被分区为两个4X4子宏块550的情形中,运动向量计算器214产生十六 个代表性运动向量MV0到MV15,并将其分别存储在块b0到bl5中。在 这种情形中,MB-A向量存储管理器215选择最右侧的运动向量MV5、 MV7、 MV13和MV15,并将其分别存储在MB-A向量存储位置A0、 Al、 A2和A3中。类似地,MB-BCD向量存储管理器216选择最底侧的 运动向量MVIO、 MVll、 MV14和MV15,并将其分别存储在MB-BCD 向量存储位置N1、 N2、 N3禾QN4中。尽管未在图19中示出,但是MB-A 向量存储管理器215和MB-BCD向量存储管理器216在8X4子宏块和4 X8子宏块的情形中将以类似方式工作。
向量预测中的地址翻译
这一部分描述了在MVP计算器212参考MB-A或MB-BCD向量存储 位置中的外部运动向量时是如何翻译地址的。MVP计算器212给予地址翻 译器213 —条指定特定的相邻4X4块的信息。在接收到该信息后,地址 翻译器213确定是否有与指定的块直接对应的MB-A或MB-BCD向量存 储位置。如果没有,则先前在图13和14中讨论的翻译表被用于提供相关 向量存储位置的地址。如果有,则地址翻译器213通过咨询另一个翻译表 来产生地址,该另一个翻译表将参考图20到23描述。
图20和21示出了地址翻译表是如何被用于参考MB-A向量存储位置 的。具体而言,图20示出了存储在MB-A向量存储位置中的运动向量的 源宏块是16X16、 16X8、 8X16或8X8宏块的情形。图21示出了 8X 4、 4X8或4X4子宏块的情形。
在MB-A的源宏块尺寸是16X16的情形中,只有单个运动向量MVO
被存储在为MB-A保留的四个可用向量存储位置内的AO中。在这种情形 中,尽管MVP计算器212可以指定AO、 Al、 A2或A3,但是翻译表将所 有这些位置翻译为AO的地址,从而允许MVP计算器212从同一位置AO 读出MVO。
在16X8源宏块的情形中,两个运动向量MVO和MV8分别被存储在 向量存储位置AO和A2中。当MVP计算器212指定AO或Al时,翻译表 将其翻译为AO的地址。当MVP计算器212指定A2或A3时,翻译表将 其翻译为A2的地址。因此,MVP计算器212对于AO和Al可以获得 MVO,对于A2和A3可以获得MV2。
在8X16源宏块的情形中, 一个运动向量MV4被存储在最顶端的向 量存储位置AO中。当MVP计算器212指定AO、 Al 、 A2或A3时,翻译 表将所有这些位置翻译为AO的地址。因此,在这种情形中,MVP计算器 212读出MV0,而不论其指定哪一个块。
在8X8源宏块的情形中,两个运动向量MV4和MV12被分别存储在 向量存储位置AO和A2中。当MVP计算器212指定A0或A1时,翻译表 将其翻译为AO的地址。当MVP计算器212指定A2或A3时,翻译表将 其翻译为A2的地址。因此,MVP计算器212对于AO和Al可以获得 MV4,对于A2和A3可以获得MV12。
图21示出了在子分区MB-A块的情形中是如何翻译地址的。图21省 略了每个基本宏块的左半部分的图示,因为MB-A向量存储位置存储相同 组的代表性运动向量,而不论左半部分可能采取什么样的块结构。
在源宏块被分区为8X4子宏块的情形中,运动向量MV4、 MV6、 MV12和MV14被分别存储在向量存储位置AO、 Al、 A2禾P A3中。当 MVP计算器212指定AO、 Al、 A2或A3时,翻译表将这些位置翻译为其 各自的地址。
在4X8子宏块的情形中,运动向量MV5和MV13被分别存储在向量 存储位置AO和A2中。当MVP计算器212指定AO或Al时,翻译表将其 翻译为AO的地址。当MVP计算器212指定A2或A3时,翻译表将其翻 译为A2的地址。 在4X4子宏块的情形中,运动向量MV5、 MV7、 MV13和MV15被 分别存储在向量存储位置A0、 Al、 A2禾nA3中。当MVP计算器212指定 AO、 Al、 A2或A3时,翻译表将这些位置翻译为其各自的地址。
从图20和21中可见,地址翻译器213通过咨询其本地地址翻译表, 将指定的MB-A块位置翻译为规定的存储器地址。所获得的地址被传递到 MVP计算器212以用于读出期望的代表性运动向量。
对于MB-BCD向量存储位置发生类似的地址翻译过程。具体而言,图 22和23示出了地址翻译器213是如何使用地址翻译表来参考MB-BCD向 量存储位置的。更具体而言,图22示出了在存储在MB-BCD向量存储位 置中的运动向量的源宏块是16X16、 16X8、 8X16或8X8宏块的情形中 的地址翻译,而图23示出了8X4、 4X8或4X4子宏块的情形。
在源宏块尺寸是16X16的情形中,单个运动向量MVO被存储在MB-BCD 的四个可用向量存储位置外的 Nl中。当MVP计算器212指定Nl、 N2、 N3或N4时,翻译表将其翻译为Nl的地址,从而允许MVP计算器 212读出MV0,而不论其指定了哪一个块。
在16X8宏块的情形中,单个运动向量MV8被存储在向量存储位置 Nl中。当MVP计算器212指定Nl、 N2、 N3或N4时,翻译表将其翻译 为Nl的地址,从而允许MVP计算器212读出MV8,而不论其指定了哪 一个块。
在8X 16宏块的情形中,运动向量MVO和MV4被分别存储在向量存 储位置N1和N3中。当MVP计算器212指定N1或N2时,翻译表将其翻 译为Nl的地址。当MVP计算器212指定N3或N4时,翻译表将其翻译 为N3的地址。因此,MVP计算器212对于Nl和N2可以获得MVO,对 于N3和N4可以获得MV4。
在8X8宏块的情形中,运动向量MV8和MV12被分别存储在向量存 储位置N1和N3中。当MVP计算器212指定N1或N2时,翻译表将其翻 译为Nl的地址。当MVP计算器212指定N3或N4时,翻译表将其翻译 为N3的地址。因此,MVP计算器212对于Nl和N2可以获得MV8,对 于N3和N4可以获得MV12。
图23示出了在子分区MB-BCD块的情形中是如何翻译地址的。图23 省略了每个基本宏块的上半部分的图示,因为MB-BCD向量存储位置存储 相同组的代表性运动向量,而不论上半部分可能采取什么样的块结构。
在8X4子宏块的情形中,运动向量MV8禾卩MV12被存储在向量存储 位置Nl禾卩N3中。当MVP计算器212指定Nl或N2时,翻译表将其翻译 为Nl的地址。当MVP计算器212指定N3或N4时,翻译表将其翻译为 N3的地址。
在4X8子宏块的情形中,运动向量MV8、 MV9、 MV12和MV13被 分别存储在向量存储位置Nl 、 N2、 N3禾n N4中。当MVP计算器212指定 Nl、 N2、 N3或N4时,翻译表将这些位置翻译为其各自的地址。
在4X4子宏块的情形中,运动向量MVIO、 MVll、 MV14禾卩MV15 被分别存储在向量存储位置N1、 N2、 N3和N4中。当MVP计算器212指 定N1、 N2、 N3或N4时,翻译表将这些位置翻译为其各自的地址。
从图22和23中可见,地址翻译器213通过咨询其本地地址翻译表, 将指定的MB-BCD块位置翻译为规定的存储器地址。所获得的地址被传递 到MVP计算器212以用于读出期望的代表性运动向量。
向量写周期的减少
上述部分已经描述了地址翻译器213是如何提供存储器地址以供MVP 计算器212读取参考运动向量来进行向量预测的。本实施例的这种布置消 除了运动向量计算器214在多个存储器位置中扩展每个计算的运动向量以 供以后参考的需要。
通过去除不必要的向量写周期,本实施例减少了计算运动向量所需的 时间。例如,在16X16宏块的情形中,传统的向量计算过程花费十六个 写周期来保存计算的运动向量,花费四个写周期来填充MB-A向量存储位 置,并花费另外四个写周期来填充MB-BCD向量存储位置。这意味着该过 程包括24个存储器写周期。与此相反,本实施例花费一个写周期来保存 计算的运动向量,花费另一个写周期来填充MB-A向量存储位置,并花费 另一个写周期来填充MB-BCD向量存储位置。即,本实施例只需要三个写 周期来处理16X16宏块。这意味着写周期的数目最大可减少21个周期。
对于另一种情况,考虑8X8宏块。尽管如同16X16宏块的情形 样,传统过程花费十六个写周期,但是本实施例花费八个周期来保存计算 的运动向量,花费两个周期来填充MB-A向量存储位置,并花费另外两个 周期来填充MB-BCD向量存储位置。本实施例只需要12个存储器写周 期,最大减少了 12个周期。当向量计算过程应对更大尺寸的宏块时,或 者当其处理更宽和更精细的图片时,该写周期减少的效果将更加明显。总结根据本发明,所提出的帧间预测处理器采用地址计算器来自动提供在 帧间预测过程中参考的每个运动向量的存储器地址。该地址计算器消除了 在存储器的多个存储位置中复制计算的运动向量以允许使用最小块尺寸的 需要。从而,所提出的帧间预测处理器减少了运动向量计算的处理时间。 本发明可用于利用其快速运动补偿的优点增大视频编码和解码设备的处理 速度。前述内容被认为仅是说明了本发明的原理。另外,由于本领域技术人 员将很容易进行大量修改和改变,因此并不希望将本发明限制在这里示出 和描述的实际构造和应用,所以,所有合适的修改和等同物都可被认为落 在权利要求及其等同物中的本发明的范围内。
权利要求
1.一种以块为基础执行视频帧的帧间预测的帧间预测处理器,包括参考图片存储器,其提供与最小尺寸块相对应的向量存储位置以存储针对可变尺寸的块计算的运动向量;地址计算器,其至少基于被指定的块的尺寸计算所述参考图片存储器中向量存储位置的地址;预测值计算器,其向所述地址计算器指定与当前块相邻的块以便从其获得针对被指定的相邻块计算的运动向量的地址,从所获得的所述参考图片存储器的地址中读出所述运动向量,并基于从所述参考图片存储器中读出的运动向量确定所述当前块的运动向量预测值;以及参考图片存储管理器,其将所计算的运动向量写入到在所述参考图片存储器内保留的向量存储位置中。
2. 如权利要求1所述的帧间预测处理器,其中所述地址计算器包括翻译表,所述翻译表将块尺寸和块位置的每个组 合与所述参考图片存储器的特定地址相关联;并且所述地址计算器使用所述翻译表来基于所述被指定的块的块尺寸和块 位置确定所述参考图片存储器中运动向量的地址。
3. 如权利要求1所述的帧间预测处理器,其中所述参考图片存储器中的向量存储位置包括用于存储所述当前块内的 多个块的运动向量的当前块向量存储位置和用于存储与所述当前块相邻的多个块的运动向量的相邻块向量存储位置;并且在紧接着所述当前块的一个块被选为新的当前块之前,所述参考图片 存储管理器将所计算的运动向量从所述当前块向量存储位置拷贝到所述相邻块向量存储位置。
4. 如权利要求3所述的帧间预测处理器,其中所述地址计算器包括 第一翻译表,其将所述块尺寸和块位置的每个组合与所述当前块向量存储位置之一的地址相关联;以及第二翻译表,其将所述块尺寸和块位置的每个组合与所述相邻块向量 存储位置之一的地址相关联,其中所述地址计算器使用所述第一和第二翻译表来确定与所述被指定 的块相对应的向量存储位置的地址。
5. —种以块为基础执行视频帧的帧间预测的方法,包括以下步骤 提供与最小尺寸块相对应的向量存储位置以存储针对可变尺寸的块计算的运动向量;指定与当前块相邻的多个块;至少基于所述被指定的相邻块中每一个的尺寸来计算与所述被指定的 相邻块相对应的向量存储位置的地址; 从所计算的地址中读出运动向量;基于被读出的运动向量确定所述当前块的运动向量预测值;以及 将所计算的运动向量写入到所述向量存储位置中。
6. —种通过以块为基础执行源图片和参考图片之间的运动补偿预测来将视频帧编码为压縮视频数据的视频编码设备,包括参考图片存储器,其提供与最小尺寸块相对应的向量存储位置以存储 针对可变尺寸的块计算的运动向量;地址计算器,其至少基于被指定的块的尺寸计算所述参考图片存储器 中向量存储位置的地址;预测值计算器,其向所述地址计算器指定与当前块相邻的块以便从其 获得针对被指定的相邻块计算的运动向量的地址,从所获得的所述参考图 片存储器的地址中读出所述运动向量,并基于从所述参考图片存储器中读 出的运动向量确定所述当前块的运动向量预测值;以及参考图片存储管理器,其将所计算的运动向量写入到在所述参考图片 存储器内保留的向量存储位置中。
7. —种从压縮视频信号中重构原始视频帧的视频解码设备,所述压缩 视频信号是通过以块为基础执行运动补偿帧间预测产生的,所述设备包 括参考图片存储器,其提供与最小尺寸块相对应的向量存储位置以存储 针对可变尺寸的块计算的运动向量; 地址计算器,其至少基于被指定的块的尺寸计算所述参考图片存储器中向量存储位置的地址;预测值计算器,其向所述地址计算器指定与当前块相邻的块以便从其 获得针对被指定的相邻块计算的运动向量的地址,从所获得的所述参考图 片存储器的地址中读出所述运动向量,基于从所述参考图片存储器中读出 的运动向量确定所述当前块的运动向量预测值,并从所确定的运动向量预测值和经解码的运动向量差重构所述当前块的运动向量;以及参考图片存储管理器,其将经重构的运动向量写入到在所述参考图片 存储器内保留的向量存储位置中。
全文摘要
本发明公开了一种用于处理可变尺寸宏块以实现高速帧间预测的设备。预测值计算器根据与当前宏块相邻的其他宏块的运动向量,确定当前宏块的运动向量预测值(MVP)。为此,预测值计算器向地址计算器指定相邻宏块。地址计算器基于被指定的宏块的块尺寸来计算每个被指定的相邻宏块的向量存储器地址。预测值计算器从接收到的地址中读出运动向量,并确定当前宏块的MVP。
文档编号H04N7/50GK101127902SQ20071000040
公开日2008年2月20日 申请日期2007年1月25日 优先权日2006年8月17日
发明者仲石英典 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1