视频编解码器的信道线缓冲器数据打包方案的制作方法

文档序号:14213594阅读:185来源:国知局
视频编解码器的信道线缓冲器数据打包方案的制作方法

本公开涉及视频译码的领域。更具体地说,本公开适用于视频像素线缓冲器。



背景技术:

数字视频能力可并入到广泛范围的装置中,包含数字电视、数字直播系统、无线广播系统、个人数字助理(pda)、膝上型或桌上型计算机、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话、视频电话会议装置等。数字视频装置实施视频压缩技术,例如由mpeg-2、mpeg-4、itu-th.263、itu-th.264/mpeg-4第10部分、高级视频译码(avc)定义的标准、高效率视频译码(hevc)标准及此些标准的扩展中所描述的技术。视频装置可通过实施这些视频译码技术而更高效地发射、接收、编码、解码和/或存储数字视频信息。

视频像素线缓冲器可用于许多视频处理应用中。当视频帧中的块经处理时,邻域数据可存储于一或多个视频像素线缓冲器中。所存储邻域数据可接着用于处理所述帧中的后一块。举例来说,一行块的底部行可在视频像素线缓冲器中保存为底部邻域数据,其可用作所述视频帧中下一行的顶部邻域数据。



技术实现要素:

本公开的系统、方法和装置各自具有若干创新方面,其中没有单个方面单独负责本文所公开的合乎需要的属性。在不限制所附权利要求书的范围的情况下,本文描述某些特征。

在附图和以下描述中阐述本说明书中描述的主题的一或多个实施方案的细节。其它特征、方面和优点将由描述、图式和权利要求书变得显而易见。应注意,以下各图的相对尺寸可能未按比例绘制。

根据本公开的一或多个方面,提供有一种用于打包视频数据的可由视频译码电路操作以用于打包视频数据的方法,所述方法包括经由第一信道和第二信道接收所述视频数据,所述视频数据包括多个数据块;和将所述多个数据块打包到被所述第一与第二信道共享的缓冲器中,所述缓冲器经配置以存储多个字,每个字包括在所述字的第一侧与第二侧之间延伸的一系列位。在一些实施例中,所述打包包括经由在从所述第一侧朝向所述第二侧的第一方向上打包来自第一信道的数据块且在与所述第一方向相反的第二方向上打包来自第二信道的数据块而使来自第一信道的数据块与来自第二信道的数据块交错。

在一些实施例中,第一与第二信道与视频帧中一行块的底部线相关联。将来自第一信道或第二信道的数据块用作视频帧中后一行块的顶部线。

在一些实施例中,第一信道可对应于去交错器,而第二信道可对应于比例缩小/放大器。

在一些实施例中,所述缓冲器在ddr存储器中实施。在一些实施例中,所述缓冲器可在片上存储器中实施。

在一些实施例中,所述缓冲器的字包括所述字的所述第一侧上来自所述第一信道的一或多个数据块与所述字的所述第二侧上来自所述第二信道的一或多个数据块之间的垃圾数据的一个或多个位。

在一些实施例中,所述方法可进一步包括接收对与第一信道相关联的一或多个数据块的请求,和从所述缓冲器的一或多个字的第一侧检索一或多个数据块。所述方法可进一步包括接收对与第二信道相关联的一或多个数据块的请求,和从所述缓冲器的一或多个字的第二侧检索一或多个数据块。

本公开的另一方面提供一种可由视频译码电路操作以用于打包视频数据的方法,所述方法包括从两个或多于两个物理信道接收视频数据,所述视频数据包括多个数据块;将所述数据块从物理信道映射到两个或多于两个虚拟信道;以及将所述虚拟信道的数据块打包到至少一个缓冲器中,所述至少一个缓冲器经配置以存储多个字,每个字包括在第一侧处的第一位与第二侧处的最后一位之间延伸的一系列位。所述打包可包括经由在从第一侧朝向第二侧的第一方向上打包来自第一虚拟信道的数据块且在与所述第一方向相反的第二方向上打包来自第二虚拟信道的数据块而使来自第一虚拟信道的数据块与来自第二虚拟信道的数据块交错。

在一些实施例中,所述两个或多于两个物理信道中第一物理信道的第一数据块大小不同于所述两个或多于两个物理信道中第二物理信道的第二数据块大小。

在一些实施例中,所述方法可进一步包括接收对与两个或多于两个物理信道中的物理信道相关联的一或多个数据块的请求;从一或多个缓冲器解包虚拟信道数据;将所述虚拟信道数据映射到一或多个物理信道;以及通过所述物理信道检索所请求数据块。

在一些实施例中,用于打包来自两个或多于两个虚拟信道的数据的缓冲器的数目至少部分地基于两个或多于两个物理信道的总的位计数与一或多个缓冲器中缓冲器的字位的数目之间的比。在一些实施例中,一或多个缓冲器中的每个缓冲器可装有来自两个或多于两个虚拟信道中的两个虚拟信道的数据块。

在一些实施例中,所述第一虚拟信道的位计数与所述第二虚拟信道的位计数平衡使得所述位计数相同或相差一个位。在一些实施例中,虚拟信道的位计数至少部分地基于所述两个或多于两个物理信道的总的位计数和所述一或多个缓冲器中缓冲器的数目。

本公开的另一方面提供一种用于打包视频数据的视频译码电路。所述视频译码电路可包括经配置以存储视频数据的存储器;和与存储器通信的处理器,其中所述处理器经配置以经由第一信道和第二信道接收视频数据,所述视频数据包括多个数据块;且将所述多个数据块打包到被第一与第二信道共享的缓冲器中,所述缓冲器经配置以存储多个字,每个字包括在所述字的第一侧与第二侧之间延伸的一系列位。可将来自所述第一信道的所述数据块与来自所述第二信道的所述数据块以交错次序打包,其中在从所述第一侧朝向所述第二侧的第一方向上打包来自所述第一信道的所述数据块,且在与所述第一方向相反的第二方向上打包来自所述第二信道的所述数据块。

在一些实施例中,第一与第二信道与视频帧中一行块的底部线相关联。将来自第一信道或第二信道的数据块用作视频帧中后一行块的顶部线。

在一些实施例中,第一信道可对应于去交错器,而第二信道可对应于比例缩小/放大器。

在一些实施例中,所述缓冲器在ddr存储器中实施。在一些实施例中,所述缓冲器可在片上存储器中实施。

在一些实施例中,所述缓冲器的字包括所述字的所述第一侧上来自所述第一信道的一或多个数据块与所述字的所述第二侧上来自所述第二信道的一或多个数据块之间的垃圾数据的一个或多个位。

在一些实施例中,所述处理器可进一步经配置以接收对与第一信道相关联的一或多个数据块的请求,且从所述缓冲器的一或多个字的第一侧检索一或多个数据块。所述处理器可进一步经配置以接收对与第二信道相关联的一或多个数据块的请求,且从所述缓冲器的一或多个字的第二侧检索一或多个数据块。

本公开的另一方面提供一种用于打包视频数据的视频译码电路。所述视频译码电路可包括经配置以存储视频数据的存储器和与存储器通信的处理器,所述处理器经配置以:从两个或多于两个物理信道接收视频数据,所述视频数据包括多个数据块;将所述数据块从物理信道映射到两个或多于两个虚拟信道;以及将虚拟信道的数据块打包到至少一个缓冲器中,所述至少一个缓冲器经配置以存储多个字,每个字包括在第一侧处的第一位与第二侧处的最后一位之间延伸的一系列位。可将来自第一虚拟信道的所述数据块与来自所述两个或多于两个虚拟信道中的第二虚拟信道的所述数据块以交错次序打包,其中在从所述第一侧朝向所述第二侧的第一方向上打包来自所述第一虚拟信道的所述数据块,且在与所述第一方向相反的第二方向上打包来自所述第二虚拟信道的所述数据块。

在一些实施例中,所述两个或多于两个物理信道中第一物理信道的第一数据块大小不同于所述两个或多于两个物理信道中第二物理信道的第二数据块大小。

在一些实施例中,所述处理器可进一步经配置以接收对与两个或多于两个物理信道中的物理信道相关联的一或多个数据块的请求;从一或多个缓冲器解包虚拟信道数据;将所述虚拟信道数据映射到一或多个物理信道;以及通过所述物理信道检索所请求数据块。

在一些实施例中,用于打包来自两个或多于两个虚拟信道的数据的缓冲器的数目至少部分地基于两个或多于两个物理信道的总的位计数与一或多个缓冲器中缓冲器的字位的数目之间的比。在一些实施例中,一或多个缓冲器中的每个缓冲器可装有来自两个或多于两个虚拟信道中的两个虚拟信道的数据块。

在一些实施例中,所述第一虚拟信道的位计数与所述第二虚拟信道的位计数平衡使得所述位计数相同或相差一个位。在一些实施例中,虚拟信道的位计数至少部分地基于所述两个或多于两个物理信道的总的位计数和所述一或多个缓冲器中缓冲器的数目。

附图说明

图1a是说明可利用根据本公开中所描述的方面的技术的实例视频编码和解码系统的框图。

图1b为说明可执行根据本公开中描述的方面的技术的另一实例视频编码和解码系统的框图。

图2a为说明可实施根据本公开中描述的方面的技术的视频编码器的实例的框图。

图2b为说明可实施根据本公开中描述的方面的技术的视频编码器的实例的框图。

图3a是说明可实施根据本公开中描述的方面的技术的视频解码器的实例的框图。

图3b是说明可实施根据本公开中描述的方面的技术的视频解码器的实例的框图。

图4说明根据一些实施例的视频帧。

图5说明根据一些实施例的双信道视频处理系统。

图6说明根据一些实施例的双信道缓冲器打包方案。

图7a说明根据一些实施例的在两个信道共享打包/解包和ddr上传/下载模块时的双信道缓冲器打包方案。

图7b说明根据一些实施例的在相反方向上打包来自第一与第二信道的数据块的数据打包方案。

图8a说明根据一些实施例的可用于将数据块打包到ddr缓冲器且从ddr缓冲器解包数据块的栅极配置。

图8b说明根据一些实施例的可用于使用低复杂度/低成本双信道打包布置将数据块打包到ddr缓冲器且从ddr缓冲器解包数据块的栅极配置。

图9a说明根据一些实施例的用于将信道数据打包到ddr缓冲器的过程的流程图。

图9b说明根据一些实施例的用于打包数据块的方法的流程图。

图10a说明根据一些实施例的打包来自第一和第二信道的数据块,其中第一与第二信道不平衡。

图10b说明根据一些实施例的打包来自第一与第二信道的数据块,其中第一与第二信道平衡。

图11a到11b说明根据一些实施例的非同步和同步打包布置。

图12a说明根据一些实施例的如何可平衡物理信道且将其映射到虚拟信道。

图12b说明根据特定实例的映射到平衡虚拟信道的物理信道。

图13说明根据一些实施例的用于使用平衡信道打包和检索信道数据的过程的流程图。

图14说明根据一些实施例的用于在平衡信道时计算虚拟信道的数目和块大小的过程的流程图。

图15说明用于在平衡信道时计算虚拟信道块大小的特定实例的流程图。

具体实施方式

一般来说,本公开涉及在例如高效率视频译码(hevc)的先进视频编解码器的上下文中使用调色板和子块。更具体地说,本公开涉及用于通过在视频译码的上下文中使用调色板和子块来进行改进的位速率译码的系统和方法。

可在可缩放视频译码的上下文中实施一些实施例。可缩放视频译码是指其中使用基础层(bl)(有时被称作参考层(rl))及一或多个可缩放增强层(el)的视频译码。在可缩放视频译码中,所述bl可携载具有基础质量等级的视频数据。一或多个el可携载额外视频数据以支持(例如)更高的空间、时间和/或信噪比(snr)等级。el可相对于先前经编码的层而界定。举例来说,底层可充当bl,而顶层可充当el。中间层可充当el或rl,或两者。举例来说,中间层(例如既不是最低层也不是最高层的层)可为中间层下方的层的el,例如bl或任何介入el,且同时充当中间层上方的一或多个el的rl。类似地,在hevc标准的多视图或3d扩展中,可存在多个视图,且可利用一个视图的信息对另一视图的信息(例如,运动估计、运动向量预测和/或其它冗余)进行译码(例如,编码或解码)。

在以下描述中,描述与某些实施例有关的h.264/avc技术;还论述hevc标准和相关技术。尽管本文中在hevc和/或h.264标准的背景下描述某些实施例,但所属领域的一般技术人员可了解,本文中所公开的系统和方法可适用于任何合适的视频译码标准。举例来说,本文中所公开的实施例可适用于以下标准中的一或多个(例如,包含由国际电信联盟电信标准化部门[itu-t]视频译码专家组[vceg]或国际标准化组织/国际电工委员会[iso/iec]运动图像专家组[mpeg]开发的标准):itu-th.261、iso/iecmpeg-1visual、itu-th.262或iso/iecmpeg-2visual、itu-th.263、iso/iecmpeg-4visual和itu-th.264(也被称作iso/iecmpeg-4avc),包含其可缩放视频译码(svc)和多视图视频译码(mvc)扩展。

在许多方面,hevc通常遵循先前视频译码标准的框架。hevc中的预测单元不同于某些先前视频译码标准中的预测单元(例如,宏块)。事实上,在hevc中不存在如在某些先前视频译码标准中所理解的宏块的概念。宏块由基于四叉树方案的分层结构替换,所述分层结构可提供高灵活性和其它可能益处。举例来说,在hevc方案内,定义三个类型的块,译码单元(cu)、预测单元(pu)和变换单元(tu)。cu可指区分裂的基本单元。可将cu视为类似于宏块的概念,但hevc不限定cu的最大大小,且可允许递归分裂成四个相等大小的cu以改进内容适应性。pu可被认为是帧间/帧内预测的基本单元,且单个pu可含有多个任意形状分区以有效地译码不规则图像模式。tu可被认为是变换的基本单元。可独立于pu定义tu;然而,tu的大小可限于所述tu属于的cu的大小。此块结构分离为三个不同概念可允许根据单元的相应作用来优化每一单元,这可得到改善的译码效率。

仅出于说明的目的,使用仅包含视频数据的两个层(例如,例如bl的较低层和例如el的较高层)的实例来描述本文中所公开的某些实施例。视频数据的“层”通常可指具有至少一个共同特性(例如,视图、帧率、分辨率等)的图片序列。举例来说,层可包含与多视图视频数据的特定视图(例如,透视图)相关联的视频数据。作为另一实例,层可包含与可缩放视频数据的特定层相关联的视频数据。因此,本公开可互换地提及视频数据的层和视图。举例来说,视频数据的视图可被称作视频数据的层,且视频数据的层可被称作视频数据的视图。另外,多层编解码器(其还被称作多层视频译码器或多层编码器-解码器)可共同指多视图编解码器或可缩放编解码器(例如,经配置以使用mv-hevc、3d-hevc、shvc或另一多层译码技术编码及/或解码视频数据的编解码器)。视频编码和视频解码通常都可被称作视频译码。应理解,此类实例可适用于包含多个bl、rl和/或el的配置。另外,为了易于解释,参考某些实施例,以下公开内容包含术语“帧”或“块”。然而,这些术语不打算具有限制性。举例来说,下文描述的技术可以与任何合适的视频单元一起使用,例如块(例如,cu、pu、tu、宏块等等)、切片、帧等等。

视频译码标准

例如视频图像、tv图像、静态图像或由录像机或计算机产生的图像等数字图像可由布置成水平和垂直线的像素或样本构成。单个图像中的像素的数目通常有数万个。每一像素通常含有明度和色度信息。在无压缩的情况下,将从图像编码器传达到图像解码器的信息的绝对数量将使实时图像发射不可能。为了减少待发射的信息的量,已开发出例如jpeg、mpeg和h.263标准等数个不同压缩方法。

视频译码标准包含itu-th.261、iso/iecmpeg-1visual、itu-th.262或iso/iecmpeg-2visual、itu-th.263、iso/iecmpeg-4visual和itu-th.264(也被称为iso/iecmpeg-4avc),包含其可缩放视频译码(svc)和多视图视频译码(mvc)扩展。

另外,itu-tvceg与iso/iecmpeg的视频译码联合工作组(jct-vc)正在开发视频译码标准,即,hevc。完全引用hevc草案10(hevcdraft10)的是布洛斯(bross)等人的文件jctvc-l1003,“高效视频译码(hevc)文本规范草案10(highefficiencyvideocoding(hevc)textspecificationdraft10)”,itu-tsg16wp3与iso/iecjtc1/sc29/wg11的视频译码联合工作组(jct-vc),第12次会议:瑞士日内瓦,2013年1月14日到2013年1月23日。对hevc的多视图扩展(即,mv-hevc)和对hevc的可缩放扩展(名为shvc)也正分别由jct-3v(3d视频译码扩展开发itu-t/iso/iec联合工作组)和jct-vc进行开发。

视频译码系统

下文参考附图更充分地描述新颖系统、设备和方法的各个方面。然而,本公开可以许多不同形式来体现,且不应被解释为限于贯穿本公开所呈现的任何特定结构或功能。实际上,提供这些方面以使得本公开将透彻且完整,并且将向所属领域的技术人员充分传达本公开的范围。基于本文中的教示,所属领域的技术人员应了解,本公开的范围既定涵盖本文中所公开的无论是独立于本公开的任何其它方面而实施还是与之组合而实施的新颖系统、设备和方法的任何方面。举例来说,可以使用本文中所阐述的任何数目的方面来实施设备或实践方法。另外,本公开的范围既定涵盖使用除本文中所阐述的本公开的各个方面之外的或不同于本文中所阐述的本公开的各个方面的其它结构、功能性或结构与功能性来实践的此类设备或方法。应理解,可通过权利要求的一或多个要素来体现本文中所公开的任何方面。

尽管本文中描述了特定方面,但这些方面的许多变化和排列落在本公开的范围内。尽管提及了优选方面的一些益处和优点,但本公开的范围不希望限于特定益处、用途或目标。而是,本公开的方面既定广泛地适用于不同无线技术、系统配置、网络和传输协议,其中的一些是借助于实例而在图中以及在优选方面的以下描述中说明。详细描述和图式仅说明本公开,且不具有限制性,本公开的范围由所附权利要求书和其等效物界定。

附图说明若干实例。由附图中的参考标号指示的元件对应于在以下描述中由相同参考标号指示的元件。在本公开中,具有以序数词(例如,“第一”、“第二”、“第三”等)开始的名称的元件不一定暗示所述元件具有特定次序。而是,这些序数词仅用于指代相同或类似类型的不同元件。

图1a为说明可利用根据本公开中所描述的方面的技术的实例视频译码系统10的框图。如本文中所描述地使用,术语“视频译码器”一般指代视频编码器和视频解码器两者。在本公开中,术语“视频译码”或“译码”一般可指代视频编码和视频解码。除了视频编码器和视频解码器外,本申请中所描述的方面可扩展到其它相关装置,例如转码器(例如,可解码位流且重新编码另一位流的装置)和中间盒(例如,可修改、变换和/或以其它方式操纵位流的装置)。

如图1a中所展示,视频译码系统10包含源装置12,其产生将在稍后时间由目的地装置14解码的经编码视频数据。在图1a的实例中,源装置12和目的地装置14在单独的装置上,具体来说,源装置12是源装置的部分,且目的地装置14是目的地装置的部分。然而,应注意,源装置12和目的地装置14可在相同装置上或为相同装置的一部分,如图1b的实例中所示。

再次参考图1a,源装置12和目的地装置14可分别包括广泛范围的装置中的任一者,包含台式计算机、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话的电话手持机、所谓的“智能”板、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、视频流装置等。在各种实施例中,源装置12和目的地装置14可经装备以用于无线通信。

目的地装置14可经由链路16接收待解码的经编码视频数据。链路16可包括能够将经编码视频数据从源装置12移动到目的地装置14的任何类型的媒体或装置。在图1a的实例中,链路16可包括使源装置12能够实时将经编码视频数据直接发射到目的地装置14的通信媒体。可根据通信标准(例如,无线通信协定)调制经编码视频数据,并将其发射到目的地装置14。通信媒体可包括任何无线或有线通信媒体,例如射频(rf)频谱或一或多个物理传输线。通信媒体可形成分组网络(例如局域网、广域网或全球网络,例如因特网)的部分。通信媒体可包含路由器、交换机、基站或可用于促进从源装置12到目的地装置14的通信的任何其它装备。

替代地,经编码数据可从输出接口22输出到可选存储装置31。类似地,经编码数据可由例如目的地装置14的输入接口28从存储装置31存取。存储装置31可包含多种分布式或本地存取的数据存储媒体中的任一者,例如硬盘驱动器、快闪存储器、易失性或非易失性存储器或用于存储经编码视频数据的任何其它合适的数字存储媒体。在另一实例中,存储装置31可对应于可保存由源装置12产生的经编码视频的文件服务器或另一中间存储装置。目的地装置14可经由流式传输或下载来从存储装置31存取所存储视频数据。文件服务器可为能够存储经编码视频数据并且将所述经编码视频数据发射到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站)、文件传输协议(ftp)服务器、网络附接存储(nas)装置或本地磁盘驱动器。目的地装置14可通过任何标准数据连接(包含因特网连接)来存取经编码视频数据。此可包含无线信道(例如,无线局域网[wlan]连接)、有线连接(例如,数字用户线(dsl)、电缆调制解调器等等)或适合于存取存储在文件服务器上的经编码视频数据的两者的组合。经编码视频数据从存储装置31的发射可为流式发射、下载发射或两者的组合。

本公开的技术不限于无线应用或设置。所述技术可应用于视频译码以支持各种多媒体应用中的任一者,例如空中电视广播、有线电视传输、卫星电视传输、流式视频传输(例如,经由因特网(例如,经由超文本传送协议(http)的动态自适应流式传输、经由http的动态自适应流式传输(dash)等等))、数字视频的编码以用于存储于数据存储媒体上、存储于数据存储媒体上的数字视频的解码或其它应用。在一些实例中,视频译码系统10可经配置以支持单向或双向视频传输以支持例如视频流式传输、视频回放、视频广播和/或视频电话等应用。

在图1a的实例中,源装置12包含视频源18、视频编码器20和输出接口22。在一些情况下,输出接口22可包含调制器/解调器(调制解调器)及/或发射器。在源装置12中,视频源18可包含例如以下各项的源:视频捕获装置(例如,摄像机)、含有先前所捕获的视频的视频存档、用于从视频内容提供者接收视频的视频馈入接口和/或用于产生计算机图形数据以作为源视频的计算机图形系统,或此类源的组合。作为一个实例,如果视频源18是摄像机,那么源装置12和目的地装置14可形成所谓的相机电话或视频电话,如图1b的实例中所说明。然而,本公开中所描述的技术一般来说可适用于视频译码,且可应用于无线和/或有线应用。

经捕获、预先捕获或计算机产生的视频可由视频编码器20编码。可经由源装置12的输出接口22将经编码视频数据直接发射到目的地装置14。经编码视频数据还可(或替代地)存储于存储装置31上用于稍后由目的地装置14或其它装置存取,以供解码和/或回放。图1a和1b中说明的视频编码器20可包括图2a中说明的视频编码器20、图2b中说明的视频编码器23或本文中描述的任一其它视频编码器。

在图1a的实例中,目的地装置14包含输入接口28、视频解码器30和显示装置32。在一些情况下,输入接口28可包含接收器和/或调制解调器。目的地装置14的输入接口28可经由链路16和/或从存储装置31接收经编码视频数据。经由链路16传达或在存储装置31上提供的经编码视频数据可包含由视频编码器20产生的多种语法元素,用于由例如视频解码器30的视频解码器在解码视频数据时使用。此类语法元素可与在通信媒体上发射、存储于存储媒体上或存储于文件服务器上的经编码视频数据包含在一起。图1a和1b中说明的视频解码器30可包括图3a中说明的视频解码器30、图3b中说明的视频解码器33或本文中描述的任一其它视频解码器。

显示装置32可与目的地装置14集成在一起或在目的地装置14的外部。在一些实例中,目的地装置14可包含集成显示装置且还可经配置以与外部显示装置介接。在其它实例中,目的地装置14可为显示装置。一般来说,显示装置32将经解码视频数据显示给用户,且可包括各种显示装置中的任一者,例如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一类型的显示装置。

在相关方面中,图1b展示实例视频编码和解码系统10′,其中源装置12和目的地装置14在装置11上或为其部分。装置11可为电话手持机,例如“智能”电话等等。装置11可包含与源装置12和目的地装置14操作性通信的任选的处理器/控制器装置13。图1b的系统10′和其组件另外类似于图1a的系统10和其组件。

视频编码器20和视频解码器30可根据例如hevc标准等视频压缩标准操作,且可符合hevc测试模型(hm)。替代地,视频编码器20和视频解码器30可根据其它专有或行业标准或此类标准的扩展而操作,所述标准例如itu-th.264标准,或者被称作mpeg-4第10部分avc。然而,本公开的技术不限于任何特定译码标准。视频压缩标准的其它实例包含mpeg-2和itu-th.263。

虽然图1a和1b的实例中未展示,但视频编码器20和视频解码器30可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处置对共同数据流或单独数据流中的音频和视频两者的编码。在一些实例中,如果适用的话,多路复用器-多路分用器单元可符合ituh.223多路复用器协议,或例如用户数据报协议(udp)等其它协议。

视频编码器20和视频解码器30各自可实施为多种合适的编码器电路中的任一者,例如一或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当部分地用软件实施所述技术时,装置可将用于软件的指令存储在合适的非暂时性计算机可读媒体中且在硬件中使用一或多个处理器执行所述指令以执行本公开的技术。视频编码器20和视频解码器30中的每一个可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可集成为相应装置中的组合编码器/解码器(例如,编解码器)的部分。

视频译码过程

如上文简要提及,视频编码器20编码视频数据。视频数据可以包括一或多个图片。图片中的每一个为形成视频的部分的静态图像。在一些情况下,图片可被称为视频“帧”。当视频编码器20编码视频数据时,视频编码器20可产生位流。位流可包含形成视频数据的经译码表示的位序列。位流可包含经译码图片和相关联的数据。经译码的图片是图片的经译码表示。

为了产生位流,视频编码器20可对视频数据中的每一图片执行编码操作。当视频编码器20对所述图片执行编码操作时,视频编码器20可产生一系列经译码图片和相关联的数据。相关联的数据可包含视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、自适应参数集(aps)和其它语法结构。sps可以含有适用于零个或更多图片序列的参数。pps可含有适用于零个或更多图片的参数。aps可含有适用于零个或更多图片的参数。aps中的参数可为比pps中的参数更有可能改变的参数。

为了产生经译码图片,视频编码器20可将图片分割成大小相等的视频块。视频块可为样本的二维阵列。视频块中的每一个均与树块相关联。在一些情况下,树块可被称作最大译码单元(lcu)。hevc的树块可广泛类似于例如h.264/avc等先前标准的宏块。然而,树块不必限于特定大小且可包含一或多个cu。视频编码器20可使用四叉树分割将树块的视频块分割成与cu相关联的视频块(因此名称为“树块”)。

在一些实例中,视频编码器20可将图片分割成多个切片。切片中的每一个可包含整数数目个cu。在一些情况下,切片包括整数数目个树块。在其它情况下,切片的边界可在树块内。

作为对图片执行编码操作的部分,视频编码器20可对图片的每一切片执行编码操作。当视频编码器20对切片执行编码操作时,视频编码器20可产生与切片相关联的经编码数据。与切片相关联的经编码数据可被称作“经译码切片”。

为了产生经译码切片,视频编码器20可对切片中的每一树块执行编码操作。当视频编码器20对树块执行编码操作时,视频编码器20可产生经译码树块。经译码树块可包括表示树块的经编码版本的数据。

当视频编码器20产生经译码切片时,视频编码器20可根据光栅扫描次序对切片中的树块执行编码操作(例如,对所述树块进行编码)。举例来说,视频编码器20可按如下次序来对切片的树块进行编码:跨越切片中的树块的最顶行从左到右进行,接着跨越树块的下一较低行从左到右进行,以此类推,直到视频编码器20已对切片中的树块中的每一个进行了编码为止。

根据光栅扫描次序对树块进行编码的结果是,可能已经对给定树块的上方和左边的树块进行了编码,但尚未对给定树块的下方和右边的树块进行编码。因此,当对给定树块进行编码时,视频编码器20可能能够存取通过对在给定树块的上方和左边的树块进行编码而产生的信息。然而,当对给定树块进行编码时,视频编码器20可能不能够存取通过对在给定树块的下方和右边的树块进行编码而产生的信息。

为了产生经译码树块,视频编码器20可对树块的视频块递归地执行四叉树分割以将所述视频块划分成逐渐变小的视频块。较小视频块中的每一个可与不同cu相关联。举例来说,视频编码器20可将树块的视频块分割成四个大小相等的子块、将所述子块中的一或多个分割成四个大小相等的子子块(sub-sub-block),以此类推。经分割的cu可为视频块被分割成与其它cu相关联的视频块的cu。未分割cu可为视频块未被分割成与其它cu相关联的视频块的cu。

位流中的一或多个语法元素可指示视频编码器20可分割树块的视频块的最大次数。cu的视频块在形状上可为正方形。cu的视频块的大小(例如,cu的大小)范围可从8×8像素直到具有64×64像素或更大的最大值的树块的视频块的大小(例如,树块的大小)。

视频编码器20可根据z扫描次序对树块的每一cu执行编码操作(例如,对所述每一cu进行编码)。换句话说,视频编码器20可按所述次序对左上cu、右上cu、左下cu和接着右下cu进行编码。当视频编码器20对经分割cu执行编码操作时,视频编码器20可根据z扫描次序对与经分割cu的视频块的子块相关联的cu进行编码。换句话说,视频编码器20可按所述次序对与左上子块相关联的cu、与右上子块相关联的cu、与左下子块相关联的cu和接着与右下子块相关联的cu进行编码。

根据z扫描次序对树块的cu进行编码的结果是,可能已经对给定cu的上方、左上方、右上方、左边和左下方的cu进行了编码。尚未对给定cu的右下方的cu进行编码。因此,当对给定cu进行编码时,视频编码器20可能能够存取通过对邻近给定cu的一些cu进行编码而产生的信息。然而,当对给定cu进行编码时,视频编码器20可能不能够存取通过对邻近给定cu的其它cu进行编码而产生的信息。

当视频编码器20对未分割的cu进行编码时,视频编码器20可产生用于所述cu的一或多个预测单元(pu)。cu的pu中的每一个均可与cu的视频块内的不同视频块相关联。视频编码器20可产生用于cu的每一pu的经预测视频块。pu的经预测视频块可为样本块。视频编码器20可使用帧内预测或帧间预测来产生用于pu的经预测视频块。

当视频编码器20使用帧内预测来产生pu的经预测视频块时,视频编码器20可基于与pu相关联的图片的经解码样本来产生pu的经预测视频块。如果视频编码器20使用帧内预测来产生cu的pu的经预测视频块,那么cu为经帧内预测的cu。当视频编码器20使用帧间预测来产生pu的经预测视频块时,视频编码器20可基于不同于与pu相关联的图片的一或多个图片的经解码样本而产生pu的经预测视频块。如果视频编码器20使用帧间预测来产生cu的pu的经预测视频块,那么所述cu为经帧间预测的cu。

此外,当视频编码器20使用帧间预测来产生用于pu的经预测视频块时,视频编码器20可产生用于所述pu的运动信息。pu的运动信息可指示pu的一或多个参考块。pu的每一参考块可为参考图片内的视频块。参考图片可为除与pu相关联的图片以外的图片。在一些情况下,pu的参考块也可被称作pu的“参考样本”。视频编码器20可基于pu的参考块而产生用于所述pu的经预测视频块。

在视频编码器20产生用于cu的一或多个pu的经预测视频块之后,视频编码器20可基于用于cu的所述pu的经预测视频块而产生所述cu的残余数据。cu的残余数据可指示用于cu的pu的经预测视频块与cu的原始视频块中的样本之间的差异。

此外,作为对未分割cu执行编码操作的部分,视频编码器20可对cu的残余数据执行递归四叉树分割以将cu的残余数据分割成与cu的变换单元(tu)相关联的一或多个残余数据块(例如,残余视频块)。cu的每一tu可与不同残余视频块相关联。

视频编码器20可将一或多个变换施加到与tu相关联的残余视频块以产生与tu相关联的变换系数块(例如,变换系数的块)。在概念上,变换系数块可为变换系数的二维(2d)矩阵。

在产生变换系数块之后,视频编码器20可对所述变换系数块执行量化过程。量化通常是指对变换系数进行量化以可能减少用以表示变换系数的数据的量从而提供进一步压缩的过程。量化过程可减少与变换系数中的一些或全部相关联的位深度。举例来说,可在量化期间将n位变换系数向下舍入为m位变换系数,其中n大于m。

视频编码器20可使每一cu与量化参数(qp)值相关联。与cu相关联的qp值可确定视频编码器20如何量化与所述cu相关联的变换系数块。视频编码器20可通过调整与cu相关联的qp值来调整施加到与cu相关联的变换系数块的量化的程度。

在视频编码器20量化变换系数块之后,视频编码器20可产生表示经量化变换系数块中的变换系数的语法元素集。视频编码器20可将例如上下文自适应二进制算术译码(cabac)操作等熵编码操作施加到这些语法元素中的一些。也可使用例如上下文自适应可变长度译码(cavlc)、概率区间分割熵(pipe)译码或其它二进制算术译码等其它熵译码技术。

由视频编码器20产生的位流可包含一系列网络抽象层(nal)单元。所述nal单元中的每一个可以是含有nal单元中的数据类型的指示和含有数据的字节的语法结构。举例来说,nal单元可含有表示以下各项的数据:视频参数集、序列参数集、图片参数集、经译码切片、补充增强信息(sei)、存取单元分隔符、填充符数据或另一类型的数据。nal单元中的数据可包含各种语法结构。

视频解码器30可接收由视频编码器20产生的位流。所述位流可包含由视频编码器20编码的视频数据的经译码表示。当视频解码器30接收到位流时,视频解码器30可对所述位流执行解析操作。当视频解码器30执行解析操作时,视频解码器30可从所述位流提取语法元素。视频解码器30可基于从位流提取的语法元素来重构视频数据的图片。基于语法元素重构视频数据的过程可大体上与通过视频编码器20执行以产生语法元素的过程相反。

在视频解码器30提取与cu相关联的语法元素之后,视频解码器30可基于所述语法元素而产生用于cu的pu的经预测视频块。另外,视频解码器30可对与cu的tu相关联的变换系数块进行逆量化。视频解码器30可对变换系数块执行逆变换以重构与cu的tu相关联的残余视频块。在产生经预测视频块且重构残余视频块之后,视频解码器30可基于所述经预测视频块和所述残余视频块来重构cu的视频块。以此方式,视频解码器30可基于位流中的语法元素而重构cu的视频块。

视频编码器

图2a是说明可实施根据本公开中描述的方面的技术的视频编码器的实例的框图。视频编码器20可经配置以例如针对hevc来处理视频帧的单个层。另外,视频编码器20可经配置以执行本公开的技术中的任一者或全部。作为一个实例,预测处理单元100可经配置以执行本公开中描述的技术中的任一者或全部。在另一实施例中,视频编码器20包含任选的层间预测单元128,所述层间预测单元经配置以执行本公开中描述的技术中的任一者或全部。在其它实施例中,层间预测可由预测处理单元100(例如,帧间预测单元121和/或帧内预测单元126)执行,在此情况下可省略层间预测单元128。然而,本公开的方面不限于此。在一些实例中,本公开中所描述的技术可在视频编码器20的各个组件之间共享。在一些实例中,另外或替代地,处理器(未展示)可经配置以执行本公开中所描述的技术中的任一者或全部。

出于解释的目的,本公开在hevc译码的上下文中描述视频编码器20。然而,本公开的技术可以适用于其它译码标准或方法。图2a中所描绘的实例是针对单层编解码器。然而,如将关于图2b进一步描述,可复制视频编码器20中的一些或全部以用于多层编解码器的处理。

视频编码器20可执行视频切片内的视频块的帧内和帧间译码。帧内译码依赖于空间预测来减小或去除给定视频帧或图片内的视频中的空间冗余。帧间译码依赖于时间预测来减小或去除视频序列的相邻帧或图片内的视频中的时间冗余。帧内模式(i模式)可指代若干基于空间的译码模式中的任一者。例如单向预测(p模式)或双向预测(b模式)等帧间模式可指代若干基于时间的译码模式中的任一者。

在图2a的实例中,视频编码器20包含多个功能组件。视频编码器20的功能组件包含预测处理单元100、残余产生单元102、变换处理单元104、量化单元106、逆量化单元108、逆变换单元110、重构单元112、滤波器单元113、经解码图片缓冲器114和熵编码单元116。预测处理单元100包含帧间预测单元121、运动估计单元122、运动补偿单元124、帧内预测单元126和层间预测单元128。在其它实例中,视频编码器20可包含更多、更少或不同功能组件。此外,运动估计单元122和运动补偿单元124可高度集成,但出于解释的目的而在图2a的实例中分开表示。

视频编码器20可以接收视频数据。视频编码器20可从各个源接收视频数据。举例来说,视频编码器20可从视频源18(例如,图1a或1b中所展示)或另一源接收视频数据。视频数据可表示一系列图片。为了对视频数据进行编码,视频编码器20可对图片中的每一个执行编码操作。作为对图片执行编码操作的部分,视频编码器20可对图片的每一切片执行编码操作。作为对切片执行编码操作的部分,视频编码器20可对切片中的树块执行编码操作。

作为对树块执行编码操作的部分,预测处理单元100可对树块的视频块执行四叉树分割以将所述视频块划分成逐渐变小的视频块。较小视频块中的每一个可与不同cu相关联。举例来说,预测处理单元100可将树块的视频块分割成四个大小相等的子块、将所述子块中的一或多个分割成四个大小相等的子子块,以此类推。

与cu相关联的视频块的大小范围可从8×8样本直到最大64×64样本或更大的树块大小。在本公开中,“n×n”和“n乘n”可互换使用来指代在垂直和水平尺寸方面的视频块的样本尺寸,例如,16×16样本或16乘16样本。一般来说,16×16视频块在垂直方向上具有16个样本(y=16),且在水平方向上具有16个样本(x=16)。同样,n×n块一般在垂直方向上具有n个样本,且在水平方向上具有n个样本,其中n表示非负整数值。

另外,作为对树块执行编码操作的部分,预测处理单元100可产生用于所述树块的分层四叉树数据结构。举例来说,树块可对应于四叉树数据结构的根节点。如果预测处理单元100将树块的视频块分割成四个子块,那么根节点在四叉树数据结构中具有四个子节点。所述子节点中的每一个对应于与子块中的一个相关联的cu。如果预测处理单元100将子块中的一个分割成四个子子块,那么对应于与子块相关联的cu的节点可具有四个子节点,其中的每一个对应于与子子块中的一个相关联的cu。

四叉树数据结构的每一节点可含有用于对应树块或cu的语法数据(例如,语法元素)。举例来说,四叉树中的节点可包含分裂旗标,其指示对应于所述节点的cu的视频块是否被分割(例如,分裂)成四个子块。用于cu的语法元素可递归地定义,且可取决于cu的视频块是否分裂成子块。视频块未被分割的cu可对应于四叉树数据结构中的叶节点。经译码树块可包含基于对应树块的四叉树数据结构的数据。

视频编码器20可对树块的每一未分割cu执行编码操作。当视频编码器20对未经分割的cu执行编码操作时,视频编码器20产生表示未经分割的cu的经编码表示的数据。

作为对cu执行编码操作的部分,预测处理单元100可在cu的一或多个pu间分割cu的视频块。视频编码器20和视频解码器30可支持各种pu大小。假设特定cu的大小为2n×2n,那么视频编码器20和视频解码器30可支持2n×2n或n×n的pu大小,以及2n×2n、2n×n、n×2n、n×n、2n×nu、nl×2n、nr×2n或类似的对称pu大小的帧间预测。视频编码器20和视频解码器30还可支持用于2n×nu、2n×nd、nl×2n和nr×2n的pu大小的不对称分割。在一些实例中,预测处理单元100可执行几何分割以沿并不按直角与cu的视频块的侧会合的边界来在cu的pu间分割cu的视频块。

帧间预测单元121可对cu的每一pu执行帧间预测。帧间预测可提供时间压缩。为了对pu执行帧间预测,运动估计单元122可产生pu的运动信息。运动补偿单元124可基于所述运动信息而产生pu的经预测视频块和除与cu相关联的图片(例如,参考图片)之外的图片的经解码样本。在本公开中,由运动补偿单元124产生的经预测视频块可被称作经帧间预测的视频块。

切片可为i切片、p切片或b切片。运动估计单元122和运动补偿单元124可取决于pu处于i切片、p切片还是b切片中而对cu的pu执行不同操作。在i切片中,所有pu都经帧内预测。因此,如果pu在i切片中,那么运动估计单元122和运动补偿单元124不对pu执行帧间预测。

如果pu在p切片中,那么含有所述pu的图片与被称作“列表0”的参考图片列表相关联。列表0中的参考图片中的每一个均含有可用于其它图片的帧间预测的样本。当运动估计单元122关于p切片中的pu执行运动估计操作时,运动估计单元122可搜索列表0中的参考图片以找出pu的参考块。pu的参考块可为最紧密对应于pu的视频块中的样本的一组样本,例如,样本块。运动估计单元122可使用多种度量来确定参考图片中的一组样本对应于pu的视频块中的样本的紧密程度。举例来说,运动估计单元122可通过绝对差总和(sad)、平方差总和(ssd)或其它差异度量来确定参考图片中的一组样本对应于pu的视频块中的样本的紧密程度。

在识别出p切片中的pu的参考块之后,运动估计单元122可产生指示列表0中含有参考块的参考图片的参考索引,以及指示pu与参考块之间的空间位移的运动向量。在各种实例中,运动估计单元122可以不同精确度产生运动向量。举例来说,运动估计单元122可以四分之一样本精确度、八分之一样本精确度或其它分数样本精确度产生运动向量。在分数样本精确度的情况下,参考块值可从整数位置样本值内插在参考图片中。运动估计单元122可将参考索引和运动向量输出为pu的运动信息。运动补偿单元124可基于由pu的运动信息识别的参考块而产生pu的经预测视频块。

如果pu在b切片中,那么含有pu的图片可与被称作“列表0”和“列表1”的两个参考图片列表相关联。在一些实例中,含有b切片的图片可与为列表0与列表1的组合的列表组合相关联。

此外,如果pu在b切片中,那么运动估计单元122可对pu执行单向预测或双向预测。当运动估计单元122对pu执行单向预测时,运动估计单元122可搜索列表0或列表1中的参考图片以找出用于所述pu的参考块。运动估计单元122随后可产生指示列表0或列表1中含有参考块的参考图片的参考索引和指示pu与参考块之间的空间位移的运动向量。运动估计单元122可输出参考索引、预测方向指示符和运动向量作为pu的运动信息。预测方向指示符可指示参考索引指示列表0还是列表1中的参考图片。运动补偿单元124可基于由pu的运动信息指示的参考块来产生pu的经预测视频块。

当运动估计单元122对pu执行双向预测时,运动估计单元122可搜索列表0中的参考图片以找到用于所述pu的参考块,且还可搜索列表1中的参考图片以找到用于所述pu的另一参考块。运动估计单元122随后可产生指示列表0和列表1中含有参考块的参考图片的参考索引和指示参考块与pu之间的空间位移的运动向量。运动估计单元122可输出pu的参考索引和运动向量作为pu的运动信息。运动补偿单元124可基于由pu的运动信息指示的参考块而产生pu的经预测视频块。

在一些情况下,运动估计单元122不将pu的运动信息的完整集合输出到熵编码单元116。实际上,运动估计单元122可参考另一pu的运动信息用信号表示pu的运动信息。举例来说,运动估计单元122可确定pu的运动信息足够类似于邻近pu的运动信息。在此实例中,运动估计单元122可在与pu相关联的语法结构中指示一值,所述值向视频解码器30指示pu具有与邻近pu相同的运动信息。在另一实例中,运动估计单元122可在与pu相关联的语法结构中识别邻近pu和运动向量差(mvd)。运动向量差指示pu的运动向量与所指示的邻近pu的运动向量之间的差。视频解码器30可使用所指示的邻近pu的运动向量和运动向量差来确定pu的运动向量。通过在用信号表示第二pu的运动信息时参考第一pu的运动信息,视频编码器20可能能够使用较少位用信号表示第二pu的运动信息。

作为对cu执行编码操作的部分,帧内预测单元126可对cu的pu执行帧内预测。帧内预测可提供空间压缩。当帧内预测单元126对pu执行帧内预测时,帧内预测单元126可基于同一图片中的其它pu的经解码样本来产生用于pu的预测数据。用于pu的预测数据可包含经预测视频块和各种语法元素。帧内预测单元126可对i切片、p切片和b切片中的pu执行帧内预测。

为了对pu执行帧内预测,帧内预测单元126可使用多个帧内预测模式以产生用于pu的预测数据的多个集合。当帧内预测单元126使用帧内预测模式来产生pu的预测数据的集合时,帧内预测单元126可在与帧内预测模式相关联的方向和/或梯度上跨越pu的视频块从邻近pu的视频块扩展样本。邻近pu可在所述pu的上方、右上方、左上方或左边,假设对于pu、cu和树块采用从左到右、从上到下的编码次序。帧内预测单元126可取决于pu的大小而使用各种数目个帧内预测模式,例如33个方向性帧内预测模式。

预测处理单元100可从由运动补偿单元124针对pu产生的预测数据或由帧内预测单元126针对pu产生的预测数据当中选择用于pu的预测数据。在一些实例中,预测处理单元100基于预测数据集合的速率/失真度量而选择pu的预测数据。

如果预测处理单元100选择由帧内预测单元126产生的预测数据,那么预测处理单元100可用信号表示用以产生用于pu的预测数据的帧内预测模式,例如选定帧内预测模式。预测处理单元100可以各种方式用信号表示选定帧内预测模式。举例来说,有可能选定帧内预测模式与邻近pu的帧内预测模式相同。换句话说,邻近pu的帧内预测模式可为用于当前pu的最可能模式。因此,预测处理单元100可产生用以指示选定帧内预测模式与邻近pu的帧内预测模式相同的语法元素。

如上文所论述,视频编码器20可包含层间预测单元128。层间预测单元128经配置以使用可用于可缩放视频译码中的一或多个不同层(例如,bl或rl)来预测当前块(例如,el中的当前块)。此预测可被称作层间预测。层间预测单元128利用预测方法来减少层间冗余,进而改进译码效率并降低计算资源要求。层间预测的一些实例包含层间帧内预测、层间运动预测和层间残余预测。层间帧内预测使用bl中对处于相同位置的块的重构来预测el中的当前块。层间运动预测使用bl的运动信息来预测el中的运动。层间残余预测使用bl的残余来预测el的残余。下文更详细地论述层间预测方案中的每一个。

在预测处理单元100选择cu的pu的预测数据之后,残余产生单元102可通过从cu的视频块减去(例如,由减号指示)cu的pu的经预测视频块而产生cu的残余数据。cu的残余数据可包含对应于cu的视频块中的样本的不同样本分量的2d残余视频块。举例来说,残余数据可包含对应于cu的pu的经预测视频块中的样本的明度分量与cu的原始视频块中的样本的明度分量之间的差的残余视频块。另外,cu的残余数据可包含对应于cu的pu的经预测视频块中的样本的色度分量与cu的原始视频块中的样本的色度分量之间的差的残余视频块。

预测处理单元100可执行四叉树分割以将cu的残余视频块分割成子块。每一未经划分的残余视频块可与cu的不同tu相关联。与cu的tu相关联的残余视频块的大小和位置可以或可以不基于与cu的pu相关联的视频块的大小和位置。被称为“残余四叉树”(rqt)的四叉树结构可包含与残余视频块中的每一个相关联的节点。cu的tu可以对应于rqt的叶节点。

变换处理单元104可通过将一或多个变换施加到与cu的每一tu相关联的残余视频块而产生用于所述tu的一或多个变换系数块。变换系数块中的每一个均可为变换系数的2d矩阵。变换处理单元104可将各种变换施加到与tu相关联的残余视频块。举例来说,变换处理单元104可将离散余弦变换(dct)、方向性变换或概念上类似的变换施加到与tu相关联的残余视频块。

在变换处理单元104产生与tu相关联的变换系数块之后,量化单元106可量化所述变换系数块中的变换系数。量化单元106可基于与cu相关联的qp值而对与cu的tu相关联的变换系数块进行量化。

视频编码器20可以各种方式使qp值与cu相关联。举例来说,视频编码器20可对与cu相关联的树块执行速率-失真分析。在速率-失真分析中,视频编码器20可通过对树块执行多次编码操作而产生树块的多个经译码表示。当视频编码器20产生树块的不同经编码表示时,视频编码器20可使不同qp值与cu相关联。当给定qp值与具有最低位速率和失真度量的树块的经译码表示中的cu相关联时,视频编码器20可用信号表示所述给定qp值与cu相关联。

逆量化单元108和逆变换单元110可分别将逆量化和逆变换施加到变换系数块以由变换系数块重构残余视频块。重构单元112可将经重构的残余视频块添加到来自由预测处理单元100产生的一或多个经预测视频块的对应样本,以产生与tu相关联的经重构视频块。通过以此方式重构cu的每一tu的视频块,视频编码器20可重构cu的视频块。

在重构单元112重构cu的视频块之后,滤波器单元113可执行解块操作以减小与所述cu相关联的视频块中的块假象。在执行一或多个解块操作之后,滤波器单元113可将cu的经重构视频块存储在经解码图片缓冲器114中。运动估计单元122和运动补偿单元124可使用含有所述经重构视频块的参考图片来对后续图片的pu执行帧间预测。另外,帧内预测单元126可使用经解码图片缓冲器114中的经重构视频块对处于与cu相同的图片中的其它pu执行帧内预测。

熵编码单元116可从视频编码器20的其它功能组件接收数据。举例来说,熵编码单元116可从量化单元106接收变换系数块,且可从预测处理单元100接收语法元素。当熵编码单元116接收到数据时,熵编码单元116可执行一或多个熵编码操作以产生经熵编码的数据。举例来说,视频编码器20可对所述数据执行cavlc操作、cabac操作、可变到可变(v2v)长度译码操作、基于语法的上下文自适应二进制算术译码(sbac)操作、概率区间分割熵(pipe)译码操作或另一类型的熵编码操作。熵编码单元116可输出包含经熵编码数据的位流。

作为对数据执行熵编码操作的部分,熵编码单元116可选择上下文模型。如果熵编码单元116正执行cabac操作,那么上下文模型可指示特定二进制数具有特定值的概率的估计。在cabac的上下文中,术语“二进制数”用以指语法元素的二进制化版本的位。

多层视频编码器

图2b为说明可实施根据本公开中所描述的方面的技术的多层视频编码器23(也被简称为视频编码器23)的实例的框图。视频编码器23可经配置以处理多层视频帧(例如,针对shvc和多视图译码)。另外,视频编码器23可经配置以执行本公开的技术中的任一者或全部。

视频编码器23包含视频编码器20a和视频编码器20b,其中的每一个可经配置为视频编码器20,且可执行上文关于视频编码器20所描述的功能。另外,如由参考数字的再使用所指示,视频编码器20a和20b可包含如视频编码器20的系统和子系统中的至少一些。虽然将视频编码器23说明为包含两个视频编码器20a和20b,但是视频编码器23不受如此限制,且可包含任何数目个视频编码器20层。在一些实施例中,视频编码器23可包含针对存取单元中的每一图片或帧的视频编码器20。举例来说,包含五个图片的存取单元可由包含五个编码器层的视频编码器处理或编码。在一些实施例中,视频编码器23可包含比存取单元中的帧更多的编码器层。在一些此类情况下,当处理一些存取单元时,一些视频编码器层可能不在作用中。

除视频编码器20a和20b之外,视频编码器23还可包含再取样单元90。在一些情况下,再取样单元90可上取样所接收到的视频帧的bl以例如形成el。再取样单元90可对与帧的所接收到的bl相关联的特定信息上取样,但不对其它信息上取样。举例来说,再取样单元90可对bl的空间大小或像素数目上取样,但切片的数目或图片次序计数可保持恒定。在一些情况下,再取样单元90可不处理所接收到的视频且/或可为任选的。举例来说,在一些情况下,预测处理单元100可执行上取样。在一些实施例中,再取样单元90经配置以对层进行上取样且重新组织、重新界定、修改或调整一或多个切片以符合一组切片边界规则和/或光栅扫描规则。尽管主要描述为对bl或存取单元中的较低层进行上取样,但在一些情况下,再取样单元90可对层进行下取样。举例来说,如果在视频的流式传输期间减小带宽,那么可对帧进行下取样而不是上取样。

再取样单元90可经配置以从较低层编码器(例如,视频编码器20a)的经解码图片缓冲器114接收图片或帧(或与图片相关联的图片信息),并对所述图片(或所接收到的图片信息)进行上取样。可接着将此经上取样图片提供到经配置以对与较低层编码器相同的存取单元中的图片进行编码的较高层编码器(例如,视频编码器20b)的预测处理单元100。在一些情况下,较高层编码器为从较低层编码器去除的一个层。在其它情况下,在图2b的层0视频编码器与层1编码器之间可能存在一或多个较高层编码器。

在一些情况下,可省略或绕过再取样单元90。在此类情况下,可直接或在至少不提供到再取样单元90的情况下将来自视频编码器20a的经解码图片缓冲器114的图片提供到视频编码器20b的预测处理单元100。举例来说,如果提供到视频编码器20b的视频数据和来自视频编码器20a的经解码图片缓冲器114的参考图片具有相同大小或分辨率,那么可将参考图片提供到视频编码器20b而无需任何再取样。

在一些实施例中,视频编码器23使用下取样单元94对待提供到较低层编码器的视频数据进行下取样,之后将所述视频数据提供到视频编码器20a。或者,下取样单元94可为能够对视频数据上取样或下取样的再取样单元90。在另外其它实施例中,可省略下取样单元94。

如图2b中所说明,视频编码器23可进一步包含多路复用器98或mux。mux98可从视频编码器23输出组合的位流。可通过从视频编码器20a和20b中的每一个取得位流且交替在给定时间输出哪一位流来产生组合的位流。虽然在一些情况下,可一次一个位地交替来自两个(或在多于两个视频编码器层的情况下更多)位流的位,但在许多情况下,不同地组合所述位流。举例来说,可通过一次一个块地交替选定位流来产生输出位流。在另一实例中,可通过从视频编码器20a和20b中的每一个输出非1:1比率的块来产生输出位流。举例来说,可针对从视频编码器20a输出的每一块从视频编码器20b输出两个块。在一些实施例中,可预编程来自mux98的输出流。在其它实施例中,mux98可基于从视频编码器23外部的系统(例如从包含源装置12的源装置上的处理器)接收到的控制信号而组合来自视频编码器20a、20b的位流。可基于来自视频源18的视频的分辨率或位速率、基于链路16的带宽、基于与用户相关联的预订(例如,付费预订对比免费预订),或基于用于确定由视频编码器23所要的分辨率输出的任何其它因素来产生控制信号。

视频解码器

图3a是说明可实施根据本公开中描述的方面的技术的视频解码器的实例的框图。视频解码器30可经配置以处理视频帧的单层(例如,针对hevc)。另外,视频解码器30可经配置以执行本公开的技术中的任一者或全部。作为一个实例,运动补偿单元162和/或帧内预测单元164可经配置以执行本公开中所描述的技术中的任一者或全部。在一个实施例中,视频解码器30可任选地包含层间预测单元166,所述层间预测单元经配置以执行本公开中描述的技术中的任一者或全部。在其它实施例中,层间预测可由预测处理单元152(例如,运动补偿单元162和/或帧内预测单元164)执行,在此情况下,可省略层间预测单元166。然而,本公开的方面不限于此。在一些实例中,本公开中所描述的技术可在视频解码器30的各个组件之间共享。在一些实例中,另外或替代地,处理器(未展示)可经配置以执行本公开中所描述的技术中的任一者或全部。

出于解释的目的,本公开在hevc译码的上下文中描述视频解码器30。然而,本公开的技术可以适用于其它译码标准或方法。图3a中所描绘的实例是针对单层编解码器。然而,如将关于图3b进一步描述,可复制视频解码器30中的一些或全部以用于多层编解码器的处理。

在图3a的实例中,视频解码器30包含多个功能组件。视频解码器30的功能组件包含熵解码单元150、预测处理单元152、逆量化单元154、逆变换单元156、重构单元158、滤波器单元159和经解码图片缓冲器160。预测处理单元152包含运动补偿单元162、帧内预测单元164和层间预测单元166。在一些实例中,视频解码器30可执行一般与相对于图2a的视频编码器20描述的编码遍次互逆的解码遍次。在其它实例中,视频解码器30可包含更多、更少或不同的功能组件。

视频解码器30可接收包括经编码视频数据的位流。所述位流可包含多个语法元素。当视频解码器30接收到位流时,熵解码单元150可对所述位流执行解析操作。对位流执行解析操作的结果是,熵解码单元150可从所述位流提取语法元素。作为执行解析操作的部分,熵解码单元150可对位流中的经熵编码语法元素进行熵解码。预测处理单元152、逆量化单元154、逆变换单元156、重构单元158和滤波器单元159可执行重构操作,所述重构操作基于从位流提取的语法元素而产生经解码视频数据。

如上文所论述,位流可包括一系列nal单元。位流的nal单元可包含视频参数集nal单元、序列参数集nal单元、图片参数集nal单元、seinal单元等等。作为对位流执行解析操作的部分,熵解码单元150可执行解析操作,所述解析操作从序列参数集nal单元提取序列参数集且对所述序列参数集进行熵解码,从图片参数集nal单元提取图片参数集且对所述图片参数集进行熵解码,从seinal单元提取sei数据且对所述sei数据进行熵解码等等。

此外,位流的nal单元可包含经译码切片nal单元。作为对位流执行解析操作的部分,熵解码单元150可执行解析操作,所述解析操作从经译码切片nal单元提取经译码切片且对所述经译码切片进行熵解码。经译码切片中的每一个均可包含切片标头和切片数据。切片标头可以含有关于切片的语法元素。切片标头中的语法元素可包含识别与含有所述切片的图片相关联的图片参数集的语法元素。熵解码单元150可对经译码切片标头中的语法元素执行熵解码操作(例如,cabac解码操作),以恢复切片标头。

作为从经译码切片nal单元提取切片数据的部分,熵解码单元150可执行从切片数据中的经译码cu提取语法元素的解析操作。所提取的语法元素可包含与变换系数块相关联的语法元素。熵解码单元150可接着对语法元素中的一些执行cabac解码操作。

在熵解码单元150对未经分割的cu执行解析操作之后,视频解码器30可对未经分割的cu执行重构操作。为了对未经分割cu执行重构操作,视频解码器30可对cu的每一tu执行重构操作。通过对cu的每一tu执行重构操作,视频解码器30可重构与cu相关联的残余视频块。

作为对tu执行重构操作的部分,逆量化单元154可对与tu相关联的变换系数块进行逆量化(例如,解量化)。逆量化单元154可以类似于针对hevc所提议或由h.264解码标准定义的逆量化过程的方式对变换系数块进行逆量化。逆量化单元154可使用由视频编码器20针对变换系数块的cu计算的量化参数qp来确定量化程度,且同样地,确定逆量化单元154施加的逆量化的程度。

在逆量化单元154对变换系数块进行逆量化之后,逆变换单元156可产生与变换系数块相关联的tu的残余视频块。逆变换单元156可将逆变换施加到变换系数块以便产生所述tu的残余视频块。举例来说,逆变换单元156可将逆dct、逆整数变换、逆卡忽南-拉维(karhunen-loeve)变换(klt)、逆旋转变换、逆方向性变换或另一逆变换施加到变换系数块。在一些实例中,逆变换单元156可基于来自视频编码器20的信令而确定施加到变换系数块的逆变换。在这些实例中,逆变换单元156可基于在用于与变换系数块相关联的树块的四叉树的根节点处的用信号表示的变换来确定逆变换。在其它实例中,逆变换单元156可由例如块大小、译码模式等一或多个译码特性而推断逆变换。在一些实例中,逆变换单元156可施加级联的逆变换。

在一些实例中,运动补偿单元162可通过基于内插滤波器执行内插而改进pu的经预测视频块。待用于以子样本精确度进行运动补偿的内插滤波器的标识符可包含在语法元素中。运动补偿单元162可使用由视频编码器20在产生pu的经预测视频块期间使用的相同内插滤波器来计算参考块的子整数样本的内插值。运动补偿单元162可根据所接收到的语法元素而确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生经预测视频块。

如果使用帧内预测对pu进行编码,那么帧内预测单元164可执行帧内预测以产生用于pu的经预测视频块。举例来说,帧内预测单元164可基于位流中的语法元素而确定用于pu的帧内预测模式。位流可包含帧内预测单元164可用以确定pu的帧内预测模式的语法元素。

在一些情况下,语法元素可指示帧内预测单元164将使用另一pu的帧内预测模式来确定当前pu的帧内预测模式。举例来说,有可能当前pu的帧内预测模式与邻近pu的帧内预测模式相同。换句话说,邻近pu的帧内预测模式可为用于当前pu的最可能模式。因此,在此实例中,位流可包含小语法元素,所述小语法元素指示pu的帧内预测模式与邻近pu的帧内预测模式相同。帧内预测单元164可接着使用帧内预测模式以基于空间上邻近pu的视频块而产生pu的预测数据(例如,经预测样本)。

如上文所论述,视频解码器30还可包含层间预测单元166。层间预测单元166经配置以使用可用于可缩放视频译码中的一或多个不同层(例如,bl或rl)来预测当前块(例如,el中的当前块)。此预测可被称作层间预测。层间预测单元166利用预测方法减少层间冗余,由此改进译码效率且降低计算资源要求。层间预测的一些实例包含层间帧内预测、层间运动预测和层间残余预测。层间帧内预测使用bl中对处于相同位置的块的重构来预测el中的当前块。层间运动预测使用bl的运动信息来预测el中的运动。层间残余预测使用bl的残余来预测el的残余。下文更详细地论述层间预测方案中的每一个。

重构单元158可使用与cu的tu相关联的残余视频块以及cu的pu的经预测视频块(例如,帧内预测数据或帧间预测数据,如果适用)来重构cu的视频块。因此,视频解码器30可基于位流中的语法元素而产生经预测视频块和残余视频块,且可基于经预测视频块和残余视频块而产生视频块。

在重构单元158重构cu的视频块之后,滤波器单元159可执行解块操作以减少与所述cu相关联的块假象。在滤波器单元159执行解块操作以减少与cu相关联的块假象之后,视频解码器30可将cu的视频块存储在经解码图片缓冲器160中。经解码图片缓冲器160可提供用于后续运动补偿、帧内预测和在显示装置(例如,图1a或1b的显示装置32)上呈现的参考图片。举例来说,视频解码器30可基于经解码图片缓冲器160中的视频块对其它cu的pu执行帧内预测或帧间预测操作。

多层解码器

图3b为说明可实施根据本公开中描述的方面的技术的多层视频解码器33(也被简称为视频解码器33)的实例的框图。视频解码器33可经配置以处理多层视频帧(例如,针对shvc和多视图译码)。另外,视频解码器33可经配置以执行本公开的技术中的任一者或全部。

视频解码器33包含视频解码器30a和视频解码器30b,其中的每一个可经配置为视频解码器30,且可执行上文关于视频解码器30描述的功能。另外,如由参考数字的再使用所指示,视频解码器30a和30b可包含如视频解码器30的系统和子系统中的至少一些。虽然将视频解码器33说明为包含两个视频解码器30a和30b,但视频解码器33不受如此限制,且可包含任何数目个视频解码器30层。在一些实施例中,视频解码器33可包含用于存取单元中的每一图片或帧的视频解码器30。举例来说,可由包含五个解码器层的视频解码器处理或解码包含五个图片的存取单元。在一些实施例中,视频解码器33可包含比存取单元中的帧更多的解码器层。在一些此类情况下,当处理一些存取单元时,一些视频解码器层可能不在作用中。

除了视频解码器30a和30b外,视频解码器33还可包含上取样单元92。在一些实施例中,上取样单元92可上取样所接收到的视频帧的bl以产生待添加到用于帧或存取单元的参考图片列表的增强层。此增强层可存储在经解码图片缓冲器160中。在一些实施例中,上取样单元92可包含关于图2b的再取样单元90所描述的实施例中的一些或全部。在一些实施例中,上取样单元92经配置以对层进行上取样且重新组织、重新界定、修改或调整一或多个切片以符合一组切片边界规则和/或光栅扫描规则。在一些情况下,上取样单元92可为经配置以对所接收到的视频帧的层上取样和/或下取样的再取样单元。

上取样单元92可经配置以从较低层解码器(例如,视频解码器30a)的经解码图片缓冲器160接收图片或帧(或与图片相关联的图片信息)并对所述图片(或所接收到的图片信息)进行上取样。可接着将此经上取样图片提供到经配置以对与较低层解码器相同的存取单元中的图片进行解码的较高层解码器(例如,视频解码器30b)的预测处理单元152。在一些情况下,较高层解码器为从较低层解码器去除的一个层。在其它情况下,在图3b的层0解码器与层1解码器之间可存在一或多个较高层解码器。

在一些情况下,可省略或绕过上取样单元92。在此类情况下,可直接或在至少不提供到上取样单元92的情况下将来自视频解码器30a的经解码图片缓冲器160的图片提供到视频解码器30b的预测处理单元152。举例来说,如果提供到视频解码器30b的视频数据和来自视频解码器30a的经解码图片缓冲器160的参考图片具有相同的大小或分辨率,那么可将参考图片提供到视频解码器30b而无需上取样。另外,在一些实施例中,上取样单元92可为经配置以对从视频解码器30a的经解码图片缓冲器160接收到的参考图片进行上取样或下取样的再取样单元90(参见例如图2b)。

如图3b中所说明,视频解码器33可进一步包含多路分用器99或demux。demux99可将经编码视频位流分裂为多个位流,其中由demux99输出的每一位流被提供到不同的视频解码器30a和30b。可通过接收位流来产生多个位流,且视频解码器30a和30b中的每一个在给定时间接收位流的一部分。虽然在一些情况下,可在视频解码器(例如,在图3b的实例中的视频解码器30a和30b)中的每一个之间一次一个位地交替来自在demux99处所接收到的位流的位,但在许多情况下,以不同方式划分所述位流。举例来说,可通过一次一个块地交替哪一视频解码器接收位流而划分所述位流。在另一实例中,可通过到视频解码器30a和30b中的每一个的块的非1:1比率来划分位流。举例来说,可针对提供到视频解码器30a的每一块而将两个块提供到视频解码器30b。在一些实施例中,可预编程由demux99对位流的划分。在其它实施例中,demux99可基于从视频解码器33外部的系统(例如,从包含目的地装置14的目的地装置上的处理器)接收到的控制信号而划分位流。可基于来自输入接口28的视频的分辨率或位速率、基于链路16的带宽、基于与用户相关联的预订(例如,付费预订对比免费预订)或基于用于确定可通过视频解码器33获得的分辨率的任何其它因素来产生控制信号。

视频像素线缓冲器

视频像素线缓冲器在视频编解码器中广泛地用于数据处理。在一些实施例中,一或多个数据处理信道可与基于对应信道的线缓冲器相关联。举例来说,图4说明根据一些实施例的视频帧。如图4中所说明,视频帧400包括以多个行402布置的多个数据块404。在一些实施例中,特定块或行的邻域像素数据可用于处理下一块或行的数据。举例来说,来自先前经处理的一行数据块的顶部邻域数据可用于处理行406中的当前块408。在一些实施例中,顶部邻域数据可包括与第一信道相关联的第一组顶部邻域数据410和与第二信道相关联的第二组顶部邻域数据412。当处理当前行406时,底部邻域数据414可保存在视频像素线缓冲器中以在处理后一行数据块时用作顶部邻域数据。

图5说明根据一些实施例的双信道视频处理系统。输入视频数据502可传递通过去交错器506和比例缩小/放大器508以产生输出视频数据504。或者,可绕过去交错器506和/或比例缩小/放大器508(分别通过路径510和512)。在一些实施例中,去交错器506可对应于第一信道,而比例缩小/放大器508可对应于第二信道(在下文中分别还被称作“信道a”和“信道b”)。举例来说,在一些实施例中,信道a可对应于在去交错之前(待输入到去交错器中)的顶部线邻域数据,而信道b可对应于已经去交错但尚未经缩放(待输入到比例缩小/放大器中)的顶部线邻域数据。

因而,在所说明的实施例中,四个不同的信道配置是可能的:不启用信道(不去交错或比例缩小/放大)的配置、仅启用信道a(去交错但不比例缩小/放大)的配置、仅启用信道b(比例缩小/放大但不去交错)的配置和启用信道a和信道b两者(去交错且比例缩小/放大)的配置。由于不启用信道的配置将导致数据未经缓冲,因此在论述视频像素线缓冲器的上下文中仅需要考虑后三个配置。

将数据打包到ddr

在许多应用中,本地存储器可能并不具有用以保存邻域像素的数据的足够空间。因而,在一些实施例中,可将邻域数据发送到外部存储器源,例如双倍数据速率(doubledatarate;ddr)存储器。在一些实施例中,为了将来自信道(例如,信道a和/或信道b)的数据打包到实施于ddr存储器中的缓冲器中,使用直接存储器存取(directmemoryaccess;dma)信道。因而,所述数据需要以dma信道能够辨别且处理的方式而打包。当需要所述数据(例如,以处理下一行的数据块)时,可通过dma信道从ddr读回所述数据,当所述数据可用于处理时可解包所述数据且将其置于本地存储器中。应理解,虽然出于实例的目的本说明书主要涉及实施于ddr存储器中的缓冲器,但在其它实施例中,缓冲器可在例如片上存储器的其它类型的存储器中实施。

图6说明根据一些实施例的双信道缓冲器打包方案。在一些实施例中,打包器606包括将所接收到的信道数据打包到打包缓冲器614(即,614-1和614-2)中的打包控制模块612(即,612-1和612-2)。含有脉冲串控制模块616(即,616-1和616-2)的ddr接口608接着将所述数据存储到脉冲串数据缓冲器618(即,618-1和618-2)中,其中所述数据可接着上传到ddr610。类似地,为了从ddr610解包数据,通过脉冲串控制模块624(即,624-1和624-2)在ddr接口608处将来自ddr的数据保存在脉冲串数据缓冲器626(即,626-1和626-2)中,且接着将所述数据移动到解包数据缓冲器622(即,622-1和622-2)以供通过解包控制模块620(即,620-1和620-2)解包,其中所述数据可输出到本地存储器以用于处理。在一些实施例中,其它类型的模块可用于打包/解包信道数据。

在一些实施例中,ddr缓冲器经配置以存储多个字,其中每个字包括含有设定位数的序列。在一些实施例中,脉冲串数据缓冲器618经配置成与字相同的大小。举例来说,可将来自第一或第二信道的数据块打包到脉冲串数据缓冲器中直到脉冲串数据缓冲器不能够适应待缓冲的下一数据块为止,于是将来自脉冲串数据缓冲器的数据作为新字存储于ddr缓冲器中。

如图6中所说明,每个信道(信道a602和信道b604)与其自身的打包/解包硬件相关联,且可独立地经打包和解包。举例来说,为了将数据上传到ddr,信道a602可与第一打包模块(包括打包控制612-1和打包数据缓冲器614-1)和第一ddr上传模块(包括脉冲串控制模块616-1和脉冲串数据缓冲器618-1)相关联,而信道b604可与第二打包模块(包括打包控制612-2和打包数据缓冲器614-2)和第二ddr上传模块(包括脉冲串控制模块616-2和脉冲串数据缓冲器618-2)相关联。类似地,为了从ddr下载数据,信道a可使用其自身的ddr下载模块(包括脉冲串控制模块624-1和脉冲串数据缓冲器626-1)和解包模块(包括解包控制模块620-1和解包数据缓冲器622-1),而信道b还与其自身的ddr下载模块(包括脉冲串控制模块624-2和脉冲串数据缓冲器626-2)和解包模块(包括解包控制模块620-2和解包数据缓冲器622-2)相关联。另外,ddr存储器610可被划分成对应于每个信道的单独的多个不同分区(例如,存储器槽)。举例来说,可分别将信道a数据和信道b数据分配到信道a分区628和信道b分区630。因而,来自信道a的数据块和来自信道b的数据块在单独缓冲器中将存储于单独的字中。

使每个信道与其自身的个别硬件相关联需要大量冗余硬件。在一些实施例中,为了减少实现成本,可使用混合打包方案,而不是需要用于每个信道的单独的打包/解包和ddr上传/下载模块,其中两个信道可共同经打包和解包。因而,两个信道将仅需要一组打包器/解封器模块和ddr上传/下载模块,从而将所需的模块的数目减少一半。图7a说明根据一些实施例的在两个信道共享打包/解包和ddr上传/下载模块时的双信道缓冲器打包方案。

如图式中所说明,第一与第二信道(信道a702和信道b704)共享相同打包/解包模块706和ddr上传/下载模块708以用于将数据打包到ddr存储器710。另外,由于来自信道a和b的数据通过相同打包/解包和上传/下载模块处理,因此可将所述数据存储于ddr的相同分区中。如果仅启用信道a,那么可将数据以如712处所说明的格式存储,其中缓冲器中的每个字仅含有来自信道a的数据块。如果仅启用信道b,那么可将数据以如714处所说明的格式存储,其中缓冲器中的每个字仅含有来自信道b的数据块。如果启用信道a和b两者,那么可将数据以如716处所说明的格式存储,其中缓冲器中的每个字可含有来自信道a和信道b两者的数据块。在一些实施例中,将来自两个信道的数据块以交替模式打包(例如,打包来自信道a的块,接着是来自信道b的块,接着是来自信道a的另一块,以此类推)。在一些实施例中,每个字可包括零或多个未用位(也被称作垃圾位)。垃圾位可位于所述字的一侧上,所述侧与所述字的打包的数据块来自的侧相反。举例来说,在所说明的实施例中,从所述字的右侧打包数据块,且垃圾位位于所述字的左侧上。

因而,将数据块从信道打包到ddr需要四个不同的可能打包格式。举例来说,打包格式可包括第一打包格式718,其中仅打包来自信道a的数据块;第二打包格式720,其中仅打包来自信道b的数据块;第三打包格式722,其中以从来自信道a的数据块开始的交替模式打包来自信道a和信道b的数据块;和第四打包格式724,其中以从来自信道b的数据块开始的交替模式打包来自信道a和信道b的数据块。因此,如何打包和/或解包数据块将取决于目前正使用四个不同打包格式中的哪一个。

举例来说,图8a说明根据一些实施例的可用于将数据块打包到ddr缓冲器且从ddr缓冲器解包数据块的栅极配置。由于存在四个不同的可能打包格式,因此4选1mux可用于确定打包到缓冲器的数据以及在数据检索期间每个信道中解包的数据。在一些实施例中,三个2选1mux可用于实施4选1mux。在所说明的实施例中,将第n个位打包到ddr(ddr[n])涉及在来自信道b的位(b[n_1])、来自信道a的位(a[n_1])或来自信道a或b的后一块的位(b[n_2]或a[n_3]或a[n_2]或b[n_3],其可至少部分地基于n的值和/或信道a和b相对于彼此的块大小)之间选择。举例来说,参考图7a中所说明的模式,对应于线802的在所述字的位置处的位可选自来自信道a和b的四个块中的一个(例如,块a2、b2、b1和a1,分别对应于模式718、720、722和724)。类似地,当将数据解包到信道a和b时,可基于所使用的打包格式而进行四个不同的可能选择(例如,信道a的第n个位(a[n])可选自ddr[n_a1]、ddr[n_a2]、ddr[n_a3]和ddr[n_a4],各自对应于不同打包格式)。

低复杂度/低成本双信道打包

在一些实施例中,为了降低数据块的打包和解包的硬件要求和复杂度,可在相反方向上打包来自两个信道的数据块,而不是在相同方向上以交替模式打包(例如,从右到左,如图7a中所说明)。图7b说明根据一些实施例的在相反方向上打包来自第一与第二信道的数据块的数据打包方案。在一些实施例中,用于打包呈此布置的数据块的打包器/解封器模块726和ddr接口728可统称为低复杂度/低成本双信道打包器(lclcp)。

如图式中所说明,可在从字的第一侧朝向字的第二侧的第一方向上(例如,从右到左)打包来自信道a的数据块,而可在从字的第二侧朝向第一侧的第二方向上(例如,从左到右)打包来自信道b的数据块。因而,如果仅启用信道a,那么可将数据以如730处所说明的格式存储,其中缓冲器中的每个字仅含有从右到左打包的来自信道a的数据块。如果仅启用信道b,那么可将数据以如732处所说明的格式存储,其中缓冲器中的每个字仅含有从左到右打包的来自信道b的数据块。如果启用信道a和信道b两者,那么可将数据以如734处所说明的格式存储,其中从字的右侧打包来自信道a的数据块,且从字的左侧打包来自信道b的数据块,来自信道a和信道b的数据块之间具有零或多个垃圾位。在一些实施例中,当启用信道a和信道b两者时,以交替或交错模式打包两个信道的数据块(例如,打包来自信道a的块,接着是来自信道b的块,接着是来自信道a的另一块,以此类推)。

由于始终在第一方向上打包来自信道a的数据块且始终在第二方向上打包来自信道b的数据块,因此来自信道a和信道b的数据块在经打包字中从不交错。当将来自信道a的数据块打包到字中时,不需要检查所述字是否还含有来自信道b的数据块,只要所述字中存在足够未用位以容纳所述数据块。

因此,仅需要两个不同的打包格式(例如,其中在第一方向上打包来自信道a的数据块的第一打包格式736和其中在第二方向上打包来自信道b的数据块的第二打包格式738)。另外,由于来自第一与第二信道的数据块在打包于字中时并不交错,因此当从特定信道解包数据块时,可通过在对应于所述信道的方向上读取所述字的位而读取缓冲器中的每个字直到到达垃圾位或来自另一信道的数据块的位为止。

图8b说明根据一些实施例的可用于将数据块打包到ddr缓冲器且从ddr缓冲器解包数据块的栅极配置。由于仅使用两个格式而不是四个,因此打包和解包数据块所需的mux的数目和复杂度极大地降低。举例来说,可使用单个2选1mux,而不是需要4选1mux(或三个2选1mux)以用于将数据块从信道打包到ddr。举例来说,在所说明的实施例中,打包待打包到ddr中的第n个位(ddr[n])涉及在来自信道a的位与来自信道b的位(a[n_1]与b[n_1])之间选择。类似地,当将数据解包到信道a和b时,可基于所使用的打包格式而针对每个信道进行两个不同的可能选择(例如,信道a的第n个位(a[n])可选自ddr[n_a1]和ddr[n_a2],各自对应于不同打包格式)。

图9a说明根据一些实施例的用于将信道数据打包到ddr缓冲器的过程的流程图。在框902处,从第一信道和第二信道接收数据块。在一些实施例中,第一与第二信道可对应于视频数据的不同操纵。举例来说,第一信道可对应于去交错器,而第二信道可对应于比例缩小/放大器。

在框904处,可确定是仅打包来自第一信道的数据块、仅打包来自第二信道的数据块还是打包来自两个信道的数据块。举例来说,在一些实施例中,可绕过去交错器和/或比例缩小/放大器,从而导致不需要缓冲来自去交错器和/或比例缩小/放大器的数据。在一些实施例中,数据块将打包到的缓冲器可与ddr或其它类型的存储器相关联。缓冲器可经配置以存储多个字,其中每个字包括在字的第一侧处的第一位与字的第二侧处的最后一位之间延伸的一系列位。

如果确定打包来自第一信道的数据块(框906),那么在框908处,在从字的第一侧朝向字的第二侧的第一方向上打包来自第一信道的数据块。如果确定打包来自第二信道的数据块(框910),那么在框912处,在从字的第二侧朝向字的第一侧的第二方向上打包来自第二信道的数据块。

因而,将在相反方向上打包来自第一与第二数据信道的数据块。缓冲器中的每个字在经打包时可含有所述字的第一侧上来自第一信道的一或多个数据块和所述字的第二侧上来自第二信道的一或多个数据块,第一信道的数据块与第二信道的数据块之间具有零或多个未用的数据位。为了解包数据块,可从所述字的第一侧读取来自第一信道的数据块,而从所述字的第二侧读取来自第二信道的数据块。

在一些实施例中,以交替或交错模式打包来自第一与第二信道的数据块。图9b说明根据一些实施例的用于打包数据块的方法的流程图。在框920处,从信道(例如,第一信道)接收待打包的数据块。

在框922处,进行关于缓冲器中的当前字中是否仍存在足够空间以存储数据块的确定。如果是,那么在框924处,将数据块打包到所述字中。在一些实施例中,可将数据块打包在所述字内自由空间的与所述信道相关联的一侧上。举例来说,如果数据块来自第一信道,那么可将所述数据块朝向所述字的第一侧打包。另一方面,如果数据块来自第二信道,那么可将所述数据块朝向所述字的第二侧打包。

另一方面,如果当前字并不具有足够空间以存储数据块,那么在框930处,选择缓冲器中的下一字。可接着在框924处将数据块打包到下一字中。

在框926处,确定是否存在待打包的额外数据块。如果是,那么在框928处,切换信道(例如,从第一信道切换到第二信道或反之亦然)使得来自另一信道的数据块接下来将经打包,且所述过程可返回到框920。

与虚拟信道的信道平衡

在一些实施例中,如果第一与第二信道的块大小之间存在较大差异,那么打包来自所述信道的数据块可为低效的且在每个字中产生大量未用位或垃圾位。

另外,在一些实施例中,可使用多于两个信道。在一些实施例中,如果存在含有待打包到ddr缓冲器的数据块的多于两个信道,那么所述信道可与多个打包器相关联。举例来说,可使用多个打包器,其中每个打包器将来自信道的两个数据块打包到待存储于缓冲器中的字中。

另外,在具有多于两个信道的一些实施例中,如果一信道的块大小比另一信道的块大小大得多,那么可进行阻断。当通过dma路径从ddr解包数据时,来自具有较大块大小的信道的数据可极快速地出现且阻断来自具有较小块大小的信道的数据。因此,能够使不同信道的块大小同步以便减少阻断常常为有益的。

举例来说,在特定实施例中,第一打包器可用于打包来自第一信道和第二信道(例如,信道a和信道b)的数据块,而第二打包器可打包来自第三信道(例如,信道c)的数据块。信道a和b可具有每一块8位的块大小,而信道c可具有每一块2位的块大小。由于当使用32位的字长填充字时仅将所述字从打包器输出到ddr,因此来自信道a和b的数据可各自在4个块之后输出,来自信道c的数据仅可在16个块之后输出。因而,对于信道c数据的每个字,ddr将含有信道a和b数据的四个字。举例来说,ddr可存储四个字的信道a和b数据,接着是一字的信道c数据。当从ddr读回数据时,可读取第一个字以获得信道a和b数据。然而,由于在信道c数据的所述字之前存在额外的三个字的信道a和b数据,因此无法读取信道c的数据且被阻断直到读取信道c数据之前的信道a和b数据块为止。

在一些实施例中,第一信道的块大小与第二信道的块大小之间的较大差异(也可被称作第一与第二信道“不平衡”)可导致缓冲器的每个字中的大量未用位。举例来说,图10a说明根据一些实施例打包来自第一和第二信道的数据块,其中第一与第二信道不平衡。在所说明的实施例中,信道a具有12位的块大小,而信道b具有9位的块大小。在一些实施例中,当打包来自信道a和b的数据块时,可首先从缓冲器中一字的第一端(例如,右侧)打包来自信道a的块1002。接着,从所述字的第二端(例如,左侧)打包来自信道b的块1004。打包器可接着试图将来自信道a的另一块打包到所述字中,但将由于所述字中不足的剩余空间(11位)而不能够容纳所述块(12位)。替代地,打包器将所述块打包到1008处ddr中的下一字中。因此,ddr中的每个字将具有11位的未用垃圾位1006。

另一方面,如果第一与第二信道的块大小在大小上接近(也可被称作“平衡”),那么可极大地减小垃圾位的量。举例来说,图10b说明根据一些实施例打包来自第一与第二信道的数据块,其中第一与第二信道平衡。在所说明的实施例中,信道a具有11位的块大小,而信道b具有10位的块大小。在此配置中,打包器能够在所述字用完用于打包额外数据块的空间之前打包来自信道a的第一数据块1110、来自信道b的第一数据块1112和来自信道a的第二数据块1114。所述打包随后可将来自信道b的第二数据块1116打包在后一字中,接着是来自信道a的第三数据块、来自信道b的第三数据块,以此类推。因而,ddr的每两个字的未用垃圾位的数目仅为1位,相较于图10a中所说明的实施例的22位。因而,如果信道平衡,那么来自所述信道的数据块可在需要较少字的情况下更高效地打包在ddr缓冲器中。

在从多于两个信道接收数据块的实施例中也可能需要平衡信道。如果特定信道相较于另一信道具有明显更多的位,那么可进行阻断。举例来说,当通过dma路径从ddr解包数据时,来自具有较大块大小的信道的数据可阻断来自具有较小块大小的信道的数据。在一些实施例中,此可被称为信道“非同步”。举例来说,图11a说明根据一些实施例的非同步打包布置。如图11a中所说明,ddr可包括用于打包来自第一信道和第二信道(分别具有11位和10位的数据块大小)的数据块的第一缓冲器1102和用于打包来自第三信道和第四声道(分别具有6位和4位的数据块大小)的数据块的第二缓冲器1104。在一些实施例中,即使每个特定缓冲器中的两个信道彼此平衡(例如,第一信道与第二信道平衡,第三信道与第四信道平衡),当数据经解包时,来自第一与第二信道(其块大小比第三和第四信道大得多)的数据也可能过于快速地进入且阻断来自第三和第四信道的数据。

图11b说明根据一些实施例的同步打包布置。如图式中所说明,所有四个信道平衡(具有8位、8位、8位和7位的相应数据块大小)。因此,由于所有四个信道在大小上平衡,因此可极大地减少阻断的发生。

在一些实施例中,为了平衡所接收到的信道(在下文中也被称作物理信道)的数据块大小,将所接收到的信道映射到具有平衡数据块大小的虚拟信道。接着使用一或多个打包器将虚拟信道打包到ddr缓冲器中。在一些实施例中,一或多个打包器可以是lclcp,其中每个lclcp将来自两个虚拟信道的数据块打包到ddr缓冲器的字中。为了检索经打包数据,虚拟信道的数据块可经解包且映射回到物理信道。

举例来说,图12a说明根据一些实施例如何可平衡物理信道且将其映射到虚拟信道。多个物理信道1202可由信道平衡器1204接收。信道平衡器1204将物理信道1202的数据块映射到多个虚拟信道1206。在一些实施例中,信道平衡器1204如何映射物理信道1202可基于物理信道1202的数目和块大小以及数据待打包到三缓冲器的字长。

接着通过多个打包器1208将虚拟信道1206打包到字中,接着将所述字存储于ddr缓冲器中。在一些实施例中,虚拟信道1206的数目经配置成二的倍数,使得将两个虚拟信道分配到所述多个打包器1208中的每个打包器。在一些实施例中,打包器1208为lclcp,其中每个打包器打包来自两个信道的数据块,所述信道是从字的相对侧分配到所述打包器。

图13说明根据一些实施例的用于使用平衡信道打包和检索信道数据的过程的流程图。在框1302处,从两个或多于两个物理信道接收数据,包括多个数据块。在一些实施例中,物理信道可对应于可使用所保存的邻域数据执行的一个更加不同的过程(例如,去交错器、比例缩小/放大器等等)。

在框1304处,将从物理信道接收到的数据块映射到两个或多于两个虚拟信道。在一些实施例中,物理信道可经映射使得虚拟信道的块大小彼此平衡(例如,使用信道平衡器,如图12a中所说明)。在一些实施例中,所使用的虚拟信道的数目和虚拟信道的块大小可基于物理信道的数目和块大小以及ddr缓冲器的字长。下文更详细地描述确定使用了多少虚拟信道和虚拟信道的块大小的实例。

在框1306处,将来自虚拟信道的数据块打包到至少一个缓冲器中。在一些实施例中,每个缓冲器经配置以存储多个字,每个字包括在所述字的第一侧与所述字的第二侧之间延伸的一系列位。在一些实施例中,将虚拟信道分配到一或多个打包器。举例来说,打包器可包括一或多个lclcp,其中每个lclcp经配置以将两个虚拟信道打包到ddr缓冲器的字中。举例来说,lclcp可从ddr缓冲器的所述字的相对侧打包来自两个虚拟信道的数据块。

在框1308处,接收对与两个或多于两个物理信道相关联的数据的请求。作为响应,在框1310处,对应于虚拟信道的数据块经解包。在一些实施例中,可使用一或多个lclcp来解包数据块,每个lclcp解包来自与打包到同一字的数据块相关联的两个虚拟信道的数据块。

在框1312处,将虚拟信道数据块映射回到物理信道。在框1314处,可检索与物理信道相关联的请求数据。

图14说明根据一些实施例的用于在平衡信道时计算虚拟信道的数目和块大小的过程的流程图。在一些实施例中,来自n个物理信道的数据块待打包,所述信道具有b_1、b_2、……、b_n的块大小。另外,ddr缓冲器经配置以存储字长为w的字。

在框1402处,计算出平衡的所有物理信道的总的位计数。在一些实施例中,通过确定所接收到的所有物理信道的块大小(b_1、b_2、……、b_n)的总和而计算总的位计数b。

在框1404处,确定总体打包器计数。在一些实施例中,总体打包器计数对应于将用于打包来自虚拟信道的数据块的打包器(例如,lclcp)的数目,且可通过将总的位计数b除以字长w而计算,进位舍入。在一些实施例中,每个打包器均与两个虚拟信道相关联。

对于一或多个打包器中的第一打包器,在框1406处计算总的信道位计数c,对应于与所述打包器相关联的两个虚拟信道的经组合块大小。在一些实施例中,可通过将总的位计数b除以总体打包器计数p而计算总的信道位计数,进位舍入。

在框1408处,计算与打包器相关联的每个信道的块大小(也被称作信道位计数)。在一些实施例中,两个信道(c_a和c_b,对应于信道a和信道b)的块大小可分别经计算为经进位舍入的总的信道位计数的一半和经向下舍入的总的信道位计数的一半。因而,在一些实施例中,信道a和信道b的位计数将相同(如果总的信道位计数c为偶数)或相差一个位(如果总的信道位计数c为奇数)。

在框1410处,确定是否存在待处理的额外打包器。如果是,那么过程前进到框1412,其中将总的位计数b减去总的信道位计数c,且将总体打包器计数p减去一。所述过程可接着返回到框1406,其中针对一或多个打包器中的下一打包器计算新的总的信道位计数c。

因此,来自n个所接收物理信道的数据将映射到与p个不同的打包器相关联的2*p个虚拟信道。每个打包器均与两个信道相关联,所述两个信道将彼此平衡使得其具有相同或相差一个位的块大小。

信道平衡实例

图15说明用于在平衡信道时计算虚拟信道块大小的特定实例的流程图。图12b说明根据所述实例的映射到平衡虚拟信道的物理信道。在此实例中,如所示在框1502处,从7个物理信道接收数据,所述信道具有3、4、5、6、7、8和9位的位计数。另外,ddr缓冲器经配置以存储字长为16位的字。

在框1504处,通过采用所接收到的物理信道的位计数的总和来计算总的位计数b。在所述实例中,b经计算具有44(3+4+5+6+7+8+9)的值。

在框1506处,计算总体打包器计数。举例来说,总体打包器计数p经计算为ceiling(44/16)=3。此指示三个打包器将用于打包数据块。

在框1508处,针对第一打包器计算总的信道位计数c_1。由于总的位计数b为44,且总体打包器计数p为3,因此c_1经计算为ceiling(44/3)=15。随后,信道位计数c_a_1和c_b_1可分别经计算为8位和7位。

在针对第一打包器计算信道位计数之后,将总的位计数b减去总的信道位计数c_1,且将总体打包器计数p减去1。因而,b和p的新值分别为29和2。

在框1510处,针对第一打包器计算总的信道位计数c_2。由于总的位计数b为29,且总体打包器计数p为2,因此c_2经计算为ceiling(29/2)=15。随后,信道位计数c_a_2和c_b_2可分别经计算为8位和7位。

在针对所述打包器计算信道位计数之后,将总的位计数b减去总的信道位计数c_2,且将总体打包器计数p减去1。因而,b和p的新值分别为14和1。

在框1512处,针对第一打包器计算总的信道位计数c_3。由于总的位计数b为14,且总体打包器计数p为1,因此c_3经计算为ceiling(14/1)=14。随后,信道位计数c_a_3和c_b_3可分别经计算为7位和7位。

因此,如图12b中所说明,七个物理信道已经映射到与三个打包器相关联的六个虚拟信道。六个虚拟信道具有8位、7位、8位、7位、7位和7位的位计数值。

通过将物理信道映射到平衡虚拟信道中,可以更高效地打包ddr缓冲器中的字,从而减少ddr中所需的存储空间。另外,虚拟信道将经平衡使得在从ddr缓冲器解包数据时发生阻断。

其它考量

可使用多种不同技艺和技术中的任一者来表示本文中所公开的信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。

结合本文中所公开的实施例所描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件,或两者的组合。为了清晰地说明硬件与软件的这种可互换性,上文已大体就其功能性来描述了各种说明性组件、块、模块、电路和步骤。此类功能性是实施为硬件还是软件取决于特定应用和施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本发明的范围。

本文中所描述的技术可在硬件、软件、固件或其任何组合中实施。此类技术可实施于多种装置中的任一者中,例如通用计算机、无线通信装置手持机或集成电路装置,其具有包含在无线通信装置手持机和其它装置中的应用的多种用途。被描述为模块或组件的任何特征可一起实施于集成逻辑装置中或分开来实施为离散但可互操作的逻辑装置。如果以软件实施,那么所述技术可至少部分地由包括程序代码的计算机可读数据存储媒体来实现,所述程序代码包含在执行时执行上文所描述的方法中的一或多个的指令。计算机可读数据存储媒体可形成计算机程序产品的一部分,所述计算机程序产品可包含打包材料。计算机可读媒体可包括存储器或数据存储媒体,例如随机存取存储器(ram)(例如,同步动态随机存取存储器(sdram))、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存器、磁性或光学数据存储媒体等等。另外或替代地,所述技术可至少部分地由计算机可读通信媒体来实现,所述计算机可读通信媒体携载或传达呈指令或数据结构的形式的程序代码且可由计算机存取、读取和/或执行(例如,传播的信号或波)。

程序代码可由处理器执行,所述处理器可包含一或多个处理器,例如一或多个dsp、通用微处理器、asic、fpga或其它等效集成或离散逻辑电路。此处理器可经配置以执行本公开中所描述的技术中的任一者。通用处理器可以是微处理器;但在替代方案中,处理器可以是任何的常规处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如dsp和微处理器的组合、多个微处理器、与dsp核心结合的一或多个微处理器,或任何其它此类配置。因此,如本文中所使用的术语“处理器”可指前述结构中的任一者、上述结构的任何组合,或适合于实施本文中所描述的技术的任何其它结构或设备。另外,在一些方面中,可将本文中所描述的功能性提供于经配置以用于编码和解码的专用软件模块或硬件模块内或并入组合式视频编码器-解码器(codec)中。并且,所述技术可完全实施于一或多个电路或逻辑元件中。

本公开的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。本公开中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述,各种单元可以配合合适的软件和/或固件组合在编解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一多个处理器。

已描述本发明的各种实施例。这些和其它实施例在所附权利要求书的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1