首页> 中国专利> 将运动向量四舍五入以自适应运动向量差分辨率及提高视频译码中的运动向量存储精度

将运动向量四舍五入以自适应运动向量差分辨率及提高视频译码中的运动向量存储精度

摘要

一种实例方法包括:针对视频数据的当前块的运动向量差(MVD)的值进行译码;从运动向量(MV)缓冲器中,获得针对视频数据的当前块的运动向量预测子(MVP)的值;确定针对当前块的运动向量差的值的分辨率;获得针对运动向量的存储分辨率移位量;基于所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量差的值直接四舍五入为运动向量差的值的分辨率;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得针对当前块的运动向量的值;基于针对当前块的运动向量,获得针对当前块的预测子块的样本;基于针对所述预测子块的样本,重构当前块的样本。

著录项

  • 公开/公告号CN112673636A

    专利类型发明专利

  • 公开/公告日2021-04-16

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN201980048545.0

  • 发明设计人 H.黄;W-J.钱;M.卡尔切维茨;

    申请日2019-07-18

  • 分类号H04N19/61(20060101);H04N19/52(20060101);H04N19/423(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人李文娟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:36:57

说明书

本申请要求于2019年7月17日提交的美国专利申请16/514,326的优先权,该申请要求于2018年7月24日提交的美国临时申请62/702,737的优先权,每个的全部内容通过引用合并于本文。

技术领域

本公开涉及视频编码(encode)和视频解码(decode)。

背景技术

可以将数字视频功能集成到各种各样的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、便携式或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备和类似物。数字视频设备实施视频译码技术,例如MPEG-2,MPEG-4,ITU-T H.263,ITU-T H.264/MPEG-4,第10部分,高级视频译码(AVC),高效视频译码(HEVC)标准,ITU-T H.265/高效视频译码(HEVC)规定的标准以及此类标准的扩展所描述的技术。通过实行此类视频译码技术,视频设备可以更有效地发送,接收,编码,解码和/或存储数字视频信息。

视频译码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或消除视频序列中固有的冗余。对于基于块的视频译码,可以将视频片(slice)(例如,视频图片或视频图片的一部分)划分为视频块,这些视频块也可以称为译码树单元(CTU)、译码单元(CU)和/或译码节点。相对于同一图片中相邻块中的参考样本,使用空间预测对图片的帧内译码(I)片中的视频块进行编码。图片的帧间译码(P或B)片中的视频块可使用关于同一图片中相邻块中参考样本的空间预测,或关于其他参考图片中的参考样本进行时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。

发明内容

通常,本公开描述了用于减少在对视频译码(code)中的运动向量进行四舍五入时引起的误差的技术。视频解码器可通过将运动向量差(MVD)添加到运动向量预测子(predictor)(MVP)来确定用于块的运动向量。运动向量差可以由视频编码器在位流中通过信令发送,并且运动向量预测子可以是先前译码的块的运动向量。当使用自适应运动向量分辨率(例如AMVR或局部AMVR(LAMVR))时,视频编码器可以使用各种分辨率(例如四分之一亮度样品精度,整数亮度样本精度或四亮度样本精度)向运动向量差通过信令发送。此外,视频解码器可以以增加的分辨率(例如,超过默认分辨率/默认单位)存储确定的运动向量。由于运动向量(用作运动向量预测子),运动向量差和默认分辨率可能都不同,因此视频解码器在计算运动向量时可以执行多个四舍五入运算,这可能会引入误差。

根据本公开的一种或多种技术,视频译码器(例如,视频编码器或视频解码器)可以在确定运动向量时执行联合四舍五入处理。举例来说,与首先将运动向量预测子从存储分辨率四舍五入为默认单位,然后将结果四舍五入为运动向量差的分辨率(例如,由于存储分辨率与运动向量差的分辨率不同)相反,视频译码器可以基于运动向量差的分辨率和存储分辨率将运动向量预测子进行一次四舍五入。用这种方式,视频译码器可减少在确定运动向量时引入的误差。通过减少引入的误差,视频译码器可以减少表示视频数据所需的位数,从而提高压缩率。

作为一个实例,一种方法包括:针对视频数据的当前块的运动向量差的值进行译码;从运动向量缓冲器中,获得针对视频数据的当前块的运动向量预测子的值;确定针对当前块的运动向量差值的分辨率;获得针对运动向量的存储分辨率移位量;基于所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量预测子的值直接四舍五入为运动向量差的值的分辨率;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得当针对前块的运动向量的值;基于针对当前块的运动向量,获得针对当前块的预测子块的样本;以及基于针对所述当前块的预测子块的样本,重构当前块的样本。

作为另一个实例,一种视频译码设备包括一个存储器,配置为存储视频数据;以及一个或多个处理单元,在电路中实现并且配置为:针对视频数据的当前块的运动向量差的值进行译码;从运动向量缓冲器中,获得针对视频数据的当前块的运动向量预测子的值;确定针对当前块的运动向量差的值的分辨率;获得针对运动向量的存储分辨率移位量;基于所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量预测子的值直接四舍五入为运动向量差的值的分辨率;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得针对当前块的运动向量的值;基于针对当前块的运动向量,获得针对当前块的预测子块的样本;以及基于针对所述当前块的预测子块的样本,重构当前块的样本。

作为另一个实例,一种视频编码设备包括:针对视频数据的当前块的运动向量差的值进行译码的部件;从运动向量缓冲器中,获得针对视频数据的当前块的运动向量预测子的值的部件;确定针对当前块的运动向量差的值的分辨率的部件;获得针对多个运动向量的存储分辨率移位量的部件;基于所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量预测子的值直接四舍五入为运动向量差值的分辨率的部件;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得针对当前块的运动向量的值的部件;基于针对当前块的运动向量,获得针对当前块的预测子块的样本的部件;以及基于针对所述当前块的预测子块的样本,重构当前块的样本的部件。

作为另一个实例,一种计算机可读存储介质存储指令,这些指令在执行时会导致一个或多个处理器执行以下操作:针对视频数据的当前块的运动向量差的值进行译码;从运动向量缓冲器中,获得针对视频数据的当前块的运动向量预测子的值;确定针对当前块的运动向量差的值的分辨率;获得针对运动向量的存储分辨率移位量;基于所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量预测子的值直接四舍五入为运动向量差的值的分辨率;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得针对当前块的运动向量的值;基于针对当前块的运动向量,获得针对当前块的预测子块的样本;以及基于针对所述当前块的预测子块的样本,重构当前块的样本。

在附图和以下说明书中将详细阐述一个或多个实例。根据说明书、附图和权利要求书,其他特征、目的和优点将是显而易见的。

附图说明

图1示出了可执行本公开的技术的实例视频编码和解码系统的框图。

图2示出了可执行本公开的技术的实例视频编码器的框图。

图3示出了可执行本公开的技术的实例视频解码器的框图。

图4示出了用于对当前块进行编码的实例方法的流程图。

图5示出了用于解码当前块的实例方法的流程图。

图6示出了用于预测当前块的实例方法的流程图。

具体实施方式

在HEVC中,当切片标头(header)中的use_integer_mv_flag等于0时,(运动向量与预测单位(PU)的预测运动向量之间的)运动向量差(MVD)以四分之一亮度(luma)样品精度为单位通过信令发送。但是,在联合探索测试模型(JEM)草案7(2017年7月13日至21日,在都灵召开的关于IT的第7次会议中,有关ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频探索小组(JVET),文档号为JVET-G1001-v1,网址为http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/7_Torino/wg11/JVET-G1001-v1.zip的联合探索测试模型7(JEM 7)的算法描述,以下简称为“JEM7”)中,介绍了一种本地自适应运动向量分辨率(LAMVR)。在联合探索测试模型7中,视频译码器(例如,视频编码器或视频解码器)可以以四分之一亮度样本精度,整数亮度样本精度或四像素精度为单位对运动向量差进行编码。在将运动向量差添加到用于构造的运动向量(MV)的选定的运动向量预测子(MVP)之前,视频译码器(例如,如下所述的视频编码器200和/或视频解码器300)将运动向量预测子四舍五入为与运动向量差具有相同的精度。同样,在联合探索测试模型7中,运动向量存储的精度提高了(至2)。视频译码器从运动向量缓冲器获取的运动向量预测子在添加运动向量差之前可能需要四舍五入为四分之一亮度样本精度。因此,如果运动向量差不是四分之一亮度样品精度,则视频译码器可以执行两次四舍五入处理。

运动向量或运动向量预测子的值通常由整数表示,精度由移位表示。例如,对于以四分之一亮度样本精度为单位的1,移位值可以是2。给定移位值N,视频译码器可执行如下四舍五入处理:

–变量RoundingOffset设置为等于1<<(N-1)

–mv[0]=(mv[0]>=0?(mv[0]+RoundingOffset)>>N:-((-mv[0]+RoundingOffset)>>N))<

–mv[1]=(mv[1]>=0?(mv[1]+RoundingOffset)>>N:-((-mv[1]+RoundingOffset)>>N))<

其中,mv[0]是运动向量的x分量,且mv[1]是运动向量的y分量。

如上所述,上述两个四舍五入处理可能导致四舍五入误差,该误差可能会累积。以下实例示出了该误差:

·默认单位为四分之一亮度样品精度,且运动向量存储为1/16亮度样品精度。

·以1/16亮度样品精度为单位,从运动向量缓冲器中获取的运动向量预测子为(7,0)。

·移位N为2,运动向量预测子首先以1/16亮度样品精度为单位四舍五入为四分之一亮度样品精度为(8,0)。

ο此时,以1/16亮度样品精度为单位,四舍五入误差为1。

·如果运动向量差为整数亮度样本精度,则以1/16亮度样品精度为单位,将值(8,0)进一步四舍五入为(16,0)。

ο以1/16亮度样本精度为单位,第2次四舍五入的四舍五入误差为8。

·以1/16亮度样本精度(16-7)为单位,总四舍五入误差为9,这是在两次四舍五入处理中累积的。

根据一种或多种技术,视频译码器可使用联合四舍五入处理。举例说明,变量ImvShift可以指示运动向量差分辨率(例如,如以信令发送的运动向量差的分辨率)。在一些实例中,ImvShift的值可以指示运动向量差分辨率,使得1<

变量MvStorageShift可以指示存储中运动向量精度提高,使得1/(1<

mvpLX[0]示为运动向量预测子的x分量,且mvpLX[1]示为运动向量预测子的y分量。如果默认单位是四分之一亮度样本精度,则视频译码器可以按如下所示对运动向量预测子进行四舍五入处理:

·MvShift=ImvShift+MvStorageShift

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=(mvpLX[0]>=0?(mvpLX[0]+RoundingOffset)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))<

·mvpLX[1]=mvpLX[1]>=0?(mvpLX[1]+RoundingOffset)>>MvShift:-((-mvpLX[1]+RoundingOffset)>>MvShift))<

如果默认单位与运动向量存储中的默认单位相同,则视频译码器可以按以下方式对运动向量预测子进行四舍五入处理:

·MvShift=ImvShift+MvStorageShift

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=(mvpLX[0]>=0?(mvpLX[0]+RoundingOffset)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))<

·mvpLX[1]=(mvpLX[1]>=0?(mvpLX[1]+RoundingOffset)>>MvShift:-((-mvpLX[1]+RoundingOffset)>>MvShift))<

在另一实例中,按如下所述,视频译码器可对运动向量进行四舍五入,其中MvShift为取决于期望四舍五入精度的变量。

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=(mvpLX[0]>=0?(mvpLX[0]+RoundingOffset-1)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))<

·mvpLX[1]=mvpLX[1]>=0?(mvpLX[1]+RoundingOffset-1)>>MvShift:-((-mvpLX[1]+RoundingOffset)>>MvShift))<

给定与上面相同的实例,通过建议的联合四舍五入处理将(7,0)四舍五入为(0,0)。以1/16亮度样本精度为单位,四舍五入误差为7,而不是9。因此,通过执行如本公开中所描述的联合四舍五入处理,视频译码器可减少在四舍五入运动向量时引入的误差。通过视频译码器减少引入的误差量,本公开的技术可以提高视频压缩的效率(例如,降低位率)。

在一些实例中,向量(例如,运动向量预测子)的负值可以取整为0。与上述四舍五入处理相比,视频译码器可以避免必须确定正被四舍五入的运动向量的值的符号(即,可以避免“mvpLX[0]>=0”运算),从而降低了复杂度。通过降低四舍五入运动向量的复杂度,本公开的技术可以使视频译码器能够以减少的计算资源来执行编码/解码。

如果默认单位是四分之一亮度样本精度,则视频译码器可以按如下所示对运动向量预测子进行四舍五入处理:

·MvShift=ImvShift+MvStorageShift

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=((mvpLX[0]+RoundingOffset)>>MvShift)<

·mvpLX[1]=((mvpLX[1]+RoundingOffset)>>MvShift)<

如果默认单位与运动向量存储中的默认单位相同,则视频译码器可以按以下方式对运动向量预测子进行四舍五入处理:

·MvShift=ImvShift+MvStorageShift

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=((mvpLX[0]+RoundingOffset)>>MvShift)<

·mvpLX[1]=((mvpLX[1]+RoundingOffset)>>MvShift)<

在一些实例中,在考虑将运动向量预测子添加到运动向量预测子候选者列表之前,视频译码器可对每个可能的运动向量预测子执行联合四舍五入操作。以这种方式,四舍五入处理可以在运动向量预测子候选者列表的修剪(pruning)处理之前执行(例如,从运动向量预测子候选者列表中删除候选运动向量预测子,例如冗余运动向量预测子)。在将运动向量预测子添加到运动向量预测子候选列表之前执行联合四舍五入操作的实例中,对四舍五入后的运动向量预测子执行修剪处理。在其他实例中,视频译码器可在构造运动向量预测子候选者列表之后对选定的运动向量预测子执行联合四舍五入操作。因此,可以在四舍五入之前对运动向量预测子执行修剪处理。

根据本公开的一种或多种技术,视频译码器可利用统一四舍五入处理用于所有运动向量四舍五入操作。举例来说,视频译码器可在自适应运动向量分辨率和增加的运动向量分辨率中利用上述四舍五入处理。在一些实例中,当在仿射(affine)运动向量推导处理,时间运动向量预测因子推导处理,根据当前图片和参考图片的图片顺序计数的运动向量缩放等中时,视频译码器可应用相同的四舍五入处理。

通过对所有取整处理利用统一的(即相同的)取整程序,可以降低视频译码器的复杂性。举例来说,相同的功能/模块可以用于所有运动向量四舍五入操作。在一些实例中,四舍五入之间的唯一区别可以是输入移位数,示为MvShift。

在一实例中,视频译码器可执行如下统一四舍五入程序:

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=(mvpLX[0]>=0?(mvpLX[0]+RoundingOffset-1)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))<

·mvpLX[1]=mvpLX[1]>=0?(mvpLX[1]+RoundingOffset-1)>>MvShift:-((-mvpLX[1]+RoundingOffset)>>MvShift))<

在另一个实例中,视频译码器可以执行如下统一的四舍五入程序:

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=(mvpLX[0]>=0?(mvpLX[0]+RoundingOffset)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))<

·mvpLX[1]=mvpLX[1]>=0?(mvpLX[1]+RoundingOffset)>>MvShift:-((-mvpLX[1]+RoundingOffset)>>MvShift))<

在另一个实例中,视频译码器可以执行如下统一的四舍五入程序:

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=((mvpLX[0]+RoundingOffset)>>MvShift)<

·mvpLX[1]=((mvpLX[1]+RoundingOffset)>>MvShift)<

图1示出了可执行本公开的技术的实例视频编码和解码系统100的框图。本公开的技术通常针对译码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未译码的视频、编码的视频、解码的(例如,重构的)视频以及视频元数据,例如信令数据。

如图1所示,在该实例中,系统100包括源设备102,其提供要由目标设备116解码和显示的编码视频数据。特别地,源设备102经由计算机可读介质110将视频数据提供给目标设备116。源设备102和目标设备116可以包括各种各样设备中的任何一种,包括台式计算机、笔记本计算机(即膝上型计算机)、平板计算机、机顶盒、诸如智能手机的电话手机、电视、照相机、显示设备、数字媒体播放器、视频游戏机、视频流设备或类似。在一些情况下,源设备102和目标设备116可以被配备用于无线通信,因此可以被称为无线通信设备。

在图1的实例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置为采用以增加存储的运动向量的精度来执行自适应运动向量差分辨率的技术。因此,源设备102表示视频编码设备的实例,而目标设备116表示视频解码设备的实例。在其他实例中,源设备和目标设备可以包括其他组件或配置。例如,源设备102可以从诸如外部摄像机的外部视频源接收视频数据。同样,目标设备116可以与外部显示设备连接,而不包括集成显示设备。

如图1所示的系统100仅是一个实例。通常,任何数字视频编码和/或解码设备可以执行以增加存储的运动向量的精度执行自适应运动向量差分辨率的技术。源设备102和目标设备116仅仅是此类译码设备的实例,其中源设备102生成译码视频数据以发送到目标设备116。本公开将“译码”设备称为执行数据译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备特别是视频编码器和视频解码器的实例。在一些实例中,设备102、116可以以基本上对称的方式操作,使得设备102、116的每个包括视频编码和解码组件。因此,系统100可以支持视频设备102、116之间的单向或双向视频发送,例如,用于视频流、视频回放、视频广播或视频电话。

通常,视频源104表示视频数据(即,原始的、未译码的视频数据)的源,并将视频数据的一系列连续的图片(也称为“帧”)提供给视频编码器200,视频编码器200对数据进行编码以用于图片。源设备102的视频源104可以包括视频捕获设备,例如摄像机、包含先前捕获的原始视频的视频档案和/或视频馈送接口,以从视频内容提供商接收视频。作为进一步的选择,视频源104可以生成基于计算机图形的数据作为源视频,或者是实况视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图像从接收到的顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括编码的视频数据的位流。然后,源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,以通过例如目标设备116的输入接口122进行接收和/或检索。

源设备102的存储器106和目标设备116的存储器120代表通用存储器。在一些实例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始、解码的视频数据。附加地或可替代地,存储器106、120可以存储分别可由例如视频编码器200和视频解码器300执行的软件指令。尽管在此实例中与视频编码器200和视频解码器300分开示出,但应理解,视频编码器200和视频解码器300还可包括内部存储器,以实现功能上相似或等效目的。此外,存储器106、120可以存储例如从视频编码器200输出并输入到视频解码器300的编码视频数据。在一些实例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,以存储如原始的、解码的和/或编码的视频数据。

计算机可读介质110可以代表能够将编码的视频数据从源设备102发送到目标设备116的任何类型的介质或设备。在一个实例中,计算机可读介质110代表一种通信介质,该通信介质能够使源设备102经由如射频网络或基于计算机的网络将编码的视频数据直接实时地发送到目标设备116。根据诸如无线通信协议的通信标准,输出接口108可以调制包括编码的视频数据的发送信号,并且输入接口122可以调制接收的发送信号。通信介质可以包括任何无线或有线通信介质,例如射频(RF)频谱或一条或多条物理发送线。通信介质可以形成诸如局域网,广域网或诸如因特网之类的全球网络的基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站或任何其他有助于从源设备102到目标设备116的通信的设备。

在一些实例中,源设备102可以将编码的数据从输出接口108输出到存储设备116。类似地,目标设备116可以经由输入接口122访问来自存储设备116的编码数据。存储设备116可以包括各种分布式或本地访问的数据存储介质中的任何一种,例如硬盘驱动器、蓝光光碟、DVD、CD-ROM、闪存、易失性或非易失性存储器或任何其他合适的数字存储介质,用于存储编码视频数据。

在一些实例中,源设备102可以将编码视频数据输出到文件服务器114或可以存储由源设备102生成的编码视频的另一个中间存储设备。目标设备116可以经由流介质或下载访问存储的来自文件服务器114的视频数据。文件服务器114可以是能够存储编码视频数据并将该编码视频数据发送到目标设备116的任何类型的服务器设备。文件服务器114可以代表网页服务器(例如,用于网站)、文件发送协议(FTP)服务器、内容传递网络设备或网络附加存储(NAS)设备。目标设备116可以通过包括互联网连接的任何标准数据连接访问来自文件服务器114的编码视频数据。这可以包括适合于访问存储在文件服务器114上的编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL,电缆调制解调器等)或两者的组合。文件服务器114和输入接口122可以被配置为根据流发送协议、下载发送协议或其组合来操作。

输出接口108和输入接口122可以代表无线发射机/接收机、调制解调器、有线网络组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的实例中,输出接口108和输入接口122可以被配置为根据诸如4G、4G-LTE(长期演进技术)、高级LTE、5G或类似的蜂窝通信标准来发送诸如编码视频数据的数据。在输出接口108包括无线发射机的一些实例中,输出接口108和输入接口122可以配置为根据其他无线标准,例如IEEE 802.11规范、IEEE 802.15规范(例如ZigBee

本公开的技术可以应用于支持各种多媒体应用程序中的任何一种的视频译码,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输,诸如通过HTTP(DASH)的动态自适应流发送,编码到数据存储介质上的数字视频、存储在数据存储介质上的数字视频的解码,或其他应用程序。

目标设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114或类似)接收编码的视频位流。编码的视频位流计算机可读介质110可以包括由视频编码器200定义的,也由视频解码器300使用的信令信息,诸如具有描述视频块或其他译码单元的特性和/或处理的值的语法元素(例如,切片、图片、图片组、序列或类似)。显示设备118向用户显示解码视频数据的解码图片。显示设备118可以代表各种显示设备中的任何一种,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器或另一种类型的显示设备。

尽管未在图1中示出,但在某些实例中,视频编码器200和视频解码器300可以分别与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,以处理公共数据流中包括音频和视频的多路复用流。如果适用,MUX-DEMUX单元可以符合ITU H.223多路复用器协议或其他协议,例如用户数据报协议(UDP)。

视频编码器200和视频解码器300可分别实现为各种适当的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当技术部分地以软件实施时,设备可将用于软件的指令存储在适当的非暂时性计算机可读介质中,并使用一个或多个处理器以硬件方式执行指令以执行本公开的技术。视频编码器200和视频解码器300的每个可以被包括在一个或多个编码器或解码器中,所述编码器或解码器的任一个可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。

视频编码器200和视频解码器300可以根据视频译码标准,例如ITU-T H.265,也称为高效视频译码(HEVC)或其扩展(例如多视图和/或可缩放视频译码扩展)进行操作。可替代地,视频编码器200和视频解码器300可以根据诸如联合勘探测试模型(JEM)之类的其他专有或行业标准来操作。然而,本公开的技术不限于任何特定的译码标准。

通常,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”通常是指包括要处理的(例如,在编码和/或解码处理中编码,解码或以其他方式使用的)数据的结构。例如,块可以包括亮度和/或色度数据样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y,Cb,Cr)格式表示的视频数据进行译码。也就是说,不是译码图片的样本的红、绿和蓝(RGB)数据,而是视频编码器200和视频解码器300可以对亮度和色度分量进行编码,其中色度分量可以包括红色和蓝色色度分量。在一些实例中,视频编码器200在编码之前将接收到的RGB格式的数据转换成YUV表示,并且视频解码器300将YUV表示转换成RGB格式。可替代地,预处理和后处理单元(未示出)可以执行这些转换。

通常,本公开可为图片译码(例如,编码和解码)以包括对图片的数据进行编码或解码的处理。类似地,本发明可涉及对图片块的编码以包括对块的数据进行编码或解码的处理,例如,预测和/或残差译码。编码的视频位流通常包括用于语法元素的一系列值,这些语法元素表示译码决策(例如,译码模式)以及将图片划分为块。因此,对译码图片或块的引用通常应理解为用于形成图片或块的语法元素的编码值。

高效视频编码定义各种块,包括译码单元(CU)、预测单元(PU)和变换单元(TU)。根据高效视频编码,视频译码器(例如,视频编码器200)根据四叉树结构将译码树单元(CTU)划分为译码单元。也就是说,视频译码器将译码树单元和编码单元划分为四个相等的,不重叠的正方形,并且四叉树的每个节点都具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的编码单元可以包括一个或多个预测单元和/或一个或多个变换单元。视频译码器可进一步分割预测单元和变换单元。例如,在高效视频译码处理中,残差四叉树(RQT)表示变换单元的分区。在高效视频译码处理中,预测单元表示帧间预测数据,而变换单元表示残差数据。帧内预测的译码单元包括帧内预测信息,例如帧内模式指示。

作为另一实例,视频编码器200和视频解码器300可以被配置为根据JEM进行操作。根据JEM,视频译码器(例如,视频编码器200)将图片划分为多个译码树单元(CTU)。视频编码器200可根据树结构(诸如四叉树-二叉树(QTBT)结构)划分译码树单元。JEM的四叉树-二叉树结构消除了多个分区类型的概念,例如高效视频编码的译码单元、预测单元和变换单元之间的分隔。JEM的四叉树-二叉树结构包括两个级别:根据四叉树分区划分的第一级,以及根据二叉树分区划分的第二级。四叉树-二叉树结构的根节点对应于译码树单元。二叉树的叶节点对应于译码单元(CU)。

在一些实例中,视频编码器200和视频解码器300可以使用单个四叉树-二叉树结构来表示亮度和色度分量中的每个,而在其他实例中,视频编码器200和视频解码器300可以使用两个或更多个四叉树-二叉树结构,例如一个用于亮度分量的四叉树-二叉树结构和用于两个色度分量的另一个四叉树-二叉树结构(或用于各个色度分量的两个四叉树-二叉树结构)。

视频编码器200和视频解码器300可以被配置为使用每个高效视频编码的四叉树分区,根据联合勘探测试模型的四叉树-二叉树分区,或其他分区结构。为了说明,本公开的技术方面的描述展现了四叉树-二叉树分区。然而,应理解,本公开的技术还可应用于配置为使用四叉树分割或其它类型的分割的视频译码器。

本公开可互换地使用“NxN”和“N乘N”来指代块(例如译码单元或其他视频块)在垂直和水平维度方面的样本尺寸,例如16x16样本或16乘16样本。通常,一个16x16译码单元在垂直方向上将有16个样本(y=16),在水平方向上将有16个样本(x=16)。同样地,NxN译码单元通常在垂直方向上具有N个样本,在水平方向上具有N个样本,其中N表示非负整数值。译码单元中的样本可以按行和列排列。此外,编码单元在水平方向上不必具有与垂直方向上相同数量的样本。例如,编码单元可包含NxM个样本,其中M不一定等于N。

视频编码器200对表示预测信息和/或残差信息以及其他信息的编码单元的视频数据进行编码。预测信息指示将如何预测译码单元以便形成用于译码单元的预测块。残差信息通常代表编码之前的译码单元样本与预测块之间的逐样本差异。

为了预测译码单元,视频编码器200通常可通过帧间预测或帧内预测来形成用于译码单元的预测块。帧间预测通常是指根据先前译码的图片的数据来预测译码单元,而帧内预测通常是指根据同一图像的先前译码的数据来预测译码单元。为了执行帧间预测,视频编码器200可使用一个或多个运动向量来产生预测块。视频编码器200可执行运动搜索以从译码单元与参考块之间的差异方面识别与译码单元紧密匹配的参考块。视频编码器200可使用绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)或其他此类差值计算来确定差值度量,以确定参考块是否与当前的译码单元紧密匹配。在一些实例中,视频编码器200可使用单向预测或双向预测来预测当前译码单元。

联合勘探测试模型还提供了仿射运动补偿模式,可以将其视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定至少两个表示非平移运动的运动向量,例如放大或缩小、旋转、透视运动或其他不规则运动类型。

为了执行帧内预测,视频编码器200可以选择帧内预测模式以生成预测块。联合勘探测试模型提供了67种帧内预测模式,包括各种方向模式以及平面模式和DC模式。通常,视频编码器200选择帧内预测模式,该帧内预测模式描述当前块(例如,译码单元的块)的相邻样本,根据该相邻样本预测当前块的样本。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对译码树单元和译码单元进行编码,则此类样本通常可以在与当前块相同的图片中位于当前块的上方、左上方、或左侧。

视频编码器200对表示当前块的预测模式的数据进行编码。举例来说,对于帧间预测模式,视频编码器200可编码表示使用各种可用帧间预测模式中的哪一个的数据以及对应模式的运动信息。例如,对于单向或双向帧间预测,视频编码器200可使用高级运动向量预测(AMVP)或合并模式来对运动向量进行编码。视频编码器200可使用类似模式来对仿射运动补偿模式的运动向量进行编码。

在诸如块的帧内预测或帧间预测之类的预测之后,视频编码器200可计算该块的残差数据。残差数据,例如残差块,表示该块与使用相应预测模式形成的该块的预测块之间的逐样本差异。视频编码器200可将一个或多个变换应用于残差块,以在变换域而非样本域中产生经变换的数据。举例来说,视频编码器200可将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可在第一变换之后应用次级变换,例如,模式相关的不可分二次变换(MDNSST)、信号相关的变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。

如上所述,在进行任何变换以产生变换系数之后,视频编码器200可进行变换系数的量化。量化通常是指对变换系数进行量化以尽可能减少用于表示系数的数据量,从而提供进一步压缩的处理。通过进行量化处理,视频编码器200可减小与一些或所有系数相关联的位深度。例如,视频编码器200可以在量化期间将n位的值四舍五入为m位的值,其中n大于m。在一些实例中,为了进行量化,视频编码器200可对待量化的值进行按位右移。

在量化之后,视频编码器200可扫描变换系数,从而从包括量化的变换系数的二维矩阵产生一维向量。可以将扫描设计为将较高能量(因此频率较低)的系数放在向量的前面,并将较低能量(因此频率较高)的变换系数放在向量的后面。在一些实例中,视频编码器200可以利用预定义的扫描顺序来扫描量化的变换系数以产生串行化的向量,然后对向量的量化的变换系数进行熵编码。在其他实例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维向量之后,视频编码器200可以根据诸如基于上下文的自适应二进制算术译码(CABAC)对一维向量进行熵编码。视频编码器200还可对语法元素的值进行熵编码,该语法元素描述与编码的视频数据相关联的元数据,以供视频解码器300在解码视频数据时使用。

为了执行基于上下文的自适应二进制算术译码,视频编码器200可将上下文模型内的上下文指派给要传送的符号。上下文可以涉及例如符号的相邻值是否为零值的内容。概率可以基于分配给符号的上下文来确定。

视频编码器200还可以在诸如图片头、块头、片头中,为视频解码器300生成语法数据,例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,或其他语法数据,例如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。同样地,视频解码器300可类似地解码此类语法数据以确定如何解码对应的视频数据。

以此方式,视频编码器200可产生包含编码视频数据的位流,例如,描述将图片划分成块(例如,译码单元)的语法元素以及用于所述块的预测信息和/或残差信息。最终,视频解码器300可以接收位流并解码编码的视频数据。

通常,视频解码器300执行与视频编码器200相逆(reciprocal)的处理以解码位流的编码视频数据。例如,视频解码器300可以使用基于上下文的自适应二进制算术译码以与视频编码器200的基于上下文的自适应二进制算术译码编码处理基本相似但是彼此相反的方式来解码位流的语法元素的值。语法元素可将图片的分区信息定义为译码树单元,并根据诸如四叉树-二叉树结构的对应分区结构对每个译码树单元进行划分,以定义译码树单元的译码单元。语法元素可进一步界定视频数据的块(例如,译码单元)的预测和残差信息。

残差信息可以由例如量化的变换系数表示。视频解码器300可对块的量化变换系数进行逆量化和逆变换以再现该块的残差块。视频解码器300使用信令发送的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。然后,视频解码器300可以组合预测块和残差块(在逐样本的基础上)以再现原始块。视频解码器300可执行附加处理,例如执行解块处理以减少沿着块的边界的视觉伪像(visual artifact)。

根据本公开的技术,视频编码器200和/或视频解码器300可减少在对运动向量进行四舍五入时(例如,当以增加的存储的运动向量的精度执行自适应运动向量差分辨率时)引入的误差。例如,视频解码器300可以从译码的视频位流中解码视频数据的当前块的运动向量差(MVD)的值。视频解码器300可从运动向量缓冲器获得用于视频数据的当前块的运动向量预测子(MVP)的值。

如上所述,可以用不同的分辨率/精度来发信号/存储或以其他方式表示各种运动向量、运动向量预测子和运动向量差。例如,可以以四分之一亮度样本、整数亮度样本或四亮度样本(例如,四分之一亮度样本精度,整数亮度样本精度或四亮度样本精度)为单位对运动向量差进行译码。由于运动向量被计算作为运动向量预测子和运动向量差之和,因此视频解码器300可能有必要在计算运动向量的值时将运动向量预测子的值和/或运动向量差的值四舍五入。这些四舍五入操作可能会引入误差,这是不可取的。本公开提供了用于减少因去除另外执行的至少一个四舍五入操作而引入的误差量的技术(例如,其中至少一个四舍五入操作的去除可以通过执行联合四舍五入处理来实现)。可以将联合四舍五入处理视为“联合”,因为它可以在单个四舍五入操作中生成两次四舍五入操作的结果,与两次四舍五入操作相比,引入的误差较小。

为了进行联合四舍五入处理,视频解码器300可以确定当前块的运动向量差的值的分辨率,并且确定运动向量的存储分辨率移位量。例如,视频解码器300可以基于LAMVR来确定运动向量差的值的分辨率。视频解码器300可以将存储分辨率移位量确定为所有视频数据的常数,或者自适应地确定当前图片或块。例如,在根据联合勘探测试模型对视频数据进行编码的情况下,视频解码器300可以确定用于运动向量存储的精度增加了2位(例如,相对于运动向量差的信令发送的精度)。

视频解码器300可以基于运动向量差的值的分辨率和存储分辨率移位量来对从运动向量缓冲器获得的运动向量预测子的值四舍五入。举例来说,视频解码器300可基于运动向量差的值的分辨率和存储分辨率移位量来确定第一移位值(例如,MvShift)。视频解码器300可以将从运动向量缓冲器获得的运动向量预测子的值加上四舍五入偏移量(例如,mvpLX[0]>=0?(mvpLX[0]+RoundingOffset)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))右移第一移位值。视频解码器300可将运动向量预测子的右移值左移第二移位值(例如,ImvShift或MvShift)以获得运动向量预测子的四舍五入值。

视频解码器300可基于视频数据块的默认分辨率是否与视频数据块的存储分辨率相同来选择第二移位值。作为一个实例,在默认分辨率与存储分辨率不同的情况下,视频解码器300可以选择第二移位值作为运动向量差的值的分辨率。作为另一个实例,在默认分辨率与存储分辨率相同的情况下(例如,在默认单位为四分之一亮度样本的情况下),视频解码器300可以选择第二移位值作为第一移位值(例如,第一移位值=第二移位值=MvShift)。

视频解码器300可利用运动向量预测子的四舍五入值来重构当前块的样本。举例来说,视频解码器300可将运动向量预测子的四舍五入值添加到运动向量差的值以获得当前块的运动向量的值;基于当前块的运动向量,从参考图片缓冲器中获得当前块的预测子块的样本;并基于当前块的预测子块的样本来重建当前块的样本。

视频编码器200可以以类似的方式(例如,在重构循环中)利用联合四舍五入处理。以此方式,视频编码器200和/或视频解码器300可以减少引入的误差量。减少引入的误差量可能会导致更准确的预测,从而可能导致较小的残差数据。同样地,本公开的技术能够改进视频数据的压缩。

一般地,本公开可以涉及“通过信令发送”某些信息,例如语法元素。术语“通过信令发送”通常可以指语法元素和/或用于解码编码的视频数据的其他数据的值的通信。也就是说,视频编码器200可通过信令发送位流中的语法元素的值。通常,通过信令发送是指在位流中生成值。如上所述,源设备102可以基本上实时地或不实时地将位流发送到目标设备116,例如,在将语法元素存储到存储设备112以供稍后由目标设备116检索时可能会发生这种情况。

图2为示出了可执行本公开的技术的实例视频编码器200的框图。提供图2是为了说明,不应认为是对本公开中广泛例示和描述的技术的限制。为了说明,本公开在诸如高效视频译码的视频译码标准和当前正在开发的通用视频译码(VVC)标准的视频译码标准的背景下描述了视频编码器200,其可以成为ITU-T H.266标准。然而,本公开的技术不限于这些视频译码标准,并且通常可应用于视频编码和解码。

在图2的实例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(DPB)218和熵编码单元220。

视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。解码图片缓冲器218可以用作参考图片存储器,该参考图片存储器存储参考视频数据,以供视频编码器200预测后续视频数据时使用。附加地或替代地,解码图片缓冲器218可以包括运动向量缓冲器,该运动向量缓冲器存储针对视频数据的块的运动向量(例如,可以用于预测针对视频数据的其他块的运动向量)。视频数据存储器230和解码图片缓冲器218可以由多种存储设备中的任何一种形成,例如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM),磁阻RAM(MRAM),电阻性RAM(RRAM)或其他存储设备的类型。视频数据存储器230和解码图片缓冲器218可以由相同的存储设备或分离的存储设备提供。在各种实例中,视频数据存储器230可以与视频编码器200的其他组件一起在芯片上,如图所示,或者相对于那些组件在芯片外。

在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器,除非有类似明确地描述,或者为视频编码器200外部的存储器,除非有类似明确地描述。相反,对视频数据存储器230的引用应被理解为存储视频编码器200所接收的用于编码的视频数据(例如,要编码的当前块的视频数据)的参考存储器。图1的存储器106还可对来自视频编码器200的各个单元的输出进行临时存储。

示出了图2中各个单元以帮助理解由视频编码器200执行的各项操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并在可执行操作上预先设置的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些实例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些实例中,一个或多个单元可以是集成电路。

视频编码器200可包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核。在使用由可编程电路执行的软件来执行视频编码器200的操作的实例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的目标代码,或者在视频编码器200内的另一个存储器(未示出)可能会存储此类指令。

视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。

模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元,以根据其他预测模式来执行视频预测。作为实例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元,或类似的单元。

模式选择单元202通常配合多次编码,以测试编码参数的组合以及针对该组合的结果率失真值。编码参数可以包括将译码树单元划分为编码单元、用于编码单元的预测模式、用于编码单元的残差数据的变换类型、用于编码单元的残差数据的量化参数等等。模式选择单元202可以最终选择具有比其他测试的组合更好的率失真值的编码参数的组合。

视频编码器200可将从视频数据存储器230检索到的图片划分为一系列译码树单元,并将一个或多个译码树单元封装在片内。模式选择单元202可以根据树结构,例如上述高效视频编码的四叉树-二叉树结构或四叉树结构,来划分图片的译码树单元。如上所述,视频编码器200可根据树结构通过划分译码树单元来形成一个或多个译码单元。这样的译码单元也通常可以被称为“视频块”或“块”。

通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前CU、或在HEVC中、PU和CU的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可执行运动搜索以识别一个或多个参考图片(例如,存储在解码图片缓冲器218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。特别地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算表示潜在参考块与当前块有多相似的值。运动估计单元222通常可使用当前块与所考虑的参考块之间的逐样本差异来执行这些计算。运动估计单元222可识别具有由这些计算产生的最低值的参考块,其指示与当前块最紧密匹配的参考块。

运动估计单元222可形成一个或多个运动向量(MV),其界定参考图片中的参考块相对于当前图片中当前块的位置。运动估计单元222然后可以将运动向量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动向量,而对于双向帧间预测,运动估计单元222可以提供两个运动向量。运动补偿单元224然后可使用运动向量来产生预测块。例如,运动补偿单元224可以使用运动向量来检索参考块的数据。作为另一实例,如果运动向量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器来插值针对预测块的值。此外,对于双向帧间预测,运动补偿单元224可通过诸如逐样本平均或加权平均来检索由相应运动向量标识的两个参考块的数据,并组合所检索的数据。

作为另一实例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于定向模式,帧内预测单元226通常可以在数学上组合相邻样本的值,并在当前块上沿定义的方向填充这些计算值以产生预测块。作为另一实例,对于DC模式,帧内预测单元226可以计算到当前块相邻样本的平均值,并且生成预测块以包括针对预测块的每个样本的该所得平均值。

模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未译码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样本差。所得的逐样本差异定义了当前块的残差块。在一些实例中,残差生成单元204还可确定残差块中的样本值之间的差以使用残差差分脉冲代码调制(RDPCM)来产生残差块。在一些实例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。

在模式选择单元202将译码单元划分为预测单元的实例中,每个预测单元可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的预测单元。如上面所指示的,译码单元的大小可以指的是译码单元的亮度译码块的大小,并且预测单元的大小可以指的是预测单元的亮度预测单元的大小。假设特定译码单元的大小为2Nx2N,则视频编码器200可支持用于帧内预测的2Nx2N或NxN的预测单元大小,以及用于帧间预测的2Nx2N,2NxN,Nx2N,NxN或类似的预测单元对称大小。视频编码器20和视频解码器30还可针对用于帧间预测的2NxnU,2NxnD,nLx2N和nRx2N的预测单元大小支持非对称分区。

在模式选择单元不将译码单元进一步划分成预测单元的实例中,每个译码单元可与亮度编码块和对应的色度编码块相关联。如上所述,译码单元的大小可以指译码单元的亮度译码块的大小。视频编码器200和视频解码器300可以支持2Nx2N,2NxN或Nx2N的译码单元大小。

对于其他视频译码技术,例如块内复制模式译码、仿射模式译码和线性模型(LM)模式译码,作为少数实例,模式选择单元202会通过与译码技术相关联的各个单元来生成用于当前编码块的预测块。在一些实例中,例如调色板模式译码,模式选择单元202可以不生成预测块,而是生成语法元素,该语法元素指示基于所选调色板重构块的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。

如上所述,残差生成单元204接收当前块和相应的预测块的视频数据。残差生成单元204然后为当前块生成残差块。为了产生残差块,残差生成单元204计算预测块和当前块之间的逐样本差。

变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)或概念上类似的变换应用于残差块。在一些实例中,变换处理单元206可以对残差块执行多个变换,例如主变换和副变换,例如旋转变换。在一些实例中,变换处理单元206不将变换应用于残差块。

量化单元208可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可通过调整与译码单元相关联的量化参数值来调整应用于与当前块相关联的系数块的量化程度。量化可能会导致信息丢失,因此,量化的变换系数的精度可能会比变换处理单元206生成的原始变换系数的精度低。

逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重建残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块来产生与当前块相对应的重构块(尽管可能有某种程度的失真)。例如,重构单元214可以将重构的残差块的样本添加到模式选择单元202所生成的来自预测块的对应样本,以产生重构块。

滤波器单元216可对重构块执行一个或多个滤波操作。例如,滤波器单元216可以执行解块操作以减少沿着译码单元的边缘的块状伪像(blockiness artifact)。在一些实例中,可以跳过滤波器单元216的操作。

视频编码器200将重构块存储在解码图片缓冲器218中。例如,在不需要滤波器单元216的操作的实例中,重构单元214可以将重构块存储到解码图片缓冲器218。在需要滤波器单元216操作的实例中,滤波器单元216可以将滤波后的重构块存储到解码图片缓冲器218。运动估计单元222和运动补偿单元224可从解码图片缓冲器218检索参考图片,该参考图片由重构的(并且可能滤波的)块形成,以帧间预测随后编码的图片的块。另外,帧内预测单元226可使用当前图片的解码图片缓冲器218中的重构块来对当前图片中的其他块进行帧内预测。

通常,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一个实例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一个实例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以执行基于上下文的自适应可变长度译码(CAVLC)操作,CABAC操作,可变至可变(V2V)长度译码操作,基于语法的上下文自适应二进制算术译码(SBAC)操作,概率区间分割熵(PIPE)译码操作,指数哥伦布编码操作或对数据的另一种熵编码操作。在一些实例中,熵编码单元220可以在语法元素未被熵编码的旁路模式下操作。

视频编码器200可输出包括重构块或图片的块所需的熵编码语法元素的位流。特别地,熵编码单元220可以输出位流。

关于块进行了上述操作的描述。这样的描述应该被理解为用于亮度译码块和/或色度译码块的操作。如上所述,在一些实例中,亮度译码块和色度译码块是译码单元的亮度和色度分量。在一些实例中,亮度译码块和色度译码块是预测单元的亮度和色度分量。

在一些实例中,不必针对色度译码块重复执行针对亮度译码块所执行的操作。作为一个实例,不需要重复用于识别针对亮度译码块的运动向量(MV)和参考图片的操作来识别针对色度块的运动向量和参考图片。相反,可以缩放针对亮度译码块的运动向量以确定针对色度块的运动向量,并且参考图片可以是相同的。作为另一个实例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。

如上所述,运动估计单元222可形成针对当前块的运动向量(MV),其定义参考块相对于当前块的位置。运动估计单元222可产生具有值的一个或多个语法元素以对当前块的运动向量的值进行编码。举例来说,运动估计单元222可产生语法元素,所述语法元素使视频解码器(即,图3的视频解码器300)能够基于运动向量预测子(MVP)和运动向量差(MVD)来重构当前块的运动向量的值。运动估计单元222可基于先前译码的块的运动向量或一个或多个默认值来获得运动向量预测子。在一些实例中,运动估计单元222可从各种来源(例如,空间邻近块的运动向量,时间邻近块的运动向量和默认值)获得多个候选运动向量预测子。

运动估计单元222可从与当前块的运动向量最紧密匹配的多个候选运动向量预测子中选择运动向量预测子。运动估计单元222可计算当前块的运动向量与所选运动向量预测子之间的差。运动估计单元222可产生指示选定运动向量预测子的语法元素(例如,候选运动向量预测子列表的索引)和指示运动向量差的值的语法元素。熵编码单元220可将所产生的语法元素编码到位流中。

如上所述,并且根据本公开的一种或多种技术,运动估计单元222可以在确定运动向量时执行联合四舍五入处理。例如,与首先将运动向量预测子的值从存储分辨率四舍五入为默认单位分辨率然后将结果四舍五入为运动向量差的分辨率相反,运动估计单元222可以基于运动向量差的分辨率四舍五入一次运动向量预测子,并且将其四舍五入为存储分辨率。以此方式,运动估计单元222可减少在确定运动向量时引入的误差。通过减少引入的误差,运动估计单元222可以减少用于表示视频数据的位数,从而产生改进的压缩。

以此种方式,视频编码器200表示一种视频编码设备的实例,该视频编码设备包括一个存储器,配置为存储视频数据;以及一个或多个处理单元,在电路中实施并且配置为:确定针对当前块的运动向量差的值的分辨率;从运动向量缓冲器中,获得视频数据的当前块的运动向量预测子的值;确定当前块的运动向量差的值的分辨率;获得针对运动向量的存储分辨率移位量;基于运动向量差的值的分辨率和所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量预测子的值四舍五入;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得当前块的运动向量的值;基于当前块的运动向量,获得当前块的预测子块的样本;基于所述当前块的预测子块的样本,重构当前块的样本。

图3示出了可执行本公开的技术的实例视频解码器300的框图。图3是为了解释的目的,并且不限制本公开中广泛例示和描述的技术。为了说明的目的,本公开描述了根据联合勘探测试模型和高效视频编码的技术描述的视频解码器300。然而,本公开的技术可以由被配置为其他视频译码标准的视频译码设备来执行。

在图3的实例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括加法单元,以根据其他预测模式来执行预测。作为实例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其他实例中,视频解码器300可以包括更多,更少或不同的功能组件。

译码图片缓冲器存储器320可以存储将由视频解码器300的组件解码的视频数据,例如编码的视频位流。例如,可以从计算机可读介质110(图1)获得存储在译码图片缓冲器存储器320中的视频数据。译码图片缓冲器存储器320可包括存储来自编码视频位流的编码视频数据(例如,语法元素)的译码图片缓冲器。而且,译码图片缓冲器存储器320可以存储除译码图片的语法元素之外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。解码图片缓冲器314通常存储解码的图片,当解码编码的视频位流的后续数据或图片时,视频解码器300可以输出和/或用作参考视频数据。译码图片缓冲器存储器320和解码图片缓冲器314可以由诸如动态随机存取存储器(DRAM)的各种存储设备中的任意一种形成,包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻性RAM(RRAM)或其他类型的存储设备。译码图片缓冲器存储器320和解码图片缓冲器314可以由相同的存储设备或分离的存储设备提供。在各种实例中,译码图片缓冲器存储器320可以与视频解码器300的其他组件在芯片上,或者相对于那些组件在芯片外。

附加地或替代地,在一些实例中,视频解码器300可以从存储器120(图1)检索译码的视频数据。即,存储器120可以存储如上面译码图片缓冲器存储器320所讨论的数据。同样,当视频解码器300的某些或全部功能在软件中实现以由视频解码器300的处理电路执行时,存储器120可以存储要由视频解码器300执行的指令。

示出了图3所示的各种单元以帮助理解由视频解码器300执行的各项操作。这些单元可以实现为固定功能电路、可编程电路或其组合。与图2类似,固定功能电路是指提供特定功能并且在可以执行的操作上预设的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些实例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些实例中,一个或多个单元可以是集成电路。

视频解码器300可包括算术逻辑单元、基本功能单元、数字电路、模拟电路和/或由可编程电路形成的可编程核。在视频解码器300的操作由在可编程电路上执行的软件执行的实例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。

熵解码单元302可从译码图片缓冲器接收编码的视频数据,并对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从位流中提取的语法元素来生成解码视频数据。

通常,视频解码器300在逐块的基础上重建图片。视频解码器300可单独地对每个块执行重构操作(其中当前正在重构,即,被解码的块可被称为“当前块”)。

熵解码单元302可对定义量化的变换系数块的量化的变换系数的语法元素以及诸如量化参数(QP)和/或变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的量化参数来确定量化度,并且同样地,确定逆量化度以供逆量化单元306应用。例如,逆量化单元306可以执行按位左移运算以对量化的变换系数进行逆量化。从而,逆量化单元306可以形成包括变换系数的变换系数块。

在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆离散余弦变换、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于系数块。

此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示解码图片缓冲器314中的从其检索参考块的参考图片,以及识别参考图片中参考块相对于当前图片中当前块的位置的运动向量。运动补偿单元316通常可以以与关于运动补偿单元224(图2)所描述的方式基本上相似的方式来执行帧间预测处理。

作为另一个实例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图2)所描述的方式基本上相似的方式来执行帧内预测处理。帧内预测单元318可以从解码图片缓冲器314检索到当前块的相邻样本的数据。

重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本添加到预测块的相应样本以重构当前块。

滤波器单元312可对重构块执行一个或多个滤波操作。例如,滤波器单元312可执行解块操作以减少沿着重构块的边缘的块状伪像。不一定在所有实例中都执行滤波器单元312的操作。

视频解码器300可将重构块存储在解码图片缓冲器314中。如上所述,解码图片缓冲器314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样本以及用于随后的运动补偿的先前解码的图片。此外,视频解码器300可以从解码图片缓冲器输出解码的图片,以用于随后在诸如图1的显示设备118的显示设备上呈现。

如上所述,运动补偿单元316可以获得用于当前块的运动向量(MV)的值,该运动向量定义了参考块相对于当前块的位置。运动补偿单元316可基于运动向量预测子(MVP)和运动向量差(MVD)来获得运动向量的值。运动补偿单元316可基于先前译码的块的运动向量或一个或多个默认值来获得运动向量预测子。在一些实例中,运动补偿单元316可从各种来源(例如,空间邻近块的运动向量,时间邻近块的运动向量和默认值)获得多个候选运动向量预测子。运动补偿单元316可以以类似于视频编码器200的方式获得多个候选运动向量预测子,使得由运动补偿单元316获得的多个候选运动向量预测子与由视频编码器200获得的多个候选运动向量预测子匹配。运动补偿单元316可基于指示运动向量差的值的一个或多个语法元素而获得运动向量差的值。

如上所述,各种运动向量(即,运动向量预测子、运动向量差和运动向量)可以具有不同的分辨率。在一些实例中,例如在使用自适应运动向量分辨率(AMVR)的情况下,可以以四分之一像素、整数像素和四像素分辨率用信号发送运动向量差。在一些实例中,例如在使用自适应运动向量分辨率的情况下,可以以1/16像素分辨率存储运动向量预测子,而默认单位可以是1/4像素分辨率。

为了适当地添加运动向量预测子和运动向量差的值以获得运动向量,运动补偿单元316可以执行一个或多个四舍五入操作。例如,运动补偿单元316可以执行第一四舍五入操作以将运动向量预测子四舍五入为默认单元。然后,如果以不同于默认单位的分辨率来通过信令发送运动向量差,则运动补偿单元316可以执行第二四舍五入操作以将运动向量预测子从默认单位分辨率四舍五入为运动向量差的分辨率。

如上所述,并且根据本公开的一种或多种技术,运动补偿单元316可以在确定运动向量时执行联合四舍五入处理。例如,与首先将运动向量预测子的值从存储分辨率四舍五入为默认单位分辨率然后将结果四舍五入为运动向量差的分辨率相反,运动补偿单元316可以基于运动向量差的分辨率和存储分辨率四舍五入一次运动向量预测子。以此方式,运动补偿单元316可减少在确定运动向量时引入的误差。通过减少引入的误差,运动补偿单元316可以减少表示视频数据所需的比特数,从而改善压缩。

以此种方式,视频解码器300表示一种视频解码设备的实例,该视频解码设备包括一个存储器以及一个或多个处理单元,存储器配置为存储视频数据;处理单元用于电路并且配置为:从编码的视频位流对视频数据的当前块的运动向量差的值进行解码;从运动向量缓冲器中,获得视频数据的当前块的运动向量预测子的值;确定当前块的运动向量差的值的分辨率;获得多个运动向量的存储分辨率移位量;基于运动向量差的值的分辨率和所述存储分辨率移位量,将从运动向量缓冲器获得的运动向量预测子的值四舍五入;将运动向量预测子的四舍五入值与运动向量差的值相加,以获得当前块的运动向量的值;基于当前块的运动向量,获得当前块的预测子块的样本;以及基于所述当前块的预测子块的样本,重构当前块的样本。

图4示出了用于对当前块进行编码的实例方法的流程图。当前块可以包括电流译码单元。尽管对视频编码器200(图1和2)进行了描述,但是应当理解,可以将其他设备配置为执行与图4类似的方法。

在该实例中,视频编码器200最初预测当前块(350)。举例来说,视频编码器200可形成当前块的预测块。视频编码器200可接着计算当前块的残差块(352)。为了计算残差块,视频编码器200可计算原始未译码块与当前块的预测块之间的差。然后视频编码器200可以变换和量化残差块(354)的系数。接下来,视频编码器200可以扫描残差块(356)的量化的变换系数。在扫描期间或在扫描之后,视频编码器200可对系数(358)进行熵编码。例如,视频编码器200可以使用基于上下文的CAVLC或CABAC对系数进行编码。然后,视频编码器200可输出块(360)的熵译码数据。

视频编码器200可以解码视频数据的编码的当前块作为重构循环的一部分。作为解码的一部分,视频编码器200可以在确定当前块的运动向量的值时执行上述联合四舍五入处理。

图5是示出用于解码视频数据的当前块的实例方法的流程图。当前块可以包括电流译码单元。尽管对视频解码器300(图1和3)进行了描述,但是应当理解,可以将其他设备配置为执行与图5类似的方法。

视频解码器300可接收当前块的熵编码数据,例如对应于当前块(370)的残差块的系数的熵编码的预测信息和熵译码数据。视频解码器300可熵解码经熵译码的数据以确定用于当前块的预测信息并再现残差块(372)的系数。举例来说,视频解码器300可使用本文所述的联合四舍五入处理来确定当前块的运动向量的值。

例如,视频解码器300可使用如针对当前块的预测信息所指示的帧内或帧间预测模式来预测当前块,以计算针对当前块(374)的预测块。然后,视频解码器300可对再现的系数(376)进行逆扫描,以创建量化的变换系数的块。然后,视频解码器300可对系数进行逆量化和逆变换以产生残差块(378)。最终,视频解码器300可通过组合预测块和残差块(380)来解码当前块。

图6是示出用于预测视频数据的当前块的实例方法的流程图。当前块可以包括电流译码单元。尽管对视频解码器300(图1和3)进行了描述,但是应当理解,可以将其他设备配置为执行与图6类似的方法。例如,视频编码器200可以将图6的方法作为重构循环的一部分来执行。

视频解码器300可获得当前块(702)的运动向量差(MVD)的值。举例来说,运动补偿单元316可获得(例如,从熵解码单元302)指示运动向量差的值的一个或多个语法元素的值。作为一个实例,运动补偿单元316可以获得指定运动向量差的绝对值是否大于0的第一语法元素的值(例如,abs_mvd_greater0_flag)、指定运动向量差的绝对值是否大于1的第二语法元素的值(例如,abs_mvd_greater1_flag)、指定运动向量差的绝对值的第三语法元素的值(例如,abs_mvd_minus2),和/或指定运动向量差的值的符号的第四语法元素的值(例如mvd_sign_flag)。

视频解码器300可获得当前块(704)的运动向量预测子(MVP)的值。举例来说,运动补偿单元316可从运动向量缓冲器获得先前译码块(例如,当前块的邻近块)的运动向量(MV)的值。运动向量缓冲器可以存储视频数据的先前译码块的运动向量的值。视频解码器300可将运动向量缓冲器维持在存储器中(例如,作为解码图片缓冲器314的一部分)。在一些实例中,运动向量预测子可以被称为候选运动向量预测子。例如,运动补偿单元316可从运动向量缓冲器获得多个候选运动向量预测子。实例候选运动向量预测子包括空间运动向量预测子候选、时间运动向量预测子候选、默认值和类似。

视频解码器300可确定运动向量差(706)的值的分辨率。如上所述,在一些实例中,例如在使用自适应运动向量分辨率(AMVR)的情况下,可以以不同的分辨率(例如,四分之一亮度样本分辨率、整数亮度样本分辨率和四阶亮度样本分辨率之一)通过信令发送(例如,在位流中编码)运动向量差的值。运动补偿单元316可(例如,从熵解码单元302)获得指定运动向量差(例如,ImvShift)的值的分辨率的一个或多个语法元素的值。

视频解码器300可以获得存储分辨率移位量(708)。例如,运动补偿单元316可以相对于默认单元的分辨率来确定存储运动向量的分辨率(例如,在运动向量缓冲器中)。举例来说,运动补偿单元316可确定指定存储(例如,MvStorageShift)中增加的运动向量分辨率的变量的值。在一些实例中,1/(1<

视频解码器300可以基于存储分辨率移位量将运动向量预测子的值直接四舍五入为运动向量差(710)的分辨率。例如,与首先将运动向量预测子的值四舍五入为默认单元的分辨率然后将运动向量预测子的第一四舍五入值重新四舍五入为运动向量差的分辨率相反,运动补偿单元316可以执行单个四舍五入操作以将运动向量预测子的值直接从存储它的分辨率四舍五入到运动向量差的分辨率。作为一个实例,运动补偿单元316可以根据以下等式四舍五入运动向量预测子的值,其中ImvShift表示运动向量差的值的分辨率,而MvStorageShift表示在存储中增加的运动向量分辨率:

·MvShift=ImvShift+MvStorageShift

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=(mvpLX[0]>=0?(mvpLX[0]+RoundingOffset)>>MvShift:-((-mvpLX[0]+RoundingOffset)>>MvShift))<

·mvpLX[1]=mvpLX[1]>=0?(mvpLX[1]+RoundingOffset)>>MvShift:-((-mvpLX[1]+RoundingOffset)>>MvShift))<

如上所示,在一些实例中,运动补偿单元316可以评估运动向量预测子的值的符号作为四舍五入处理的一部分以确定是朝着零四舍五入还是远离零四舍五入。特别地,如上所述,运动补偿单元316评估运动向量预测子的值是否大于或等于零(即,mvpLX[0]>=0),以确定是否四舍五入为(mvpLX[0]+RoundingOffset)<>MvShift))<

·MvShift=ImvShift+MvStorageShift

·变量RoundingOffset设置为等于1<<(MvShift–1)

·mvpLX[0]=((mvpLX[0]+RoundingOffset)>>MvShift)<

·mvpLX[1]=((mvpLX[1]+RoundingOffset)>>MvShift)<

以此方式,视频解码器300可避免基于运动向量预测子的值的符号而使用两种不同的四舍五入技术。这样,本公开的技术可以降低四舍五入处理的复杂度。

视频解码器300可将运动向量预测子的四舍五入值与运动向量差的值相加以获得当前块(712)的运动向量的值。例如,在运动向量预测子和运动向量差的值处于相同分辨率的情况下,运动补偿单元316可以将运动向量预测子和运动向量差的值相加以获得当前块的运动向量的值。

视频解码器300可基于运动向量的值获得预测子块(714)的样本。例如,运动补偿单元316可获得针对当前块的由运动向量识别的预测子块的样本。如上文参考图5所论述,视频解码器300可在图5的步骤374中获得预测子块的样本。视频解码器300可基于预测子块的样本来重构当前块的样本。举例来说,如图5的块380中所示,视频解码器300可形成残差块,且将残差块的样本与预测子块的样本组合以获得当前块的重构样本。

如上所述,在一些实例中,运动补偿单元316可从运动向量缓冲器获得多个候选运动向量预测子。在一些实例中,运动补偿单元316可以对多个候选运动向量预测子执行修剪处理(例如,以去除重复项)。运动补偿单元316可以在各个点执行修剪处理。作为一个实例,运动补偿单元316可以在四舍五入运动向量预测子的值之前执行修剪处理。例如,运动补偿单元316可以对候选运动向量预测子的四舍五入值执行修剪处理以生成运动向量预测子候选列表。作为另一个实例,运动补偿单元316可以在四舍五入运动向量预测子的值之后执行修剪处理。例如,运动补偿单元316可以对候选运动向量预测子的未四舍五入值执行修剪处理以生成运动向量预测子候选列表,然后对运动向量预测子候选列表中的运动向量预测子执行四舍五入处理。

应当认识到,根据实例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加,合并或完全省略(例如,并非所有描述的动作或事件都是技术实践所必需的)。此外,在某些实例中,动作或事件可以例如通过多线程处理,中断处理或多个处理器并发地而不是顺序地执行。

在一个或多个实例中,可以以硬件,软件,固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质发送,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可以由一台或多台计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为实例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储,磁盘存储或其他磁性存储设备,闪存或任何其他可以用来以指令或数据结构的形式存储所需的程序代码,并且可以由计算机访问。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(例如红外,无线电和微波)从网站,服务器或其他远程源发送指令,则介质的定义包括同轴电缆,光纤电缆,双绞线,数字用户线或诸如红外,无线电和微波之类的无线技术。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接,载波,信号或其他瞬时介质,而是针对非瞬时的有形存储介质。本文使用的磁盘和光盘包括光碟(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效的集成或离散逻辑电路。因此,如本文所使用的术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,该技术可以在一个或多个电路或逻辑元素中完全实现。

本公开的技术可以在包括无线手持机、集成电路(IC)或一组集成电路(例如,芯片组)的多种设备或装置中实现。在本发明中描述各种组件,模块或单元以强调配置为执行所揭示技术的装置的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括合适的软件和/或固件的互操作硬件单元的集合来提供,所述互操作硬件单元包括如上所述的一个或多个处理器。

已经描述了各种实例。这些和其他实例在所附权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号