一种视频编解码方法和相关装置与流程

文档序号:32612418发布日期:2022-12-20 20:24阅读:20来源:国知局
一种视频编解码方法和相关装置与流程
一种视频编解码方法和相关装置
1.相关申请的交叉引用
2.本技术要求于2018年9月14日提交的美国临时申请第62/731,776号以及于2018年12月28日提交的美国申请第16/234,993号的优先权,以上申请的公开内容通过引用整体并入本文中。
技术领域
3.本公开涉及视频处理技术,尤其涉及一种视频编解码方法和相关装置。


背景技术:

4.在图5中示出了在高效视频编码(high efficiency video coding,hevc)中使用的帧内预测模式。在hevc中,存在总共35个帧内预测模式,其中模式10是水平模式(501),模式26是竖直模式(502),并且模式2、模式18和模式34是对角模式(503)。由三个最可能模式(most probable mode,mpm)和32个其余模式来用信号表示帧内预测模式。
5.为了对帧内模式进行编码,基于相邻块的帧内模式来构建大小为3的最可能模式(mpm)列表。该mpm列表将被称为mpm列表或主mpm列表。如果帧内模式不是来自mpm列表,则用信号表示标志以指示帧内模式是否属于所选择的模式。
6.如下示出了生成mpm列表的处理。此处,leftintradir指示左块中的模式,并且aboveintradir指示上块中的模式。如果左块或上块当前不可用,则将leftintradir或aboveintradir设置为索引dc_idx。此外,变量“offset”和“mod”是常数值,其分别被设置为29和32。
7.●
if(leftintradir==aboveintradir&&leftintradir》dc_idx)
8.○
mpm[0]=leftintradir;
[0009]

mpm[1]=((leftintradir+offset)%mod)+2;
[0010]

mpm[2]=((leftintradir-1)%mod)+2;
[0011]

else if(leftintradir==aboveintradir)
[0012]

mpm[0]=planar_idx;
[0013]

mpm[1]=dc_idx;
[0014]

mpm[2]=ver_idx;
[0015]

else if(leftintradir!=aboveintradir)
[0016]

mpm[0]=leftintradir;
[0017]

mpm[1]=aboveintradir;
[0018]

if(leftintradir》0&&aboveintradir》0)
[0019]

mpm[2]=planar_idx;
[0020]

else
[0021]

mpm[2]=(leftintradir+aboveintradir)《2?ver_idx:dc_idx;
[0022]
在仅可以访问两个相邻模式的情况下,如何对于非零行生成包括更多个角度模式
的mpm列表是需要解决的技术问题。


技术实现要素:

[0023]
根据至少一个实施方式,一种视频解码方法,该方法由至少一个处理器执行,用以使用非零参考行来控制多行帧内预测,该方法包括:确定当前块的第一相邻块的帧内预测模式是否为角度模式。该方法还可以包括:确定当前块的第二相邻块的帧内预测模式是否为角度模式。该方法还可以包括:生成mpm列表,该mpm列表包括用于当前块的帧内预测的六个候选模式,其中这六个候选模式均为角度模式。可以生成mpm列表以使其在确定第一相邻块的帧内预测模式为角度模式的情况下包括第一相邻块的帧内预测模式,并且在确定第二相邻块的帧内预测模式为角度模式的情况下包括第二相邻块的帧内预测模式。
[0024]
根据至少一个实施方式,可以提供一种用于使用非零参考行来控制多行帧内预测以对视频序列进行解码的装置。该装置可以包括:至少一个存储器,其被配置成存储计算机程序代码;以及至少一个处理器,其被配置成访问上述至少一个存储器并且根据计算机程序代码进行操作。计算机程序代码可以包括第一确定代码,该第一确定代码被配置成使上述至少一个处理器确定当前块的第一相邻块的帧内预测模式是否为角度模式。该计算机程序代码还可以包括第二确定代码,该第二确定代码被配置成使上述至少一个处理器确定当前块的第二相邻块的帧内预测模式是否为角度模式。该计算机程序代码还可以包括生成代码,该生成代码被配置成使上述至少一个处理器生成mpm列表,该mpm列表包括用于当前块的帧内预测的六个候选模式,其中这六个候选模式均为角度模式。该生成代码还可以被配置成使上述至少一个处理器生成mpm列表,使得该mpm列表在确定第一相邻块的帧内预测模式为角度模式的情况下包括第一相邻块的帧内预测模式,并且在确定第二相邻块的帧内预测模式为角度模式的情况下包括第二相邻块的帧内预测模式。
[0025]
根据至少一个实施方式,一种存储指令的非暂态计算机可读存储介质,所述指令可以使至少一个处理器确定当前块的第一相邻块的帧内预测模式是否为角度模式。所述指令还可以使上述至少一个处理器确定当前块的第二相邻块的帧内预测模式是否为角度模式。所述指令还可以使上述至少一个处理器生成mpm列表,该mpm列表包括用于当前块的帧内预测的六个候选模式,其中这六个候选模式均为角度模式。所述指令可以使至少一个处理器生成mpm列表,使得该mpm列表在确定第一相邻块的帧内预测模式为角度模式的情况下包括第一相邻块的帧内预测模式,并且在确定第二相邻块的帧内预测模式为角度模式的情况下包括第二相邻块的帧内预测模式。
[0026]
由此可见,在使用非零参考行来控制多行帧内预测时,确定当前块的第一相邻块的帧内预测模式是否为角度模式;确定所述当前块的第二相邻块的帧内预测模式是否为角度模式;以及生成最可能模式mpm列表,所述mpm列表包括用于所述当前块的帧内预测的多个候选模式,其中,所述多个候选模式均为角度模式,并且在确定所述第一相邻块的帧内预测模式为角度模式的情况下,所述mpm列表包括所述第一相邻块的帧内预测模式、并且在确定所述第二相邻块的帧内预测模式为角度模式的情况下,所述mpm列表包括所述第二相邻块的帧内预测模式。从而实现了对于非零行生成包括更多个角度模式的mpm列表。
附图说明
[0027]
根据以下详细描述和附图,所公开的主题的另外的特征、性质和各种优点将变得更明显,在附图中:
[0028]
图1是根据实施方式的通信系统的简化框图的示意图;
[0029]
图2是根据实施方式的流式传输系统的简化框图的示意图;
[0030]
图3是根据实施方式的视频解码器和显示器的简化框图的示意图;
[0031]
图4是根据实施方式的视频编码器和视频源的简化框图的示意图;
[0032]
图5是hevc中的帧内预测模式的图;
[0033]
图6是多功能视频编码草案2中的帧内预测模式的图;
[0034]
图7是示出用于多行帧内预测的参考行的示例的图;
[0035]
图8是示出相对于当前块的顶侧块和左侧块的示例的图;
[0036]
图9是适合于实现实施方式的计算机系统的图。
具体实施方式
[0037]
图1示出了根据本公开内容的实施方式的通信系统(100)的简化框图。系统(100)可以包括经由网络(150)互连的至少两个终端(110至120)。对于单向数据传输,第一终端(110)可以在本地位置处对视频数据进行编码,以用于经由网络(150)传输至另一终端(120)。第二终端(120)可以从网络(150)接收另一终端的已编码视频数据,对该已编码数据进行解码并且显示恢复后的视频数据。单向数据传输在媒体服务应用等中可能常见。
[0038]
图1示出了第二对终端(130,140),其被提供以支持例如在视频会议期间可能发生的已编码视频的双向传输。对于双向数据传输,每个终端(130,140)可以对在本地位置捕获的视频数据进行编码,以用于经由网络(150)传输至另一终端。每个终端(130,140)还可以接收由另一终端传输的已编码视频数据,可以对该已编码数据进行解码,并且可以在本地显示装置处显示恢复后的视频数据。
[0039]
在图1中,终端(110至140)可以是例如服务器、个人计算机和智能电话和/或任何其他类型的终端。例如,终端(110至140)可以是膝上型计算机、平板计算机、媒体播放器和/或专用视频会议设备。网络(150)表示在终端(110至140)之间传送已编码视频数据的任何数量的网络,包括例如有线和/或无线通信网络。通信网络(150)可以在电路交换和/或分组交换信道中交换数据。代表性网络包括电信网络、局域网、广域网和/或因特网。出于本论述的目的,除非在下文中有所说明,否则网络(150)的架构和拓扑对于本公开内容的操作而言可以是不重要的。
[0040]
作为所公开的主题的应用的示例,图2示出了视频编码器和解码器在流式传输环境中的放置方式。所公开的主题可以与其他支持视频的应用一起使用,包括例如视频会议、数字tv、在包括cd、dvd、存储棒等的数字介质上存储压缩视频等。
[0041]
如图2所示,流式传输系统(200)可以包括捕获子系统(213),该捕获子系统包括视频源(201)和编码器(203)。流式传输系统(200)还可以包括至少一个流式传输服务器(205)和/或至少一个流式传输客户端(206)。
[0042]
视频源(201)可以创建例如未压缩的视频样本流(202)。视频源(201)例如可以是数码相机。与已编码视频比特流相比,样本流(202)被描绘为粗线以强调高数据量,该样本
流(202)可以由耦接至相机(201)的编码器(203)处理。编码器(203)可以包括硬件、软件或其组合以实现或实施如下面更详细地描述的所公开的主题的各方面。编码器(203)还可以生成已编码视频比特流(204)。与未压缩的视频样本流(202)相比,已编码视频比特流(204)被描绘为细线以强调较低数据量,其可以存储在流式传输服务器(205)上以供将来使用。一个或更多个流式传输客户端(206)可以访问流式传输服务器(205)以检索可以作为已编码视频比特流(204)的副本的视频比特流(209)。
[0043]
流式传输客户端(206)可以包括视频解码器(210)和显示器(212)。视频解码器(210)可以例如对作为已编码视频比特流(204)的传入副本的视频比特流(209)进行解码,并且创建可以在显示器(212)或另一呈现装置(未描绘)上呈现的传出视频样本流(211)。在一些流式传输系统中,可以根据某些视频编码/压缩标准来对视频比特流(204、209)进行编码。这些标准的示例包括但不限于itu-t h.265建议书。开发中的视频编码标准被非正式地称为多功能视频编码(versatile video coding,vvc)的视频编码标准。本公开内容的实施方式可以在vvc的上下文中使用。
[0044]
图3示出了根据本公开内容的实施方式的附接至显示器(212)的视频解码器(210)的示例功能框图。
[0045]
视频解码器(210)可以包括信道(312)、接收器(310)、缓冲存储器(315)、熵解码器/解析器(320)、缩放器/逆变换单元(351)、帧内预测单元(352)、运动补偿预测单元(353)、聚合器(355)、环路滤波器单元(356)、参考图片存储器(357)和当前图片存储器(358)。在至少一个实施方式中,视频解码器(210)可以包括集成电路、一系列集成电路和/或其他电子电路。视频解码器(210)还可以部分地或完全地实现在运行于具有关联存储器的一个或更多个cpu上的软件中。
[0046]
在该实施方式和其他实施方式中,接收器(310)可以接收要由解码器(210)解码的一个或更多个已编码视频序列——一次接收一个已编码视频,其中每个已编码视频序列的解码独立于其他已编码视频序列的解码。可以从信道(312)接收已编码视频序列,该信道可以是到存储已编码视频数据的存储装置的硬件/软件链路。接收器(310)可以接收已编码视频数据以及其他数据,例如,可以被转发至其各自的使用实体(未描绘)的已编码音频数据和/或辅助数据流。接收器(310)可以将已编码视频序列与其他数据分开。为了应对网络抖动,可以在接收器(310)与熵解码器/解析器(320)(以下称为“解析器”)之间耦接缓冲存储器(315)。当接收器(310)从具有足够带宽和可控性的存储/转发装置或从等时同步网络接收数据时,可以不使用缓冲器(315),或者缓冲器(315)可以较小。为了尽可能地使用诸如因特网的分组网络,可能需要缓冲器(315),该缓冲器(315)可以相对较大并且可以具有自适应性大小。
[0047]
视频解码器(210)可以包括解析器(320)以根据已熵编码的视频序列重建符号(321)。这些符号的类别包括例如用于管理解码器(210)的操作的信息,以及可能用以控制诸如如图2所示可以耦接至解码器的显示器(212)的呈现装置的信息。用于呈现装置的控制信息可以是补充增强信息(supplementary enhancement information,sei消息)或视频可用性信息(video usability information,vui)参数集片段(未描绘)的形式。解析器(320)可以对接收到的已编码视频序列进行解析/熵解码。已编码视频序列的编码可以根据视频编码技术或标准进行,并且可以遵循本领域技术人员公知的原理,包括:可变长度编码、霍
夫曼编码(huffman coding)、具有或不具有上下文灵敏度的算术编码等。解析器(320)可以基于与群组对应的至少一个参数从已编码视频序列提取用于视频解码器中的像素子群组中的至少一个子群组的子群组参数集。子群组可以包括:图片群组(gop)、图片、图块、切片、宏块、编码单元(coding unit,cu)、块、变换单元(transform unit,tu)、预测单元(prediction unit,pu)等。解析器(320)还可以从已编码视频序列提取信息,例如变换系数、量化器参数值、运动矢量等。
[0048]
解析器(320)可以对从缓冲器(315)接收的视频序列执行熵解码/解析操作以创建符号(321)。
[0049]
取决于已编码视频图片或已编码视频图片的部分的类型(例如:帧间图片和帧内图片、帧间块和帧内块)以及其他因素,符号(321)的重建可以涉及多个不同的单元。涉及哪些单元以及它们如何被涉及可以由经解析器(320)从已编码视频序列解析的子群组控制信息来控制。为了简洁起见,未描绘解析器(320)与下述多个单元之间的这种子群组控制信息流。
[0050]
除了已经提及的功能块之外,解码器(210)可以在概念上细分成如下文所描述的数个功能单元。在商业约束下运行的实际实现方式中,这些单元中的许多单元彼此紧密交互并且可以至少部分地彼此集成。然而,出于描述所公开的主题的目的,概念上细分成以下功能单元是适当的。
[0051]
一个单元可以是缩放器/逆变换单元(351)。缩放器/逆变换单元(351)可以从解析器(320)接收作为符号(321)的量化变换系数以及控制信息,包括使用哪种变换方式、块大小、量化因子、量化缩放矩阵等。缩放器/逆变换单元(351)可以输出包括可以输入到聚合器(355)中的样本值的块。
[0052]
在一些情况下,缩放器/逆变单元(351)的输出样本可以属于帧内编码块;即,不使用来自先前重建的图片的预测性信息但可以使用来自当前图片的先前重建部分的预测性信息的块。这样的预测性信息可以由帧内图片预测单元(352)提供。在一些情况下,帧内图片预测单元(352)使用从来自当前图片存储器(358)的当前(部分重建的)图片取得的周围已重建信息来生成大小和形状与重建中的块相同的块。在一些情况下,聚合器355以每个样本为基础将帧内预测单元352已经生成的预测信息添加到由缩放器/逆变换单元351提供的输出样本信息。
[0053]
在其他情况下,缩放器/逆变换单元(351)的输出样本可以属于已帧间编码并且可能经运动补偿的块。在这样的情况下,运动补偿预测单元(353)可以访问参考图片缓冲器(357)以取得用于预测的样本。在根据属于块的符号321对取得的样本进行运动补偿之后,这些样本可以由聚合器355添加到缩放器/逆变换单元351的输出(在这种情况下被称作残差样本或残差信号),以生成输出样本信息。运动补偿预测单元(353)从中取得预测样本的参考图片缓冲器(357)内的地址可以由运动矢量控制。运动矢量能够以符号(321)的形式供运动补偿预测单元(353)使用,符号(321)可以具有例如x、y和参考图片分量。运动补偿还可以包括在使用子样本精确运动矢量时从参考图片缓冲器(357)取得的样本值的内插、运动矢量预测机制等。
[0054]
聚合器(355)的输出样本可以在环路滤波器单元(356)中经受各种环路滤波技术。视频压缩技术可以包括环路内滤波器技术,环路内滤波器技术由包括在经编码视频比特流
中并且作为来自解析器(320)的符号(321)可用于环路滤波器单元(356)的参数来控制,但是视频压缩技术也可以响应于在对已编码图片或已编码视频序列的先前(按解码顺序)部分进行解码期间获得的元信息,以及响应于先前重建并且经环路滤波的样本值。
[0055]
环路滤波器单元(356)的输出可以是样本流,该样本流可以输出至诸如显示器(212)的呈现装置以及存储在参考图片缓冲器(357)中以在将来的帧间图片预测中使用。
[0056]
某些已编码图片一旦被完全重建就可以用作参考图片以用于将来预测。一旦已编码图片被完全重建并且该已编码图片(通过例如解析器(320))被识别为参考图片,则存储在当前图片存储器(358)中的当前参考图片可以变为参考图片缓冲器(357)的一部分,并且可以在开始重建后续的已编码图片之前重新分配新的当前图片存储器。
[0057]
视频解码器(210)可以根据可以记录在诸如itu-t h.265建议书的标准中的预定视频压缩技术来执行解码操作。在已编码视频序列遵循视频压缩技术或标准的语法的意义上,已编码视频序列可以符合由正使用的视频压缩技术或标准指定的语法,如在视频压缩技术文档或标准中且具体地在其中的配置文件文档中指定的那样。此外,为了符合一些视频压缩技术或标准,已编码视频序列的复杂度可以在由视频压缩技术或标准的层级所限定的范围内。在一些情况下,层级限制最大图片大小、最大帧速率、最大重建样本速率(以例如每秒兆(mega)个样本为单位进行度量)、最大参考图片大小等。在一些情况下,由层级设置的限制可以通过假设参考解码器(hypothetical reference decoder,hrd)规范以及在已编码视频序列中用信号表示的hrd缓冲器管理的元数据来进一步限定。
[0058]
在实施方式中,接收器(310)可以随着已编码视频一起接收附加(冗余)数据。附加数据可以被包括为已编码视频序列的一部分。附加数据可以由视频解码器(210)使用以对数据进行适当解码和/或更准确地重建原始视频数据。附加数据可以是例如时间、空间或snr增强层、冗余切片、冗余图片、前向纠错码等形式。
[0059]
图4示出了根据本公开内容的实施方式的与视频源(201)相关联的视频编码器(203)的示例功能框图。
[0060]
视频编码器(203)可以包括例如作为源编码器(430)的编码器、编码引擎(432)、(本地)解码器(433)、参考图片存储器(434)、预测器(435)、传输器(440)、熵编码器(445)、控制器(450)和信道(460)。
[0061]
编码器(203)可以从视频源(201)(其不是编码器的一部分)接收视频样本,该视频源可以捕获要由编码器(203)编码的视频图像。
[0062]
视频源(201)可以以数字视频样本流的形式提供要由编码器(203)编码的源视频序列,该数字视频样本流可以具有任何合适的比特深度(例如:x比特、10比特、12比特、...)、任何颜色空间(例如,bt.601y crcb、rgb、...)和任何合适的采样结构(例如,y crcb 4:2:0、y crcb 4:4:4)。在媒体服务系统中,视频源(201)可以是存储先前准备的视频的存储装置。在视频会议系统中,视频源(203)可以是捕获本地图像信息作为视频序列的摄像装置。可以将视频数据提供为在依次观看时被赋予运动的多个单独的图片。图片自身可以被组织为空间像素阵列,其中,取决于所使用的采样结构、颜色空间等,每个像素可以包括一个或更多个样本。本领域技术人员可以容易地理解像素与样本之间的关系。以下描述侧重于样本。
[0063]
根据实施方式,编码器(203)可以实时地或者在由应用要求的任何其他时间约束
下将源视频序列的图片编码并压缩成已编码视频序列(443)。施行适当的编码速度可以是控制器(450)的一个功能。控制器(450)还可以控制如下所述的其他功能单元,并且可以功能性地耦接至这些单元。为简洁起见未描绘耦接。由控制器(450)设置的参数可以包括速率控制相关参数(图片跳过、量化器、率失真优化技术的λ值等)、图片大小、图片群组(gop)布局、最大运动矢量搜索范围等。本领域技术人员可以容易地识别控制器(450)的其他功能,这些功能可以属于针对特定系统设计而优化的视频编码器(203)。
[0064]
一些视频编码器以本领域技术人员容易识别为“编码环路”的方式进行操作。作为简化的描述,编码环路可以包括源编码器(430)的编码部分(负责基于要编码的输入图片和参考图片创建符号)以及嵌入编码器(203)的(本地)解码器(433),当在某些视频压缩技术中符号与已编码视频比特流之间的压缩是无损的时,该解码器(433)重建符号以创建(远程)解码器也将创建的样本数据。这个重建的样本流可以被输入至参考图片存储器(434)。由于对符号流的解码产生与解码器位置(本地或远程)无关的比特精确结果,因此参考图片存储器内容在本地编码器与远程编码器之间也是比特精确的。换言之,编码器的预测部分“看到”的参考图片样本与解码器在解码期间使用预测时将“看到”的样本值完全相同。这种参考图片同步性基本原理(以及在例如因信道误差而无法维持同步性的情况下产生的漂移)对于本领域技术人员是已知的。
[0065]“本地”解码器(433)的操作可以与已经在上文结合图3详细描述的“远程”解码器(210)的操作基本相同。然而,由于符号是可用的而且熵编码器(445)和解析器(320)可以无损地将符号编码/解码成已编码视频序列,因此在本地解码器(433)中可以不需完全实现包括信道(312)、接收器(310)、缓冲器(315)和解析器(320)在内的解码器(210)的熵解码部分。
[0066]
此时可以观察到,除了存在于解码器中的解析/熵解码之外的任何解码器技术可能需要以基本相同的功能形式存在于对应的编码器中。出于该原因,所公开的主题侧重于解码器操作。由于编码器技术可以与已全面描述的解码器技术互逆,因此可以简化对编码器技术的描述。在下文中仅在某些地方需要并提供更详细的描述。
[0067]
作为源编码器(430)操作的一部分,可以执行运动补偿预测编码,其参考来自视频序列中被指定为“参考帧”的一个或更多个先前编码的帧对输入帧进行预测性编码。以该方式,编码引擎(432)对输入帧的像素块与可以被选择为对输入帧的预测参考的参考帧的像素块之间的差进行编码。
[0068]
本地视频解码器(433)可以基于由源编码器(430)创建的符号对可以指定为参考帧的帧的已编码视频数据进行解码。编码引擎(432)的操作可以有利地是有损处理。当已编码视频数据在视频解码器(图4中未示出)处被解码时,重建的视频序列通常可以是带有一些误差的源视频序列的复制品。本地视频解码器(433)复制可以由视频解码器对参考帧执行的解码处理,并且可以使重建的参考帧存储在参考图片存储器(434)中。以该方式,编码器(203)可以在本地存储重建的参考帧的副本,这些副本与远端视频解码器将获得的重建的参考帧具有共同内容(不存在传输误差)。
[0069]
预测器(435)可以针对编码引擎(432)执行预测搜索。即,对于要编码的新帧,预测器(435)可以在参考图片存储器(434)中搜索可以用作新图片的适当预测参考的样本数据(作为候选参考像素块)或特定元数据,例如参考图片运动矢量、块形状等。预测器(435)可
以基于样本块逐像素块进行操作,以找到适当的预测参考。在一些情况下,根据由预测器(435)获得的搜索结果所确定的,输入图片可以具有从存储在参考图片存储器(434)中的多个参考图片提取的预测参考。
[0070]
控制器(450)可以管理视频编码器(430)的编码操作,包括例如对用于对视频数据进行编码的参数和子群组参数的设置。
[0071]
可以在熵编码器(445)中对所有上述功能单元的输出进行熵编码。熵编码器通过根据本领域技术人员已知的技术如霍夫曼编码、可变长度编码、算术编码等对由各种功能单元生成的符号进行无损压缩来将这些符号转换成已编码视频序列。
[0072]
传输器(440)可以缓冲由熵编码器(445)创建的已编码视频序列,从而为经由通信信道(460)进行的传输做准备,该通信信道可以是去往将存储已编码视频数据的存储装置的硬件/软件链路。传输器(440)可以将来自视频编码器(430)的已编码视频数据与要传输的其他数据合并,所述其他数据例如已编码音频数据和/或辅助数据流(未示出源)。
[0073]
控制器(450)可以管理编码器(203)的操作。在编码期间,控制器(450)可以为每个已编码图片分配特定的已编码图片类型,这可能影响可以应用于相应的图片的编码技术。例如,图片通常可以被分配为帧内图片(i图片)、预测性图片(p图片)或双向预测性图片(b图片)。
[0074]
帧内图片(i图片)可以是无需将序列中的任何其他帧用作预测源就可以被编码和解码的图片。一些视频编解码器允许不同类型的帧内图片,包括例如独立解码器刷新(idr,independent decoder refresh)图片。本领域技术人员了解i图片的这些变型及其相应的应用和特征。
[0075]
预测性图片(p图片)可以是可以使用帧内预测或帧间预测进行编码和解码的图片,所述帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
[0076]
双向预测性图片(b图片)可以是可以使用帧内预测或帧间预测进行编码和解码的图片,所述帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多预测性图片可以使用多于两个参考图片和相关联的元数据以进行单个块的重建。
[0077]
源图片通常可以在空间上细分成多个样本块(例如,分别具有4
×
4、8
×
8、4
×
8或16
×
16个样本的块),并且被逐块地编码。可以参考其他(已编码)块对这些块进行预测性编码,所述其他块通过对块的相应图片应用的编码分配来确定。例如,可以对i图片的块进行非预测性编码,或者可以参考同一图片的已编码块对i图片的块进行预测性编码(空间预测或帧内预测)。p图片的像素块可以参考一个先前编码的参考图片经由空间预测或经由时间预测进行非预测性编码。b图片的块可以参考一个或两个先前编码的参考图片经由空间预测或经由时间预测进行非预测性编码。
[0078]
视频编码器(203)可以根据诸如itu-t h.265建议书的预定视频编码技术或标准来执行编码操作。在视频编码器(203)的操作中,视频编码器(203)可以执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测性编码操作。因此,已编码视频数据可以符合由所使用的视频编码技术或标准指定的语法。
[0079]
在实施方式中,传输器(440)可以随着已编码视频传输附加数据。视频编码器(430)可以包括有这样的数据作为已编码视频序列的一部分。附加数据可以包括时间/空
间/snr增强层、其他形式的冗余数据如冗余图片和切片、补充增强信息(sei)消息、视觉可用性信息(vui)参数集片段等。
[0080]
图6是vvc草案2中的帧内预测模式的图。
[0081]
在vvc草案2中,存在如图5所示的总共87个帧内预测模式,其中,模式18(601)是水平模式,模式50(602)是竖直模式,并且模式2(603)、模式34(604)和模式66(605)是对角模式。模式-1至-10和模式67至76被称为广角帧内预测(wide-angle intra prediction,waip)模式(606,707)。
[0082]
在vvc草案2中,mpm列表的大小仍为3,并且mpm列表生成处理与hevc相同。然而,差别在于,由于在vvc草案2中存在67个用信号表示的模式,因此“offset”被改为61并且“mod”被改为64。
[0083]
vvc草案2中的以下条款描述了亮度帧内模式编码处理,在该处理中得出intrapredmodey[xpb][ypb]:
[0084]
1.将相邻位置(xnba,ynba)和(xnbb,ynbb)分别设置为等于(xpb-1,ypb)和(xpb,ypb-1)。
[0085]
2.对于由a或b替换的x,按下述步骤得出变量candintrapredmodex:
[0086]-调用条款6.4.x[ed.(bb):neighbouring blocks availability checking process tbd]中规定的块的可用性得出处理,其中位置(xcurr,ycurr)被设置为等于(xpb,ypb)并且相邻位置(xnby,ynby)被设置为等于(xnbx,ynbx)作为输入,并且输出被分配给availablex。
[0087]-按下述步骤得出候选帧内预测模式candintrapredmodex:
[0088]-如果以下条件中的一个或更多个为真,则将candintrapredmodex设置为等于intra_dc。
[0089]-变量availablex等于false。
[0090]-cupredmode[xnbx][ynbx]不等于mode_intra。
[0091]-x等于b并且ypb-1小于((ypb》》ctblog2sizey)《《ctblog2sizey)。
[0092]-否则,将candintrapredmodex设置为等于intrapredmodey[xnbx][ynbx]。
[0093]
3.按下述步骤得出candmodelist[x],其中x=0...2:
[0094]-如果candintrapredmodeb等于candintrapredmodea,则适用以下处理:
[0095]-如果candintrapredmodea小于2(即,等于intra_planar或intra_dc),则按下述步骤得出candmodelist[x],其中x=0..2:
[0096]
candmodelist[0]=intra_planar
ꢀꢀꢀ
(8-1)
[0097]
candmodelist[1]=intra_dc
ꢀꢀ
(8-2)
[0098]
candmodelist[2]=intra_angular50
ꢀꢀ
(8-3)
[0099]-否则,按下述步骤得出candmodelist[x],其中x=0..2:
[0100]
candmodelist[0]=candintrapredmodea
ꢀꢀ
(8-4)
[0101]
candmodelist[1]=2+((candintrapredmodea+61)%64)
ꢀꢀ
(8-5)
[0102]
candmodelist[2]=2+((candintrapredmodea-1)%64)
ꢀꢀꢀ
(8-6)
[0103]-否则(candintrapredmodeb不等于candintrapredmodea),则适用以下处理:
[0104]-按下述步骤得出candmodelist[0]和candmodelist[1]:
[0105]
candmodelist[0]=candintrapredmodea
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-7)
[0106]
candmodelist[1]=candintrapredmodeb
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-8)
[0107]-如果candmodelist[0]和candmodelist[1]都不等于intra_planar,则将candmodelist[2]设置为等于intra_planar,
[0108]-否则,如果candmodelist[0]和candmodelist[1]都不等于intra_dc,则将candmodelist[2]设置为等于intra_dc,
[0109]-否则,将candmodelist[2]设置为等于intra_angular50。
[0110]
4.通过应用以下过程得出intrapredmodey[xpb][ypb]:
[0111]-如果intra_luma_mpm_flag[xpb][ypb]等于1,则将intrapredmodey[xpb][ypb]设置为等于candmodelist[intra_luma_mpm_idx[xpb][ypb]]。
[0112]-否则,通过应用以下有序步骤得出intrapredmodey[xpb][ypb]:
[0113]
1.通过以下有序步骤修改数组candmodelist[x],其中x=0..2:
[0114]
i.在candmodelist[0]大于candmodelist[1]的情况下,按如下方式将这两个值互换:
[0115]
(candmodelist[0],candmodelist[1])=swap(candmodelist[0],candmodelist[1])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-9)
[0116]
ii.在candmodelist[0]大于candmodelist[2]的情况下,按如下方式将这两个值互换:
[0117]
(candmodelist[0],candmodelist[2])=swap(candmodelist[0],candmodelist[2])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-10)
[0118]
iii.在candmodelist[1]大于candmodelist[2]的情况下,按如下方式将这两个值互换:
[0119]
(candmodelist[1],candmodelist[2])=swap(candmodelist[1],candmodelist[2])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-11)
[0120]
2.通过以下有序步骤得出intrapredmodey[xpb][ypb]:
[0121]
i.将intrapredmodey[xpb][ypb]设置为等于intra_luma_mpm_remainder[xpb][ypb]。
[0122]
ii.对于i等于0至2,包含0和2,在intrapredmodey[xpb][ypb]大于或等于candmodelist[i]的情况下,使intrapredmodey[xpb][ypb]的值增加1。
[0123]
在以上中,变量intrapredmodey[x][y],其中x=xpb..xpb+cbwidth-1且y=ypb..ypb+cbheight-1,被设置为等于intrapredmodey[xpb][ypb]。
[0124]
在vvc草案2的开发中,提出了大小为6的mpm列表。在该mpm列表中包括planar(平面)模式和dc模式。使用左模式和上模式两个相邻模式来生成其余的4个mpm。
[0125]
提出了多行帧内预测以使用更多的参考行进行帧内预测,其中,编码器判定并且用信号通知使用哪个参考行来生成帧内预测器。在帧内预测模式之前用信号传送参考行索引,并且在用信号传送了非零参考行索引的情况下,将planar模式/dc模式排除在帧内预测模式之外。在图7中描绘了4个参考行(710)的示例,其中,每个参考行(710)由6个段(即,段a
至段f)连同左上方的参考样本一起构成。此外,段a和段f分别用距段b和段e最近的样本来填充。
[0126]
在多行帧内预测中,在用信号传送的参考行索引非零的情况下,planar模式和dc模式被排除在mpm列表生成和模式编码之外。此外,提出了可以通过2个相邻模式生成上述大小为6的mpm列表。因此,在仅可以访问2个相邻模式的情况下对于非零行如何生成6个角度mpm是开放式问题。
[0127]
所提出的方法可以单独使用或以任何顺序组合使用。
[0128]
在下面的描述中,最近的参考行的行索引为0(零参考行)。最大的用信号传送的参考行编号被表示为n。
[0129]
同样如图8所示,以下述方式限定上(顶)侧块(701)和左侧块(702):
[0130]
如图8所示,当前块(703)内的左上位置的像素被表示为(x,y)。所包括的所有样本的y坐标大于或等于y且所包括的所有样本的x坐标小于x的块被称为左侧块。所包括的所有样本的y坐标小于y的块被称为上侧块。在图8中示出了当前块(703)的左侧块(l1、lx和ln)和上侧块(a1、a2、ax、an)的一个示例。
[0131]
下文提到的两个相邻模式可以来自当前块(703)的上侧(701)或来自当前块(703)的左侧(702)。以下是两个相邻模式的一些示例:
[0132]
在一个示例中,两个相邻模式都来自左侧(702)。
[0133]
在另一示例中,两个相邻模式都来自上侧(701)。
[0134]
在另一示例中,相邻模式中的一个来自左侧(702),而另一个相邻模式来自上侧(701)。
[0135]
在另一示例中,在当前块(703)的宽度大于当前块(703)的高度的情况下,两个相邻模式都来自上侧(701),或者在高度大于宽度的情况下,两个相邻模式都来自左侧(702),或者在宽度等于高度的情况下,一个相邻模式来自上侧(701),而另一个相邻模式来自左侧(702)。
[0136]
可以根据块宽度、块高度、块宽度与块高度的比来选择和使用参考样本侧(如以上示例中描述的那样)以得出两个(或更多个)相邻的块。
[0137]
在一个示例中,如果块宽度/高度大于预限定的阈值,则仅从上侧(701)中选择两个(或更多个)相邻块。阈值的示例值包括但不限于2、4、8、16、32和64。
[0138]
在另一示例中,如果块高度/宽度大于预限定的阈值,则仅从左侧(702)选择两个(或更多个)相邻块。阈值的示例值包括但不限于2、4、8、16、32和64。
[0139]
在下面的描述中,如果相邻块的模式不可用,则会将模式设置为planar模式或dc模式。
[0140]
在下面的描述中,如果用信号表示的模式编号范围为0至m(0和m包括在内),则m可以是任意正整数,例如34或66。给定模式x的邻近模式被限定为:如果x大于2且小于m-1,则x的邻近模式为x-1和x+1。如果x等于2,则x的邻近模式为3和m(或m-1)。如果x等于m-1,则x的邻近模式为x-1和x+1(或2)。如果x等于m,则x的邻近模式为m-1和2(或3)。
[0141]
在下面的描述中,如果一个模式不是planar模式或dc模式,或者一个模式是根据给定的预测方向生成预测样本,例如像vvc草案2中限定的帧内预测模式2至66那样,则该模式被称为角度模式。offset和mod这两个变量可以具有以下两组:
[0142]
1)offset=mod-3,mod=m-2;
[0143]
2)offset=mod-3,mod=m-1;
[0144]
当用信号表示的参考行索引为非零时,以下方法可以经由两个相邻模式生成6个角度mpm。以下方法或示例可以单独使用或以任何顺序组合使用。
[0145]
在一个实施方式中,如果两个相邻模式中的至少一个是角度模式,则使用以下算法生成6个角度mpm。将两个相邻模式表示为mode_a和mode_b。使用变量ang_mode[]来记录相邻模式的角度模式。使用变量ang_count来指示角度模式的数目,并且使用mpm_index来指示mpm列表的索引。最初,ang_count和mpm_index被设置为0。使用includedmode[]来指示每个模式是否被包括在mpm列表中,并且数组includedmode[]中的所有元素最初均被设置为假。
[0146]

如果mode_a为角度模式,则mpm[mpm_index]=mode_a,ang_count+=1,mpm_index+=1;
[0147]

如果mode_b为角度模式,则mpm[mpm_index]=mode_b,ang_count+=1,mpm_index+=1;
[0148]

对于(diff=0;diff《=2&&mpm_index《6;diff++){
[0149]

对于(idx=0;idx《ang_count;idx++){
[0150]

mpm[mpm_index]=((ang_mode[idx]+offset-diff)%mod)+2;
[0151]

如果(includedmode[mpm[mpm_index]]==false)){
[0152]

includedmode[mpm[mpm_index++]]=true}
[0153]

如果mpm_index==6,则跳出循环;
[0154]

mpm[mpm_index]=((ang_mode[idx]-1+diff)%mod)+2;
[0155][0156]

如果(includedmode[mpm[mpm_index]]==false){
[0157]

includedmode[mpm[mpm_index++]]=true}
[0158]
在一个实施方式中,如果相邻模式中仅一个相邻模式为角度模式——被表示为ang_neighbor,则ang_neighbor及其2个邻近模式(被表示为mode_l和mode_r)被添加到mpm列表中,并且然后mode_l的一个邻近模式和mode_r的一个邻近模式被添加到mpm列表中。最后,添加竖直/水平模式以生成6个角度mpm。这6个角度模式可以以任何顺序添加到mpm列表中。
[0159]

在一个示例中,按下述方式生成6个角度mpm。
[0160]

mpm[0]=ang_mode
[0161]

mpm[1]=((ang_mode+offset)%mod)+2;
[0162]

mpm[2]=((ang_mode-1)%mod)+2;
[0163]

mpm[3]=((ang_mode-1+offset)%mod)+2;
[0164]

mpm[4]=((ang_mode)%mod)+2;
[0165]

mpm[5]=竖直或水平模式。在一个示例中,如果mpm0.[0166]
至mpm[4]中不包括竖直模式,则mpm[5]被设置为竖直模式。
[0167]
否则,mpm[5]被设置为水平模式。
[0168]
在另一实施方式中,如果相邻模式中仅一个相邻模式为角度模式——被表示为
ang_neighbor,则ang_neighbor及其2个邻近模式(被表示为mode_l和mode_r)被添加到mpm列表中,并且然后mode_l的一个邻近模式(被表示为mode_l_l)和mode_r的一个邻近模式(被表示为mode_r_r)被添加到mpm列表中。最后,将mode_l_l或mode_r_r的一个邻近模式添加到mpm列表中。这6个角度模式可以以任何顺序添加到mpm列表中。
[0169]

在一个示例中,按下述方式生成6个角度mpm。
[0170]

mpm[0]=ang_mode
[0171]

mpm[1]=((ang_mode+offset)%mod)+2;
[0172]

mpm[2]=((ang_mode-1)%mod)+2;
[0173]

mpm[3]=((ang_mode-1+offset)%mod)+2;
[0174]

mpm[4]=((ang_mode)%mod)+2;
[0175]

mpm[5]=((ang_mode+1)%mod)+2;
[0176]

在另一示例中,按下述方式生成6个角度mpm。
[0177]

mpm[0]=ang_mode
[0178]

mpm[1]=((ang_mode+offset)%mod)+2;
[0179]

mpm[2]=((ang_mode-1)%mod)+2;
[0180]

mpm[3]=((ang_mode-1+offset)%mod)+2;
[0181]

mpm[4]=((ang_mode)%mod)+2;
[0182]

mpm[5]=((ang_mode-2+offset)%mod)+2;
[0183]
在另一实施方式中,如果相邻模式中仅一个相邻模式为角度模式——被表示为ang_neighbor,则按下述方式得到6个角度mpm,其中这6个角度模式可以以任何顺序添加到mpm列表中。下面示出了一个示例。
[0184]

mpm[0]=ang_mode
[0185]

mpm[1]=((ang_mode+offset)%mod)+2;
[0186]

mpm[2]=((ang_mode-1)%mod)+2;
[0187]

mpm[3]=((ang_mode-2+offset)%mod)+2;
[0188]

mpm[4]=((ang_mode+1)%mod)+2;
[0189]

mpm[5]=竖直或水平模式。在一个示例中,如果mpm[0]至mpm[4]中不包括竖直模式,则mpm[5]被设置为竖直模式。否则,mpm[5]被设置为水平模式。
[0190]
在另一实施方式中,如果相邻模式中的两个相邻模式为角度模式并且它们是邻近的模式,则可以按下述方式生成mpm列表。两个相邻模式被表示为mode_a和mode_b,并且它们被添加到mpm列表中。使用变量ang_max和ang_min来记录mode_a与mode_b之间的最大模式和最小模式。
[0191]

如果mode_a大于mode_b,则ang_max被设置为mode_a并且ang_min被设置为mode_b
[0192]

如果ang_min等于2并且ang_max等于m-1或m,则将ang_min和ang_max的值互换。
[0193]

按如下方式得出其余4个角度mpm。可以以任何顺序添加这4个模式,下面是一个示例。
[0194]

mpm[2]=((ang_min+offset)%mod)+2;
[0195]

mpm[3]=((ang_max-1)%mod)+2;
[0196]

mpm[4]=((ang_min-1+offset)%mod)+2;
[0197]

mpm[5]=((ang_max)%mod)+2;
[0198]
在另一实施方式中,两个相邻模式由mode_a和mode_b表示,并且如果这两个相邻模式都是角度模式并且abs(mode_a-mode_b)》2&&abs(mode_a-mode_b)《=thres,则使用以下算法来生成6个角度mpm。thres为正整数,并且thres大于2,例如thres=61或62或63。
[0199]

首先,将mode_a和mode_b添加到mpm列表中
[0200]

然后,将mode_a的2个邻近模式和mode_b的2个邻近模式也添加到mpm列表中
[0201]

并且这6个角度mpm可以以任何顺序添加到mpm列表中
[0202]

以下示出了6个mpm的生成的示例
[0203]

mpm[0]=mode_a
[0204]

mpm[1]=mode_b
[0205]

mpm[2]=((mode_a+offset)%mod)+2;
[0206]

mpm[3]=((mode_a-1)%mod)+2;
[0207]

mpm[4]=((mode_b+offset)%mod)+2;
[0208]

mpm[5]=((mode_b-1)%mod)+2;
[0209]
在另一实施方式中,两个相邻模式由mode_a和mode_b表示,并且如果这两个相邻模式都是角度模式,并且abs(mode_a-mode_b)==2||abs(mode_a-mode_b)》thres,其中thres是正整数并且thres大于2,例如thres=61或62或63,则通过以下算法得出6个角度mpm。
[0210]

使用变量ang_max和ang_min来记录mode_a与mode_b之间的最大模式和最小模式。
[0211]

如果mode_a大于mode_b,则ang_max被设置为mode_a并且ang_min被设置为mode_b
[0212]

然后,将mode_a和mode_b的3个邻近模式添加到mpm列表中
[0213]

最后,将竖直或水平模式添加到mpm列表中,并且这6个mpm可以以任何顺序添加到mpm列表中。
[0214]

如下示出了一个示例
[0215]

mpm[0]=ang_min
[0216]

mpm[1]=ang_max
[0217]

mpm[2]=((ang_min-1)%mod)+2;
[0218]

mpm[3]=((ang_min+offset)%mod)+2;
[0219]
mpm[4]=((ang_max-1)%mod)+2;
[0220]

mpm[5]=竖直或水平模式。在一个示例中,如果mpm0.[0221]
至mpm[4]中不包括竖直模式,则mpm[5]被设置为竖直模式。
[0222]
否则,mpm[5]被设置为水平模式。
[0223]
在另一实施方式中,如果两个相邻模式均为planar模式或dc模式,则使用6个默认模式来填充mpm列表。这6个默认模式可以以任何顺序添加到mpm列表中。
[0224]

在一个实施方式中,6个默认模式为{50,18,2,34,66,26}
[0225]

在另一实施方式中,6个默认模式为{50,18,2,34,26,42}
[0226]

在另一实施方式中,在当前块的宽度大于高度的情况下,6个默认模式为{50,18,34,66,42,58}
[0227]

在另一实施方式中,在当前块的高度大于宽度的情况下,6个默认模式为{50,18,34,2,10,26}
[0228]

在另一实施方式中,在当前块的宽度等于高度的情况下,6个默认模式为{50,18,2,34,26,42}
[0229]
在另一实施方式中,首先将是角度模式的所有相邻模式添加到mpm列表中。然后,对于这些是角度模式的相邻模式中的每一个,其被表示为ang_mode,如果角度模式((ang_mode-1)%mod)+2和角度模式((ang_mode+offset)%mod)+2未包括在mpm列表中,则将其添加到mpm列表中。
[0230]

在一个实施方式中,如果mpm列表仍未被完全填充,则添加若干默认模式。默认模式列表可以是以上项目编号h中描述的替选中的任何一个。
[0231]

在另一实施方式中,如果mpm列表仍未被完全填充,则对于已经在mpm列表中的模式中的每个模式(被表示为mpm_mode),如果角度模式((mpm_mode-1)%mod)+2和角度模式((mpm_mode+offset)%mod)+2未包括在mpm列表中,则将其添加到mpm列表中。
[0232]
在至少一个实施方式中,上述技术可以由集成电路、一系列集成电路和/或其他电子电路执行。在至少一个实施方式中,技术可以部分地或完全地实现在运行于具有关联存储器的一个或更多个cpu上的软件中。
[0233]
可以使用计算机可读指令将上述技术实现为计算机软件并且将其物理地存储在一个或更多个计算机可读介质中。例如,图9示出了适合于实现本公开内容的某些实施方式的计算机系统(800)。
[0234]
计算机软件可以使用任何合适的机器代码或计算机语言来编码,可以对计算机软件应用汇编、编译、链接等机制以创建包括指令的代码,该指令可以由计算机中央处理单元(cpu)、图形处理单元(gpu)等直接执行或通过解译、微代码执行等来执行。
[0235]
指令可以在各种类型的计算机或其部件上执行,包括例如个人计算机、平板计算机、服务器、智能电话、游戏装置、物联网装置等。
[0236]
图9中示出的用于计算机系统(800)的部件本质上是示例性的,而且并非意在对实现本公开内容的实施方式的计算机软件的使用范围或功能提出任何限制。部件的配置也不应当被解释为具有与计算机系统(800)的非限制性实施方式中示出的部件中的任何一个部件或部件的组合相关的任何依赖性或要求。
[0237]
计算机系统(800)可以包括某些人机接口输入装置。这样的人机接口输入装置可以对由一个或更多个人类用户通过例如触觉输入(例如:击键、滑动、数据手套移动)、音频输入(例如:语音、拍手)、视觉输入(例如:姿势)、嗅觉输入(未描绘)实现的输入作出响应。人机接口装置还可以用于捕获不一定与人的有意识输入直接相关的某些介质,例如,音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静态图像摄像装置获得的摄影图像)、视频(例如:二维视频、包括立体视频的三维视频)。
[0238]
输入人机接口装置可以包括以下中的一种或更多种(仅描绘了每种中的一个):键盘(801)、鼠标(802)、触控板(803)、触摸屏(810)、数据手套、操纵杆(805)、麦克风(806)、扫描仪(807)、摄像装置(808)。
[0239]
计算机系统(800)还可以包括某些人机接口输出装置。这样的人机接口输出装置可以通过例如触觉输出、声音、光和气味/味道来刺激一个或更多个人类用户的感官。这样的人机接口输出装置可以包括触觉输出装置(例如,由触摸屏(810)、数据手套或操纵杆(805)提供的触觉反馈,但也可以存在不用作输入装置的触觉反馈装置)。例如,这样的装置可以是音频输出装置(例如:扬声器(809)、耳机(未描绘))、视觉输出装置(例如:屏幕(810),包括crt屏幕、lcd屏幕、等离子体屏幕、oled屏幕,各自具有或不具有触摸屏输入能力,各自具有或不具有触觉反馈能力——其中一些屏幕可能能够通过诸如立体输出等手段输出二维视觉输出或多于三维的输出;虚拟现实眼镜(未描绘)、全息显示器和烟箱(未描绘))以及打印机(未描绘)。
[0240]
计算机系统(800)还可以包括人类可访问的存储装置及其相关联的介质,例如包括具有cd/dvd等介质(821)的cd/dvd rom/rw(820)的光学介质、拇指驱动器(822)、可移动硬盘驱动器或固态驱动器(823)、传统磁性介质如磁带和软盘(未描绘)、基于专用rom/asic/pld的装置如安全加密狗(未描绘)等。
[0241]
本领域技术人员还应当理解,结合当前公开的主题使用的术语“计算机可读介质”不包含传输介质、载波或其他瞬态信号。
[0242]
计算机系统(800)还可以包括到一个或更多个通信网络的接口。网络可以是例如无线的、有线的、光学的。网络还可以是本地的、广域的、城市的、车载的和工业的、实时的、延迟容忍的等。网络的示例包括局域网如以太网、无线lan、蜂窝网络(包括gsm、3g、4g、5g、lte等)、电视有线或无线广域数字网络(包括有线电视、卫星电视和地面广播电视)、车载的和工业的(包括canbus)等。某些网络通常需要附接至某些通用数据端口或外围总线(849)(诸如,例如计算机系统(800)的usb端口)的外部网络接口适配器;其他接口通常通过附接至如下所述的系统总线而集成到计算机系统(800)的核中(例如,集成到pc计算机系统的以太网接口或集成到智能电话计算机系统的蜂窝网络接口)。使用这些网络中的任何网络,计算机系统(800)可以与其他实体通信。这样的通信可以是单向的、仅接收的(例如,广播电视)、单向仅发送的(例如,到某些canbus装置的canbus)、或双向的,例如,使用局域数字网络或广域数字网络到其他计算机系统。可以在如上所述的这些网络和网络接口中的每个网络和网络接口上使用某些协议和协议栈。
[0243]
上述人机接口装置、人类可访问的存储装置和网络接口可以附接至计算机系统(800)的核(840)。
[0244]
核(840)可以包括一个或更多个中央处理单元(cpu)(841)、图形处理单元(gpu)(842)、现场可编程门阵列(fpga)(843)形式的专用可编程处理单元、用于某些任务的硬件加速器(844)等。这些装置连同只读存储器(rom)(845)、随机存取存储器(846)、内部大容量存储装置如内部非用户可访问型硬盘驱动器、ssd等)(847)可以通过系统总线(848)连接。在一些计算机系统中,可以以一个或更多个物理插头的形式访问系统总线(848),以使得能够通过附加的cpu、gpu等进行扩展。外围装置可以直接地或通过外围总线(849)附接至核的系统总线(848)。外围总线的架构包括pci、usb等。
[0245]
cpu(841)、gpu(842)、fpga(843)和加速器(844)可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在rom(845)或ram(846)中。过渡数据也可以存储在ram(846)中,而永久数据可以存储在例如内部大容量存储装置(847)中。可
以通过使用缓存存储器来实现针对存储器装置中的任何存储器装置的快速存储和检索,该缓存存储器可以与一个或更多个cpu(841)、gpu(842)、大容量存储装置(847)、rom(845)、ram(846)等紧密关联。
[0246]
计算机可读介质上可以具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是为本公开内容的目的而专门设计和构造的介质和计算机代码,或者它们可以是对计算机软件领域的技术人员公知且可获得的类型。
[0247]
作为示例而非限制,具有架构的计算机系统(800)——并且特别是核(840)——可以由于处理器(包括cpu、gpu、fpga、加速器等)执行体现在一个或更多个有形计算机可读介质中的软件而提供功能。这样的计算机可读介质可以是与如以上介绍的用户可访问型大容量存储装置相关联的介质,以及具有非暂态性质的核(840)的某些存储装置,例如核内大容量存储装置(847)或rom(845)。实现本公开内容的各种实施方式的软件可以存储在这样的装置中并且由核(840)执行。根据特定需求,计算机可读介质可以包括一个或更多个存储器装置或芯片。软件可以使核(840)——并且特别是其中的处理器(包括cpu、gpu、fpga等)——执行本文中描述的特定处理或特定处理的特定部分,包括限定存储在ram(846)中的数据结构以及根据由软件限定的处理修改这些数据结构。另外地或作为替选,计算机系统可以由于硬连线或以其他方式体现在电路(例如:加速器(844))中的逻辑而提供功能,该逻辑可以代替软件或与软件一起操作以执行本文中描述的特定处理或特定处理的特定部分。在适当的情况下,提及软件可以包含逻辑,反之亦然。在适当的情况下,提及计算机可读介质可以包含存储用于执行的软件的电路(例如,集成电路(ic))、体现用于执行的逻辑的电路或上述两者。本公开内容包含硬件和软件的任何合适的组合。
[0248]
尽管本公开内容已经描述了若干非限制性实施方式,但是存在落入本公开内容的范围内的改变、置换和各种替换等效物。因此将理解,虽然本文中未明确示出或描述,但是本领域技术人员能够设想体现本公开内容的原理并且因此在其精神和范围内的许多系统和方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1