数据编码及译码的制作方法

文档序号:7541361阅读:323来源:国知局
数据编码及译码的制作方法
【专利摘要】数据编码设备,其中一组顺序数据系被编码,该设备包含:熵编码器,用以编码该顺序数据,其中各个数据项被分割为个别次组数据以及第一及第二编码系统所编码的个别数据,使得对于第一编码系统的一组数据项产生预定量的编码数据,对于第二编码系统的该组数据产生可变数量的零或更多数据;以及输出数据串流组合器,用来从第一及第二编码系统所编码的数据中,产生输出数据串流,该输出数据串流包含由第一编码系统所产生的连续封包的预定数量数据,在数据串流顺序中,其后被跟随相关于为第一编码系统所编码的相同数据项的为第二编码系统所产生的零或更多数据。
【专利说明】数据编码及译码
[0001]相关申请
[0002]本发明主张在分别在2011年11月15日及2011年11月7日于英国专利局所申请的GB1119687.0及GB1119180.6的早先申请日,该申请案的整个内容作为参考被并入本公开。
【技术领域】
[0003]本发明相关于数据编码及译码。
【背景技术】
[0004]此处所提供的“【背景技术】”以呈现本公开的内容为目的。现行本案发明人的工作,即在【背景技术】部分所述的范围及发明说明的特征状态可能在申请时不被视为先前技艺,因此并不表示或暗示承认为本发明的先前技艺。
[0005]作为数据编码及译码技术例,其中有几项视频数据压缩及解压缩系统,其涉及将视频数据转换为频域表示法、量化频域系数及然后应用一些形式的熵编码至被量化的系数。
[0006]在本文中,熵可以被认为是表示数据符号或系列符号的信息内容。熵编码的目的是(理想上)使用最少数量的编码数据位以无损的方式编码一系列数据符号,代表该一系列数据符号的所需者。在实际上,熵编码使用编码量化系数,使得编码数据(以位数量表示)小于原始量化系数的数据大小。更有效的熵编码处理对于相同大小的输入数据给出较小输出的数据大小。
[0007]用于熵编码视频数据的一种技术被称为所谓的CABAC(上下文自适应二进制算术编码)技术。这是更加一般化的算术编码(AC)的技术实例。在示例实施方式中,量化系数被分割成相对于系数数组的表示某些大小以及其符号的系数值的位置的数据。因此,例如,所谓“效值图(significance map) ”可以表示在一组数组系数中的位置,在该位置的系数具有非零值。其他图也可以表示该数据具有I或更大值;或者,该数据具有2或更大值。
[0008]在CABAC编码器及译码器的基本例子中,效值图被编码为CABAC数据,但部份的其他图被编码为所谓的旁路数据(被数据编码为CABAC,但具有固定的50%的概率上下文模型)。效值图以及其他图为不同个别属性或相同初始数据项的值范围的所有代表。因此,各个数据项被分成为个别次组数据及个别子组被第一 Hf^nCABAC)及第二(例如旁路)编码系统编码。
[0009]通常,旁路数据不能以原始形式被引入与CABAC编码数据的相同数据串流中,但对于任何给定输出的CABAC译码数据位,所述CABAC译码器已经从数据串流中读取了比当编码器编码特定数据位时编码器已经写入的更多的位。换句话说,从数据串流中进一步读取CABAC编码数据看来,CABAC译码器先读取,因此,其通常被认为不可能引入旁路数据进入与CABAC数据相同的连续编码数据串流。
【发明内容】

[0010]本发明提供数据编码设备,其中一组排序数据被编码,包含:
[0011]熵编码器,用以编码该排序数据,其中各个数据项被分割成为个别次组的数据以及个别次组被第一以及第二编码系统编码,使得对于有关于为第一编码系统的一群数据项所产生的预定数量的编码数据,零或更多数据的可变数量关于该数据群为该第二编码系统所产生;以及
[0012]输出数据串流组合器,用以由该第一以及第二编码系统编码的数据产生输出数据串流,该输出数据串流包含为第一编码系统产生的预定数量的数据的连续封包,其在数据串流顺序中,跟随着有关于为第一编码系统编码相同的数据项的第二编码系统产生的零或更多数据。
[0013]本发明的实施例允许(例如)旁路数据在该串流中的预定位置为可用,藉由将该CABAC数据分割成预定长度的封包以及随后跟着每一封包的旁路数据(如果存在),其对应的该系数被编码为CABAC数据。使用此技术,旁路数据可以与CABAC数据同时解码。因此,本发明的实施例提供一种分割CABAC串流的方法,使得旁路数据可以以原始形式被放置于该串流中,以形成复合CABAC/旁路数据串流以及可能可以与CABAC数据(在译码时)平行解码。
[0014]在实施例的一些系统中,所谓旁路数据被编码为CABAC串流,藉由将每一位编码为如同它为CABAC位,但具有50%的固定概率(上下文)。在编码过程中时,当前范围与该旁路位有效的乘法,并且需要迭代逻辑(或除法器)译码多位。因为译码器并没有方法知道哪些位为旁路数据以及哪些为CABAC数据,所以旁路数据不能直接引入该位串流。
[0015]然而,藉由将该旁路数据放置在该串流中为该编码器以及译码器所知的特定位置,不但可以将以原始二进制写入旁路数据,也允许多位被简单地读取,同时也允许旁路位被平行译码。这将允许旁路数据(例如符号)与CABAC数据(例如效值图)平行解码。
[0016]下述的技术可以协助藉由排列数据成为预定大小的封包而加以完成,并支持平行译码。
[0017]注意CABAC只是一个实施例,本发明可以应用至包含(但并不限于)一般算术编码技术的其他类型编码。
[0018]本发明的实施例也可以提供数据编码器,其中缓冲器,用以累积由缓存器再正规化的数据表示CABAC范围的下限,并且将所储存的数据相关成为群当所述群具有至少一个预定数据数量者时;
[0019]检测器,用以检测是否在群中之所有数据具有数据值I没有进位,如果是,则用以指定该群为第一类型的群;如果否,则该群被指定为第二类型的群;
[0020]缓冲器读取器,如果后续储存群为第二类型,用以由该缓冲器读取第一类型的群,以及将该读取群插入输出数据串流;
[0021]检测器,用以检测在该缓冲器是否出现有多于预定数量的第一类型的群,如果是,则用以终止及重新开始该数据的编码。
[0022]本发明的进一步特征及特性在随附的申请专利范围加以定义。
[0023]可以了解的是,本发明上述的一般说明及以下详细说明为例示,但并不是用以限制本发明。【专利附图】

【附图说明】
[0024]本公开的更完整的了解与其很多随附优点将藉由参考本发明实施例的以下详细说明配合附图考虑而更佳了解,其中:
[0025]图1示意性示出使用视频数据压缩及解压缩的音频/视频(A/V)数据传输及接收系统;
[0026]图2示意性示出使用视频数据解压缩的视频显示系统;
[0027]图3示意性示出使用视频数据压缩及解压缩的音频/视频储存系统;
[0028]图4示意性示出使用视频数据压缩的摄影机;
[0029]图5提供视频数据压缩及解压缩设备示意图;
[0030]图6示意性示出预估影像的产生;
[0031]图7示意性示出最大编码单元(IXU);
[0032]图8示意性示出一组四个编码单元(CU);
[0033]图9及10示意性示出图8的编码单元细分为更小编码单元;
[0034]图11示意性示出数组的预估单元(PU);
[0035]图12示意性示出数组的转换单元(TU);
[0036]图13示意性示出部份编码影像;
[0037]图14示意性示出一组可能的预估方向;
[0038]图15示意性示出一组预估模式;
[0039]图16示意性示出曲折扫描;
[0040]图17示意性示出CABAC熵编码器;
[0041]图18示意性示出CAVLC熵编码处理;
[0042]图19A至19D示意性示出CABAC编码及译码操作特征;
[0043]图20示意性示出CABAC编码器;
[0044]图21示意性示出CABAC译码器;
[0045]图22示意性示出具有分开旁路编码器的CABAC编码器;
[0046]图23示意性示出作为CABAC编码器及旁路编码器的编码器;
[0047]图24示意性示出具有分开旁路译码器的CABAC译码器;
[0048]图25示意性示出作为CABAC译码器及旁路译码器的译码器;
[0049]图26示意性示出共同缓冲器;
[0050]图27示意性示出封包化数据串流;
[0051]图28及29示意性示出数据写入指针的使用;
[0052]图30及31示意性示出数据读取指针的使用;及
[0053]图32示意性示出在CABAC及旁路解码处理操作中的阶段。
【具体实施方式】
[0054]现参考附图,图1至4被提供以给出示意性的示出利用以下所述的有关本发明的实施例的压缩及/或解压缩设备的设备或系统。
[0055]所有数据压缩及/或解压缩设备被以硬件、执行于一般目的数据处理设备,例如一般目标计算机的软件实施加以描述,其系被实施为可程序硬件,例如特定应用集成电路(ASIC)或现场可编程门阵列(FPGA)或其组合。当实施例被以软件及/或硬件实施时,将了解的是,此软件及/或硬件,及非瞬时机器可读取数据储存媒体,其中储存或提供有此等软件及/或硬件,并被认为是本发明的实施例。
[0056]图1示意性的示出使用视频数据压缩及解压缩的音频/视频数据传输及接收系统。
[0057]输入音频/视频信号10被供给视频数据压缩设备20,其压缩该视频/音频信号10的至少视频分量,用以沿着例如缆线、光纤、无线链路或类似物的传输路由30传输。压缩信号被解压缩设备40处理,以提供输出音频/视频信号50。对于返回路径,压缩设备60压缩音频/视频信号,用以沿着传输路由30传输至解压缩设备70。
[0058]压缩设备20及解压缩设备70因此可以形成传输链路的节点。解压缩设备40及解压缩设备60可以形成传输链路的另一节点。当然,例如,当传输链路为单向,则这些节点只有一个节点需要压缩设备,并且另一节点将只需要解压缩设备。
[0059]图2示意性的示出使用视频数据解压缩的视频显示系统。更明确地说,压缩音频/视频信号100被解压缩设备110所处理,以提供可以被显示在显示器120上的解压缩信号。解压缩设备110可以被实施为显示器120的整合部件,例如被设在与显示设备的相同外壳内。或者,解压缩设备110可以被提供(例如)所谓机顶盒(STB),注意用语"机顶"并不必然表示该盒需要被定位在相关于显示器120的任何特定方向或位置;其简单地为该技艺所用之用语,表示一种装置,其可连接至显示器作为外围装置。
[0060]图3示意性的示出使用视频数据压缩及解压缩的音频/视频储存系统。输入音频/视频信号130被供给至压缩设备140,其产生用以为储存装置150所储存的压缩信号,储存装置150例如磁盘装置、光盘装置、磁带装置、固态储存装置,例如半导体内存或其他储存装置。为了播放,压缩数据由储存装置150所读取并被传送至解压缩设备160,用以解压缩,以提供输出音频/视频信号170。
[0061]可以了解的是,压缩或编码信号,及储存该信号的储存媒体系被认为本发明的实施例。
[0062]图4示意性的示出使用视频数据压缩的摄影机。在图4中,例如电荷耦合装置(CCD)影像传感器及相关控制及读出电子电路的影像捕捉装置180产生视频信号,其系被传送至压缩设备190。麦克风(或多数麦克风)200产生予以被传送至压缩设备190的音频信号。压缩设备190产生予以储存及/或传输(大致以例示级220表示)的压缩音频/视频信号210。
[0063]以下所述的技术主要关于视频数据压缩。将了解的是,很多现存技术可以被用于配合下述的用于音频数据压缩的视频数据压缩技术,以产生压缩音频/视频信号。因此,将不分开提供音频数据压缩的讨论。将了解的是,有关于视频数据特别是广播质量视频数据的数据率通常远高于音频数据的数据率(不论是压缩或未压缩)。因此,可以了解的是,未压缩音频数据将附有压缩视频数据以形成压缩音频/视频信号。更进一步了解,虽然本示例(示于图1至4)有关于音频/视频数据,但予以说明如下的技术可以在系统中使用,简单地处理(即压缩、解压缩、储存、显示及/或传送)视频数据。也就是说,该等实施例可以应用至视频数据压缩,而不需要有任何相关的音频数据处理。[0064]图5提供视频数据压缩及解压缩设备的示意概图。
[0065]连续影像的输入视频信号300被供给至加法器310及至影像预估器320。如下影像预估器320将参考图6更详细描述。事实上,加法器310执行减法(负加法)运算,其接收输入视频信号300于“ + ”输入及影像预估器320的输出于输入,使得输入影像减去预估影像。该结果产生所谓的残留影像信号330,代表在实际及投影影像之间的差。
[0066]为何产生残留影像信号的理由如下。数据编码技术被描述,即当编码的影像具有较少“能量”时,将被应用至残留影像信号的技术将倾向于更有效工作。于此,术语“有效”表示较小量的编码数据的产生;对于特定的影像质量等级,希望(及认为“有效”)产生比实际上尽可能小的数据。在残留影中提及的“能量”与包含在残留影像中的信息量有关。如果预估影像系与实质影像相同,则在两者间的差(即,残留影像)将可以包含零信息(零能量)并将很容易将其编码为小量的编码数据。通常,如果预估处理可以合理地良好运作,则预期为残留影像料将包含比该输入影像较少的信息(较少能量),同时,将更容易地编码为小量的编码数据。
[0067]残留影像数据330被提供给转换单元340,其产生所述残留影像数据的分立余弦转换(DCT)的代表。DCT技术本身为已知并将不会在此详细描述。然而,用于本案设备中的技术特征将如下更详细的说明,更有关于被施加有DCT运算的不同方块数据的选择。这些将如下参考图7-12加以讨论。
[0068]转换单元340的输出,也就是用于影像数据的每一转换方块的一组DCT系数被提供至量化器350。各种量化技术在视频数据压缩领域中所知,范围由简单乘法量化缩放因子至在量化参数的控制下应用复杂查看表。通常有两个目标。第一,量化处理降低转换数据的可能值数量。第二,量化处理可以增加转换数据的值为零的可能性。这两者均可以使如下所述之熵编码处理更有效的产生小量的压缩视频数据。
[0069]数据扫描处理被扫描单元360所应用。扫描处理的目的为重新排序量化的转换数据,以取得尽可能多的非零量化转换系数,并因此当然取得尽可能多的零值系数。这些特性可以允许所谓扫描长度编码或类似技术可以被更有效应用。因此,该扫描处理涉及由量化转换数据选择系数,更明确地说,由对应于已经被转换及量化的影像数据方块的系数方块,依据“扫描顺序”选择系数,使得(a)所有系数被选择一次作为扫描的一部份,及(b)该扫描倾向于提供要求的重新排序。用以选择的扫描顺序的技术将如下说明。倾向于给定有用结果的一种例示扫描顺序系所谓的曲折扫描顺序。
[0070]扫描系数然后被传送至熵编码器(EE) 370。再次,可以使用各种类型的熵编码。以下将描述的两例子为所谓CABAC(上下文适应二进制算术编码)系统的变形及所谓CAVLC(上下文适应可变长度编码)系统的变形。在常用语中,CABAC被认为提供较佳效率,并在一些研究中,已经显示对相较于CAVLC可比较影像质量的编码输出数据数量提供10% -20%的降低。然而,CAVLC被认为呈现远较CABAC为低的复杂度(以实施法表示)。CABAC技术将参考以下图17加以讨论,及CAVLC技术将参考以下图18及19加以讨论。
[0071]注意扫描处理及熵编码处理系被显示为分开处理,但事实上可以被组合或一起处理。也就是说,数据的读入熵编码器可以以扫描顺序发生。对应的考虑应用至下述的各个逆处理。
[0072]熵编码器370的输出与额外数据(上述及/或下述),例如,用以定义预估器320产生预估影像的方式,提供压缩输出视频信号380。
[0073]然而,因为预估器320本身的操作取决于压缩输出数据的解压缩版本,所以也设有返回路径。
[0074]此特性的理由如下。在解压缩处理的适当级(如下述)中,产生残留数据解压缩版。此解压缩残留数据必须被加入至预估影像,以产生输出影像(因为原始残留数据为输入影像与预估影像间之差)。为了该处理在压缩侧与解压缩侧为可相比,为预估器320所产生的预估影像在压缩处理与解压缩处理期间应相同。当然,在解压缩时,该设备并不必取用原始输入影像,而只取用解压缩影像。因此,在压缩时,预估器320根据其预估(至少,用于影像间编码)该压缩影像的解压缩版。
[0075]为该熵编码器370所执行的该熵编码处理系被认为“无损”,也就是说,其可逆转以取得第一次被供给至熵编码器370完全相同的数据。因此,在熵编码级之前,可以实施返回路径。确实,为扫描单元360所执行的扫描处理也被认为是无损,但在本实施例中,返回路径390由量化器350输出至互补逆转量化器420的输入。
[0076]在常用术语中,熵译码器410、逆转扫描单元400、逆转量化器420及逆转转换单元430提供了代表熵编码器370、扫描单元360、量化器350及转换单元340的个别逆转函数。现在,讨论将持续透过压缩处理;解压缩输入压缩视频信号的处理将分开如下讨论。
[0077]在压缩处理中,扫描系数为返回路径390所由量化器350传送至逆转量化器420,其执行扫描单元360的逆转运算。逆转量化及逆转转换处理系为单元420、430所执行,以产生压缩-解压缩残留影像信号440。
[0078]影像信号440在加法器450加入至预估器320的输出,以产生重建输出影像460。此形成至该影像预估器320之一输入,并将如下所讨论。
[0079]现在,将讨论施加至接收压缩视频信号470的处理,该信号被供给至熵译码器410并在为加法器450加至影像预估器320的输出之前,由该处供给至逆转扫描单元400、逆转量化器420及逆转转换单元430的链中。在直接用语中,加法器450的输出460形成输出解压缩视频信号480。事实上,进一步过滤也可以在信号输出前被应用。
[0080]图6示意性的示出预估影像的产生,特别有关于影像预估器320的操作。
[0081]其中有两基本模式的预估:所谓影像内(intra-1mage)预估及所谓影像间(inter-1mage),或动作补偿(MC)预估。
[0082]影像内预估基于方块影像内容的预估相同影像内的数据。此对应于所谓在其他视频压缩技术内的1-框编码。不同于1-框编码,其中整个影像被内编码,在本实施例中,在内编码(intra-encoding)与间编码(inter-encoding)间之选择可以一方块一方块为准地完成,但在本发明之其他实施例,则该选择仍可以一影像一影像为准地完成。
[0083]动作补偿预估利用动作信息,其尝试以定义予以编码在现行影像中的影像细节的来源,该来源系在另一邻接或附近影像中。因此,在理想例子中,在预估影像中的方块影像数据的内容可以被很简单地编码为参考(动作向量),指向在邻接影像中的相同或略微不同位置的对应方块。
[0084]回到图6,如所示两影像预估配置(对应于影像内及影像间预估),其结果为在模式信号510的控制下,为多任务器500所选择,以提供预估影像方块供给至加法器310及450。该选择基于哪一选择给出最低“能量”(如上所讨论,其可以被认为是需要编码之信息内容),及该选择被发信给在编码输出数据串流内的编码器。在本文中,影像能量可以藉由执行以下加以检测:将输入影像尝试减去两版本的预估影像的区域;平方该差影像的各个像素值;总和该平方值;及指出两版本的哪一造成有关于该影像区域的差影像的最低均方值。
[0085]在内编码系统中,实际预估系根据被接收为信号460的一部份的影像方块加以完成,也就是说,预估系根据编码-译码影像方块加以完成,以在解压缩设备中完成完全相同的预估。然而,数据可以藉由内模式选择520由输入视频信号300导出,以控制内影像预估器530的操作。
[0086]对于影像间预估,动作补偿(MC)预估器540使用例如为动作评估器550所由输入视频信号300导出之动作向量的动作信息。这些动作向量系被动作补偿预估器540所应用至重建影像460的处理版本,以产生影像间预估的方块。
[0087]应用至信号460的处理现将描述。首先,信号系为一过滤单元560所过滤。此涉及施加“去方块”过滤以移除或至少倾向于降低为转换单元340所执行之方块为主处理及后续操作的影响。同时,适应环过滤器使用藉由处理重建信号460及输入视频信号300所推导的系数加以施加。适应环过滤器为一类型的过滤器,其使用已知技术,施加适应过滤器系数至予以过滤的数据。也就是说,过滤器系数可以取决于各种因子加以改变。定义使用哪些过滤器系数的数据系被包含成为编码输出数据串流的一部份。
[0088]来自过滤器单元560的过滤输出事实上形成输出视频信号480。其也被缓冲于一个或更多影像储存570中;连续影像的储存为动作补偿预估处理的要求,特别是产生动作向量。为了节省储存要求,在影像储存570中所储存的影像可以被保持于压缩形式,然后,被解压缩,用以产生动作向量。为了此特定目的,任何已知压缩/解压缩系统可以被使用。所储存的影像被传送至内插过滤器580,其产生储存影像的较高分辨率版;在此例子中,中间取样(次取样)系被产生,使得为内插过滤器580输出的该内插影像的分辨率为储存于影像储存570中的影像分辨率(在各个维度中)的8倍。内插影像系被传送作为至动作评估器550的输入并同时也至动作补偿预估器540。
[0089]在本发明之实施例中,提供另一选用级,其将输入视频信号的数据值使用乘法器600乘以四的因子(作用上只移位该数据值向左两位),并使用除法器或右移器610在设备的输出施加对应除法运算(右移两位)。因此,左移及右移改变数据只单纯作为该设备的内部运算。此手法可以在该设备内提供更高计算准确度,因为任何数据拾入误差的影响被降低。
[0090]影像被分割作压缩处理的方式现将被描述。在基本层次中,予以压缩的影像被认为是一数组的取样方块。为了本讨论的目的,考虑中的最大此方块为所谓最大编码单元(IXU) 700 (图7),其代表64X 64取样的正方阵列。于此,讨论系有关于亮度取样。取决于例如4:4:4,4:2:2,4:2:0或4:4:4:4 (GBR加键数据)的色度模式,其中将有对应于色度方块的对应色度取样的不同数字。
[0091]三种基本类型方块将描述:编码单元、预估单元及转换单元。通常地,LCU的递归细分允许输入图片被分割,使得方块大小及方块编码参数(例如预估或残留编码模式)可以依据予以编码的影像的特定特征加以设定。
[0092]IXU可以被细分为所谓编码单元(⑶)。编码单元为一直正方并具有于8X8取样至LCU700的全尺寸间之大小。编码单元可以被排列为一类型之树状结构,使得第一细分可以如于图8所示地发生,给出32X32取样的编码单元710 ;后续细分可以以选择为基础地发生,以给出部份16 X 16取样的部份编码单元720 (图9)与8 X 8取样的可能一些编码单元730(图10)。整体说来,此处理可以提供CU方块的内容适应编码树状结构,其各个可以大至IXU或小至8X8取样。输出视频数据的编码根据编码单元结构加以发生。
[0093]图11示意性的示出一数组的预估单元(PU)。预估单元为用以承载有关于影像预估处理的信息的基本单元,或换句话说,被加入熵编码残留影像数据的额外数据,以由图5的设备形成输出视频信号。通常,预估单元并不限于形状为正方者。它们可以采用任何其他形状,尤其是形成正方编码单元之一的一半的矩形,只要该编码单元大于最小(8X8)尺寸即可。该目标为允许邻近预估单元的边界(尽可能接近)匹配在该图片中的真对象的边界,使得不同预估参数可以被应用至不同真对象。各个编码单元可以包含一个或更多预估单元。
[0094]图12示意性的示出转换单元(TU)的一组数组。转换单元为转换及量化处理的基本单位。转换单元永远是正方形并可以采由4X4至32X32的大小取样。各个编码单元可以包含一个或更多转换单元。在图12中之缩写字SDIP-P简化所谓短距内预估分割。在此配置中,只有一维转换被使用,因此4 X N方块被透过N转换传送至转换器,输入数据系根据现行SDIP-P内的先前译码相邻方块及前一解码相邻线。
[0095]该内预估处理现将讨论如下。一般来说,内预估涉及由相同影像内的先前已编码及译码取样,产生一个现行方块(预估单元)的预估。图13示意性的示出部份编码影像800。于此,影像以IXU为基础由左上向右下编码。透过整个影像的处理的例示IXU编码半路系被显示为方块810。在方块810之上及左方的阴影区820系为己经编码。方块810的内容的影像内预估可以使用任一阴影区820,但并不能使用其下的没有阴影区。
[0096]如上所讨论,方块810代表IXU ;为了影像内预估处理的目的,这可以更细分为一组更小预估单元。例示预估单元830系被显示在IXU810内。
[0097]影像内预估考虑现行IXU810的上方及/或左方的取样。所需取样被预估的来源取样可以位在相对于LCU810内的现行预估单元的不同位置或方向。为了决定哪一方向适用于现行预估单元,根据每一候选方向的尝试预估结果系被比较,以得知哪一候选方向的结果最接近输入影像的对应方块。给出最接近结果的候选方向系被选定为用于该预估单元的预估方向。
[0098]该图片也可以以“切片”为基础地编码。在一例子中,切片系为水平相邻群的IXU。但通常来说,整个残留影像可以形成一切片,或者一切片可以为单一 IXU,或一切片可以为一列之LCU等等。切片可以提供对错误给出一些弹性,因为它们被编码为独立单元。编码器及译码器状态系在切片边界被完全地重设。例如,内预估并未执行越过切片边界,切片边界被处理为用于此目的影像边界。
[0099]图14例示显示一组可能(候选)预估方向。整组34候选方向可以用于8X8、16X 16或32X32取样的预估单元。4X4及64X64取样的预估单元大小的特殊例子具有减少组的候选方向为其所用(分别17候选方向及5候选方向)。该等方向由相对于现行方块位置的水平及垂直位移所决定,但编码为预估“模式”,其中的一组如图15所示。注意所谓DC模式代表周围上及左手取样的简单算术平均。[0100]图16示意性的示出曲折扫描,其为可为扫描单元360所应用的扫描图案。在图16中,图案被显示为8X8DCT系数的例示方块,DC系数被定位在该方块的左上位置840,且增加水平及垂直空间频率为向下增加至左上位置840右方的距离的系数所表示。
[0101]注意在一些实施例中,该等系数可以以逆向顺序(右下至左上,使用图16的排序标示)扫描。同时,应注意在一些实施例中,该扫描可以在执行残留系数的曲折前,由左至右经由几个(例如于一至三个间)最上水平列。
[0102]图17示意例示CABAC熵编码器的运算。
[0103]CABAC编码器以二进制数据运算,S卩,数据只以O与I的两符号表示。编码器使用所谓上下文模型化处理,其根据先前编码数据,选择“上下文”或概率模型给出下一数据。上下文的选择以确定性的方式执行,使得根据先前译码数据的相同决定可以在该译码器执行,而不必进一步数据(指明上下文)被加入至传送给该译码器的编码数据流。
[0104]参考图17,如果予以编码的输入数据并不是二进制形式,则其可以被传送至二进制转换器900 ;若已经为二进制形式,则转换器900被略过(示意开关910)。在本实施例中,对二进制形式之转换系实际藉由表示量化DCT系数数据为一连串的二进制“映图”加以执行或表示,这将如以下所进一步描述。
[0105]二进制数据可以然后为两处理路径“正常”及“旁路”(其系被示意为分开路径,但在本发明以下所讨论的实施例中可以事实上为相同处理级所实施,只是略微不同的参数)之一所处理。该旁路路径使用所谓旁路编码器920,其并不必然使用与正常路径相同的形式的上下文模型化。在CABAC编码的部份例子中,如果有需要特别批次数据的快速处理,则此旁路路径可以被选择,但在本实施例中,所谓“旁路”数据的两特性系被注意到:第一,旁路数据系为CABAC编码器(950、960)所处置,只使用代表50%概率的固定上下文模型;及第二,旁路数据相关于某些类别的数据,一特定例为系数符号数据。或者,正常路径为示意开关930、940所选择。这涉及为上下文模型器950所处理的数据跟着有一编码引擎960。
[0106]示于图17的熵编码器编码一方块的数据(即,例如,对应于有关于残留影像方块的系数方块的数据)成为单一值,如果该方块为整个零值数据所形成。对于未落入此类别的各个方块,也就是说,至少部份非零数据的方块,准备有“效值图”。效值图表示对于在一予以编码的数据方块中的每一位置,如果在该方块中的对应系数为非零。为二进制形式的效值数据为本身CABAC编码。效值图的使用协助压缩,因为对于具有一数量其效值图表示为零的系数,并没有数据需要被编码为具有一大小的系数。同时,该效值图可以包含特殊码,以表示在方块中的最终非零系数,使得所有最终高频/尾随零系数可以省略编码。在编码比特流中,效值图被定义为效值图所指明的非零系数的值的数据所跟随。
[0107]映图数据的其他阶段系被准备及编码。一个例子为映图,其定义二进制值(I =是,O =否)是否在效值图之映图位置中的系数数据已经被指定为“非零”,实际具有“一”的值。另一映图指明是否在映图位置效值图被指明为“非零”的系数数据实际具有“2”的值。另一图表示,效值图已经显示该系数数据为“非零”的这些图位置,是否该数据具有“大于二”的值。对于再次被指明为“非零”的数据,另一图表示该数据值(使用预定二进制表示法,例如I代表+、0代表_,当然其他方式也可以)的符号。
[0108]在本发明的实施例中,效值图及其他图系被以预定方式配置至CABAC编码器或至旁路编码器,并为相同初始数据项的不同个别属性或值范围的所有代表。在一例子中,至少该效图为CABAC编码及至少部份残留映图(例如符号数据)被旁路编码。因此,各个数据项系被分割成个别次组数据及个别次组系被第一 Gf^nCABAC)及第二(例如旁路)编码系统所编码。数据的本质及CABAC与旁路编码的本质系使得对于预定量的CABAC编码数据,可变数量的零或更多旁路数据相对于相同初始数据项所产生。因此,例如,如果量化重新排序DCT数据报含大致全部为零的值,则可能没有旁路数据或者产生很少量的旁路数据,因为旁路数据只有关心效值图表示该值为非零的图位置。在另一例子中,在具有很高值系数的量化重新排序DCT数据中,则可能产生显著数量的旁路数据。
[0109]在本发明的实施例中,效值图及其他图系例如为扫描单元360所由量化DCT系数所产生并在受到CABAC编码前先受到曲折扫描处理(或依据内预估模式,由曲折、水平扫描及垂直扫描所选出之扫描处理)。
[0110]通常而言,CABAC编码涉及预估上下文,或者根据其他先前编码数据的予以编码的下一位的概率模型。如果下一位与被概率模型所指明“几乎相同”的位相同,则“下一位相符于概率模型”的信息的编码可以更有效率地编码。“下一位并不相符于概率模型”则较低效编码,因此,对于上下文数据的推导对于编码器的良好操作是重要的。用语“适应”表示上下文或概率模型系于编码时被适应或改变,以想要提供对(如未编码)下一数据提供良好匹配。
[0111]使用简单模拟,在书写的英语中,字母“U”为相当不常用。但在字母“Q”后的字母位置中,则确实很常用。因此,概率可能设定“U”的概率为很低值,但当现行字母为“Q”时,贝U “U”作为下一字母的概率模型可以设定为很高概率值。
[0112]在本配置中,使用CABAC编码,对于至少效值图及图表示是否非零值为一或二。旁路处理-在这些实施例中系相同于CABAC编码,但事实上,对于概率模型系固定于I与O相等(0.5:0.5)的概率分布,并被使用于至少符号数据及图表示是否值>2。对于被指明为>2的这些数据位置,分开所谓脱离数据编码可以用以编码数据的实际值。这可以包含Golomb-Rice编码技术。
[0113]CABAC上下文模型化及编码处理系更详细描述于WD4:2011-10-28之201 X (E)的“高效视频编码的工作草案 4”,JCTVC-F803_d5, DraftIS0/IEC23008_HEVC。
[0114]图18例示显示CAVLC熵编码处理。
[0115]有关于以上讨论的CABAC,示于图18的熵编码处理遵循扫描单元360的操作。已注意到,在转换及扫描残留数据中的非零系数经常为±1的顺序。该CAVLC编码器以称为“尾随1”(T1S)的变量来表示高频± I系数的数量。对于这些非零系数,该编码系数藉由使用不同(上下文适应)可变长度编码表加以改良。
[0116]参考图18,第一步骤1000产生值“C0eff_t0ken”,以编码非零系数的总数及尾随的数量。在步骤1010,各个尾随一的符号位系以逆向扫描顺序加以编码。在步骤1020,各个残留非零系数系被编码为“阶层”变量,因此,定义这些系数的符号与大小。在步骤1030,变数total_zeros系被用以编码在最后非零系数前的零的总数。最后,在步骤1040,变数run_before系被用以以逆向扫描顺序编码在各个非零系数前的连续零的数目。上述定义的变量的一起输出形成编码数据。
[0117] 如上所述,为扫描单元360所执行的扫描操作的默认扫描顺序系为曲折扫描并例示于图16中。在使用影像内编码的四方块的其他配置中,则可以取决于影像预估方向(图15)及转换单元(TU)大小,而在曲折扫描、水平扫描及垂直扫描间作出选择。
[0118]如上讨论的CABAC处理将更详细加以描述。
[0119]至少如同于在提议之HEVC系统所用的CABAC涉及相关于予以编码的下一位导出“上下文”或概率模型。为上下文变量或CV所定义的上下文然后影响该位系如何编码。通常而言,如果下一位系与CV定义为预期更多或然值的值相同,则以降低定义该数据位所需之输出位的数量看来系有利的。
[0120]编码处理涉及映图一位至予以编码在一范围码值内的位置。码值的范围系被示意例示于图19A成为一连串之相邻整数,由下限m_low延伸至上限m_high。此两限间之差为m_range,其中m_range = m_high_m_low。藉由以下所讨论的各种技术,在基本CABAC系统中,m_range被局限于256与512之间。m_low可以是任何值。其可以由(例如)零开始,但也可以改变作为所述的编码处理的一部份。
[0121]码值的范围m_range为相关上下文变量为边界1100所定义细分为两次范围:
[0122]边界=m_low+(CV*m_range)
[0123]因此,上下文变量将总范围细分为两次范围或次部份,一次范围为有关于零(或下一数据位)的值,及另一次范围系为有关于一(或下一数据位)的值。范围的细分代表对于下一予以编码的位之为该两位值的CV产生所假设的概率。因此,如果有关于值零的次范围系小于总范围的一半时,则此简化了零被认为在下一符号时比I为低的可能性。
[0124]用以定义哪一方式该次范围应用至可能数据位值有各种不同概率存在。在一例中,较低区范围(即,由m_low至边界)系被传统所定义为相关于零的数据位值。
[0125]编码器与译码器维持哪一数据位值系低或然(经常称为“最少或然符号”或LPS)的记录。CV表示LPS,使得CV —直代表O与0.5间之一值。
[0126]下一位(现行输入位)现被映像或指定至为该边界所分割之范围m_range内的适当次范围内的码值。此被在编码器及译码器所使用以下所详述的技术所确定执行。如果下一位为0,则代表在由m_low至该边界的次范围内的位置的特定码值系被指定给该位。如果下一位为1,在由边界1100至m_high的次范围中的特定码值被指定给该位。
[0127]下限m_l0W及范围m_range然后被重新定义,以相关于指定码及该选定次范围的大小,而修改该组码值。如果刚编码位为零,则m_low未改变但m_range被重新定义为等于m_range*CV。如果刚编码位为1,则m_low被移动至边界位置(m_low+(CV*m_range))及m_range系被重新定义为该边界与m_high间的差(即,(1-CV)*m_range))。
[0128]这些替代法系被例示于图19B及19C。
[0129]在图19B中,数据位为I因此m_low系被向上移动至先前边界位置。这提供改版组之码值,用于下一位编码顺序中。注意在一些实施例中,CV的值系被改变用于下一位编码,至少部份于该刚编码位的值上。这就是为何该技术称为“适应”上下文。CV的改版值系被用以产生新边界1100’。
[0130]在图19C中,零值被编码,因此,m_low保持不变,但m_high被移动至前一边界位置。值m_range被重新定义为m_high_m_low的新值。在此例子中,这已经造成m_range落于其最小允许值(例如256)之下。当此结果被检出时,值m_range被乘2,即,左移I位,尽可能如所需地多次以回复m_range至所需范围的256至512。换句话说,该组码值于大小上被连续增加,直到其具有至少预定最小大小为止。此例子系被示于图19D中,这代表图19C的范围两倍,以符合所需之局限。新边界1100系由CV的下一值及改版111_1^1^6所导出。
[0131]只要该范围必须以此方式乘以二,此处理常称为“再正规化”,一输出位被产生(成为输出编码数据位),一此一位用于各个再正规化级。
[0132]以此方式,间距m_range系取决于CV值(其可以在译码器被再生)及编码位串的适应连续地修改及再正规化。在编码一连串位后,所得之间距及再正规化级的数目独特地定义该编码位串流。得知此一最终间距的译码器将主要能重建该编码数据。然而,内藏数学展现其并不实际需要定义该译码器的间距,而只是定义在该间距内的位置。这是指定码值的目的,其系被维持在该编码器并于编码该数据结束时,传送至该译码器(作为该数据串流的最终部份)。
[0133]上下文变量CV被定义为具有64可能状态,其连续地指示由在CV = 63的下限(例如1% )至在CV = O至50%概率的不同概率。
[0134]CV依据各种已知因子由一位改变至下一位,各因子可能取决于予以编码的数据的方块大小而不同。在一些例子中,相邻及前一影像方块的状态可以被列入考虑。
[0135]指定码值系由一表产生,其定义新编码位应被指定的位置或位置群在相关次范围内的码值给每一可能CV值及m_range位6及7的每一可能值(注意m_range的位9永远为1,因为m_range大小上的局限)。
[0136]图20示意例示使用上述技术的CABAC编码器。
[0137]该CV为CV推导单元1120所被初始化(在第一 CV时)或修改(在后续CV时)。码产生器1130依据CV细分现行m_range并使用上述表产生在适当sub_range内的指定数据码。范围重设单元1140重设m_range至选定次范围的范围。如有必要,正规化器1150重新正规化m_range,输出一输出位,给各个此重新正规化操作。如前所述,在处理结束时,指定码值也被输出。
[0138]在示于图21的译码器中,CV为CV推导单元1220所初始化(当第一 CV时)或修改(在后续CV时),其以在编码器中的单元1120的相同方式加以操作。码应用单元1230依据CV细分现行m_range并检测该数据码置于哪次范围内。范围重设单元1240重设m_range至该选定次范围的范围。如果必要,正规化器1250响应于接收数据位重新正规化m_range ο
[0139]总结,本案技术允许CABAC数据(即,使用上下文变量的数据)被以16位(在此例子中)的固定大小封包被写入至位串流,该封包称为“CABAC封包”。在各个“CABAC封包”后,对应“旁路封包”被写入该位串流。
[0140]“旁路封包”(其在大小为可变的)包含任何旁路位,其附着至CABAC数据,该数据可以只使用包含在先前“CABAC封包”内的位加以译码;此旁路数据被直接插入至该串流中。
[0141]为了产生CABAC封包为主串流,编码器可以被安排以追踪译码器已经在各个重新正规化处理后读取多少位。该编码器可以在等于译码器被初始读取的位计数(在本实施例中为9)开始计数。
[0142]一些其他背景信息将被提供。
[0143]现参考图22及23,如上所述,形成视频编码设备的一部份的熵编码器包含第一编码系统(例如,如CABAC编码器2400的算术编码编码系统)及第二编码系统(例如旁路编码器2410),安排以使得特定数据字符或值藉由CABAC编码器或旁路编码器但非两者所编码至最终输出数据串流。在本发明之实施例,传送至CABAC编码器及旁路编码器的数据值为个别次组的顺序数据值,其由初始输入数据(在此例子中为重新排序量化的DCT数据)分割或导出,代表由输入数据产生的该组“图”的不同图。
[0144]在图22的示意代表图处理CABAC编码器与旁路编码器为分开配置。这在实际上可能是如此,但在另一可能中,则如图23所例示的单一 CABAC编码器2420被使用作为图22的CABAC编码器2400及旁路编码器2410。编码器2420在模式选择信号2430的控制下操作,以当CABAC编码器2400的模式中,以操作有适应上下文模型(如上所述),及当于旁路编码器2410的模式中,以固定50%概率上下文模型操作。
[0145]第三可能组合这两者,在于两实质相同CABAC编码器可以平行操作(类似于图22的平行配置),其差异在于操作为旁路编码器2410的CABAC编码器具有其上下文模型固定在50%概率上下文模型。
[0146]CABAC编码处理与旁路编码处理的输出可以储存(至少暂时地)在个别缓冲器2440、2450。在图23中,一个开关或多任务器2460在模式信号2430的控制下,以配送CABAC编码数据至缓冲器2450及旁路编码数据至缓冲器2440。
[0147]使用单一缓冲器的替代配置将如下参考图26加以描述。
[0148]图24及25示意例示视频译码设备的熵译码器形成部的例子。参考图24,个别缓冲器2510、2500传送数据至CABAC译码器2530及旁路译码器2520,其系被配置使得特定编码数据字符或值系为CABAC译码器或旁路译码器所解码,但非两者所解码。该译码数据系为逻辑2540所重新排序为适当顺序,以用于后续解码阶段。
[0149]在图24中的示意代表图处理CABAC译码器及旁路译码器为分开配置。实际上也可能是如此,但在另一可能中,则如图25所示,单一 CABAC译码器2550被使用为图24的CABAC译码器2530及旁路译码器2520的两者。译码器2550在模式选择信号2560的控制下操作,以当CABAC译码器2530的模式时,操作有适应上下文模型(如上所述),及在旁路编码器2520的模式时,操作有固定50%概率上下文模型。
[0150]如前,第三可能组合这两种,在于两实质相同CABAC译码器可以平行操作(类似于图24的平行配置),其差异为操作为旁路译码器2520的CABAC译码器令其上下文模型固定在50%概率上下文模型。
[0151]在图25的例子中,开关或多任务器2570在模式信号2560的控制下作动,以适当地由缓冲器2500或缓冲器2510配送CABAC编码数据至译码器2550。
[0152]本发明的实施例将进一步详述如下,CABAC编码数据及旁路编码数据可以多任务为单一数据串流。数据串流的更多细节将在以下说明,但在此阶段中,注意在此配置中,输入缓冲器2500、2510及/或输出缓冲器2440、2450(如此例子中)可以为单一个别缓冲器2580所替换。因此,在译码器配置中,两输入缓冲器可以为单一缓冲器所替换,及在编码器配置中,该两输出缓冲器可以为单一缓冲器所替换。在图26中,缓冲器系被示意例示以包含分界数据位或字符的垂直线,其系想要以协助代表,其中延伸于横向中之缓冲器的数据内容(如所示)。
[0153]缓冲器2580及其相关读取及写入控制配置因此也可以被视为用以藉由第一(例如CABAC)及第二(例如旁路)编码系统所编码的数据,产生输出数据串流的输出数据组合器的例子。
[0154]显示出两缓冲器指针器2590、2600。当编码器输出缓冲器时,这些代表数据写入指针,表示在缓冲器中下一数据位被写入的位置。在译码器输入缓冲器的例子中,这些表示指示缓冲器中的下一数据位被读取的位置的数据读取指针。在本发明的实施例中,指针2590相关于读取或写入CABAC编码数据及指针2600相关于读取或写入旁路编码数据。这些指针及其相关位置的效值将讨论如下。
[0155]在CABAC编码器及译码器的基本例子中,编码旁路数据(被编码为CABAC但具有固有50%概率上下文模型)不能以原始形式引入与CABAC译码数据相同的数据串流,对于任何给定输出CABAC译码数据位,该CABAC译码器已经较当该编码器正编码该特定数据位时,该编码器已经写入由该数据串流读取更多位。换句话说,CABAC译码器读取前方,以由数据串流读取进一步CABAC编码数据,及因此并不认为可能引入旁路数据至与CABAC数据相同的连续编码数据串流。此差异(译码器向前读取的数量)可以被称为“译码器偏差”。
[0156]换句话说,当译码器正处理二进制值时,其已经具有一些位,用于缓存器中的下几个二进制值,这系被称为“值”。
[0157]然而,如果一种方式可以找出使得旁路数据可以以原始形式使用,旁路数据的多数位可以使用相对少逻辑或处理负担立即读取。本发明的实施例确实允许使得该旁路数据可在串流中的预定位置取用。使用所述的技术,旁路数据可以与CABAC数据同时被读取。因此,本发明的实施例提供一种方法,以将CABAC串流分割,使得旁路数据可以以原始形式放置于该串流中,以形成复合CABAC/旁路数据串流并可能可以平行于CABAC数据读取(在译码时)。
[0158]该技术的基础系将CABAC数据串流(没有旁路数据)排列为封包。于此,封包表示为一组具有预定长度(位数)的相邻编码CABAC数据位,其中用语“预定”暗示CABAC数据封包的长度为例如(a)事先决定,(b)为编码器决定并相关于剩余的编码数据串流地传送至该译码器,或(c)以译码器及编码器已知的方式由先前编码/译码数据导出。
[0159]在各个CABAC封包被写入至该输出数据串流后,对应于包含于该封包内的该编码系数的旁路数据(以原始形式)写至复合输出数据串流旁。
[0160]因此,此配置提供输出数据串流产生的例子,该输出数据串流包含由第一编码系统(例如CABAC)所产生的预定数量的数据的连续封包,并在数据串流顺序中,跟随有相关于第一编码系统所编码的相同数据项的为第二编码系统(例如旁路)所产生的零或更多数据。
[0161]编码器追踪译码器将在每一译码后读取多少位,以决定在下一封包后的旁路数据的数量。
[0162]译码器可以将该CABAC封包加载缓冲器(例如缓冲器2510)并由该串流的直接读取旁路数据。或者CABAC及旁路数据可以使用分开指针(参考图26描述)由共同缓冲器或串流读取。以此方式,可能,多数旁路位可以一次读取,及CABAC及旁路数据可以平行读取,使得(可能)相对于系统中CABAC数据及旁路数据使用共同算术编码处理被编码为单一数据串流的系统增加系统的数据流量。
[0163]因此,藉由以直接方式,将CABAC数据分割成封包,有可能组合原始旁路数据与CABAC数据,允许多数位一次读取,及/或同时读取旁路及CABAC数据,允许平行与改良通量。
[0164]在本发明的实施例中,固定大小的16位被用于CABAC封包。注意,此一固定长度,以所产生的输出数据的数量;当然,CABAC编码处理的本质表示在CABAC封包中之16位当然可以代表输入数据的可变数量。16位的长度大于用于本发明的实施例的CABAC范围(默认9位)。同时注意,也可以选择其他封包长度。
[0165]初始化缓存器“值”的CABAC数据系被放置于第一封包,其后跟随CABAC数据,以在第一译码、第二译码以此类推后重新正规化。各个CABAC封包含系为原始旁路数据所跟随,给用于重新正规化CABAC数据系整个被包含在CABAC封包内的所有系数。
[0166]用于具有重新正规化数据执行通过特定CABAC封包的末端的系数的旁路数据系被置于下一 CABAC封包后。
[0167]此处理被示意示于图27,其显示封包化数据串流的一部份。CABAC封包2610被显示为未加阴影方块及旁路封包2620被显示为加阴影方块,数据顺序由左至右。填塞零2630 (如下)被显示相关于最后CABAC封包。因此,图27的封包化数据串流提供视频数据的例子,其包含预定数量的为第一编码系统所产生的排序数据的连续封包,在数据串流顺序中,跟随有相关于为第一编码系统所编码的相同数据项的第二编码系统所产生的零或更多数据,该第一及第二编码系统被安排以熵编码个别次组的输入视频数据,使得对于为第一编码系统之一群数据项产生的预定数量编码数据,相关于该群为第二编码系统所产生的数据,产生可变数量的零或更多数据。
[0168]当视频数据以一切片一切片为基础地编码(其中一切片系为一图片的次组,使得解码为自包含,或相较于图片为其他部份,独立编码为独立部份),相关于特定切片的最后封包可以小于预期的16位,如果用于该切片的CABAC数据并未结束于封包边界(也就是说,如果整个切片的CABAC数据总数并不是16位的倍数)。在此等环境中,最后封包将于长度小于16位。在此时,最后CABAC封包系为数据串流组合器所填塞,例如,为数据串流组合器所填塞以零至其预期大小,写入填充数据至缓冲器及将其读取出作为最后封包的部份。填充数据并未被读取,因为该译码器将在取得其之前译码切片末端的旗标。在此例子中,最大的耗损量为等于小于封包大小一位。
[0169]然而,为了降低耗损量,如果最后CABAC封包没有相关旁路数据(零旁路数据),则最终封包可以允许短于预期大小或换句话说,未使用填充数据。此封包含可以称为“短封包”。
[0170]在本发明实施例中,为了编码封包形式的数据,该编码器保持一缓冲器(例如缓冲器2580),其中可以写入CABAC及旁路数据。于初始化时,CABAC写入指针2590被设定为零及旁路写入指针2600被设定等于第一 CABAC封包的大小(例如16位)。因此,CABAC数据的第一位将被写入至缓冲器的开始处,相关于该CABAC封包的旁路数据(如果有的话)的第一位将被写入至由第一 CABAC写入位置偏移开16位的位置。该指针配置系更详细例示于图28。
[0171]每当编码器检测该译码器已读取16位时,旁路指针前进通过下一 CABAC封包(即,对于现行封包由旁路数据的末端前进16位)。每当编码器填入CABAC封包时,CABAC写入指针前进通过下一旁路封包及CABAC及旁路数据被送至该串流。
[0172]为了编码CABAC封包为主串流,可以使用输出缓冲器,其可以被写入多个位置。[0173]两写 入指针被使用以索引此缓冲器,第一个表示将CABAC数据写于何处(于零处开始),第二个表示旁路数据写于何处(开始于16)。
[0174]每当编码器检测译码器已经读取16位,旁路指针的位置被注意并增量16。当编码器完成现行“CABAC封包”写入,CABAC指针被设定等于旁路指针的注意先前位置。
[0175]以此方式,每一指针“跳过”其他数据。在任何给定再正规化后,在译码器已读取位总数及编码器已写入的位总数间的差异已经大于一封包的大小。
[0176]因此,有必要储存多数先前旁路指针位置。指针的所需数量可以为最大差异所约束,并为限制末决位的理由。
[0177]可以藉由快取围绕于目标区的字节,而在单一写入循环内,对缓冲器执行非字符对准写入。
[0178]以下步骤为描述现行编码处理的伪码。当有必要时,一些注释的解释系在括号内进行。
[0179]初始化:setptr_CABAC = O (CABAC 写入指针)
[0180]ptr_bypass = 16 (旁路写入指针)
[0181]ptr_bypass_old =未定义
[0182]decoder_bits_read = 9(CABAC_RANGE_BITS)
[0183]步骤1:编码N CABAC位:
[0184]如果N位配合入现行封包:
[0185]在ptr_CABAC 写入位
[0186]ptr_CABAC+ = N (以 ptr_CABAC+N 替换 ptr_CABAC)
[0187]否则
[0188]在ptr_CABAC写入位,直到封包结束
[0189]ptr_CABAC = ptr_bypass_old
[0190]在ptr_CABAC 写入剩余位(N’ )
[0191]ptr_CABAC+ = N’
[0192]decoder_bits_read+ = N
[0193]如果 decoder_bits_read> = 16
[0194]decoder_bits_read_ = 16
[0195]ptr_bypass_old = ptr_bypass
[0196]ptr_bypass+ = 16
[0197]步骤2:编码N旁路位:
[0198]在ptr_bypass 写入位
[0199]ptr_bypass+ = N
[0200]步骤3:如所需地重复步骤I及步骤2。
[0201]在编码设计中,在一组数据末端需要终止符号,将了解的是,处理在最后封包中之可变数量的CABAC位应仍然允许此一终止符号。该终止符号可以例如为一具有O或I的预定值之位,表示网络抽象层(NAL)数据串流的末端。
[0202]使用“[…]”表示先前于此所述之CABAC封包,“C”表示CABAC位及“R”表示终止符号,最终(短)封包可以然后例如包含类型[CCCCCCCCCCCCCCCR]的位顺序,在此例子中,具有15CABAC位及一终止位。
[0203]注意,在HEVC或AVC系统中,在本发明之实施例中,CABAC串流本身的最后位可以为此终止符号所替换,因此,节省一位。在此例子中,CABAC串流的最终位为以与编码设计的终止符号的相同值加以替换(例如值I)。明显地,如果此位的最终值已经为1,则作用上没有改变。如果位的最终值为0,则其有将I加至整个值的作用。然而,对于2的符号范围及对于在编码的结束系为符号范围的底部之值,则加I将不会移动整个值于编码间距之夕卜,及数据串流保持有效。因此,对于HEVC或AVC编码,通常,CABAC串流的最后位可以设定等于终止符号,同时保留在相同编码间距内。将了解的是,任何编码设计可以利用此技术类似地容许在串流中之最后位的位变化。
[0204]因此,在本实施例中,如果CABAC串流结束于封包的中间并没有旁路数据可跟随,则该串流如前所述系被终止以短封包,及该短封包的最后位将被读取为适当终止符号并可以被正确译码(例如,在HM4.0译码设计中)。使用上述例子,所得短封包将读取[CCCCCCCCCCCCCCR],包含14CABAC位及一终止位以替换最后第15个CABAC位。
[0205]然而,如果CABAC串流终止于封包的中间及有旁路数据可跟随,则最终封包并未截断,以重合CABAC位的末端,并相反地提供有填充位。然而,仍想要终止符号。
[0206]在此例子中,在本发明的实施例中,为了维持在编码器与译码器的一致性,一个或更多填充位(典型在此实施例中之所有填充位)也使用与终止符号相同的值。使用“B”表示旁路位,所得顺序将为类型[CCCCCCCCCCRRRRRR]BBBBR。于此,10个CABAC位,其后跟着具有与数据终止位相同的值或符号的6个填充位。在CABAC封包后,旁路位然后再次为终止符号所跟随。
[0207]再次,在HEVC、AVC或类似公差设计中,或者,CABAC位的最终位也可以再次为终止符号所替换,具有额外填充位同时也使用与终止符号相同的值。在此时,所得顺序将为类型[CCCCCCCCCRRRRRRR]BBBBR0于此,9个CABAC位为终止位所跟随,以替换最终第10CABAC位,其后随后为6个具有与终止位R相同的值的填充位所跟随。因此,有一总数7位的一列,在此例子中,具有终止符号R的值。在CABAC封包后,旁路位再次为终止符号所跟随。
[0208]在任一例子中,以此方式,终止符号仍设在CABAC数据的末端也在整个位串流的末端。
[0209]最后,当最后需求CABAC位(即,依据于上所述之编码设计,包含或不包含最后实际CABAC位)准确地配合最终CABAC封包的第16位,则译码器将自动持续查看下一预期封包将在何处及因此终止符号可以放置在该位置。因此,例如在此例子中的顺序包含[CCCCCCCCCCCCCCCC]R,及[CCCCCCCCCCCCCCCC]BBBBRo
[0210]分开或另外,也有可能较早终止CABAC串流,以插入不同数据(例如,IPCM无损码)。结果,CABAC串流可以再次终止为短封包,但再次有旁路数据时,则最终封包可以再次包含填充位。在此例子中,再次为节省填充位的位一个或更多可以为在(后续串流)插入数据的开始的对应第一位(取的值)所替换。使用“D”表示差异数据,所得封包将然后包含一顺序类型[CCCCCCCDDDDDDDDD] BBBBR 或(参考如上 HEVC 或 AVC 例)[CCCCCCCRDDDDDDDD]BBBBR0
[0211]未决位将参考图29加以考虑。作为此考虑的一部份,在本发明烦人实施例中,编码器保持名单的指针,其中完成旁路封包。该名单的长度取决于上述译码器偏移。通常而言:
[0212]Decoder offset = CABAC_RANGE_BITS (默认 9) + 末决位数
[0213]通常,译码器偏移理论上为末约束,然而,其提议机制系被设有用以限制未决位,允许编码器维持较小数量的指针。
[0214]所需数量的指针为下式所给定:
[0215]舍入(最大译码器偏移/CABAC封包大小)的值
[0216]未决位为对算术译码器的可能问题,当编码器得知编码数据在该0.49至0.51的范围内(例如,在十进制中,而不是在一般二进制)-译码器不知是否输出0.4 (第一效值图)或0.5。编码器必须延迟输出信息,直到其知道作什么。对于各个延迟决定,该编码器必须写较所需少一位至该串流,因此,译码器偏移增加。最后,该问题被解决,及编码器可以写出遗失值,降低译码器偏移回到9。然而,其必须写入所有遗失值至缓冲器中的正确位置,因此,必须记得其可以写入至串流缓冲器的何处。
[0217]因此,其必须保持追踪位置的数目成为译码器偏移及封包尺寸的函数。如果偏移为〈=16,则其可以被了解到只保持追踪正常写入指针及较旧写入指针,但如果偏移>16,则额外较旧写入位置需要被追踪;如果偏移>32,则两额外较旧入位置需要被记录,并以此类推。
[0218]将讨论未决位的另一特征。为了以正确顺序输出该串流,“旁路封包”必须为编码器所储存,直到其对应“CABAC封包“被产生为止。
[0219]因为编码器可以长时间延迟写入位,甚至整个串流,由于这些位为未决,所以,必须被缓冲的“旁路封包”的数量可以无限。
[0220]为了限制必须被缓冲的“旁路封包”的数量,其例如使用串流终止,有用的限制未决位的数量。
[0221]此方法允许予以限制的未决位至固定数量,而不必在每次再正规化后它们必须被检查。为了完成此方法,当m_low出现在编码器中,译码器追踪m_low。
[0222]由m_low再正规化的位被累积在缓冲器中。如果在再正规化后,至少部份数量的位已累积在此缓冲器中,则它们被认为形成一“群”。在本发明之实施例中,此最小群大小可以为15位。因此,最大群大小将会等于22(14+8(8位为最大可能再正规化))。
[0223]在该编码器中,第一群被储存于缓冲器中。如果随后群并不是未决,则现行在缓冲器中之群与任何未决位一起被冲入该串流。新的一群然后储存在该缓冲器中。
[0224]如果在一群中的所有位为I并且没有进位,该群被认为是未决。编码器与译码器各自保有未决群数量的计数。编码器也保持该未决群大小总和的计数,使得当遭遇到没有未决群时,其得知有多少未决位需要被冲入。
[0225]如果遭遇到未决群的数量大于或等于界定限制,则该串流被终止。此确定下一群将不是未决,允许累积未决定群被冲洗。
[0226]使用此方法,未决位的最大可能计数等于为未决群的限制数量乘以最大群组大小。
[0227]因此,本发明的实施例可以提供缓冲器,用以累积由m_low再正规化的数据(缓存器表示CABAC范围的下限),及如果该群具有至少一个预定数据数量,则用以相关储存数据成为一群;[0228]检测器,用以检测是否在一群中之所有数据具有数据值I而没有进位,如果是,用以指定该群为第一类型的一群;如果否,则该群被指定为第二类型的一群;
[0229]缓冲器读取器,用以自该缓冲器读取第一类型之群,如果随后储存群为第二类型,及将读取群插入输出数据串流;
[0230]检测器,用以检测该缓冲器中的出现多于第一类型的群的预定数量,及如果是,用以终止及重新开始编码该数据。
[0231]该译码器的操作现将加以描述。
[0232]以通常用语表示,CABAC封包为主串流可以使用移位寄存器作为该缓冲器加以译码。各个时间数据系由该缓冲器为设在译码器中作为缓冲器读取器的译码器或控制逻辑所读出,剩余位系被移位以填入为读取位所占用的空间,及来自该串流的新数据被加入至缓存器的末端。
[0233]CABAC数据由移位寄存器的前端读Am_valUe (作为输入缓冲器),两者在解码的开始及在每一再正规化后。
[0234]旁路数据由旁路指数所指示的位置读出。此指数初始被设定至16 (第一“旁路封包”的开始)及每一读取CABAC数据减量读取位的数量。
[0235]在平行系统中,CABAC及旁路读-与-移同时发生。例如,译码器2520及2530之译码器可以作动为熵译码器,以解码由缓冲器读取的个别次组数据。
[0236]在“CABAC封包”的末端(即,当CABAC读取传送旁路指数),该旁路指数增量16,跳过它通过下一“CABAC封包”。藉由由等于旁路指数+16及旁路指数本身的位置推论读取,这在平行系统可以完成而没有失速(stall)。
[0237]在“旁路封包”中的数据只附着至前一“CABAC封包”内的CABAC数据。藉由CABAC读取将通过现行“CABAC封包”末端时,此确保在相关“旁路封包”中之所有数据将被读取及因此,现行“CABAC封包”的末端系直接邻接至下一个的开始。
[0238]这允许CABAC数据一直被安全地读取通过现行“CABAC封包”的末端,好像其为一
连续串流。
[0239]移位寄存器的大小藉由需要自最远可能位置读取旁路位的最大可能数量所决定并假设系数具有32768(16位符号)的最大大小时被计算为67位((8-1+16) {最远旁路读取指数} +44 {最大可能旁路读取})。
[0240]译码器可以维持缓冲器或移位寄存器(例如图26所示之类型的缓冲器2580),以允许两类型之数据(CABAC及旁路)被同时运算。
[0241]该缓冲器的最小大小=(CABAC_RANGE_BITS-2)+PACKET_SIZE+MAX_BYPASS_LENGTH;例如,使用一组先前提出之参数,最小大小=(9-2)+16+44 = 67。
[0242]旁路数据系由为旁路读取指针2600所指示之位置读出。使用中之缓冲器的例子系被示意性的示出在图30。
[0243]译码器推论评估在旁路读取指针后的位,决定多少位待被读取,如果:
[0244]A)不需要旁路位(系数大小=O)
[0245]B)只需要符号位(系数大小=I或2)
[0246]C)需要符号位及脱离码(所有其他大小)。
[0247]另外,该译码器也推论解码(旁路指针+16)(如果有效)(见如下)。[0248]参考图30,在每一 CABAC再正规化后,CABAC数据系由缓冲器的前面读入缓存器“值”(前端系被显示于图30的左方),向左移位所有其他位与旁路读取指针2600。换句话说,在此例子中,由缓冲器读取之数据具有由缓冲器移除该数据的作用。(取决于由CABAC解码处理所决定的大小)旁路数据系由旁路指针2600所指示的位置读出,再次移位所有位至旁路读取指针的右方,以进一步向下数缓冲器(的左方)。
[0249]等于两移位的总和的新数据数量被由编码数据串流加入缓冲器的末端(即,如图30所示之右手端)。换句话说,缓冲器在这些读取操作后再填充。
[0250](当CABAC读取指针通过旁路指针)在CABAC封包的末端,旁路指数被跳至通过下一 CABAC封包的下一个位置。
[0251]旁路封包必须在该点为空的(因为该旁路位系在对应于整个包含在CABAC封包内的系数的该封包中),使得CABAC指针可以一直安全读取通过封包的末端,好像其为一连续串流。
[0252]一旦推论评估位在(旁路读取指针+16),在此情况中有可能确保立即跳跃至下一旁路封包,而完全不需要额外处理延迟。
[0253]此处理被示意例示于图31。注意,所示至左方的CABAC封包为现行封包的现行未读取内容的示意例示,也就是说,其只显示现行封包的剩余部份。
[0254]一般来说,推论指针永远高于主指针16位:该想法为如果有需要存取在该主指针的数据(因为其在新封包的开始),译码器将已经解码在下一旁路封包的开始的第一旁路数据。换句话说,此协助确保旁路数据已经被解译。
[0255]以下伪码,使用与先前伪码相同的标注,描述解码处理并可以配合图32读取,其例示四个处理阶段,如所示为在图32内的连续行,注意,本发明之实施例中,到四个此阶段可以在各个译码频率循环中完成:
[0256]
【权利要求】
1.一种数据编码设备,其中编码有一组顺序数据,该设备包含: 熵编码器,用于编码该顺序数据,其中各个数据项被分割成个别次组数据,以及第一及第二编码系统所编码的个别次组,使得对于相关于为该第一编码系统的一群数据项所产生的预定数量的编码数据,可变数量的零或更多数据相关于该群数据由该第二编码系统所产生;及 输出数据串流组合器,用以由为该第一与第二编码系统所编码的该数据产生输出数据串流,该输出数据串流包含为该第一编码系统所产生之预定数量的数据的连续封包,其以数据串流顺序相关于为该第一编码系统所编码的相同数据项为该第二编码系统所产生的该零或更多数据所跟随。
2.根据权利要求1所述的设备,其中该第一编码系统为算术编码编码系统,及该第二编码系统为旁路编码系统。
3.根据权利要求2所述的设备,其中该第一编码系统为上下文适应二进制算术编码(CABAC)编码系统。
4.根据权利要求1至3中任一项所述的设备,其中该组顺序数据代表一个或更多影像。
5.根据权利要求1至4中任一项所述之设备,其中该组顺序数据系被编码为独立编码部份,该数据串流组合器被组态以相关于一部份产生数据串流,并当如果最终封包小于预定数量的数据时,相关于该顺序数据,将填充数据加至为第一编码系统所编码之最终封包。
6.根据权利要求5所述的设备,其中该填充数据的一个或更多位具有与数据终止符号相同的值。
7.根据权利要求5所述的设备,其中该填充数据的一个或更多各别位取在后续数据串流的开始处的对应各别位的值。
8.根据权利要求5所述的设备,其中该数据串流组合器被组态以如果为该第二编码系统所编码之对应系数产生零数据,则不将填充数据加至最终封装。
9.根据上述任一项权利要求所述的设备,更包含频域转换器,用以取决于输入数据信号的各别部份,产生频域系数并依据编码顺序排序用以码编的该等系数。
10.一种数据编码方法,其中编码有一组顺序数据,该编码方法包含步骤: 将各个数据项分割成各别次组数据; 以第一及第二编码系统熵编码该等各别次组,使得对于为该第一编码系统所相关于一群数据项所产生的预定数量的编码数据,可变数量的零或更多数据系相关于为该第二编码系统的该群数据产生 '及 由为该第一及第二编码系统所编码之该数据产生输出数据串流,该输出数据串流包含为该第一编码系统所产生之预定数量的数据的连续封包,于数据串流顺序中,其后跟随有为该第二编码系统相关于为该第一编码系统所编码之相同数据项所产生的零或更多数据。
11.一种由权利要求10所述的编码方法所编码的视频数据。
12.一种视频数据,包含为第一编码系统所产生的预定数量的数据的连续封包,于数据串流顺序中,其后跟随有为第二编码系统相关于为该第一编码系统所编码的相同数据项所产生的零或更多数据,该第一及第二编码系统被安排以熵编码输入视频数据的各别次组,使得对于为该第一编码系统所相关于一群数据项产生的预定数量的编码数据,可变数量的零或更多数据相关于该群数据由该第二编码系统所产生。
13.一种储存有根据权利要求11或12所述的视频数据的数据载体。
14.一种视频译码设备,用以译码根据权利要求11或12所述的数据,该设备包含: 输入缓冲器,用于储存该编码数据; 缓冲器读取器,用于由各个封包读取该第一及第二次组的各别数据;及 熵译码器,用于解码该第一及第二次组,以产生排序的译码数据。
15.一种用以解码根据权利要求11或12所述的视频数据的数据译码方法,该方法包含步骤: 储存该编码数据于输入缓冲器; 由在该输入缓冲器的各个封包中,读取该第一及第二次组的各别数据;及 熵解码该第一及第二次组,以产生排序译码数据。
16.一种计算机软件,其当为计算机执行时,使得该计算机执行根据权利要求10或15所述的方法。
17.一种非暂时机器可读取储存媒体,其上储存有根据权利要求16所述的计算机软件。
18.—种视频数据捕捉传输及/或储存设备,包含根据权利要求1至9及13中任一项所述的设备。
【文档编号】H03M7/40GK103918272SQ201280054508
【公开日】2014年7月9日 申请日期:2012年11月6日 优先权日:2011年11月7日
【发明者】詹姆斯·亚历山大·戈梅, 卡尔·詹姆斯·沙曼 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1