用于解码可分级视频译码的系统和方法
【专利摘要】本文揭示了一种用于解码使用可分级视频译码进行编码的视频的系统和方法。在一个实施例中,用于可分级视频译码(SVC)的解码器(102)包含SVC存取单元分析器(202)和解码逻辑(204)。所述SVC存取单元分析器(202)经配置以在SVC存取单元的分层解码之前检查所述存取单元;基于所述检查确定所述存取单元为所述解码中的每一层指定了哪些操作;以及基于所述解码中的每一层将要执行的所述确定的操作确定要存储哪些数据以供所述解码中的后一层使用。所述解码逻辑(204)经配置以经由多个解码层对所述存取单元进行解码;以及在每一解码层处存储由所述SVC存取单元分析器确定为后一解码层将会用到的数据,以供所述后一解码层使用。
【专利说明】用于解码可分级视频译码的系统和方法
【技术领域】【背景技术】
[0001 ] 可分级视频译码(SVC)是被界定为由国际标准化组织(“ ISO”)和国际电信联盟(“ITU”)联合颁布的H.264视频译码标准的子标准的视频译码标准。使用SVC,可在多个层中对视频流进行译码,其中每一层以给定的空间分辨率、时间分辨率和/或质量等级提供视频的表示。SVC视频流包含基本层和一个或一个以上增强层。可仅使用基本层产生可能相对较低质量的基础图像来由视频流重新建构视频图像。可一起使用基本层和增强层来产生较高质量的视频图像。因此,在层中解码使用SVC进行编码的视频数据。
【发明内容】
[0002]本文揭示了一种用于解码使用可分级视频译码进行编码的视频的系统和方法。在一个实施例中,一种用于可分级视频译码(SVC)的解码器包含SVC存取单元分析器和解码逻辑。所述SVC存取单元分析器经配置以在SVC存取单元的分层解码之前检查所述存取单元;基于所述检查确定所述存取单元为所述解码中的每一层指定了哪些操作;以及基于所述解码中的每一层将要执行的所述确定的操作确定要存储哪些数据以供所述解码中的后一层使用。所述解码逻辑经配置以经由多个解码层对所述存取单元进行解码;以及在每一解码层处存储由所述SVC存取单元分析器确定为后一解码层将会用到的数据,以供所述后一解码层使用。
[0003]在另一实施例中,一种用于解码SVC的方法包含在SVC存取单元的分层解码之前分析所述存取单元。所述分析包含对于由所述存取单元指定的所述解码中的每一层确定所述层将要执行哪些解码操作,以及所述层将要存储哪些数据以供下一层使用。经由多个解码层对所述存取单元进行解码。所述方法进一步包含在每一解码层处存储由所述分析确定为要被存储以便后一层使用的数据以供后一层使用。
[0004]在另一实施例中,一种用于解码SVC的系统包含SVC存取单兀分析器。所述SVC存取单元分析器经配置以在经由多个解码层对SVC存取单元进行分层解码之前分析所述存取单元;基于所述分析对于由所述存取单元指定的每一解码层确定所述解码层需要来自前一解码层的哪些层间数据;以及基于指定后一解码层的操作的存取单元信息来指示给定解码层仅存储非量化变换系数值和量化变换系数等级值中的一者以供后一解码层使用。
【专利附图】
【附图说明】
[0005]为了详细地描述本发明的示范性实施例,现在将参考附图,其中:
[0006]图1展示了根据各种实施例的用于提供视频的系统的框图;
[0007]图2展示了根据各种实施例的用于可分级视频译码(SVC)解码器的框图;
[0008]图3展示了根据各种实施例的与SVC解码器一起使用的存取单元分析器的框图;
[0009]图4展示了根据各种实施例的用于解码SVC的方法的流程图;[0010]图5展示了根据各种实施例的用于在SVC解码器中存储层间数据的方法的流程图;以及
[0011]图6展示了根据各种实施例的用于在SVC解码器中检索层间数据的方法的流程图。
[0012]符号和术语
[0013]某些术语在以下描述和权利要求书中都用以指代特定的系统组件。如所属领域的技术人员将了解,各家公司可用不同的名称来指代一组件。本文档不希望区分名称不同但功能相同的组件。在以下论述以及在权利要求书中,术语“包含”和“包括”以开放性方式使用,因此将被解释为表示“包含,但不限于……”。并且,术语“耦合”希望表示间接或直接电连接。因此,如果第一装置耦合到第二装置,那么所述连接可以是通过直接电连接实现,或者是通过经由其它装置和连接的间接电连接实现。另外,术语“软件”包含能够在处理器上运行的任何可执行代码,与用以存储所述软件的媒体无关。因此,存储在存储器(例如,非易失性存储器)中且有时被称作“嵌入式固件”的代码包含在软件的定义中。叙述“基于”希望表示“至少部分基于”。因此,如果X基于Y,那么X可基于Y以及任何数目的其它因素。
【具体实施方式】
[0014]以下论述是针对本发明的各种实施例。尽管这些实施例中的一者或一者以上可能是优选的,但是所揭示的实施例不应被解释为或者用于限制本发明(包含权利要求书在内)的范围。另外,所属领域的技术人员将理解,以下描述具有广泛的应用,且任何实施例的论述只是意欲作为所述 实施例的示范,而不希望表示本发明(包含权利要求书在内)的范围限于所述实施例。
[0015]用于根据可分级视频译码(SVC)标准编码的视频数据的解码的每一层类似于
H.264解码器。然而,SVC解码层包含除H.264所提供的那些功能性之外的额外功能性。一个此类额外功能性是层间预测,所述层间预测应用由前一层(被称作“参考层”)产生的中间数据来执行解码。若干不同类型的中间数据可以在SVC解码器的各层之间交换。中间数据的类型包含残余样本(rS)、经建构样本(CS)、非量化变换系数(sTCoeff)、量化变换系数等级(tCoeffLevel)以及各种其它宏块标头信息(例如,宏块和子宏块类型、运动向量等)。解码器层之间共享的中间数据可被称作层间数据。
[0016]经SVC编码的视频流(B卩,经SVC编码的视频数据的位流)没有包含提供关于整个视频流的信息的标头。而是,每一层包含序列/图片参数(SPS / PPS)以及片段标头,其提供关于所述层所请求的层间数据的信息。因此,常规SVC解码器在每一层处存储后一层可能需要的所有可能层间数据。层间数据的大小取决于正被解码的层的大小。为了解码高精度视频分辨率,层间数据可能较大,因此需要大量的存储装置来容纳所述数据。举例来说,与H.264解码相比,SVC解码可能需要每层200%的存储器,且需要3到4倍的存储器带宽来传送较大量的数据。存储装置和带宽的此类增加可能导致在与H.264解码器相比时解码器硬件成本以及功率消耗的非所希望的增加。
[0017]本文所揭示的SVC解码器的实施例预剖析将要解码的视频流,且从所述预剖析中确定需要解码哪些层,以及每一层需要哪些层间数据。基于所述预剖析的结果,本发明的实施例在每一解码层处仅存储后一解码层所需的层间数据,由此减少每层的存储装置以及带宽要求,这又降低了 SVC解码器成本以及功率消耗。
[0018]图1展示了根据各种实施例的用于提供视频的系统100的框图。系统100包含视频源104、视频解码器102以及视频显示装置106。视频源104可为适合于存储视频的存储装置,例如磁盘或光盘、半导体存储器等。或者,视频源104可为检测经由媒体(例如,有线或无线媒体)传输的视频且从中提取所传输的视频流的接收装置。由视频源提供的视频流108为使用可分级视频译码(SVC)进行编码的位流,因此,可能需要多个解码层来产生适合于在视频显示装置106上显示的视频图像。
[0019]SVC解码器102经配置以为使用可分级视频译码进行编码的视频流108提供分层解码。SVC解码器102可经进一步配置以根据视频呈现装置106的显示能力对视频流108进行解码。视频显示装置106可为能够显示视频的任何装置或技术(例如,液晶、等离子、有机发光二极管、阴极射线管,或其它类型的显示器)。
[0020]SVC解码器102的实施例可经配置以通过减少存储所需的存储器、以及传送所需的带宽、解码层之间的层间数据,来提供与常规SVC解码器相比经改进的效率(例如,较长的电池寿命)以及较低的成本。SVC解码器102的解码层通过存取单元分析器管理,所述存取单元分析器预先剖析视频流108以便确定在解码层中将要执行哪些操作以对视频流108进行解码。基于所确定的操作,存取单元分析器指示每一解码层存储层间数据,所述层间数据仅包含后一解码层的操作将要使用的层间数据。
[0021]图2展示了根据各种实施例的SVC解码器102的框图。SVC解码器102包含存取单元分析器202和多层解码逻辑204。解码逻辑204包含多个处理层,所述处理层应用于输入视频流108以对图像进行解码。在图2的实施例中,SVC解码器102被说明为具有三个层206、208、210,其中层206提供基本层解码,层208提供信噪比增强(质量改进),且层210提供空间增强(图片大小的改变)。SVC解码器102的其它实施例可根据需要包含更多或更少的层、不同的层顺序、和/或不同的解码功能性,以对给定视频流进行解码。
[0022]每一解码层206到210包含提供解码功能性的各种处理模块。举例来说,解码层206到210中的每一者包含熵解码模块218、反量化模块220、反变换模块222,以及提供解码功能性的各种其它模块。解码层(例如,层206、208)还包含用于存储层间数据的存储装置212。存储装置212可为易失性随机存取存储器。在一些实施例中,因为层间数据较大,因此存储装置212处在提供解码层206到210的处理模块和解码功能性的装置外部。
[0023]如上所述,给定的层所需的层间信息可能不为较低层所知,因为所需的层间数据取决于给定层的SPS和片段标头中提供的参数。SVC视频流108被布置在存取单元中,其中存取单元包含需要用来解码视频的一个完整图片的片段和层。存取单元分析器202检查视频流108的存取单元,且基于存取单元的内容来管理解码逻辑204的操作。
[0024]图3展示了根据各种实施例的存取单元分析器202的框图。存取单元分析器202包含预剖析逻辑302。预剖析逻辑302在解码逻辑204处理存取单元之前分析视频流108的每一存取单元。举例来说,预剖析逻辑302检查存取单元的每一层的SPS和片段标头,且识别出将要对存取单元应用哪些解码层(哪些解码操作)。基于所识别出的解码层/操作,预剖析逻辑302确定每一解码层将要使用哪些层间数据。识别所应用的解码层和层间数据的信息被分别称作解码层信息304和层间数据信息306。存取单元分析器202使用解码层信息304和层间数据信息306来管理解码逻辑204,使得所用解码层的数目以及所存储和传送的层间数据量得以减少。
[0025]预剖析逻辑302经配置以确定存取单元中指定的解码层是否需要用于产生供显示在视频显示装置106上的经解码视频。举例来说,如果存取单元指定三个解码层O到2,其中层I和2两者使用层O作为参考(即,层I和2应用来自层O而不是来自彼此的数据进行解码),那么预剖析逻辑302可选择层I和2中的一者用于实施,且指定另一层不被实施。因此,如果视频显示装置106的参数(例如,显示器分辨率)指示层2的输出应被提供用于显示,那么预剖析逻辑302可选择层O和2用于实施,且不实施层I。
[0026]现在参考图2和3,预剖析逻辑302还经配置以识别允许减少所存储层间数据的量的各种解码层操作布置。如果预剖析逻辑302基于对存取单元的检查确定给定的解码层(例如,层208)是SNR增强层,那么所述给定解码层的前一层将要存储的层间数据不需要包含tCoeffLevel和rS值,因为SNR增强层不使用tCoeffLevel和rS值。类似地,如果预剖析逻辑302基于对存取单元的检查确定给定的解码层(例如,层210)是空间增强层,那么所述给定解码层的前一层将要存储的层间数据不需要包含tCoeffLevel和sTCoeff值,因为空间增强层不使用tCoeffLevel和sTCoeff值。
[0027]在一些实施例中,预剖析逻辑302通过检查从存取单元的在解码逻辑204的相关层之后的解码层的子集序列参数集(SSPS)和片段标头得到的旗标值(tCOefT_等级_预测_旗标),来确定所述相关层是否需要存储tCoeffLevel以供后一层使用。用于得出tcoeff_等级_预测_旗标的方法在H.264 / SVC规范中详细说明。如果tcoeff_等级_预测_旗标被设为真,那么预剖析逻辑302指明tCoeffLevel要被相关层存储以供后一解码层使用。另一方面,后一解码层不需要tCoeffLevel,且tCoeffLevel无需在解码存取单元时被相关层存储。
[0028]预剖析逻辑302还可确定sTCoeff是否被给定层使用,且因此确定前一解码层是否应存储sTCoeff。如果给定层是SNR增强层且如果tcoefT_等级_预测_旗标未设为真,那么sTCoeff被给定层使用。存在两种类型的SNR增强层:中粒度可分级(MGS)和粗粒度可分级(CGS)。为了确定层是否为SNR增强层,预剖析逻辑302要确定所述层是MGS或CGS层。预剖析逻辑302使用网络抽象层(NAL)单元标头中的质量_id语法元素来识别MGS层。因为没有特定的语法元素识别CGS增强层,因此预剖析逻辑302检查空间分辨率改变旗标,所述旗标如H.264 / SVC规范中所说明是得出的旗标。因此,如果预剖析逻辑302确定给定层不是SNR层或者给定层的tc0efT_等级_预测_旗标被设为真,那么给定层的前一解码层无需存储sTCoeff。
[0029]解码逻辑204的实施例通过采用统一 /共享缓冲器来存储互补类型的层间数据而进一步减少所实施的层间存储装置的量。tCoeffLevel与sTCoeff是互补的,因为后一解码层需要tCoeffLevel时,所述后一解码层并不需要sTCoeff,且反之亦然。因此,解码层206、208(以及各种其它解码层)的实施例包含统一的sTCoeff / tCoeffLevel缓冲器224。统一的sTCoeff / tCoeffLevel缓冲器224用以基于解码层接收来自缓冲器224的输入的操作(如由预剖析逻辑302确定且指定)来存储sTCoeff和tCoeffLevel中的一者。
[0030]解码层206、208(以及各种其它解码层)的实施例还可包含统一的cS / rS缓冲器226。rS值是残余样本,且在SVC中仅对于层间样本为非零的。cS值是参考层的经建构样本,且在SVC中仅对于层内样本为非零的。因此,rS和CS为互补的且组合在单个统一 /共享cS / rS缓冲器226中。另外,通过将cS和rS存储装置组合在单个统一的cS / rS缓冲器226中,解码层206、208可包含单个缓冲器控制器(例如,用于层206到208中的模块到模块通信的tCoeffLevel / sTCoeff缓冲器控制器(未图示)),由此减少模块间的通信所需的内部带宽。
[0031]在SVC解码过程中,可能需要rS和cS用于解码空间增强层,但对于给定的宏块和给定的像素,仅需要CS样本和rS样本中的一者。解码逻辑204的空间增强层210包含重取样模块228。如果参考层宏块类型为层内,那么重取样模块228使用来自cS / rS缓冲器226的CS样本且否则使用零值样本。类似地,如果参考层宏块类型为层间,那么重取样模块228使用来自cS / rS缓冲器226的rS样本且否则使用零值样本。因此,重取样模块228从组合式cS / rS缓冲器建构将用在空间增强层210中的cS和rS。
[0032]在空间增强层210中,给定像素位置是需要CS值还是rS值取决于宏块标头中的基本_模式_旗标以及取决于由分级的空间增强层宏块覆盖的宏块的参考层宏块模式(可存在若干此类模式)。重取样模块228基于当前宏块标头的基本_模式_旗标的值来确定给定像素位置需要CS还是rS。熵解码模块218将当前宏块标头的基本_模式_旗标的值提供给组合式cS / rS重取样模块228。因此,cS / rS重取样模块228可输出用于空间增强层210中的模块到模块通信的cS / rS值的组合集。与CS和rS值相结合,cS / rS重取样模块228还可输出指示哪些像素是CS且哪些像素是rS的信息。
[0033]基于宏块的有条件提取(如关于由重取样模块228提取CS和rS所描述)还可应用于从统一的sTCoeff / tCoeffLevel缓冲器224中sTCoeff和tCoeffLevel值的有条件提取。分析表明,典型SVC视频流108中的大约50%的宏块可得益于基于宏块的有条件提取,由此进一步减少提取层内数据所需的存储器带宽。
[0034]SVC解码器102可实施为作为单独视频解码器操作的、实施于视频处理器中和/或作为视频解码器外围设备耦合到处理器的专用硬件解码装置。在一些实施例中,SVC解码器102的至少一些功能性可由执行从非暂时性计算机可读存储装置(例如半导体存储器)检索到的软件指令的处理器来实施。SVC视频解码器102的一些实施例包含由专用硬件和/或执行软件指令的处理器提供的存取单元分析和/或解码逻辑功能性。
[0035]图4展示了根据各种实施例的用于解码使用SVC进行编码的视频流的方法400的流程图。尽管为了方便起见顺序地进行描述,但是所示动作中的至少一些可按照不同次序执行和/或并行地执行。另外,一些实施例可仅执行所示动作中的一些。方法400的操作中的至少一些可由执行从计算机可读存储装置读取的指令的处理器执行。
[0036]在框402中,SVC解码器102接收经SVC编码的视频流108。经SVC编码的视频流108包含多个存取单元。每一存取单元指定用于所述视频的图片的分层解码。SVC解码器102的存取单元分析器202在解码逻辑204解码存取单元之前检查每一存取单元。存取单元分析器202可检查每一层的SPS和片段标头。
[0037]在框404中,存取单元分析器202识别在所检查的存取单元中指定的每一解码层中将要执行的解码操作。
[0038]在框406中,存取单元分析器202识别解码逻辑204的层206到208将要存储的层间数据。特定层间数据基于后一层使用所述层间数据执行解码来被识别为需要被存储。存取单元分析器202可(例如)基于给定解码层的系数等级预测旗标为真来确定给定解码层是否使用tCoeffLevel。存取单元分析器202可(例如)基于给定层为SNR增强层且给定解码层的系数等级预测旗标为假来确定给定解码层是否使用sTCoeff。
[0039]在框408中,存取单元分析器202确定要实施存取单元所指定的哪些解码层以便对存取单元进行解码以供显示在视频显示装置106上。存取单元分析器202可指定少于所有的由存取单元指定的解码层基于显示装置106的参数来实施且所述解码层需要用以产生对应于那些参数的图像(即,适合于显示在显示装置106上的图像)。
[0040]在框410中,存取单元分析器202配置解码逻辑204以使用所确定的解码层对存取单元进行解码,且配置解码层以仅存储所实施的后一解码层对存取单元进行解码所需的层间数据。
[0041]在框412中,使用由存取单元分析器202选择的解码层来对存取单元进行解码。每一解码层仅存储后一解码层所需的层间数据,如由存取单元分析器202所识别。每一解码层从层间数据缓冲器检索执行解码所需的层间数据。
[0042]图5展示了根据各种实施例的用于在SVC解码器102中存储层间数据的方法500的流程图。尽管为了方便起见顺序地进行描述,但是所示动作中的至少一些可按照不同次序执行和/或并行地执行。另外,一些实施例可仅执行所示动作中的一些。方法500的操作中的至少一些可由执行从计算机可读存储媒体读取的指令的处理器执行。在方法500中,SVC解码器102执行存取单元的分层解码。方法500的操作可作为图4的框412的部分来执行。
[0043]在框502中,每一解码层(例如,层206、208)存储由存取单元分析器202指定的将由后一解码层执行的解码操作中需要用到的层间数据。解码层206、208可将sTCoeff值和tCoeffLevel值中的一者(如由存取单元分析器202所指定)存储在共享sTCoeff /tCoeffLevel 缓冲器 224 中。
[0044]在框504中,每一解码层206、208可将像素的cS值和rS值中的一者存储于共享cS / rS缓冲器226中。每一解码层206、208可仅存储非零cS值和rS值。
[0045]图6展示了根据各种实施例的用于在SVC解码器102中检索层间数据的方法600的流程图。尽管为了方便起见顺序地进行描述,但是所示动作中的至少一些可按照不同次序执行和/或并行地执行。另外,一些实施例可仅执行所示动作中的一些。方法600的操作中的至少一些可由执行从计算机可读存储媒体读取的指令的处理器执行。在方法600中,SVC解码器102执行存取单元的分层解码。方法600的操作可作为图4的框412的部分来执行。
[0046]在框602中,每一解码层208、210确定在所述层中执行解码需要哪些层间数据。所需的层间数据是从前一解码层所加载的层间数据缓冲器224、226中提取。如果解码层是空间增强层(例如,层210),那么所述层确定是需要rS值还是CS值用于处理像素。所述确定可基于正处理层间宏块还是层内宏块。在空间增强层处理管线中位于重取样模块228之前的熵解码模块218可将指示宏块是层间的还是层内的宏块标头信息提供给重取样模块228,用于做出确定。
[0047]在框604中,每一解码层208、210从层间数据缓冲器224、226检索所需层间数据。如果需要CS值和rS值,那么重取样模块228从共享cS / rS缓冲器226提取cS值和rS值中的一者,并输出样本。重取样模块228可随样本输出识别符,所述识别符识别所述输出样本是cS还是rS。
[0048]上述论述意欲为本发明的原理和各种实施例的例示。所属领域的技术人员一旦充分了解了上述揭示内容便能清楚众多的变化和修改。希望所附权利要求书被解释为包含所有此类变化和修改。
【权利要求】
1.一种用于可分级视频译码(SVC)的解码器(102),其包括: SVC存取单元分析器(202),其经配置以: 在SVC存取单元的分层解码之前检查所述存取单元; 基于所述检查确定所述存取单元为所述解码中的每一层指定了哪些操作; 基于针对所述解码中的每一层将要执行的所述确定的操作,确定要存储哪些数据以供所述解码中的后一层使用; 解码逻辑(204),其经配置以: 经由多个解码层对所述存取单元进行解码; 在每一解码层处存储由所述SVC存取单元分析器确定为后一解码层将会使用的数据,以供所述后一解码层使用。
2.根据权利要求1所述的解码器(102),其中所述SVC存取单元分析器(202)经配置以: 确定给定解码层是否需要来自前一解码层的量化变换系数等级值以对所述存取单元进行解码;以及 基于所述确定指示所述前一解码层存储由所述前一层产生的所述量化变换系数等级值。
3.根据权利要求2所述的解码器(102),其中所述SVC存取单元分析器(202)经配置以基于系数等级预测旗标为真来确定所述给定解码层是否需要量化变换系数等级值;其中所述系数等级预测旗标是从所述给定解码层的子集序列参数集和片段标头得出。
4.根据权利要求1所述的解码器(102),其中所述SVC存取单元分析器(202)经配置以: 确定给定解码层是否需要来自前一解码层的非量化变换系数值以对所述存取单元进行解码;以及 基于所述确定指示所述前一解码层存储由所述前一层产生的所述非量化变换系数值。
5.根据权利要求4所述的解码器(102),其中所述SVC存取单元分析器(202)经配置以基于所述给定层为信噪比/质量增强层且系数等级预测旗标为假来确定所述给定解码层是否需要非量化变换系数值。
6.一种用于解码可分级视频译码(SVC)的方法,其包括: 在SVC存取单元的分层解码之前分析所述存取单元,所述分析包括确定:针对由所述存取单元指定的所述解码中的每一层所述层将要执行哪些解码操作,以及所述层将要存储哪些数据以供下一层使用;(402到406) 经由多个解码层对所述存取单元进行解码;以及(412) 在每一解码层处存储由所述分析确定为要被存储以供后一层使用的数据以供后一层使用(410) ο
7.根据权利要求12所述的方法,其进一步包括: 确定给定解码层是否需要来自前一解码层的量化变换系数等级值以对所述存取单元进行解码;以及 基于所述确定指示前一解码层存储由所述前一层产生的所述量化变换系数等级值。
8.根据权利要求7所述的方法,其中所述确定包括:从所述给定解码层的子集序列参数集和片段标头得出系数等级预测旗标;以及 基于所述旗标为真来确定所述给定解码层需要量化变换系数等级值。
9.根据权利要求6所述的方法,其进一步包括: 确定给定解码层是否需要来自前一解码层的非量化变换系数值以对所述存取单元进行解码;以及 基于所述确定指示所述前一解码层存储由所述前一层产生的所述非量化变换系数值。
10.根据权利要求6所述的方法,其进一步包括: 通过所述分析确定对所述存取单元进行解码需要所述解码中的哪些层;(408)以及仅在所述所需的解码层中处理所述存取单元;其中对所述存取单元进行解码需要少于所有在所述存取单元中指定`的所述解码层。
【文档编号】H04N19/30GK103796022SQ201310524598
【公开日】2014年5月14日 申请日期:2013年10月30日 优先权日:2012年10月30日
【发明者】马努·马修, 穆兰吉·文卡塔·拉特纳·雷迪 申请人:德州仪器公司