具有多个接收器的视频流的关键帧削弱的制作方法

文档序号:18192460发布日期:2019-07-17 05:38阅读:179来源:国知局
具有多个接收器的视频流的关键帧削弱的制作方法

本公开涉及视频编码。



背景技术:

关键帧被添加至视频流,以便使流开始被流送,用以改变关键属性(如分辨率),在丢失之后进行重新同步,或允许额外的接收器开始消费流。关键帧不依赖于视频序列中的其他帧,并且在这样做时被限制于压缩技术的一个子集,该子集无法实现与帧间依赖性相同程度的压缩效率。在具有受限带宽的低延时信道中,关键帧的大小将被保持与典型帧相当,要不然其无法在没有延迟的情况下传送。这会导致质量相对于典型帧下降的低质量关键帧。在低延时双向视频通信中,通常在现有接收者或新接收者请求关键帧时发送关键帧。

关键帧的请求者通常不像消费流的他者那样对这种质量损失敏感。当第n个参与者开始消费与他者共享的流时,该参与者从零开始并且几乎不会受到低质量的第一帧的影响。但是,已进行查看该流的n-1个参与者将看到由关键帧引起的短期质量损失。类似地,经历过分组丢失的参与者将看到由所请求的最终关键帧修复的损坏的流(在没有因冻结而被隐藏的情况下)。其他参与者将经历暂时劣化,没有增益。

附图说明

图1是根据一个示例实施例的系统的框图,其中公共视频流被发送到多个接收器(解码器),诸如视频会议或协作会话中的情况,并且其中可以采用关键帧削弱技术。

图2是总地描绘根据一个示例实施例的关键帧削弱技术的示图。

图3是描绘根据一个示例实施例的关键帧削弱技术的逐帧操作的示图。

图4是描绘根据一个示例实施例的在视频编码器处执行的用于关键帧削弱技术的操作的流程图。

图5是描绘根据一个示例实施例的在视频解码器处执行的用于关键帧削弱技术的操作的流程图。

图6是根据一个示例实施例的被配置为使用本文给出的关键帧削弱技术的视频编码器的框图。

图7是根据一个示例实施例的被配置为使用本文给出的关键帧削弱技术的视频解码器的框图。

图8是根据一个示例实施例的其中可以执行视频编码和/或视频解码操作的计算系统或装置的框图。

具体实施方式

概览

在独立权利要求中阐述了本发明的各方面,并且在从属权利要求中阐述了优选特征。一个方面的特征可以单独应用于每个方面或者与其他方面组合应用。

在一个实施例中,视频编码器生成表示包括关键帧的视频帧序列的编码比特流。编码器生成供接收该编码比特流的解码器使用的信息,以使该解码器能够根据视频帧序列中在关键帧之前的关键帧前视频帧来生成显示帧,并将该信息包括在关键帧中。该信息被包括在关键帧中,并被包括在关键帧之后的编码器确定数量的帧中。

在另一实施例中,视频解码器从编码器接收表示包括关键帧的视频帧序列的编码比特流。该关键帧包括使解码器能够根据在关键帧之前接收的关键帧前视频帧来生成显示帧的信息。解码器使用关键帧前视频帧、包括在关键帧中的信息以及包括在关键帧之后的编码器确定数量的解码帧中的信息来生成显示帧。

本文还描述了对应的方法和装置,包括网络节点、计算机程序、计算机程序产品、计算机可读介质和在有形介质上编码的用于实现系统的逻辑。

详细描述

首先参考图1。图1示出了系统10,其中多个视频端点20(1)-20(n)正在参与会话,诸如协作或会议会话,在会话期间由协作/会议服务器30通过网络40发送视频流50。视频流50可以源自协作/会议服务器30内的编码器,或源自发送视频端点(视频端点20(1)-20(n)中的任何一个)内的编码器,发送视频端点将流发送到协作/会议服务器30,以转发到一个或多个接收端点。例如,如图1所示,视频端点20(1)可以发起视频流50,并且协作/会议服务器30将其转发到视频端点20(2)-20(n)。由于实时协作或会议会话的性质,视频流是低延时视频流,以使会议/协作会话的参与者/用户在会话期间看到良好质量视频。视频端点20(1)-20(n)可以采用如下形式:台式计算机,膝上型计算机,平板计算机,智能电话,视频会议端点设备,或者现在已知或以后开发的可以参与视频通信会话的任何其他设备。协作/会议服务器30还可以将视频流50转发到其他协作/会议服务器,这些其他协作/会议服务器分别将接收到的流转发到一组接收视频端点。

图1还示出了视频流50可包括关键帧52。如下所述,关键帧52可以由视频流的源(诸如视频端点20(1)或服务器30)生成。

越来越多地,低延时视频被提供给多个接收器,诸如在图1所示的应用环境(其中使用切换和共享的编码资源)中。因此,关键帧在视频会议中的某些情况下是有用的。它们根据接收者请求或根据发送者决定而被附带地使用。术语“关键帧”指的是将在不参考任何其他帧的情况下被解码以供显示的帧。本领域中已知有用于“关键帧”的若干术语,包括但不限于:(瞬时)解码器刷新(idr)帧、帧内(i帧)等。

因此,本文给出的技术涉及有效地“破坏”关键帧的传统定义(其中解码器自动清除其先前帧的存储器),将视频流的“状态”的所有权改为属于编码器,当关键帧被发送到解码器时,编码器通知/控制解码器应该做什么(例如,而不是“忘记”在关键帧之前的视频帧)。

关键帧还用于视频到多个并发接收器的广播和流式使用,通常以规则间隔被插入以使接收器能够加入视频流(信道切换)或使得能够在一系列比特率(动态流送)的预编码视频序列中调整操作点。尽管这些应用允许比双向通信更高的延时,并且因此可以容忍更大的关键帧大小,但是使用比典型帧大得多的比特率来以规则间隔编码关键帧会对总体压缩效率施加应潜在地被减轻的成本。因此,本文给出的技术允许使用“更便宜”(更低成本)的关键帧,这对于总比特率是有利的。

如上所述,传统上,关键帧强制执行“解码器刷新”,从而使解码器丢弃所有状态,包括通常将根据其导出后续帧的过去帧(在非关键帧编码中)。通过跨接收器的请求的聚合速率,关键帧可以以更高的入射率被发送。例如,关键帧可以用于入口点(加入流)、流丢失之后的重新同步(流恢复)、包括如因速率适配而变得必要或可能的分辨率改变(流调整大小)、以及视图(流视图)的变化,即使传输机制(例如,实时传输协议(rtp))是恒定的。在多个可能的编码源中进行选择时(包括在对网桥和多相机端点进行转码时)可能出现这种视图场景的变化。关键帧将被所有接收器接收,即使许多那些接收器(“附带关键帧”)并不需要,这是对于接收器中的一个(或子集)而言在入口点、重新同步或分辨率改变时的情况。

在内容不连续(加入、视图更改)时接收的关键帧和在连续内容(重新同步、分辨率改变、和附带)期间接收的关键帧之间加以区分。与当接收器检测到呈现给它的场景的实质性变化时相比,低质量关键帧对用户体验的负面影响对连续内容而言要大得多——视觉连续性大大提高了灵敏度。因此,非常希望通过使低延时关键帧不那么明显来削弱关键帧对连续内容体验的影响。

给定多个接收器和上面的视觉连续性问题,通常情况是接收器具有来自关键帧之前的数据,其是完全有效的,并且可以用于改进关键帧处和以后(之后)的体验。本文给出了如下技术,其限制为了满足多接收器(诸如用于协作/会议应用的多流视频)情况下的其他接收器的需要而生成的关键帧对无损接收器的视觉影响。当针对发送到多个接收器(例如,视频端点20(1)-20(n))的低延时视频流在序列中间生成关键帧时,跨关键帧事件的视频流的视觉质量对多数接收器而言都可以得到改进。对于那些在关键帧之前具有合适帧的接收器,这可以通过使用来自关键帧之前的(一个或多个帧)的信息来改进关键帧和后续帧的视觉质量来完成。

例如,假设视频端点20(n)已经历了丢失事件或加入会议/协作会话。在这种情况下,协作服务器30生成关键帧52作为比特流的一部分,结果,关键帧52被发送到所有视频端点20(1)-20(n)。在视频端点20(n)可以使用关键帧来开始从视频流生成显示数据的同时,其他接收器中的一个或多个(例如,视频端点20(1)、20(2)等)可以使用与其在关键帧52之前接收的一个或多个帧相关联的数据来改进从关键帧的时间点起的视频的显示。

现在参考图2。该解决方案提出通过以下规范来扩展现有或提出的视频压缩方案:a)与所考虑的压缩方案的规范完全一致地解码的“同步层”;b)一些解码器可以确信适合于显示并且就使用而言比同步层更好的“显示层”;c)当与同步层组合时用于形成显示层的“改进层”。

同步层是从编码器发送到解码器的比特流,并且在大多数情况下,由一组规则(例如,视频编解码器标准)控制,这些规则广泛适用于各种类型的接收器。显示层是从比特流导出的,并且是在显示设备上向用户显示的内容。解码器(在接收器设备处)可以增强解码后的帧以改进/改变所显示的内容。改进层是从在关键帧之前接收的参考数据导出的,并且在包括和跟随关键帧的少(编码器确定的)数连续帧中与同步层组合。

在一些接收器(本文中称为“启用的接收器”)支持改进和显示层机制(除了同步层之外)并且一些接收器仅支持同步层(本文中称为“未启用的接收器”)的情况下,使用如本文所述的改进层来实现提供比单独的同步层更好的体验的显示层是可能的。那些仅支持同步层的接收器将获得低质量、低延迟关键帧的正常体验。本文给出的技术在可以执行关键帧削弱技术的启用接收器和无法执行关键帧削弱技术的未启用接收器的混合场景下工作。换句话说,信息作为关键帧的补充语法而被包括在关键帧内,并且信息作为解码帧的补充语法而被包括在编码器确定数量的解码帧(在关键帧之后)中的每一个内,所以能够解释补充语法的解码器和不能解释补充语法的解码器都可以解码关键帧和编码器确定数量的解码帧。该补充语法指示启用的解码器/启用的接收器使用包含在关键帧前视频帧中的数据来生成改进层帧,以及解码器如何将改进层帧与对应的解码帧组合以产生显示帧。

在图2中,关键帧(kf)是frame(n)(fr(n))。来自前一帧(例如fr(n-k),本文中也称为关键帧前视频帧)的信息用于生成改进数据,以改进那些具有fr(n-k)的接收器的表观连续性。那些没有fr(n-k)的接收器仅可以显示从同步层产生的内容。

在改进数据中包含的新信息使用最小的附加带宽,以避免引起传输的延时(在这种情况下,可能已经使用了更高质量的关键帧)。它被包括作为关键帧的补充语法和编码器确定数量的帧的补充语法,以便在有限数量的帧(例如,在5到10个帧内)内临时使用,在那些有限数量的帧之后最终收敛于同步层。也就是说,对于i=0..5(例如),disp(n+i)-sync(n+i)→0,其中disp()是显示数据并且sync()是同步层(比特流)。

改进数据可以通过由地图补充的正常p帧语法的子集来体现,该地图指示是(a)根据关键帧前视频帧的内容在帧的区域/块中应用任何改进(可选地与由编码器指定的权重一起),还是(b)按原样使用关键帧的基础层。换句话说,改进数据是指示使用或不使用改进的补充语法,其粒度在若干帧内最终收敛到基础层(同步层)。编码器利用关键帧和该关键帧之后的编码器确定数量的帧来发送该补充语法。作为示例,新信息可以是相对于fr(n-k)的运动补偿。它可以是简洁的;否则它扩展关键帧和后续帧。改进帧imp(n+i)是从帧(n-k)(通常k=1,关键帧之前的帧,但是在存在可伸缩视频编码(svc)的情况下,它可以是基础层帧)导出的。用于生成改进帧的在关键帧之前的帧可能不是紧接在关键帧之前的帧。另外,可以使用关键帧之前的多于一个帧来生成改进帧。

新的/补充语法将被添加到关键帧以及关键帧之后的编码器确定数量的帧以用于“改进参数”,“改进参数”用于生成“改进层”帧,如图2所示。将改进层帧与同步层帧组合,诸如:

对于j<n,disp(n+i)=w(i)*sync(n+i)+(1-w(i))*imp(n+i),

disp(j)=sync(j),

其中w(i)是每个同步层和改进层帧中的同位样本的组合的权重。

如在以下示例中描述,可以以各种方式扩展sync(n+i)和imp(n+i)的组合,包括允许其中imp(i)(其依赖于对更早的帧sync(n-k)的参考)不描述应当在disp(n+i)中编码的内容(诸如首次在该帧中出现的对象)的情况。

参考帧的编码依赖性保持在同步层;改进和显示层帧仅用于显示,不是用于参考。“改进过程”是暂时的,并且最后,接收器将生成同步层帧,无论它们是否参与了改进过程。

重要的是,这改变了关键帧处的解码器重置:缓冲器保留仅供改进层使用的参考。只有同步层帧可以永远保留在参考缓冲器中,并且在重建同步层帧时仅可以参考从关键帧起的帧。

关于是(i)生成显示层帧还是(ii)显示同步层数据,用信号通知接收器(解码器)。也就是说,将确保接收器具有正确且精确的先前帧,根据该帧来增强/隐藏关键帧。瞬时解码器刷新(idr)前参考帧用于生成根据同步层计算的校验和,并与改进数据一起被发送。更具体而言,编码器根据关键帧前视频帧(将从中导出改进数据)来计算校验和,并且编码器将该校验和包括在关键帧之后发送的视频帧中。接收器/解码器使用该校验和来确保关键帧前视频帧在用于导出改进数据之前是正确/有效的。这种正确性通常被理解为对任何帧间依赖性而言是隐含的,但是在这种情况下,帧间依赖性具体应用于已知包括分组丢失的情况,所以校验和的附加安全性是可取的。如果解码器确定它根据关键帧前视频帧计算的校验和与编码器计算的校验和(由编码器利用关键帧之后的帧在补充语法中发送)相匹配,则解码器知道它应该使用显示增强(也就是说,它应该使用关于先前帧的改进数据)。

现在参考图3,以进一步描述这些技术。图3示出了由时间实例n-2、n-1、n、n+1、n+2、n+3、n+4、n+5和n+6处的帧s(n-2)、s(n-1)、s(n)、s(n+1)、s(n+2)、s(n+3)、s(n+4)、s(n+5)和s(n+6)组成的比特流——同步层。关键帧出现在时间n;帧s(n)是关键帧。在图3中指示出这些帧的编码大小和质量的代表性度量。值得注意的是,关键帧s(n)比同步层中的其他帧大得多,但是具有比在前帧更差的质量。

改进序列在帧s(n)处开始,并且在关键帧s(n)之后继续编码器确定数量的帧,直到帧s(n+4)为止。能够执行改进技术的接收器(称为“启用”的接收器或解码器)基于同步层中的帧(例如,在关键帧s(n)之前的s(n-1))来生成改进帧i(n)。类似地,如在参考数字60(0)、60(1)、60(2)、60(3)和60(4)处示出,根据帧s(n-1)来生成改进帧i(n+1)、i(n+2)、i(n+3)和i(n+4)。然后,例如使用如图3中的加法“+”指示符所指示的组合,根据改进层帧和同步层帧来生成显示层。如显示帧d(n)、d(n+1)、d(n+2)、d(n+3)、d(n+4)和d(n+5)的阴影所示,显示帧最终收敛到同步层帧,使得d(n+5)与s(n+5)相同。

在图3的示例中,编码器对关键帧s(n)进行编码以包括所有接收器(启用的接收器和未启用的接收器)都可以解码的普通关键帧。然而,此外,编码器使用关键帧前视频帧作为参考(例如,帧s(n-1))来编码启用接收器可以理解的补充信息,以生成改进帧i(n)。补充信息(上述改进数据)是在参考数字70(0)处示出的与关键帧s(n)一起被发送的补充语法,启用的接收器使用该补充语法来例如使用运动矢量、残差等基于帧s(n-1)生成改进帧i(n)。因此,关键帧s(n)具有用于完成关键帧的正常编码语法,加上通知解码器(启用的接收器)如何形成改进帧i(n)以及如何将改进帧i(n)与关键帧s(n)组合以生成显示帧d(n)的语法。作为示例,用于指示解码器如何构建改进帧i(n)的补充信息的补充语法可被包含在(h.264视频编解码器标准的)补充增强信息中,其中专有用户消息可以用于定义用于执行各种功能中的任何功能的语法,包括用于构建如本文所述的改进帧的语法。此外,可以在帧的每个块的基础上包括标志,以指示解码器是否应该仅使用正常的关键帧数据,或者是否存在某一要显示的新信息并且因此解码器应该使用块的特殊语法来显示该新信息。

与关键帧之后的编码器确定数量的帧(例如,帧s(n+1)、s(n+2)、s(n+3)和s(n+4))一起发送补充语法,以允许启用的解码器根据前关键帧s(n-l)生成改进帧i(n+1)、i(n+2)、i(n+3)和i(n+4),并且补充语法可以分别指定如何将改进帧i(n+1)、i(n+2)、i(n+3)和i(n+4)与对应的同步层帧s(n+1)、s(n+2)、s(n+3)和s(n+4)组合以生成显示帧d(n+1)、d(n+2)、d(n+3)和d(n+4)。因此,如图3所示,关键帧帧s(n)包括如上所述的补充语法10(0),并且关键帧s(n)之后的编码器确定数量的帧(例如,s(n+1)、s(n+2)、s(n+3)和s(n+4))将各自包括它们否则通常将包括的正常数据,加上描述如何关于/使用前关键帧s(n-1)生成对应改进帧的相应补充语法。改进序列中的关键帧后帧s(n+1)、s(n+2)、s(n+3)和s(n+4)的补充语法分别在参考数字70(1)、70(2)、70(3)和70(4)处示出。因此,关键帧s(n)的附加语法将不同于帧s(n+1)的附加语法,帧s(n+1)的附加语法将不同于帧s(n+2)的附加语法,对于关键帧之后的编码器确定数量的帧依此类推。为关键帧之后的编码器确定数量的帧中的每一个添加的补充语法使启用的解码器通过参考指定的关键帧前视频帧来生成“替代”版本的帧,其被表示为改进帧。

在编码过程期间,编码器将执行与解码器最终将从关键帧帧生成改进帧的相同过程,并且这样做,编码器将确定关键帧之外将包括多少帧。在同步层帧和显示层帧之间发生足够收敛之前的附加语法。在图1的示例中在图3中,帧s(n+4)是改进序列中的最后一帧,并且帧s(n+5)和s(n+6)不具有任何补充语法。

在图3中,并且如上所述,“启用的接收器或解码器”是那些能够解释关键帧中的特殊语法以根据关键帧之前的一个或多个视频帧来生成改进数据的接收器或解码器。相比之下,“未启用的接收器或解码器”是那些不能解释关键帧中的语法以根据关键帧之前的一个或多个视频帧来生成改进数据的接收器或解码器。例如,“改进过程”可以与现有的基本视频压缩方法结合,并且那些仅支持基本视频压缩方法的接收器对于改进是“未启用”的。还存在支持改进机制但未接收到改进所基于的一个或多个先前帧的接收器,并且这些接收器被称为不合格的接收器或解码器。其他方面的启用的接收器或解码器可能没“有资格”使用关键帧前内容来执行改进,这是因为:在接收到关键帧时的给定时间点,它没有通过上述校验和测试的关键帧前帧。

有可以采用的几种类型的改进。一种是简单地根据指定参考(没有残差)执行运动补偿。另一种是将改进数据与同步层数据(比特流)混合,并隐藏任何运动补偿的不连续性。使用相对于前一参考帧的运动矢量来生成环路外改进层,可以应用运动补偿来隐藏关键帧的显示。以这种方式,具有连续性的接收器可以改进所显示的图像,同时在所有接收器(包括那些不能访问正确的先前(关键帧前)帧的接收器)中保持解码器状态一致。

另一个变型是生成校正层。校正层涉及也依赖于其他先前的改进帧而不是仅依赖于关键帧前基础层帧的改进帧。因此,如从帧i(n+1)到帧i(n)的虚线箭头所示,在图3中的参考数字80处,例如,通过相对于作为参考的帧i(n)使用本文描述的任何技术,改进帧i(n+1)可以依赖于帧i(n)。这可以适用于随后的改进帧i(n)、i(n+1)和i(n+2)、i(n+3)等,其可以相对于它们的一个或多个先前改进帧而被导出。

改进层示例

改进层帧imp(n+i)可以由若干技术中的任何技术形成或使用若干技术中的任何技术来形成。

i)描述“改进数据”的语法,其可以用于根据同步层中的先前解码帧sync(n-k)来生成imp(n+i)。

ii)描述来自sync(n-k)的运动补偿的改进数据,即改进数据由可适用于编码帧的小区域(例如宏块或编码单元)的运动矢量组成,与使用中的视频编解码器的同步层运动补偿类似。

iii)改进数据包括新的块类型“未改进”,意味着它是透明的,并且将仅从同步层帧中获取该区域的显示层。

iv)在层之间(例如,如上所述的线性组合)和在边界处混合的方法,无论何处不使用一层(以上的iii)。这在帧间和帧内预测块之间的边界处可能是有用的,因此,这可以通过传统的去块技术(即编解码器的规则的任何原生内容)相当好地解决。

v)修改解码器刷新时的解码图像缓冲器行为,以便不使所有参考帧无效,而是将识别出的一个或多个帧移动到长期参考图像缓冲器,以及对该缓冲器进行持续编码器管理直到改进过程完成为止。

vi)用于生成和使用显示层的解码器侧资格取得。这是基于编码器计算的改进帧所将基于的并与改进数据一起发送的参考帧的校验和。在解码器中计算由改进数据指示的参考帧的对应校验和,并且如果它们匹配,则经由改进层帧依赖于该参考帧的显示数据对于使用是有效的。

vii)改进数据中对每个改进层帧的加权的指示,以及对终止改进处理并且显示和同步层已经收敛的点的指示。然后终止该过程,并且仅使用基本编解码器算法来生成所显示的帧,直到出现另一个关键帧为止。可以应用更复杂的时间滤波算法来组合序列中的这两个帧和其他帧,但是加权平均可以是基线。

viii)修改解码器状态模型以在比特流中包括keyframe_index(关键帧_索引),以及保留previous_keyframe_index(先前_关键帧_索引)。如果解码器接收到具有使其keyframe_index递增的索引的关键帧,则它具有流连续性,并且应该考虑改进——校验和。如果关键帧索引与“previous_keyframe_counter+l”不匹配,则它将仅发出同步流。通过每个接收到的keyframe_index来更新previous_keyframe_index。

ix)在编码器或解码器参考缓冲器中仅保留同步层帧。解码器发出显示层帧,仅供显示使用。编码器负责是否生成改进数据以及如何应用改进数据。为了得到改进数据,编码器计算有少量增加,并且为了形成改进层并与同步层组合以形成显示层(但这是严格瞬态的),解码器侧计算和带宽有增加。

如上所述,从编码器提供给解码器以支持关键帧削弱的附加信息(“改进数据”)(例如,关键帧的运动矢量,帧校验和)可以在扩展现有编码标准的“补充增强信息”(sei)消息中传达,使得其可以被理解(或已经协商)这些技术的接收器使用,并被其他接收器忽略。

可以完全省略用于运动的“改进数据”的传输。相反,可以在解码器处应用合适的运动外推算法,以利用适当的运动(其中仅针对具有帧(n-k)和关键帧之前的类似帧的接收器确定该运动)将帧(n-k)的内容投射到帧(n+i)上。

示例用例

接收器重新同步:不同步的接收器(已请求重新同步的接收器)应当仅使用“同步层”帧进行显示。如果由解码器计算的改进基础校验和不匹配,则该接收器可以发射同步层帧,直到下一个关键帧被发送为止。

接收器加入:先前未在接收流的任何接收器(如由keyframe_index确定)将不能访问改进数据所作用于的参考帧,并且不应该从该关键帧起导出显示层帧。

附带关键帧:通过对keyframe_index的检查并且未请求重新同步的接收器可以验证关键帧前参考是有效的(使用校验和),然后使用改进数据来导出改进层帧,该改进层帧与同步层帧组合以产生显示层帧。如图3所示和上面所述,在关键帧之后的一系列帧上使改进层的贡献减少,直到同步和显示层收敛为止。

场景改变时的关键帧:如果编码器确定编码的场景在实质上不同,则它不应该发送改进数据。视觉不连续性将掩盖关键帧的质量。

部分内容改变时的关键帧:编码器可以确定帧的一部分在视觉上是连续的,并且仅对该子帧区域应用改进数据。

分辨率改变(具有视觉连续性)时的关键帧:这将涉及在与同步层帧组合之前对改进层帧进行缩放的额外算法步骤。在编解码器具有规定的缩放算法的情况下,这些也可以应用于该步骤。

即使在广播和流式视频中,也可以设置关键帧大小,使得在关键帧和邻近帧之间仍然存在质量差异,并且可以应用相同的技术来实现跨图片组(gop)边界的更好的视觉连续性,其传达一致的视觉内容。在以如此高质量对周期性关键帧进行编码以使其在视觉上察觉不到的情况下,关键帧表示一组图片的压缩成本的显着增量。如果本文描述的改进过程用于在gop边界处通过关键帧实现视觉连续性,则编码比特率可以有值得的改进。

现在参考图4。图4示出了根据一个示例实施例的在视频编码器处执行的过程100的操作的流程图。在110处,生成编码比特流,该比特流表示包括关键帧的视频帧序列。在120处,生成供接收该编码比特流的解码器使用的信息。该信息使解码器能够根据视频帧序列中在关键帧之前的关键帧前视频帧来生成显示帧。在130处,在120处生成的该信息被包括在关键帧中并被包括在关键帧之后的编码器确定数量的帧中。如上所述,关键帧中的信息(例如,补充语法)指示解码器将是否以及如何根据关键帧前视频帧来生成改进帧。该信息(补充语法)可以指示解码器在将解码器使用关键帧前视频帧生成的改进帧与从编码比特流导出的解码组合时要进行的加权。在140处,将编码比特流发送到解码器。

编码器可以用信号向解码器通知何时使用编码器确定的改进数据以及何时不使用编码器确定的改进数据。例如,编码器可以确定与编码比特流相关联的场景是否已经改变,并且当确定与编码比特流相关联的场景已经改变时将不在关键帧中包括信息(补充语法)。相反,编码器可以确定关键帧的一部分与先前视频帧在视觉上是连续的,并且如果是,则生成信息(关键帧中的补充语法)以使解码器使用关键帧前视频帧来生成和应用仅用于与先前视频帧在视觉上连续的子帧区域的改进数据。另外,编码器可以在关键帧之后的帧中包括信息(例如,编码器根据关键帧前视频帧计算的供与解码器根据关键帧前视频帧计算的校验和进行比较的校验和),以向解码器指示是否要根据关键帧前视频帧生成改进数据。

改进数据的一些有用变体可以基于编码器确定的改进数据,其示例现在被描述。

相对于来自关键帧之前的一个或多个参考帧(其在内容上与要在关键帧处编码的原始帧一致)的运动补偿。这在成本(传输比特)上可以是低的,并且可以包括预测语法的通常压缩方法,包括相对于预测器运动矢量的差分运动矢量表达,以及在一个或多个预测器运动矢量上使用具有相同运动的跳过块,以及将可变块大小用于运动补偿。

如上所述的运动补偿,加上残差的有限使用(对于仅从运动补偿无法被很好代表的关键块)。这可能是有限的,以便约束改进数据的大小。

如上所述的运动补偿,加上残差,加上可选的帧内编码,从而形成良好视觉质量的传统p帧(以传输比特方面的更高帧成本)。

没有残差但具有在具有发散运动的块之间的去块或其他平滑滤波操作的运动补偿,以减少改进数据中的视觉不连续性。

(通过有限使用残差数据或完全使用残差数据来补充的)运动补偿,以呈现如下改进帧,在该帧的由实际基础层关键帧的同位部分最好代表的部分中(即,对于那些显示帧等于基础/同步帧的块)被“打孔”。

如上所述的穿孔运动补偿,但是在具有改进数据和不具有改进数据的区域之间的边界处使用混合。

这些形成关键帧之后的一系列改进帧的改进数据的方法可以应用于:

关键帧之前的一个或多个参考帧;

对于第一改进帧i(n)如上所述,然后改进帧i(n+1)是从相对于作为参考(仅对改进过程)的帧i(n)应用的任何上述技术导出的,对于后续的改进帧(上述“校正层”)依此类推;基础层处的帧间参考不变。

可以将改进帧与基础(同步层)帧组合为:

每帧的加权组合d(n+k)=w(k)*i(n+k)+(1-w(k))*s(n),其中权重w(k)在整个帧上是恒定的,并且w(k)在关键帧之后的有限数量的帧上趋于零。

加权组合,其中在子帧或块区域处指定权重w(k),使得可以在显示帧的不同区域中应用改进和基础帧之间的不同强调。

参考图5。图5示出了根据一个示例实施例的在视频解码器处执行的过程200的操作的流程图。在210处,视频解码器从编码器接收表示包括关键帧在内的视频帧序列的编码比特流,该关键帧包括使解码器能够根据在关键帧之前接收的关键帧前视频帧来生成显示帧的信息。在220处,解码器使用关键帧前视频帧、包括在关键帧中的信息(补充语法)以及包括在关键帧之后的编码器确定数量的解码帧中的信息(补充语法)来生成显示帧。如上所述,解码器可以通过基于关键帧前视频帧生成一个或多个改进帧来生成显示帧。在230处,将显示帧输出到显示器。

可以基于一个或多个改进帧中的对应帧来生成显示帧,以便隐藏关键帧的全部或一部分的显示,并且对于解码操作之外的使用,使得显示帧代替关键帧和后续帧。可以基于针对序列中的位置生成的改进帧和序列中的对应位置处的解码帧来生成显示帧。

另外,如上所述,可以基于针对序列中的位置生成的改进帧与序列中的对应位置处的解码帧的加权组合来生成各个显示帧。可以基于在比特流中接收的并且应用于关键帧前视频帧的一个或多个运动矢量来生成一个或多个改进帧。另外,可以针对具有关键帧和一个或多个连续帧组合生成一个或多个改进帧的序列,并将其应用直到序列中、从比特流导出的显示帧不再需要通过参考关键帧前视频帧而被改进的点。

包括在关键帧中的信息可以是关键帧的补充语法,并且包括在编码器确定数量的解码帧中的每个解码帧中的信息可以是解码帧的补充语法。

如上面进一步描述的,解码器可以确定是否要生成并输出根据关键帧前视频帧生成的显示帧。该确定可以涉及计算与关键帧前视频帧相关联的校验和,以及将计算出的校验和与包括在关键帧之后由编码器发送给解码器的数据中的(例如,包括在关键帧之后的帧的补充语法中的)在编码器处计算的校验和信息进行比较。当计算出的校验和与解码器所发送的包含的校验和信息匹配时,解码器可以根据关键帧前视频帧生成显示帧,否则,不根据关键帧前视频帧生成显示帧。

首先参考图6,视频编码器的框图在参考数字300处示出。视频编码器300被配置为执行本文给出的关键帧削弱技术。视频编码器300包括减法器305、变换单元310、量化器单元320、熵编码单元330、逆变换单元340、加法器350、一个或多个环路滤波器360、重构帧存储器370、运动估计单元380、帧间预测单元390、帧内预测单元395和开关397。

当前帧(输入视频)以及预测帧被输入到减法器305。减法器305被提供有来自帧间预测单元390或帧内预测单元395的输入,其选择受开关397控制。为了发现当前图像帧内的相似性而选择帧内预测处理,因此将其称为“帧内”预测。运动补偿具有时间分量,因此涉及连续帧之间的分析,其被称为“帧间”预测。运动估计单元380将运动估计输出作为输入提供给帧间预测单元390。运动估计单元380接收输入视频和重构帧存储器370的输出作为输入。

在由变换单元310进行二维变换处理以产生变换系数之前,减法器305从当前帧的像素中减去开关397的输出。然后由量化器单元320对变换系数进行量化,然后将其提供给熵编码单元330。熵编码单元330应用熵编码以便在不丢失信息的情况下去除冗余,并且被称为无损编码处理。随后,在被在输出比特流中发送之前,编码数据经由打包器(未示出)而被布置在网络分组中。

量化器单元320的输出也被应用于逆变换单元340并用于辅助预测处理。加法器350将逆变换单元340的输出和开关397的输出(帧间预测单元390的输出或帧内预测单元395的输出)相加。加法器350的输出被提供给帧内预测单元395的输入并被提供给一个或多个环路滤波器360,该一个或多个环路滤波器抑制边缘中的一些锐度以提高清晰度并更好地支持预测处理。环路滤波器360的输出被应用于重构帧存储器370,重构帧存储器370将处理后的图像像素数据保持在存储器中,以供在运动估计块380的后续运动处理中使用。

转到图7,视频解码器的框图在参考数字400处示出。视频解码器400被配置为执行本文给出的广义滤波器技术。视频解码器400包括熵解码单元410、逆变换单元420、加法器430、帧内预测单元440、帧间预测单元450、开关460、一个或多个环路滤波器470和重构帧存储器480。图7中还示出了后置滤波器472。

熵解码单元410对接收到的输入比特流执行熵解码以产生量化的变换系数,量化的变换系数被应用于逆变换单元420。逆变换单元420对量化的变换系数应用二维逆变换以输出量化版本的差异样本。逆变换单元420的输出被应用于加法器430。加法器430向逆变换单元420的输出添加帧内预测单元440的输出或帧间预测单元450的输出。在环路滤波器470的输出处获得输出视频图像。

图6的视频编码器300和图7的视频解码器400可以通过集成电路(例如,通过专用集成电路)中的数字逻辑门来实现,或者可以通过两个或更多个单独的逻辑器件来实现。可选地,如下面结合图8进一步描述的,视频编码器300和视频解码器400可以通过由一个或多个处理器执行的软件来实现。

针对每个编码块、预测块、或变换块执行图6和图7中的每个功能块。

图8示出了可以在其上实现实施例的计算机系统500。计算机系统500可被编程为实现基于计算机的设备(诸如视频会议端点或者包括用于处理实时视频图像的视频编码器或解码器的任何设备),并且被配置为执行本文中参考图1-图7描述的操作。计算机系统500包括总线502或用于传送信息的其他通信机制,以及与总线502耦合的用于处理信息的处理器503。虽然该图示出了处理器的信号块503,但是应当理解,处理器503表示多个处理核,每个处理核可以执行单独的处理。计算机系统500还包括耦合到总线502的用于存储要由处理器503执行的指令和信息的主存储器504,诸如随机存取存储器(ram)或其他动态存储设备(例如,动态ram(dram)、静态ram(sram)、以及同步dram(sdram))。此外,主存储器504可用于在处理器503执行指令期间存储临时变量或其他中间信息。

计算机系统500还包括耦合到总线502的用于存储处理器503的指令和静态信息的只读存储器(rom)505或其他静态存储设备(例如,可编程rom(prom)、可擦除prom(eprom)、以及电可擦除prom(eeprom))。

计算机系统500还可包括耦合到总线502以控制一个或多个用于存储信息和指令的存储设备(诸如磁性硬盘507或固态存储介质)的盘控制器506、以及可移动介质驱动器508(例如,软盘驱动器、只读光盘驱动器、读/写光盘驱动器、光盘自动唱片点唱机、磁带驱动器、以及可移动磁光驱动器)。可以使用适当的设备接口(例如,小型计算机系统接口(scsi)、集成设备电子部件(ide)、增强型ide(e-ide)、直接存储器存取(dma)、或者高速dma)将存储设备添加到计算机系统500。

计算机系统500还可包括专用逻辑器件(例如,专用集成电路(asic))或者可配置的逻辑器件(例如,简单可编程逻辑器件(spld)、复杂可编程逻辑器件(cpld)、以及现场可编程门阵列(fpga)),其除了微处理器和数字信号处理器之外可以单独地或共同地是处理电路的类型。处理电路可以位于一个设备中或者分布在多个设备。

计算机系统500还可包括耦合到总线502以控制用于向计算机用户显示信息的显示器510(诸如阴极射线管(crt)、液晶显示器(lcd)、发光二极管(led)显示器或者现在已知或以后开发的任何其他显示技术)的显示控制器509。计算机系统500包括用于与计算机用户交互和向处理器503提供信息的输入设备,诸如键盘511和指点设备512。指点设备512例如可以是鼠标、轨迹球,或者用于将方向信息和命令选择传送到处理器503并用于控制显示器510上的光标移动的指示棒。此外,打印机可以提供由计算机系统500存储和/或生成的数据的打印列表。

计算机系统500响应于处理器503执行包含在存储器(诸如主存储器504)中的一个或多个指令的一个或多个序列而执行部分或全部的处理步骤。可以将这样的指令从另一计算机可读介质(诸如硬盘507或可移动介质驱动器508)读取到主存储器504中。还可以使用多处理布置中的一个或多个处理器来执行包含在主存储器504中的指令序列。在替代实施例中,可以使用硬连线电路来代替软件指令或与软件指令组合使用硬连线电路。因此,实施例不限于硬件电路和软件的任何特定组合。

如上所述,计算机系统500包括至少一个计算机可读介质或存储器,用于保存根据所给出的实施例编程的指令,用于包含本文所述的数据结构、表格、记录或其他数据。计算机可读介质的示例是光盘、硬盘、软盘、磁带、磁光盘、prom(eprom、eeprom、闪速eprom)、dram、sram、sdram、或任何其他磁性介质、光盘(例如,cd-rom)、或任何其他光学介质、穿孔卡、纸带、或其他具有孔图案的物理介质、或计算机可以从中读取的任何其他介质。

存储在任何一个非暂态计算机可读存储介质或非暂态计算机可读存储介质的组合上,本文给出的实施例包括用于控制计算机系统500、用于驱动用于实现本文给出的技术的一个或多个设备以及用于使计算机系统500能够与人类用户(例如,印刷制作人员)交互的软件。这样的软件可以包括但不限于设备驱动程序、操作系统、开发工具和应用程序软件。这样的计算机可读存储介质还包括用于执行本文给出的处理的全部或一部分(如果处理是分布式的)的计算机程序产品。

计算机代码设备可以是任何可解释或可执行的代码机制,包括但不限于脚本、可解释程序、动态链接库(dll)、java类和完整可执行程序。另外,为了更好的性能、可靠性和/或成本,部分处理可以是分布式的。

计算机系统1201还包括耦合到总线502的通信接口513。通信接口513提供耦合到网络链路1214的双向数据通信,网络链路1214连接到例如局域网(lan)515或者连接到诸如因特网之类的另一通信网络516。例如,通信接口513可以是用于连接到任何分组交换(有线或无线)lan的有线或无线的网络接口卡。作为另一示例,通信接口513可以是非对称数字用户线(adsl)卡、综合业务数字网(isdn)卡或调制解调器,以提供与对应类型的通信线路的数据通信连接。还可以实现无线链路。在任何这样的实现中,通信接口513发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。

网络链路514通常提供通过一个或多个网络到其他数据设备的数据通信。例如,网络链路514可以通过本地网络515(例如,lan)或通过由服务提供商(其通过通信网络516提供通信服务)运营的设备来提供到另一计算机的连接。本地网络515和通信网络516例如使用承载数字数据流的电信号、电磁信号或光信号,以及关联的物理层(例如,cat5电缆、同轴电缆、光纤,等等)。可以在基带信号或基于载波的信号中实现通过各种网络的信号和网络链路514上的并通过通信接口513的信号,这些信号将数字数据传送到计算机系统500和从计算机系统500传送数字数据。基带信号将数字数据作为描述数字数据比特流的未调制电脉冲来传送,其中术语“比特”将被广义地解释为表示符号,其中每个符号传送至少一个或更多个信息比特。数字数据还可以用于诸如利用通过传导介质传播或者作为电磁波通过传播介质传输的幅度、相位和/或频移键控信号来调制载波。因此,可以通过“有线”通信信道作为未调制的基带数据来发送数字数据,和/或通过调制载波在不同于基带的预定频带内发送数字数据。计算机系统500可以通过一个或多个网络515和516、网络链路514和通信接口513来发送和接收包括程序代码的数据。另外,网络链路514可以提供通过lan515到移动设备517(诸如个人数字助理(pda)膝上型计算机或蜂窝电话)的连接。

总之,关键帧重置接收到的比特流,并且不参考先前的帧,从而极大地限制了可用的压缩工具。在通过带宽受限的信道的低延时视频通信中,关键帧大小被约束以避免引入延时,所以关键帧具有低得多的视觉质量。在交换视频通信中,在分组丢失之后任何一个接收器都可以请求关键帧重新同步视频,但是所有接收器都将接收所发送的关键帧及其较低质量。当接收器在关键帧之前和之后具有相同场景的未受损(以损失计)视图时,来自关键帧之前的帧的信息可以用于增强所显示的视觉质量,而不是低于平均质量的关键帧本身。这些技术对于如在普通帧间编码中使用的方法使用来自先前帧的信息。这优于孤立地锐化或过滤关键帧。

使用这些技术,而不是仅显示由底层编码方法指定的关键帧(其在低延时用例中常常被约束为低质量),在为了其他接收者的利益而注入关键帧以允许加入或重新同步时,可以实现共享视频流中的更好视频质量。该方法可以用作现有标准的扩展,并且显示增强可以被“启用”的接收器使用,并被“未启用”的接收器忽略。

本文给出的技术可以应用作为现有视频编码方法的补充,因为它们构建在它们之上,并且通过简单的扩展(校验和门控以及同步和改进帧的加权组合)(其在传统的解码循环之外,即仅用于显示)而应用于当前被禁止的上下文。

在一种形式中,提供了一种方法,包括:在视频解码器处,从编码器接收表示包括关键帧的视频帧序列的编码比特流,该关键帧包括使该解码器能够根据在该关键帧之前接收的关键帧前视频帧来生成显示帧的信息;和

使用关键帧前视频帧、包括在关键帧中的信息以及包括在关键帧之后的编码器确定数量的解码帧中的信息来生成显示帧。

在另一种形式中,提供了一种方法,包括:在视频编码器处,生成表示包括关键帧的视频帧序列的编码比特流;生成供接收该编码比特流的解码器使用的信息,以使该解码器能够根据视频帧序列中在关键帧之前的关键帧前视频帧来生成显示帧;以及将该信息包括在关键帧中并将该信息包括在关键帧之后的编码器确定数量的帧中。

在另一种形式中,提供了一种装置,包括:通信接口,其被配置为使得能够通过网络进行通信;处理器,其被耦合到网络接口单元并被配置为:经由通信接口从编码器接收表示包括关键帧的视频帧序列的编码比特流,该关键帧包括使该处理器能够根据视频帧序列中在关键帧之前接收的关键帧前视频帧来生成显示帧的信息;以及使用关键帧前视频帧、包括在关键帧中的信息、以及包括在编码器确定数量的解码帧中的信息来生成显示帧。

在又一种形式中,提供了一种装置,包括:通信接口,其被配置为使得能够通过网络进行通信;处理器,其被耦合到网络接口单元并被配置为:生成表示包括关键帧的视频帧序列的编码比特流;生成供接收该编码比特流的解码器使用的信息,以使该解码器能够根据视频帧序列中在关键帧之前的关键帧前视频帧来生成显示帧;将该信息包括在关键帧中并将该信息包括在关键帧之后的编码器确定数量的帧中;以及使编码比特流被发送到解码器。

在又一种形式中,一个或多个非暂态计算机可读存储介质编码有指令,这些指令当由处理器执行时使该处理器执行包括以下操作的操作:生成表示包括关键帧的视频帧序列的编码比特流;生成供接收该编码比特流的解码器使用的信息,以使该解码器能够根据视频帧序列中在关键帧之前的关键帧前视频帧来生成显示帧;以及将该信息包括在关键帧中并将该信息包括在关键帧之后的编码器确定数量的帧中。

在又一种形式中,一个或多个非暂态计算机可读存储介质编码有指令,这些指令当由处理器执行时使该处理器执行包括以下操作的操作:从编码器接收表示包括关键帧的视频帧序列的编码比特流,该关键帧包括使该解码器能够根据在该关键帧之前接收的关键帧前视频帧来生成显示帧的信息;以及使用关键帧前视频帧、包括在关键帧中的信息、以及包括在关键帧之后的编码器确定数量的解码帧中的信息来生成显示帧。

在又一种形式中,视频编码器生成表示包括关键帧的视频帧序列的编码比特流。编码器生成供接收该编码比特流的解码器使用的信息,以使该解码器能够根据视频帧序列中在关键帧之前的关键帧前视频帧来生成显示帧。编码比特流被发送到解码器。在另一实施例中,视频解码器从编码器接收表示包括关键帧的视频帧序列的编码比特流。该关键帧包括使该解码器能够根据视频帧序列中在关键帧之前接收的关键帧前视频帧来生成显示帧的信息。解码器使用关键帧前视频帧、包括在关键帧中的信息、以及包括在关键帧之后的编码器确定数量的解码帧中的信息来生成显示帧。

以上描述仅旨在作为示例。尽管在本文中将技术示出并描述为在一个或多个具体示例中体现,但是并不旨在将其限于所示的细节,因为可以在权利要求的等同物的范畴和范围内进行各种修改和结构改变。

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