一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于以不同压缩水平进行视频编码的辅助信息的制作方法

2021-12-08 00:23:00 来源:中国专利 TAG:

用于以不同压缩水平进行视频编码的辅助信息
1.背景
2.相关技术的描述
3.视频处理算法复杂且包括许多不同的函数。高级处理器用于满足高计算需求。视频处理的复杂性随着显示分辨率增加而增加。另外,高清晰度视频编码应用在消费者市场空间中快速增长。此外,视频处理随着可用数据带宽减小和处理实时发生而变得更加复杂。例如,虚拟现实(vr)应用诸如vr游戏应用正变得更加流行。
4.对于vr应用,无线通信链路从计算机(或其他装置)向虚拟现实(vr)头戴式耳机(或头戴式显示器(hmd))发送视频流。无线传输vr视频流消除了在计算机与佩戴hmd的用户之间建立电缆连接的需求,从而允许用户不受限制地移动。通常通过镜头观看vr视频内容以促进用户的高视野并产生沉浸式环境。视频压缩已经是复杂的过程,而在通过低带宽无线链路传输vr视频同时使终端用户所感知到的任何视频质量下降最小化的情况下,视频压缩变得更加具有挑战性。
5.鉴于以上内容,期望用于执行高效视频压缩的高效方法和系统。
附图说明
6.通过结合附图参考以下描述,可更好地理解本文描述的方法和机制的优点,在附图中:
7.图1是视频处理系统的一个实施方案的框图。
8.图2是视频处理系统的另一个实施方案的框图。
9.图3是视频帧中的同心区域的一个实施方案的框图。
10.图4是视频编码器的一个实施方案的框图。
11.图5是视频编码逻辑的一个实施方案的框图。
12.图6是用于执行高效视频渲染的方法的一个实施方案的流程图。
13.图7是用于执行高效视频压缩的方法的一个实施方案的流程图。
14.图8是视频帧中的块的帧间依赖关系的一个实施方案的框图。
15.图9是视频帧中的块的帧间依赖关系的一个实施方案的框图。
16.图10是用于执行高效视频压缩的方法的一个实施方案的流程图。
17.图11是视频帧中的块的帧间依赖关系的一个实施方案的框图。
18.图12是视频帧中的块的帧间依赖关系的一个实施方案的框图。
19.图13是用于执行高效视频压缩的方法的一个实施方案的流程图。
20.虽然本发明容易有各种修改和替代形式,但是通过举例方式在附图中示出特定的实施方案并在本文中对其进行详细描述。然而,应理解,附图及其详细描述并不意在将本发明局限于所公开的特定形式,而相反,本发明将涵盖落入如所附权利要求限定的本发明的范围内的所有修改、等效形式和替代方案。
具体实施方式
21.在以下描述中,阐述了众多特定细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实施方案。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应了解,为了说明的简单明了,附图中所示的元件未必按比例绘制。例如,元件中的一些的尺寸可相对于其他元件被放大。
22.在各种实施方案中,视频处理系统包括通过无线链路向接收器发送视频流的发射器。发射器包括处理器和视频编码器(或编码器)。在一些实现方式中,处理器为gpu,并且处理器生成视频帧的多个像素块。所生成的像素块对应于视频帧的所渲染的像素块。在各种实施方案中,处理器接收软件提示和硬件提示中的一个或多个,所述软件提示和所述硬件提示指示包括视频帧的一个或多个块的给定区域的压缩水平不同于视频帧的位于所述给定区域外的直接相邻块的压缩水平。响应于接收到这种提示,处理器生成用于所述给定区域的辅助信息。在一些实施方案中,直接相邻块包括在具有单独和对应的辅助信息的单独区域中。在其他实施方案中,直接相邻块不包括在具有单独和对应的辅助信息的单独区域中。例如,在一些情况下,直接相邻块包括在场景的背景中。
23.辅助信息识别给定区域在视频帧中的位置并且包括给定区域的几何描述。另外,辅助信息识别给定区域中内容的类型。内容的类型的示例为具有移动对象的区域、有凹区域、焦点、具有高反差边缘的区域等等。在一些实施方案中,内容的类型指示给定区域的压缩水平。在其他实施方案中,辅助信息包括指定给定区域的压缩水平的单独指示。在又其他施方案中,辅助信息包括指定特定编码参数的绝对值的指示,其之后用于在对给定区域内的块进行编码期间设定或超弛所述特定编码参数的值。视频编码器中的逻辑将在视频编码器中的一个或多个块生成的特定编码参数的值替换为辅助信息中指定的绝对值。特定编码参数的示例为由视频编码器中的量化块使用的量化参数(qp)和要由视频编码器中的熵编码块编码的码元的长度。
24.此外,在其他实施方案中,辅助信息包括指定特定编码参数的相对值的指示,其之后用于在对给定区域内的块进行编码期间更新所述特定编码参数的值。视频编码器中的逻辑通过辅助信息中指定的相对量更新视频编码器中的一个或多个块生成的特定编码参数的值。在各种设计中,相对量为百分比量或差异量。在一些示例中,相对量为正数量(例如,25%增长),而在其他示例中,相对量为负数量(例如,qp减小5个或码元长度减小3位)。
25.在实施方案中,将辅助信息作为元数据连同视频帧的所渲染的像素块一起存储。在一些设计中,处理器根据hdmi(高清晰度多媒体接口)规范、显示端口(dp)规范或其他规范发送视频帧中的辅助信息。在其他实施方案中,处理器向编码器发送作为与所渲染的视频信息分离的元数据的辅助信息。在一些设计中,处理器使用usb(通用串行总线)接口、pcie(快速外围部件互连)接口或其他接口发送辅助信息。在各种实施方案中,编码器基于如先前描述的所接收的辅助信息替换或更新一个或多个编码参数。
26.在一些实施方案中,当编码器从所接收的辅助信息确定区域的压缩水平小于直接相邻块的压缩水平时,编码器从直接相邻块的量化参数的值和在未接收到辅助信息的情况下会生成的量化参数的值中的每一个减小量化参数。如先前所述,在实施方案中,所述减小基于在所接收的辅助信息中指定用于所述区域的绝对值或相对值。当编码器从所接收的辅
助信息确定区域的压缩水平小于直接相邻块的压缩水平时,在一些实施方案中,编码器在运动估计期间在搜索区中执行对区域的全搜索,而不是在未接收到辅助信息的情况下会使用的快速搜索。另外,在一些实施方案中,编码器由于接收到辅助信息而增加通过算术熵编码算法生成的分数的精度。基于所接收的辅助信息更新编码参数的其他示例是可能的并且设想所述其他示例。
27.在各种示例中,视频编码器通过考虑n个在前的帧且考虑m个随后的帧来替换或更新帧x的一个或多个编码参数,其中n和m中的每个为非零正整数。换句话说,在一些实施方案中,给定帧(诸如帧x)的辅助信息包括来自一个或多个其他帧的辅助信息的信息,其中x为非零正整数。例如,帧x的辅助信息包括来自帧x

n到帧x m的辅助信息的一部分,其中n小于x。在一个示例中,场景包括飞机飞过天空。软件提示或硬件提示将飞机识别为场景中的焦点并且因此为区域。在示例中,帧x

1的块14为蓝天,而帧x的块14为飞机的机头。
28.帧x

1的辅助信息包括帧x

1中的区域(飞机)的位置信息和几何尺寸。在实施方案中,帧x

1的辅助信息还包括帧x中的区域(飞机)的位置信息和几何尺寸。因此,视频编码器知道块14从帧x

1中的背景中的蓝天转变为帧x中的飞机的机头(区域的左边缘)。视频编码器以移除间断的突然更新的方式更新编码参数,诸如量化参数(qp)。例如,当使用单个帧的辅助信息时,帧x

1的块14作为蓝天背景具有qp为20,而帧x的块14作为飞机的机头具有qp为8。存在qp的从20到8的突变。可能qp的突变使观看者在屏幕上看到闪变。
29.在一个实施方案中,视频编码器生成用作平均公式的加权和以确定块14跨多个帧的qp,而不是包括两个连续帧之间的qp突变。在一个示例中,视频编码器更新块14跨4个先前帧的qp并且以步长3将qp从20减少到8,因为(20

8)/4为3。在此,帧x

n到x中的每一个具有相同的权重1。在该示例中,视频编码器生成跨帧x

4到x的qp为20、17、14、11和8。换句话说,视频编码器生成帧x

4的块14的qp为20、和帧x

3的块14的qp为17、和帧x

2的块14的qp为14、和帧x

1的块14的qp为11、和帧x的块14的qp为8。不存在两个帧之间的块的qp突变。类似的方法用于当帧x的块14为飞机的尾部(区域的右边缘)并且帧x 1的块14为蓝天背景时的示例的后续的帧。
30.在以下描述中,图1

图2描述使用辅助信息识别帧中的区域的视频处理系统,其中编码参数基于对区域的识别来更新。图3描述了诸如帧中的同心区域等区域的示例。图4

图5描述了使用辅助信息更新编码参数的视频编码器和视频编码逻辑。图6

图7描述了用于使用辅助信息更新编码参数的方法。尽管图1

图7描述了使用辅助信息更新给定帧的编码参数的视频编码逻辑,但是所描述的电路和逻辑还能够基于其他帧的信息更新编码参数。图8

图9和图11

图12描述了给定视频帧内的块的帧间依赖关系。图10和图13描述了用于使用周围帧的辅助信息更新编码参数的方法。
31.参考图1,示出了视频处理系统100的一个实施方案的框图。视频处理系统100(或系统100)至少包括可操作以用有限带宽连接彼此通信的第一通信装置(例如,发射器110)和第二通信装置(例如,接收器160)。在一些实施方案中,有限带宽连接是有线连接。在其他实施方案中,诸如所示的实施方案,有限带宽连接是无线连接。应注意,发射器110和接收器160也可以被称为收发器。发射器110和接收器160表示任何类型的通信装置和/或计算装置。例如,在各种实现方式中,发射器110和/或接收器160是移动电话、平板电脑、台式计算机、膝上型计算机、服务器、头戴式显示器(hmd)、电视机、另一种类型的显示器、路由器或其
他类型的计算或通信装置中的一者。
32.在各种设计中,发射器110向接收器160发送视频信息,诸如对应于帧140的渲染信息。尽管帧140描绘帆船在湖上的图画,但是在其他示例中,帧140包括多种多样的视觉信息(诸如体育赛事的场景、视频游戏的场景等等)的信息。发射器110包括用于实现处理单元120和存储器150的任何数量和类型的处理器和存储器装置。例如,处理单元120使用各种处理器。处理器的示例为通用中央处理单元(cpu)122、图形处理单元(gpu)124、加速处理单元(apu)、专用集成电路(asic)、现场可编程阵列(fgpa)、视频编码器(126)等等。存储器150使用以下各项中的一者或多者:各种类型的同步随机存取存储器(sram)、各种类型的动态随机存取存储器(dram)、硬盘驱动器(hdd)、固态驱动器(ssd)等等。
33.在各种实现方式中,发射器110使用通信光纤(或光纤)以进行高级互连和芯片通信。为了容易说明,未示出光纤。在各种实施方案中,不同类型的流量独立地流过光纤。光纤通过以下方式支持独立流量:允许单根物理光纤总线包括多个叠加的虚拟信道或专用源和目的地缓冲器,其各自运载不同类型的流量。每个信道是独立地流量受控的,而没有在不同信道中的业务之间的依赖关系。
34.cpu 122使用一个或多个处理器核心,所述处理器核心具有用于根据各种预限定通用指令集中的一个执行指令的电路。在一些设计中,处理器核心使用与无序调度和执行指令结合的并发多线程技术。gpu 124使用单指令多数据字(simd)微型体系结构中的多个并行执行道。多个并行执行道还被称为simd单元或simd道。simd道前后紧接操作。simd道中的每一个独立于其他的数据单元独立地处理数据单元,但是与其他simd道使用相同的操作或命令序列。在一个示例中,gpu中的操作系统调度程序和命令处理器中的一个或多个调度simd道上的命令。
35.在一些实现方式中,gpu 124包括像素处理流水线。在其他实现方式中,像素处理流水线位于gpu 124外部。simd道和像素处理流水线中的一个或多个执行像素值计算、顶点变换和其他图形操作,诸如色彩管理、周围适应性像素(aap)修改、动态背光控制(dpb)、面板伽马校正、和抖动。在各种实现方式中,处理单元120包括视频编码器126,以在向接收器160发射视频流之前对视频流进行编码(即压缩)。在各种实现方式中,视频编码器126(或编码器126)使用硬件和/或软件(诸如固件)的任何合适的组合来实现。编码器126以比特流生成比特并将它们存储在缓冲器中。
36.编码器126接收未压缩的所渲染的视频信息,并且以符合标准视频压缩规范的压缩格式的比特流的形式生成比特。压缩规范或标准的示例为各种专有的定制设计的编解码器,mpeg

2 part 2、mpeg

4 part 2、h.264(mpeg

4part 10)、h.265(支持4k视频压缩的高效视频编码)、theora、realvideo rv40、vp9、和av1。由编码器126提供的压缩通常为有损的,因此输出的压缩视频信息缺少在原始的、所渲染且未压缩视频信息中存在的信息中的一些。视频信息通常划分为帧,并且帧有时划分为宏块或块。由于压缩的有损特性,编码器126确定在使如用户观看的在显示装置上描绘的场景的视觉质量降级最小化时移除原始的、所渲染且未压缩视频信息中的哪些信息。例如,编码器126确定块或帧视频信息的哪些区域以较高压缩比进行压缩和哪些区域以较低压缩比进行压缩。另外,压缩算法跟踪用于表示视频的数据量,其由位速率来确定,同时还跟踪存储经压缩的视频信息的缓冲器的存储水平以避免下溢和上溢状况。因此,编码器126面对许多挑战来支持压缩接收到的所渲染
的视频信息同时实现目标压缩比、使视频发射的延时最小化、防止存储输出数据的缓冲器的上溢和下溢状况以及使显示装置上的用户主观图像质量最大化。
37.在各种实施方案中,cpu 122和gpu 124中的一个或多个向编码器126发送辅助信息130以帮助压缩编码器126接收到的视频信息。在一些实施方案中,cpu 122和gpu 124中的一个或多个直接向编码器126发送辅助信息130的内容。在其他实施方案中,cpu 122和gpu 124中的一个或多个发送指向存储辅助信息130的内容的存储器位置的地址信息。因此,编码器126接收所渲染且未压缩视频信息(或指向存储视频信息的存储器位置的地址)。另外,编码器126接收辅助信息130(或指向存储辅助信息130的存储器位置的地址)。在一些实施方案中,编码器126同时接收特定帧(或帧的多个块中的块)的所渲染的未压缩视频信息和辅助信息130。例如,编码器126接收特定帧的未压缩的所渲染的像素信息,并且特定帧的辅助信息130存储在帧像素信息的元数据部分中。因此,与特定帧相关联的辅助信息130与特定帧的像素信息一起被发送。
38.辅助信息130包括编码器126难以从接收到的所渲染的像素数据得到且满足系统100的时序要求的信息。在一些情况下,编码器126不可能得到辅助信息130的一些组成部分。因此,由编码器126执行的压缩在具有辅助信息130而编码器126不试图生成辅助信息130的情况下变得更加高效。编码器126使用辅助信息130确定压缩哪些区域并且适当地设定压缩比。如本文使用的,“压缩量”还被称为“压缩水平”或“压缩比”。压缩水平或压缩比越大,压缩量越大。类似地,压缩水平或压缩比越小,压缩量越小。在各种实施方案中,特定帧(诸如帧140)的辅助信息130包括对有凹区域、包括高反差边缘的区域、和焦点的指示。
39.如本文所使用,术语“焦点”被限定为在用户观看所述帧时每只眼睛预期聚焦到的帧的部分。在一些情况下,“焦点”至少部分地基于检测眼睛所指向的位置的眼睛跟踪传感器来确定。在其他情况下,“焦点”基于帧数据的内容来确定。例如,在来自视频游戏的场景中,屏幕上的焦点是用户的对象(例如,赛车、士兵、足球运动员),其在用户的游戏控制下。在一个实现方式中,编码器126使用辅助信息130来确定对于背景对象和也不是焦点的其他对象使用较高压缩比。另外,编码器126使用辅助信息130来决定对于作为焦点(诸如帧140中的焦点142)的区域中的对象使用较低压缩比。
40.在一些实施方案中,编码器126为一系列焦点选择一系列压缩比。在实施方案中,辅助信息130包括第一级焦点的信息以及非第一级焦点(诸如第二级焦点、第三级焦点等)的信息。在一个示例中,第一级焦点是用户的在视频游戏中的对象(例如,赛车、士兵、足球运动员)。第二级焦点是对手玩家的对象、屏幕的底部处显示统计数据的滚动条等中的一者。对于第一级焦点,编码器126选择最低的压缩比。对于第二级焦点,编码器126选择中档的压缩比。对于第三级焦点,在其存在的情况下,编码器126选择在第二级焦点的压缩比与最高压缩比之间的压缩比。对于不位于任何焦点中的对象,诸如背景,编码器126选择最高压缩比。
41.在一些实现方式中,发射器110和接收器160在非许可60千兆赫(ghz)频带上无线地通信。在极高频(ehf)带(诸如60ghz频带)内操作的无线通信装置能够使用相对小的天线发射和接收信号。例如,在一个实现方式中,发射器110和接收器160根据电气电子工程师学会(ieee)802.11ad标准(即,wigig)进行通信。在其他实现方式中,发射器110和接收器160在其他频带上和/或通过遵守其他无线通信协议(无论是根据标准还是其他)无线地通信。
例如,可以使用的其他无线通信协议包括但不限于:与各种无线局域网(wlan)一起利用的协议、基于电气电子工程师学会(ieee)802.11标准(即,wifi)的wlan、移动电信标准(例如,cdma、lte、gsm、wimax)等。
42.在一个实现方式中,视频处理系统100执行用于将所渲染的虚拟环境的帧从发射器110无线地发射到接收器160的虚拟现实(vr)应用。在其他实现方式中,视频处理系统100包括利用本文描述的方法和机制的其他类型的应用。在一个实现方式中,发射器110包括至少射频(rf)收发器模块114、处理单元120、存储器150和天线112。rf收发器模块114发射和接收rf信号。在一个实现方式中,rf收发器模块114是可操作来通过60ghz频带中的一个或多个信道无线地发射和接收信号的毫米波收发器模块。rf收发器模块114将基带信号转换成rf信号以用于无线发射,并且rf收发器模块114将rf信号转换成基带信号以用于由发射器110提取数据。
43.应注意,出于说明性目的,将rf收发器模块114示出为单个单元。应理解,在其他实现方式中,发射器110包括任何数量的不同单元(例如芯片),这取决于rf收发器模块114的实现方式。发射器110还包括用于发射和接收rf信号的天线112。天线112表示可以被配置为改变无线电信号的发射和接收的方向性的一根或多根天线,诸如相控阵列、单元天线、一组切换波束天线等。作为示例,天线112包括一个或多个天线阵列,其中天线阵列内的每根天线的振幅或相位可以独立于阵列内的其他天线进行配置。尽管天线112被示出为在发射器110外部,但在其他实现方式中,天线112包括在发射器110内部。另外,在其他实施方案中,发射器110包括在任何数量的其他部件中,所述部件未示出以避免使附图不清楚。类似于发射器110,在接收器160内实现的部件至少包括rf收发器模块164、处理器170、解码器172、存储器180和天线162,它们类似于上文针对发射器110描述的部件。应理解,接收器160还可以包括或耦合到其他部件(例如,显示器)。
44.现在转向图2,示出了视频处理系统200的一个实施方案的框图。先前描述的电路和逻辑被同等编号。在所示的实施方案中,视频处理系统200是无线虚拟现实(vr)系统200。视频处理系统200(或系统200)至少包括计算机210和头戴式显示器(hmd)220。计算机210表示任何类型的计算装置。计算机装置的示例为一个或多个处理器、存储器装置、输入/输出(i/o)装置、rf部件、天线以及指示个人计算机或其他计算装置的其他部件。在其他实现方式中,除个人计算机之外,还利用其他计算装置来将视频数据无线地发送到头戴式显示器(hmd)220。例如,计算机210可以是游戏机、智能手机、机顶盒、电视机、视频流式传输装置、可穿戴装置、主题公园游乐设施的部件或其他计算机。另外,在其他实现方式中,hmd 220可以是计算机、台式电脑、电视机或用作连接到hmd或其他类型的显示器的接收器的其他装置。
45.计算机210和hmd 220各自包括用于进行无线通信的电路和/或部件。应注意,虽然计算机210被示出为具有外部天线,但这仅仅被示出以说明视频数据是无线发送的。应理解,在其他实施方案中,计算机210具有在计算机210的外壳内部的天线。另外,虽然可以使用有线电源连接来为计算机210供电,但hmd 220通常由电池供电。替代地,计算机210可以是由电池供电的膝上型计算机(或另一种类型的装置)。
46.在一个实现方式中,计算机210包括动态地渲染vr环境的表示以便呈现给佩戴hmd 220的用户的电路,诸如cpu 122和gpu 124中的一个或多个。例如,cpu 122执行具有用于渲
染vr环境的指令的软件应用,并且cpu 122向gpu 124发送渲染命令并向编码器126发送编码(压缩)命令。在其他实现方式中,计算机210包括其他类型的处理器,包括专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)或其他处理器类型。
47.在各种实施方案中,编码器126接收来自各种处理器类型中的一个或多个的辅助信息130。编码器126使用辅助信息130来以高效方式压缩帧中的所渲染的视频信息。例如,编码器126使用辅助信息130来确定帧视频信息的哪些区域以较高压缩比进行压缩和哪些区域以较低压缩比进行压缩。在一些实施方案中,信息130为元数据,其既与帧的相关联的所渲染的信息(所渲染像素的块)一起存储,又与帧的所渲染的信息(所渲染像素的块)一起被发送到编码器126。
48.在一些实施方案中,辅助信息130包括存储特定编码的所渲染像素的块的元数据中的一个或多个字段,并且编码器126中的逻辑对这些字段进行解码。cpu 122接收来自在cpu 122上执行的软件应用或来自外部硬件(诸如hmd 220)的指定焦点的指示。在一些实施方案中,所述指示还包括被指定为焦点的区域的几何尺寸。在其他实施方案中,gpu 124确定被指定为焦点的区域的几何尺寸。在一个示例中,cpu 122接收来自hmd 220的对有凹区域的指示,并且hmd 220发送位置信息,诸如有凹区域位于距屏幕的左侧2200个像素和从屏幕的底部向上1300个像素处。所述区域是具有在水平方向上测量的700个像素的半径的圆圈。在其他示例中,将距离测量为屏幕宽度的百分比或各种其他单位。在一些实施方案中,特定标识符用于指示信息对应于有凹区域。标识符还指示所提供的尺寸的类型。在其他实施方案中,值的放置或排序指示即将到来的数据是否对应于有凹区域或设定区域的哪些尺寸。
49.在另一个示例中,cpu 122执行软件应用,诸如视频游戏,并且软件应用提供对焦点的指示。该指示指定中心位于距屏幕的左侧800个像素且从屏幕的底部向上900个像素处的区域。所述区域为具有在水平方向上测量的600个像素的长轴和在竖直方向上测量的200个像素的短轴的椭圆形。当编码器126接收到对应于该区域的辅助信息130时,编码器126减少该区域的所渲染像素的压缩比。在一些实施方案中,辅助信息130识别高反差区域。高反差区域的一个示例为从场景的一个区域到所述场景的相邻区域的平均色彩的突变,特别是当区域之间的边界在非水平方向上定向时。在实施方案中,软件应用将对高反差区域的指示提供给cpu 122。在另一个实施方案中,gpu 124确定高反差区域。在示例中,高反差区域存在于位于距屏幕的左侧2100个像素和从屏幕的底部向上1500个像素处的区域中。所述区域为具有在竖直方向上测量的300个像素的长轴和在水平方向上测量的100个像素的短轴的椭圆形。对于该高反差区域,编码器126减少所渲染的像素数据的压缩比。
50.尽管圆圈和椭圆的形状用作信息130中的示例,信息130使用各种其他形状和对应的尺寸是可能的并且设想信息130使用各种其他形状和对应的尺寸。例如,在一些实施方案中,信息130包括三维(3

d)方向矢量以指示有凹区域。在其他实施方案中,信息130包括值对,其中第一值为指示辅助信息的类型的类型值,并且第二值指示以通过第一值指示的辅助信息的给定单位的值。在又其他实施方案中,在值列表中的位置指示辅助信息的类型。
51.在实施方案中,编码器126基于当前处理的像素是否位于通过辅助信息130识别的区域内来动态地调整编码参数。在一些实施方案中,编码器126增加水平视频行中的不与通过辅助信息130识别的区域中的任何区域相交的部分的压缩比。相反,编码器126减小水平
视频行中的与通过辅助信息130识别的区域中的任何区域相交的部分的压缩比。在实施方案中,编码器126还使用所识别区域来确定减小多少压缩比。如先前所述,在一个实施方案中,对于第一级焦点的区域,编码器126减小比第二级焦点和第三级焦点的区域更多的压缩比,以允许将第一级焦点的区域的所渲染像素数据中的更多发送到接收器。
52.在一些实施方案中,辅助信息130包括指定特定编码参数的绝对值的指示,其之后用于在对给定区域内的块进行编码期间设定或超弛所述特定编码参数的值。视频编码器126中的逻辑将视频编码器126中的一个或多个块生成的特定编码参数的值替换为辅助信息中指定的绝对值。特定编码参数的示例为由视频编码器中的量化块使用的量化参数(qp)和要由视频编码器中的熵编码块编码的码元的长度。
53.在其他实施方案中,辅助信息130包括指定特定编码参数的相对值的指示,其之后用于在对给定区域内的块进行编码期间更新所述特定编码参数的值。视频编码器126中的逻辑通过辅助信息中指定的相对量更新视频编码器126中的一个或多个块生成的特定编码参数的值。在各种设计中,相对量为百分比量或差异量。在一些示例中,相对量为正数量(例如,25%增长),而在其他示例中,相对量为负数量(例如,qp减小5个或码元长度减小3位)。
54.如先前所述,在一些实施方案中,将辅助信息作为元数据连同视频帧的所渲染的像素块一起存储。在一些设计中,处理器122

124中的一个或多个根据hdmi(高清晰度多媒体接口)规范、显示端口(dp)规范或其他规范在视频帧中向编码器126发送辅助信息130。在其他实施方案中,处理器122

124中的一个或多个向编码器126发送作为与所渲染的视频信息分离的元数据的辅助信息130。在一些设计中,处理器122

124中的一个或多个使用usb(通用串行总线)接口、pcie(快速外围部件互连)接口或其他接口发送辅助信息130。
55.返回到接收器装置,hmd 220包括接收和解码由计算机210发送的压缩比特流以生成所渲染vr环境的帧的电路。然后,hmd 220将所生成的帧驱动到集成在hmd 220内的显示器。在显示在hmd 220上的每个图像内,显示在hmd 220的右侧225r上的场景225r包括聚焦区域230r,而显示在hmd 220的左侧上的场景225l包括聚焦区域230l。这些聚焦区域230r和230l分别由hmd 220的扩展的右侧225r和左侧225l内的圆圈指示。
56.在一个实现方式中,聚焦区域230r和230l分别在右半帧和左半帧内的位置基于hmd 220内的眼睛跟踪传感器来确定。在另一个实现方式中,聚焦区域230r和230l的位置由vr应用基于预期用户正在看着的地方来指定。应注意,聚焦区域230r和230l的大小可以根据实现方式而变化。例如,在一个实现方式中,如果hmd 220包括眼睛跟踪传感器以基于用户的每一只眼睛的注视所指向的地方来跟踪焦点对准区域,则聚焦区域230r和230l可以相对较小。否则,如果hmd 220不包括眼睛跟踪传感器,并且聚焦区域230r和230l是基于用户统计地很可能正在看着的地方确定的,则聚焦区域230r和230l可以相对较大。在其他实现方式中,其他因素可以致使聚焦区域230r和230l的大小被调整。
57.在一个实现方式中,编码器126针对聚焦区域230r和230l内的块使用最低的压缩量,以维持这些区域内的像素的最高主观视觉质量和最高细节水平。应注意,“块”在本文中也可以称为“切片”。如本文所使用,“块”被限定为一组相连像素。例如,在一个实现方式中,块是在所显示图像中形成正方形的一组8
×
8个相连像素。在其他实现方式中,使用块的其他形状和/或其他大小。在聚焦区域230r和230l之外,编码器126使用更高的压缩量。这种方法利用人类视觉系统,其中每只眼睛具有大的视野,但眼睛仅聚焦在大视野内的小区域上。
基于眼睛和大脑感知视觉数据的方式,人通常将不会注意到聚焦区域之外的区域中的较低质量。
58.在一个实现方式中,图像内的块离聚焦区域越远,编码器126就越增加用于对块进行编码的压缩量。例如,如果第一块与聚焦区域相距第一距离并且第二块与聚焦区域相距第二距离,其中第二距离大于第一距离,则编码器将使用与第一块相比更高的压缩率对第二块进行编码。这将导致当将第二块解压缩并显示给用户时,第二块与第一块相比具有更少的细节。在一个实现方式中,编码器126通过增加在对给定块进行编码时所使用的量化强度水平来增加所使用的压缩量。例如,在一个实现方式中,使用量化参数(qp)设置来指定量化强度水平。在其他实现方式中,编码器126通过改变其他编码设置的值来增加用于对块进行编码的压缩量。例如,当编码器126根据辅助信息130确定特定像素对应于第一级焦点中的草的叶片或高反差边缘的其他示例时,编码器126减小这些特定像素的压缩量。
59.现在转向图3,示出了在半帧的聚焦区域之外的对应于不同压缩水平的同心区域300的图示的一个实施方案。在一些实施方案中,区域305为焦点区域。例如,在实施方案中,区域305为通过头戴式显示器(hmd)中的眼睛跟踪传感器确定的有凹区域。在另一个实施方案中,区域305为通过gpu或其他类型的处理器确定来包括高反差边缘的区域。在另一个实施方案中,区域305为通过gpu或其他类型的处理器确定来包括焦点的区域。在任何所述情况下,gpu或其他类型的处理器确定用于区域305的压缩水平不同于用于周围区域(诸如直接相邻区域310)的压缩水平。
60.图示中的每个方格表示半帧的切片,其中切片包括任何数量的像素,所述数量根据实现方式而变化。在屏幕的每一半中,使用图3底部的公式335来确定每个切片与眼注视点的距离。在公式335中,s
b
是切片大小。在一个实现方式中,s
b
是8或16。在其他实现方式中,s
b
可以是其他大小。变量x
偏移
和y
偏移
针对以下事实进行调整:切片(x,y)是相对于图像的左上角的,并且x
眼睛
和y
眼睛
是相对于屏的每一半的中心的。还将slice_size除以二加到x
偏移
和y
偏移
中的每一者,以将以下事实考虑在内:(s
b
*x
i
,s
b
*y
i
)是每个切片的左上角,并且目标是确定每个切片的中心是落在每个半径的内部还是外部。
61.然后,在使用公式335计算d
i2
之后,将d
i2
与“n”个半径(r0、r1、r2、

、r
n
)中的每一个的平方进行比较,以确定切片属于哪个压缩区域,其中n是正整数。在图3所示的实现方式中,n等于5,但是应理解,这仅仅出于说明性目的而示出。例如,在该实现方式中,区域305为具有由箭头r5指示的半径的聚焦区域。区域310为邻近聚焦区域的具有由箭头r4指示的半径的区域。区域315为具有由箭头r3指示的半径的下一个较大区域。区域320为具有由箭头r2指示的半径的下一个较大区域。区域325为具有由箭头r1指示的半径的下一个较大区域,并且区域330为图示300中所示的具有由箭头r0指示的半径的最大区域。在另一个实现方式中,n等于64,而在其他实现方式中,n可以是各种其他合适的整数值中的任一个。
62.基于从聚焦区域305的中心到给定切片的距离(或基于从聚焦区域305的中心到给定切片的距离的平方),编码器确定给定切片属于哪个压缩区域。在一个实现方式中,一旦识别出切片所属于的区域,就使用区域标识符(id)索引到查找表中。n个半径存储在查找表中。在一个实现方式中,将半径平方值存储在查找表中以消除对硬件乘法器的需要。在一个实现方式中,以单调递减次序对半径平方值进行编程,使得条目零指定最大圆,条目一指定第二最大圆,依此类推。
63.在一个实现方式中,来自查找表的输出是切片的完整目标压缩大小。“区域id”在本文中也可称为“区id”。在写入fifo缓冲器中以便之后在处理小波切片时使用之前,利用压缩比(或c_ratio)值对目标大小进行缩放。按c_ratio的某种函数进行缩放产生适于降低的射频(rf)链路容量的较小的目标切片大小。在各种实施方案中,辅助信息诸如(图1和图2的)辅助信息130包括到给定切片的距离。
64.现在参考图4,示出了视频编码器400的一个实施方案的概况性框图,所述视频编码器使用经由接口412接收的辅助信息410来动态地调整压缩。在各种实施方案中,视屏编码器400等效于(图1和图2的)编码器126。视频编码器400(或编码器400)经由接口412接收输入视频数据402,并且生成输出视频数据440,其为输入视频数据402的经压缩版本。在各种实施方案中,接口412包括用于接收辅助信息410和视频数据402的任何合适的电路,诸如一根或多根总线或其他电路。在一些实施方案中,单独的接口电路412用于接收辅助信息410和视频数据402。在其他实施方案中,组合的接口电路用于接收辅助信息410和视频数据402两者。各种这样的实施方案是可能的并且设想各种这样的实施方案。在各种实现方式中,编码器400基于各种视频压缩标准之一和接收到的辅助信息410来压缩输入视频数据402。编码器400包括编码阶段420和位速率控制器450。尽管描述了特定的逻辑块,但是在其他实施方案中,不使用逻辑块422

458中的一个或多个,并且添加一个或多个附加的逻辑块。
65.在各种设计中,编码器400接收输入视频数据402作为渲染数据。例如,外部gpu基于从cpu接收的渲染命令而生成帧的多个像素块。在各种设计中,编码器400生成输出视频数据440作为比特流。如本文所使用,“比特流”是比特序列。在一些情况下,编码器的输出比特流被测量为“位速率”,其为每单位时间生成或处理的位数。例如,在一些设计中,位速率以每秒千位(kbps)或每秒兆位(mbps)的单位来表达。既位于编码阶段420内也位于位速率控制器450与编码阶段420之间的反馈环路设定输出视频数据440的位速率。反馈环路确保该位速率不下降到低于在显示器上向用户产生较差主观质量图像的下限。反馈环路还防止输出位速率超过通过外部因素设定的上限。外部因素的一个示例为可用链路带宽。外部因素的另一个示例为外部缓冲器(未示出)的存储使用量。编码器400以不使外部缓冲器下溢或上溢的方式生成输出视频数据440。
66.编码阶段420包括多个逻辑块。在视频压缩期间,编码器400确定帧内的空间冗余,并且确定帧之间的时间冗余。逻辑块422包括用于估计帧中的任何检测到的运动的逻辑,并且补偿任何估计的运动。在一些设计中,设定用户限定的存储限制,其确定要存储多少先前帧以处理当前帧。逻辑块422基于运动估计算法将输入视频数据402中的当前帧的数据与一个或多个先前帧的数据进行比较。用户或软件应用的算法限定用于存储一个、两个或其他数量的先前帧的帧缓冲器大小。在许多设计中,该存储参数为在对视频内容进行编码之前设定的参数。该存储参数的设置越大,存储在帧缓冲器中的先前帧的数量越高并且在视频压缩期间在帧缓冲器中消耗的存储空间的量越高。
67.逻辑块422使用各种运动估计算法之一确定当前帧与一个或多个先前帧之间的时间冗余。运动估计算法将帧划分为块,并且有时将块划分为子块。块或子块具有各种大小中的一个大小,诸如16像素乘16像素、8像素乘8像素、4像素乘4像素等。子块越小并且用于运动估计的子块数量越多,运动估计算法更好地表示复杂运动。然而,处理时间量(延时)、数
据存储空间和算法复杂性全都另外增加。
68.很多时候,当将输入视频数据402中提供的帧的区域识别为公共背景或其他平滑区时,运动估计算法使用16像素乘16像素块。当将输入视频数据402中提供的帧的区域识别为向显示器的观看者提供高细节时,运动估计算法使用4像素乘4像素子块。在一些实施方案中,逻辑块422中的运动估计算法使用辅助信息410来确定将高视觉细节提供给显示器的观看者的区域。因此,运动估计算法基于接收到的辅助信息410选择在这样的区域中使用更小且数量更多的子块。在一些实施方案中,使用多个先前帧以进行运动估计将不可接受的延时引入诸如用于虚拟现实(vr)应用的编码过程中。因此,移除使用运动矢量的时间延时的识别。
69.运动估计算法确定参考帧中的搜索区,其也被称为搜索窗。在一个示例中,参考帧为与具有输入视频数据402中的数据的当前帧相比的紧接的先前帧。参考帧中的搜索区包括位于水平视频行中和竖直地位于列中的多个块或子块。运动估计算法选择当前帧中的块或子块,并且向参考帧中的搜索区搜索最匹配的块或子块。为了确定最匹配的块或子块,运动估计算法计算块或子块中的每一个的运动矢量。运动估计算法计算4像素乘4像素子块的16个运动矢量。
70.如果运动估计算法搜索在搜索区中的每一个块或子块,则它被称为全或穷举搜索运动估计算法。如果运动估计算法跳过块或子块中的一些,则它被称为快速搜索运动估计算法。在一些实施方案中,逻辑块422使用接收到的辅助信息410来基于接收到的辅助信息410确定使用运动估计算法中的穷举搜索还是快速搜索。例如,如果辅助信息410识别出具有高反差边缘的区域、作为有凹区域的区域等,在此处压缩水平小于与所述区域直接相邻的块的压缩水平,则逻辑块422使用穷举运动估计算法与搜索区中的许多小子块。
71.逻辑块422的上述步骤预测参考帧中的哪个块或子块与当前帧中的选定块或子块具有最相似的外观(或基于运动矢量的最小的计算出的误差)。关于当前帧内的相邻块或子块做出类似预测。在一些实施方案中,代替运动估计或除运动估计之外,编码器400使用预测模式方案(未示出)。预测方案减少先前帧与当前帧中的块或子块之间的空间冗余,而运动估计算法减少时间冗余。在预测方案减少空间冗余的情况下,用模式内预测方案或模式间预测方案来处理每个块或子块。在两个方案中,预测块或子块基于重构帧来生成。编码阶段420包括从逻辑块422到逻辑块424、426和428的正向路径。编码阶段420还包括从逻辑块422到逻辑块424、426、430并回到逻辑块422的重构路径。
72.如果被包括的话,编码器400中的重构路径包括逻辑块430。逻辑块430包括用于逆变换、逆量化、环路滤波器和对接收器侧上的模拟操作的运动补偿的逻辑。在减少空间冗余和时间冗余中的一个或多个之后,从当前帧中的块或子块减去来自预测和/或运动估计的输出块或子块。另外,确定当前帧中的相邻块或子块与当前帧中的块或子块之间的差。这些减法生成差别块或子块,其由逻辑块424变换并且由逻辑块426量化以生成一组经变换和量化的系数。这些系数由逻辑块428进行重新排序并且进行熵编码。在一些设计中,逻辑块424在运动补偿的预测差别块和子块上执行离散余弦变换(dct)。
73.逻辑块426根据用作步长大小的量化参数460在逐块(或逐子块)基础上量化经压缩的dct系数。在一个示例中,表示特定块(或子块)的dct系数矩阵乘以量化标度码,按元素除以量化矩阵,然后四舍五入,诸如四舍五入到最接近的整数。在一些实施方案中,编码阶
段420包括多个类型的可用量化块。可用量化器的示例为h.263量化器和mpeg

4量化器。对要使用的量化块及所得量化标度码的选择基于在软件应用中做出的用户限定的选择和/或辅助信息410。在一些实施方案中,所述选择最初基于在软件应用中做出的用户限定的选择,但是所述选择基于辅助信息410来动态地更新。
74.位速率控制器450确定量化参数460。量化参数460用于生成缩放矩阵,并且确定从给定像素块(或子块)移除多少信息。通常,存在量化参数460的值范围和默认值。当量化参数460保持在恒定值时,从每个帧移除相同量的信息。在一个示例中,量化参数460的范围为0到50,其中默认值为23。如果将量化参数460选择为20并且量化参数460保持在20而不管视频复杂性的变化,则在显示器上提供给用户的主观视觉质量受损害。辅助信息410中的信息包括对帧中的运动的指示、对高反差边缘的指示等。另外,输出视频数据440中的位速率变化很大。因此,位速率控制器450包括用于基于反馈信息462、辅助信息410(其包括选择可用位速率控制器452

458之一的操作模式)、目标块比特流长度等来改变量化参数460的逻辑。
75.继续上述示例,在一些实施方案中,对于帧内的被识别为具有高运动的区域,位速率控制器450将量化参数460从20增加到22。增加的量化参数460导致对这些区域的更多压缩。类似地,对于帧内的被识别为不具有高反差边缘、不具有有凹区域等的区域,编码阶段420使用增加的量化参数460。在该示例中,对于帧内的被识别为不具有运动、具有高反差边缘、具有有凹区域等的区域,位速率控制器450将量化参数460从20减小到16。减小的量化参数460导致对这些区域的更少压缩。
76.在一些设计中,由量化块426使用的等效量化器步长大小具有与量化参数460的对数关系。在其他设计中,等效量化器步长大小与量化参数460线性相关或与其具有另一种关系。随着量化参数460增加,量化器步长大小增加。随着量化参数460增加,在显示器上观看到的输出视频数据440的主观视觉质量减小并且输出视频数据440的大小也减小。随着量化参数460减小,在显示器上观看到的输出视频数据440的主观视觉质量提高并且输出视频数据440的大小增长。
77.为了设定量化参数460,位速率控制器450估计视频位速率。输出视频数据440的视频位速率为每单位时间实现的块比特流长度442中的位数。位速率控制器450基于网络可用带宽和接收到的输入视频数据402的视频复杂性来估计视频位速率,以便调整输出视频数据440的所实现的块比特流长度442中的位数(比特流的大小)。反馈信息462用于使来自编码阶段420的视频复杂性与位速率控制器450关联。位速率控制器450试图通过调整量化参数460来调节输出视频数据440的所实现的块比特流长度442,以便在针对用户的外部显示器上产生高视觉质量图像。在一些设计中,位速率控制器450执行该调节,同时也保持发射输出视频数据440的外部网络带宽并且防止存储输出视频数据440的外部视频缓冲器的上溢或下溢状况。
78.位速率控制器450选择量化参数460,对于给定的视频图像复杂性,所述量化参数确定输出视频数据440的所实现的块比特流长度442。再次,每单位时间实现的块比特流长度442中的位数确定输出视频数据440的位速率。位速率控制器450使用在位速率控制器452

458中实施的各种位速率控制算法之一以调节输出视频数据440的输出位速率。位速率控制算法的示例为恒定位速率(cbr)控制器456、可变位速率(vbr)控制器454、智能恒定质量(icq)控制器458和质量限定的(或基于质量的)可变位速率(qvbr)控制器452。
79.cbr控制器456保持整个帧的所实现的块比特流长度442中的设定(或目标)位数。在一些设计中,位数的变化被约束为百分之20或更少。cbr控制器456有时用于具有小外部视频缓冲器的系统中,所述小外部视频缓冲器用于将视频帧数据存储在被估计使用视频复杂性低于阈值的视频信息的系统中。icq控制器458用于将视频信息归档的系统中,其中主观视觉质量保持为高但是文件大小尽可能地减小。icq控制器458接收恒定速率因子(crf),其也被称为icq质量因子。该输入参数具有值范围。例如,在一些设计中,范围为1至51,其中较低值与较低量化参数460关联,并且因此,从视频信息中移除较少信息。更少地压缩视频信息。相反,输入参数crf的值越高,更多的视频信息被压缩。通过调整icq控制器458的输入参数crf来上下调整所实现的块比特流长度442。
80.与cbr控制器456相反,vbr控制器454改变整个帧的所实现的块比特流长度442中的位数。对于特定块,位数的变化超过由cbr控制器456实现的变化。在一些设计中,与crb控制器456的百分之20或更少的变化相比,vbr控制器454允许百分之300的变化。尽管vbr控制器454允许所实现的块比特流长度442中的高变化,但是随着时间推移,vbr控制器454提供与cbr控制器456所实现的相当的平均所实现的块比特流长度442。
81.vbr控制器454向具有高视频复杂性、有凹区域、高反差边缘等的帧的区域提供更高的位速率,而向没有这些特性的帧的区域提供更低的位速率。对所实现的块比特流长度442在时间上求和并且除以持续时间通常提供接近目标位速率的平均位速率。与cbr控制器456不同,vbr控制器454支持用于在解码视频内容之前对视频内容进行存储的大外部视频缓冲器。与icq控制器458不同,vbr控制器454支持基于反馈信息462(诸如外部视频缓冲器的使用率)调整所实现的块比特流长度442的目标值。
82.与vbr控制器454类似,当需要时,诸如对于具有高反差边缘的区域、有凹区域等,qvbr控制器452改变所实现的块比特流长度442。然而,与vbr控制器454不同,qvbr控制器452还试图保持与icq控制器458类似的特定质量因子。类似于icq控制器458,qvbr控制器452接收质量因子(qf)。该输入参数具有值范围。例如,在一些设计中,qf的值的范围为0至63,而对于其他的设计为1至100,等等。qf的较低值与较低量化参数460关联,并且因此,从视频信息中移除较少信息。在较低qf的情况下,更少地压缩视频信息。通常,qvbr控制器452用于游戏和流式传输系统中。
83.类似于编码阶段420中的逻辑块和位速率控制器450中的其他逻辑,位速率控制器452

458以硬件(诸如电路)、软件(诸如固件或用户限定的软件应用)和硬件与软件的组合中的一者或多者来实现。尽管在位速率控制器450中示出了四种类型的位速率控制器452

458,但是在其他实施方案中,位速率控制器450使用另一数量的位速率控制算法和其他类型的位速率控制算法。无论位速率控制器的数量和选定的类型如何,实际上为视频压缩选择的位速率控制器的类型和任何输入参数(诸如质量因子(qf))的设置都基于辅助信息410来进行。
84.熵编码428对从量化块426接收的输出比特流重新排序并对其执行熵编码。熵编码块428识别接收到的比特流中的比特的特定序列。比特的这些特定序列中的每一个被称为码元。熵编码块428将码元替换为其他值,诸如码字或分数。熵编码算法的类型的两个示例为霍夫曼编码和算术编码。基于霍夫曼的编码算法基于表查找将码元替换为码字。基于算术的编码算法将码元替换为范围在0和1之间的分数。混合方法使用表查找和算术操作的步
骤进行组合,或基于使用表查找还是算术操作的操作条件进行选择。
85.基于霍夫曼的编码算法访问存储码字的表,以便将码元映射到码字。在一些设计中,码字具有固定长度,其中长度为码字中使用的位数。在其他设计中,码字是可变长度码字。熵编码块428还通过限制用于表示码元的平均位数来压缩比特流。通过使用更小大小的码字来更多地压缩更频繁出现的码元。通过使用更大大小的码字来更少地压缩更不频繁出现的码元。
86.基于算术的编码算法与基于霍夫曼的编码算法的不同之处在于:将码元或比特流的其他部分(序列)编码为数字,诸如范围或区间为0和1之间的分数。所生成的分数的精度变化。随着更多码元被编码,算法使用更高的精度来表示序列标识符。使用0和1内的较大区间(范围)压缩较频繁出现的码元。例如,对于高频繁出现的码元,算法选择0.3至0.6的区间。使用0和1内的较小区间(范围)压缩较不频繁出现的码元。例如,对于低频繁出现的码元,算法选择0.1至0.2的区间。
87.在一些设计中,熵编码块428的参数包括用于确定是用存储在表中的码字对码元进行编码还是用算术操作对码元进行编码的第一参数。第二参数确定算术操作的计算复杂性,诸如所使用的算术操作的类型和对用于所生成的分数的精度量的任何限制。在一些实施方案中,熵编码块428使用辅助信息410来确定将高视觉细节提供给显示器的观看者的区域。因此,熵编码算法基于接收到的辅助信息410在这样的区域中选择较高精度和更复杂计算。
88.现在转向图5,示出了视频编码逻辑500的一个实施方案的框图。先前描述的电路和逻辑被同等编号。逻辑520以诸如用于组合式逻辑和连续元件的电路的硬件、诸如固件的软件或软件与硬件的组合来实现。逻辑520基于更新或修改接收到的视频编码参数510(或输入参数510)生成更新的视频编码参数530(或输出参数530)。所述修改基于辅助信息130。输入参数510包括各种视频编码参数。视频编码器400的先前描述描述了这些输入参数510,诸如对多个可用量化器之一的选择、对定制量化器矩阵的量化器标度码的选择、对量化参数(步长大小)的选择、对熵编码算法的选择、对选定的熵编码算法的计算复杂性限制的选择、和对用于算术熵编码期间的分数表示的精度的选择。
89.对视频编码器400的先前描述描述了如在整个视频编码器400中分布的用于更新输入参数510的逻辑。此处,在视频编码逻辑500中,逻辑520是集中的。在各种实施方案中,用于更新输入参数510的逻辑是集中的,而在其他实施方案中,逻辑是分布的。在又其他实施方案中,用于更新输入参数510的逻辑包括用于更新输入参数510的第一部分的集中式逻辑和用于更新输入参数510的第二部分的分布式逻辑两者。
90.现在参考图6,示出了用于执行高效视频渲染的方法600的一个实施方案。出于论述的目的,按顺序示出此实施方案中(以及图7中)的步骤。然而,应注意,在所描述方法的各种实施方案中,所描述元素中的一个或多个同时地执行,以与所示不同的次序执行,或者完全省略掉。还在需要时执行其他附加的元素。本文描述的各种系统或设备中的任一者被配置来实现方法600和700。
91.处理器接收用于渲染视频帧的多个像素块的指令(框602)。在各种实现方式中,处理器为gpu,其接收指令和用于渲染的多个像素块。处理器选择具有视频帧的多个块中的一个或多个块的区域以供渲染(框604)。例如,cpu标记用于渲染的对象,或另外,传送该特定
对象和/或包括具有视觉上明显性质的多个对象的区域。在一些设计中,cpu对这些区域加标签。这些区域包括有凹区域、具有预测焦点的区域等。
92.在渲染所述区域之后,处理器预测选定区域的压缩水平(框606)。如先前所述,cpu对被预测为视觉上明显的对象加标签,但是cpu不知道加标签的对象是否在帧中描绘的场景中足够大或是否置于焦点中。在一些情况下,在渲染之后,gpu执行这些确定。在一个示例中,gpu确定加标签的区域是否包括高反差边缘。在另一个示例中,gpu将加标签的对象与其在先前帧中的位置进行比较,以确定位置是否改变多于阈值。在这种情况下,gpu确定加标签的对象是移动对象。在又一个示例中,gpu对加标签的一个或多个对象执行预渲染传递,并且通过深度学习技术或其他技术确定区域被预测为焦点。在各种实施方案中,对于具有高反差边缘的区域、预测的焦点、有凹区域等,gpu预测低压缩水平。另外,对于具有移动对象的区域,gpu预测高压缩水平。
93.如果选定区域的预测压缩水平与位于所述选定区域之外的直接相邻块的压缩水平相同(条件框608的“否”分支),则执行检查以确定是否已经选择了最后一个区域。在一些情况下,当比较压缩水平时使用阈值。如果压缩水平之间的差在阈值内,则选定区域的压缩水平和位于所述选定区域之外的直接相邻块的压缩水平被认为是相同的。如果未达到最后一个区域(条件框610的“否”分支),则方法600的控制流程返回到框604,在所述框604处,处理器选择具有视频帧的多个块中的一个或多个块的区域以供渲染。
94.如果选定区域的预测压缩水平与位于所述选定区域之外的直接相邻块的压缩水平不同(条件框608的“是”分支),则处理器在诸如辅助信息之类的元数据中插入区域在视频帧中的位置(框612)。在各种实施方案中,辅助信息是与视频帧的所渲染的像素块一起存储的元数据。如先前所述,辅助信息具有各种格式中的一种,用于指示帧中的具有与直接相邻像素不同压缩水平的区域。
95.处理器将区域中的导致所述区域与直接相邻块之间的不同的压缩水平的内容类型插入在辅助信息中(框614)。内容类型的示例为高反差边缘、移动对象、预测焦点、有凹区域等。之后,方法600的控制流程移动到条件框610,在所述条件框610中,处理器确定是否已经渲染了具有不同压缩水平的最后一个区域。如果达到最后一个区域(条件框610的“是”分支),则处理器完成对视频帧的渲染(框616)。例如,处理器渲染具有与直接相邻像素相同压缩水平的区域。之后,处理器向视频编码器传达视频帧的所渲染的像素块和辅助信息(框618)。如先前所述,为方法600(和方法700)描述的要素中的一个或多个同时执行或以与所示不同的顺序执行。因此,在一些实施方案中,在完成渲染区域时,处理器向视频编码器传达所渲染的像素块和对应的辅助信息。在这样的实施方案中,处理器在向视频编码器传达数据之前不等待针对全部区域完成渲染。在这样的情况下,处理器以流水线的方式向视频编码器传送数据。
96.现在参考图7,示出了用于执行高效视频压缩的方法700的一个实施方案。编码器接收视频帧的所渲染像素的多个块(框702)。编码器还接收存储关于视频帧中的具有与相邻像素块的压缩水平不同的预测压缩水平的区域的信息的辅助信息(框704)。在一些实施方案中,辅助信息是与视频帧的所渲染的像素一起存储的元数据。编码器选择视频帧的所渲染像素的多个块中的块以进行压缩(框706)。
97.如果选定的块不位于通过辅助信息识别的区域中(条件框708的“否”分支),则编
码器基于目标压缩水平更新选定块的编码参数(框710)。然而,如果选定的块位于通过辅助信息识别的区域中(条件框708的“是”分支),则编码器基于接收到的辅助信息更新选定区域的编码参数(框712)。例如,当编码器从接收到的辅助信息确定所述区域的压缩水平大于直接相邻块的压缩水平时,在一些实施方案中,编码器增加量化参数。
98.在其他示例中,当编码器从所接收的辅助信息确定区域的压缩水平小于直接相邻块的压缩水平时,在一些实施方案中,编码器在运动估计期间在搜索区中执行对区域的全搜索,而不是快速搜索。另外,在一些实施方案中,编码器增加通过算术熵编码算法生成的分数的精度。另外,在实施方案中,编码器减小用于运动估计的块的大小和数量。在其他实施方案中,编码器更新各种其他编码参数,诸如在(图4的)编码器400和(图5的)编码参数510中描述的编码参数。
99.在更新一个或多个编码参数之后,编码器基于更新的编码参数压缩选定的区域(框714)。如果未达到帧的最后一个像素块(条件框716的“否”分支),则方法700的控制流程返回到框706,在所述框706处,选择帧的多个块中的另一个块。否则,如果达到帧的最后一个像素块(条件框716的“是”分支),则编码器完成对帧的压缩(框718)。之后,编码器向发射器发送视频帧的经压缩的像素,所述发射器将经压缩的视频信息发送到接收器以进行解码并在显示器上显示所述视频信息。
100.现在转向图8,示出了视频帧800中的块的帧间依赖关系的一个实施方案的框图。在各种实施方案中,发射器向接收器发送视频信息,诸如对应于帧840的渲染信息。尽管帧840描绘飞机在天空中飞行的图画,但是在其他示例中,帧840包括多种多样的视觉信息(诸如体育赛事的场景、视频游戏的场景等等)的信息。软件提示或硬件提示将飞机识别为场景中的焦点842并且因此为区域。在一些实施方案中,帧840的辅助信息包括对焦点842(其为飞机)的指示。在帧840下面是帧840中描绘的场景的各个帧的编码参数的多个示例。尽管量化参数(qp)被示出为编码参数的示例,但是跨帧改变的一个或多个其他编码参数也是可能的并且设想所述跨帧改变的一个或多个其他编码参数。
101.对于不位于任何焦点中的对象,诸如背景天空、云朵和下面的陆地,编码器选择比焦点842的压缩比高的压缩比。如图所示,帧840为帧x,其中x为非零正整数。在各种实施方案中,视频编码器通过考虑n个在前的帧且考虑m个随后的帧来替换或更新帧840(帧x)中给定块的qp,其中n和m中的每个为非零正整数。换句话说,在一些实施方案中,帧842(帧x)的辅助信息包括来自帧x

n到帧x m中的每个帧的辅助信息的一部分,其中n小于x。
102.对于帧840(帧x),块13(块844)为蓝天,块14(块846)为焦点842中的飞机的机头,并且块45(块848)为焦点842中的飞机的尾部。然而,对于帧x

1,块14为蓝天,因为飞机还没有到达块14处。类似地,对于帧x

n到帧x

1,块14为蓝天。在示例中,蓝天的qp为20,而焦点区域842(飞机)的qp为8。可能qp的突变导致观看者在屏幕上看到闪烁。
103.为了避免在两个连续帧之间的压缩水平的突变,视频编码器以更连续的方式跨帧改变qp。例如,视频编码器生成用作平均公式的加权和以确定块14跨多个帧的qp。在所示的示例中,n为4并且m为4,因此视频编码器更新块14跨4个先前帧的qp并且以步长3将qp从20减少到8,因为(20

8)/4为3。在此,帧x

n到x中的每一个具有相同的权重1。在该示例中,视频编码器生成跨帧x

4到x的qp为20、17、14、11和8。换句话说,视频编码器生成帧x

4的块14的qp为20、和帧x

3的块14的qp为17、和帧x

2的块14的qp为14、和帧x

1的块14的qp为11、和
帧x的块14的qp为8。不存在两个帧之间的块14的qp突变。由于直接在帧840(帧x)之后的帧的块14包括焦点842(飞机),因此对于帧x到帧x 4的块14,qp保持在8。
104.现在转向图9,示出了视频帧900中的块的帧间依赖关系的一个实施方案的框图。先前描述的视频信息被同等编号。在所示的示例中,n为4并且m为4,因此视频编码器更新块45(块848)跨4个后续帧的qp并且以步长3将qp从8增加到20,因为(20

8)/4为3。在此,帧x

n到x中的每一个具有相同的权重1。在该示例中,视频编码器生成跨帧x到x 4的qp为8、11、14、17和20。换句话说,视频编码器生成帧x的块45的qp为8,和帧x 1的块14的qp为11,和帧x 2的块45的qp为14,和帧x 3的块45的qp为17,和帧x 4的块45的qp为20。不存在两个帧之间的块14的qp突变。由于直接在帧840(帧x)之前的帧的块45包括焦点842(飞机),因此对于帧x

4到帧x的块45,qp保持在8。
105.现在参考图10,示出了用于执行高效视频压缩的方法1000的一个实施方案。编码器接收视频帧的多个块中的块a的所渲染像素(框1002)。针对多个帧,编码器还接收存储关于视频帧的具有与相邻像素块的压缩水平不同的预测压缩水平的区域的信息的辅助信息(框1004)。如果块a是在帧x中的区域之前的最后一个在先块(条件框1006的“是”分支),则视频编码器基于帧x

n到x m的辅助信息更新块a的编码参数。在各种实施方案中,视频编码器执行先前在图8和图9中示出的步骤。
106.如果块a不是在帧x中的区域之前的最后一个在先块(条件框1006的“否”分支),并且选定的块不位于通过辅助信息识别的区域中(条件框1010的“否”分支),则编码器基于目标压缩水平更新选定块的编码参数(框1014)。然而,如果选定的块位于通过辅助信息识别的区域中(条件框1010的“是”分支),则编码器基于接收到的辅助信息更新选定区域的编码参数(框1012)。例如,当编码器从接收到的辅助信息确定所述区域的压缩水平大于直接相邻块的压缩水平时,在一些实施方案中,编码器增加量化参数。在框1008、1012和1014中的任一个中更新一个或多个编码参数之后,编码器基于更新的编码参数压缩选定的区域(框1016)。
107.现在转向图11,示出了视频帧1100中的块的帧间依赖关系的一个实施方案的框图。先前描述的视频帧信息被同等编号。软件提示或硬件提示将帆船识别为场景中的焦点142并且因此为区域。在一些实施方案中,帧140的辅助信息包括对焦点142(其为帆船)的指示。尽管帧140描绘在水上的帆船,但是在其他示例中,帧140包括多种多样的视觉信息(诸如体育赛事的场景、视频游戏的场景等等)的信息。在所示的示例中,帧140还被称为帧x,并且帧1140(帧x 1)包括没有任何信息与帧140(帧x)中的视频信息叠加的新信息。因此,在帧x与帧x 1之间发生场景转换。
108.在帧140(帧x)和帧1140(帧x 1)下面,有帧140和1140中描绘的场景的各个帧的编码参数的多个示例。尽管量化参数(qp)被示出为编码参数的示例,但是跨帧改变的一个或多个其他编码参数也是可能的并且设想所述跨帧改变的一个或多个其他编码参数。对于不位于任何焦点中的对象,诸如背景天空、水、和陆地,编码器选择比焦点142(帆船)的压缩比高的压缩比。在示例中,在帧140中的焦点142的qp为8并且背景对象的qp为16。在帧1140中的每个块的qp为22。在帧1140中的场景为具有描述不同视频设置的文字的视频配置页面。例如,选择1920x1080的视频分辨率,选择60赫兹(hz)的视频刷新速率,等等。
109.由于帧1140包含视频配置页面的文字和纯背景,因此视频编码器能够选择更高的
压缩水平,并且因此,对于观看者来说更低的视觉质量和更高的qp。在一个示例中,视频编码器将整个帧1140(帧x 1)的qp更新为22,其高于用于帧140(帧x)中的qp值8和16。然而,在没有帧1140的辅助信息的情况下,视频编码器在对帧1140的第一块编码之前不知道帧1140的内容。使用帧140(帧x)和帧1140(帧x 1)的辅助信息,视频编码器能够将帧140(帧x)和帧1140(帧x 1)中的每一个中的块的qp更新为如帧下面的文字框中所示。
110.在所示的示例中,n为4并且m为4,因此视频编码器保持通过焦点142限定的区域中的块23(块190)的跨4个先前帧的qp。视频编码器在帧x中将qp从8增加到10。尽管在帧x 1处达到场景转换,以便避免观看者由于qp的突变而看到闪烁,但是编码器仍使用m=4来调整qp直到达到场景转换为止。当在帧x 1中达到场景转换时,在帧x 1中的每个块有突变,而不是整个帧的几个块有突变。因此,对于帧x,编码器以步长2更新块23的qp,这是因为(16

8)/4为2。此处,帧x

4到x中的每一个具有相同的权重1。在该示例中,视频编码器生成跨帧x

4到x的qp为8、8、8、8和10。没有使用qp从10到16的以步长为2的增量,这是因为在帧x 1中达到场景转换。对于帧x 1到x 4,块23的qp为22,其为帧x 1到x 4中的每个块的qp。
111.现在转向图12,示出了视频帧1200中的块的帧间依赖关系的一个实施方案的框图。先前描述的视频信息被同等编号。在一些实施方案中,帧1240的辅助信息包括对焦点1242(其为帆船)的指示。尽管帧1240描绘在水上的帆船,但是在其他示例中,帧1240包括多种多样的视觉信息(诸如体育赛事的场景、视频游戏的场景等等)的信息。在所示的示例中,帧1240还被称为帧x

2,并且帧1140(帧x 1)包括没有任何信息与帧x(未示出)中的视频信息叠加的新信息。因此,在帧x与帧x 1之间发生场景转换,但是焦点1242(帆船)在比图11所示的先前示例更早的时间在场景转换之前移动经过块23。此处,在图12中,在帧x

2中,焦点1242(帆船)移动经过块23,而不是如图11所示的帧x中。
112.在图12的所示示例中,n为4并且m为4,因此视频编码器更新块23(块1290)跨在场景转换之前的3个帧的qp并且以步长2将qp从8增加到14,因为(16

8)/4为2。在此,帧x

4到x中的每一个具有相同的权重1。在该示例中,视频编码器生成跨帧x

4到x的qp为8、8、10、12和14。在此,帧x

4到x中的每一个具有相同的权重1。尽管在帧x 1处达到场景转换,以便避免观看者由于块23中的qp的突变而看到闪烁,但是编码器仍使用m=4来调整块23的qp直到达到场景转换为止。当在帧x 1中达到场景转换时,在帧x 1中的每个块有突变以使用qp=22,而不是整个帧的几个块有突变。
113.现在参考图13,示出了用于执行高效视频压缩的方法1300的一个实施方案。编码器接收视频帧x的所渲染像素的多个块(框1302)。针对多个帧,编码器接收具有与相邻像素块的压缩水平不同的预测压缩水平的区域的辅助信息(框1304)。在各种实施方案中,接收到的辅助信息提供帧x的信息、在帧x之前的零到n个帧的信息以及在帧x之后的零到m个帧的信息。变量x、n和m如先前所述为非零正整数。如果帧x不在场景转换之前的m个帧内(条件框1306的“否”分支),则下一个场景转换(如果有的话)在帧x之后多于m个帧。在这种情况下,编码器基于帧x的辅助信息、来自其他帧的辅助信息和目标压缩水平中的一个或多个更新帧x的块a的编码参数(框1308)。编码器选择用于基于帧x中识别出的区域数量、在帧x之前的具有可用辅助信息的帧的数量、和在帧x之后的具有可用辅助信息的帧的数量来更新帧x的块a的编码参数的信息。在各种实施方案中,视频编码器执行诸如(图7和图10的)方法700和1000等先前方法中所示的步骤中的一个或多个。
114.如果帧x在场景转换之前的m个帧内(条件框1306的“是”分支),且帧x是与场景转换相关联的新场景的第一帧(条件框1310的“是”分支),则帧x在场景转换之前的零个帧内。在这种情况下,编码器至少基于与场景转换相关联的新场景的辅助信息来更新帧x的块a的编码参数(框1312)。如果帧x是与场景转换相关联的新场景的第二帧或后一帧,则方法1300的控制流程基于先前条件框1306和任何其他下一场景转换来移动。如果帧x不是与场景转换相关联的新场景的第一帧(条件框1310的“否”分支),则帧x在与场景转换相关联的新场景之前的一到m个帧内。在这种情况下,编码器至少基于帧x与场景转换的第一帧之间的帧的辅助信息来更新帧x的块a的编码参数(框1314)。在各种实施方案中,视频编码器执行先前在图11和图12中示出的步骤。
115.在各种实施方案中,使用软件应用的程序指令来实施先前描述的方法和/或机制。程序指令以高级编程语言(诸如c)描述硬件的行为。替代地,使用诸如verilog的硬件设计语言(hdl)。程序指令存储在非暂时性计算机可读存储介质上。众多类型的存储介质可用。在使用期间,计算系统可访问存储介质,以将程序指令和附带数据提供给计算系统以执行程序。计算系统包括至少一个或多个存储器和执行程序指令的一个或多个处理器。
116.应强调,上述实施方案仅是实现方式的非限制性实例。一旦完全了解以上公开内容,众多变化和修改对于本领域技术人员来说将变得明显。所附权利要求意图解释为包含所有此类变化和修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献