使用帧高速缓存来改善分组丢失恢复的制作方法

文档序号:6651245阅读:124来源:国知局
专利名称:使用帧高速缓存来改善分组丢失恢复的制作方法
技术领域
本发明一般涉及用于数字地编码、解码和处理视频、图像及其它数字媒体内容的技术。本发明由其涉及通过帧高速缓存来改善分组丢失恢复。
背景技术
数字视频消耗大量存储和传输容量。典型的原始数字视频序列每秒包括15或30帧。每一帧都可包括数以万计或十万计的像素(也称为象素)。每个像素表示图像一个微小的元素。在原始形式中,计算机通常将像素表示为总计为24比特的三个样本的集合。例如,一个像素可包括定义该像素的灰度级分量的8比特亮度样本(也称为luma样本),以及定义该像素的色彩分量的两个8比特色度样本值(也称为chroma样本)。由此,典型的原始数字视频序列每秒的比特数,或称比特率,可为每秒五百万比特或以上。
许多计算机和计算机网络缺乏处理原始数字视频的资源。为此原因,工程师们使用压缩(也称为编码)来降低数字视频的比特率。压缩通过将视频转换为较低比特率的形式降低存储和传输视频的消耗。解压缩(也称为解码)从已压缩的形式重构原始视频版本。“编解码器”是一种编码器/解码器系统。压缩可以是无损的,其中视频的质量没有损失,但比特率的降低受到视频数据的可变性的固有量(有时称为熵)限制。或者,压缩可以是有损的,其中视频的质量有损失,但可实现的比特率的降低更为可观。有损压缩常常被结合无损压缩来使用——在一种系统设计中,有损压缩建立信息的近似,而无损压缩被应用以表示该近似。
一般而言,视频压缩技术包括“图像内”压缩和“图像间”压缩,其中图像是例如逐行扫描的视频帧、隔行的视频帧(具有交替的行用于视频半帧(field))、或隔行的视频半帧。一般而言,视频序列在给定帧内及相继帧之间包含相当大量的冗余。例如,人眼一般不会注意连续的视频帧里相似背景中的细微的差异。压缩通过移除所发送的比特流内某部分冗余素材,然后当该图像被解压缩时在接收端将其加回,来利用这些冗余。从视频帧中减去的两种常见的冗余是空间和时间冗余。空间冗余在单个帧内的相邻像素之间发生。使用空间冗余来压缩的帧(称为内帧或I帧)在该帧自身内包含重构图像所需的所有信息——它们是自包含的。使用时间冗余的帧(诸如P帧和B帧)需要来自其它帧的信息以进行解码。P帧(预测编码帧)是使用来自前面的I帧和/或P帧的信息来编码的,并且必须使用这些信息来解码。B帧(双向预测编码帧)是同时使用来自前面和后面的I帧和P帧两者的信息来编码的。运动估计通过将独特的内容随从前一已编码的图像(称为参考帧)创建的运动预测图像一起编码来移除连续视频帧(帧间)中的时间冗余。如果参考帧丢失,则其随后的各预测帧将无法被译码——传输误差传播到后续各帧。
对于逐行帧,图像内压缩的技术压缩个体帧(通常称为I帧或关键帧),而图像间压缩的技术参考在前和/或后续的帧(通常称为参考帧或锚帧)来压缩帧(通常称为预测帧、P帧、或B帧)。I帧(自包含的)和P帧(一般参考在前的帧)本身也可以是参考帧,而同时参考在前和后续帧两者的B帧通常本身不会被用作参考。
当数据在最终视频被显示以前被解压缩时,解码器通常执行压缩操作的逆操作。例如,解码器在解压缩数据时可执行熵解码、逆量化、以及逆转换。当使用运动补偿时,解码器(和编码器)从一个或多个先前重构的帧(现在被用作参考帧)重构一个帧,然后该最近被重构的帧可作为后面各帧的运动补偿的参考帧使用。
通过网络发送的分组容易被丢失——分组被漏失。此丢失的发生是随机且不可预测的。此外,视频压缩流数据对延迟高度敏感;因为分组需要按照它们被发送的相同顺序被重新装配;过多的被延迟的分组会引起跳跃的、中断的信号。传送延迟问题还可能在重新发送新的I帧时发生;新帧易受所有破坏了丢失的参考帧的相同问题的影响。此外,在有损编码方案中,压缩被设计成满足用于存储和传输的目标比特率。高度压缩是通过降低重构图像的质量来实现的。因此,被漏失或延迟的分组所引起的额外丢失可能将图像降低到可接受的等级以下。
处理分组丢失的容限对实时视频编解码器(RTC)在有噪网络(容易产生丢失)中表现良好来说至关重要。大多数现有视频编解码器在参考帧丢失时,通过请求新的I帧来应对分组丢失。其它则使用基于时间片(slice)的编码,这会增加信令开销。图1示出通过请求新I帧来进行的常规分组丢失恢复。
在此现有技术的方法中,在解码器102处接收到I帧104。它随即被用于解释/重构后续的相关的P帧106。下一个相关的帧,P帧108被破坏,因为乱序地接收了或丢失了过多的帧。后续的P帧110和任何其后的帧不再能被重构。在目的节点(此处由解码器102表示)处,生成I帧请求并向源节点(此处由编码器114表示)发送。每个后续的P帧或B帧都无法被重构,直至接收到新的I帧。一旦源节点114接收到请求,它即装配新的I帧并使用通信信道将其发送到目的节点102。在接收到新I帧112以后,目的节点可成功地将各后续P帧解码。但是,这导致等价于发送初始请求所需的时间、加上将I帧编码的时间、加上将I帧发送到目的节点102的时间的延迟116。此外,发送者和接收者可能分开很长的实际距离,而很长的距离导致明显的滞后时间,还有视频质量的相应降低。
在另一种现有技术的方法中,以有规律的间隔发送I帧104、112。当I帧112由于破坏或延迟被丢失时,解码器等待直至接收到下一I帧,从而对后续P帧110、108进行了错误的解码。
因此,有必要改进用于通过基于有损分组的网络传输压缩视频的方法和系统。

发明内容
本文中所描述的一种视频编解码器包括编码器处的帧高速缓存,以及解码器处的对应的帧高速缓存,其中每一个都可同步工作。解码器高速缓存中的帧被用来帮助解释解码器处的帧。要被解释的帧可能是使用存储在编码器高速缓存中的相同帧的副本已生成的。
还提供一种系统实现。它包括将数据分组编码为帧的编码器,以及能够存储帧或其部分的编码器高速缓存。它还包括带有解码器高速缓存的解码器,该高速缓存也可存储帧或其部分。解码器可用于检测分组丢失。当检测到此类丢失时,在一些实施例中,编码器使用存储在编码器高速缓存处的帧来编码一个帧,然后在解码器处使用存储在解码器高速缓存中的帧将该帧解码。
此高速缓存机制提供以下关键特征a)在分组丢失恢复过程中更有效率的带宽利用,以及b)消除了与基于时间片的编码相关联的信令开销。
从以下参考附图对各实施例的详细描述中,本发明的其它特征和优点将被明确。


图1是现有技术的帧级分组丢失恢复的示意图。
图2是利用本文中所描述的帧高速缓存的视频编码器的框图。
图3是利用本文中所描述的帧高速缓存的视频解码器的框图。
图4是使用帧高速缓存从分组丢失中恢复的一种示例性方法的流程图。
图5A是编码器高速缓存一个帧而解码器高速缓存相同帧的帧级示意图。
图5B是被破坏的P帧到达解码器处的帧级示意图。
图5C是示出解码器使用被高速缓存的帧来解释P帧的帧级示意图。
图5D是通过反馈信道报告分组丢失的框图。
图6是用于实现视频编码器/解码器高速缓存的合适的方法的流程图。
图7是适用于图2和3的视频编码器/解码器的计算环境的框图。
具体实施例方式
以下描述针对在视频编码器和视频解码器两者中实现帧高速缓存,它被设计成提供适度的分组丢失恢复和有效的带宽利用的有效组合。帧高速缓存的一种示例性应用是在图像或视频编码器和解码器中。由此,帧高速缓存是在一般化的图像或视频编码器和解码器的上下文中描述的,但是也可被结合到细节上与下述的示例性装置不同的各种其它图像和视频编解码器的编码器和解码器中。
1.一般化的视频编码器和解码器图2是一般化的视频编码器200的框图,而图3是一般化的视频解码器300的框图,帧高速缓存可被结合到其中。
所示的编码器和解码器内部各模块之间的关系指示编码器和解码器中的主信息流;为简单起见,没有示出其它关系。特别地,图2和3通常不示出指示编码器设置、模式、表等为视频序列、帧、宏块、块等所使用的辅助信息(side information)。此类辅助信息是通常在辅助信息的熵编码以后在输出比特流中被发送的。输出比特流的格式可以是Windows Media Video格式或其它格式。
取决于实现和期望的压缩类型,编码器200或解码器300的各个模块可被添加、省略、分成多个模块、与其它模块集合、和/或用类似模块代替。在替换实施例中,带有不同模块和/或模块的其它配置的编码器和解码器执行所述技术中的一种或数种。
A.视频编码器图2是一般的视频编码器系统200的框图。编码器系统200接收包括当前帧205在内的视频帧序列,并生成已压缩的视频信息295作为输出。视频编码器的特定实施例通常使用一般化编码器200的变体或增补版本。
编码器系统200压缩预测帧和关键帧。为了说明,图2示出关键帧通过编码器系统200的路径,以及前向预测帧的路径。编码器系统200的许多组件都被用于压缩关键帧和预测帧两者。取决于所压缩的信息的类型,那些组件所执行的确切操作可有所不同。
预测帧[可以是P帧、B帧(双向预测)、或帧间编码帧]是以从一个或多个其它帧的预测(或差异)的形式表示的。预测残余是预测帧和原始帧之间的差异。与之相反,关键帧[也称为I帧、或帧内编码帧]是不用参考其它帧而压缩的。
如果当前帧205是前向预测帧,则运动估计器210根据参考帧225(缓冲在帧存储220中的前一重构帧)估算当前帧205的宏块或其它像素集合。在替换实施例中,参考帧可以是后面的帧,或者当前帧可被双向地预测。运动估计器210输出诸如运动矢量等运动信息215作为辅助信息。运动补偿器230将运动信息215应用于前一重构帧225以构成经运动补偿的当前帧235。但是,预测通常是不完美的,而经运动补偿的当前帧235和原始当前帧205之间的差异是预测残余245。或者运动估计器210和运动补偿器230应用其它类型的运动估计/补偿。
频率变换器260将空间域的视频信息转换成频域(即,频谱)数据。对于基于块的视频帧,频率变换器260应用以下部分中所描述的变换,它具有类似于离散余弦变换[“DCT”]的属性。在一些实施例中,频率变换器260为关键帧对空间预测残余块应用频率变换。频率变换器260可应用8×8、8×4、4×8或其它大小的频率变换。
然后量化器270量化频谱数据系数块。量化器270用逐帧或其它方式改变的步长,对频谱数据应用均匀的、标量的量化。或者,量化器270对频谱数据系数应用另一类量化,例如,非均匀的、矢量的、或非自适应的量化,或者在不使用频率变换的编码器系统中直接量化空间域数据。除了自适应量化以外,编码器200可使用帧丢弃、自适应过滤、或其它技术来进行速率控制。
当后续的运动估计/补偿需要重构的当前帧时,逆量化器276对经量化的频谱数据系数执行逆量化。然后频率逆变换器266执行频率变换器260的操作的逆操作,以生成重构的预测残余(对应于预测帧)或重构的关键帧。如果当前帧205是关键帧,则重构的关键帧被视为重构的当前帧(未示出)。如果当前帧205是预测帧,则重构的预测残余被增加到经运动补偿的当前帧235,以构成重构的当前帧。帧存储220缓冲该重构的当前帧,以供预测下一个帧使用。在一些实施例中,编码器200对重构的帧应用解块过滤器,以自适应地平滑帧块中的不连续。
熵编码器280压缩量化器270的输出,以及某些辅助信息(例如,运动信息215、量化步长)。典型的熵编码技术包括算术编码、差分编码、霍夫曼编码、行程长度编码、LZ编码、字典编码、以及上述的组合。熵编码器280通常对不同类型的信息(例如,DC系数、AC系数、等等)使用不同的编码技术,并且可在特定编码技术内从多个代码表中间进行选择。
熵编码器280将已压缩的视频信息295放到缓冲器290中。缓冲等级指示被反馈给比特率自适应模块。已压缩的视频信息295以恒定或相对恒定的比特率被从缓冲器290排空并存储以用于后续的此比特率的流传输。或者,编码器系统200在压缩以后立即流传输已压缩的视频信息295。
在缓冲器290以前或以后,已压缩的视频信息295可被信道编码以通过网络传输。信道编码可对已压缩的视频信息295运用检错和纠错数据。
B.视频解码器图3是一般的视频解码器系统300的框图。解码器系统300接收已压缩的视频帧序列的信息395并产生包括重构帧305在内的输出。视频解码器的特定实施例通常使用一般化的解码器300的变体或增补版本。
解码器系统300解压缩预测帧和关键帧。为了说明,图3示出关键帧通过解码器系统300的路径,以及前向预测帧的路径。解码器系统300的许多组件都被用于解压缩关键帧和预测帧两者。取决于所解压缩的信息的类型,那些组件所执行的确切操作可能有所不同。
缓冲器390接收已压缩视频序列的信息395,并使已接收的信息对熵解码器380可用。缓冲器390通常以时间上相当恒定的速率接收信息,并且包括抖动缓冲器来平滑带宽或传输中的短期变动。缓冲器390还可包括回放缓冲器和其它缓冲器。或者,缓冲器390以变化的速率接收信息。已压缩的视频信息395可在到达缓冲器390之前,或在其离开缓冲器390之后,或两者皆可,被解码并处理以进行检错和纠错。
熵解码器380对经熵编码的已量化数据、以及经熵编码的辅助信息(例如,运动信息、量化步长)进行熵解码,通常是应用在编码器200中执行的熵编码的逆操作。熵解码技术包括算术解码、差分解码、霍夫曼解码、行程长度解码、LZ解码、字典解码、以及上述的组合。熵解码器380通常对不同种类的信息(例如,DC系数、AC系数、不同种类的辅助信息)使用不同的解码技术,并可在特定解码技术内从多个代码表中间进行选择。
如果要被重构的帧是前向预测帧,则运动补偿器330将运动信息315应用于参考帧325,以构成对被重构的帧305的预测335。例如,运动补偿器330使用宏块运动矢量在参考帧中寻找宏块。帧缓冲器320存储先前所重构的帧以作为参考帧使用。或者,运动补偿器应用另一种类型的运动补偿。运动补偿器330的预测通常是不完美的,所以解码器300还重构预测残余345。
当解码器300需要已重构的帧用于后续的运动补偿时,帧存储320缓冲已重构的帧305以供预测下一个帧时使用。在一些实施例中,编码器200对已重构的帧305运用解块过滤器,以自适应地平滑帧块的不连续。
逆量化器370逆量化经熵解码的数据。一般而言,逆量化器370根据以逐帧或其它方式改变的步长,对经熵解码的数据应用均匀的、标量的逆量化。或者,逆量化器370对数据应用另一种类型的逆量化,例如,非均匀的、矢量的、或非自适应的逆量化,或者在不使用逆频率变换的解码器系统中直接逆量化空间域数据。
频率逆变换器360将量化的、频域的数据变换为空间域的视频信息。对于基于块的视频帧,频率逆变换器360应用以下部分中所描述的逆变换。在一些实施例中,频率逆变换器360为关键帧对空间预测残余应用频率逆变换。频率逆变换器360可应用8×8、8×4、4×8或其它大小的频率逆变换。
C.帧高速缓存在本文所描述的视频编解码器体系结构内使用帧高速缓存的实现中,较佳的是在编码器和解码器两处都依次高速缓存参考帧。当参考帧被丢失,可使用解码器处高速缓存的适当参考帧来解码后续的相关帧。这产生以下好处A)更有效率的带宽利用现有技术的方法要求I帧被生成并发送到编码器。而此方法允许特殊类型的帧,SP帧被发送到解码器,然后被高速缓存直至被需要。SP帧一般可用比相同质量的I帧更少的比特来编码,因此比起使用等价的I帧,SP帧使用较少的带宽。
B)较快的差错恢复较佳的是,当分组丢失发生时,SP帧已被高速缓存在解码器处;这允许以很少的滞后时间来解释流中的下一个P帧。
2.示例性方法概述所描述的实施例包括用于在解码器处高速缓存帧、然后使用被高速缓存的帧来重构依赖于已被破坏或丢失的参考帧的P帧和B帧的技术和工具。高速缓存可被集成为视频解码器300(图3)的一部分,视频编码器200(图2)的一部分,或较佳的是同时被集成为这两者的一部分。当解码器检测到分组丢失时,它向编码器300发送消息,编码器300随即基于共享的已高速缓存的若干帧中的一个帧生成新的参考帧。所生成的参考帧随即被发送给解码器。已高速缓存的帧在解码器处被用来解码所生成的帧和后续的相关帧,直至另一个参考帧到达解码器处。本文中所描述的流程图元素只是示例;根据所描述的技术,可使用其它流程图元素。此外,根据所描述的技术和工具,流程图元素可按不同顺序发生,或者特定的过程块可被跳过。
所描述的技术和工具可彼此结合或结合其它技术和工具来使用,或可被独立使用。
参考图4,流程图400示出本文中所揭示的方法的简要概览。在过程框402,一部分要通过网络发送的视频信号被分配给若干个分组。在过程框404,编码器将至少一部分分组编码为若干个帧。这些帧可包括参考帧325(诸如I帧和P帧),还可包括B帧,后者不被用作为任何其它帧类型的参考。诸如跳帧等其它类型的帧也可被编码为帧。在可选的过程框406,帧(通常是参考帧)可被高速缓存在编码器处。如果该帧被高速缓存,则它在其帧头部被赋予类型“已高速缓存的帧”(CF)。然后,被高速缓存的帧连同其它帧被发送到解码器。一旦帧在解码器处,在过程框410,它就被高速缓存在解码器高速缓存中。典型的被高速缓存的帧类型是P帧和I帧。
如果后续的参考帧被丢失,则已高速缓存的帧可被用来解压缩以后的相关帧,如在过程框412所示。流程图400仅示出一个示例性实施例,且无论如何不应被解释为是限制性的。例如,在决策框406,与编码器相关联的高速缓存是可选的。方法400可在如图2和3中所示的视频编解码器中实现,而该视频编解码器可在软件、硬件、或两者的结合中实现。
3.用于高速缓存帧的示例性方法图5A到5D示出高速缓存帧以在有噪网络中实现视频编解码器的最优性能的示例性方法。参考图5D,在一个示例性实施例中,帧通过诸如RTP(实时传输协议)508D的主信道从编码器502D被发送到解码器506D。网络常常丢失分组,或乱序地传递分组。分组还可能被延迟随机的时间量,这也可能令它们不可使用。分组丢失事件被解码器506D检测到,并通过反馈信道从解码器向编码器502D发信号通知。为正确重构消息,在一些实施例中,RTP 508D头部包含信息和序列号,它们都允许接收器正确地重新将分组排序并确定所丢失的分组个数。RTP 508D由其控制协议(RTPC)504D增强,后者用来提供用于监视数据传递的反馈信道。每个数据分组都有一个序列号,通常每个后续数据分组递增1。在一个示例性实施例中,当某个序列号未被接收到时,分组丢失被解码器506D检测到。一旦解码器506D发现丢失分组,它即通过反馈信道504D发送消息,以通知编码器502D哪个(或哪些)分组已被丢失。在一些实施例中,仅提供关于最初丢失的分组的信息。在其它实施例中,还提供诸如漏失的分组数或丢失的具体分组的列表等附加信息。较佳的是在报告窗口中使用最早丢失的分组的时间戳来发送分组丢失的位置。此信息使编码器502D能够确定要使用哪个已高速缓存的参考。
参考图5A,编码器502A周期性地将帧高速缓存到帧高速缓存504A中。要高速缓存哪些帧,高速缓存应该多频繁地发生,以及在单次应能高速缓存的帧数是非常取决于实现方式的。在一些实施例中,被高速缓存的帧是参考帧,即P帧和I帧。也可高速缓存其它帧类型。被高速缓存的帧506A(或其副本)还被发送给解码器512A。也存储在编码器高速缓存504A中的这样一个帧在其头部中被定义为帧类型CF(已高速缓存的帧)。在一些实施例中,此头部通过令解码器512A知道此特定帧应被高速缓存在解码器高速缓存510A中以供稍后使用,来允许编码器502A和解码器512A的同步。以下的表1示出包括已高速缓存的帧(CF)类型在内的帧类型代码的一个示例性实施例。
表1帧类型代码


当CF类型的帧508A到达解码器512A时,它被存储在解码器帧高速缓存510A中。在解码器512A处存储每个CF类型的帧是一种同步编码器和解码器帧高速缓存504A和510A的方法。但是,还构想了同步这些帧高速缓存的其它方法。
当在解码器504B处检测到分组丢失502B时,使用反馈信道504D将此丢失向编码器502A回报。较佳的是,此报告包含时间戳信息,它允许编码器502A选择正确的已高速缓存的帧504A来参考。在其它实施例中,使用最后被高速缓存的帧。一旦选择了一个已高速缓存的帧504C,即由编码器502C使用该帧504C来编码下一个帧506C,较佳的是帧506C是P帧,但也可编码I帧或其它帧类型。这个使用已高速缓存的帧506C来编码的帧被称为“超P”帧(SP帧),并在其头部相应通知。SP帧的一种示例性帧类型代码字在以上的表1中示出。
当解码器512C接收SP帧508C时,它使用本地高速缓存的帧510C将该SP帧508C解码成未压缩的帧(U帧)514C。使用此方法,解码器512C处的恢复时间是分组丢失事件和SP帧到达之间的时间间隔。如果这个所生成的SP帧508C在发送期间被丢失,则解码器512C将继续发送分组丢失报告,直至新的参考帧(一般是类型P、SP或I)到达。从分组丢失起的实际恢复时间主要是根据分组丢失报告时间间隔而定。
在一些实施例中,编码器502A高速缓存帧504A,并周期性地向解码器发送已高速缓存的帧506A的副本。被发送的已高速缓存的帧之间的时间长度是非常取决于实现方式的。一些实现可以相等的时间间隔高速缓存帧。其它实现可以本身取决于诸如网络速度或网络所经受的丢失量等系统变量的时间间隔高速缓存帧。
4.示例性系统实施例图6示出可用于实现基于解码器和编码器的帧高速缓存的视频系统600的另一个示例性实施例。视频系统600并不试图对本发明的使用范围或功能提出任何限制,因为本发明可在各种通用或专用视频系统中实现。
该视频系统包括至少一个编码器602。此编码器还包括编码器高速缓存604。在所示实施例中,高速缓存驻留在编码器602内部,但在其它实现中可驻留在视频系统内部的其它地方。编码器高速缓存604被启用以存储一个或多个视频帧节606。作为建议而非限制,这些帧节可包括若干个块、宏块、若干个片、完整的帧、帧组、或本领域技术人员可构想的帧的任何其它划分。编码器高速缓存604可仅高速缓存一个帧部分,可高速缓存两个部分,或合乎给定实现需要的任何数量的部分。视频系统600还包括解码器608。类似于编码器602,解码器608包含解码器高速缓存610,它用来存储一个或多个视频帧部分612。这些视频帧部分可包括一个或多个块、宏块、片、或可包括完整的帧、帧组、或本领域技术人员可构想的帧的任何其它部分。解码器高速缓存610可被设定为存储一个帧部分、两个帧部分、或任何其它数量的帧部分。
视频系统600还包括同步器614,它用来确保编码器高速缓存604和解码器高速缓存610包含实际相同的信息。如前文所讨论,同步器可包括附加到某些帧或部分帧的唯一帧头部,它由编码器602所应用,以通知解码器608要高速缓存特定的一个或一部分帧。例如,帧可被存储在编码器高速缓存604处,还可被发送给解码器608。该帧可具有加以区别的CF(已高速缓存的帧)头部,以指示它有副本存储在编码器高速缓存604中。当解码器608检测到分组丢失或其它使得对帧进行解码变得困难或不可能的破坏时,编码器602从存储在编码器高速缓存604中的帧编码的后续帧可被标记以指示此帧可从解码器高速缓存610处的帧解码。一些实现可在解码器高速缓存610处存储多个帧;在此类情形中,头部还可任选地包含足以确定应该使用哪个已高速缓存的帧的其它信息。还构想了其它同步方法。发送器616将帧从编码器602发送到解码器608。
5.计算环境上述的帧高速缓存的实现可在实现图像和视频信号处理的各种设备中的任何一种上进行,这些设备包括计算机、图像和视频录制、发送和接收设备、便携式视频播放器、视频会议、web视频流传输应用程序、等等。图像和视频编码技术可以在硬件电路中(例如,在ASIC电路、FPGA等中)、以及在诸如图7中所示等计算机或其它计算环境内部执行(无论是在中央处理单元(CPU)上、还是在专用图形处理器、视频卡等上执行)的视频处理软件中实现。
图7示出可实现所描述的帧高速缓存的适用的计算环境700的一般化示例。计算环境700并不视图对本发明的使用范围或功能提出任何限制,因为本发明可在各种通用或专用计算环境中实现。
计算环境700包括至少一个处理单元710和存储器720。此最基本的配置730被包括在虚线内部。处理单元710执行计算机可执行的指令,并可以是真实或虚拟的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器720可以是易失性存储器(例如,寄存器、高速缓存、RAM、等等)、非易失性存储器(例如,ROM、EEPROM、闪存、等等)、或这两者的某种组合。存储器720存储实现所述编码器/解码器高速缓存的软件780。
计算环境可具有其它特征。例如,计算环境700包括存储740、一个或多个输入设备750、一个或多个输出设备760、以及一个或多个通信连接770。诸如总线、控制器或网络等互连机制(未示出)将计算环境700的各个组件相互连接。通常,操作系统软件(未示出)为计算环境700中执行的其它软件提供操作环境,并协调计算环境700的各组件的活动。
存储740可以是可移动或不可移动的,并且包括磁盘、磁带或磁带盒,CD-ROM、CD-RW、DVD,或任何其它可被用来存储信息并且在计算环境700内部可被访问的任何其它介质。存储740存储实现编码器/解码器高速缓存方案的软件780。
输入设备750可以是诸如键盘、鼠标、笔、或轨迹球等触摸式输入设备,语音输入设备,扫描输入设备,或向计算环境700提供输入的其它设备。对于音频,输入设备750可以是接受模拟或数字形式的音频输入的声卡或类似设备,或者是向计算环境700提供音频样本的CD-ROM读出器。输出设备760可以是显示器、打印机、扬声器、CD写入器、或可提供来自计算环境700的输出的其它设备。
通信连接770允许通过通信介质到另一计算实体的通信。通信介质传递已调制数据信号形式的诸如计算机可执行指令、已压缩的音频或视频信息、或其它数据信息。已调制信号是以在信号中将信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括用电的、光的、RF、红外、声学或其它载波实现的有线或无线技术。
本文中的编码器/解码器帧高速缓存技术可以在计算机可读介质的通用上下文中描述。计算机可读介质是在计算环境700内部可被访问的任何可用介质。作为示例,而非限制,以计算环境700来说,计算机可读机制包括存储器720、存储740、通信介质、以及以上的任何组合。
本文中的编码器/解码器帧高速缓存可以在真实或虚拟的目标处理器上的计算环境中执行的计算机可执行指令(诸如程序模块中所包括的那些指令)的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构、等等。各程序模块的功能可按各实施例中的需要,在程序模块之间被组合或分开。程序模块的计算机可执行指令可在本地或分布式计算环境内部被执行。
为了说明,此详细描述使用诸如“确定”、“发送”、“编码”、“解码”、以及“应用”等术语来描述计算环境中的计算机操作。这些术语是对计算机所执行的操作的高度抽象,并且不应与人类所执行的动作相混淆。对应于这些术语的实际计算机操作根据实现而有所不同。
考虑到可应用我们的发明的原理的许多可能的实施例,应当认识到,这些详细的实施例只是示例性的,且不应被当作限制了我们的发明的范围。相反,我们要求将落入所附权利要求书及其等效技术方案的范围和精神之内的所有此类实施例作为我们的发明的保护范围。
权利要求
1.一种通过网络发送信号的方法,包括以下步骤将一部分所述信号分配给分组;编码器将一部分分组编码为帧;通过所述网络将帧发送到解码器;在所述解码器处高速缓存至少一个帧;以及所述解码器至少部分地使用已高速缓存的帧来解释从所述编码器发送来的至少一个后续帧。
2.如权利要求1所述的方法,其特征在于,所述方法还包括在所述编码器处高速缓存至少一个帧。
3.如权利要求2所述的方法,其特征在于,所述方法还包括周期性地在所述编码器处高速缓存所述帧。
4.如权利要求3所述的方法,其特征在于,高速缓存之间的周期可以是设定的时间间隔,或者可以是可变的时间间隔。
5.如权利要求2所述的方法,其特征在于,所述至少一个后续帧是至少部分地使用已高速缓存的编码器帧在所述编码器处生成的。
6.如权利要求5所述的方法,其特征在于,同一帧的副本被高速缓存在所述解码器和所述编码器处,且所述方法还包括与在所述解码器处高速缓存所述帧同步地在所述编码器处高速缓存所述帧。
7.如权利要求1所述的方法,其特征在于,分组丢失由所述解码器检测,且其中,分组丢失检测信号是通过反馈信道向所述编码器发送的。
8.如权利要求7所述的方法,其特征在于,所述分组丢失有与之相关联的时间,且其中,分组丢失时间被发送到所述编码器。
9.如权利要求7所述的方法,其特征在于,所述编码器接收所述分组丢失信号,并且一接收到所述信号即使用高速缓存在所述编码器处的帧来构造分组丢失帧。
10.如权利要求9所述的方法,其特征在于,所述分组丢失帧还包括帧头部,且其中,所述分组丢失帧在所述帧头部中被加以区别地命名。
11.如权利要求1所述的方法,其特征在于,所述编码器周期性地向所述解码器发送已高速缓存的帧。
12.如权利要求1所述的方法,其特征在于,所述信号是图像信号、视频信号、音频信号、或语音信号。
13.一种存储计算机可执行指令的计算机可读介质,所述计算机可执行指令用于使计算机系统执行如权利要求1所述的方法。
14.如权利要求1所述的方法,其特征在于,高速缓存在所述编码器处的所述至少一个帧是参考帧。
15.一种在有损网络内流传输视频的系统,包括将数据分组编码成帧的编码器;存储帧的至少一部分的副本的编码器高速缓存;存储帧的至少一部分的副本的解码器高速缓存;可用于检测分组丢失的解码器;并且在这一检测之后,发信号通知所述编码器使用存储在所述编码器高速缓存中的帧的该部分来编码后续的SP高速缓存帧;以及将帧从所述编码器发送到所述解码器的发送器。
16.如权利要求15所述的系统,其特征在于,所述帧还包括头部,且其中,所述SP高速缓存帧在所述头部中被加以区别地命名。
17.如权利要求15所述的系统,其特征在于,还包括同步器,它将所述编码器高速缓存中的帧的该部分与所述解码器高速缓存中的帧的该部分同步。
18.如权利要求15所述的系统,其特征在于,所述编码器向所述解码器发送存储在所述编码器高速缓存中的帧该部分的副本。
19.如权利要求15所述的系统,其特征在于,所述解码器使用存储在所述解码器高速缓存中的帧的该部分来解码从所述编码器发送来的至少一个后续帧。
20.一种视频处理器,包括将数据分组编码成帧的装置;在编码器处缓存至少一个帧的装置;将所述帧从所述编码器发送到解码器的装置;在所述解码器处解码所述帧的装置;在所述解码器处高速缓存所述至少一个帧的装置;将所述编码器处高速缓存的帧与所述解码器处高速缓存的帧同步的装置;检测分组丢失的装置;当检测到分组丢失时使用所述编码器处高速缓存的帧来生成特殊参考帧的装置;以及使用所述解码器处高速缓存的帧来解释所述解码器处的特殊参考帧的装置。
全文摘要
揭示了使用帧高速缓存来改善分组丢失恢复的各种新的和非显而易见的装置和方法。所揭示的实施例中的一个是一种在编码器及其对应的解码器内使用周期性和同步的帧高速缓存的方法。当解码器发现分组丢失时,它通知编码器,后者随即基于存储在编码器和解码器两处的若干共享帧中的一个生成帧。当解码器接收到这个生成的帧时,它能够使用其本地已高速缓存的帧来对其进行解码。
文档编号G06F12/00GK1816150SQ200510128750
公开日2006年8月9日 申请日期2005年11月30日 优先权日2004年12月30日
发明者林志隆, 夏明辉, 徐柏翔, S·瑞古纳莎恩, T·W·胡尔库姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1