利用交叉通道引用进行多通道视频编码的方法和系统

文档序号:815540 发布日期:2021-03-26 浏览:26次 >En<

阅读说明:本技术 利用交叉通道引用进行多通道视频编码的方法和系统 (Method and system for multi-channel video coding using cross-channel referencing ) 是由 杰森·唐纳 瓦西里·阿里斯塔科夫 于 2020-06-23 设计创作,主要内容包括:本公开涉及利用交叉通道引用进行多通道视频编码的方法和系统。与视频编码有关的技术包括利用交叉通道引用进行多通道视频编码。(The present disclosure relates to methods and systems for multi-channel video coding with cross-channel referencing. Techniques related to video coding include multi-channel video coding using cross-channel referencing.)

利用交叉通道引用进行多通道视频编码的方法和系统

技术领域

本公开一般涉及视频处理的领域,更具体地涉及利用交叉通道引用进行多通道视频编码的方法和系统。

背景技术

在视频压缩和/或解压缩(编解码器)系统中,压缩效率和视频质量是重要的性能标准。例如,视觉质量是许多视频应用中用户体验的重要方面,并且压缩效率会影响存储视频文件所需的存储器存储量以及/或者发送和/或流送视频内容所需的带宽量。视频编码器压缩视频信息,以使得可以在给定带宽上发送更多信息,或在给定存储器空间中存储更多信息,等等。然后,压缩的信号或数据由解码器解码,该解码器对信号或数据进行解码或解压缩以显示给用户。在大多数实现方式中,期望在具有更高压缩率的同时具有更高的视觉质量。

在某些情境中,对大批量视频进行编码,以使每个视频(例如,每条内容)都以多种分辨率、比特率、帧速率等进行编码。例如,流视频服务可以以下述大小的分辨率和帧速率对具有的4K分辨率的单个视频进行编码:4K分辨率和60fps帧速率、1080p分辨率和60fps帧速率、1080p分辨率和30fps帧速率、720p分辨率和30fps帧速率、480p分辨率和30fps帧速率,依此类推,其中所有这些分辨率都以例如10种不同的比特率进行编码。然而,当由于设备分辨率、受限的带宽和较差的互联网连接速度带来的大量计算负载(尤其是在随视频序列的编码和随后的显示而变化的动态设置中)使得性能和质量无法恰当平衡时,流送体验通常并不足够好。

发明内容

根据本公开的实施例,提供了一种用于视频编码的设备。该设备包括:存储器,用于存储至少一个视频;以及通信地耦合到存储器的至少一个处理器,至少一个处理器被布置为通过以下步骤进行操作:生成视频的相同图像内容的多个视频序列,其中,各个视频序列分别具有不同的分辨率、不同的比特率或这两者,以及比特率相关的值;至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列;以及使用至少一个编码控制对至少一个汇集视频序列进行编码,编码控制根据先前为匹配的源视频序列建立的编码决策来约束用于对汇集视频序列进行编码的编码决策。

根据本公开的实施例,提供了一种用于视频编码的方法。该方法包括生成视频的相同图像内容的多个视频序列,其中,各个视频序列分别具有不同的分辨率、不同的比特率或这两者,以及比特率相关的值;至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列;以及使用至少一个编码控制对至少一个汇集视频序列进行编码,编码控制根据先前为匹配的源视频序列建立的编码决策来约束用于对汇集视频序列进行编码的编码决策。

根据本公开的实施例,提供了至少一种非暂态机器可读介质,包括多个指令,这多个指令响应于在计算设备上被执行,使得计算设备通过以下操作对视频进行编码:生成视频的相同图像内容的多个视频序列,其中,各个视频序列分别具有不同的分辨率、不同的比特率或这两者,以及比特率相关的值;至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列;以及使用至少一个编码控制对至少一个汇集视频序列进行编码,编码控制根据先前为匹配的源视频序列建立的编码决策来约束用于对汇集视频序列进行编码的编码决策。

附图说明

在附图中以示例方式而非限制方式图示了本文描述的素材。为了图示的简单和清晰,附图中图示的元素不一定是按比例绘制的。例如,为了清晰,一些元素的大小相对于其他元素可被放大。另外,在认为适当时,附图标记在附图之间被重复以指示出对应的或相似的元素。在附图中:

图1是用于将视频编码为多个独立比特流的示例系统的说明图;

图2A至图2B为根据本文中的至少一个实现方式的利用交叉通道引用的视频编码的详细示例方法;

图3A至图3B是根据本文中的至少一个实现方式的利用基于神经网络的交叉通道引用的视频编码的详细示例方法;

图4是根据本文中的至少一个实现方式的用于执行交叉通道引用的示例神经网络单元的示意图;

图5是根据本文中的至少一个实现方式的另一种视频编码方法;

图6是用于视频编码的示例系统;

图7是示例系统的示意图;以及

图8图示了全部根据本公开的至少一些实现方式布置的示例设备。

具体实施方式

现在参考附图描述一个或多个实施例或实现方式。虽然论述了具体配置和布置,但应当理解这么做只是为了说明性目的。相关领域的技术人员将认识到,在不脱离描述的精神和范围的情况下,可以采用其他配置和布置。相关领域的技术人员将会清楚,本文描述的技术和/或布置也可用在与本文所述不同的多种其他系统和应用中。

虽然接下来的描述阐述了可在比如片上系统(SoC)体系结构之类的体系结构中显现的各种实现方式,但本文描述的技术和/或布置的实现方式不限于特定的体系结构和/或计算系统,而是可由任何体系结构和/或计算系统为类似的目的而实现。例如,采用例如多个集成电路(IC)芯片和/或封装的各种体系结构和/或比如机顶盒、智能电话等等之类的各种计算设备和/或消费电子(CE)设备可实现本文描述的技术和/或布置。另外,虽然接下来的描述可阐述许多具体细节,例如逻辑实现方式、系统组件的类型和相互关系、逻辑分区/集成选择等等,但要求保护的主题可在没有这种具体细节的情况下实现。在其他情况中,为了避免模糊本文公开的素材,可能没有详细示出一些素材,例如控制结构和完整软件指令序列。

本文公开的素材可以用硬件、固件、软件或者其任何组合来实现。本文公开的素材也可实现为存储在机器可读介质上的指令,这些指令可被一个或多个处理器读取和执行。机器可读介质可包括用于以机器(例如,计算设备)可读的形式存储或传输信息的任何介质和/或机构。例如,机器可读介质可包括只读存储器(ROM);随机访问存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号等等),以及其他。

说明书中提及“一个实现方式”、“一实现方式”、“一示例实现方式”等等指示的是描述的实现方式可包括特定的特征、结构或特性,但可能不一定每个实施例都包括该特定特征、结构或特性。另外,这种短语不一定指相同实现方式。另外,当联系一实施例来描述特定的特征、结构或特性时,认为联系其他实现方式(无论本文是否明确描述)来实现这种特征、结构或特性是在本领域技术人员的知识范围内的。

术语“基本上”、“接近”、“近似”、“附近”、以及“大约”通常指的是在目标值的+/-10%以内。例如,除非在使用它们的上下文中明确地另外指明,否则术语“基本上相等”、“大约相等”、以及“近似相等”表示在所描述的事物之间仅存在偶发变化。在本领域中,这样的变化通常不大于预定目标值的+/-10%。除非另有规定,否则使用序数形容词“第一”、“第二”、以及“第三”等来描述一个共同的对象,仅表示指代相同对象的不同实例,并不意味着要暗示这样描述的对象必须采用给定的顺序,无论是时间地、空间地、排序地或任何其他方式。

本文描述了与视频编码,尤其是,利用交叉通道引用进行的多通道视频编码有关的方法、设备、装置、计算平台、和制品。

如上文所述,对大批量的视频进行编码以使得特定的视频(例如,特定的一段视频内容)以多种分辨率和比特率以及其他参数进行编码可能是有利的。例如,为了在服务器上进行转码,系统通常会以多种分辨率和以针对每种分辨率的多种比特率对视频流进行编码。举一个示例,某些媒体服务以自适应比特率(ABR)模式运行,该模式要求存储相同原始视频的多个实例(视频序列),这些实例在单独的通道或编码器上进行了转码并来自于内容创建者所提供的原始序列。例如,视频流互联网服务可以存储4k的视频的多个比特率和1080p的相同视频的多个比特率,此外,甚至可以使用不同的编码选项来生成针对不同分辨率的输出。随着互联网连接的更改而使带宽调整得更高或更低,该服务将从一比特率和/或分辨率切换到另一比特率和/或分辨率,以优化最终用户的观看体验。

然而,传统上,每个编码都是通过单独编码器在单独通道上独立处理的。由于在各个视频序列之间(或通道之间)的重复工作,这导致效率低下。具体地,在一个视频序列(例如4K序列)上进行的编码决策可能会检查100种不同的方式以对某个帧执行帧间预测,但将选择范围缩小到最有可能提供高质量图像的三种可能方式。另一个通道(比方说,相同帧的1080p通道)将需要单独进行(利用该帧的相同或相似的输入图像数据)此相同确定。如果一个通道或编码器可以提供指示先前做出的决策或可以在另一通道或编码器处使用的参数设置的数据,则这将显著减少在后一个通道上做出这些决策的计算负载,进而减少做出决策的时间,从而使性能提高。

相应地,已经发现可以通过在不同分辨率和/或比特率(或其他参数差异,例如帧速率)的视频序列之间创建依赖性来建立改进性能和质量之间的平衡的编码的调整。通过一个交叉通道引用系统,这涉及引用具有特定分辨率和比特率的视频序列的编码参数,以供编码器用于具有不同分辨率和/或比特率(或其他参数)的视频序列。这样的引用至少显著减少了分析以形成比如帧间或帧内预测之类的编码处理决策的备选方案的数目,从而减少了这样的决策的时间和计算负载。这样的系统由2019年3月29日提交的美国专利申请No.16/369,937所公开,并且出于所有目的将该申请合并到本文中。

更详细地,无论N是指分辨率还是比特率(或其他参数),这样的交叉通道引用系统都会优化1:N转码以增强性能。例如,这些性能提升导致转码操作的编码器部分的性能提高了大约30%至50%,而不会明显降低质量。这通过以下方式来完成:将决策和启发法从一个比特流格式的一个编码单元传输到另一比特流格式的第二编码单元以减少针对第二编码单元进行编码决策所花费的时间,并且着眼于已在其他通道之一上使用的最可能的候选对象和其他参数。这可以在逐块的基础上执行或在其他处理分区单元上执行。例如,形成要为来自不同视频序列(或通道或编码器)的视频序列(或通道或编码器)提供的交叉通道编码控制的这样的决策和启发法可能与考虑到第一输入分辨率的交叉通道块大小的选择有关,以提供逐块(或以块级别)的交叉通道规则、编码预测模式(例如,帧间、帧内、跳过、合并)、运动矢量、帧内模式、交叉通道块的编码单元分区(即,定义交叉通道块内的编码单元大小和形状)、和/或交叉通道块的转换单元深度或分区(即,定义用于交叉通道块的转换单元的大小和形状),等等。

通过将来自第一编码的第一分辨率和第一比特率的编码参数进行转化以用于以第二分辨率或第二比特率对视频进行编码,来形成编码控制。如本文所使用的,术语“编码控制”包括通过设置编码决策(以使得该决策不是在编码时被评估,而是简单地被使用)或通过设置限制在编码时对选项的评估的约束来约束编码决策的任何数据结构或指示符。类似地,术语“对编码决策的约束”指示编码将由约束定义(例如,该约束被直接使用),或者编码将由约束修改(例如,使用该约束来限制要评估、搜索等的编码选项的数目)。例如,这样的对评估的限制可以将块评估约束为仅帧内模式(不检查帧间模式)、仅帧间模式(不检查帧内模式)、仅特定类型的帧内模式、仅在运动矢量周围的受限区域内的运动搜索或在整数运动矢量周围仅进行分数运动矢量搜索、仅评估块的用于编码模式评估的特定分区(例如块大小)、仅评估特定的转换单元分割深度(例如,仅编码单元中的最佳转换单元大小的特定分区),等等。这样的编码控制可以从第一编码中的第一处理分区(比如块)生成,并且被转换以供第二编码中与第一分区对应的第二分区使用。如本文中所使用的,关于块的术语“与块对应”例如指示这些块在其各自的帧中完全或部分在空间上并置(collocate)(当视频大小已被缩放时根据需要进行缩放)并且在其各自的视频中在时间上并置。

上文提到的交叉通道引用系统假设每个通道的量化参数(QP)相同或相似。在已知的视频编码标准中,编码器生成残差,这些残差是图像上的相同区域(例如像素块)的原始图像数据和预测图像数据之间的差。通过离散余弦转换算法或其他此类转换算法将残差转换为系数。然后,类似于舍入运算,将这些系数目量子化为离散值集(或量化步骤),从而导致残差的有损压缩。该QP用于形成Qstep值,该值通常指示要使用的离散步长(step)的数目,进而指示步长的大小。因此,用非常普遍的简化示例术语来说,可以认为转换后的残差r×1/(Qstep(QP))生成量化值。QP越大,Qstep越大。由于这形成了等式中的分母,因此尽管计算负载减少了,但步长越大,保留的细节越少且准确性越差。然而,QP越小,步长越小,并且可以获得关于更大计算负载的更多详细信息。

根据所需的比特率并且通常逐帧地来设置QP。每个帧可以具有不同的QP。具体地,QP可以在帧内变化并且经常变化,但是即使QP改变,也会使用目标QP对该帧进行编码,该目标QP大致是该帧的平均QP值。然而,在此对于多个比特流,形成独立比特流的每个视频序列或每个编码器对于相同帧也可以具有不同的QP。例如,某些编码可以将相同的比特率用于不同的分辨率(例如,比特率为20Mbps而分辨率为4K、比特率为20Mbps而分辨率为1080p)。随着内容的缩小,也失去了细节。因此,在这种情况下,一个流可以使用比另一流中相同的缩放内容更低或更高的QP,以保持相似的比特率。

在上文提到的交叉通道系统中,例如,默认视频序列和编码器被选择为具有默认分辨率和比特率的第一或初始视频序列。具有不同分辨率和/或比特率的所有视频序列都可以接收编码控制,该编码控制将第一视频序列的编码参数转换为与接收视频序列的分辨率和比特率兼容。当一视频序列与另一视频序列之间的QP存在很大差异时,所描述的交叉通道系统可以使用QP来准确确定哪些以及如何调整某些编码参数。例如,在某些情况下,当默认视频序列和接收视频序列之间的QP差异很大时,转换后的运动矢量可以按不同比例缩放。一些其他改变的转换技术可以包括:使用块大小约束,以仅在QP低于初始编码时检查4K投影块大小和更小的块大小,等等。

然而,所描述的交叉通道系统通常不会首先决定哪个视频序列应接收编码控制,并且此时不考虑QP。由于所描述的交叉通道系统未确定如何使初始编码与接收编码相匹配以提供编码控制,至少通过将QP作为因子,这使得所描述的交叉通道系统易于提供低质量的比特流。之所以会发生这种情况,是因为没有考虑QP以将源视频序列与接收或汇集(sink)视频序列匹配,没有充分考虑不同分辨率下影响质量的速率控制变化。这可能会导致质量下降,例如明显的伪影和图像清晰度不足。

另一个问题是,针对不同比特流的不同编码器单元可以使用非常不同的选项(例如,帧类型或参考列表)来生成输出。在这些情况下,随着初始视频序列和汇集视频序列之间的QP差变大,质量影响会更加显著地增加,使得初始视频序列的编码参数与汇集视频序列变得越来越不相关。在某个点,当QP的差异足够大时,编码控制变得不相关,甚至有害于接收视频流的编码。

为解决这些问题,利用交叉通道引用的多通道视频编码系统和方法包括根据每个视频序列的比特率相关的值将一个或多个源视频序列(或仅源序列或源)与一个或多个接收或汇集视频序列(或仅汇集序列或汇集)进行匹配。通过一种形式,当比特率相关的值的差小于阈值时,将源视频序列与汇集视频序列匹配以向汇集视频序列提供编码控制。通过一种形式,比特率相关的值是QP或基于QP的Qstep。另一个规则是源视频序列的数量要最小化,因为相对于由使用编码控制的汇集执行的编码决策,需要检查的替代方案更多,因此源需要花费更长的时间进行编码,而计算负载更大。因此,都在相对于彼此的一定QP范围内的一组视频序列可以使用单个源视频序列。也可以使用其他因子,例如帧与帧之间的QP历史记录,QP值彼此之间的相对性(哪个较高)、质量因子、性能因子和/或目标质量性能平衡因子。通过一种途径,可以使用机器学习(例如神经网络)来确定哪些视频序列是源,哪些是汇集,要使用哪些源-汇集匹配,并通过只考虑最小化规则的比特率相关的值差异,或考虑提及的一个或多个其他因子。

通过一种形式,所公开的系统比较所有序列的每个潜在对之间的比特率相关的值和其他因子值,并且系统决定哪一个或多个序列为源、以及哪一个或多个序列为汇集,并针对哪个源序列。一个源序列可以具有一个或多个汇集序列,并且可以有不止一个源序列。通过一种形式,这是在逐帧的基础上确定的,并且哪些序列是源序列、哪些序列是它们的汇集序列,可以在帧与帧之间改变。因此,虽然每个视频序列可以沿着多个帧(帧的全局视频序列)延伸,但是本文所指的视频序列可以更精确地指提供仅单个帧的像素图像数据的全局视频序列(局部视频序列)的片段或部分,但为了简洁起见在此仍简称为视频序列。从本文的上下文中应该清楚是参考多个视频帧的全局视频序列还是形成单个帧的视频序列。当源序列与汇集序列匹配时,可以通过使用源序列的编码参数来生成编码控制,并且可以将编码控制提供给汇集序列以对汇集序列进行编码。

通过这种布置,当视频编码产生多个比特流时,显著改进性能和质量之间的平衡,使得质量或性能的下降不显著。具体而言,如果由于复杂性或资源限制而导致内容在性能截止线之后,则通常唯一的选择是减少目标使用率(TU)以提高性能,这通常是一个重大的质量折衷。但是在这种情况下,通过容许更宽的QP增量(delta),可以创建更多的汇集而不是源,使每个汇集的性能提高约50%,从而允许编码器达到性能目标。此外,不同的编码参数,比如限制运动矢量搜索、限制帧内模式和/或帧间模式、限制CU大小等,都全部可以采用它们各自的质量性能折衷。例如,移除许多CU的帧内模式可以移除90%的内部调用,而压缩影响为0.1%。移除可用的CU大小会导致性能降低50%,而影响压缩1%。

现在参考图1,根据本公开的至少一些实现方式布置了用于将视频编码为多个独立比特流的示例系统100。系统100可以是可以接收和发送压缩视频101的服务器或其他计算设备上的转码设备。通过此处的途径,输入视频缓冲器102可以接收压缩视频101。当系统100是转码器时,提供解码器104,然后解压缩视频101以提供解压缩的视频以供编码器1至N(112、114、116)编码。编码器112、114、116生成压缩的视频序列,该压缩的视频序列被打包到比特流134、136和138中,以传输到其他计算和/或显示设备。这里,可以逐帧确定比特流134、136和138。通过其他形式,系统100仅仅是从远程解码器104或从不同的设备(比如生成图像数据并将数据直接提供给系统100的相机)接收解压缩数据的编码设备。因此,系统100可以通过任何合适的设备来实现,比如,服务器、个人计算机、膝上型计算机、平板电脑、平板手机、智能电话、数码相机、游戏机、可穿戴设备、显示设备、多合一设备、二合一设备等。例如,如本文所使用的,系统、设备、计算机或计算设备可以包括任何这样的设备或平台。

系统100可以接收许多不同分辨率的视频,比如4K视频101(或任何合适分辨率的视频)。视频101可以包括要编码的任何视频序列。这样的视频可以以任何合适的分辨率包括任何合适的视频帧、视频图片、视频帧序列、图片、图片组、视频数据等。例如,视频可以是视频图形阵列(VGA)、高清(HD)、全高清(例如1080p)或4K分辨率视频等,并且视频可以包括任意数目的视频帧、视频帧的列、图片、图片组等。可以通过使用诸如YUV之类的任何合适的颜色空间中的像素样本(通常为正方形或矩形)的帧、块和子块等来执行本文中使用的编码技术。帧可以被表征为图片、图像、视频图片、图片的序列、视频序列等。例如,彩色视频数据的图片或帧可以包括亮度平面或分量以及相对于亮度平面具有相同或不同分辨率的两个色度平面或分量。视频可以包括可以被分成任意大小的块的图片或帧,其包含与像素块相对应的数据。这样的块可以包括来自像素数据的一个或多个平面或颜色通道的数据。

当解码器104被提供时,输入视频101的非压缩版本被从解码器104提供给调整大小单元106,调整大小单元106生成多个视频序列(或多个单元),每个视频序列形成独立的比特流。调整大小单元106可以包括用于缩减图像数据的大小的下采样器,并且执行缩放技术来以一种分辨率(主要大小1)改变主或默认视频序列的分辨率,例如4K,并且生成视频序列(调整大小2)109到视频序列N(调整大小N)110,其可以具有任何分辨率,比如1080p、720p、480p等。调整大小单元还可以具有用于放大图像数据的上采样单元。

至少针对每个不同分辨率提供编码器,比如此处的示例,4K编码器单元(或编码单元1)112、1080p编码器单元(或编码单元2)114以及任何其他数目的编码器(编码单元N)116,其可以是720p编码器或模块116。这些是随机示例,并且可以使用任何合适的分辨率。此外,也可以使用用于不同比特率、帧速率等的编码的编码单元。为了清楚起见,分别示出了4K编码单元112、1080p编码单元114和720p编码单元116中的每一个。然而,这样的模块或单元可以在相同或不同的编码软件、硬件、固件等中实现。值得注意的是,由1080p编码单元114和720p编码单元116执行的编码可以使用不同的单元至少部分地同时执行,或复用,和在相同硬件上切换情境,也可以使用相同或不同的模块串行执行。

例如,编码器112、114和116及其对应的输出比特流134、136、138可以与视频压缩解压缩(编解码器)标准兼容,比如HEVC(高效视频编码/H.265/MPEG-H第2部分),但是本文公开的技术可以针对任何编解码器来实现,比如AVC(高级视频编码/H.264/MPEG-4第10部分)、VVC(通用视频编码/MPEG-I第3部分)、VP8、VP9、开放媒体联盟(AOMedia)视频1(AV1)、VP8/VP9/AV1编解码器系列,等等。

提供了比特率控制(BRC)单元130以设置QP,使得编码满足由其他传输应用设置的比特率,并且满足在每个编码器112、114、116处生成的输出比特流。这里,BRC 130可以由共享的硬件和/或软件形成以控制编码单元112、114、116,但是应当理解,每个编码单元112、114、116可以具有其自己的BRC单元130。BRC 130监视输出缓冲器132,其被分区成为每个编码单元112、114、116提供输出缓冲器,或者可以为每个编码单元112、114、116提供单独的输出缓冲器132。BRC根据用于编码器的输出缓冲器130的变化容量,升高或降低视频序列的帧的QP,并且随着新帧被存储在输出缓冲器中以及从输出缓冲器中取出新帧,使得输出缓冲器可以满足目标比特率要求。

因此,当声明以10个不同比特率提供4K视频序列时,可以使用不同的编码器提供这10个比特率中的每个比特率,每个视频序列将逐帧独立设置QP以满足它们各自的目标比特率设置。对于系统100,编码器112、114和116然后继续压缩输入的视频序列,每个输入视频序列至少以不同的分辨率或如上所述的其他参数压缩。可以提供附加的单独的编码器单元,每个编码器单元以不同的比特率进行编码,例如,其中多个编码单元压缩相同的分辨率。否则,在视频101的帧的编码期间,编码单元从BRC接收QP以便维持某个期望的目标比特率,并且QP可以在帧与帧之间改变。

此外,编码器112、114、116中的每一个可以具有不需要在这里详细描述的用于执行编码的其他单元,比如确定任意数目的编码模式(包括帧内或帧间预测)的单元、编码单元分区、转换单元分区等,它们被评估以达到视频101的最终编码模式。这些操作可以涉及编码控制器、转换模块、量化模块、帧内预测模块、帧间预测模块、参考图片缓冲器、扫描模块、熵编码器等。这样的模块对于本领域技术人员是已知的,并且为了简明起见,在此不关于图1进一步讨论。在实现方式中,确定编码参数以用于源序列的编码,并且指示用于对视频序列进行编码的编码决策。这可以在逐块的基础上执行。

系统100还具有交叉通道控制118,其具有源-汇集匹配单元120和编码控制单元122。源-汇集匹配单元120确定相同帧的每个视频序列的比特率相关的值的差异,并确定哪些视频流应是源序列,哪些视频流应是汇集序列,同时尝试最小化源序列的数目。这可以通过考虑所有可能的视频序列对之间比特率相关的值差来执行,同时最小化源序列的数目以减少源处的计算负载,因为编码决策替代未在源序列处取消。还可以考虑其他因子,比如视频序列的QP帧级别历史记录、QP的相对值(序列对中的哪个具有高或较低的QP)以及质量评级值、序列的性能评级值和目标平衡评级。除了使用QP差异和最小化规则外,还可以使用这些方法的任何组合。通过一种途径,源-汇集匹配单元120具有神经网络以执行如下所述的匹配。

一旦由源-汇集匹配单元120识别并匹配了源序列及其汇集序列,编码控制单元将转换源序列的编码参数,以用于减少其汇集序列的决策替代。这些操作的细节由上面引用的美国专利申请No.16/369,937提供,该专利申请被并入本文,并且在此不需要详细解释。通常,转换操作可以包括首先从源编码单元提供编码参数,该编码参数可以以块级别提供。这可以是主编码单元112。然后,编码控制单元122使用编码参数来生成用于不同分辨率、比特率、帧速率等的一个或多个编码控制。可以将编码控制从一种分辨率转换(包括缩放)为与许多不同的分辨率组合中与另一分辨率兼容。通过一种形式,编码控制单元122可以使用用于较低分辨率编码的编码增强的编码控制以新的分辨率在每个CU级别创建表面(即,块级别编码控制之一)。这样的增强改进了较低分辨率下编码的性能和质量平衡。除了性能改进之外,还可以通过更准确地捕获视频的真实运动和/或特性来提高视觉质量。

然后,编码控制用于以汇集或第二分辨率或汇集或第二比特率对相同视频进行编码,以通过例如编码单元114或116生成第二比特流。值得注意的是,汇集比特流独立于编码单元112的初始或第一比特流,使得汇集比特流的整体足以以汇集分辨率和汇集比特率对视频进行解码。即,汇集比特流不需要以任何方式依赖于源比特流来对视频进行解码以生成比特流。但是,从另一个视频序列接收的编码控制有助于提高汇集比特流的性能和/或质量。此外,如所讨论的,源比特流和汇集比特流表示相同视频内容,使得可以使用源比特流和汇集比特流来独立地解码相同视频(以不同的分辨率和/或比特率)。

分别由编码单元112、114、116生成的输出比特流134、136、138均可以是表示视频101的任意比特流,比如,符合HEVC的比特流。系统100可以生成具有各种分辨率、比特率、帧速率等的任意数目N个比特流,比如几十个甚至超过100个比特流。随后此比特流可以被可选地动态地发送到解码设备以供用户消费。由编码单元112、114、116使用编码控制来改进来自编码单元114、116的比特流而生成的比特流134、136、138可以被存储到诸如(一个或多个)输出缓冲器132之类的存储器中,被发送到另一设备等等,以最终解码并将解码后的视频呈现给一个或多个用户。

参考图2A至图2B,根据本公开的至少一些实现方式布置用于视频编码的示例过程200。过程200可以包括一般被均匀编号的一个或多个操作202-244。过程200可以形成视频编码过程的至少一部分。通过非限制性示例,过程200可以执行由本文所讨论的任何设备或系统(比如系统100(图1)和/或视频处理器系统或设备600(图6))执行的编码过程。此外,本文可以参考系统100和/或600中的任何一个来描述过程200。

过程200可以包括“获得未压缩的视频”202,并且如上所述,可以在例如转码服务器处进行解码后获得,或者可以用于在具有本文提到的编码器能力的任何计算设备上编码所存储或接收的原始或流视频,比如智能电话、数码相机或其他计算设备。视频可以包括被充分预处理以进行编码的亮度和色度数据,但其他方面如系统100所述。

过程200可以包括“生成多个视频序列,每个视频序列具有不同的分辨率、不同的比特率、或二者以及相同的视频帧”204。这可以涉及生成多个视频序列,这些视频序列包括形成视频帧的像素数据序列,此处是形成图像数据的单帧价值的视频序列。这可以涉及调整大小或下采样,其中通过一种示例形式,未压缩的视频可以以4K分辨率的视频提供,并且可以通过缩减4K视频序列的大小来形成1080p、780p和480p的视频序列。这也可以涉及以不同的比特率编码不同分辨率的视频序列中的每一个,从而例如分别以10个不同的比特率编码视频序列。还应注意,也可以以不同的帧速率提供视频序列。然而,本文的交叉通道方法不一定区分针对不同帧速率的处理。

过程200可以包括“确定正在分析的当前帧是否满足交叉通道先决条件”206。这被称为对齐编码器参数,因为如果多个编码单元未使用足够相似的帧级参数,则交叉通道引用可能无法恰当工作以满足性能要求。这可以包括确定场景是否正在发生变化,或者场景刚刚开始,其中图像数据统计数据可能变化太大,而比特率相关的值(例如QP)也变化太大。这还可以包括确定帧的GOP图片类型,其中帧类型仅应与其他帧类型的视频序列匹配,使得如果不存在匹配的帧类型,则可以一起省略交叉通道引用。另一个先决条件可能是丢帧是否太普遍,使得交叉通道引用当被沿着视频不一致地用在太少的帧上使用时变得太不可预测。也可以使用其他先决条件。为了省略具体帧处的交叉通道操作,系统100可以将特定帧标记为源帧。

过程200可以包括“获得当前帧和每个视频序列的比特率相关的值”208,其中比特率相关的值是QP本身或Qstep值。如上所述,BRC监视每个编码器的输出缓冲器的变化容量,并用于在发送比特流之前将其打包。BRC更改QP以便填充缓冲器,而不会使缓冲器上溢或下溢。BRC根据目标比特率设置QP。

然后,过程200可以包括“确定一个或多个源序列”210,并且这可以首先包括“为一个或多个初始帧设置一个或多个初始默认源序列”212。因此,在全局视频序列的开始帧处,可以将某个分辨率(例如4K)和某个比特率(例如20Mbps)下的视频序列之一设置为针对该序列的第一帧(或一定数目的初始帧)的单个源视频序列。替代地,当针对单个分辨率提供多个比特率时,具有该分辨率的每个视频序列都可以被设置为初始源视频序列。因此,如果10个视频序列具有4K分辨率并且各自具有不同比特率,则这10个4K视频序列中的每一个都可以是初始源视频序列。初始源视频序列的分辨率通常可以与正被编码的单个非压缩输入视频的分辨率相同,但不一定要总是如此。可以基于被编码的分辨率来选择初始源视频序列的分辨率。因此,如果被编码的最大分辨率为4k,则1080p可以准确地预测到4k和720p二者,其对整体性能有很大影响。从480p到4k的预测不会很有用。如果最大分辨率为8k,则4k是用于加速8k视频源的良好目标分辨率。

在其他方面,通过一种示例形式,可以根据帧的空间复杂度来选择(一个或多个)默认的初始源视频序列,使得出于类似原因,中间比特率可以针对更多汇集被用作源或由比特率目标来选择。

过程200可以包括“根据满足至少一个标准的比特率相关的值差异,将源序列与汇集序列匹配,同时最小化源序列的数目”214。这可以涉及确定每个可能的源-汇集对在比特率相关的值(比如QP)方面是否具有比阈值小的差异,例如,当典型QP范围为0到52时,该差异为10。对于满足此标准的对,则源视频序列的数目被最小化。因此,当两个视频序列均具有在第三视频序列的阈值范围内但不在彼此范围内的QP时,该第三视频序列应该是唯一的源序列。还可以考虑其他因子216,其修改了这些差异和最小化考虑,或者提供了其他考虑。下面在过程200的操作218中针对后面帧的相同匹配操作更详细地描述。

为了首先完成对第一帧或初始帧的分析,过程200继续进行操作以对源视频序列进行编码232,并且一旦被编码,就可以为每个源视频序列形成234编码控制,其中编码控制如上所述。然后将编码控制分别提供给匹配的汇集视频序列236,并且使用编码控制对汇集视频序列进行编码238。然后,过程200将编码的视频流打包成比特流并发送240它们。下面提供了更多详细信息,以及对后续帧的操作。

在为帧确定源和汇集匹配并且将这些决策用于编码操作之后的任何时间,过程200可以继续进行询问242以确定在全局视频序列中是否存在更多帧。如果不是,则该过程结束。如果是,则过程200获得下一帧的图像数据和参数,包括该帧中每个视频序列的比特率相关的值(或QP),并且继续到“逐帧确定源-汇集匹配”218。详细信息如下面所述。

过程200可以包括“计算比特率相关的值的差异”220,其中,帧中所有视频序列的比特率相关的值彼此不同,使得任何视频序列可以是源或汇集。作为另一种选择,系统可以将匹配限制为仅某些视频序列(某些分辨率、某些比特率或视频序列的其他参数)。

过程200可以包括“根据满足至少一个标准的差异来确定可能的源序列的最小数目”222。这里,将比特率相关的值的差异与阈值(比如,它在比特率相关的值是QP时约为10)进行比较。已经确定,当QP范围为0至52时,具有大于约10的QP的视频序列在图像细节水平上具有如此显著的差异,以至于从一个视频序列到另一视频序列的编码控制不可使用。编码控制中的细节将丢失太多细节,或者将以太小的精度提供,以至于将压缩效率限制到应用于具有大幅减少或缩小图像内容的图像。该阈值可以通过实验来设定。

也如上所述,源视频序列的数目应最小化。因此,即使视频序列都可以1:1配对,但是由于源视频序列不能像在汇集处那样使用编码决策捷径,因此将花费更多的计算负载和更多的时间来编码,所以发现效率低下。因此,当多个视频序列都具有匹配阈值内的差异时,应将具有最可能汇集的视频序列保留为源视频序列,并且应尽可能将其他潜在的源视频序列更改为汇集视频序列。通过一种形式,这可以通过找到最多个通过阈值测试的对中的视频序列来完成。因此,假设视频序列A-E与序列1-5匹配,形成对A1、B2、C3、D4和E5。但是,假设序列A也与以下各项匹配:AB、AC、A2、A3,因此,应将A设置为视频序列B、C和1-3的源。通过一种形式,可以将源序列设置为与QP的平均数(mean)、中位数(median)或众数(mode)最接近。许多其他变体是可能的。注意,至少在执行比特率相关的值匹配和最小化源序列时,定义不同视频序列的分辨率和目标比特率值是什么并不重要。

如上所述,在操作216中,可以使用附加因子来确定汇集和源之间是否存在匹配。因此,过程200可以包括“以比特率相关的值的相对大小作为因子”224。已经发现,当源视频序列具有比汇集视频序列的QP更高的QP时,性能更好。在这种情况下,选择具有较高QP的视频序列作为源,因为将编码参数从具有更多细节的视频序列转换为具有更少细节的视频序列,比通过插值和其他类似的繁重计算负载技术从更少细节转换为更多细节更精确。因此,一旦源视频序列和汇集视频序列被QP初步匹配,则可以使用该考虑来确定哪个将是源,哪个将是汇集。通过另一个示例,当存在多个源视频序列时,汇集序列可以与同该汇集相比具有更高QP的源序列匹配,而不是与同该汇集相比具有更低QP的源序列匹配。替代地,在较低的QP是源视频序列的情况下,也可以使用相反的情况。但是,当最小化规则是优先考虑时,可以选择较低的QP作为源,这会减少源的数目,而QP仍在阈值之内。

作为另一个因子,过程200可以包括“以比特率相关的历史值作为因子”228。在这种情况下,作为与当前正在分析的帧上的QP的比较的替代或附加,在先前帧的QP之间也进行比较,或者除了比较在当前帧上的QP之外,还比较QP(或与比特率相关的)值的平均或其他组合。平均值或组合值可以针对一定数目的帧,例如至少2帧、5帧、10帧或50帧(仅举几个例子),也可以基于序列内容(例如在一场景内)或保持在例如图片组(GOP)内。可以包括该因子以通过更好地确保流之间的相似质量参考来减少任何单个离群QP的影响,从而将QP用作质量的代理。通过一个示例,当两个比较都通过(当前帧和先前帧的)阈值时,无论使用相同还是不同的阈值,源序列和汇集序列都将匹配。因此,先前帧的比特率相关的值的比较可以包括使用某一个或多个单个先前帧的各个比特率相关的值进行的比较,或者使用通过使用多个先前帧的多个比特率相关的值而计算的组合值进行的比较,或这两者。可以通过实验确定用于对先前帧的比特率相关的值或基于其的值进行比较的阈值。

过程200可以包括“以视觉质量值作为因子”226。这里,可以使用以下规则:当视频序列具有在图片组(GOP)的层次结构级别中提供不同帧类型的编码参数时,视频序列不应匹配。因此,在这种情况下,非参考B型视频序列仅应与其他非参考B型视频序列匹配。对于参考B型、P型、I型等,也是这样。这可以通过为每种帧类型提供代码或数字,并仅与具有相同帧类型代码的视频序列匹配来实现。如上所述,这也可以在先决条件操作206中用于确定是否应使用交叉通道引用。

过程200可以包括“以性能指标值作为因子”230。在此,通过确定是否满足目标实时帧速率(比如60fps)来考虑图像内容的复杂性,例如,每帧可使用16ms来编码。此操作查看帧编码时间并调整计算负载以更好地满足目标帧编码时间。因此,如果最后一帧被编码成17ms,其太长,则性能会变成更高优先级,并且质量可能会降级。在这种情况下,可以允许不匹配的更多汇集视频序列或单独视频序列,以减少源视频序列的数目。在这种情况下,可以存在如下值,从通过严格遵循最小化规则所确定的源视频序列的数量中减去该值来确定允许的源序列的数量。

过程200可以包括“以目标平衡值作为因子”231。这里,性能质量平衡值被设置成沿平衡设置值的范围,作为随机示例,例如1到10,其中1是最快的且细节或质量最少,而10是最慢的且细节或质量最多。该值可用于设置许多不同的编码器参数设置,并且对于范围上的每个值可以有一组预定的参数设置。在此,也可以根据平衡值来确定汇集和源视频序列的数目,并且可以为范围中的每个数目设置某一允许数目的源或汇集分配。

因此,QP比较(或差异)与最小化可以单独设置源-汇集匹配,或者可以使用这些其他因子的任意组合来设置或修改可能的源视频序列和汇集视频序列的数目,如通过比较和最小化来设置的数目。

如前所述,交叉通道引用是在逐帧的基础上确定的,因此可以在随后的帧上重新建立任何源-汇集对。因此,通过一种形式,不存在用于维持源-汇集对的帧到帧的连续性。但是,在替代形式中,当比特率相对稳定时(不运行过快和不运行过慢),在这种情况下,可以保持配对或匹配,并逐帧继续,直到比特率的条件改变为止。

一旦建立了源-汇集匹配,则过程200就可以包括“对源视频序列进行编码”232,并且源视频序列如上所述通过诸如HEVC之类的已知编码标准进行编码。结果是源视频序列的压缩图像数据以及用于对源视频序列进行编码的编码参数。编码参数可以包括用于多个不同编码阶段(比如预测和转换)的块和其他分区大小以及放置选择,以及编码器控制单元大小、帧间预测选择、帧内预测选择、预测模式替代等等,如上所述。

过程200可以包括“为每个源比特流生成(一个或多个)编码控制”234。然后,将编码参数转换为可以由匹配汇集视频序列使用的编码控制。上面引用的美国专利申请No.16/369,937提供了此种转换的细节。通过一个示例,基于块的编码参数被转换为用于以第二分辨率或第二比特率对视频进行编码的基于块的编码控制,使得编码控制包括以第一或第二分辨率在块级别对决策进行编码的限制。编码控制可以是本文讨论的任何控制,例如,约束仅检查帧间模式并取消一个或多个块的帧内模式的检查;约束仅检查帧内模式并取消一个或多个块的帧间模式的检查;约束仅检查一个或多个块的有限大小的编码单元;约束仅检查一个或多个块的有限大小的转换单元;或本文讨论的任何其他约束或控制。在实现方式中,转换包括缩放运动矢量。在实现方式中,用于编码控制的转换编码参数包括:当针对多个重叠块的预测模式决策是帧内模式时,设置对第一块仅检查帧内模式或当针对重叠块的预测模式决策是帧内模式和帧间模式的混合时,设置为对第一块无模式检查约束。在一些实现方式中,转换考虑了源序列帧处的编码单元或块大小以限制编码单元分区大小检查。在实现方式中,转换考虑了源是否具有零或非零转换单元划分深度,以将基于块的编码参数限制为源序列帧上的块的零或非零转换划分深度,或限制转换单元划分深度检查。在一些实现方式中,转换将运动估计搜索限制到接近源序列的运动矢量位置。在实现方式中,转换可以考虑源帧或汇集帧是用于帧间预测的参考帧还是非参考帧。

过程200可以包括“向汇集比特流提供(一个或多个)编码控制”236,其中所生成的编码控制由汇集视频序列的编码器单元访问以设置该汇集视频序列的编码参数。

过程200可以包括“使用(一个或多个)编码控制对汇集序列进行编码”238。这至少减少了某些编码器决策(例如,是否检查帧内选项以进行预测)的替代数目和/或减少了参考帧上的匹配搜索空间,例如,用于帧间预测运动估计搜索。编码器控制还可以设置特定的替代选择,并取消整体做出的决策。上面引用的美国专利申请No.16/369,937也提供了编码控制的此种应用的细节。

过程200可以包括“发送汇集比特流”240,然后将编码数据打包到比特流中并进行存储或发送。根据本公开的至少一些实现方式布置的示例比特流可以对应于图1的比特流134、136、138中的任何一个。例如,如上所讨论的,比特流每个都是独立的,因为不需要参考另一个比特流或另一个比特流的数据来从其生成解码后的视频。这样的比特流可以包括头部部分和数据部分。头部部分可以包括模式决策指示符,比如块或编码单元级模式决策指示符。模式决策指示符可以包括模式决策和视频块的分区。此外,数据部分可以包括块数据,其可以包括运动矢量、残余像素值等。在一些实现方式中,比特流是符合标准的比特流。值得注意的是,比特流可以被发送、存储等以用于最终由解码器解码。

如所述的,该过程重复进行,并可以包括询问“更多帧?”242,来获得包括多个视频序列的数据和每个序列的比特率相关的值的下一帧的数据244,并循环回到操作218以在下一帧将源与汇集进行匹配。该过程一直持续到到达最后一帧为止。

参考图3A至图3B,根据本公开的至少一些实现方式布置用于视频编码的示例过程300。过程300可以包括通常被均匀编号的一个或多个操作302-338。过程300可以形成视频编码过程的至少一部分。通过非限制性示例,过程300可以执行由本文所讨论的任何设备或系统(比如系统100(图1)和/或视频处理器系统或设备600(图6),以及神经网络源-汇集匹配系统或设备400(图4))执行的编码过程。此外,本文可以参考系统100、400和/或600中的任何一个来描述过程300。

过程300可以包括“获得未压缩的视频”302、“确定正在分析的当前帧是否满足交叉通道先决条件”304、“生成多个视频序列,每个视频序列具有不同分辨率、不同比特率或两者以及相同的视频帧”306、以及“获得每个视频序列的比特率相关的值”308。这些操作在此与上述过程200中相同或相似,因此在此无需重新描述。

过程300可以包括“确定匹配的源视频序列和汇集视频序列”310,并且这可以首先涉及“生成输入视频序列因子”312,其是上述视频序列特性。因此,与上面的过程200一样,这些因子可以包括用于“获得比特率相关的值的差异”314的操作,其可以是如上所述的QP、Qstep或指示比特率的其他值。除了获得每个视频序列的QP值之外,过程300然后可以获得所考虑的每个附加因子的值。这可以包括以下任何一个或多个。

这可以涉及“获得比特率相关的历史值”316,该值提供某些先前帧的QP(或其他比特率相关的值),或者诸如某些帧的QP平均数之类的组合值,无论是最后2个、5个、10个、50个等,并且可以使或不使当前帧QP作为平均值的贡献者。这可以是单个QP或单个QP值、或由下面描述的神经网络预期的多个QP值。

过程300可以包括“获得视觉质量值”318,其提供表示将由视频序列编码的帧类型以与其他视频序列匹配或回避其他视频序列的值。

另一个因子是使得过程300“获得比特率相关的值的相对大小的因子”320。相对性(例如,源和汇集之间的哪个QP较大)将没有值,并且可以是由神经网络考虑的自动因子。但是,开/关比特可以被设置为0/1并被输入,以使得神经网络知道是否考虑尝试将源限制为具有比其汇集高的QP。这也可以是比例数,另外或代替地,可以是开/关比特,以使得该因子的优先级可以被考虑,例如,其中5可以是高优先级,而1是低优先级,以及该因子是否覆盖另一个因子将取决于优先级评级。

过程300还可以包括“获得性能指标值”322和“获得目标平衡值”323,如以上已经在过程200中已经描述的。在这里,也可以提供单个数字,以显示相对于严格使用最小化规则确定的多个源视频序列,应使用多少额外或较少的源视频序列。

参考图4,过程300可以通过包括“将特性输入到神经网络”324来继续确定匹配。对于该操作,类似于匹配单元120的源-汇集匹配单元400可以包括视频序列输入集402、404、406和408。每个输入集包括上述一个或多个视频序列特性,其可以输入到机器学习算法或神经网络410。例如,比特率相关的值在输入集上显示为QP,一个或多个历史QP值可以用H表示,Q表示质量值,R表示相对值,P表示性能值,T表示目标平衡值,可以提供也可以不提供其中任意一个,其中这些值中的一些对于单个输入集402、404、406和/或408可以是不止一个值,如上面针对特定因子输入所解释的,并且只要神经网络410的输入节点期望多个值中的每个值即可。另外,输入集不一定总是需要具有彼此相同的因子。在输入集402、404、407和408处示出的神经网络410的输入节点可以被构造为期望某些视频序列的值、某些因子以及对于每个因子的某些数目的值,无论这些值在一视频序列与另一视频序列之间是否相同。

过程300还可以可选地包括“在源输入节点处输入源指示的输入数据”326。通过一种途径,可以进行确定源视频序列的初步操作,并且神经网络生成汇集视频序列并进行匹配,同时确认选择源视频序列或修改哪些视频序列将成为源视频序列。如上所述,这可以通过使用来自全局视频序列的第一帧或初始帧的默认或初始源序列来实现,或者可以在没有神经网络并且有或没有其他因子的情况下使用过程200来为神经网络410设置初始源视频序列。在这种情况下,源输入节点例如固定在集合402处,以接收针对正在分析的当前帧的先前识别的已知源视频序列403的数据。

通过一种形式,所有视频序列都被输入到如图所示的单个神经网络410。但是,在其他替代中,例如,当不需要跨不同分辨率或其他参数混合神经网络时,每个分辨率、比特率或其他参数都可以拥有自己的神经网络。否则,可以提供单独的神经网络,为其启用性能选项或预测所有帧的性能。

过程300然后可以包括“通过神经网络传播数据”328。通过一种形式,源-汇集匹配单元可以具有机器学习算法或神经网络410。可以训练神经网络410以输出源序列、汇集序列和/或通过使用上述因子进行的匹配的期望指示符。训练可以是被监督的、无监督的或某种组合,如通过实验所确定的。

神经网络的结构可以包括通过实验确定的任何层类型和数目、权重、偏差、激活函数等,并且可以包括一个或多个卷积层、递归层等,是否完全连接层,在一个以上的通道中传播等,是提供所需输出所必需的。这种神经网络可以通过软件和固定功能硬件的组合来实现,例如在具有乘法累加MAC电路的GPU或ISP上,但是可以替代地由CPU实现,如下文关于系统600所述。

过程300然后可以包括“输出匹配源视频序列和汇集视频序列的指示”329,其中神经网络410可以具有输出层412,这里示出了具有总共仅四个视频序列的小型系统的四个输出414。编码器可以根据需要处理更多的视频序列。每个输出或输出节点位置代表一个特定的视频序列(例如具有特定的分辨率和/或目标比特率的视频序列)。通过一种形式,当神经网络输出匹配的指示时,神经网络可以为每个视频序列提供二进制输出,其中第一位数字的第一二进制值为源提供0或为汇集提供1,其指示视频序列是否为源或汇集视频序列。输出节点的其余数字可以使每个数字表示其他视频序列(其中0是不匹配,但1指示匹配的汇集),或者可以具有汇集视频序列的值。因此,对于一个示例,如果输出节点编号为1到4,并且视频序列1是将视频序列4作为其唯一汇集视频序列的源视频序列,则输出编号可以是0001,指示源(第一位数字),并且接下来的三位数字分别代表视频序列2、3和4,使得只有视频序列4的最后一位数字指示源视频序列1的汇集视频序列。通过另一示例,为视频序列1保留的输出可以是0100,其中第一位数字表示视频序列1的源或汇集,而接下来的三位数字100为二进制的4,指示视频序列4是源视频序列1的汇集视频序列。在后一种情况下,每个视频序列可以具有用于每个可能匹配的输出节点,使得可以指示单个源的多个汇集,其中无匹配可以被指示为0000。许多其他变体是可能的。

通过其他替代方式,神经网络输出概率,并且手动源-汇集匹配计算单元416使用所述概率来确定或计算源和汇集分配和/或源-汇集匹配。例如,输出节点可以各自表示视频序列,并且输出值是视频序列为源视频序列的概率。在一些示例中,为每个可能的对匹配提供足够数目的输出节点,并且该概率指示该特定对的可能性。在这些情况下,手动计算单元可以使用该概率,其中在某个阈值之上,视频序列被视为是源或匹配对。通过其他示例,更高的优先级使源的数目最小化,同时仍保持源汇集配对的最低概率要求。例如,90%的源-汇集对,尽管概率非常高,但对于概率低于85%或80%的不同源仍然可以跳过,例如,当尽管概率较低,但源可以是更多汇集的匹配时,这仍然超过了概率阈值。

其余操作与过程200相同或相似。因此过程300可以包括“对源视频序列进行编码”330、“为每个源序列生成(一个或多个)编码控制”332、“提供(一个或多个)编码控制来编码汇集序列”334、“使用(一个或多个)编码控制对汇集视频序列进行编码”336、以及“提供所生成的比特流”338。

参考图5,根据本公开的至少一些实现方式布置用于视频编码的示例过程500。过程500可以包括一个或多个均匀编号的操作502-506。过程500可以形成视频编码过程的至少一部分。通过非限制性示例,过程500可以执行由本文所讨论的任何设备或系统(例如,系统100和/或视频处理器系统或设备600)执行的编码过程。此外,本文将参考图6的系统600来描述过程500。

图6是根据本公开的至少一些实现方式布置的用于视频编码的示例系统或设备600的说明图。如图6所示,系统600可以包括中央处理器601、视频处理器602和存储器603。视频处理器可选地可以具有解码器604,以及多序列生成单元605、预处理单元606、和交叉通道控制单元608。交叉通道控制单元608可具有源-汇集匹配单元610和编码控制单元612,类似于系统100上如此命名的那些单元。源-汇集匹配单元610可具有初始源确定单元626、匹配单元628、编码控制分配单元630、可选序列因子单元632、可选神经网络单元634和可选手动源-汇集匹配计算单元636,以执行源视频序列与汇集没视频序列的匹配或配对。视频处理器602还可以具有BRC 614(无论是如本文所示还是在每个编码单元中),以及针对N种不同编码的单独编码器模块(或编码单元)616、618、620、622至624,此处被示出为分别以分辨率4K、1080p、720p、480p至N编码。

在实现方式中,存储器603实现缓冲器102和132(图1)。此外,在系统600的示例中,存储器603可以存储视频数据或相关内容,例如帧数据、包括QP的比特率相关数据、包括执行包括上面提到的附加因子数据的参考操作的数据的任何其他交叉通道引用数据、神经网络(NN)数据、NN输入和输出数据、以及编码单位数据,比如编码单位数据、运动矢量数据、帧内模式决策数据、编码单位分割数据、转换单位分割深度数据、比特流数据、编码参数、编码控制和/或任何其他数据,如本文所讨论的。

如所示,在一些实现方式中,交叉通道控制单元608、编码控制单元612和同步编码单元616、618、620、622至624是经由视频处理器602实现的。在其他实现方式中,一个或多个经由中央处理器601或诸如图像处理器图形处理器之类的另一处理单元来实现这些单元中的一个或多个或其部分。

视频处理器602可以包括可以提供如本文所讨论的操作的任何数目和类型的视频、图像或图形处理单元。这样的操作可以经由软件或硬件或其组合来实现。例如,视频处理器602可以包括专用于处理从存储器603获得的帧、帧数据等的电路,并且可以包括用于操作神经网络单元634的软件和/或硬件。中央处理器601可以包括任何数目和类型的处理单元或模块,其可以为系统600提供控制和其他高级功能和/或提供本文所讨论的任何操作。存储器603可以是任何类型的存储器,比如易失性存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或非易失性存储器(例如,闪存等),等等。在非限制性示例中,存储器603可以由缓存存储器实现。

在实现方式中,经由执行单元(EU)来实现至少交叉通道控制单元608、编码控制单元612以及同步编码单元616、618、620、622、624中的一个或多个或其部分。EU可以包括例如可编程逻辑或电路,比如一个或多个逻辑核心,其可以提供各种各样的可编程逻辑功能。在实现方式中,交叉通道控制单元608、编码控制单元612和同步编码单元616、618、620、622至624的一个或多个或部分是经由诸如固定功能电路之类的专用硬件来实现的,包括例如,用来操作神经网络的MAC。固定功能电路可以包括专用逻辑或电路,并且可以提供一组固定功能入口点,这些入口可以映射到专用逻辑以用于固定目的或功能。

返回到过程500,过程500可以包括“生成视频的相同图像内容的多个视频序列,其中各个视频序列均具有不同的分辨率、不同的比特率或这两者、以及比特率相关的值”502。在此,当系统正在操作转码器时,可以向解码器604提供视频的非压缩图像数据。否则,相机或其他设备可能会提供未压缩的图像数据。无论哪种方式,多序列生成单元605都可以构建多个视频序列,每个视频序列如上所述具有不同的分辨率和/或比特率。无论在这种视频序列生成之前还是之后,预处理单元606都可以将视频序列的格式修改为与编码或特定编码单元616、618、620、622至624兼容。

过程500可以包括“至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列”504。通过一种形式,初始源视频序列可以由初始源确定单元626确定,并且作为用于视频序列中的第一帧或早期帧的默认设置,而另一方面,确定哪些视频序列是源,哪些是汇集,是在相同的一般操作中确定的,而不是串行地先确定一个再确定另一个。视频序列的比特率和分辨率可以是任何合适的值。在实现方式中,一个视频序列具有4K的分辨率和20Mbps的比特率。另外,视频序列可以具有与不同的编码单元616、618、620、622、624相对应的参数。每个编码单元可以处理多个比特率,例如1M、2M、4M和8M,仅举几个示例。

此后,匹配单元628从BRC 614以及从每个视频序列获得比特率相关的值,其中,比特率相关的值可以是一个选项的QP,并且与所有其他视频序列的QP进行比较。那些差异小于阈值的QP(例如,在一个示例中,当QP范围为0到52时,阈值约为10)被视为匹配。应用最小化规则以最小化源的数目,以减少系统的计算负载和时间消耗。这涉及为单个源视频序列提供尽可能多的汇集,以减少源视频序列的数目并增加汇集视频序列的数目。

虽然可以仅通过与比特率相关的比较和最小化规则来确定匹配,但是序列因子单元632也可以选择使用其他因子来确定视频序列是源还是汇集,并且应与另一个视频序列匹配。这包括相对大小因子、历史比特率相关的值因子、质量因子、性能因子和目标平衡因子,这些都已在上文中详细提及和描述。序列因子单元632可以收集应用这些因子所需的数据。通过一种形式,例如在过程200中,这些因子主要向上和向下调整源视频序列和汇集视频序列的允许数目,并且可以应用于所维持且允许的源视频序列和汇集视频序列的总数目以及匹配的列表。

通过过程300所描述的另一种形式,通过一个示例,视频序列的这些特性中的任何一个可以被输入到由神经网络单元634操作的神经网络。神经网络可以输出以下各项中的至少一项的指示符:哪些视频序列是源视频序列;哪些视频序列是汇集视频序列;以及哪些源视频序列和汇集视频序列形成匹配。神经网络的输入可以包括被认为匹配的每个视频序列的多个特性,并且至少包括比特率相关的值。如上所述,可以在各个视频序列的输入中表示附加因子,并且通过一种选择,可以将神经网络的至少一个或多个输入节点预留给先前被确定为源视频序列的一个或多个视频序列的数据。

关于神经网络的输出,通过一种途径,神经网络的输出层提供源-汇集匹配本身的指示。在这种情况下,神经网络可以使每个或单个输出节点代表视频序列中的特定视频序列,并输出如下二进制值:该二进制值具有一个0或1数字来指示源或汇集视频序列,而输出的其余数字指示匹配的视频序列。上面提供了详细信息。

通过另一种替代,神经网络在输出层中的每个输出节点代表两个特定视频序列之间的匹配,并且神经网络输出这些视频序列之间匹配的概率。然而,手动源-汇集匹配计算单元636使用概率来确定是否应使用匹配,例如通过将概率与阈值进行比较,或用于如上所述的其他此类操作。

然后,过程500可以包括“使用至少一个编码控制对至少一个汇集视频序列进行编码,该至少一个编码控制根据先前为匹配源视频序列建立的编码决策来约束用于对汇集视频序列进行编码的编码决策”506。所以,一旦确定了源-汇集匹配,就对源视频序列进行编码,并且编码控制单元612获得其编码参数,并将其转换为编码控制,然后将其提供给编码单元616至624以通过使用编码控制对汇集视频序列进行编码。如上所述,对于某些示例,这减少了编码决策的替代的数目,从而提高了性能,而对质量没有明显的影响。

使用编码控制以第二分辨率或第二比特率对汇集视频序列进行编码以生成第二比特流,其中第二比特流独立于第一比特流。如所讨论的,第一比特流和第二比特流是独立的,因为第一比特流和第二比特流不以任何方式依赖于彼此以对视频进行解码(例如,执行解码的实际操作而不是交叉引用数据来获得编码器设置)。

可以对于任何数目的视频、视频内容的片段、视频片段等串行或并行地重复过程500任意多次。如所讨论的,过程500可以提供对一条视频内容进行视频集群编码以生成多个独立的比特流,这些独立的比特流表示具有不同特性的编码,比如,帧分辨率、比特率、帧速率及其组合。

本文描述的系统的各种组件可以以软件、固件和/或硬件和/或其任意组合来实现。例如,本文讨论的系统或设备的各种组件可以至少部分地由计算片上系统(SoC)的硬件来提供,例如可以在诸如智能手机之类的计算机系统中找到。本领域技术人员可以认识到,本文所述的系统可以包括在相应附图中未示出的附加组件。例如,本文所讨论的系统可以包括为了清楚起见未示出的诸如比特流复用器或解复用器模块之类的附加组件。

虽然本文讨论的示例过程的实现可以包括以所示顺序进行所示的所有操作,但是本公开不限于此,并且在各种示例中,本文示例过程的实现可以仅包括所示操作、以与所示顺序不同的顺序执行的操作或其他操作的子集。

此外,可以响应于由一个或多个计算机程序产品提供的指令来进行本文讨论的任何一个或多个操作。这样的程序产品可以包括信号承载介质,该信号承载介质提供指令,该指令在例如由处理器执行时可以提供本文所述的功能。可以以一种或多种机器可读介质的任何形式来提供计算机程序产品。因此,例如,包括一个或多个图形处理单元或(多个)处理器核的处理器可以响应于通过一个或多个机器可读介质传送给处理器的程序代码和/或指令或指令集来进行本文示例过程的一个或多个框。通常,机器可读介质可以以程序代码和/或指令或指令集的形式传送软件,其可以使本文描述的任何设备和/或系统实现本文讨论的操作的至少一部分和/或本文讨论的设备、系统或任何模块或组件的任何部分。

如本文所述的任何实现方式中所使用的,术语“模块”是指被配置为提供本文所述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。该软件可以体现为软件包、代码和/或指令集或指令,并且如本文所述的任何实现方式中所使用的“硬件”可以例如以单个或任意组合包括硬接线电路、可编程电路、状态机器电路、固定功能电路、执行单元电路和/或存储由可编程电路执行的指令的固件。模块可以集体或单独地体现为形成较大系统的一部分的电路,例如,集成电路(IC)、片上系统(SoC)等。

图7是根据本公开的至少一些实现方式布置的示例系统700的说明图。在各种实现方式中,系统700可以是移动系统,但是系统700不限于此情境。例如,系统700可以被结合到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能手机、智能平板电脑或智能电视)、移动互联网设备(MID)、通讯设备、数据通信设备、相机(例如,傻瓜相机、超变焦相机、数码单反相机(DSLR))等等。

在各种实现方式中,系统700包括耦合至显示器720的平台702。平台702可以从诸如(一个或多个)内容服务设备730或(一个或多个)内容递送设备740或其他类似内容源的内容设备接收内容。包括一个或多个导航特征的导航控制器750可以用于与例如平台702和/或显示器720交互。下面将更详细地描述这些组件中的每一个。

在各种实现方式中,平台702可以包括芯片组705、处理器710、存储器712、天线713、存储装置714、图形子系统715、应用716和/或无线电718的任何组合。芯片组705可以提供处理器710、存储器712、存储装置714、图形子系统715、应用716和/或无线电718之间的互通。例如,芯片组705可以包括能够提供与存储装置714的互通的存储适配器(未示出)。

处理器710可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容的处理器、多核或任何其他微处理器或中央处理单元(CPU)。在各种实现方式中,处理器710可以是(一个或多个)双核处理器、(一个或多个)双核移动处理器等。

存储器712可以被实现为易失性存储设备,比如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。

存储装置714可以实现为非易失性存储设备,例如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、连接的存储设备、闪存、电池备份SDRAM(同步DRAM)和/或网络可访问存储设备。在各种实现方式中,例如,存储装置714可以包括用于在包括多个硬盘驱动器时增加对有价值的数字媒体的存储性能增强保护的技术。

图形子系统715可以对图像进行处理,例如静止图像或视频以进行显示。图形子系统715例如可以是图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以用于通信地耦合图形子系统715和显示器720。例如,该接口可以是高清多媒体接口、DisplayPort、无线HDMI和/或无线HD兼容技术中的任何一种。图形子系统715可以集成到处理器710或芯片组705中。在一些实现方式中,图形子系统715可以是通信耦合到芯片组705的独立设备。

本文描述的图形和/或视频处理技术可以在各种硬件体系结构中实现。例如,图形和/或视频功能可以集成在芯片组内。替代地,可以使用离散的图形和/或视频处理器。作为又一实现方式,图形和/或视频功能可以由包括多核处理器的通用处理器提供。在另外的实现方式中,可以在消费电子设备中实现这些功能。

无线电718可以包括一个或多个能够使用各种适当的无线通信技术来发送和接收信号的无线电。此类技术可能涉及跨一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(WLAN)、无线个人局域网(WPAN)、无线城市局域网(WMAN)、蜂窝网络和卫星网络。在通过这样的网络进行通信时,无线电718可以根据任何版本中的一个或多个适用标准来操作。

在各种实现方式中,显示器720可以包括任何电视类型的监视器或显示器。显示器720可以包括例如计算机显示屏、触摸屏显示器、视频监视器、类似电视的设备和/或电视机。显示器720可以是数字的和/或模拟的。在各种实现方式中,显示器720可以是全息显示器。而且,显示器720可以是可以接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉覆盖。在一个或多个软件应用716的控制下,平台702可以在显示器720上显示用户界面722。

在各种实现方式中,(一个或多个)内容服务设备730可以由任何国家、国际和/或独立服务托管,并且因此可以经由例如互联网访问平台702。(一个或多个)内容服务设备730可以耦合到平台702和/或显示器720。平台702和/或(一个或多个)内容服务设备730可以耦合到网络760,以通信(例如,发送和/或接收)媒体信息到网络760或来自网络760的信息。(一个或多个)内容递送设备740也可以耦合到平台702和/或显示器720。

在各种实现方式中,(一个或多个)内容服务设备730可以包括有线电视盒、个人计算机、网络、电话、能够传递数字信息和/或内容的支持互联网的设备或电器、以及能够经由网络760或直接在内容提供商与平台702和/显示器720之间单向或双向通信内容的任何其他类似设备。将理解的是,内容可以经由网络760与系统700和内容提供商中组件的任何一个进行单向和/或双向的通信。内容的示例可以包括任何媒体信息,包括例如,视频、音乐、医疗和游戏信息等。

(一个或多个)内容服务设备730可以接收内容,比如包括媒体信息、数字信息和/或其他内容的有线电视节目。内容提供商的示例可以包括任何有线或卫星电视或无线电或互联网内容提供商。提供的示例并不意味着以任何方式限制根据本公开的实现。

在各种实现方式中,平台702可以从具有一个或多个导航特征的导航控制器750接收控制信号。例如,导航功能可以用于与用户界面722进行交互。在各种实现方式中,导航可以是指示设备,该指示设备可以是允许用户将空间(例如,连续和多维)数据输入到计算机中的计算机硬件组件(具体地,人机接口设备)。许多系统,例如图形用户界面(GUI)、电视和监视器,都允许用户使用物理手势控制并将数据提供给计算机或电视。

可以通过移动在显示器上显示的指针、光标、聚焦环或其他视觉指示器来在显示器(例如显示器720)上复现导航功能的移动。例如,在软件应用716的控制下,位于导航上的导航特征可以例如被映射到在用户界面722上显示的虚拟导航特征。在各种实现方式中,可以不是单独的组件,而是可以集成到平台702和/或显示器720中。然而,本公开不限于本文示出或描述的元素或情境。

在各种实现方式中,例如,当被启用时,驱动器(未示出)可以包括使得用户能够在初始启动后通过触摸按钮像电视那样即刻开启和关闭平台702的技术。即使当平台被“关闭”时,程序逻辑也可以允许平台702将内容流到媒体适配器或(一个或多个)其他内容服务设备730或(一个或多个)内容递送设备740。另外,芯片组705可以包括对例如对(一个或多个)5.1环绕声音频和/或高清晰度7.1环绕声音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在各种实现方式中,图形驱动器可以包括快速外围组件互连(PCI)图形卡。

在各种实现方式中,系统700中所示的任何一个或多个组件可以被集成。例如,平台702和(一个或多个)内容服务设备730可以被集成,或者平台702和(一个或多个)内容递送设备740可以被集成,或者平台702、(一个或多个)内容服务设备730以及(一个或多个)内容递送设备740可以被集成。在各种实现方式中,平台702和显示器720可以是集成单元。例如,显示器720和(一个或多个)内容服务设备730可以被集成,或者显示器720和(一个或多个)内容递送设备740可以被集成。这些示例并不意味着限制本公开。

在各种实现方式中,系统700可以被实现为无线系统、有线系统或二者的组合。当被实现为无线系统时,系统700可以包括适合于通过无线共享介质通信的组件和接口,比如一个或多个天线、发送器、接收器、收发器、放大器、滤波器、控制逻辑等。无线共享媒介的示例可以包括无线频谱的一部分,例如RF频谱等。当被实现为有线系统时,系统700可以包括适合于通过有线通信介质通信的组件和接口,比如输入/输出(I/O)适配器、用于将I/O适配器与对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、光盘控制器、视频控制器、音频控制器等。有线通信介质的示例可以包括电线、电缆、金属引线、印刷电路板(PCB)、底板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。

平台702可以建立一个或多个逻辑或物理通道来通信信息。该信息可以包括媒体信息和控制信息。媒体信息可以指表示针对用户的内容的任何数据。内容的示例可以包括,例如,来自语音对话、视频会议、流视频、电子邮件(“电子邮件”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等的数据。来自语音对话的数据可以是例如语音信息、沉默时段、背景噪声、舒适噪声、音调等。控制信息可以指任何表示用于自动化系统的命令、指令或控制字的数据。例如,控制信息可用于通过系统路由媒体信息、或指示节点以预定方式处理媒体信息。然而,实现方式不限于图7中示出或描述的元素或情境。

如上所述,系统700可以体现为变化的物理样式或外形参数。图8示出了根据本公开的至少一些实现方式布置的示例性小外形参数设备800。在一些示例中,可以经由设备800来实现系统700。在其他示例中,可以经由设备800来实现系统100或其一部分。在各种实现方式中,例如,设备800可以被实现为具有无线能力的移动计算设备。移动计算设备可以指具有处理系统或供给电源(例如一个或多个电池)的任何设备。

移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超便携式计算机、平板电脑、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、智能设备(例如,智能电话、智能平板电脑或智能移动电视)、移动互联网设备(MID)、通讯设备、数据通信设备、相机等。

移动计算设备的示例还可以包括被布置为由人佩戴的计算机,比如手腕计算机、手指计算机、指环计算机、眼镜计算机、皮带扣计算机、臂环计算机、鞋子计算机、衣服计算机、以及其他可穿戴计算机。在各种实现方式中,例如,移动计算设备可实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。虽然作为示例一些实现方式可利用被实现为智能电话的移动计算设备来描述,但是可以理解也可利用其他无线移动计算设备来实现其他实现方式。实现方式不限于此情境。

如图8所示,设备800可以包括具有正面801和背面802的外壳。设备800包括显示器804、输入/输出(I/O)设备806和集成天线808。设备800还可以包括导航特征812。I/O设备806可以包括用于将信息输入到移动计算设备中的任何合适的I/O设备。I/O设备806的示例可以包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、麦克风、扬声器、语音识别设备和软件等。信息也可以通过麦克风(未示出)输入到设备800中,或者可以由语音识别设备数字化。如图所示,设备800可以包括相机805(例如,包括透镜、光圈和成像传感器)和集成到设备800的背面802(或其他位置)中的闪光灯810。在其他示例中,相机805和闪光灯810可以被集成到设备800的正面801中,或者可以提供正面和背面相机二者。相机805和闪光灯810可以是相机模块的组件,用于发源图像数据,该图像数据被处理成流视频,该流视频被输出到显示器804和/或例如经由天线808从设备800远程传送。。

可以使用硬件元件、软件元件或两者的组合来实现各种实现方式。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。确定使用硬件元件和/或软件元件实现的实现方式是否可以根据许多因子而变化,比如所需的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储资源、数据总线速度和其他设计或性能限制。

至少一个实现方式的一个或多个方面可由存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该逻辑当被机器读取时使得该机器制造逻辑来执行本文描述的技术。这种被称为IP核的表示可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制造机器中。

虽然已参考各种实现方式描述了本文记载的某些特征,但此描述并不打算被从限制意义上来解释。因此,对本公开所属领域的技术人员来说显而易见的对本文描述的实现方式的各种修改以及其他实现方式被认为属于本公开的精神和范围内。

在一个或多个第一实现方式中,用于视频编码的设备包括:存储器,该存储器用于存储至少一个视频;以及至少一个处理器,该至少一个处理器通信地耦合到存储器并被布置为通过以下步骤进行操作:生成视频的相同图像内容的多个视频序列,其中,各个视频序列分别具有不同的分辨率、不同的比特率或这两者,以及比特率相关的值;至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列;以及使用至少一个编码控制对至少一个汇集视频序列进行编码,编码控制根据先前为匹配的源视频序列建立的编码决策来约束用于对汇集视频序列进行编码的编码决策。

在一个或多个第二实现方式中,继第一实现方式,其中,比特率相关的值是量化参数(QP)或量化步长值。

在一个或多个第三实现方式中,继第一或第二实现方式,其中,至少一个处理器被布置为通过以下步骤进行操作:确定每个可能的视频序列对是否匹配,而不受相匹配的所述视频序列的分辨率的限制。

在一个或多个第四实现方式中,继第一至第三实现方式,其中,至少一个处理器被布置为通过以下步骤进行操作:至少在视频序列中的两个视频序列的所述比特率相关的值之间的差值小于阈值时,确定源视频序列与汇集视频序列匹配。

在一个或多个第五实现方式中,继第一至第四实现方式,其中,至少一个处理器被布置为通过以下步骤进行操作:至少在视频序列中的两个视频序列的所述比特率相关的值之间的差值小于阈值时,确定源视频序列与汇集视频序列匹配。

在一个或多个第六实现方式中,其中,至少一个视频序列不与任何其他视频序列匹配,而至少一个其他视频序列与另一视频序列匹配。

在一个或多个第七实现方式中,继第一至第六实现方式,其中,与这些比特率相关的值的平均数、中位数或众数最接近的一个视频序列的比特率相关的值被选择作为到多个其他汇集视频序列的源视频序列。

在一个或多个第八实现方式中,继第一实现方式至第七实现方式,其中,源视频序列和汇集视频序列的匹配在帧与帧之间发生改变,以使得仅相同帧上的视频序列被匹配,其中,视频序列包括帧的像素图像数据。

在一个或多个第九实现方式中,继第一至第八实现方式,其中,至少一个处理器被布置为通过根据以下至少一项确定源视频序列与汇集视频序列匹配来进行操作:视频序列具有的比特率相关的值是大于还是小于另一视频序列的比特率相关的值,相对于当前帧上正被分析的视频序列,至少一个先前帧上的相同视频序列的历史比特率相关的值,性能相关的值,该性能相关的值指示图像内容复杂性并取决于实际帧编码速度与目标帧编码速度的对比,质量相关的值,该质量相关的值取决于帧在编码图片组(GOP)帧类型层次结构内的类型,以及目标质量性能平衡值,该目标质量性能平衡值考虑了从(1)最快但最不准确到(2)最慢但最准确的目标平衡尺度。

在第一至第十实现方式中,继第一实现方式至第九实现方式,其中,至少一个处理器被布置为通过神经网络进行操作,该神经网络被布置为接收每个视频序列的至少包括比特率相关的值的特性,以确定以下至少一项:哪些视频序列是源视频序列、哪些视频序列是汇集视频序列、以及哪些源视频序列和汇集视频序列形成匹配。

通过一个或多个第十一实现方式,一种用于视频编码的方法包括:生成视频的相同图像内容的多个视频序列,其中,各个视频序列分别具有不同的分辨率、不同的比特率或这两者,以及比特率相关的值;至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列;以及使用至少一个编码控制对至少一个汇集视频序列进行编码,编码控制根据先前为匹配的源视频序列建立的编码决策来约束用于对汇集视频序列进行编码的编码决策。

通过一个或多个第十二实现方式中,并且继第十一实现方式,其中,基于比特率的值是量化参数或量化步长值。

通过一个或多个第十三实现方式,并且继第十一或第十二实现方式,该方法包括最小化源视频序列的数目,这包括:当视频序列之一具有的比特率相关的值在多个其他视频序列的比特率相关的值的阈值之内时,向至少一个源视频序列提供多个匹配的汇集视频序列。

通过一个或多个第十四实现方式中,并继第十一至第十三实现方式中的任何一个实现方式,该方法包括:根据所述比特率相关的值的相对大小,确定源视频序列与汇集视频序列匹配,以使得根据至少一个视频序列的所述比特率相关的值是否大于至少另一视频序列的所述比特率相关的值来找到匹配。

通过一个或多个第十五实现方式,继第十一或第十四实现方式,其中,视频序列和比特率相关的值是关于正被分析的当前帧的,并且方法包括:根据先前帧的比特率相关的值和从先前帧延伸到正被分析的当前帧的相同视频序列的比特率相关的值,来确定源视频序列与汇集视频序列匹配。

通过一个或多个第十六实现方式,并且继第十一至第十五实现方式中的任何一个,其中,该方法包括:根据质量相关的值来确定源视频序列与汇集视频序列匹配,质量相关的值取决于帧在编码图片组(GOP)帧类型层次结构内类型。

通过一个或多个第十七实现方式,并且继第十一至第十六实现方式中的任何一个,其中,该方法包括:至少部分地根据性能相关的值来确定源视频序列与汇集视频序列匹配,性能相关的值指示图像内容复杂性并取决于实际帧编码速率与目标帧编码速率的对比。

通过一个或多个第十八实现方式,并且继第十一至第十七实现方式中的任一个,其中,该方法包括:还根据目标尺度值来确定源视频序列与汇集视频序列匹配,目标尺度值指示目标质量性能平衡值,该目标质量性能平衡值考虑了从(1)最快但最不准确到(2)最慢但最准确的目标平衡尺度。

通过一个或多个第十九实现方式,至少一种非暂态计算机可读介质,其上存储有多个指令,该多个指令响应于被执行,使得计算设备通过以下步骤进行操作:生成视频的相同图像内容的多个视频序列,其中,各个视频序列分别具有不同的分辨率、不同的比特率或这两者,以及比特率相关的值;至少根据比特率相关的值之间的比较,确定多个视频序列是否包括与多个视频序列中的至少一个汇集视频序列匹配的至少一个源视频序列;以及使用至少一个编码控制对至少一个汇集视频序列进行编码,编码控制根据先前为匹配的源视频序列建立的编码决策来约束用于对所述汇集视频序列进行编码的编码决策。

通过一个或多个第二十个实现方式,并且继第十九个实现方式,其中,指令使得计算设备通过确定所述匹配来进行操作,确定匹配包括使用神经网络接收视频序列表征作为输入并输出关于以下至少一项的指示符:哪些视频序列是源视频序列、哪些视频序列是汇集视频序列、以及哪些源视频序列和汇集视频序列形成匹配。

通过一个或多个第二十一实现方式,并且继第十九或第二十实现方式,其中,到神经网络的输入包括被认为是匹配的并且至少包括比特率相关的值的每个视频序列的多个表征。

通过一个或多个第二十二个实现方式,并且继第十九至第二十一个实现方式中的任何一个,其中,到神经网络的输入节点中的至少一个或多个被预留给先前被确定为源视频序列的一个或多个视频序列的数据。

通过一个或多个第二十三实现方式,并且继十九至二十二实现方式中任一项实现方式,其中,神经网络具有代表视频序列中的特定视频序列的输出,并输出如下二进制值:该二进制值具有一个0或1数字来指示源或汇集视频序列,而输出的其余数字指示匹配的视频序列。

通过一个或多个第二十四实现方式,并且继第十九至第二十二实现方式中的任何一个,其中,神经网络使得输出层中的每个输出节点代表两个特定视频序列之间的匹配,并且神经网络输出这些视频序列之间匹配的概率;该方法包括通过使用这些概率来确定源-汇集匹配。

通过一个或多个第二十五实现方式,并且继在第十九至第二十四实现方式中的任何一个,其中,编码控制包括以下中的至少一项:约束仅检查帧间模式并取消对帧内模式的检查;约束仅检查帧内模式并取消对帧间模式的检查;约束仅检查有限大小的编码单元;以及约束仅检查有限大小的转换单元。

通过一个或多个第二十六实现方式中,一种设备或系统包括存储器和处理器,以执行根据以上实现方式中任一个的方法。

通过一个或多个第二十七实现方式,至少一种机器可读介质包括多个指令,该多个指令响应于在计算设备上被执行而使得该计算设备执行根据以上实现方式中任一个的方法。

通过一个或多个第二十八实现方式,一种设备可以包括用于执行根据以上实现方式中任一个的方法的装置。

将认识到,这些实现方式不限于如此描述的实现方式,而是可以在不脱离所附权利要求的范围的情况下带有修改和变更地实践。例如,以上实现可以包括特征的特定组合。然而,以上实现方式在这方面不受限制,并且在各种实现方式中,以上实现方式可以包括仅进行这种特征的子集,进行这种特征的不同顺序,进行这种特征的不同组合,和/或进行除了明确列出的特征之外的其他特征。因此,应参考所附权利要求以及这些权利要求所享有的全部等同范围,来确定实现方式的范围。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:适用运载火箭的多通道视频图像的均衡编码方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类