专利名称:本地宏块信息缓冲器的制作方法
本地宏块信息缓冲器
背景技术:
媒体播放器可以将运动图像输出到显示设备。例如,媒体播放器 可以获得本地存储的图像信息或者从媒体服务器接收图像信息流(例 如,内容提供商可以通过电缆或者卫星网络将包括高清晰度图像帧的 流传输到电视、机顶盒或者数字视频录像机)。 一些情况下,对图像 信息进行编码,以减少表示图像所用的数据量。例如,图像可以被分 成更小的图像部分,例如宏块,从而使得对于一个图像部分编码的信 息不必对于另一图像部分重复(例如,因为相邻图像部分可能经常有 类似的颜色、亮度、和/或运动特性)。因此,在对特定图像部分进行 解码时,媒体播放器中的解码引擎可以本地存储和访问关于多个相邻 图像部分的信息。这种方案可能需要很大的本地存储空间量,否则就 难于实现。
图l是媒体系统的框图; 图2示出了被分割为宏块的显示;
图3是其中宏块信息存储于外部存储单元和本地缓冲器中的系 统的框图4是示出根据一些实施例的方法的流程图5是根据一些实施例的,其中宏块信息存储在外部存储单元和 本地缓冲器中的系统300的框图6是示出根据一些实施例的预取等待时间(pre-fetch latency) 的时序框图7是根据一些实施例的,其中宏块自适应帧/场编码信息存储 在外部存储单元和本地缓冲器中的系统的框图8示出了根据一些实施例的宏块、宏块分区和子宏块;以及
图9是根据一些实施例的系统的框图。
具体实施例方式
媒体播放器可以接收图像信息,解码该信息,并向显示设备输出 信号。例如,数字视频录像机(DVR)可以获得本地存储的图像信息, 或者,机顶盒可以从远程设备接收图像信息流(例如,内容提供商可 以通过电缆或者卫星网络将包含高清晰度图像帧的流传输到机顶 盒)。图1是媒体系统100的框图,包括媒体服务器100,该系统包 括通过通信网络130给远程媒体服务器120提供图像信息的媒体服务 器110。
在发射机116将数据作为图像信息流发射之前,编码器114可以 减少用于表示图像内容112的数据的量。如这里所用的,可以根据多 个不同协议中的任何一种,对信息进行编码和/或解码。例如,可以 根据国际电信联盟一电信标准化部门(ITU-T)推荐的题为"Advanced Video Coding for Generic Audiovisual Services(用于通用音视频服务的 先进视频编码)"(2004)的H.264,或者国际标准化组织(ISO) /国际 工程联合会(IEC)运动图像专家组(MPEG)的题为"Advanced Video Coding (Part 10)(先进视频编码(第10部分))"(2004)的标准,来 处理图像信息。作为其它的例子,可以根据ISO/IEC的编号为14496、 题为"MPEG-4 Information Technology - Coding of Audio-Visual Objects (MPEG-4信息技术-音频视频对象编码)"(2001)的文档,或 者由ISO/IEC的编号为13818-1、题为"Information Technology -Generic Coding of Moving Pictures and Associated Audio Information (信息技术-运动图像及其相关音频信息的通用编码)"(2000)的文档 所定义的MPEG2协议,来处理图像信息。
作为其它的例子,可以根据Microsoft Windows Media Video 9 (MSWMV9)信息或运动图像和电视工程师协会(SMPTE)视频编 解码器1 (VC-1)信息,来处理图像信息。
接收到的图像流可以包含与图像的多个部分相关的信息(例如参 数值),并且与那些部分相关的信息可以存储在输出引擎124或解码
器外部的存储单元122中。需要注意,针对一个图像部分所编码的信 息可以对另一个图像部分再次使用。因此,输出引擎124可以将关于 多个相邻部分的信息从外部存储单元122传送到基于块的本地参数 缓冲器或高速缓冲存储器126中。然后,输出引擎124可以从本地缓 冲器126访问这些信息,以重建或解码每个图像部分。根据一些实施 例,本地缓冲器124与输出引擎124形成在同一管芯(die)上。
例如,考虑到H.264图像信息。如图2所示,显示图像200可以 被分割成多个"宏块"210组成的阵列。每个宏块可表示一个16x16 个图像样本或像素的组。而且,该阵列可以包含行,每行有例如120 个宏块210。
输出引擎124可以从顶部行开始,在宏块210的多个行上,从左 至右对宏块210进行解码。当完成一行后,输出引擎124可以开始对 下一行的第一宏块210进行解码。
需要注意,可能已经使用关于相邻宏块的信息对关于一个宏块 210的信息进行编码(例如,因为多个相邻宏块210可能经常会有相 似的特性)。因此,当对特定的宏块210进行解码和/或解压缩时,关 于该宏块210的信息可以使用来自一个或多个相邻块的预测值推导 出来。在一些情况下,从单个相邻块的参数中推导出预测参数,而在 另一些情况下则从与多个相邻块相关的参数推导出来。
具体而言,考虑图2所示的宏块"*"。为了对宏块*进行解码, 输出引擎124可以使用先前为相邻宏块A、 B、 C、和/或D确定的参 数值来为宏块*确定预测参数值。可以在图像信息流中接收到预测参 数值和实际参数值之间的差异,并且输出引擎124可以使用预测参数 值和此差异来产生实际的参数值。然后,可使用实际参数值产生表示 原始图像内容112的输出(也可在为后面的相邻宏块确定实际参数值 时使用)。
为了有效地解码宏块210,输出引擎124可以将关于正在进行解 码的宏块和一个或多个相邻宏块的信息从外部存储单元122传送到 本地缓冲器126。例如,图3是系统300的框图,其中宏块信息存储 在外部存储单元310和本地缓冲器320中。图3中每个方块可以表示
例如包含特定宏块的参考数据或参数的宏块缓冲器。在一些情况下,
可以将至少相当于一行的宏块信息(如图3阴影区域所示)从外部存 储单元310传送到本地缓冲器320。因此,输出引擎可以使用本地存 储的、与宏块A、 D、 B、和/或C相关的信息来解码宏块*。可用此 方法处理的信息的例子包括X方向运动矢量、Y方向运动矢量、帧 内预测模式数据、和/或参考帧索引列表。
在宏块*被解码之后,输出引擎可以开始解码宏块*右边的宏块 (而宏块"见在将成为宏块A,宏块B将成为宏块D,等等)。
这种方案可能需要大量的片上存储空间(on-die storage space), 否则就难于实现。例如,考虑含有1920x1080个图像样本的高分辨率 图像。如果每个宏块为一个16x16个图像样本的组,则一行宏块的数 量为1920/16= 120。这样,本地存储器可能需要存储与120个宏块以 及当前被解码的宏块、总共为121个宏块相关的信息。假定每个宏块 与256比特的信息相关,则本地缓冲器需要存储121x 256比特,或 约31千比特(Kbits)数据。在一些情况下,例如当输出引擎124与 片上系统(SoC)设计相关时,难于实现在本地存储这样数量的信息。
图4为示出根据一些实施例的方法的流程图。该方法可以与例如 图1的媒体播放器120相关。这里描述的流程图不一定意味着动作的 固定顺序,可以以任何切合实际的顺序执行实施例。注意,这里描述 的任何方法可以由硬件、软件(包括微代码)、固件或这些手段的任 意组合来执行。例如,存储介质可以在其上存储指令,当机器执行该 指令吋,引起根据这里描述的任何实施例的执行。
在402,表示图像的多行宏块存储在外部存储单元中。该外部存 储单元可以包含,例如媒体播放器的双倍数据速率(DDR)同步动态 随机存取存储器(SDRAM)单元。
然后,在404,将一组宏块从外部存储单元传送到本地缓冲器, 并且该宏块组可以包含少于一行的宏块。本地缓冲器可以是例如与输 出引擎相关联的片上缓冲器。例如,图5为系统500的框图,其中根 据一些实施例,宏块信息存储在外部存储单元510和本地缓冲器520 中。在此例子中,宏块信息可以与图像自适应帧/场(PAFF) H.264
编码相关。
具体而言,外部存储单元510存储与多行运动图像宏块相关的信 息。本地缓冲器520可以设置在解码器中,并且存储少于相当于一行 的信息。在图5所示例子中,本地缓冲器520存储关于下面所示的参 数(i)当前正在解码的宏块(*)、 (ii)构建当前宏块所需的相邻块 (A、 B、 C、和D)、和(iii)四个附加的宏块。再次参考图4,然后, 在406,基于本地缓冲器中的信息对当前宏块*进行解码,以产生图 像信号。
本地缓冲器520可以是,例如循环缓冲器(circular buffer),而 缓冲器管理器可以安排新的信息取代旧的信息(例如,在不再需要旧 的信息后)。例如,在宏块*被解码之后,将不再需要宏块A和D(而 在构建下一宏块期间,宏块B将变为宏块D,宏块H变为宏块A, 并且宏块C将变为宏块B)。需要注意,当宏块*位于一行的末尾附近 时,可以在本地缓冲器520中存储从下一行开始处的附加宏块。
本地缓冲器中存储的附加宏块的数量(例如,除宏块*外,当前 正在使用的宏块A、 B、 C、和D)可以取决于与外部存储单元510 相关的等待时间。例如,图6是示出根据一些实施例的预取等待时间 的时序框图600。具体而言,在启动从外部存储单元610预取附加宏 块的时刻和完成该预取的时刻之间存在等待时间(例如,而且该信息 在本地缓冲器620中可用)。需要注意,在操作期间实际的预取等待 时间可以变化(例如,由于带宽或其它因素),并且可以基于例如最 大预期等待时间来选取值L。
可存储在本地缓冲器620中的附加宏块的数量可以基于L和对每 个宏块进行解码所需的时间。例如,如果在L期间可以解码四个宏块, 则可以将四个附加宏块存储在本地缓冲器620中。这样,在将要对当 前宏块进行解码时,在本地存储器620中可以存在四个附加宏块。此 时,可以启动新宏块的新预取。到本地缓冲器620中的当前宏块被解 码的时刻,该新的宏块将会可用(并且可以启动另一预取)。根据另 一实施例,可以预取批量宏块以确保在本地存储器620中至少有合适 数量的附加宏块可用。再次考虑有1920x1080个图像样本、每个宏块为一个16x16个图 像样本的组(例如,每行有120个宏块)的高分辨率图像。此外,假 定在预取等待时间L期间可解码4个宏块。这样,本地存储器620 可以存储当前被解码宏块、构建当前宏块所需的四个相邻宏块、以及 四个附加宏块(总共九个宏块的)的参数。如果再次假定每个宏块与 256个比特信息相关,则本地缓冲器620将需要存储9x256比特或约 为2.3千比特的数据(与对于图3所描述的31千比特相比)。
虽然关于PAFF帧己经描述了一些实施例,但是注意,这些实施 例可以与宏块自适应帧/场(MBAFF)编码实施方案相关,该实施方 案中可处理多对垂直相邻的宏块。例如,图7是系统700的框图,其 中根据一些实施例将MBAFF编码信息存储在外部存储单元710和本 地缓冲器720中。虚线将可以同时构建的多对垂直相邻宏块分开。需 要注意,与PAFF实施方案(例如,图5所示)相比,可以在本地缓 冲器720中存储两倍的信息。
此外,虽然关于宏块描述了一些实施例,但是实施例也可与其它 类型的图像部分相关。例如,图8示出了显示800。在此情况下,显 示800的基本上类似的部分(例如,背景区域)可以作为多个宏块 810进行编码。然而,包含更多详细图像信息的其它部分可以进一步 被分割成宏块分区820和子宏块830。此外,随着图像改变,显示800 可以以不同方式分割。根据一些实施例,本地存储器中的信息可以与 宏块、宏块分区、和/或子宏块相关。如这里所用的,术语"宏块" 可以指任意的图像部分,包括有标准辻264宏块、宏块分区、子宏块 和/或由另一标准定义的部分。
图9是根据一些实施例的系统900的框图。该系统900可以与例 如数字显示设备,电视机(如高清晰电视(HDTV)单元)、DVR、 游戏控制台、个人计算机(PC)或膝上型电脑、和/或机顶盒(例如, 电缆或卫星解码器)相关。
系统900包含数字存储设备910,诸如DDR SDRAM器件,以 及与H.264解码器930相关联的缓冲器920, H.264解码器930可以 根据这里所描述的任意实施例来工作。例如,数据存储设备910可以 存储与多行运动图像宏块相关的信息。缓冲器920和H.264解码器 930可以包含集成电路(IC),而缓冲器920可以存储从数据存储设 备910接收的一组宏块的信息,其中该宏块组包含少于一行的宏块。 然后,该H.264解码器930可以根据缓冲器920中的信息(包含与相 邻宏块相关的参数),产生图像信号。根据一些实施例,输出端H.264 解码器930产生通过数字输出940提供给显示设备(图9中没有示出) 的信息。此外,该系统900还可以包括输入接口 (图9中没有示出), 以接收与下列中至少一个相关的信号(i)R264信息、(ii)MPEG2 信息、或(iii) MPEG4信息。
以下阐述各种附加的实施例。这里并不是构成要所有可行实施例 的定义,且本领域技术人员将理解许多其它的实施例也是可行的。此 外,虽然为清楚起见简短描述以下实施例,但本领域技术人员可以理 解,如果需要,将怎样对上面的描述做出任何改变以适应这些及其它 实施例和应用。
例如,虽然描述了单个输出引擎或解码器,但是实施例可以与多 个输出引擎或解码器相关联(而且可提供多个或共享本地缓冲器)。
此外,虽然这里使用了特定图像处理协议和网络作为例子(例如, H.264和MPEG4),但可以结合任何其它类型的图像处理协议或网络, 诸如数字地面电视广播(DTTB)和社区接入电视(CATV)系统来 使用实施例。
这里所描述的若干实施例仅为阐述之目的。本领域技术人员通过 这些描述可知,也可以实现其它实施例,所述其他实施例的修改或改 变仅由权利要求所限定。
权利要求
1.一种方法,包括在外部存储单元中存储表示图像的多行宏块信息;将与一组宏块相关的信息从所述外部存储单元传送至本地缓冲器,所述宏块组包含少于一行的宏块;以及基于所述本地缓冲器中的信息对宏块进行解码,以产生图像信号。
2. 如权利要求1所述的方法,其中,所述解码是基于与正在被 解码的宏块相关的信息以及与至少一个相邻宏块相关的信息的。
3. 如权利要求1所述的方法,其中,所述本地缓冲器包含循环 片上缓冲器。
4. 如权利要求1所述的方法,其中,所述外部存储单元包含双 倍数据速率同步动态随机存取存储单元。
5. 如权利要求1所述的方法,其中,所述组中的宏块数量与所 述外部存储单元的等待时间相关。
6. 如权利要求1所述的方法,其中,所述多行宏块与下列至少 一个相关(i)图像自适应帧/场编码、或(ii)宏块自适应帧/场编 码。
7. 如权利要求1所述的方法,其中,所述宏块与下列至少一个 相关(i) H.264信息、(ii)运动图像专家组2信息、(iii)运动 图像专家组4信息、(iv ) Microsoft Windows Media Video 9信息、或(v)运动图像和电视工程师协会视频编解码器l信息。
8. 如权利要求1所述的方法,其中,所述解码与下列至少一个相关(i)数字显示设备、(ii)电视机、(iii)数字视频录像机、 (iv)游戏设备、(V)个人计算机、或(vi)机顶盒。
9. 一种设备,包括片外存储单元,用于存储与多行运动图像部分相关的信息;片上缓冲器,用于存储从所述片外存储单元接收的与一组图像部分相关的信息,所述组包含少于一行的图像部分;以及片上解码引擎,用于根据所述本地缓冲器中的信息,产生图像信号。
10. 如权利要求9所述的设备,其中,所述片上解码引擎基于正 在被解码的图像部分以及与相邻图像部分相关的信息,产生所述图像 信号。
11. 如权利要求9所述的设备,其中,所述片上缓冲器包含循环 缓冲器并还包含缓冲器管理器。
12. 如权利要求9所述的设备,其中,所述片外存储单元包含随 机存取存储单元。
13. 如权利要求12所述的设备,其中,所述组中的图像部分数 量与以下相关(i)所述随机存取存储单元的预取等待时间、以及(ii)图像部分的解码时间。
14. 如权利要求9所述的设备,其中,所述图像部分信息与下列至少一个相关(i)图像自适应帧/场编码、或(ii)图像部分-自适应帧/场编码。
15. 如权利要求9所述的设备,其中,所述解码引擎与下列至少 一个相关(i)H,264信息、(ii)运动图像专家组2信息、(m) 运动图像专家组4信息、(iv) Microsoft Windows Media Video 9信息、或(v)运动图像和电视工程师协会视频编解码器l信息。
16. —种设备,包含在其上存储有指令的存储介质,当所述指令被机器执行时,会导 致下面的处理在外部存储单元中存储表示图像的H.264宏块信息的阵列,将一组宏块信息从所述外部存储单元传送至本地缓冲器, 所述组与少于所述阵列的一行的宏块相关,以及基于所述本地缓冲器中的信息对宏块进行解码,以产生输出。
17. 如权利要求16所述的设备,其中,所述宏块信息包含下列 至少一个(i) x方向运动矢量、(ii) y方向运动矢量、(iii)帧 内预测模式、或(iv)参考帧索引列表。
18. 如权利要求16所述的设备,其中,所述指令的执行还导致: 将所述输出提供给显示设备。
19. 一种系统,包含数据存储设备,用于存储与多行运动图像宏块相关的信息; 集成电路,其包括缓冲器,用于存储从所述数据存储设备接收的与一组宏块相 关的信息,所述组包含少于一行的宏块,以及输出引擎,用于根据所述缓冲器中的信息产生图像信号;以数字接口,用于将数字信号从所述输出引擎提供到数字显示设备。
20. 如权利要求19所述的系统,还包含输入接口,用于接收与下列至少一个相关的信号(i)H.264信息、(ii)运动图像专家组2信息、(m)运动图像专家组4信息、(iv) Microsoft Windows Media Video 9信息、或(v)运动图像和 电视工程师协会视频编解码器1信息。
21. 如权利要求19所述的系统,其中,所述系统与下列至少一 个相关(i)数字显示设备、(ii)电视机、(iii)数字视频录像机、(iv)游戏设备、(v)个人计算机、或(vi)机顶盒。
全文摘要
根据一些实施例,外部存储单元存储表示图像的多行宏块。可将包括少于一行宏块的一组宏块从外部存储单元传送至本地缓冲器。然后可基于本地缓冲器中的信息对宏块进行解码,以产生图像信号。
文档编号H04N7/26GK101341757SQ200580042959
公开日2009年1月7日 申请日期2005年12月15日 优先权日2004年12月16日
发明者M·哈克, R·萨克塞纳 申请人:英特尔公司