用于低等待时间视频写码的有效量化参数预测方法与流程

文档序号:25337019发布日期:2021-06-04 19:05阅读:163来源:国知局
用于低等待时间视频写码的有效量化参数预测方法与流程
用于低等待时间视频写码的有效量化参数预测方法


背景技术:

1.相关技术的描述
2.各种应用执行图像或视频内容的编码和解码。举例来说,视频转码、桌面共享、云游戏以及游戏观看行为是包括对内容的编码和解码的支持的应用中的一些应用。确定内容编码方式的参数之一是量化参数(qp)。在各种基于块的视频编码方案中,例如那些符合h.264标准的方案,qp在编码过程中调节保留多少空间细节。为每个视频帧或帧的每个块选择的qp与已编码视频帧的大小或已编码块的大小直接相关。选择较低的qp值将保留更多的空间细节,同时产生较大的编码大小。选择较高的qp值将导致丢失更多的空间细节,同时产生较小的编码大小。请注意,术语“量化参数”也可更一般地称为“量化强度”。
附图说明
3.通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
4.图1是用于对内容进行编码和解码的系统的一个实现方式的框图。
5.图2是服务器的用于对视频的帧进行编码的软件部件的一个实现方式的框图。
6.图3根据一个实现方式图示出用于计算用于对视频帧进行编码的量化参数(qp)的方程。
7.图4根据一个实现方式图示出用于计算与帧的编码相关联的参数的方程。
8.图5是图示出用于确定在对视频帧进行编码时使用的量化参数(qp)的方法的一个实现方式的通用流程图。
9.图6是图示出用于基于复杂度指示符来计算已编码帧的估计大小的方法的另一个实现方式的通用流程图。
10.图7是图示出用于确定在对视频帧进行编码时使用的qp的方法的一个实现方式的通用流程图。
11.图8是图示出用于基于复杂度指示符来计算已编码帧的估计大小的方法的一个实现方式的通用流程图。
具体实施方式
12.在以下描述中,阐述了众多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令以及技术,以避免混淆本文描述的方法。将了解,为了说明的简便性和清晰性,图中示出的元件未必按比例绘制。举例来说,所述元件中的一些元件的尺寸可相对于其他元件放大。
13.本文公开了用于计算用于对视频帧进行编码以满足给定位预算的量化参数(qp)的系统、设备和方法。在一个实现方式中,一种系统至少包括编码器、控制逻辑和耦合到所述编码器和所述控制逻辑的存储器。所述控制逻辑至少基于与先前视频帧相关联的第一参
数和/或当前视频帧的第一编码遍次来计算复杂度指示符。一般而言,复杂度指示符表示对给定帧进行编码的难度等级。在一个实现方式中,第一参数是方差。在另一个实现方式中,第一参数是帧内预测因子。在又一个实现方式中,第一参数是帧间对帧内比率。在其他实现方式中,第一参数包括这些参数和/或一个或多个其他参数中的多个。在一些实现方式中,所述控制逻辑至少基于与两个或更多个先前视频帧相关联的所述第一参数来计算所述复杂度指示符。然后,所述控制逻辑使用所述复杂度指示符以计算用于对当前视频帧进行编码以满足给定位预算的优选qp。通过使用基于所述复杂度指示符产生的所述优选qp,所述编码器能够在所述帧期间进行较少的qp调整。这有助于提高所得的已编码视频位流的视觉质量。
14.现在参考图1,示出了用于对内容进行编码和解码的系统100的一个实现方式的框图。系统100包括服务器105、网络110、客户端115以及显示器120。在其他实现方式中,系统100包括经由网络110连接到服务器105的多个客户端,其中多个客户端接收由服务器105产生的相同的位流或不同的位流。系统100还能够包括多于一个的用于为多个客户端产生多个位流的服务器105。
15.在一个实现方式中,系统100实现视频内容的编码和解码。在各种实现方式中,系统100实现不同的应用,例如视频游戏应用、云游戏应用、虚拟桌面基础设施应用或屏幕共享应用。在其他实现方式中,系统100执行其他类型的应用。在一个实现方式中,服务器105渲染视频或图像帧,将渲染后的帧编码成位流,然后经由网络110将已编码位流传送到客户端115。客户端115对编码后的位流进行解码并且产生视频或图像帧以驱动到显示器120或显示合成器。
16.网络110表示任何类型的网络或网络的组合,包括无线连接、直接局域网(lan)、城域网(man)、广域网(wan)、内联网、互联网、有线网络、分组交换网络、光纤网络、路由器、存储区域网络,或其他类型的网络。lan的实例包括以太网(ethernet)网络、光纤分布式数据接口(fddi)网络以及令牌环网络。在各种实现方式中,网络110包括远程直接存储器存取(rdma)硬件和/或软件、传输控制协议/互联网协议(tcp/ip)硬件和/或软件、路由器、中继器、交换机、电网和/或其他部件。
17.服务器105包括用于渲染视频/图像帧并且将帧编码成位流的软件和/或硬件的任何组合。在一个实现方式中,服务器105包括在一个或多个服务器的一个或多个处理器上执行的一个或多个软件应用程序。服务器105还包括网络通信能力、一个或多个输入/输出装置和/或其他部件。服务器105的处理器包括任何数量和类型(例如,图形处理单元(gpu)、中央处理单元(cpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、专用集成电路(asic))的处理器。处理器耦合到一个或多个存储可由处理器执行的程序指令的存储器装置。类似地,客户端115包括用于对位流进行解码并且将帧驱动到显示器120的软件和/或硬件的任何组合。在一个实现方式中,客户端115包括在一个或多个计算装置的一个或多个处理器上执行的一个或多个软件应用程序。在各种实现方式中,客户端115是计算装置、游戏控制台、移动装置、流媒体播放器或其他类型的装置。
18.现在转到图2,示出了服务器200的用于对视频的帧进行编码的软件部件的一个实现方式的框图。请注意,在其他实现方式中,服务器200包括其他部件和/或以与图2所示不同的其他合适方式布置。服务器200接收视频的新帧205,并且向控制逻辑220和编码器230
提供所述新帧。使用硬件和/或软件的任何合适组合来实现控制逻辑220和编码器230中的每一者。控制逻辑220产生由编码器230在对新帧205进行编码时使用的量化参数(qp)225。在一个实现方式中,控制逻辑220基于用于先前帧的参数210和/或来自新帧205的第一遍编码的参数而产生qp 225。在各种实现方式中,这些参数包括方差、帧内预测因子、帧间帧内比率和/或一个或多个其他参数中的一者或多者。在一个实现方式中,控制逻辑220基于在对新帧205的分析和/或第一遍编码期间产生的统计信息而产生新帧参数215。控制逻辑220将新帧参数215存储在存储器240中,并且新帧参数215被用于新帧205和/或视频流的后续帧的第二遍编码。存储器240表示任何数量和类型的用于存储与编码过程相关联的数据和/或指令的存储器或高速缓存装置。
19.编码器230接收新帧205,并且使用等于由控制逻辑220产生的qp 225的qp值对新帧205进行编码。在一个实现方式中,当编码器230开始对新帧205进行编码时,编码器将起始qp值设置为等于由控制逻辑220计算出的qp 225。编码器230的输出是已编码帧235,所述已编码帧被传送到一个或多个客户端(例如,图1的客户端115)和/或存储在存储器中。在一个实现方式中,控制逻辑220执行新帧205的第一遍编码,并且编码器230执行新帧205的第二遍编码。在另一个实现方式中,编码器230执行新帧205的第一遍编码和第二遍编码。在又一个实现方式中,编码器230仅执行新帧205的单次编码。
20.在一个实现方式中,控制逻辑220产生复杂度指示符,所述复杂度指示符基于用于先前帧的参数210和/或来自新帧205的第一遍编码的参数。然后,使用复杂度指示符以基于已经为所得的已编码位流选择的位速率而产生用于对新帧205进行编码的起始qp值225。通过选择适当的起始qp值225,编码器230通常将在新帧205的编码期间进行较少的qp调整。这有助于提高所得的已编码帧235的视觉质量。
21.现在参考图3,示出了用于计算用于对视频帧进行编码的量化参数(qp)的方程。根据方程305中所示的公式来计算压缩帧的大小。压缩帧的位大小等于复杂度指示符除以二的qp除以α次幂的值。复杂度指示符是表示编码器压缩帧有多困难的值。对于高级视频写码(avc)和高效视频写码(hevc)视频压缩标准,qp值的范围是0到51。对于vp9标准,qp值的范围是0到255。对于特定编码器,α值是通过实验得出的常数值。通过关于qp对方程305求解来产生方程310。
22.在一个实现方式中,为了导出给定帧的复杂度指示符,将确定以下参数。首先,确定帧i的方差,或variance(i)。此外,确定表示帧内预测在qp
i
下对帧i的有效性如何的值,或intra_pred_factor(i,qp
i
)。请注意,“intra_pred_factor(i,qp
i
)”在本文中也被称为“帧内预测因子”。此外,确定qp
i
下的帧i的帧间位对帧内位的比率,或inter_intra_ratio(i,qp
i
)。请注意,“inter_intra_ratio(i,qp
i
)”在本文中也被称为“帧间对帧内比率”。对于这些参数,在一个实现方式中,“i”是先前已编码帧的编号。在另一个实现方式中,“i”是当前正在被编码的帧的第一遍次的数目。类似地,在一个实现方式中,“qp
i”是用于先前已编码帧的qp值,而在另一个实现方式中,“qp
i”是用于当前正在被编码的帧的第一遍次的qp值。在单次编码器中,三个参数(variance(i)、intra_pred_factor(i,qp
i
)、inter_intra_ratio(i,qp
i
))将从先前编码的帧累积。在二次编码器中,这三个参数将在第一遍次中累积。
23.在一个实现方式中,“complex”值的分量之一是对包含在帧中的信息的度量。在一
个实现方式中,用于测量包含在帧中的信息的值是活动。在一个实现方式中,通过将相邻像素之间的绝对差之和相加来计算活动。在另一个实现方式中,使用方差来测量包含在帧中的信息。在这个实现方式中,帧的方差由以下方程确定:variance(i)=∑
b
block_variance(b)。在这个方程中,“b”是帧中的块编号,块的大小是16x16像素、32x32像素、64x64像素或其他大小。此外,在这个方程中,block_variance(b)是块“b”中的像素值的方差。
24.现在转到图4,示出了用于计算与帧的编码相关联的参数的方程。intra_pred_factor(i,qp
i
)值表示帧内预测对于帧的有效性如何。如本文所使用,“帧内预测”是指基于给定帧内的其他像素值来预测同一给定帧内的像素值。在对帧进行编码时,编码器供应对内部块进行编码所需的位数(在qp
i
下)。此值将被称为intrabits(b),而intrabits(b)是编码器的速率失真优化(rdo)过程中使用的统计信息之一。在一个实现方式中,使用方程405导出intra_pred_factor(i,qp
i
)。
25.对于帧间帧,inter_intra_ratio(i,qp
i
)值是所需的帧间位与所需的帧内位的比率(在qp
i
下)。如本文所使用,术语“帧间位”是指仅使用帧间编码来对帧进行编码所需的位数。术语“帧间编码”被定义为使用来自帧之前和/或之后的一个或多个其他帧的信息并且不使用来自帧内的其他像素的信息来对帧进行编码。如本文所使用,术语“帧内位”是指仅使用帧内编码来对帧进行编码所需的位数(即,帧内预测)。编码器以与intrabits(b)值相同的方式提供interbits(b)值。在一个实现方式中,inter_intra_ratio(i,qp
i
)值是从方程410导出。
26.一旦给定帧完成编码,以下参数将可用于帧i:variance(i)、intra_pred_factor(i,qp
i
)、inter_intra_ratio(i,qp
i
)以及size(i,qp
i
)。size(i,qp
i
)参数是指已编码帧i的大小,以位为单位。在一个实现方式中,使用方程415导出实际的帧复杂度值(“actual_complexity”)。在一个实现方式中,使用方程420导出帧内帧的估计复杂度(“estimated_complexity”)值:estimated_complexity=variance(i)*intra_pred_factor(i,qp
i
)。在一个实现方式中,使用方程425导出帧间帧的估计复杂度(“estimated_complexity”)值:estimated_complexity=variance(i)*intra_pred_factor(i,qp
i
)*inter_intra_ratio(i,qp
i
)。
27.在一个实现方式中,如果压缩帧的优选大小(或size)是已知的,那么,如果size(i,qp
i
)<size,则使用方程430中所示的以下公式来计算加权因子:weight=size(i,qp
i
)/size。否则,如果size(i,qp
i
)≥size,则使用公式435中所示的以下公式来计算加权因子:weight=size/size(i,qp
i
)。在一个实现方式中,如果优选qp(或qp
preferred
)是已知的,那么,如果qp
i
<qp
preferred
,则使用方程440中所示的以下公式来计算加权因子:weight=qp
i
/qp
preferred
。在一个实现方式中,如果qp
i
≥qp
preferred
,则使用方程445中所示的以下公式来计算加权因子:weight=qp
preferred
/qp
i
。在一个实现方式中,使用方程450中所示的以下公式来计算复杂度指示符:complex=(weight*actual_complexity)+((1

weight)*estimated_complexity)。一旦计算出复杂度指示符,就分别使用方程305或310导出size或qp值。
28.现在参考图5,示出了用于确定在对视频帧进行编码时使用的量化参数(qp)的方法500的一个实现方式。出于论述的目的,按顺序次序示出此实现方式中的步骤和图6到图8的那些步骤。然而,请注意,在所描述方法的各种实现方式中,所描述的要素中的一者或多者同时地执行,以与所示不同的次序执行,或者完全被省略。还在需要时执行其他附加的要
素。本文中描述的各种系统或设备中的任一者被配置成实现方法500。
29.连接到编码器的控制逻辑至少基于与先前视频帧相关联的第一参数来计算复杂度指示符。如前所述,复杂度指示符表示对先前视频帧进行编码的难度等级(框505)。在一个实现方式中,第一参数是方差。在另一个实现方式中,第一参数是帧内预测因子。在又一个实现方式中,第一参数是帧间对帧内比率。在其他实现方式中,第一参数包括这些参数和/或一个或多个其他参数中的多个。在一些实现方式中,所述控制逻辑至少基于与两个或更多个先前视频帧相关联的所述第一参数来计算所述复杂度指示符。
30.接下来,控制逻辑基于复杂度指示符并且基于已编码视频帧的优选大小来计算量化参数(qp)值(框510)。在一个实现方式中,使用(图3的)方程310来计算qp值。在一个实现方式中,基于用于传输已编码视频流的优选位速率来确定已编码视频帧的优选大小。举例来说,在一个实现方式中,优选位速率以每秒位数(例如,每秒3兆位(mbps))来指定,并且视频序列的帧速率以每秒帧数(fps)(例如,60fps、24fps)来指定。在这个实现方式中,控制逻辑将优选位速率除以帧速率,以计算已编码视频帧的优选大小。然后,编码器将用于对当前视频帧进行编码的qp设置为由控制逻辑计算出的qp值(框515)。接下来,编码器利用计算出的qp值对当前视频帧进行编码,并且将编码后的当前视频帧传送到解码器(框520)。在框520之后,方法500结束。
31.现在转到图6,示出了用于基于复杂度指示符来计算已编码帧的估计大小的方法600的一个实现方式。连接到编码器或集成在编码器内的控制逻辑至少基于与先前视频帧相关联的第一参数来计算复杂度指示符,其中复杂度指示符表示对先前视频帧进行编码的难度等级(框605)。接下来,控制逻辑基于复杂度指示符并且基于用于对视频帧进行编码的给定qp来计算已编码视频帧的估计大小(框610)。在框610之后,方法600结束。
32.现在参考图7,示出了用于确定在对视频帧进行编码时使用的qp的方法700的一个实现方式。与编码器相关联的控制逻辑至少基于与给定视频帧的第一遍编码相关联的第一参数来计算复杂度指示符,其中复杂度指示符表示给定视频帧的第一遍编码的难度等级(框705)。接下来,控制逻辑基于复杂度指示符并且基于最终编码的给定视频帧的优选大小来计算量化参数(qp)值(框710)。最终编码的给定视频帧是指给定视频帧的第二遍编码的输出。然后,编码器将用于给定视频帧的第二遍编码的qp设置为由控制逻辑计算出的qp值(框715)。在框715之后,方法700结束。
33.现在转到图8,示出了用于基于复杂度指示符来计算已编码帧的估计大小的方法800的一个实现方式。耦合到编码器的控制逻辑至少基于与给定视频帧的第一遍编码相关联的第一参数来计算复杂度指示符,其中复杂度指示符表示给定视频帧的第一遍编码的难度等级(框805)。接下来,控制逻辑基于复杂度指示符并且基于用于给定视频帧的第一遍编码的给定qp来计算最终编码的给定视频帧的估计大小(框810)。在框810之后,方法800结束。
34.在各种实现方式中,使用软件应用程序的程序指令来实现本文中描述的方法和/或机制。举例来说,可由通用或专用处理器执行的程序指令是预期的。在各种实现方式中,此类程序指令可由高级编程语言表示。在其他实现方式中,程序指令可从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,可撰写描述硬件的行为或设计的程序指令。此类程序指令可由例如c的高级编程语言表示。替代地,可使用例如verilog的硬件设计
语言(hdl)。在各种实现方式案中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。在使用期间,计算系统可存取存储介质,以向计算系统提供程序指令以进行程序执行。一般而言,此类计算系统至少包括一个或多个存储器和被配置成执行程序指令的一个或多个处理器。
35.应强调,上述实现方式仅是实现方式的非限制性示例。一旦充分理解上述公开内容,许多变化和修改将变得对本领域的技术人员显而易见。所附权利要求意图被解释为涵盖所有此类变化和修改。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1