在算术代码化中的有效率场境应对的制作方法

文档序号:11291340阅读:184来源:国知局
在算术代码化中的有效率场境应对的制造方法与工艺



背景技术:

例如,数字视频可以用于经由视频会议、高清晰度视频娱乐、视频广告、或用户生成的视频的共享进行远程商务会议。由于视频数据中包括大量数据,因此对于传输和存储需要高效能压缩。因此,提供通过具有有限带宽的通信信道传送的高分辨率视频将是有利的。



技术实现要素:

本文公开了用于使用在算术代码化中的有效率场境(context)应对进行编码和解码的系统、方法、和装置的方面。

一个方面是一种使用在算术代码化中的有效率场境应对进行视频编码的方法。该方法可以包括:从经编码视频流中识别来自当前帧的当前块(block),识别对于所述当前块的扫描顺序,从所述当前块识别当前熵代码化变换系数,以及对所述当前熵代码化变换系数进行熵解码。所述熵解码可以包括:基于所述扫描顺序,确定在与所述当前熵代码化变换系数相对应的扫描顺序位置和与第一场境系数相对应的扫描顺序位置之间的第一扫描顺序距离,其中与第一场境系数相对应的扫描顺序位置在空间上接近与所述当前熵代码化变换系数相对应的扫描顺序位置;从场境系数寄存器中的第一位置识别第一场境系数值,所述第一位置对应于所述第一扫描顺序距离,其中所述场境系数寄存器是减小大小的场境系数寄存器;以及基于所述第一场境系数值来对所述当前熵代码化变换系数进行熵解码。该方法可以包括:将经熵解码的当前变换系数包括在用于显示的输出比特流中;以及存储或显示所述输出比特流。

另一方面是一种使用在算术代码化中的有效率场境应对进行视频编码的方法。在一些实施方式中,该方法可以包括:从经编码的视频流中识别来自当前帧的当前块,识别对于所述当前块的扫描顺序,从所述当前块识别当前熵代码化变换系数,以及对所述当前熵代码化变换系数进行熵解码。所述熵解码可以包括:基于所述扫描顺序,确定在与所述当前熵代码化变换系数相对应的扫描顺序位置和与第一场境系数相对应的扫描顺序位置之间的第一扫描顺序距离,其中与第一场境系数相对应的扫描顺序位置在空间上接近与所述当前熵代码化变换系数相对应的扫描顺序位置,从场境系数寄存器中的第一位置识别第一场境系数值,所述第一位置对应于所述第一扫描顺序距离,其中所述场境系数寄存器是减小大小的场境系数寄存器,基于所述扫描顺序,确定在与所述当前熵代码化变换系数相对应的扫描顺序位置和与第二场境系数相对应的扫描顺序位置之间的第二扫描顺序距离,其中与第二场境系数相对应的扫描顺序位置在空间上接近与所述当前熵代码化变换系数相对应的扫描顺序位置,从场境系数寄存器中的第二位置识别第二场境系数值,所述第二位置对应于所述第二扫描顺序距离,以及基于所述第一场境系数值和所述第二场境系数值来对所述当前熵代码化变换系数进行熵解码。可以将经熵解码的当前变换系数包括在用于显示的输出比特流中,以及可以存储或传送所述输出比特流。

另一方面是一种用于使用在算术代码化中的有效率场境应对进行视频编码的装置,该装置包括存储器和至少一个处理器,所述至少一个处理器被配置成执行存储在该存储器中的指令,以从经编码的视频流中识别来自当前帧的当前块,识别对于所述当前块的扫描顺序,从所述当前块识别当前熵代码化变换系数,并对所述当前熵代码化变换系数进行熵解码。该处理器可以被配置为执行存储在该存储器中的指令,以通过以下操作来对所述当前熵代码化变换系数进行熵解码:基于所述扫描顺序,确定在与所述当前熵代码化变换系数相对应的扫描顺序位置和与左方场境系数相对应的扫描顺序位置之间的左方扫描顺序距离,其中与左方场境系数相对应的扫描顺序位置在空间上接近与所述当前熵代码化变换系数相对应的扫描顺序位置的左方,基于所述扫描顺序,确定与所述当前熵代码化变换系数相对应的扫描顺序位置和与上方场境系数相对应的扫描顺序位置之间的上方扫描顺序距离,其中与上方场境系数相对应的扫描顺序位置在空间上接近与所述当前熵代码化变换系数相对应的扫描顺序位置的上方,从场境系数寄存器中的第一位置识别左方场境系数值,所述第一位置对应于所述左方扫描顺序距离,其中所述场境系数寄存器是减小大小的场境系数寄存器,从所述场境系数寄存器中的第二位置识别上方场境系数值,所述第二位置对应于所述上方扫描顺序距离,以及基于所述左方场境系数值和所述上方场境系数值来对所述当前熵代码化变换系数进行熵解码。所述处理器可以被配置为执行存储在该存储器中的指令,以将经熵解码的当前变换系数包括在用于显示的输出比特流中,以及存储或显示所述输出比特流。

这些和其他方面的变型将在下面进一步详细描述。

附图说明

这里的描述对附图进行参考,其中在各图中相似的附图标记指代相似的部件,并且其中:

图1是根据本公开的计算设备的图;

图2是根据本公开的计算和通信系统的图;

图3是根据本公开的用于在编码和解码中使用的视频流的图;

图4是根据本公开的编码器的框图;

图5是根据本公开的解码器的框图;

图6是根据本公开的帧的一部分的表示的框图;

图7是根据本公开的包括量子化变换系数值的块的量子化变换系数矩阵的示例的图;

图8是根据本公开的熵代码化扫描顺序的示例的图;

图9是根据本公开的不连续熵代码化扫描顺序的一部分的示例的图;

图10是根据本公开的场境熵编码的流程图;

图11是根据本公开的场境熵解码的流程图;

图12是根据本公开的,用于使用在算术代码化中的有效率场境应对进行编码和解码的变换系数扫描样式的一部分的表示的示例的图;以及

图13是根据本公开的,使用在算术代码化中的有效率场境应对进行场境熵解码的流程图。

具体实施方式

视频压缩方案可以包括将每个图像或帧分解成更小的部分,诸如块(block),并且使用用于限制输出中每个块所包括的信息的技术来生成输出比特流。编码的比特流可以被解码以根据有限的信息重新创建块和源图像。对视频流编码可以包括熵编码,其是可以包括在输出数据流中以令牌或码字(codeword)替代比特样式(bitpattern)或符号的无损压缩技术。在一些实施方式中,可以基于诸如紧接在当前系数左边的系数、紧接在当前系数上方的系数、或两者的组合的场境(context)系数来确定符号的令牌。

在一些实施方式中,解码器可以在场境系数寄存器中存储块的每个经解码的系数,以用于解码后续系数。场境系数寄存器的大小可以是用于代码化的系数矩阵的大小的函数。例如,该系数矩阵可以是使用诸如图9中部分地示出的编码顺序的不连续编码顺序来编码的nxm矩阵,诸如32x32矩阵,并且场境系数寄存器可以包括n*m个系数,例如1024(32*32=1024)个系数。在一些实施方式中,可以使用诸如3位的b位来存储每个系数,并且场境系数寄存器的大小可以是b*n*m位,诸如3072位(1024*3位)。

在一些实施方式中,使用以算术代码化中有效率场境应对的视频编码包括使用减小大小的场境系数寄存器,其可以减小资源利用并改善解码器中的定时。使用减小大小的场境系数寄存器的、使用算术代码化中的有效率的场境应对的视频代码化可以包括:确定在编码系数的扫描顺序位置与对应的场境系数的扫描顺序位置之间的扫描顺序距离,以及从在减小大小场境系数寄存器中由对应距离指示的位置读取对应的场境系数值。减小大小的场境系数寄存器的大小可以是小于最大扫描顺序距离的大小。

图1是可以包含本公开的实施方式的计算设备100的图。所示的计算设备100包括通信接口110、通信单元120、用户接口(ui)130、处理器140、存储器150、指令160和电源170。如这里所使用的,术语“计算设备”包括能够执行本文公开的任何方法或其任何一个或多个部分的任何单元或单元的组合,。

计算设备100可以是诸如个人计算机(pc)、服务器、工作站、小型计算机(minicomputer)、或大型计算机的固定计算设备;或移动计算设备——诸如移动电话、个人数字助理(pda)、膝上型计算机、或平板pc。尽管示出为单个单元,计算设备100的任何一个或多个元件可以被集成到任何数目的单独的物理单元中。例如,ui130和处理器140可以集成在第一物理单元中,并且存储器150可以集成在第二物理单元中。

通信接口110可以是:无线天线,如图所示;有线通信端口,诸如以太网端口、红外端口、串行端口;或能够与有线或无线电子通信介质180对接的任何其它有线或无线单元。

通信单元120可以被配置为经由有线或无线介质180发射或接收信号。例如,如图所示,通信单元120操作地连接到被配置为经由无线信号进行通信的天线。尽管在图1中未明确示出,但是通信单元120可以被配置为经由诸如射频(rf)、紫外(uv)、可见光、光纤、线缆线路、或其组合的任何有线或无线通信介质来进行发射、接收、或两者。尽管图1示出了单个通信单元120和单个通信接口110,但是可以使用任何数目的通信单元和任何数目的通信接口。

ui130可以包括能够与用户对接的任何单元,诸如虚拟或物理小键盘、触摸板、显示器、触摸显示器、扬声器、麦克风、视频相机、传感器、或其任何组合。如图所示,ui130可以与处理器140或与计算设备100的诸如电源170的任何其他元件操作地耦合。尽管示出为单个单元,但是ui130可以包括一个或多个物理单元。例如,ui130可以包括:用于执行与用户的音频通信的音频接口,和用于执行与用户的基于视觉和触摸的通信的触摸显示器。尽管示出为单独的单元,但是通信接口110、通信单元120、和ui130、或其部分可以被配置为组合单元。例如,通信接口110、通信单元120、和ui130可以被实现为能够与外部触摸屏设备进行对接的通信端口。

处理器140可以包括能够操纵或处理现有或以后开发的信号或其他信息的任何设备或系统,包括光学处理器、量子处理器、分子处理器、或其组合。例如,处理器140可以包括通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑阵列、可编程逻辑控制器、微代码、固件、任何类型的集成电路(ic)、状态机、或者其任何组合。如本文所使用的,术语“处理器”包括单个处理器或多个处理器。处理器1470可以与通信接口110、通信单元120、ui130、存储器150、指令160、电源170、或其任何组合操作地耦合。

存储器150可以包括任何非暂时性计算机可用或计算机可读介质,诸如可以例如包含、存储、通信、或传输指令160或与之相关联的任何信息以供处理器140使用或与处理器140连接的任何有形设备。非暂时计算机可用或计算机可读介质例如是固态驱动器、存储卡、可移动介质、只读存储器(rom)、随机存取存储器(ram)、包括硬盘、软盘、光盘、磁盘或光卡的任何类型的盘、专用集成电路(asic)、或适用于存储电子信息的任何类型的非暂时性介质、或者其任何组合。存储器150可以通过例如存储器总线(未明确示出)连接到处理器140。

指令160可以包括用于执行本文公开的任何方法或其任何一个或多个部分的指令。指令160可以以硬件、软件、或其任何组合实现。例如,指令160可被实现为诸如计算机程序的存储在存储器150中的信息,其由处理器140执行以执行本文所述的相应方法、算法、方面、或其组合中的任何一个。指令160或其一部分可以被实现为专用处理器或电路,其可以包括用于实施本文所描述的方法、算法、方面、或其组合的任何一个的专用硬件。指令160的部分可以跨同一机器或不同机器上的多个处理器分布或跨诸如局域网、广域网、互联网或其组合的网络分布。

电源170可以是用于为通信接口110供电的任何合适的设备。例如,电源170可以包括:有线电源;一个或多个干电池,例如镍镉(nicd)、镍-锌(nizn)、镍金属氢化物(nimh)、锂离子(li-ion)等;太阳能电池;燃料电池;或能够为通信接口110供电的任何其他设备。通信接口110、通信单元120、ui130、处理器140、指令160、存储器150、或其任何组合可以与电源170操作地耦合。

虽然示出为单独的元件,但可以将通信接口110、通信单元120、ui130、处理器140、指令160、电源170、存储器150、或其任何组合集成在一个或多个电子单元、电路、或芯片中。

图2是根据本公开的计算和通信系统200的图。计算和通信系统200可以包括一个或多个计算和通信设备100a/100b/100c、一个或多个接入点210a/210b、一个或多个网络220、或其组合。例如,计算和通信系统200可以是向诸如计算和通信设备100a/100b/100c的一个或多个有线或无线通信设备提供诸如语音、数据、视频、传递、广播、或其组合的通信的多址系统。尽管为了简单图2示出了三个计算和通信设备100a/100b/100c、两个接入点210a/210b、和一个网络220,但是可以使用任何数目的计算和通信设备、接入点、和网络。

例如,每个计算和通信设备100a/100b/100c可以是计算设备,诸如图1所示的计算设备100。例如,如图所示,计算和通信设备100a/100b可以是用户设备,诸如移动计算设备、膝上型计算机、瘦客户端、或智能电话,并且通信设备100c可以是服务器,诸如大型机或集群。虽然将计算和通信设备100a/100b描述为用户设备,并且将计算和通信设备100c描述为服务器,但是任何计算和通信设备可以执行服务器的一些或全部功能、用户设备的一些或全部功能、或服务器和用户设备的一些或全部功能。

每个计算和通信设备100a/100b/100c可被配置为执行有线或无线通信。例如,计算和通信设备100a/100b/100c中的至少一个可以被配置为发射或接收有线或无线通信信号,并且可以包括用户设备(ue)、移动站、固定或移动订户单元、蜂窝电话、个人计算机、平板计算机、服务器、消费电子设备、或任何类似设备。虽然每个计算和通信设备100a/100b/100c被示出为单个单元,但是计算和通信设备可以包括任何数目的互连元件。

每个接入点210a/210b可以是被配置为经由有线或无线通信链路180a/180b/180c与计算和通信设备100a/100b/100c、网络220、或两者进行通信的任何类型的设备。例如,接入点210a/210b可以包括基站、基站收发器台(bts)、节点b、增强型节点b(enode-b)、家庭节点b(hnode-b)、无线路由器、有线路由器、集线器、中继器、交换机、或任何类似的有线或无线设备。虽然每个接入点210a/210b被示出为单个单元,但接入点可以包括任何数目的互连元件。

网络220可以是被配置为通过有线或无线通信链路提供服务来——诸如语音、数据、应用、通过互联网协议的语音(voip)、或者任何其它通信协议或通信协议的组合的任何类型的网络。例如、网络220可以是局域网(lan)、广域网(wan)、虚拟专用网(vpn)、移动或蜂窝电话网络、互联网、或任何其他电子通信手段。网络220可以使用通信协议,例如传输控制协议(tcp)、用户数据报协议(udp)、互联网协议(ip)、实时传输协议(rtp)、超文本传输协议(http)、或其组合。

计算和通信设备100a/100b/100c可以经由网络220使用一个或多个有线或无线通信链路或经由有线和无线通信链路的组合来彼此通信。如图所示,例如,计算和通信设备100a/100b可以经由无线通信链路180a/180b进行通信,并且计算和通信设备100c可以经由有线通信链路180c进行通信。计算和通信设备100a/100b/100c中的任何一个可以使用任何一条或多条有线或无线通信链路进行通信。例如,第一计算和通信设备100a可以使用第一类型的通信链路经由第一接入点210a进行通信,第二计算和通信设备100b可以使用第二类型的通信链路经由第二接入点210b进行通信,并且第三计算和通信设备100c可以使用第三类型的通信链路经由第三接入点(未示出)进行通信。类似地,接入点210a/210b可以经由一种或多种类型的有线或无线通信链路230a/230b与网络220进行通信。尽管图2示出了经由网络220通信的计算和通信设备100a/100b/100c,但是计算和通信设备100a/100b/100c可以经由任何数目的通信链路——诸如直接有线或无线通信链路——彼此通信。

计算和通信系统200的其他实施方式是可能的。例如,在一个实施方式中,网络220可以是点对点网络,并且可以省略接入点210a/210b中的一个或多个。计算和通信系统200可以包括图2中未示出的设备、单元、或元件。例如,计算和通信系统200可以包括更多的许多通信设备、网络、和接入点。

图3是根据本公开的用于编码和解码的视频流300的图。诸如由视频相机捕获的视频流或由计算设备生成的视频流的视频流300包括视频序列310。视频序列310包括相邻帧320的序列。虽然示出了三个相邻的帧320,但视频序列310可以包括任何数目的相邻帧320。来自相邻帧320的每个帧330可以表示来自视频流300的单个图像。帧330可以包括块340。虽然在图3中未示出,但是块可以包括像素。例如,块可以包括16x16像素组、8x8像素组、8x16像素组、或任何其它像素组。除非本文另有说明,术语“块”可以包括超块(superblock)、宏块(macroblock)、段(segment)、片(slice)、或帧的任何其他部分。帧、块、像素、或其组合可以包括诸如亮度信息、色度信息的显示信息或可用于存储、修改、通信、或显示视频流300或其一部分的任何其他信息。

图4是根据本公开的编码器400的框图。编码器400可以在诸如图1所示的计算设备100或图2所示的计算和通信设备100a/100b/100c的设备中实现为存储在诸如图1所示的存储器150的数据存储单元中的计算机软件程序。计算机软件程序可以包括可以由诸如图1所示的处理器160的处理器执行的机器指令,并且致使该设备对视频数据进行编码,如本文所述。编码器400可以被实现为例如包括在计算设备100中的专用硬件。

编码器400可编码诸如图3所示的视频流300的输入视频流402,以生成编码的(压缩的)比特流404。在一些实施方式中,编码器400可以包括用于生成压缩比特流404的前向路径。前向路径可以包括帧内/帧间预测单元410、变换单元420、量子化单元430、熵编码单元440、或其任何组合。在一些实施方式中,编码器400可以包括重构路径(由虚连接线指示),以重构用于对其他块进行编码的帧。该重构路径可以包括去量子化单元450、逆变换单元460、重构单元470、环路滤波单元480、或其任何组合。编码器400的其他结构变型可用于对视频流402进行编码。

为了对视频流402进行编码,可以以块为单位处理视频流402内的每个帧。因此,可以从帧中的块识别当前块,并且可以对该当前块进行编码。

在帧内/帧间预测单元410中,可以使用可以处于单帧内的帧内预测或可以是从帧到帧的帧间预测来编码当前块。帧内预测可以包括:根据先前已编码和重构的当前帧中的样本来生成预测块。帧间预测可以包括:根据一个或多个先前已构造的参考帧中的样本来生成预测块。为当前帧中的当前块生成预测块可以包括:执行运动估计以生成指示参考帧中的适当参考块的运动向量。

帧内/帧间预测单元410可以从当前块(原始块)中减去预测块以产生残差块。变换单元420可以执行基于块的变换,其包括将残差块变换为例如频域中的变换系数。基于块的变换的示例包括karhunen-loève变换(klt)、离散余弦变换(dct)、和奇异值分解变换(svd)。在一个示例中,dct可以包括将块变换入频域内。dct可以包括使用基于空间频率的变换系数值,其中最低频率(即dc)系数在矩阵左上角并且最高频率系数在矩阵右下角。

量子化单元430可以将变换系数转换为离散量子值,其被称为量子化变换系数或量子化水平。量子化变换系数可以由熵编码单元440进行熵编码,以产生经熵编码的系数。熵编码可以包括使用概率分布度量。可以将经熵编码的系数和用于解码该块的信息输出到压缩比特流404,该信息可以包括所使用的预测类型、运动向量、和量子化器值。压缩比特流404可以使用各种技术——诸如行程长度编码(rle)和零行程(zero-run)代码化)进行格式化。

重构路径可用于维持编码器400与对应的解码器——诸如图5所示的解码器500——之间的参考帧同步。重构路径可以类似于下面讨论的解码过程,并且包括在量子化单元450处对量子化的变换系数进行去量子化,并且在逆变换单元460处对去量子化的变换系数进行逆变换以产生派生(derivative)残差块。重构单元470可以将由帧内/帧间预测单元410生成的预测块添加到派生残差块以创建重构块。环路滤波单元480可以应用于该重构块以减小诸如构块伪像(blockingartifact)的失真。

可以使用编码器400的其他变型来对压缩比特流404进行编码。例如,基于非变换的编码器400可以直接量子化残差块而不使用变换单元420。在一些实施方式中,量子化单元430和去量子化单元450可以组合成单个单元。

图5是根据本公开的实施方式的解码器500的框图。解码器500可以在诸如图1所示的计算设备100或图2所示的计算和通信设备100a/100b/100c的设备中实现为为存储在诸如图1所示的存储器150的数据存储单元中的计算机软件程序。该计算机软件程序可以包括可以由诸如图1所示的处理器160的处理器执行的机器指令,并致使该设备解码视频数据,如本文所述。解码器500可以被实现为例如包括在计算设备100中的专用硬件。

解码器500可以接收压缩比特流502,诸如图4所示的压缩比特流404,并且可以解码压缩比特流502以生成输出视频流504。解码器500可以包括熵解码单元510、去量子化单元520、逆变换单元530、帧内/帧间预测单元540、重构单元550、环路滤波单元560、去块(deblocking)滤波单元570、或其任何组合。解码器500的其他结构变化可用于解码压缩比特流502。

熵解码单元510使用例如场境自适应二进制算术解码来解码压缩比特流502内的数据元素,以产生一组量子化的变换系数。逆量子化单元520可以对量子化的变换系数进行逆量子化,并且逆变换单元530可以对去量子化的变换系数进行逆变换以产生派生残差块,其可以对应于由图4所示的逆变换单元460生成的派生残差块。使用从压缩比特流502解码的头信息,帧内/帧间预测单元540可以生成与在编码器400中创建的预测块相对应的预测块。在重构单元550,可以将预测块添加到派生残差块以创建重构块。环路滤波单元560可以被应用于该重构块以减小构块伪像。去块滤波单元570可以被应用于该重构块以减小块失真,并且结果可以作为输出视频流504来输出。

解码器500的其他变型可用于对压缩比特流502进行解码。例如,解码器500可以产生输出视频流504,而无需去块滤波单元570。

图6是根据本公开的诸如图3所示的帧330的帧的部分600的表示的方框图。如图所示,部分600包括在矩阵或笛卡尔平面中的两行和两列中的四个64x64块610。在一些实施方式中,64x64块可以是最大代码化单元,n=64。每个64x64块可以包括多达四个32x32块620。每个32x32块可以包括多达四个16x16块630。每个16x16块可以包括多达四个8x8块640。每个8x8块640可以包括多达四个4x4块650。每个4x4块650包括多达16个像素,其可以在笛卡尔平面或矩阵中的每个相应块中以四行和四列表示。像素可以包括表示在帧中捕获的图像的信息,诸如亮度信息、颜色信息、和位置信息。在一些实施方式中,诸如所示的16x16像素块的块包括具有亮度像素662的亮度块660以及诸如u或cb色度块670及v或cr色度块680的两个色度块670/680。色度块670/680包括色度像素690。例如,亮度块660包括16x16个亮度像素662,并且每个色度块670/680包括如图所示的8x8个色度像素690。虽然示出了块的一种布置,但是可以使用任何布置。尽管图6示出了nxn块,但是在一些实施方式中可以使用其中n≠m的nxm块。例如,可以使用32x64块、64x32块、16x32块、32x16块、或任何其他大小块。在一些实施方式中,可以使用nx2n块、2nxn块、或其组合。

有序块级代码化(orderedblock-levelcoding)包括按照诸如光栅扫描顺序的顺序将帧的块代码化,其中块可以从该帧或该帧的一部分的左上角的块开始被识别和处理,并且沿着行从左到右且从顶行到底行进行,依次识别每个块进行处理。例如,帧的顶行和左列中的64x64块可以是代码化的第一块,并且紧接在该第一块右侧的64x64块可以是代码化的第二块。从顶部起第二行可以是代码化的第二行,使得该第二行的左列中的64x64块在第一行最右边的列中的64x64块之后被代码化。

对块进行代码化可以包括使用四叉树代码化,其包括以光栅扫描顺序对块内的较小块单元进行代码化。例如,可以使用四叉树代码化来将在图6中部分600的左下角所示的64x64块代码化,该块中左上方的32x32块被代码化,然后对右上方的32xz32块进行代码化,然后对左下方的32x32块进行代码化,然后对右下方的32x32块进行代码化。每个32x32块可以使用四叉树代码化进行代码化,其中左上方的16x16块被代码化,然后对右上方16x16块进行代码化,然后对左下方16x16块进行代码化,然后对右下方16x16块进行代码化。每个16x16块可以使用四叉树代码化进行代码化,其中左上方的8x8块被代码化,然后对右上方的8x8块进行代码化,然后对左下方的8x8块进行代码化,然后对右下方的8x8块进行代码化。可以使用四叉树代码化对每个8x8块进行代码化,其中左上方4x4块被代码化,然后对右上方4x4块进行代码化,然后对左下方4x4块进行代码化,然后对右下方4x4块进行代码化。在一些实施方式中,对于16x16块可以省略8x8块,并且可以使用四叉树代码化对16x16块进行代码化,其中左上方4x4块被代码化,并且然后以光栅-扫描顺序对该16x16块中的其他4x4块进行代码化。

视频代码化可以包括通过例如从对应的经编码帧省略原始帧中的一些信息来压缩包括在原始帧或输入帧中的信息。例如,代码化可以包括减小频谱冗余,减小空间冗余,减小时间冗余、或其组合。

减小频谱冗余可以包括使用基于亮度分量(y)和两个色度分量(u和v或者cb和cr)的颜色模型,其可被称为yuv或ycbcr颜色模型或颜色空间。例如,使用yuv颜色模型包括使用相对大量的信息来表示帧的一部分的亮度分量,并且使用相对少量的信息来表示帧的该部分的每个对应的色度分量。例如,帧的一部分可以由诸如16x16个像素块的高分辨率亮度分量以及由两个较低分辨率色度分量表示,每个低分辨率色度分量将帧的该部分表示为8x8像素块。像素可以指示值,例如,在0到255的范围内的值,并且可以使用八位来存储或传送。尽管参照yuv颜色模型描述了本公开,但是可以使用任何颜色模型。

减小空间冗余可以包括使用例如离散余弦变换(dct)将块变换到频域。例如,诸如图4所示的变换单元420的编码器的单元可以使用基于空间频率的变换系数值来执行dct。

减小时间冗余可以包括使用帧之间的相似性基于作为视频流的先前编码、解码、和重构的帧使用一个或多个参考帧的相对小量的数据来对帧进行编码。例如,当前帧的块或像素可以类似于参考帧的空间上对应的块或像素。当前帧的块或像素可以类似于在不同空间位置处的参考帧的块或像素,并且减小时间冗余因此包括生成运动信息,其指示在当前帧中的块或像素的位置和参考帧中的块或像素的对应位置之间的空间差异或平移。

为了减小时间冗余,识别与当前帧的当前块或像素相对应的参考帧或参考帧的一部分中的块或像素。例如,可以对存储在存储器中的参考帧或参考帧的一部分搜索用于编码当前帧的当前块或像素的最佳块或像素。以这种方式,搜索识别参考帧的块,对于该块而言,参考块和当前块之间的像素值的差被最小化。这被称为运动搜索。可以限制所搜索的参考帧的部分,使得搜索区域例如包括参考帧的有限数目的行。识别参考块可以包括:计算在搜索区域中的块的像素与当前块的像素之间的代价函数,例如绝对差异和(sad)。

在一些实施方式中,在参考帧中的参考块的位置与在当前帧中的当前块之间的空间差被表示为运动向量。在参考块和当前块之间的像素值上的差异通常被称为差分数据、残差数据、或称为残差块。可以将生成运动向量称为运动估计,并且可以基于使用作为的笛卡尔坐标的位置来将当前块的像素指示为fx,y。类似地,可以基于使用的笛卡尔坐标的位置来将参考帧的搜索区域的像素指示为rx,y。可以基于例如在当前帧的像素与参考帧的对应像素之间的sad来确定当前块的运动向量(mv)。

尽管为了清楚起见,这里参考帧的矩阵或笛卡尔表示来描述运动补偿的分区,但是可以在任何数据结构中对帧进行存储、传送、处理、或者其任何组合,使得可以对于帧或图像有效率地预测像素值。例如,可以在诸如所示矩阵的二维数据结构中或者在诸如向量数组的一维数据结构中对帧进行存储、传送、处理、或其任何组合。在一个实施方式中,诸如所示的二维表示的帧的表示对应于在作为图像的帧的渲染中的物理位置。例如,帧的左上角的块的左上角的位置可以对应于作为图像的帧的渲染的左上角的物理位置。

在块内捕获的内容可以包括展现出不同空间和时间特性的两个或更多个区域。例如,帧可以捕获以各个方向和速度移动的多个对象,并且块可以包括边缘或对象边界。可以通过下述方式来改进基于块的代码化效率:将包括具有不同特性的多个区域的块划分成一个或多个分区,所述分区可以是与不同内容相对应的包括正方形的矩形分区,并且对该分区进行编码,而不是对每个最小代码化单位独立进行编码。

可以从多个候选分区方案当中选择分区方案。例如,针对64x64代码化单元的候选分配方案可以包括大小范围从4x4到64x64的矩形大小分区,诸如4x4、4x8、8x4、8x8、8x16、16x8、16x16、16x32、32x16、32xz32、32x64、64x32、或64x64。在一些实施方式中,分区包括全分区搜索,其可以包括通过下述方式来选择分区方案:使用每个可用候选分区方案对代码化单元进行编码,并且选择最好方案,例如产生最小速率失真误差的方案。在其他实施方式中,诸如离线双程编码(offlinetwo-passencoding),在第一代码化程中生成关于帧之间的运动的信息,并且然后在第二代码化程中将其用于选择分区方案。对于每个候选分区方案,诸如离线双程编码和评估速率失真误差或其他类似度量的技术可能是耗时的,并且可以利用超过一半的编码时间。在包括静态背景的视频会议或其他内容被编码的情况下,例如,可以基于先前和当前源帧之间的差异来选择分区方案。

运动补偿的分区可以比全分区搜索、离线双程编码、或基于帧间差异的分区更有效率地识别分区方案。例如,运动补偿的分区包括识别用于对诸如块610的当前块进行编码的分区方案。在一些实施方式中,识别分区方案包括:确定将块编码为最大代码化单元大小——其可以是如图所示的64x64——的单个分区还是将块划分成与子块——诸如32x32块620、16x16块630、或8x8块640如图所示——相对应的多个分区,并且可以包括确定是否划分为一个或多个的分区。例如,64x64块可能被划分成四个32x32分区。四个32x32分区中的三个可以编码为32x32分区,并且第四个32x32分区可以进一步划分为四个16x16分区。该四个16x16分区中的三个可以被编码为16x16分区,并且第四个16x16分区可以被进一步划分成四个8x8分区,其中每个分区可以被编码为8x8分区。在一些实施方式中,识别分区方案可以包括使用分区决策树。

可以从多个候选代码化模式中识别最佳代码化模式,这提供了应对具有各种统计性质的视频信号的灵活性并且可以提高压缩效率。例如,视频代码化器可以评估每个候选代码化模式以识别最佳代码化模式。最佳代码化模式通常是使当前块的误差度量——诸如速率失真代价——最小化的代码化模式。可以通过基于当前块和对应的预测块之间的相似度来限制可用候选代码化模式的集合来减小搜索候选代码化模式的复杂度。可以通过执行定向细化模式搜索(directedrefinementmodesearch)来实现复杂度的进一步降低。例如,可以针对经限制的候选块大小——诸如16x16、8x8和4x4——的集合来生成度量,与每个块大小相关联的误差度量可以处于降序,并且可以评估附加的候选块大小,例如4x8和8x4块大小。

在一些实施方式中,可以使用交替的块受约束的决策模式代码化,其在不受约束的决策模式以及受约束模式之间交替,在不受约束的决定模式中可以完全搜索候选代码化模式的集合,在受约束的模式中要搜索的候选代码化模式的集合可能会受到限制。该交替可以是空间的、时间的、或空间的和时间二者的。空间交替包括在紧邻的相邻块当中的受约束和不受约束的模式之间交替,并且可以是垂直的、水平的、或两者。这可以表示为国际跳棋棋盘或国际象棋棋盘样式。时间交替可以在紧邻相邻帧当中在约束和非约束模式之间交替。

图7是根据本公开的包括量子化变换系数值的4x4块的量子化变换系数矩阵700的示例的图。例如,编码器的元件——诸如图4所示的编码器400的量子化单元430——可以生成量子化的变换系数矩阵700。尽管为了简单起见示出了4x4块,但是可以使用任何大小的块。例如,可以使用64x64块、64x32块、32x64块、32x32块、32x16块、16x32块、16x16块、16x8块、8x16块、8x8块、8x4块、或4x8块。

在图7中,每个位置中所示的值指示各位置的变换系数值。为了清楚起见,块的变换系数的位置可以被称为变换系数的“位置(position)”、“地点(location)”、或其变型。如本文所使用的,对变换系数之间的“接近”、“空间接近”、或“距离”的引用可指示块的变换系数的变换系数矩阵表示中的接近或距离。虽然关于变换系数矩阵来描述变换系数,但是变换系数可以在任何数据结构中被处理或存储。例如,变换系数可以在诸如向量的一维数组中被处理或存储。

如图所示,例如对称dct的变换往往在块700的左上角对具有大幅度的系数进行聚组。在一些实施方式中,变换可以以不同的样式来分布较大幅度的系数。例如,与一维dct组合的一维非对称离散正弦变换(adst)往往沿着块的一个边缘——例如顶部边缘或左边缘——聚组大幅度系数。

量子化变换系数的矩阵可以以往往在块末端处对零值系数进行聚组的扫描顺序进行处理。然后,可以从输出比特流中省略以扫描顺序在块的结束处的连续零值系数而不丢失数据。尽管未明确示出,但二维(2d)变换系数矩阵可以由一维向量数组表示。

图8示出了根据本公开的熵代码化扫描顺序的示例的图。熵代码化包括以扫描顺序——诸如水平扫描顺序800、垂直扫描顺序810、对角线扫描顺序820、或锯齿形扫描顺序830——对量子化变换系数矩阵——例如图8所示的量子化变换系数矩阵800——的系数进行编码。在图8中,每个块中所示的值表示对应系数被熵代码化的顺序。尽管为了简单起见示出了4x4块,但是可以使用任何大小的块。例如,可以使用64x64块、64x32块、32x64块、32x32块、32x16块、16x32块、16x16块、16x8块、8x16块、8x8块、8x4块、或4x8块。

可以通过以扫描顺序在向量中包括每个变换系数来生成变换系数的一维数组,诸如向量。例如,变换系数矩阵的左上角的dc系数可以是扫描顺序向量的第一元素,因此具有(0,0)的变换系数矩阵位置和(0)的扫描顺序位置。如本文所使用的,术语变换系数的“顺序”、“扫描位置”、“向量位置”、或其变型指示扫描顺序或扫描顺序向量中的变换系数的相对位置或索引。尽管图8示出了顺序扫描样式的示例,但是可以使用非连续扫描样式对系数进行代码化。图9示出了根据公开的不连续熵代码化扫描顺序的一部分的示例的图。例如,图9可以示出32x32块的扫描顺序的一部分。

图10是根据本公开的场境熵代码化的流程图。可以在设备——诸如图1所示的计算设备100或图2所示的计算和通信设备100a/100b/100c——诸如图4所示的编码器400的编码器中实现场境熵代码化。例如,其可以实现为存储在诸如图1所示的存储器150的数据存储单元中的计算机软件程序。

场境熵代码化可用于编码具有多个帧的视频数据流,每个帧具有多个块。视频数据或视频流可以由计算设备以任何数目的方式接收,诸如通过电缆、通过网络来接收视频数据,或通过从主存储器或其他存储设备读取视频数据,所述其他存储设备包括磁盘驱动器或诸如紧密快闪(cf)卡、安全数字(sd)卡的可移动介质、或能够传输视频数据的任何其他设备。在一些实施方式中,可以从连接到操作编码器的计算设备的视频相机接收视频数据。

如图10所示,场境熵代码化包括:在1000处识别当前帧的当前块的变换系数,在1010处识别当前变换系数,在1020处识别当前变换系数的场境系数,以及在1030处对当前变换系数进行熵代码化。

在1000处识别变换系数可以包括生成、读取、接收、或以其他方式区分变换系数块,诸如与当前帧的当前块相关联的在图7所示的变换系数块700。变换系数是通过诸如以图4所示的变换单元420的编码器的单元对视频流的帧的块的像素进行处理而形成的数值。尽管为了简单起见被称为“变换系数”或“系数”,但变换系数可以是量子化的变换系数,诸如由图4所示的量子化单元430生成的量子化变换系数。

然后可以基于诸如图8所示的锯齿形扫描顺序830的扫描顺序来排序该变换系数。例如,通过以扫描顺序在向量中包括系数,从变换系数的二维矩阵生成变换系数的有序一维数组或向量。

在1010处识别当前变换系数。例如,可以以扫描顺序处理变换系数,并且识别当前变换系数包括以扫描顺序识别下一个系数。在一些实施方式中,当前变换系数可以是零值变换系数。当变换系数的当前块不包括随后的非零值变换系数时,当前块的熵代码化完成。

在1020处识别当前变换系数的场境系数。在一些实施方式中,基于场境系数来适配用于对当前系数进行熵代码化的概率分布。场境系数可以包括来自当前帧的在空间上接近于当前系数的先前经熵代码化的系数。例如,场境系数可以包括在空间上接近于变换系数的当前块中的当前系数的先前经熵编码的变换系数,诸如紧接在当前系数左方的系数、紧接在当前系数上方的系数、或紧接在当前系数左上方的系数。

为当前系数识别的场境系数可以取决于在变换系数矩阵中当前系数的空间位置。例如,当前系数可以是变换系数矩阵中的左上方的系数,并且省略识别场境系数。在一些实施方式中,当前系数可以处于变换系数矩阵的顶行中,在当前系数上方的先前经熵代码化的系数不存在,并且将当前系数左方的先前经熵代码化的系数识别为场境系数。例如,当前系数可以是变换系数矩阵的第一行第三列中的系数,并且场境系数包括变换系数矩阵的第一行第二列中的系数以及第一行第一列中的系数。在其他实施方式中,当前系数可以在变换系数矩阵的最左列,当前系数左方的先前经熵代码化的系数可用,并且将当前系数上方的先前经熵代码化的系数识别为场境系数。例如,当前系数可以是变换系数矩阵的第三行第一列中的系数,并且场境系数包括变换系数矩阵的第二行第一列中的系数以及第一行第一列中的系数。

在1030处当前变换系数被熵代码化,其可以包括识别当前系数的令牌或码字。经熵代码化的当前变换系数可以被包括在输出比特流中,诸如图4所示的压缩比特流404。即,例如,当前系数的令牌可以被包括在输出比特流中以表示该当前系数。在1030处对当前变换系数进行熵代码化也可以包括存储或传送输出比特流。例如,包括表示经熵代码化的当前变换系数的令牌的经编码视频比特流可以经由诸如图2所示的网络220的网络来作为信号被传送,使得诸如图1所示的计算设备100或图2所示的计算和通信设备100a/100b/100c的设备经由该网络接收信号,解码经编码的视频比特流,并生成与当前帧相对应的重构帧或重构帧的一部分,所述设备可以包括解码器,诸如图5所示的解码器500,。

包括表示经熵代码化的当前变换系数的令牌的经编码视频比特流可以存储在设备的诸如图1所示的存储器150的存储器中。该设备诸如图1所示的计算装设备100或图2所示的计算和通信设备100a/100b/100c。经编码视频比特流可以存储为存储的经编码视频,使得该设备或能够访问该存储器的任何其他设备可以检索存储的经编码视频,使得解码器可以解码该经编码视频并生成与当前帧相对应的重构帧或重构帧的一部分。

如图10所示的场境熵编码图的其他实施方式是可用的。可以添加附加元素,可以组合某些元素,和/或可以去除某些元素。例如,场境熵编码可以包括涉及生成熵代码化模型的附加元素。

图11是根据本公开的实施方式的场境熵代码化的流程图。场境熵解码可以在设备的诸如图5所示的解码器500的解码器中实现,该设备诸如图1所示的计算设备100或图2所示的计算和通信设备100a/100b/100c。例如,解码可以实现为存储在诸如图1所示的存储器150的数据存储单元中的计算机软件程序。

如图11所示,场境熵解码包括:在1100处识别当前帧的当前块的经熵解码的变换系数,在1110处识别当前经熵代码化的变换系数,在1120处识别当前经熵代码化的变换系数的场境系数,以及在1130处对当前经熵代码化的变换系数进行熵解码。

尽管在图11中未明确示出,但是场境熵解码可以包括:经由诸如图2所示的网络220的网络来接收包括经编码视频流或经编码视频流的一部分的信号,或从诸如图1所示的存储器150的存储器中检索经编码视频流或经编码视频流的一部分。为了简单起见,如本文所使用的,接收可以包括:经由网络接收,从存储器检索,或以其他方式探知所识别的信息。

通过例如识别当前视频流的当前帧的当前块并且从经编码视频流生成当前块的经熵解码变换系数,在1100处识别当前帧的当前块的经熵解码的变换系数。

可以按照当前块的扫描顺序来识别经熵解码的变换系数。例如,经编码视频流可被接收为令牌或码字的一维数组或向量,其中每个令牌以扫描顺序表示当前块的经编码变换系数。例如,与变换系数矩阵的左上位置的变换系数相对应的令牌是接收到并经熵解码的第一令牌,并且扫描顺序中的下一个令牌是接收到并经熵解码的下一个令牌。识别经熵解码的变换系数可以包括:基于接收到经熵解码的变换系数的顺序和扫描顺序来识别当前块的变换系数矩阵中的每个经熵解码的变换系数的位置。

在1110处可以识别当前经熵代码化的变换系数。更具体地,可以在接收的经编码比特流中识别表示当前熵代码化变换系数的当前令牌或代码字。因此,在1110处识别当前熵代码化变换系数可以包括:在当前块的变换系数矩阵中识别由当前令牌表示的变换系数的位置。例如,可以接收当前令牌以作为一维序列或向量数组的一部分,并且基于当前块的扫描顺序来识别当前块的变换系数矩阵中的对应变换系数的位置。为了简单起见,将由当前令牌表示的变换系数称为当前变换系数或当前系数。

在1120处识别用于从当前令牌熵解码当前变换系数的场境系数。例如,可以基于概率分布来对当前令牌进行熵解码,该概率分布是基于场境系数来适配的。

场境系数可以包括来自当前帧的先前经熵解码的系数,其在空间上接近于变换系数矩阵中的当前变换系数的位置。例如,场境系数包括在空间上接近于变换系数的当前块中当前系数的位置的先前经熵解码的变换系数,诸如紧接在当前系数的位置左方的系数、紧接在当前系数的位置上方的系数、或紧接在当前系数位置的左上方的系数。

可以基于变换系数矩阵中的当前系数的空间位置来识别用于对当前系数进行熵解码的场境系数。例如,当前系数可以是变换系数矩阵中的左上的系数,并且省略识别场境系数。当前系数可以在变换系数矩阵的顶行中,在当前系数上方的先前经熵解码的系数不存在,并且将当前系数左方的先前经熵解码的系数识别为场境系数。例如,当前系数可以是变换系数矩阵的第一行第三列中的系数,并且场境系数包括变换系数矩阵的第一行第二列中的经熵解码的系数以及第一行第一列中的经熵解码的系数。当前系数可以在变换系数矩阵的最左列,当前系数左方的先前经熵解码的系数不存在,并且当前系数上方的先前经熵解码的系数被识别为场境系数。例如,当前系数可以是变换系数矩阵的第三行第一列中的系数,并且场境系数包括变换系数矩阵的第二行第一列中的经熵解码的系数以及第一行第一列中的经熵解码的系数。

通过识别当前变换系数的值,在1130处对当前变换系数进行熵解码。该值是在1110处为当前变换系数识别的位置处的当前块在变换系数矩阵中的当前变换系数的值。

尽管图11中未示出,但是可以对于当前块在变换系数矩阵中的每个系数执行场境熵解码,并且,可以基于如图5所示的当前块的变换系数矩阵来生成诸如图15所示的输出视频流504的输出视频流或输出视频流的一部分。例如,当前块的变换系数矩阵可以被输出到诸如图5所示的去量子化单元520的去量子化单元,或者可以存储在诸如图1所示的存储器150的存储器中。经解码的视频流可以被输出到诸如图1所示的用户接口130的呈现单元以用于显示。

除了图11中所示之外的场境熵解码的其他实施方式是可用的。可以添加场境熵解码的附加元素,可以组合某些元素,和/或可以去除某些元素。例如,场境熵解码可以包括涉及生成熵代码化模型的附加元素。

场境熵解码可以包括将块的每个经解码系数存储在解码器系数寄存器中,该解码器系数寄存器可以存储在诸如图1所示的存储器150的数据存储单元中。在这种情况下,在1120处识别场境系数包括从解码器系数寄存器读取场境系数。

场境系数寄存器的大小可以是用于代码化的系数矩阵的大小的函数。例如,该系数矩阵可以是使用诸如图9中部分地示出的代码化顺序的不连续的代码化顺序编码的nxm矩阵,诸如32x32矩阵,并且该场境系数寄存器可以包括n*m个系数,例如1024(32*32=1024)个系数。可以使用诸如3位的b位来存储每个系数,并且场境系数寄存器的大小可以是诸如3072位(1024*3位)的b*n*m位。

图12是根据本公开的用于使用在算术代码化中的有效率场境应对进行编码和解码的变换系数扫描样式的部分1200的图。对当前系数进行解码可以基于减小大小的场境系数寄存器。例如,算术代码化中的有效率场境应对可以包括:基于包括87个系数的场境系数寄存器,对使用非连续代码化顺序编码的32x32矩阵的当前系数进行解码,所述非连续代码化顺序诸如图9中或在图12中的1200处部分地示出的非连续代码化顺序。

可以使用当前系数左方的系数——这里为在扫描顺序位置6处的系数1220、当前系数上方的系数——这里为在扫描顺序位置7处的系数1230、或其组合来解码在扫描顺序位置11处的当前系数1210。在图12中,用粗体边界示出与当前经编码系数相对应的当前扫描顺序位置,用白色背景示出与经解码系数相对应的扫描顺序位置,并且用加线的背景示出与经编码系数相对应的扫描顺序位置。

示出了场境系数寄存器的部分1250a的示例,其包括在扫描顺序位置10、9、8、7、6、5、4、3、2、1、和0处的系数。在移位操作后的场境系数寄存器的部分在1250b处被示出,并且包括在扫描顺序位置11、10、9、8、7、6、5、4、3、2、和1处的系数。

图13是根据本公开的、使用在算术代码化中的有效率场境应对的场境熵解码的流程图。使用在算术代码化中的有效率场境应对的场境熵解码可以实现在设备的诸如图5所示的解码器500的解码器中,该设备诸如图1所示的计算设备100或图2所示的计算和通信设备100a/100b/100c。例如,解码可以实现为存储在诸如图1所示的存储器150的数据存储单元中的计算机软件程序。

如图13所示,使用算术代码化中的有效率场境应对的场境熵解码包括:在1300处识别扫描顺序,在1310处识别距离表,在1320处识别当前帧的当前块的经熵解码的变换系数,在1330处识别当前经熵代码化的变换系数,在1340处识别当前经熵代码化的变换系数的场境系数,以及在1350处对当前经熵代码化的变换系数进行熵解码。

尽管在图13中未明确示出,场境熵解码可以包括:经由诸如图2所示的网络220的网络来接收包括经编码视频流或经编码视频流的一部分的信号。或者从诸如图1所示的存储器150的存储器中检索经编码视频流或经编码视频流的一部分。为了简单起见,如本文所使用的,接收可以包括:经由网络接收,从存储器检索,或以其他方式探知所识别的信息。

在1300处识别当前帧的当前块的扫描顺序。例如,当前块可以是32x32块,并且扫描顺序可以是32x32扫描顺序,诸如在图9和12中部分地示出的扫描顺序。

在1310处识别距离表。该距离表可以是定义的距离表,诸如先前生成的距离表。替选地,识别距离表可以包括生成距离表。在一些实施方式中,生成距离表可以包括:针对场境系数确定目标系数和场境系数之间的扫描顺序距离。例如,参照图12,目标系数可以是扫描顺序位置11处的系数,左方场境系数是扫描顺序位置6处的系数,上方场境系数是扫描顺序位置7处的系数,在11处的目标系数11和在6处的左方场境系数之间的扫描顺序距离为5,并且在11处的目标系数与在7处的上方场境系数之间的扫描顺序距离为4。可以针对当前块中的每个系数识别扫描顺序距离值,所述系数可以排除在扫描顺序位置零(0)的系数。

尽管图13中没有单独示出,但是使用算术代码化中的有效率场境应对的场境熵解码可以包括:基于在1310处识别的距离表来确定解码器系数寄存器的大小。在一些实施方式中,解码器系数寄存器的大小可以是小于基于扫描顺序针对块在1310处识别的最大距离值。

在1300处识别当前帧的当前块的经熵解码的变换系数。例如,在1300处识别经熵解码的变换系数包括:识别当前视频流的当前帧的当前块,并且从经编码视频流生成当前块的经熵解码的变换系数。

此后,基于在1310处针对当前块识别的扫描顺序来识别经熵解码的变换系数。例如,经编码视频流可以被接收为令牌或码字的一维数组或向量,其中每个令牌表示在扫描顺序中的当前块的经编码的变换系数。例如,与变换系数矩阵的左上位置的变换系数相对应的令牌可以是接收到并经熵解码的第一令牌,并且扫描顺序中的下一个令牌是接收到并经熵解码的下一个令牌。在一些实施方式中,识别经熵解码的变换系数可以包括:基于接收到经熵解码的变换系数的顺序和扫描顺序,识别当前块的变换系数矩阵中的每个经熵解码的变换系数的位置。

经熵解码的变换系数中的一个或多个可以存储在解码器系数寄存器中,诸如图12所示的解码器系数寄存器1250。在该解码器系数寄存器中存储经熵解码的变换系数可以包括:对变换系数进行解码,并执行移位操作以将该经熵解码的变换系数存储在该解码器系数寄存器中。当该解码器系数寄存器满时,可以从该解码器系数寄存器中去除经熵解码的变换系数,诸如最久远地解码的经熵解码的变换系数。

当前经熵代码化的变换系数在1310处被识别。例如,可以在接收的经编码比特流中识别表示当前经熵代码化的变换系数的当前令牌或码字。在一些实施方式中,在1310处识别当前经熵代码化的变换系数包括:在当前块的变换系数矩阵中识别由当前令牌表示的变换系数的位置。在一个示例中,接收当前令牌以作为一维序列或向量数组的一部分,并且基于当前块的扫描顺序来识别当前块的变换系数矩阵中的对应变换系数的位置。为了简单起见,由当前令牌表示的变换系数可以被称为当前变换系数或当前系数。

在1320处识别用于从当前令牌熵解码当前变换系数的场境系数。可以基于概率分布来对当前令牌进行熵解码,该概率分布是基于场境系数来适配的。

场境系数可以包括来自当前帧的先前经熵解码的系数,其在空间上接近于变换系数矩阵中的当前变换系数的位置。例如,场境系数包括在空间上接近于变换系数的当前块中的当前系数的位置的先前经熵解码的变换系数,诸如紧接在当前系数的位置的左方的系数、紧接在当前系数的位置上方的系数、或紧接在当前系数位置的左上方的系数。

可以基于变换系数矩阵中当前系数的空间位置来识别用于对当前系数进行熵解码的场境系数。例如,当前系数可以是在变换系数矩阵中的左上的系数,并且省略识别场境系数。当前系数可以在变换系数矩阵的顶行中,在当前系数上方的先前经熵解码的系数不存在,并且将当前系数左方的先前经熵解码的系数识别为场境系数。例如,当前系数可以是变换系数矩阵的第一行第三列中的系数,并且场境系数包括变换系数矩阵的第一行第二列中的经熵解码的系数以及第一行第一列中的经熵解码的系数。当前系数可以在变换系数矩阵的最左列,当前系数左方的先前经熵解码的系数不存在,并且当前系数上方的先前经熵解码的系数被识别为场境系数。例如,当前系数可以是变换系数矩阵的第三行第一列中的系数,并且场境系数包括变换系数矩阵的第二行第一列中的经熵解码的系数以及第一行第一列中的经熵解码的系数。

基于在1310处识别的距离值,可以从解码器系数寄存器识别场境系数。例如,参照图12,当前系数可以是扫描顺序位置11处的系数1210,在1310处识别的距离表可以指示五(5)的左方场境系数的场境系数距离,并且可以在第五解码器系数寄存器位置处识别与扫描顺序位置六(6)相对应的系数的值,其在图12所示的基于零的解码器系数寄存器1250a中具有四(4)的索引。类似地,在1310处识别的距离表可以指示四(4)的上方场境系数的场境系数距离,并且可以在第四解码器系数寄存器位置处识别与扫描顺序位置五(5)相对应的系数的值,其在图12所示的基于零的解码器系数寄存器1250a中具有三(3)的索引。

在1330处,当前变换系数被熵解码。在一些实施方式中,在1330处对当前变换系数进行熵解码包括识别当前变换系数的值。对当前变换系数进行熵解码还可以包括:在1310处为当前变换系数识别的位置处的当前块在变换系数矩阵中的当前变换系数的值。

对当前变换系数进行熵解码可以包括执行移位操作以将经熵解码的变换系数存储在解码器系数寄存器中。例如,参考图12,可以对解码器系数寄存器1250a执行移位操作,以存储与扫描顺序位置11相对应的系数,如解码器系数寄存器1250b中所示。

尽管图13中未示出,但是可以对于当前块在变换系数矩阵中的每个系数执行场境熵解码,并且可以基于如图5所示的当前块的变换系数矩阵来生成诸如图5所示的输出视频流504的输出视频流或输出视频流的一部分。例如,当前块的变换系数矩阵可以被输出到诸如图5所示的去量子化单元520的去量子化单元,或者可以存储在诸如图1所示的存储器150的存储器中。在一些实施方式中,经解码的视频流可以被输出到呈现单元——诸如图1所示的用户界面130——以用于显示。

如图13所示的场境熵解码的图的其他实施方式是可用的。例如,可以添加场境熵解码的附加元素,可以组合某些元素,和/或可以去除某些元素。在一个实施方式中,场境熵解码可以包括涉及生成熵代码化模型的附加元素。

词语“示例”在本文中用于意指用作示例、实例、或例示。本文描述为“示例”的任何方面或设计不一定被解释为比其他方面或设计优选或有利。相反,使用“示例”一词旨在以具体的方式呈现概念。如本申请中所使用的,词语“或”旨在意指包容性的“或”而不是排他性的“或”。即,除非另有说明,或从上下文中清楚可知,“x包括a或b”旨在意指任何自然包容性排列组合。即,如果x包括a;x包括b;或x包括a和b二者,则在任何上述实例下,满足“x包括a或b”。此外,本申请和所附权利要求书中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”,除非另有说明或从上下文中清楚地指向单数形式。此外,除非这样描述,否则术语“实施例”或“一个实施例”或“实施方式”或“一个实施方式”一词的使用并不旨在意指相同的实施例或实施方式。如本文所使用的,术语“确定”和“识别”或其任何变型包括:使用一个或多个的图1所示的设备以无论任何方式来选择、探知、计算、查找、接收、确定、建立、获得、或以其他方式识别或确定。

此外,为了简化说明,尽管这里的附图和描述可以包括步骤或阶段的序列或系列,但是本文公开的方法的元素可以以各种顺序发生和/或同时发生。此外,本文公开的方法的元素可以与本文未明确呈现和描述的其它元素一起发生。此外,并非需要在此描述的方法的所有元素来实现根据所公开主题的方法。

可以以硬件、软件、或其任何组合来实现发射站100a和/或接收站100b(以及存储在其上和/或由其执行的算法、方法、指令等)的实施方式。硬件可以包括例如计算机、知识产权(ip)核、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求书中,术语“处理器”应被理解为单独地或组合地涵盖任何前述硬件。术语“信号”和“数据”可互换使用。此外,发射站100a和接收站100b的部分不一定必须以相同的方式实现。

此外,在一个实施方式中,例如,可以使用具有计算机程序的通用计算机或通用/处理器来实现发射站100a或接收站100b,所述计算机程序在被执行时实施在此描述的各方法、算法和/或指令中的任何一种。另外地或替选地,例如,可以使用专用计算机/处理器,其可以包含用于实施本文所述的任何方法、算法、或指令的专用硬件。

例如,发射站100a和接收站100b可以在实时视频系统的计算机上实现。替选地,可以在服务器上实现发射站100a,并且可以在与服务器分离的设备——例如手持通信设备——上实现接收站100b。在这种实例下,发射站100a可以使用编码器400将内容编码成编码的视频信号,并将编码的视频信号发射到通信设备。进而,通信设备然后可以使用解码器500对编码的视频信号进行解码。或者,通信设备可以解码在通信设备上本地存储的内容,例如,未被发射站100a发射的内容。其他合适的发射站100a和接收站100b的实现方案是可用的。例如,接收站100b可以是通常固定的个人计算机而不是便携式通信设备,和/或,包括编码器400的设备也可以包括解码器500。

此外,实施方式中的全部或一部分可以采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是可以例如有形地包含、存储、通信、或输送程序以供任何处理器使用或与任何处理器结合使用的任何设备。例如,介质可以是电子、磁性、光学、电磁、或半导体设备。其他合适的介质也是可用的。

已经描述了上述实施方式以便容易理解本申请并不是限制性的。相反,本申请覆盖包括在所附权利要求书的范围内的各种修改和等效布置,其范围应被赋予最广泛的解释,以便涵盖法律许可的所有这样的修改和等效结构。

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