技术领域
本发明涉及视频译码。
背景技术:
数字视频能力可并入到多种多样的装置中,包含数字电视、数字直播系统、无线广播系统、个人数字助理(PDA)、膝上型或桌上型计算机、平板计算机、电子书阅读器、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话(所谓的“智能电话”)、视频电话会议装置、视频流式传输装置等。数字视频装置实施视频压缩技术,例如在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分高级视频译码(AVC)定义的标准、目前正在开发的高效率视频译码(HEVC)标准以及此类标准的扩展中所描述的视频压缩技术。视频装置可通过实施此类视频压缩技术来更有效率地发射、接收、编码、解码和/或存储数字视频信息。
视频压缩技术执行空间(图片内)预测和/或时间(图片间)预测来减少或去除视频序列中固有的冗余。对于基于块的视频译码,视频切片(即,视频帧或视频帧的一部分)可分割成若干视频块,所述视频块也可被称作树块、译码单元(CU)和/或译码节点。使用关于同一图片中的相邻块中的参考样本的空间预测对图片的经帧内译码(I)切片中的视频块进行编码。图片的经帧间编码(P或B)切片中的视频块可使用相对于同一图片中的相邻块中的参考样本的空间预测或相对于其它参考图片中的参考样本的时间预测。空间或时间预测产生待译码块的预测性块。残差数据表示待译码原始块与预测性块之间的像素差。经帧间译码块是根据指向形成预测性块的参考样本块的运动向量以及指示经译码块与预测性块之间的差的残差数据编码的。根据帧内译码模式和残差数据来编码经帧内译码块。为了进一步压缩,可将残差数据从像素域变换到变换域,从而产生残差变换系数,可接着量化所述残差变换系数。
技术实现要素:
一般来说,本发明描述用于执行用于视频译码的帧内预测的技术。更明确地说,本发明描述用于促进帧内块复制(帧内BC)的技术。帧内BC是指其中基于同一图片内的预测块来译码当前视频块的帧内预测技术。同一图片内的预测块由向量识别,所述向量可被称为块向量。在一些实例中,识别预测块的块向量可由可经编码和解码的多个语法元素表示。在一些实例中,作为相反译码,那么使用相同语法元素的块向量用以译码运动向量,可使用不同语法元素来译码块向量。
在一个实例中,一种用于解码视频数据的方法包含在经编码视频位流中且为当前视频数据块接收残差块和用于块向量的分量的一组语法元素,所述块向量表示当前块与当前块所驻存于其中的图片中的预测符视频数据块之间的移位。在此实例中,所述方法还包含至少通过以下步骤来解码所述组语法元素以确定所述块向量的所述分量的值:解码所述组语法元素中的第一语法元素,以确定所述块向量的所述分量的绝对值是否大于零;基于所述块向量的所述分量的所述绝对值大于零,解码所述组语法元素中的第二语法元素,以确定所述块向量的所述分量的所述绝对值是否大于基于一组代码的阶的阈值;基于所述块向量的所述分量的绝对值大于所述阈值,使用所述组代码来解码第三语法元素,以确定所述块向量的所述分量的所述绝对值减基于所述组代码的阶的偏移;以及基于所述块向量的所述分量的所述绝对值大于零,解码所述组语法元素中的第四语法元素,以确定所述块向量的所述分量的所述值是正还是负;基于所述块向量的所述分量的所述值,确定所述预测符视频数据块;以及基于所述预测符视频数据块和残差块来重构所述当前视频数据块。
在另一实例中,一种用于解码视频数据的装置包含:用于在经编码视频位流中且为当前视频数据块接收残差块和用于块向量的分量的一组语法元素的装置,所述块向量表示当前块与当前块驻存于其中的图片中的预测符视频数据块之间的移位;用于解码所述组语法元素以确定所述块向量的所述分量的值的装置,其中所述用于解码所述组语法元素的装置包含:用于解码所述组语法元素中的第一语法元素以确定所述块向量的所述分量的绝对值是否大于零的装置;用于基于所述块向量的所述分量的所述绝对值大于零来解码所述组语法元素中的第二语法元素以确定所述块向量的所述分量的所述绝对值是否大于基于一组代码的阶的阈值的装置;用于基于所述块向量的所述分量的所述绝对值大于所述阈值来使用所述组代码解码第三语法元素以确定所述块向量的所述分量的所述绝对值减基于所述组代码的阶的偏移的装置;以及用于基于所述块向量的所述分量的所述绝对值大于零来解码所述组语法元素中的第四语法元素以确定所述块向量的所述分量的所述值是正还是负的装置。在此实例中,所述装置还包含:用于基于所述块向量的所述分量的所述值来确定所述预测符视频数据块的装置;以及用于基于所述预测符视频数据块和残差块来重构所述当前视频数据块的装置。
在另一实例中,一种用于编码视频数据的方法包含:从所述当前视频数据块驻存于其中的图片中的视频数据的多个经先前编码块为当前视频数据块选择预测符块;以及至少通过以下步骤,在经编码视频位流中且为所述当前视频数据块编码残差块和表示块向量的分量的值的一组语法元素,所述块向量表示所述当前视频数据块与所述预测符块之间的移位:编码所述组语法元素中的第一语法元素,其指示所述块向量的所述分量的绝对值是否大于零;基于所述块向量的所述分量的所述绝对值大于零,编码所述组语法元素中的第二语法元素,其指示所述块向量的所述分量的所述绝对值是否大于基于一组代码的阶的阈值;基于所述块向量的所述分量的所述绝对值大于所述阈值,使用所述组代码来编码所述组语法元素中的第三语法元素,其指示所述块向量的所述分量的所述绝对值减基于所述组代码的阶的偏移;以及基于所述块向量的所述分量的所述绝对值大于零,编码所述组语法元素中的第四语法元素,其指示所述块向量的所述分量的所述值是正还是负。
在另一实例中,一种用于编码视频数据的装置包含:用于从所述当前视频数据块驻存于其中的图片中的视频数据的多个经先前编码块为当前视频数据块选择预测符块的装置;用于在经编码视频位流中且为所述当前视频数据块编码残差块和表示块向量的分量的值的一组语法元素的装置,所述块向量表示所述当前视频数据块与所述预测符块之间的移位,其中所述用于编码残差块和所述组语法元素的装置包含:用于编码所述组语法元素中的第一语法元素的装置,所述第一语法元素指示所述块向量的所述分量的绝对值是否大于零;用于基于所述块向量的所述分量的所述绝对值大于零来编码所述组语法元素中的第二语法元素的装置,所述第二语法元素指示所述块向量的所述分量的所述绝对值是否大于基于一组代码的阶的阈值;用于基于所述块向量的所述分量的所述绝对值大于所述阈值,使用所述组代码来编码所述组语法元素中的第三语法元素的装置,所述第三语法元素指示所述块向量的所述分量的所述绝对值减基于所述组代码的阶的偏移;以及用于基于所述块向量的所述分量的所述绝对值大于零来编码所述组语法元素中的第四语法元素的装置,所述第四语法元素指示所述块向量的所述分量的所述值是正还是负。
在另一实例中,一种用于编码或解码视频数据的装置包含:存储器,其经配置以存储与当前视频数据块相关联的数据;以及一或多个处理器。在此实例中,所述一或多个处理器经配置以:作为帧内块复制的一部分,确定用于当前视频数据块的块向量,其中所述块向量的分量表示所述当前视频数据块与当前块驻存于其中的图片中的预测符视频数据块之间的移位;至少通过处理器来确定所述块向量的所述分量的值,所述处理器经配置以:确定第一语法元素,其指示所述块向量的所述分量的绝对值是否大于零;响应于所述块向量的所述分量的所述绝对值大于零,确定第二语法元素,其指示所述块向量的所述分量的所述绝对值是否大于基于一组代码的阶的阈值;响应于所述块向量的所述分量的所述绝对值大于所述阈值:确定所述组语法元素中的第三语法元素,其指示所述块向量的所述分量的所述绝对值减基于所述组代码的阶的偏移;以及确定使用所述组代码来编码或解码所述第三语法元素;以及响应于所述块向量的所述分量的所述绝对值大于零,确定第四语法元素,其指示所述块向量的所述分量的所述值是正还是负;以及基于所述预测符视频数据块和残差块来重构所述当前视频数据块。
在另一实例中,一种计算机可读存储媒体存储指令,所述指令在被执行时,致使装置的一或多个处理器至少通过以下步骤来编码或解码当前视频数据块:作为帧内块复制的一部分,为当前视频数据块确定块向量,其中所述块向量的分量表示所述当前视频数据块与当前块驻存于其中的图片中的预测符视频数据块之间的移位;确定所述块向量的所述分量的值,其中致使所述一或多个处理器确定所述块向量的所述分量的所述值的所述指令包括致使所述装置的一或多个处理器进行以下动作的指令:确定第一语法元素,其指示所述块向量的所述分量的绝对值是否大于零;响应于所述块向量的所述分量的所述绝对值大于零,确定第二语法元素,其指示所述块向量的所述分量的所述绝对值是否大于基于一组代码的阶的阈值;响应于所述块向量的所述分量的所述绝对值大于所述阈值:确定所述组语法元素中的第三语法元素,其指示所述块向量的所述分量的绝对值减基于所述组代码的阶的偏移;以及确定使用所述组代码来编码或解码所述第三语法元素;以及响应于所述块向量的所述分量的所述绝对值大于零,确定第四语法元素,其指示所述块向量的所述分量的所述值是正还是负;以及基于所述预测符视频数据块和残差块来重构所述当前视频数据块。
在附图和以下描述中陈述本发明的一或多个方面的细节。本发明中所描述的技术的其它特征、目标和优点将从描述和图式且从所附权利要求书显而易见。
附图说明
图1是说明可利用本发明中所描述的技术的实例视频编码和解码系统的框图。
图2是说明可实施本发明中描述的技术的实例视频编码器的框图。
图3是说明可实施本发明中描述的技术的实例视频解码器的框图。
图4是说明帧内块复制(BC)技术的概念图。
图5是说明视频解码器根据本发明的一或多种技术来解码识别当前块的预测符块的块向量的实例操作的流程图。
图6是说明视频解码器根据本发明的一或多种技术来解码识别当前块的预测符块的块向量的实例操作的进一步细节的流程图。
图7是说明视频编码器根据本发明的一或多种技术来编码识别当前块的预测符块的块向量的实例操作的流程图。
图8是说明视频编码器根据本发明的一或多种技术来编码识别当前块的预测符块的块向量的实例操作的进一步细节的流程图。
具体实施方式
视频序列一般表示为图片序列。通常,使用基于块的译码技术来译码个别图片中的每一者。也就是说,将每一图片划分成若干块,且个别地译码所述块中的每一者。译码视频数据块通常涉及为块和译码残差值中的像素形成所预测值。使用一或多个预测性块中的像素样本来形成所预测值。残差值表示原始块的像素与经预测像素值之间的差。具体来说,原始视频数据块包含像素值的阵列,且经预测块包含经预测像素值的阵列。所述残差值表示原始块的像素值与经预测像素值之间的逐像素差。
用于视频数据块的预测技术一般分类为帧内预测和帧间预测。帧内预测(或空间预测)一般涉及从同一图片内的相邻经先前译码块的像素值来预测所述块。帧间预测或时间预测一般涉及从一或多个先前经译码图片的像素值来预测所述块。
例如远程桌面、远程游戏、无线显示器、车用信息娱乐、云计算等许多应用在日常生活中正变得常规。这些应用中的视频内容通常是自然内容、文本、人工图形等的组合。在文本和人工图形区中,通常存在重复的图案(例如字符、图标、符号等)。帧内块复制(BC)是可使视频译码器能够去除此种冗余且改进图片内译码效率的技术。在一些情况下,帧内BC替代地可被称作帧内运动补偿(MC)。
为了使用帧内BC技术来预测当前视频数据块,视频译码器可确定块向量,其识别与所述当前视频数据块在相同的图片内的预测性视频数据块(即,先前经译码视频数据块)。作为一个实例,视频编码器可选择所述预测性块作为找到的与所述当前视频数据块接近匹配的先前经译码视频数据块,确定指示所述预测性块相对于当前块的位置的块向量的值,且编码所述块向量的所述值的表示。作为另一实例,视频解码器可接收块向量的值的经编码表示,所述块向量指示预测性块相对于当前块的位置,且解码所述表示以确定所述块向量的所述值。
在一些实例中,由语法元素表示的块向量的分量的值可为所述分量的实际值。举例来说,在其中块向量的分量的值为负七的实例中,所述分量的实际值可为负七。在一些实例中,由所述语法元素表示的块向量的分量的值可为所述分量的差分值,其对应于所述分量的预测符(例如默认值、所述分量的先前值、来自相邻块的分量的值)与所述分量的实际值之间的差。所述差分值可被称为块向量差(BVD)。在一些实例中,视频编码器可通过将所述分量的实际值从所述分量的预测符减去来确定所述分量的差分值。类似地,在一些实例中,视频解码器可通过将所述分量的差分值与所述分量的预测符相加来确定所述分量的实际值。
在一些实例中,与仅编码块向量的值而不压缩相反,视频编码器可实施压缩方案,以通过产生共同表示块向量的值的多个语法元素来编码所述块向量的所述值,且视频解码器可实施互补压缩方案来将所述多个语法元素解码成所述块向量的值。在一些实例中,例如在先前HEVC范围扩展标准草案中,如在弗林(Flynn)等人的“高效视频译码(HEVC)范围扩展文本说明书:草案6”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的文献:JCTVC-P1005_v1,JCT-VC中,第16次会议:美国圣何塞,2014年1月9到17日(下文“JCTVC-P1005”),在HEVC中,可使用运动向量差(MVD)译码方法来编码用于帧内BC的向量(例如块向量)。
在HEVC(如JCTVC-P1005中所描述)中的MVD译码方法中,使用四个语法元素:abs_mvd_greater0_flag、abs_mvd_greater1_flag、abs_mvd_minus2和mvd_sign_flag来译码MVD。语法元素abs_mvd_greater0_flag指示MVD的绝对值是否大于零,且使用具有长度一的固定长度码来编码。语法元素abs_mvd_greater1_flag指示MVD的绝对值是否大于一,且使用具有长度一的固定长度码来编码。语法元素abs_mvd_minus2指示MVD的绝对值减二,且使用第一阶指数哥伦布代码来编码。语法元素mvd_sign_flag指示MVD的值是正还是负,且使用具有长度一的固定长度码来编码。
然而,归因于来自常规帧间运动向量场的帧内BC块向量场的不同特性,此译码方法可能不是高效的。举例来说,观察到随着BVD值增加,BVD值的分布几乎是平坦的且缓慢递减,而MVD值的分布随着MVD值增加而快速下降。在一些实例中,出现BVD值和MVD值的不同分布,因为使用图案匹配来确定BV,而使用时间匹配来确定MV。
上文所述的HEVC中的MVD译码方法较适合MVD值,因为最大MVD值介于零与五之间。明确地说,第一阶指数哥伦布代码较适合于译码MVD的绝对值减二,因为较低阶指数哥伦布代码较适合于编码较小的值。然而,BVD值通常不是这样群集的,且BVD的值通常大于MVD的值。举例来说,BVD的值可从零到大至图片大小(例如500)变动。由此,可能希望视频编码器实施利用BVD值的分布的压缩方案。
根据本发明的一或多种技术,视频译码器可实施利用BVD的平坦分布的压缩方案。举例来说,视频译码器可实施使用高阶代码(例如高阶指数哥伦布代码)来表示BVD的所述值的压缩方案。举例来说,视频译码器可通过译码指示BVD的绝对值是否大于零的语法元素来译码BVD的值。在BVD的绝对值大于零的情况下,视频译码器可译码指示BVD的绝对值是否大于阈值的语法元素,所述可基于一组代码的阶,所述代码例如为一组指数哥伦布代码。如下文所论述,在一些实例中,可使用所述组代码来编码BVD的绝对值的表示。在一些实例中,所述组代码的阶可相对较高,例如四,但可使用代码的其它阶(例如1、2、3或5)。在一些实例中,阈值可为左移位了所述代码的阶(例如1<<阶)的数1。在一些实例中,所述代码的阶可为预定的。在其它实例中,视频译码器可译码指示所述阶的语法元素。
在BVD的绝对值大于所述阈值的情况,视频译码器可使用所述组代码来译码指示BVD的绝对值减偏移的语法元素,所述偏移可基于所述组代码的阶。在一些实例中,所述偏移可为阈值减一(例如偏移=阈值-1)。在所述BVD的绝对值不大于阈值的情况下,视频译码器可使用具有等效于所述组代码的阶的长度的固定长度代码来译码指示BVD的绝对值减一的语法元素。另外,在BVD的绝对值大于零的情况下,视频译码器可译码第四语法元素,其指示BVD的所述值是正还是负。以此方式,视频译码器可减少用以译码块向量的数据的量。
在一些实例中,所述块向量可具有多个组件。举例来说,所述块向量可具有水平分量(x)和垂直分量(y)。由此,在一些实例中,视频编码器可通过产生共同地表示块向量的相应分量的值的相应多个语法元素来编码所述块向量的每一相应分量的值,且视频解码器可实施互补压缩方案来将所述多个语法元素解码为所述块向量的所述组件的相应值。
图1是说明可利用用于对视频数据进行滤波的技术的实例视频编码和解码系统10的框图。如图1中所示,系统10包含提供稍后将由目的地装置14解码的经编码视频数据的源装置12。明确地说,源装置12经由计算机可读媒体16将视频数据提供到目的地装置14。源装置12和目的地装置14可包括多种多样的装置中的任一者,包含桌上型计算机、笔记型(即,膝上型)计算机、平板计算机、机顶盒、电话手持机(例如所谓的“智能”电话)、所谓的“智能”平板计算机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、视频串流装置或类似者。在一些情况下,可装备源装置12和目的地装置14以用于无线通信。
目的地装置14可经由计算机可读媒体16接收待解码的经编码视频数据。计算机可读媒体16可包括能够将经编码的视频数据从源装置12移动到目的地装置14的任一类型的媒体或装置。在一个实例中,计算机可读媒体16可包括通信媒体,以使源装置12能够实时地将经编码的视频数据直接发射到目的地装置14。可根据通信标准(例如,无线通信协议)来调制经编码的视频数据,并将其发射到目的地装置14。通信媒体可包括任何无线或有线通信媒体,例如射频(RF)频谱或一或多个物理传输线。通信媒体可形成基于包的网络(例如,局域网、广域网或全球网络,例如因特网)的部分。通信媒体可包含路由器、交换器、基站或任何其它可用于促进从源装置12到目的地装置14的通信的设备。
在一些实例中,经编码数据可从输出接口22输出到存储装置32。类似地,可通过输入接口从存储装置32存取经编码数据。存储装置32可包含多种分布式或本地存取的数据存储媒体中的任一者,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、快闪存储器、易失性或非易失性存储器或用于存储经编码视频数据的任何其它合适的数字存储媒体。在另一实例中,存储装置32可对应于文件服务器或另一可存储源装置12所产生的经编码视频的中间存储装置。
目的地装置14可经由流式传输或下载从存储装置32存取所存储的视频数据。文件服务器可为能够存储经编码视频数据并将经编码视频数据发射到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接式存储(NAS)装置或本地磁盘驱动器。目的地装置14可通过任何标准数据连接(包含因特网连接)来存取经编码视频数据。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等),或适合于存取存储在文件服务器上的经编码视频数据的两者的组合。经编码视频数据从存储装置32的发射可为流式传输、下载传输或其组合。
本发明的技术未必限于无线应用或设定。所述技术可应用于视频译码并且支持多种多媒体应用中的任一者,例如空中电视广播、有线电视发射、卫星电视发射、因特网流式视频发射(例如动态自适应HTTP流式传输(DASH))、编码到数据存储媒体上的数字视频,存储在数据存储媒体上的数字视频的解码,或其它应用。在一些实例中,系统10可经配置以支持单向或双向视频传输,以支持例如视频流式传输、视频重放、视频广播和/或视频电话等应用。
在图1的实例中,源装置12包含视频源18、视频编码器20和输出接口22。目的地装置14包含输入接口28、视频解码器30和显示装置31。根据本发明,源装置12的视频编码器20可经配置以应用用于在视频译码中执行变换的技术。在其它实例中,源装置和目的地装置可包含其它组件或布置。举例来说,源装置12可从外部视频源18(例如外部相机)接收视频数据。同样,目的地装置14可与外部显示装置介接,而非包含集成显示装置。
图1的所说明系统10仅为一个实例。用于在视频译码中执行帧内BC的技术可由任何数字视频编码和/或解码装置执行。源装置12和目的地装置14仅为源装置12产生经译码视频数据以用于发射到目的地装置14的所述译码装置的实例。在一些实例中,装置12、14可以实质上对称的方式操作,使得装置12、14中的每一者包含视频编码和解码组件。因此,系统10可支持视频装置12、14之间的单向或双向视频发射,以例如用于视频流式传输、视频重放、视频广播或视频电话。
源装置12的视频源18可包含视频捕获装置,例如摄像机、含有先前所捕获视频的视频存档和/或用于从视频内容提供者接收视频的视频馈送接口。作为另一替代方案,视频源18可产生基于计算机图形的数据作为源视频,或实况视频、所存档视频与计算机产生的视频的组合。在一些情况下,如果视频源18为摄像机,那么源装置12和目的装置14可形成所谓的相机电话或视频电话。然而,如上文所提到,本发明中所描述的技术可大体上适用于视频译码,且可应用于无线和/或有线应用。在每一情况下,所捕获、预先捕获或计算机产生的视频可由视频编码器20编码。经编码的视频信息可接着由输出接口22输出到计算机可读媒体16上。
计算机可读媒体16可包含瞬时媒体,例如无线广播或有线网络发射,或存储媒体(也就是说,非暂时性存储媒体),例如硬盘、快闪驱动器、压缩光盘、数字视频光盘、蓝光光盘或其它计算机可读媒体。在一些实例中,网络服务器(未图示)可从源装置12接收经编码视频数据,并且例如经由网络发射将经编码视频数据提供到目的地装置14。类似地,媒体生产设施(例如,光盘冲压设施)的计算装置可从源装置12接收经编码的视频数据,且生产含有经编码的视频数据的光盘。因此,在各种实例中,计算机可读媒体16可理解为包含各种形式的一或多个计算机可读媒体。
目的地装置14的输入接口28从计算机可读媒体16接收信息。计算机可读媒体16的信息可包含由视频编码器20定义的语法信息,所述语法信息也被视频解码器30使用,其包含描述块和其它经译码单元(例如GOP)的特性和/或处理的语法元素。显示装置31将经解码视频数据显示给用户,并且可包括多种显示装置中的任一者,例如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。
在适用时,视频编码器20和视频解码器30各自可实施为多种合适的编码器或解码器电路中的任一者,例如一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑电路、软件、硬件、固件或其任何组合。当所述技术部分在软件中实施时,装置可将用于所述软件的指令存储于合适的非暂时性计算机可读媒体中,并使用一或多个处理器来执行硬件中的指令以实施本发明的技术。视频编码器20和视频解码器30中的每一者可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可集成为组合式视频编码器/解码器(编解码器)的部分。包含视频编码器20和/或视频解码器30的装置可包括集成电路、微处理器和/或无线通信装置,例如,蜂窝式电话。
尽管图1中未图示,但在一些方面中,视频编码器20和视频解码器30可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,来处置共同数据流或单独数据流中的音频和视频两者的编码。如果适用,那么多路复用器-多路分用器单元可符合ITU H.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。
本发明可大体涉及视频编码器20将某些信息“发信号通知”到例如视频解码器30的另一装置。然而,应理解,视频编码器20可通过使某些语法元素与视频数据的各种经编码部分相关联来发信号通知信息。也就是说,视频编码器20可通过将某些语法元素存储到视频数据的各种经编码部分的标头来“发信号通知”数据。在一些情况下,此些语法元素可在由视频解码器30接收和解码之前,经编码和存储(例如,存储到存储装置32)。因而,术语“发信号通知”通常可指代用于解码经压缩的视频数据的语法或其它数据的通信,不论所述通信是实时或准实时发生还是在一段时间内发生,例如可能在编码时将语法元素存储到媒体上的时候发生,接着可在存储到此媒体之后的任何时间由解码装置检索。
视频编码器20和视频解码器30可根据视频压缩标准来操作,例如高效视频译码(HEVC)或ITU-T H.265标准,包含其范围扩展、多视图扩展(MV-HEVC)和可缩放扩展(SHVC)最近已由ITU-T视频编码专家组(VCEG)和ISO/IEC运动图片专家组(MPEG)的视频译码联合合作小组(JCT-VC)以及3D视频译码扩展开发联合合作小组(JCT-3V)开发。HEVC的版本1在2013年1月25日完成,且规范在2013年4月13日被正式批准为标准,且可从www.itu.Int/rec/T-REC-H.265-201304-S/en获得。最新HEVC草案规范可从phenix.int-evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC-N1003-v1.zip获得。
虽然本发明的技术不限于任何特定译码标准,但这些技术可与HEVC标准有关,且确切地说与HEVC范围扩展(例如屏幕内容译码(SCC))有关。HEVC标准化努力是基于被称作HEVC测试模型(HM)的视频译码装置的模型。HM根据(例如)ITU-T H.264/AVC假定视频译码装置相对于现有装置的若干额外能力。举例来说,虽然H.264提供了九个帧内预测编码模式,但HM可提供多达三十五个帧内预测编码模式。
一般来说,HM的工作模型描述视频图片可划分成包含亮度和色度样本两者的一连串树块或最大译码单元(LCU)。位流内的语法数据可界定LCU(其是就像素数目来说的最大译码单位)的大小。切片包含多个连续译码树单元(CTU)。CTU中的每一者可包括亮度样本的译码树块、色度样本的两个对应的译码树块,以及用以对译码树块的样本进行译码的语法结构。在单色图片或具有三个单独颜色平面的图片中,CTU可包括单个译码树块以及用于对所述译码树块的样本进行译码的语法结构。
视频图片可被分割成一或多个切片。每一树块可根据四叉树分裂成若干译码单元(CU)。一般来说,四叉树数据结构包含每CU一个节点,其中一个根节点对应于所述树块。如果一个CU分裂成四个子CU,那么对应于CU的节点包含四个叶节点,其中的每一者对应于所述子CU中的一者。CU可包括具有亮度样本阵列、Cb样本阵列和Cr样本阵列的图片的亮度样本的译码块和色度样本的两个对应译码块,以及用于对译码块的样本进行译码的语法结构。在单色图片或具有三个单独颜色平面的图片中,CU可包括单个译码块以及用于对所述译码块的样本进行译码的语法结构。译码块是样本的NxN块。
四分树数据结构的每一节点可提供用于对应CU的语法数据。举例来说,四叉树中的节点可包含分裂旗标,其指示对应于所述节点的所述CU是否分裂成若干子CU。用于CU的语法元素可递归地定义,且可取决于CU是否分裂成若干子CU。如果CU未进一步分裂,那么将其称作叶CU。在本发明中,叶CU的四个子CU也将被称作叶CU,即使不存在原始叶CU的明确分裂时也是如此。举例来说,如果16×16大小的CU不进一步分裂,那么四个8×8子CU也将被称作叶CU,尽管16×16CU从未分裂。
HEVC标准中的CU具有类似于H.264标准的宏块的目的。然而,CU并不具有大小区别。举例来说,树块可分裂成四个子节点(也称为子CU),且每一子节点又可为父节点,且可分裂成另外四个子节点。最后未分裂的子节点(被称作四叉树的叶节点)包括译码节点,也被称作叶CU。与经译码位流相关联的语法数据可定义树块可分裂的最大次数,被称作最大CU深度,且还可定义译码节点的最小大小。因此,位流还可定义最小译码单元(SCU)。本发明使用术语“块”来指HEVC的上下文中的CU、PU或TU中的任一者,或者其它标准的上下文中的类似数据结构(例如,其在H.264/AVC中的宏块和子块)。
CU包含译码节点和与所述译码节点相关联的预测单元(PU)和变换单元(TU)。CU的大小对应于译码节点的大小,并且形状必须是正方形。CU的大小范围可从8×8像素到具有64×64像素或更大像素的最大值的树块的大小。每一CU可含有一或多个PU和一或多个TU。
一般来说,PU表示对应于相对应的CU的全部或一部分的空间区域,并且可包含用于检索PU的参考样本的数据。此外,PU包含与预测有关的数据。举例来说,当PU经帧内模式编码时,用于PU的数据可包含在残差四分树(RQT)中,残差四分树可包含描述用于对应于PU的TU的帧内预测模式的数据。作为另一实例,当PU经帧间模式编码时,PU可包含定义PU的一或多个运动向量的数据。预测块可为在上面应用相同预测的样本的矩形(即,正方形或非正方形)块。CU的PU可包括图片的亮度样本的预测块、色度样本的两个对应预测块,以及用于对预测块样本进行预测的语法结构。在单色图像或具有三个单独彩色平面的图片中,PU可包括单个预测块,以及用以对预测块样本进行预测的语法结构。
在将变换(例如,离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换)应用于残差视频数据之后,TU可包含变换域中的系数。所述残差数据可对应于未经编码图片的像素与对应于PU的预测值之间的像素差。视频编码器20可形成包含用于CU的残差数据的TU,并且接着变换所述TU以产生用于CU的变换系数。变换块可为其上应用相同变换的样本的矩形块。CU的变换单元(TU)可包括亮度样本的变换块、色度样本的两个对应变换块,以及用以对变换块样本进行变换的语法结构。在单色图片或具有三个单独彩色平面的图片中,TU可包括单个变换块,以及用以对变换块样本进行变换的语法结构。
在变换之后,视频编码器20可执行变换系数的量化。量化大体上指代对变换系数进行量化以可能减少用以表示所述系数的数据的量从而提供进一步压缩的过程。量化过程可减少与系数中的一些或全部相关联的位深度。举例来说,n位值可在量化期间被下舍入到m位值,其中n大于m。
视频编码器20可扫描变换系数,从而从包含经量化变换系数的二维矩阵产生一维向量。扫描可经设计以将较高能量(并且因此较低频率)的系数放置在阵列的前面,并且将较低能量(并且因此较高频率)的系数放置在阵列的后面。在一些实例中,视频编码器20可利用预定义扫描阶来扫描经量化的变换系数,以产生可熵编码的串行化向量。在其它实例中,视频编码器20可执行自适应扫描。
在扫描经量化变换系数以形成一维向量之后,视频编码器20可例如根据上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵编码方法熵编码一维向量。视频编码器20还可熵编码与经编码视频数据相关联的语法元素以供视频解码器30在解码视频数据时使用。
视频编码器20可进一步向视频解码器30发送语法数据,例如基于块的语法数据、基于图片的语法数据和基于图片群组(GOP)的语法数据,例如在图片标头、块标头、片段标头或GOP标头中。GOP语法数据可描述相应GOP中的多个图片,并且图片语法数据可指示用于对对应图片进行编码的编码/预测模式。
在获得经译码视频数据后,视频解码器30可执行通常与相对于视频编码器20描述的编码遍次互逆的解码遍次。举例来说,视频解码器30可获得表示来自视频编码器20的经编码视频切片的视频块以及相关联的语法元素的经编码视频位流。视频解码器30可使用位流中所含有的数据来重构原始的未经编码视频序列。
许多应用(例如远程桌面、远程游戏、无线显示器、车用信息娱乐、云计算等)在日常个人生活中正变得常规。这些应用中的视频内容通常是自然内容、文本、人工图形等的组合。在文本和人工图形中,内容的区可包含重复图案(例如字符、图标和符号,提供几个实例)。帧内块复制(BC)是能够去除这种冗余,从而潜在地改进图片内译码效率的技术,(例如)如在庞(Pang)等人的“非RCE3:具有2-D MV的帧内运动补偿(Non-RCE3:Intra Motion Compensation with 2-D MVs)”中所描述,文献:ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的JCTVC-N0256,JCT-VC,第14次会议:维也纳,2013年7月25日到8月2日(下文“JCTVC-N0256”)。
如图2的实例中更详细地说明,对于使用帧内BC译码的当前译码单元(CU)(例如图4的当前视频块102),视频编码器20可从同一图片中的搜索区(例如图4的经重构区108)获得预测信号(例如图4的预测符块104)(其也可被称作“预测块”)。在一些情况下,视频编码器20可编码向量,例如图4的块向量106,其指示从当前CU移位的预测块的位置。在一些实例中,所述块向量可相对于当前CU的左上角的位置指示预测块的左上角的位置。在一些情况下,块向量还可被称为偏移向量、移位向量或运动向量。视频编码器20还可编码指示当前视频块的像素值与预测性块中的预测性样本之间的差异的残差数据。
如上文所论述,在先前HEVC范围扩展标准草案中,如JCTVC-P1005中所描述,在HEVC中使用运动向量差(MVD)译码方法来编码用于帧内BC的向量(例如图4的块向量106)。具体地说,如JCTVC-P1005中所描述,使用四个语法元素:abs_mvd_greater0_flag、abs_mvd_greater1_flag、abs_mvd_minus2和mvd_sign_flag来编码用于帧内BC的向量。语法元素abs_mvd_greater0_flag指示MVD的绝对值是否大于零,且使用具有长度一的固定长度码来编码。语法元素abs_mvd_greater1_flag指示MVD的绝对值是否大于一,且使用具有长度一的固定长度码来编码。语法元素abs_mvd_minus2指示MVD的绝对值减二,且使用第一阶指数哥伦布代码来编码。语法元素mvd_sign_flag指示MVD的值是正还是负,且使用具有长度一的固定长度码来编码。
然而,归因于来自常规帧间运动向量场的帧内BC块向量场的不同特性,此译码方法可能不是高效的。举例来说,观察到随着BVD值增加,BVD值的分布几乎是平坦的且缓慢递减,而MVD值的分布随着MVD值增加而快速下降。在一些实例中,出现BVD值和MVD值的不同分布,因为使用图案匹配来确定BV,而使用时间匹配来确定MV。
上文所述的HEVC中的MVD译码方法较适合MVD值,因为最大MVD值介于零与五之间。明确地说,第一阶指数哥伦布代码较适合于译码MVD的绝对值减二,因为较低阶指数哥伦布代码较适合于编码较小的值。然而,BVD值通常不是这样群集的,且BVD的值通常大于MVD的值。举例来说,BVD的值可从零到大至图片大小(例如500)变动。由此,可能希望视频编码器20和视频解码器30实施利用BVD值的分布的压缩方案。
根据本发明中描述的技术的一或多个方面,相对于使用HEVC的运动向量差(MVD)译码方法来编码块向量的值,视频编码器20可使用为BVD的特性定制的不同编码方法来编码BVD的值。举例来说,视频编码器20和视频解码器30可实施使用高阶代码(例如高阶指数哥伦布代码,例如第二、第三、第四、第五或更高阶)来表示BVD的值的压缩方案。举例来说,视频编码器20可通过译码指示BVD的绝对值是否大于零的语法元素来编码BVD的值。
在BVD的绝对值大于零的情况下,视频编码器20可编码指示BVD的绝对值是否大于阈值的语法元素,其可基于一组代码(例如一组指数哥伦布代码)的阶。在一些实例中,所述组代码的阶可相对较高,例如四,但可使用代码的其它阶(例如1、2、3或5)。在一些实例中,所述阈值可为左移位了所述代码的阶(例如1<<阶)的一。
在BVD的绝对值大于所述阈值的情况下,视频编码器20可使用所述组代码来编码指示BVD的绝对值减偏移的语法元素,所述偏移可基于所述组代码的阶。在一些实例中,所述偏移可为阈值减一(例如偏移=阈值-1)。在BVD的绝对值不大于所述阈值的情况下,视频编码器20可使用具有等效于所述组代码的阶的长度的固定长度代码,来编码指示BVD的绝对值减一的语法元素。另外,在BVD的绝对值大于零的情况下,视频编码器20可编码第四语法元素,其指示BVD的所述值是正还是负。以此方式,视频编码器20可减少用以译码BVD的数据的量。
在一些实例中,块向量(且在适用时,因此BVD)可具有单一分量。举例来说,视频编码器20可经配置以使用在同一图片中的所述当前视频数据块正上方或直接与所述当前视频数据块水平齐平的先前经译码视频数据块来预测当前视频块。换句话说,如果将视频数据的图片强加于2-D栅格上,那么每一视频数据块将占用x值和y值的唯一范围。因此,视频编码器20可基于仅共享相同组的x值(即,与当前视频块垂直齐平)或相同组的y值(即,与当前视频块水平齐平)的先前经译码的视频数据块来预测当前视频数据块。
在其中视频编码器20经配置以基于仅共享相同组的x值的先前编码的视频数据块来预测当前视频数据块实例中,视频编码器20可用识别仅共享相同组的x值的先前编码的视频数据块的预测块的单一分量来编码块向量。类似地,在其中视频编码器20经配置以基于仅共享相同组的y值的先前经译码的视频数据块来预测当前视频数据块的实例中,视频编码器20可用识别仅共享相同组的y值的先前编码的视频数据块的预测块的单一分量来编码块向量。
在一些实例中,所述块向量可具有多个分量。举例来说,如在JCTVC-N0256所描述,视频编码器20可确定和编码二维块向量,其识别与当前视频块相同的图片内的预测块。在任何情况下,二维块向量可具有水平(x)位移分量(例如图4的块向量106的水平位移分量112)和垂直(y)位移分量(例如图4的块向量106的垂直位移分量110),其中的每一者可为零或非零。水平位移分量表示预测性视频数据块或预测块与当前视频数据块之间的水平位移,并且垂直位移分量表示视频数据的预测块与当前视频数据块之间的垂直位移。
根据本发明的一或多种技术,视频编码器20可编码相应多个语法元素,其各自共同地表示块向量的每一分量的相应值。就是说,一组语法元素可表示块向量的水平位移分量,且另一组语法元素可表示所述块向量的垂直位移分量。对于块向量或BVD的每一分量,所述组语法元素可包含:第一语法元素,其指示所述块向量的相应分量的绝对值是否大于零;(在相应分量的绝对值大于零的情况下)第二语法元素,其指示相应分量的绝对值是否大于基于一组代码的阶的阈值;(在所述分量的绝对值大于阈值的情况下)第三语法元素,其指示所述相应分量的绝对值减偏移,所述偏移基于所述组代码的阶;以及(在所述相应分量的绝对值大于零的情况下)第四语法元素,其指示所述相应分量的所述值的正负号。
在一些实例中,可能需要基于BVD的最大长度来编码BVD的分量的值。举例来说,一旦已知所述分量的最大长度,就可使用具有基于最大长度确定的长度的固定长度码来更高效地编码所述值。
根据本发明的一或多种技术,在一些实例中,相对于使用上文所述的四个语法元素来编码BVD的值,视频编码器20可使用具有基于BVD的最大长度确定的长度的固定长度码来编码BVD的所述值。举例来说,视频编码器20可基于一个或多个参数来确定BVD的最大长度。虽然视频编码器20可能已经知晓用于当前块的BVD的实际值,但视频编码器20仍可使用解码器处可用的参数来确定最大长度,即为了避免编码器/解码器失配。视频编码器20可用来确定最大长度的一些实例参数包含但不限于当前块的位置、块向量预测符的位置以及图片边界。
视频编码器20可基于所述所确定的最大长度来确定所述固定长度码的长度。在一些实例中,视频编码器20可根据下文的等式(1)来确定固定长度码的长度,其中Length(长度)是固定长度码的长度,且maxBVDlength是BVD的所述所确定的最大长度。视频编码器20可使用具有所述所确定的长度的固定长度码来编码所述分量的所述值。
Length=Ceil(log2(maxBVDlength))
等式(1)
在一些实例中,视频编码器20可使用上文所述的技术的组合。在此些实例中,视频编码器20可编码指示是否使用所述四个语法元素或具有基于BVD的最大长度确定的长度的固定长度码来编码BVD的值的语法元素。
在一些实例中,例如其中视频编码器20编码具有水平分量和垂直分量的块向量(即,其中视频编码器20编码BVDx和BVDy),视频编码器20可基于所述分量中的一者来编码另一者。举例来说,视频编码器20可编码BVDx且基于BVDx来编码BVDy(或反之亦然)。作为一个实例,视频编码器20可基于BVDx的值、正负号或特定二进制值来编码BVDy的值、正负号或特定二进制值(或反之亦然)。
视频解码器30还可经配置以使用与上文相对于视频编码器20所述的那些技术大体上互逆的技术。在这方面中,视频解码器30可经配置以执行帧内BC过程,以使用块向量所识别的预测块来解码图片的经译码当前块。
根据本发明中描述的技术的一或多个方面,相对于在HEVC中使用运动向量差(MVD)译码方法来解码块向量的值,视频解码器30可使用根据BVD的特性定制的解码方法来解码BVD的值。举例来说,为了确定BVD的值,视频解码器30可解码第一语法元素,以确定BVD的绝对值是否大于零。在BVD的绝对值大于零的情况下,视频解码器30可解码第二语法元素,以确定BVD的绝对值是否大于阈值,所述阈值可基于一组代码(例如一组指数哥伦布代码)的阶。在一些实例中,所述组代码的阶可相对较高,例如四,但可使用代码的其它阶(例如1、2、3或5)。在一些实例中,所述阈值可为左移位了所述代码的阶(例如1<<阶)的一。在BVD的绝对值大于所述阈值的情况下,视频解码器30可使用所述组代码来解码第三语法元素,以确定所述块向量的分量的绝对值减偏移,所述偏移可基于所述组代码的阶。在一些实例中,所述偏移可为阈值减一(例如偏移=阈值-1)。在BVD的绝对值不大于所述阈值的情况下,视频解码器30可使用具有等效于所述组代码的阶的长度的固定长度代码来解码所述组语法元素中的第三语法元素,以确定所述块向量的分量的绝对值减一。另外,在BVD的绝对值大于零的情况下,视频解码器30可解码第四语法元素,以确定BVD的值是正还是负。以此方式,视频解码器30可通过使用根据BVD的特性定制的编码方法来解码块向量的所述值。
视频解码器30可使用块向量所识别的预测符块来解码当前块。举例来说,视频解码器30可基于表示所述预测块与当前块之间的像素差的残差块来产生当前块。
图2是说明可实施本发明中描述的技术的实例视频编码器的框图。视频编码器20可执行视频切片内的视频块的帧内和帧间译码。帧内译码依靠空间预测来减少或去除给定视频帧或图片内的视频中的空间冗余。帧间译码依靠时间或视图间预测来减少或去除视频序列的邻近帧或图片内的视频中的冗余。帧内模式(I模式)可指若干基于空间的压缩模式中的任一者。例如单向预测(P模式)或双向预测(B模式)的帧间模式可包含若干基于时间的压缩模式中的任一者。视频编码器20还可经配置以利用用于对来自同一图片内的预测性视频数据块的视频数据块的帧内预测的模式,例如如本文中所描述的帧内BC模式。
在图2的实例中,视频编码器20包含分割单元35、预测处理单元41、经重构区存储器64、滤波器处理单元66、参考图片存储器68、求和器50、变换处理单元52、量化处理单元54和熵编码单元56。预测处理单元41包含运动估计单元42、运动补偿单元44、帧内预测处理单元46和块内复制(帧内BC)单元48。为了视频块重构,视频编码器20还包含逆量化处理单元58、逆变换处理单元60以及求和器62。
在各种实例中,可给视频编码器20的单元分派任务以执行本发明的技术。并且,在一些实例中,本发明的技术可在视频编码器20的单元中的一或多者当中进行划分。举例来说,帧内BC单元48可独自或结合视频编码器的其它单元来执行本发明的技术,例如运动估计单元42、运动补偿单元44、帧内预测处理单元46、经重构区存储器64和熵编码单元56。在一些实例中,视频编码器20可不包含帧内BC单元48,且帧内BC单元48的功能性可由预测处理单元41的其它组件执行,例如运动估计单元42和/或运动补偿单元44。
如图2中所示,视频编码器20接收视频数据,且分割单元35将所述数据分割成视频块。此分割还可包含分割成切片、瓦片或其它较大单元,以及例如根据LCU及CU的四叉树结构的视频块分割。视频编码器20一般说明编码待编码的视频切片内的视频块的组件。所述切片可分成多个视频块(并且可能分成被称作瓦片的视频块集合)。
预测处理单元41可基于速率失真结果(例如,译码位速率和失真层级)选择用于当前视频块的多个可能的译码模式中的一者,例如多个帧内译码模式中的一者、多个帧间译码模式中的一者,或根据本发明中描述的技术的帧内BC模式。预测处理单元41可将所得预测性块提供到求和器50以产生残差块数据,且提供到求和器62以重构当前块来用于预测其它视频块,例如作为参考图片。
预测处理单元41内的帧内预测处理单元46可相对于与待译码的当前块在相同帧或切片中的一或多个相邻块执行当前视频块的帧内预测性译码,以提供空间压缩。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一或多个参考图片中的一或多个预测性块来执行当前视频块的帧间预测性译码以提供时间压缩。
运动估计单元42可经配置以根据用于视频序列的预定模式来确定用于视频切片的帧间预测模式。运动估计单元42和运动补偿单元44可高度集成,但出于概念的目的分别加以说明。运动估计单元42执行的运动估计是产生运动向量的过程,所述过程估计视频块的运动。举例来说,运动向量可指示当前视频帧或图片内的视频块的PU相对于参考图片内的预测性块的移位。类似地,根据本发明的技术的用于帧内BC的块向量指示当前视频帧或图片内的视频块的PU相对于同一帧或图片内的预测性块的位移。帧内BC单元48可以类似于运动估计单元42确定运动向量来进行帧间预测的方式来确定用于帧内BC译码的向量(例如块向量),或可利用运动估计单元42来确定所述块向量。
例如由运动估计单元42和/或帧内BC单元识别来进行帧间预测或帧内BC预测的预测性块是发现在PU与所述预测性块之间的像素差方面与待译码的视频块的PU接近匹配的块。像素差可由绝对差总和(SAD)、平方差总和(SSD)或其它差度量确定。在一些实例中,视频编码器20可计算存储在参考图片存储器68中的参考图片或存储在经重构区存储器64中的当前图片的经重构区的子整数像素位置的值。举例来说,视频编码器20可内插参考图片的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42和/或帧内BC单元48可相对于全像素位置和分数像素位置来执行对预测性块的搜索,且输出具有分数像素精确度的向量。
运动估计单元42通过比较PU的位置与参考图片的预测性块的位置来计算用于经帧间译码切片中的视频块的PU的运动向量。参考图片可选自第一参考图片列表(列表0或RefPicList0)或第二参考图片列表(列表1或RefPicList1),参考图片列表中的每一者识别存储在参考图片存储器68中的一或多个参考图片。运动估计单元42将所计算的运动向量发送到熵编码单元56和运动补偿单元44。
通过运动补偿单元44执行的运动补偿可涉及基于通过运动估计(可能执行对子像素精确度的内插)确定的运动向量获取或产生预测性块。在接收到当前视频块的PU的运动向量后,运动补偿单元44可在参考图片列表中的一者中定位所述运动向量指向的预测性块。
在一些实例中,帧内BC单元48可以类似于上文相对于运动估计单元42和运动补偿单元44所述的方式来产生向量并提取预测性块,但其中所述预测性块与当前块在相同的图片或帧中,且所述向量被称作块向量,与运动向量形成对照。在其它实例中,帧内BC单元48可完全或部分地使用运动估计单元42和运动补偿单元44来根据本文所述的技术执行针对帧内BC预测的此类功能。在任一情况下,对于帧内BC,预测性块可为被发现在像素差方面接近地匹配待译码块的块,其可由绝对差总和(SAD)、平方差总和(SSD)或其它差异度量确定,且块的识别可包含用于子整数像素位置的值的计算。
无论预测性视频块是来自根据帧内BC预测的同一图片还是根据帧间预测的不同图片,视频编码器20都可通过从正译码的当前视频块的像素值减去预测性块的像素值而形成残差视频块,从而形成像素差值。所述像素差值形成所述块的残差数据,且可包含亮度分量差和色度分量差两者。求和器50表示执行此减法运算的一或多个组件。帧内BC单元48和/或运动补偿单元44还可产生与所述视频块和所述视频切片相关联的语法元素来供视频解码器(例如视频解码器30)用来解码所述视频切片的视频块。所述语法元素可包含例如界定用以识别预测性块的向量的语法元素、指示预测模式的任何旗标或相对于本发明的技术描述的任何其它语法。
帧内预测处理单元46可对当前块进行帧内预测,作为运动估计单元42和运动补偿单元44所执行的帧间预测或帧内BC单元48所执行的帧内BC预测的替代方案,如上文所描述。明确地说,帧内预测处理单元46可确定用以编码当前块的帧内预测模式。在一些实例中,帧内预测处理单元46可(例如)在单独的编码遍次期间使用各种帧内预测模式来对当前视频块进行编码,且帧内预测处理单元46(或在一些实例中,预测处理单元41)可从所测试的模式选择适当的帧内预测模式来使用。举例来说,帧内预测处理单元46可使用速率失真分析来计算各种受测帧内预测模式的速率失真值,并在所述受测模式当中选择具有最佳速率失真特性的帧内预测模式。速率失真分析一般确定经编码块与经编码以产生所述经编码块的原始的未经编码块之间的失真(或误差)的量,以及用于产生经编码块的位速率(也就是说,位数目)。帧内预测处理单元46可根据用于各种经编码块的失真和速率来计算比率,以确定哪个帧内预测模式对于所述块展现最佳速率失真值。
在任何情况下,在选择了用于块的帧内预测模式之后,帧内预测处理单元46可将指示用于所述块的选定帧内预测模式的信息提供到熵编码单元56。熵编码单元56可根据本发明的技术对指示所述选定帧内预测模式的信息进行编码。视频编码器20在所发射的位流中可包含配置数据,其可包含多个帧内预测模式索引表和多个经修改的帧内预测模式索引表(也称为码字映射表),对用于各种块的上下文进行编码的定义,以及对最可能帧内预测模式、帧内预测模式索引表和经修改的帧内预测模式索引表的指示以用于所述上下文中的每一者。
在预测处理单元41经由帧间预测、帧内预测或帧内BC预测产生当前视频块的预测性块之后,视频编码器20例如经由求和器50通过从当前视频块减去所述预测性块来形成残差视频块。残差块中的残差视频数据可包含在一或多个TU中并应用于变换处理单元52。变换处理单元52使用例如离散余弦变换(DCT)或概念上类似的变换等变换来将残差视频数据变换成残差变换系数。变换处理单元52可将残差视频数据从像素域转换到变换域,例如频域。
变换处理单元52可将所得变换系数发送到量化处理单元54。量化处理单元54量化所述变换系数以进一步减小位速率。量化过程可减少与系数中的一些或全部相关联的位深度。可通过调节量化参数来修改量化的程度。在一些实例中,量化处理单元54可接着执行对包含经量化变换系数的矩阵的扫描。替代地,熵编码单元56可执行扫描。
在量化之后,熵编码单元56对经量化变换系数进行熵编码。举例来说,熵编码单元56可执行上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵译码方法或技术。熵编码单元56可执行本文所述的技术中的任一者来对语法元素进行二进制化和编码,包含向量分量、旗标和其它语法元素,用于根据帧内BC模式的预测。在由熵编码单元56进行熵编码之后,可将经编码视频位流发射到视频解码器30,或经存档以供视频解码器30稍后发射或检索。
逆量化处理单元58和逆变换处理单元60分别应用逆量化和逆变换,以在像素域中重构残差块供稍后用作用于其它视频块的预测的参考块。运动补偿单元44和/或帧内BC单元48可通过将残差块加到参考图片列表中的一者内的参考图片中的一者的预测性块来计算参考块。运动补偿单元44和/或帧内BC单元48也可将一或多个内插滤波器应用于经重构残差块,以计算用于运动估计的子整数像素值。
求和器62将经重构残差块与由运动补偿单元44和/或帧内BC单元48产生的运动补偿预测块相加以产生经重构视频块。经重构区存储器64根据视频编码器20对用于当前视频块的帧内BC(例如帧内BC单元48)的经重构区的定义来存储经重构视频块,如本文所述。经重构区存储器64可存储尚未由滤波器处理单元66环路内滤波的经重构视频块。求和器62可与经重构区存储器64并行地将经重构视频块提供到滤波器处理单元66,或当不再需要帧内BC的经重构区时,经重构区存储器64可将经重构视频块释放到滤波器处理单元66。在任一情况下,帧内BC单元48可搜索经重构区存储器64中的经重构视频块,以在与当前视频块相同的图片中寻找预测性视频块来预测当前视频块。
滤波器处理单元66可对经重构视频块执行环路内滤波。环路内滤波可包含去块滤波以对块边界进行滤波以从经重构视频移除成块假影。环路内滤波还可包含样本自适应偏移(SAO)滤波,来改进经重构视频。其中一些可经环路内滤波的经重构块可存储在参考图片存储器68中作为参考图片。参考图片可包括可由运动估计单元42和运动补偿单元44用作预测性块以帧间预测后续视频帧或图片中的块的经重构块。
所述块向量可为包含水平分量和垂直分量的二维块向量,或所述块向量可为包含水平分量或垂直分量的一维块向量。水平分量可表示预测性视频数据块与当前视频数据块之间的水平位移。垂直分量可表示预测性视频数据块与当前视频数据块之间的垂直移位。所述预测性视频数据块与所述当前视频数据块在相同的帧内。帧内BC单元48可将水平分量和垂直分量中的一者或两者的值输出到熵编码单元56。
根据本发明中描述的技术的一或多个方面,相对于在HEVC中使用运动向量差(MVD)译码方法来编码块向量的值,熵编码单元56可使用根据块向量的特性定制的编码方法来编码块向量的值。举例来说,熵编码单元56可编码一组语法元素,以表示块向量(或BVD)的分量的值。语法元素的含义和用以编码所述语法元素的编码技术可根据块向量的特性来定制。以此方式,本发明的技术可减少用以编码块向量的值的位数,这可改进译码效率。
举例来说,熵编码单元56可确定用于块向量的分量的第一语法元素。在一些实例中,所述第一语法元素可指示块向量分量的绝对值是否大于零。在此些实例中,第一语法元素可为二进制旗标(即,具有长度一的固定长度码),例如第一二进制值(即,“b0”),且可被称为intra_bc_abs_bvd_greater0_flag。熵编码单元56可确定块向量分量的绝对值。熵编码单元56可分析所述分量的绝对值,以确定其是否大于零(即,所述分量是否为非零)。在所述分量的绝对值大于零的情况下,熵编码单元56可确定第一语法元素为一。在所述分量的绝对值不大于零的情况下,熵编码单元56可确定第一语法元素为零。
在一些实例中,熵编码单元56可使用具有上下文的上下文自适应二进制算术译码(CABAC)来编码第一语法元素。在此类实例的一些实例中,熵编码单元56可用单独的上下文来编码用于水平分量的第一语法元素和用于垂直分量的第一语法元素两者。在此类实例的另一实例中,熵编码单元56可用相同的上下文来编码用于水平分量的第一语法元素和用于垂直分量的第一语法元素两者。
在一些实例中,例如在块向量的分量的绝对值为零的情况下(即,在块向量的分量的值维持在整数精度,且块向量的分量的绝对值不大于零的情况下),熵编码单元56可不进一步编码语法元素来表示块向量的分量的所述值。换句话说,在所述块向量的分量的绝对值为零的情况下,熵编码单元56可仅使用第一语法元素来编码所述块向量的所述分量的所述值,且可省略下文论述的第二、第三和第四语法元素。
熵编码单元56可确定用于所述块向量的所述分量的第二语法元素。在一些实例中,所述第二语法元素可指示块向量分量的绝对值是否大于阈值,所述阈值可基于一组代码的阶。在一些实例中,所述阈值可为左移位了所述代码的阶(例如1<<阶)的一。举例来说,在所述组代码是具有阶四的一组指数哥伦布代码的情况下,阈值可为16。在此些实例中,第二语法元素可为二进制旗标(即,具有长度一的固定长度码),例如第二二进制值(即,“b1”),且可被称为intra_bc_abs_bvd_greater16_flag。熵编码单元56可分析所述分量的绝对值,以确定其是否大于阈值。在所述分量的绝对值大于阈值的情况下,熵编码单元56可确定第二语法元素为一。在所述分量的绝对值不大于阈值的情况下,熵编码单元56可确定第二语法元素为零。
在一些实例中,熵编码单元56可使用具有上下文的上下文自适应二进制算术译码(CABAC)来编码第二语法元素。在此类实例的一些实例中,熵编码单元56可用单独的CABAC上下文来编码用于水平分量的第二语法元素和用于垂直分量的第二语法元素两者。在此类实例的另一实例中,熵编码单元56可用相同的上下文来编码用于水平分量的第二语法元素和用于垂直分量的第二语法元素两者。
熵编码单元56可确定用于块向量的分量的第三语法元素。取决于块向量的分量的绝对值是否大于阈值(即,用以确定第二语法元素的阈值),熵编码单元56可使用多种技术中的一者(例如固定长度代码、莱斯哥伦布代码或指数哥伦布代码)来编码第三语法元素。熵编码单元56可以旁路模式来编码第三语法元素。
作为一个实例,在块向量的分量的绝对值不大于阈值的情况下,熵编码单元56可使用具有等效于所述组代码的阶的长度的固定长度代码来编码第三语法元素,以表示所述分量的绝对值减一。举例来说,在所述分量的绝对值为14且所述组代码的阶为四的情况下,熵编码单元56可将所述分量的绝对值编码为1110(即,14-1的二进制表示)。在此些实例中,第三语法元素可为一连串二进制值(即,“b2-bn-1”),且可被称为intra_bc_abs_bvd_minus1。在一些实例中,固定长度代码可提供最大译码效率,因为所述分量的绝对值的最大值是已知的(即,上文所述的阈值)。
作为另一实例,在块向量的分量的绝对值大于阈值的情况下,熵编码单元56可使用所述组代码来编码第三语法元素,以表示所述分量的绝对值减偏移,所述偏移可基于所述组代码的阶。在一些实例中,所述偏移可为阈值减一(例如偏移=阈值-1)。举例来说,在所述分量的绝对值为30且所述组代码是阶四的一组指数哥伦布代码的情况下,所述偏移可为17,且熵编码单元56可将所述分量的绝对值与偏移之间的差(即,30-17=13)编码为针对13的第四阶指数哥伦布代码。在此些实例中,第三语法元素可为一连串二进制值(即,“b2-bn-1”),且可被称为intra_bc_abs_bvd_minus1。在一些实例中,高阶(例如第四阶)指数哥伦布代码可提供最大译码效率,因为所述分量的绝对值的最大值不是已知的,且具有相对平坦的概率分布。
在一些实例中,熵编码单元56可编码指示所述分量的正负号的第四语法元素。换句话说,第四语法元素可指示所述分量是正还是负。在此些实例中,第四语法元素可为二进制旗标(即,具有长度一的固定长度码),例如最后一个或最终二进制值(即,“bn”),且可被称为intra_bc_abs_bvd_sign_flag。
在一些实例中,熵编码单元56可在无任何上下文的情况下以旁路模式编码第四语法元素。在一些实例中,熵编码单元56可使用具有一或多个上下文的CABAC来编码第四语法。在此类实例的一些实例中,熵编码单元56可编码水平分量和垂直分量两者,且可用单独的上下文来编码用于水平分量的第四语法元素和用于垂直分量的第四语法元素。在此类实例的一些实例中,熵编码单元56可编码水平分量和垂直分量两者,且可用对应上下文(例如相同上下文)来编码用于水平分量的第四语法元素和用于垂直分量的第四语法元素。
图3是说明可实施本发明中描述的技术的实例视频解码器30的框图。在图3的实例中,视频解码器30包含熵解码单元80、预测处理单元81、逆量化处理单元86、逆变换处理单元88、求和器90、经重构区存储器92、滤波器处理单元94和参考图片存储器96。预测处理单元81包含运动补偿单元82、帧内预测处理单元84和块内复制(帧内BC)单元85。在一些实例中,视频解码器30可执行与相对于来自图2的视频编码器20描述的编码遍次大体上互逆的解码遍次。
在各种实例中,可给视频解码器30的单元分派任务以执行本发明的技术。并且,在一些实例中,可在视频解码器30的单元中的一或多者当中划分本发明的技术。举例来说,帧内BC单元85可独自或结合视频解码器30的其它单元来执行本发明的技术,例如运动补偿单元82、帧内预测处理单元84、经重构区存储器92和熵解码单元80。在一些实例中,视频解码器30可不包含帧内BC单元85,且帧内BC单元85的功能性可由预测处理单元81的其它组件(例如运动补偿单元82)执行。
在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频切片的视频块和相关联语法元素的经编码视频位流。视频解码器30的熵解码单元80对所述位流进行熵解码以产生经量化系数、用于帧间预测的运动向量、用于帧内BC预测的块向量,以及本文所述的其它语法元素。熵解码单元80可执行本文所述的用于语法元素(包含向量分量、旗标和其它语法元素)的二进制化和编码的技术中的任一者的逆技术,来根据帧内BC模式进行预测。熵解码单元80将向量和其它语法元素转发到预测处理单元81。视频解码器30可接收序列层级、图片层级、视频切片层级和/或视频块层级的语法元素。
如上文所论述,经编码块向量的分量可表示预测符视频数据块与当前视频数据块之间的位移。预测符块可与当前块在同一图片内。所述块向量可为包含水平分量和垂直分量的二维块向量,或所述块向量可为包含水平分量或垂直分量的一维块向量。水平分量可表示预测符视频数据块与当前视频数据块之间的水平位移。垂直分量可表示预测符视频数据块与当前视频数据块之间的垂直移位。熵解码单元80可解码水平分量和垂直分量中的一者或两者。
根据本发明中描述的技术的一或多个方面,相对于在HEVC中使用运动向量差(MVD)译码方法来解码块向量的值,熵解码单元80可使用根据用于帧内BC模式的块向量的特性定制的解码方法来解码块向量的所述值。举例来说,熵解码单元80可利用与编码器20的熵编码单元56使用的编码过程大体上互逆的过程来编码块向量。举例来说,熵解码单元80可基于一组语法元素来解码所述块向量的分量。
举例来说,熵解码单元80可解码所述组语法元素的第一语法元素,以确定所述块向量的分量的绝对值是否大于零。在此些实例中,第一语法元素可为二进制旗标(即,具有长度一的固定长度码),例如第一二进制值(即,“b0”),且可被称为intra_bc_abs_bvd_greater0_flag。在一些实例中,例如在第一语法元素为一的情况下,熵解码单元80可确定所述分量的绝对值大于零。在一些实例中,例如在第一语法元素为零的情况下,熵解码单元80可确定所述分量的绝对值不大于零。
在一些实例中,熵解码单元80可使用具有上下文的上下文自适应二进制算术译码(CABAC)来解码第一语法元素。在此类实例的一些实例中,熵解码单元80可用单独的上下文来解码用于水平分量的第一语法元素和用于垂直分量的第一语法元素两者。在此类实例的另一实例中,熵解码单元80可用相同的上下文来编码用于水平分量的第一语法元素和用于垂直分量的第一语法元素两者。
在一些实例中,例如在块向量的分量的绝对值为零的情况下(即,栽块向量的分量的值维持在整数精度,且第一语法元素指示所述块向量的分量的绝对值不大于零的情况下),熵解码单元80可不进一步解码语法元素来表示所述块向量的所述分量的所述值。换句话说,在所述块向量的分量的绝对值为零的情况下,熵解码单元80可仅使用第一语法元素来解码所述块向量的所述分量的所述值,且可不接收/解码下文论述的第二、第三和第四语法元素。
熵解码单元80可解码用于所述块向量的分量的第二语法元素,以确定块向量分量的绝对值是否大于阈值,所述阈值可基于一组代码的阶。在一些实例中,所述阈值可为左移位了所述代码的阶(例如1<<阶)的一。举例来说,在所述组代码是具有阶四的一组指数哥伦布代码的情况下,阈值可为16。在此些实例中,第二语法元素可为二进制旗标(即,具有长度一的固定长度码),例如第二二进制值(即,“b1”),且可被称为intra_bc_abs_bvd_greater16_flag。在第二语法元素为一的情况下,熵编码单元56可确定所述分量的绝对值大于阈值。在第二语法元素为零的情况下,熵编码单元56可确定所述分量的绝对值不大于阈值。
在一些实例中,熵解码单元80可使用具有上下文的上下文自适应二进制算术译码(CABAC)来解码第二语法元素。在此类实例的一些实例中,熵解码单元80可用单独的上下文来解码用于水平分量的第二语法元素和用于垂直分量的第二语法元素两者。在此类实例的另一实例中,熵解码单元80可用相同的上下文来解码用于水平分量的第二语法元素和用于垂直分量的第二语法元素两者。
熵解码单元80可解码第三语法元素,以确定所述块向量的分量的绝对值。在一些实例中,可使用多种技术中的一者来编码第三语法元素,例如固定长度代码、哥伦布莱斯代码或指数哥伦布代码。在此类实例的一些实例中,熵解码单元80可基于所述块向量的分量的绝对值是否大于阈值而确定使用哪一技术来编码第三语法元素。如上文所论述,熵解码单元80可基于第二语法元素的所述值来确定块向量的分量的绝对值是否大于阈值。
作为一个实例,在块向量的分量的绝对值不大于阈值(即,小于或等于阈值)的情况下,熵解码单元80可确定使用具有等效于所述组代码的阶的长度的固定长度代码来编码第三语法元素。在此些实例中,熵解码单元80可解码第三语法元素,以确定块向量的分量的绝对值减一。在一些实例中,第三语法元素可为一连串二进制值(即,“b2-bn-1”),且可被称为intra_bc_abs_bvd_minus1。举例来说,在第三语法元素是1110且所述组代码的阶为四的情况下,熵编码单元56可确定所述分量的绝对值为14(即,13+1)。
作为另一实例,在块向量的分量的绝对值大于阈值的情况下,熵解码单元80可确定使用所述组代码来编码第三语法元素。在此些实例中,熵解码单元80可解码第三语法元素,以确定所述分量的绝对值减偏移,所述偏移可基于所述组代码的阶。在一些实例中,所述偏移可为阈值减一(例如偏移=阈值-1)。在此些实例中,第三语法元素可为一连串二进制值(即,“b2-bn-1”),且可被称为intra_bc_abs_bvd_minus1。举例来说,在第三语法元素为针对13的第四阶指数哥伦布译码,且所述组代码是阶四的一组指数哥伦布代码的情况下,偏移可为17,且熵解码单元80可确定所述分量的绝对值为30(即,13+17=30)。
在一些实例中,熵解码单元80可解码第四语法元素,以确定所述分量的正负号。换句话说,第四语法元素可指示所述分量是正还是负。在此些实例中,第四语法元素可为二进制旗标(即,具有长度一的固定长度码),例如最后一个或最终二进制值(即,“bn”),且可被称为intra_bc_abs_bvd_sign_flag。
在一些实例中,熵解码单元80可在无任何上下文的情况下以旁路模式编码第四语法元素。在一些实例中,熵编码单元56可使用具有一或多个上下文的CABAC来解码第四语法。在此类实例的一些实例中,熵解码单元80可解码水平分量和垂直分量两者,且可用单独的上下文来解码用于水平分量的第四语法元素和用于垂直分量的第四语法元素。在此类实例的一些实例中,熵解码单元80可解码水平分量和垂直分量两者,且可用对应的上下文(例如相同上下文)来解码用于水平分量的第四语法元素和用于垂直分量的第四语法元素。
在任何情况下,熵解码单元80可将基于所述语法元素而确定的分量的值输出到帧内BC单元85。以此方式,熵解码单元80可解码经编码块向量。
当将视频切片译码为经帧内译码(I)切片时,预测处理单元81的帧内预测处理单元84可基于发信号通知的帧内预测模式以及来自当前帧或图片的先前经解码块的数据产生用于当前视频切片的视频块的预测数据。当将视频帧译码为经帧间译码(即,B或P)切片时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收到的运动向量和其它语法元素产生用于当前视频切片的视频块的预测性块。
预测块可从参考图片列表中的一者内的参考图片中的一者产生。视频解码器30可使用默认构建技术或任何其它技术,基于存储在参考图片存储器96中的参考图片来构建参考帧列表RefPicList0和RefPicList1。当根据本文所述的帧内BC模式来译码视频块时,预测处理单元81的帧内BC单元85基于从熵解码单元80接收到的块向量和其它语法元素来产生用于当前视频块的预测性块。所述预测性块可在由视频编码器20界定的与当前视频块在同一图片内的经重构区内,且从经重构区存储器92检索。
运动补偿单元82和帧内BC单元85通过剖析向量和其它语法元素来确定用于当前视频切片的视频块的预测信息,且使用所述预测信息来产生正被解码的当前视频块的预测性块。举例来说,运动补偿单元82使用所述接收到的语法元素中的一些来确定用以译码视频切片的视频块的预测模式(例如帧内或帧间预测)、帧间预测切片类型(例如B切片或P切片)、所述切片的参考图片列表中的一或多者的构建信息、所述切片的每一经帧间编码视频块的运动向量、所述切片的每一经帧间译码视频块的帧间预测状态,以及其它信息,来解码当前视频切片中的视频块。类似地,帧内BC单元85可使用所述接收到的语法元素中的一些(例如,旗标)来确定曾使用帧内BC模式来预测当前视频块,指示图片的哪些视频块在经重构区内且应存储在经重构区存储器92中的构建信息,所述切片的每一经帧内BC预测视频块的块向量,所述切片的每一经帧内BC预测视频块的帧内BC预测状态,以及用以解码当前视频切片中的视频块的其它信息。
运动补偿单元82和帧内BC单元85还可基于内插滤波器执行内插。运动补偿单元82和帧内BC单元85可在视频块的编码期间使用如由视频编码器20使用的内插滤波器来计算用于预测性块的子整数像素的经内插值。在此情况下,运动补偿单元82和帧内BC单元85可从所述接收到的语法元素确定视频编码器20所使用的内插滤波器,且使用所述内插滤波器来产生预测性块。
逆量化处理单元86将在位流中提供且由熵解码单元80解码的经量化变换系数逆量化,即去量化。逆量化过程可包含使用由视频编码器20针对视频切片中的每一视频块计算的量化参数来确定应应用的量化的程度以及同样地逆量化的程度。逆变换处理单元88将逆变换(例如,逆DCT、逆整数变换或概念上类似的逆变换过程)应用于变换系数以便产生像素域中的残差块。
在运动补偿单元82或帧内BC单元85基于向量和其它语法元素来产生用于当前视频块的预测性块,视频解码器30通过对来自逆变换处理单元88的残差块与运动补偿单元82和帧内BC单元85所产生的对应预测性块进行求和来形成经解码视频块。求和器90表示执行此求和运算以产生经重构视频块的组件。
经重构区存储器92根据视频编码器20对当前视频块的帧内BC的经重构区的定义来存储经重构视频块,如本文所述。经重构区存储器92可存储尚未由滤波器处理单元94环路内滤波的经重构视频块。求和器90可与经重构区存储器92并行地将经重构视频块提供到滤波器处理单元94,或当不再需要帧内BC的经重构区时,经重构区存储器92可将经重构视频块释放到滤波器处理单元94。在任一情况下,帧内BC单元85从经重构区存储器92检索用于当前视频块的预测性视频块。
滤波器处理单元94可对经重构视频块执行环路内滤波。环路内滤波可包含去块滤波以对块边界进行滤波以从经重构视频去除成块假影。环路内滤波还可包含SAO滤波以改进经重构视频。其中一些可经环路内滤波的经重构块可存储在参考图片存储器96中作为参考图片。参考图片可包含可由运动补偿单元82用作预测性块以对后续视频帧或图片中的块进行帧间预测的经重构块。参考图片存储器96还存储经解码视频,以供稍后在显示装置(例如图1的显示装置31)上呈现。
图4说明根据本发明的技术的包含帧内BC的帧内预测过程的实例。根据一个实例帧内预测过程,视频编码器20可例如从与待译码的当前块相同的图片中的一组先前经译码且经重构视频数据块选择预测符视频块。在图4的实例中,经重构区域108包含所述组先前经译码且经重构的视频块。经重构区108中的块可表示已由视频解码器30解码和重构且存储在经重构区存储器92中的块,或已在视频编码器20的重构回路中进行解码和重构且存储在经重构区存储器64中的块。当前块102表示待译码的当前视频块。预测符块104表示与当前块102在同一图片中的经重构视频块,所述经重构视频块用于当前块102的帧内BC预测。
在实例帧内预测过程中,视频编码器20可确定并编码块向量106,其与所述残差信号一起指示预测符块104相对于当前块102的位置。举例来说,如图4所说明,块向量106可指示预测符块104的左上方角相对于当前块102的左上方角的位置。预测符块104可为例如基于预测符块与当前块之间的像素差发现与当前块102最紧密匹配的块。并且,预测符块104可从经重构像素数据以整数像素精确度形成,或表示通过内插形成的分数像素精确度块。如上文所论述,块向量106也可被称作偏移向量、移位向量或运动向量(MV)。视频解码器30利用经编码信息来解码当前CU。
根据本发明的一或多种技术,可通过鉴于帧内BC块向量场的特性实施译码方案来改进块向量译码的效率。在一些实例中,本发明的技术可分别或组合实施。举例来说,视频编码器20和视频解码器30可分别实施每一技术,或可组合实施一或多种技术。举例来说,本发明提出若干技术来更高效地译码块向量(BV)。
参考块向量106的水平位移分量112(即,BV_x)来描述所述技术,但它们可同等适用于块向量106的垂直位移分量110(即,BV_y)。所述技术可对一维块向量的分量以及二维块向量的分量(即,水平分量和垂直分量)中的一者或两者使用。另外,所述技术将用于BV_x的二进制化串称为包含b0、b1、…、bn,其中bi是所述串中的第i个二进位。
在一些实例中,由语法元素表示的块向量的分量的值可为所述分量的实际值。举例来说,在其中块向量的分量的值为负七的实例中,所述分量的实际值可为负七。在一些实例中,由所述语法元素表示的块向量的分量的值可为所述分量的差分值,其对应于所述分量的预测符(例如默认值、所述分量的先前值、来自相邻块的分量的值)与所述分量的实际值之间的差。所述差分值可被称为块向量差(BVD)。在一些实例中,视频编码器20可通过将所述分量的实际值从所述分量的预测符减去来确定所述分量的差分值。类似地,在一些实例中,视频解码器30可通过将所述分量的差分值与所述分量的预测符相加来确定所述分量的实际值。
用于译码BVD值的这些技术可由编码器20的熵编码单元或由解码器30的熵解码单元实施。在其它实例中,这些技术可由编码器20的预测处理单元或由解码器30的预测处理单元实施。在一些实例中,这些技术可由视频编码器20和视频解码器30的单元的任何组合实施。举例来说,在其中视频编码器20和视频解码器30实施为集成电路(IC)或微控制器的实例中,所述技术可由IC或微控制器的一或多个单元(其可硬连线逻辑)实施。
视频译码器,例如视频编码器20或视频解码器30,可使用具有常规二进位(例如使用CABAC译码的二进位)和非常规二进位(例如以旁路模式译码的二进位)的分组的高阶指数哥伦布(EG)来译码BVD。参考水平BVD分量来阐述下文的实例技术;然而所述技术可类似地适用于垂直分量。
在此实例中,所述块向量的水平分量表示为BVx,且用于BVx的二进制化串表示为b0、b1、…、bn,其中bi是所述串中的第i个二进位。
在一些实例中,第一二进位b0可指示块向量的水平分量的绝对值是否大于零(即,是否abs(BVx)>0)。举例来说,如果块向量的水平分量的绝对值大于零,那么第一二进位b0的值可为一(即,如果abs(BVx)>0,那么b0=1)。类似地,如果所述块向量的水平分量的绝对值不大于零,那么第一二进位b0的值可为零(即,如果abs(BVx)≤0,那么b0=0)。在一些实例中,可使用具有上下文的CABAC来编码第一二进位b0。在一些实例中,用于水平分量的第一二进位b0和用于垂直分量的第一二进位b0可具有单独的上下文。在一些实例中,用于水平分量的第一二进位b0和用于垂直分量的第一二进位b0可共享相同的上下文。
在一些实例中,第二二进位b1可指示水平分量的绝对值是否大于基于一组代码的阶的阈值。在一些实例中,阈值可为左移位了所述代码的阶(例如1<<阶)的数一(1)。举例来说,如果绝对值不大于阈值,那么第二二进位b1的值可为零(即,如果abs(BVx)≤(1<<阶)),那么b0=0)。类似地,如果绝对值大于阈值,那么第二二进位b1的值可为一(即,如果abs(BVx)>(1<<阶)),那么b0=1)。在一些实例中,可使用具有上下文的CABAC来编码第二二进位b1。在一些实例中,用于水平分量的第二二进位b1和用于垂直分量的第二二进位b1可具有单独的上下文。在一些实例中,用于水平分量的第二二进位b1和用于垂直分量的第二二进位b1可共享相同的上下文。
如果水平分量的绝对值不大于阈值(即,如果二进位b1==0),那么使用具有基于所述组代码的阶的长度的固定长度代码来译码其余二进位。如果水平分量的绝对值大于阈值(即,如果二进位b1==1),那么其余二进位b2、b3…可表示abs(BVx)-(1<<阶)-1的值,且可在旁路模式下使用所述组代码来译码。举例来说,在所述组代码是具有阶四的一组指数哥伦布代码的情况下,可使用具有阶四的所述组指数哥伦布代码来译码abs(BVx)-(1<<阶)-1的值。在一些实例中,可使用指数哥伦布代码的其它阶,例如1、2、3、5。在一些实例中,可使用其它代码,例如哥伦布-莱斯代码。
在一些实例中,最后一个二进位可指示BVx的正负号。在一些实例中,在无任何上下文的情况下,可以旁路模式来编码最后一个二进位。
在一些实例中,用于以上前缀/常规二进位的上下文可跨分量或跨二进位或这两者共享。就是说,用于第i个二进位的bi的上下文可共享水平分量和垂直分量的上下文,即针对水平分量和垂直分量具有相同上下文,或可针对水平分量和垂直分量具有不同的上下文。在一些实例中,所述上下文可跨二进位共享,例如使得b0、b1可共享相同的上下文。在一些实例中,所述上下文可在用于HEVC中的BVD译码和MVD译码的二进位之间共享。
下文的表(1)到(3)是指示JCTVC-P1005中所描述的用以实施本发明的一或多种技术的BVD技术的实例变化的语法表。相对于JCTVC-P1005,以斜体字来标记添加,且通过来标记删除。
表(1)-译码单元语法
表(2)-预测单元语法
表(3)-帧内BC块向量差语法
以下语义描述以上语法表中所列出的语法元素中的一些的实例定义。
intra_bc_abs_bvd_greater0_flag[compIdx]可指定块向量分量差的绝对值是否大于0。
intra_bc_abs_bvd_greater16_flag[compIdx]可指定块向量分量差的绝对值是否大于16。当intra_bc_abs_bvd_greater16_flag[compIdx]不存在时,可推断其等于0。
intra_bc_abs_bvd_minus1[compIdx]加1可指定块向量分量差的绝对值。当intra_bc_abs_bvd_minus1[compIdx]不存在时,可推断其等于-1。BV-1<<EG阶-1
intra_bc_bvd_sign_flag[compIdx]可如下指定块向量分量差的正负号。如果intra_bc_bvd_sign_flag[compIdx]等于0,那么对应块向量分量差可具有正值。否则(intra_bc_bvd_sign_flag[compIdx]等于1),对应块向量分量差可具有负值。当intra_bc_bvd_sign_flag[compIdx]不存在时,可推断其等于0。
针对compIdx=0..1的块向量差BvdIntra[compIdx]可根据下文的等式(2)。
BvdIntra[compIdx]
=intra_bc_abs_bvd_greater0_flag[compIdx]
*(intra_bc_abs_bvd_minus1[compIdx]+1)
*(1-2*intra_bc_bvd_sign_flag[compIdx])
等式(2)
表(1)到(3)中的描述符可定义为如下:
ae(v):经上下文自适应算术熵译码的语法元素。
f(n):使用以左位在第一来写入(从左到右)的n个位的固定模式位串。
表(4)-语法元素和相关联的二进制化
图5是说明视频解码器根据本发明的一或多种技术来解码识别当前块的预测符块的块向量的实例操作的流程图。图5的技术可通过一或多个视频解码器(例如,图1和3中所说明的视频解码器30)执行。出于说明的目的,在视频解码器30的上下文中描述图5的技术,但是具有不同于视频解码器30的配置的视频解码器可执行图5的技术。
根据本发明的一或多种技术,视频解码器30可在经编码视频位流中且为当前块接收表示当前块驻存于其中的图片中的预测符块(例如图4的预测符块104)与当前块之间的像素差的残差块,以及用于块向量(例如图4的块向量106)的分量的一组语法元素,所述块向量表示当前块(例如图4的当前块102)与预测符块之间的移位(502)。作为一个实例,块向量的水平分量(例如图4的块向量106的水平分量112)可表示预测符块与当前块之间的水平位移。作为另一实例,块向量的垂直分量(例如图4的块向量106的垂直分量110)可表示预测符块与当前块之间的垂直位移。
视频解码器30可解码所述组语法元素,以确定块向量的分量的值(504)。举例来说,视频解码器30可根据图6的技术解码所述组语法元素,以确定所述块向量的所述分量的值。
在一些实例中,由语法元素表示的块向量的分量的值可为所述分量的实际值。举例来说,在其中块向量的分量的值为负七的以上实例中,所述分量的实际值可为负七。在一些实例中,由所述语法元素表示的块向量的分量的值可为所述分量的差分值,其对应于所述分量的预测符(例如所述分量的先前值)与所述分量的实际值之间的差。在此类实例的一些实例中,视频解码器30可通过将所述分量的差分值与所述分量的预测符相加来确定所述分量的实际值。
视频解码器30可基于所述分量的值确定预测符块(506),且基于所述块向量所识别的残差块和预测符块来重构当前块(508)。以此方式,视频解码器30可解码当前块。
图6是说明视频解码器根据本发明的一或多种技术来解码识别当前块的预测符块的块向量的实例操作的进一步细节的流程图。图6的技术可通过一或多个视频解码器(例如,图1和3中所说明的视频解码器30)执行。出于说明的目的,在视频解码器30的上下文中描述图6的技术,但是具有不同于视频解码器30的配置的视频解码器可执行图6的技术。
如上文所论述,视频解码器30可解码一组语法元素,以确定块向量的分量的值(504)。根据本发明的一或多种技术,视频解码器30的熵解码单元80可解码所述组语法元素的第一语法元素,以确定所述块向量的分量的绝对值是否大于零(602)。
如果熵解码单元80确定所述分量的绝对值不大于零(604的“否”分支),那么熵解码单元80可确定所述分量的所述值为零,且基于所述分量的所述值来确定预测符块(506)。如果熵解码单元80确定所述分量的绝对值大于零(604的“是”分支),那么熵解码单元80可解码所述组语法元素的第二语法元素,以确定所述分量的绝对值是否大于基于一组代码的阶的阈值(606)。如下文所论述,在一些实例中,可使用所述组代码来编码所述分量的绝对值的表示。基于第一和第二语法元素,熵解码单元80可能够确定所述分量的绝对值介于1与16之间。
如果熵解码单元80确定所述分量的绝对值大于阈值(608的“是”分支),那么熵解码单元80可使用所述组代码来解码第三语法元素,以确定所述分量的绝对值减偏移(610)。如果熵解码单元80确定所述分量的绝对值不大于阈值(608的“否”分支),那么熵解码单元80可使用具有等效于所述代码的阶的长度的固定长度代码来解码第三语法元素,以确定所述分量的绝对值减一(614)。
在任何情况下,熵解码单元80可解码第四语法元素,以确定所述分量的值是正还是负(612)。基于以上确定,熵解码单元80可确定所述分量的实际值,且可将所述值输出到解码器30的一或多个其它组件,例如预测处理单元81,其可基于所述分量的值确定预测符块(506)。在其中块向量具有多个分量的实例中,视频解码器30可执行以上操作,以基于相应一组语法元素来确定每一相应分量的值。
图7是说明视频编码器根据本发明的一或多种技术来编码识别当前块的预测符块的块向量的实例操作的流程图。图7的技术可由一或多个视频编码器(例如,图1和2中所说明的视频编码器20)执行。出于说明的目的,在视频编码器20的上下文内描述图7的技术,但是具有不同于视频编码器20的配置的视频编码器可执行图7的技术。
根据本发明的一或多种技术,视频编码器20可从当前视频数据块驻存于其中的图片中的多个先前编码的视频数据块选择用于当前视频数据块(例如图4的当前块102)的预测符块(例如图4的预测符块104)(702)。
视频编码器20可确定块向量(例如图4的块向量106)的分量的值,所述块向量表示所述当前视频数据块与所述预测符块之间的位移(704)。在一些实例中,由语法元素表示的块向量的分量的值可为所述分量的实际值。举例来说,在其中块向量的分量的值为负七的实例中,所述分量的实际值可为负七。在一些实例中,由所述语法元素表示的块向量的分量的值可为所述分量的差分值,其对应于所述分量的预测符(例如所述分量的先前值)与所述分量的实际值之间的差。在此类实例的一些实例中,视频编码器20可通过将所述分量的实际值从所述分量的预测符减去来确定所述分量的差分值。
视频编码器20可在经编码视频位流中编码表示预测符块与当前块之间的像素差的残差块,以及表示所述块向量的分量的值的一组语法元素(706)。举例来说,视频编码器20可根据图8的技术来编码所述组语法元素,以指示所述块向量的分量的值。
视频编码器20可基于所述块向量所识别的残差块和预测符块来重构当前块(708)。以此方式,视频编码器20可编码所述当前视频数据块。
图8是说明视频编码器根据本发明的一或多种技术来编码识别当前块的预测符块的块向量的实例操作的进一步细节的流程图。图8的技术可由一或多个视频编码器(例如,图1和2中所说明的视频编码器20)执行。出于说明的目的,在视频编码器20的上下文内描述图8的技术,但是具有不同于视频编码器20的配置的视频编码器可执行图8的技术。
如上文所论述,视频编码器20可在经编码视频位流中编码表示块向量的分量的值的一组语法元素(706)。根据本发明的一或多种技术,视频编码器20的熵编码单元56可编码所述组语法元素的第一语法元素,其指示所述块向量的分量的绝对值是否大于零(802)。
如果熵编码单元56确定所述分量的绝对值不大于零(804的“否”分支),那么视频编码器20可基于所述分量所识别的预测符块和残差块来重构当前块(708)。如果熵编码单元56确定所述分量的绝对值大于零(804的“是”分支),那么熵编码单元56可编码所述组语法元素的第二语法元素,以指示所述分量的绝对值是否大于基于一组代码的阶的阈值(806)。如下文所论述,在一些实例中,可使用所述组代码来编码所述分量的绝对值的表示。
如果熵编码单元56确定所述分量的绝对值大于阈值(808的“是”分支),那么熵编码单元56可使用所述组代码来解码第三语法元素,以指示所述分量的绝对值减偏移(810)。如果熵编码单元56确定所述分量的绝对值不大于阈值(808的“否”分支),那么熵编码单元56可使用具有等效于所述代码的阶的长度的固定长度代码来编码第三语法元素,以指示所述分量的绝对值减一(814)。
在任何情况下,熵编码单元56可编码第四语法元素,以指示所述分量的值是正还是负(812),且视频编码器20可基于所述分量所识别的预测符块和残差块来重构当前块(708)。在其中块向量具有多个分量的实例中,视频编码器20可执行以上操作来编码相应的一组语法元素,以表示每一相应分量的值。
以下编号实例可说明本发明的一或多个方面:
实例1.一种用于解码视频数据的方法,所述方法包括:在经编码视频位流中且为当前视频数据块接收残差块和用于块向量的分量的一组语法元素,所述块向量表示当前块与当前块驻存于其中的图片中的预测符视频数据块之间的位移;至少通过以下步骤来解码所述组语法元素以确定所述块向量的所述分量的值:解码所述组语法元素的第一语法元素,以确定所述块向量的分量的绝对值是否大于零;基于所述块向量的所述分量的绝对值大于零,解码所述组语法元素的第二语法元素,以确定所述块向量的所述分量的绝对值是否大于基于一组代码的阶的阈值;基于所述块向量的所述分量的绝对值大于所述阈值,使用所述组代码来解码所述组语法元素的第三语法元素,以确定所述块向量的所述分量的绝对值减基于所述组代码的阶的偏移;以及基于所述块向量的所述分量的绝对值大于零,解码所述组语法元素的第四语法元素,以确定所述块向量的所述分量的值是正还是负;基于所述块向量的所述分量的所述值,确定预测符视频数据块;以及基于预测符视频数据块和残差块来重构所述当前视频数据块。
实例2.实例1的所述方法进一步包括:基于所述块向量的所述分量的绝对值不大于阈值,使用具有等效于所述组代码的阶的长度的固定长度代码来解码第三语法元素,以确定所述块向量的所述分量的绝对值减一。
实例3.实例1到2的任何组合的方法,其中所述组代码包括所述阶的一组指数哥伦布代码。
实例4.实例1到3的任何组合的方法,其中所述阶为四。
实例5.实例1到4的任何组合的方法,其中根据以下等式来确定所述阈值的值,th=1<<order,其中,th是阈值的值,order是阶,且<<是左移位运算。
实例6.实例1到5的任何组合的方法,其中所述偏移的值是阈值减一。
实例7.实例1到6的任何组合的方法,其进一步包括:基于所述组语法元素的第五语法元素,确定是否基于所述分量的最大值来编码所述分量的值;基于所述分量的值是基于所述分量的最大值来编码:确定所述分量的最大值;确定使用具有基于所述分量的最大值的长度的固定长度代码来编码所述分量的值;以及使用所述固定长度代码来解码所述分量的值。
实施例8.实例1到7的任何组合的方法,其中接收对应于所述块向量的分量的多个语法元素包括:接收对应于所述块向量的水平分量的第一组语法元素,其中所述水平分量表示预测符视频数据块与所述当前视频数据块之间的水平位移;以及接收对应于所述块向量的垂直分量的第二组语法元素,其中所述垂直分量表示预测符视频数据块与所述当前视频数据块之间的垂直位移。
实例9.实例1到8的任何组合的方法,其中所述第一语法元素包含用于水平分量的第一语法元素和用于垂直分量的第一语法元素,所述方法进一步包括使用针对垂直分量和水平分量具有单独上下文的上下文自适应二进制算术译码(CABAC)来解码用于水平分量的第一语法元素和用于垂直分量的第一语法元素。
实施例10.实例1到8的任何组合的方法,其中所述第一语法元素包含用于水平分量的第一语法元素和用于垂直分量的第一语法元素,所述方法进一步包括使用针对垂直分量和水平分量具有相同上下文的上下文自适应二进制算术译码(CABAC)来解码用于水平分量的第一语法元素和用于垂直分量的第一语法元素。
实施例11.实例1到10的任何组合的方法,其中所述第二语法元素包含用于水平分量的第二语法元素和用于垂直分量的第二语法元素,所述方法进一步包括使用针对垂直分量和水平分量具有单独上下文的上下文自适应二进制算术译码(CABAC)来解码用于水平分量的第二语法元素和用于垂直分量的第二语法元素。
实例12.实例1到10的任何组合的方法,其中所述第二语法元素包含用于水平分量的第二语法元素和用于垂直分量的第二语法元素,所述方法进一步包括使用针对垂直分量和水平分量具有相同上下文的上下文自适应二进制算术译码(CABAC)来解码用于水平分量的第二语法元素和用于垂直分量的第二语法元素。
实例13.实例1到12的任何组合的方法,所述方法可在无线通信装置上执行,其中所述装置包括:存储器,其经配置以存储视频数据;处理器,其经配置以执行指令来处理存储在所述存储器中的视频数据;以及接收器,其经配置以接收经编码视频位流。
实例14.实例1到13的任何组合的方法,其中所述无线通信装置是蜂窝式电话,且所述经编码视频位流由接收器接收,且根据蜂窝式通信标准来解调。
实例15.一种用于解码视频数据的装置,其包括:存储器,其经配置以存储视频数据;以及一或多个处理器,其经配置以执行实例1到12的任何组合的方法。
实例16.一种用于解码视频数据的装置,其包括用于执行实例1到12的任何组合的方法的装置。
实施例17.一种存储指令的计算机可读存储媒体,所述指令在被执行时,致使一或多个处理器装置执行实例1到12的任何组合的方法。
实施例18.一种用于编码视频数据的方法,所述方法包括:从当前视频数据块驻存于其中的图片中的视频数据的多个经先前编码块选择用于当前视频数据块的预测符块;至少通过以下步骤来在经编码视频位流中且为所述当前视频数据块编码残差块和表示块向量的分量的值的一组语法元素,所述块向量表示所述当前视频数据块与所述预测符块之间的位移:编码所述组语法元素的第一语法元素,其指示所述块向量的所述分量的绝对值是否大于零;基于所述块向量的所述分量的绝对值大于零,编码所述组语法元素的第二语法元素,其指示所述块向量的所述分量的绝对值是否大于基于一组代码的阶的阈值;基于所述块向量的所述分量的绝对值大于所述阈值,使用所述组代码来编码所述组语法元素的第三语法元素,其指示所述块向量的所述分量的绝对值减基于所述组代码的阶的偏移;以及基于所述块向量的所述分量的绝对值大于零,编码所述组语法元素的第四语法元素,其指示所述块向量的所述分量的值是正还是负。
实例19.实例18的方法,其进一步包括基于所述块向量的所述分量的绝对值不大于阈值:产生所述组语法元素的第三语法元素,以指示所述块向量的所述分量的绝对值减一;以及确定使用具有等效于所述组代码的阶的长度的固定长度代码来编码第三语法元素。
实例20.实例18到19的任何组合的方法,其中所述组代码包括所述阶的一组指数哥伦布代码。
实例21.实例18到20的任何组合的方法,其中所述阶为四。
实例22.实例18到21的任何组合的方法,其中根据以下等式:th=1<<order来确定所述阈值的值,其中th是所述阈值的值,order是阶,且<<是左移位操作。
实例23.实例18到22的任何组合的方法,其中所述偏移的值是阈值减一。
实例24.实例18到23的任何组合的方法,其进一步包括:确定是否基于所述分量的最大值来编码所述分量的值;响应于确定基于所述分量的最大值来编码所述分量的值:产生所述组语法元素的第五语法元素,其指示是否基于所述分量的最大值来编码所述分量的值;确定所述分量的最大值;以及使用具有基于所述分量的最大值的长度的固定长度代码来编码所述分量的值。
实例25.实例18到24的任何组合的方法,其中编码所述多个语法元素包括:编码对应于所述块向量的水平分量的第一多个所述语法元素,其中所述水平分量表示预测符视频数据块与当前视频数据块之间的水平位移;以及编码对应于所述块向量的垂直分量的第二多个所述语法元素,其中所述垂直分量表示预测符视频数据块与当前视频数据块之间的垂直位移。
实例26.实例18到25的任何组合的方法,其中所述第一语法元素包含用于水平分量的第一语法元素和用于垂直分量的第一语法元素,所述方法进一步包括使用针对垂直分量和水平分量具有单独上下文的上下文自适应二进制算术译码(CABAC)来编码用于水平分量的第一语法元素和用于垂直分量的第一语法元素。
实例27.实例18到26的任何组合的方法,其中所述第一语法元素包含用于水平分量的第一语法元素和用于垂直分量的第一语法元素,所述方法进一步包括使用针对垂直分量和水平分量具有相同上下文的上下文自适应二进制算术译码(CABAC)来编码用于水平分量的第一语法元素和用于垂直分量的第一语法元素。
实例28.一种用于编码视频数据的装置,其包括:存储器,其经配置以存储视频数据;以及一或多个处理器,其经配置以执行实例18到27的任何组合的方法。
实例29.一种用于编码视频数据的装置,其包括用于执行实例18到27的任何组合的方法的装置。
实例30.一种存储指令的计算机可读存储媒体,所述指令在被执行时,致使一或多个处理器装置执行实例18到27的任何组合的方法。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果用软件实施,那么所述功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包含促进将计算机程序从一处传送到另一处(例如,根据通信协议)的任何媒体的通信媒体。以此方式,计算机可读媒体通常可对应于(1)有形计算机可读存储媒体,其是非暂时性的,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储呈指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。然而,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时性媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可由例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置以用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合式编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
描述了各种实例。这些和其它实例在所附权利要求书的范围内。