使用反向排序来压缩视频帧组的制作方法

文档序号:19792792发布日期:2020-01-24 14:40阅读:270来源:国知局
使用反向排序来压缩视频帧组的制作方法



背景技术:

数字视频流可以使用一系列帧或静止图像来表示视频。数字视频可以用于各种应用,包括:例如,视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流可以包含大量数据,并且消耗用于处理、传输或存储视频数据的计算设备的大量计算或通信资源。已经提出了各种方法(包括压缩和其他编码技术)来减少视频流中的数据量。



技术实现要素:

本公开大体上涉及对视频数据进行编码和解码,更具体地涉及使用用于对视频数据进行编码和解码的反向排序来压缩视频帧的组。

本公开描述了编码方法和装置。根据本公开的实施方式的方法包括:在针对帧组的编码器的预测过程之前,确定是否以反向显示顺序来排列帧组。该帧组由具有显示顺序的视频序列的帧的适当子集形成。该方法还包括:响应于对以反向显示顺序排列帧组的确定,在帧组的预测过程之前以反向显示顺序排列帧组;以及对帧组执行预测过程。执行预测过程可以包括:以输入顺序接收帧组作为到预测过程的输入,该输入顺序包括显示顺序或反向显示顺序之一;使用组代码化结构以代码化顺序排列以输入顺序接收到的帧组,该组代码化结构定义至少一个后向参考帧以包括在候选参考帧集合内;以及使用候选参考帧集合以代码化顺序预测帧组。

本公开还描述了解码方法和装置。根据本公开的实施方式的方法包括:从编码比特流中确定编码器的预测过程是否以显示顺序或反向显示顺序之一接收到帧组作为输入;以及对帧组执行解码器的预测过程。该帧组由具有显示顺序的视频序列的帧的适当子集形成,并且执行预测过程包括:从编码比特流中以使用代码化结构排列的代码化顺序接收帧组作为到解码器的预测过程的输入,该组代码化结构定义至少一个后向参考帧以包括在候选参考帧集合内;以及使用候选参考帧集合以代码化顺序预测帧组。该方法还包括:使用预测过程的预测结果来生成解码帧组;以及,响应于编码器的预测过程以反向显示顺序接收到帧组作为输入的确定,缓冲解码帧组;以及以显示顺序输出缓冲的解码帧。

根据本公开的实施方式的装置包括非暂时性存储介质或存储器和处理器。该介质包括可由处理器执行的指令以执行方法,该方法包括:从编码比特流中的指示中确定编码器的预测过程是否以输入顺序接收到帧组,该输入顺序包括显示顺序或反向显示顺序之一,并且该帧组由具有显示顺序的视频序列的帧的适当子集形成。该方法还包括:通过以下对帧组执行解码器的预测过程:从编码比特流中以使用组代码化结构排列的代码化顺序接收帧组作为到解码器的预测过程的输入,该组代码化结构修改输入顺序使得仅当帧组中的单独帧被用作候选参考帧集合内的后向预测帧时才在相邻的在前帧之前将该单独帧输入到预测过程;以及使用候选参考帧集合以代码化顺序预测帧组。该方法还包括:使用预测过程的预测结果来生成解码帧组;以及,响应于输入顺序是反向显示顺序,缓冲解码帧组中的每一个,直到生成解码帧组中的所有帧为止;以及仅在缓冲解码帧组中的所有帧之后,才以显示顺序输出缓冲的解码帧组。

根据本公开的实施方式的装置包括非暂时性存储介质或存储器和处理器。该介质包括可由处理器执行的指令以执行方法,该方法包括:在帧组的预测过程之前,该帧组由具有显示顺序的视频序列的帧的适当子集形成,确定是否以反向显示顺序排列帧组。该方法还包括:响应于对以反向显示顺序排列帧组的确定,在帧组的预测过程之前以反向显示顺序排列帧组。该方法还包括:通过以下对帧组执行预测过程:以输入顺序接收帧组作为到预测过程的输入,该输入顺序包括显示顺序或反向显示顺序之一;使用组代码化结构以代码化顺序排列以输入顺序接收到的帧组,该组代码化结构定义至少一个后向参考帧以包括在候选参考帧集合内;以及使用候选参考帧集合以代码化顺序预测帧组。

在以下对实施例、所附权利要求和附图的详细描述中公开了本公开的这些和其他方面。

附图说明

本文的描述参照了下面描述的附图,其中,除非另有说明,否则贯穿若干视图,相同的附图标记指代相同的部分。

图1是视频编码和解码系统的示意图。

图2是可以实施发送站或接收站的计算设备的示例的框图。

图3是待编码和随后解码的典型视频流的示意图。

图4是根据本公开的实施方式的编码器的框图。

图5是根据本公开的实施方式的解码器的框图。

图6是参考帧缓冲器的示例的框图。

图7是按照视频序列的显示顺序的帧组的示意图。

图8是图7的帧组的代码化顺序的第一示例的示意图。

图9a是分层多层结构的示意图,其图示了按照图7的帧组的代码化顺序的第二示例的可用参考帧。

图9b是根据图9a的各层的图7的帧组的代码化顺序的第二示例的示意图。

图10是按照视频序列的反向显示顺序的图7的帧组的示意图。

图11是图10的帧组的代码化顺序的第一示例的示意图。

图12a是分层多层结构的示意图,其图示了按照图10的帧组的代码化顺序的第二示例的可用参考帧。

图12b是根据图12a的各层的图10的帧组的代码化顺序的第二示例的示意图。

图13是用于使用反向排序对视频帧进行编码的过程的流程图。

图14是用于使用反向排序对视频帧进行解码的过程的流程图。

具体实施方式

可以通过多种技术来压缩视频流,以减少传输或存储视频流所需的带宽。可以将视频流编码为涉及压缩的比特流,然后将其传输到解码器,该解码器可以对该视频流进行解码或解压缩以准备进行查看或进一步处理。对视频流的压缩通常通过空间和/或运动补偿预测来利用视频信号的空间和时间相关性。例如,帧间预测使用一个或多个运动向量来生成类似于要使用先前编码和解码的像素进行编码的当前块的块(也称为预测块)。通过对(多个)运动向量和两个块之间的差进行编码,接收编码信号的解码器可以重新创建当前块。

用于在帧间预测过程中生成预测块的每个运动向量指的是除了当前帧之外的帧,即,参考帧。参考帧可以位于视频流序列中的当前帧之前或之后。在一些情况下,可能存在用于对视频序列的当前帧的块进行编码或解码的三个参考帧。一个是可以称为黄金帧的帧。另一个是最近编码或解码的帧。最后是替代参考帧,该参考帧在序列中的一个或多个帧之前进行编码或解码,但是以输出显示顺序在这些帧之后显示。通过这种方式,替代参考帧是可用于后向预测的参考帧。当用于对当前帧内的块进行编码或解码时的参考帧的效率可以基于所得的信噪比或速率失真的其他测度来测量。

视频帧可以以帧组(有时称为图片组或黄金帧组)被代码化。每个组包含一系列连续的视频帧,诸如,4至16个帧。连续的组按显示顺序被代码化,而组内的视频帧只有在帧间预测过程期间可用作后向参考帧时才可以按显示顺序被代码化。

本公开的实施方式包括代码化,由此可以将组内的视频帧以两个不同顺序(显示顺序或反向显示顺序)之一输入到帧间预测过程。在组的开始处用信号通知比特,该比特通知解码器该组使用哪个顺序。在一些实施方式中,该比特可以被包括在帧组的报头中。如果该比特被设置为指示该组中的帧以反向显示顺序被代码化,则解码器可以缓冲所有已代码化的帧,并且在对该组进行完全解码并准备输出显示时对其重新排序。通过反转组内的帧的序列,与以显示顺序考虑组内的帧的序列时可用的帧相比,可以将不同的帧用作后续帧间预测过程的参考帧。可以提高帧组的代码化效率。

本文首先参照可以实施反向排序的系统来描述使用反向排序压缩视频帧组的更多细节,包括关于何时使用反向排序的组的决策过程。

图1是视频编码和解码系统100的示意图。例如,发送站102可以是具有诸如图2所描述的硬件的内部配置的计算机。然而,发送站102的其他合适的实施方式也是可能的。例如,发送站102的处理可以分布在多个设备之间。

网络104可以连接用于对视频流进行编码和解码的发送站102和接收站106。具体地,可以在发送站102中对视频流进行编码,并且可以在接收站106中对编码视频流进行解码。网络104可以是例如互联网。在该示例中,网络104还可以是局域网(lan)、广域网(wan)、虚拟专用网(vpn)、蜂窝电话网络或将视频流从发送站102传输到接收站106的任何其他装置。

在一个示例中,接收站106可以是具有诸如图2所描述的硬件的内部配置的计算机。然而,接收站106的其他合适的实施方式也是可能的。例如,接收站106的处理可以分布在多个设备之间。

视频编码和解码系统100的其他实施方式也是可能的。例如,一种实施方式可以省略网络104。在另一实施方式中,可以对视频流进行编码,然后将其存储以在以后的时间传输到接收站106或具有非暂时性存储介质或存储器的任何其他设备。在一种实施方式中,接收站106(例如,经由网络104、计算机总线和/或某种通信路径)接收编码视频流,并且存储该视频流以用于以后的解码。在示例实施方式中,实时传输协议(rtp)用于通过网络104传输编码视频。在另一实施方式中,可以使用除了rtp之外的传输协议,例如,基于超文本传输协议(http)的视频流协议。

例如,当在视频会议系统中使用时,如下所述,发送站102和/或接收站106可以包括对视频流进行编码和解码的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码视频比特流以解码和查看,并且进一步编码并将其自身的视频比特流传输给视频会议服务器以供其他参与者解码和查看。

图2是可以实施发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实施图1的发送站102和接收站106中的一个或两个。计算设备200可以是包括多个计算设备的计算系统的形式,或者是一个计算设备的形式,例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。

计算设备200中的cpu202可以是中央处理单元。可替代地,cpu202可以是任何其他类型的设备或多个设备,其能够操纵或处理现有的或此后开发的信息。尽管所公开的实施方式可以用所示的一个处理器(例如,cpu202)来实践,但是可以使用一个以上的处理器来实现速度和效率上的优势。

在实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。任何其他合适类型的存储设备或非暂时性存储介质都可以用作存储器204。存储器204可以包括由cpu202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括至少一个程序,该程序允许cpu202执行此处描述的方法。例如,应用程序210可以包括应用1至n,其进一步包括执行此处描述的方法的视频代码化应用。计算设备200还可以包括辅助存储214,其可以是例如与移动计算设备一起使用的存储卡。由于视频通信会话可能包含大量信息,所以它们可以全部或部分地存储在辅助存储214中,并且根据需要加载到存储器204中。

计算设备200还可以包括一个或多个输出设备,诸如,显示器218。在一个示例中,显示器218可以是将显示器与可操作为感测触摸输入的触敏元件组合的触敏显示器。显示器218可以经由总线212耦合至cpu202。除了显示器218之外或作为显示器218的替代,可以提供允许用户编程或以其他方式使用计算设备200的其他输出设备。当输出设备是显示器或包括显示器时,可以以各种方式实施显示器,包括通过液晶显示器(lcd)、阴极射线管(crt)显示器或发光二极管(led)显示器,诸如,有机led(oled)显示器。

计算设备200还可以包括图像感测设备220(例如,相机)或现有的或此后开发的可以感测图像(诸如,操作计算设备200的用户的图像)的任何其他图像感测设备220,或者与其通信。图像感测设备220可以被定位成使得其朝向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置为使得视野包括与显示器218直接相邻的区域,并且从该区域可看到显示器218。

计算设备200还可以包括声音感测设备222(例如,麦克风)或现有的或此后开发的可以感测计算设备200附近的声音的任何其他声音感测设备,或者与其通信。声音感测设备222可以被定位成使得其朝向操作计算设备200的用户,并且可以被配置为接收用户在用户操作计算设备200时发出的声音,例如,语音或其他话语。

尽管图2将计算设备200的cpu202和存储器204描绘为集成到一个单元中,但是可以使用其他配置。cpu202的操作可以分布在可以直接耦合或跨局域网或其他网络耦合的多个机器(其中,单独机器可以具有一个或多个处理器)上。存储器204可以分布在多个机器上,诸如,基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。尽管此处被描述为一根总线,但是计算设备200的总线212可以由多根总线组成。进一步地,辅助存储214可以直接耦合至计算设备200的其他组件,或者可以经由网络访问,并且可以包括诸如存储卡等集成单元或诸如多个存储卡等多个单元。因此,可以以多种配置来实施计算设备200。

图3是要编码和随后解码的视频流300的示例的示意图。视频流300包括视频序列302。在下一级别,视频序列302包括多个相邻帧304。尽管三个帧被描绘为相邻帧304,但是视频序列302可以包括任何数量的相邻帧304。然后可以将相邻帧304进一步细分为单独的帧,例如,帧306。在下一级别,帧306可以被分为一系列平面或片段308。例如,片段308可以是允许并行处理的帧的子集。片段308也可以是可以将视频数据分离成单独的颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对片段308进行采样。

不管帧306是否被分为片段308,帧306都可以进一步细分为块310,其可以包含对应于例如帧306中的16x16像素的数据。块310也可以被布置为包括来自像素数据的一个或多个片段308的数据。块310还可以具有任何其他合适的大小,诸如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素或更大。除非另有说明,否则术语块和宏块在本文中可互换使用。

图4是根据本公开的实施方式的编码器400的框图。如上所述,编码器400可以实施在发送站102中,诸如通过提供存储在存储器(例如,存储器204)中的计算机软件程序来实施。计算机软件程序可以包括机器指令,该机器指令在由诸如cpu202等处理器执行时使发送站102以图4所描述的方式对视频数据进行编码。编码器400也可以被实施为例如包括在发送站102中的专用硬件。在一个特别期望的实施方式中,编码器400是硬件编码器。

编码器400具有用于在(由实线连接线示出的)正向路径中执行各种功能以使用视频流300作为输入来产生编码或压缩比特流420的以下阶段:帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408。编码器400还可以包括(由虚线连接线示出的)重构路径以重构帧以对未来的块进行编码。在图4中,编码器400具有用于在重构路径中执行各种功能的以下阶段:去量化阶段410、逆变换阶段412、重构阶段414和环路滤波阶段416。编码器400的其他结构变型可以用于对视频流300进行编码。

当呈现视频流300以进行编码时,可以以块为单位处理相邻帧304(诸如,帧306)。在帧内/帧间预测阶段402中,可以使用帧内预测(也称为intra-prediction)或帧间预测(也称为inter-prediction)来对相应块进行编码。无论如何,都可以形成预测块。在帧内预测的情况下,可以从当前帧中先前已被编码和重构的样本形成预测块。在帧间预测的情况下,可以从一个或多个先前构造的参考帧中的样本形成预测块。下面进一步详细讨论块组的参考帧的指定。

接下来,仍然参照图4,可以在帧内/帧间预测阶段402从当前块减去预测块以产生残差块(也称为残差)。变换阶段404使用基于块的变换将残差变换为例如频域中的变换系数。量化阶段406使用量化器值或量化等级将变换系数转换为离散的量子值,其被称为量化的变换系数。例如,可以将变换系数除以量化器值并且截断。然后,量化的变换系数通过熵编码阶段408进行熵编码。然后将熵编码的系数以及用于对块进行解码的其他信息(例如可以包括所使用的预测类型、变换类型、运动向量和量化器值)一起输出到压缩比特流420。压缩比特流420可以使用各种技术(诸如,可变长度编码(vlc)或算术编码)来格式化。压缩比特流420也可以被称为编码视频流或编码视频比特流,并且这些术语在本文中将可互换地使用。

图4中的(由虚线连接线示出的)重构路径可以用于确保(下面描述的)编码器400和解码器500都使用相同的参考帧来解码压缩比特流420。重构路径执行与在解码过程期间发生的将在下面更详细讨论的功能类似的功能,这些功能包括在去量化阶段410对量化的变换系数进行去量化以及在逆变换阶段412对去量化的变换系数进行逆变换以产生导数残差块(也称为导数残差)。在重构阶段414中,可以将在帧内/帧间预测阶段402所预测的预测块添加到导数残差以创建重构块。可以将环路滤波阶段416应用于重构块,以减少诸如块伪影等失真。

编码器400的其他变型可以用于对压缩比特流420进行编码。例如,针对某些块或帧,基于非变换的编码器可以直接量化残差信号而无需变换阶段404。在另一实施方式中,编码器可以具有在公共阶段中组合的量化阶段406和去量化阶段410。

图5是根据本公开的实施方式的解码器500的框图。例如,通过提供存储在存储器204中的计算机软件程序,可以在接收站106中实施解码器500。该计算机软件程序可以包括机器指令,该机器指令在由诸如cpu202等处理器执行时使接收站106以图5所描述的方式解码视频数据。解码器500也可以在例如包括在发送站102或接收站106中的硬件中实施。

类似于上面讨论的编码器400的重构路径,解码器500在一个示例中包括用于执行各种功能以从压缩比特流420产生输出视频流516的以下阶段:熵解码阶段502、去量化阶段504、逆变换阶段506、帧内/帧间预测阶段508、重构阶段510、环路滤波阶段512和去块滤波阶段514。解码器500的其他结构变型可以用于解码压缩比特流420。

当呈现压缩比特流420进行解码时,压缩比特流420内的数据元素可以由熵解码阶段502解码以产生一组量化的变换系数。去量化阶段504对量化的变换系数进行去量化(例如,通过将量化的变换系数乘以量化器值),并且逆变换阶段506对去量化的变换系数进行逆变换以产生可以与由编码器400中的逆变换阶段412所创建的导数残差相同的导数残差。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测阶段508来创建与在编码器400(例如,在帧内/帧间预测阶段402)中所创建的相同的预测块。在重构阶段510中,可以将预测块添加到导数残差以创建重构块。可以将环路滤波阶段512应用于重构块以减少块伪影。

可以将其他滤波应用于重构块。在该示例中,将去块滤波阶段514应用于重构块以减少块失真,并且将结果作为输出视频流516输出。输出视频流516也可以称为解码视频流,并且这些术语在本文中将可互换地使用。解码器500的其他变型可以用于解码压缩比特流420。例如,解码器500可以在没有去块滤波阶段514的情况下产生输出视频流516。

图6是参考帧缓冲器600的示例的框图。参考帧缓冲器600存储用于对视频序列的帧的块进行编码或解码的参考帧。在该示例中,参考帧缓冲器600包括被识别为最后帧last_frame602、黄金帧golden_frame604和替代参考帧altref_frame606的参考帧。参考帧的帧头包括虚拟索引608,该虚拟索引608指向参考帧缓冲器600内存储参考帧的位置。参考帧映射612将参考帧的虚拟索引608映射到存储参考帧的存储器的物理索引614。在两个参考帧是同一帧的情况下,即使这些参考帧具有不同的虚拟索引,它们也将具有相同的物理索引。一个或多个刷新标志610可以用于从参考帧缓冲器600移除一个或多个所存储的参考帧,例如,以清除参考帧缓冲器600中用于新参考帧的空间,其中,没有其他块来使用所存储的参考帧进行编码或解码,或者对新帧进行编码或解码并将其识别为参考帧。参考帧缓冲器600内的参考位置的数量,所使用的类型和名称仅是示例。

存储在参考帧缓冲器600中的参考帧可以用于识别运动向量,以预测要编码或解码的帧的块。取决于用于预测当前帧的当前块的预测类型,可以使用不同的参考帧。例如,在双向预测中,可以使用存储为last_frame602或golden_frame604的帧对当前帧的块进行前向预测,并且使用存储为altref_frame606的帧对当前帧的块进行后向预测。

可以在参考帧缓冲器600内存储有限数量的参考帧。如图6所示,参考帧缓冲器600可以存储多达八个参考帧,其中,每个所存储的参考帧可以与参考帧缓冲器的不同虚拟索引602相关联。尽管参考帧缓冲器600中的八个空间中的三个被指定为last_frame602、golden_frame604和altref_frame606的帧使用,但是仍有五个空间可用于存储其他参考帧。例如,参考帧缓冲器600中的一个或多个可用空间可以用于存储另外的替代参考帧。

在一些实施方式中,被指定为altref_frame606的替代参考帧可以是以显示顺序远离当前帧但是在其显示之前被编码或解码的视频序列的帧。例如,替代参考帧可以是按显示顺序在当前帧之后的十个、十二个或更多(或更少)的帧。另外的替代参考帧可以是按显示顺序更靠近当前帧的帧。按显示顺序更接近当前帧会增加参考帧的特征与当前帧的特征更类似的可能性。这样,一个或多个替代参考帧可以被存储在参考帧缓冲器600中,作为可用于后向预测的(多个)附加选项。

替代参考帧可能不直接对应于序列中的帧。替代地,可以使用一个或多个应用了滤波,被组合在一起或者被组合在一起并且被滤波的帧中的一个或多个来生成替代参考帧。替代参考帧可能不会显示。相反,它可以是仅为预测而生成和传输的帧或帧的一部分(即,在显示解码序列时将其省略)。

尽管参考帧缓冲器600被示为能够存储多达八个参考帧,但是参考帧缓冲器600的其他实施方式可能能够存储更多或更少的参考帧。此外,参考帧缓冲器600中的可用空间可以用于存储除了替代参考帧之外的帧。例如,可用空间可以存储倒数第二个帧(即,最后帧之前的第一帧)和/或倒数第三个帧(即,最后帧之前的第二帧)作为附加的前向预测参考帧。在一些示例中,后向帧可以被存储为附加的后向预测参考帧。

图7是按照视频序列的显示顺序的帧组的示意图。在该示例中,该帧组前面有帧700(其在一些情况下可以被称为关键帧或覆盖帧)并且包括八个帧702至716。使用帧组中的参考帧,帧700内没有块是帧间预测的。在该示例中,帧700是关键帧(也称为帧内预测帧),其指的是帧内的预测块仅使用帧内预测来预测的状态。然而,帧700可以是覆盖帧,该覆盖帧是帧间预测帧,其可以是前一帧组的重构帧。在帧间预测帧中,使用帧间预测来预测至少一些预测块。形成每个帧组的帧数可以根据视频空间/时间特性和其他编码配置(诸如,为随机访问或错误恢复选择的关键帧间隔)变化。可以通过诸如编码器400等两遍编码器的第一遍来确定形成每个组的帧数。在第一遍中,收集有关要编码的帧的统计信息,并且将其用于第二遍中的进一步处理。统计信息可以包括视频序列的帧之间的运动水平、帧速率、帧分辨率等。例如,序列之间的运动越少,可以存在的帧组内的帧数就越大。

无论如何形成帧组或多少帧形成该组,该视频序列只有一种显示顺序。在图7中,帧702至716上的数字(例如,1至8)指示帧在视频序列中的位置。帧700被编号为0以反映它在帧组之前。为了方便起见,在一些情况下,帧700可以被称为帧组的一部分,但是帧700的位置不会以反向排序改变,无论是否将其描述为帧组的帧。

每个帧组的代码化顺序可以与显示顺序不同。如上面简要提到的,这允许将位于视频序列中的当前帧之后的帧用作对当前帧进行编码的参考帧。诸如解码器500的解码器可以与诸如编码器400的编码器共享公共组代码化结构。该组代码化结构分配组内的相应帧可以在参考增益中扮演的不同角色(例如,最后帧、替代参考帧等),并且定义或指示组内的帧的代码化顺序。

图8是图7的帧组的代码化顺序的第一示例的示意图。图8的代码化顺序与第一组代码化结构相关联,由此单个后向参考帧可用于该组的每个帧。因为编码和解码顺序相同,所以在本文中通常将图8所示的顺序称为代码化顺序。关键帧或覆盖帧700被指定为参考帧缓冲器中的黄金帧(诸如,参考帧缓冲器600中的golden_frame604)。在该示例中,帧700是帧内预测的,所以它不需要参考帧,而是作为帧700的覆盖帧,该帧是来自前一组的重构帧,也不使用当前帧组的参考帧。该组中的最后帧716被指定为在参考帧缓冲器中的替代参考帧,诸如,参考帧缓冲器600中的altref_frame606。以该代码化顺序,帧716在帧700之后按显示顺序代码化,以便为其余帧702至714中的每一个提供后向参考帧。在代码化帧716的块时,帧700用作帧716的块的可用参考帧。

在代码化帧702至714中的每一个的块时,帧700(作为黄金帧)可用作前向预测帧,并且帧716(作为替代参考帧)可用作后向参考帧。进一步地,在对每个帧进行编码之后,更新诸如参考帧缓冲器600的参考帧缓冲器,以便更新对参考帧的识别,该参考帧也称为最后帧,其以类似于帧700的方式可用作前向预测帧。例如,当(例如,在帧内/帧间预测阶段402)预测帧702的块时,帧716(或者在一些情况下,帧700)也被指定为最后帧,诸如,参考帧缓冲器600中的last_frame602。当预测帧704的块时,将帧702指定为最后帧,将帧716或700替换为参考帧缓冲器中的最后帧。同样地,当预测帧706的块时,将帧704指定为最后帧,将帧702替换为参考帧缓冲器中的最后帧。继续该过程以按照编码顺序预测该组的其余帧708至714。通过这种方式,单个后向参考帧可用于帧702至714的块的帧间预测。

图9a是分层多层结构的示意图,其图示图7的帧组的代码化顺序的第二示例的可用参考帧,而图9b是根据图9a的各层的图7的帧组的代码化顺序的第二示例的示意图。图9a的各层以视频序列的显示顺序示出了帧700至716。

如上面所解释的,图7a所示的帧表示按照显示顺序在帧700之后的帧的子集或帧组,该帧700对应于该组的关键帧或前一覆盖帧(例如,golden_frame604),并且按照显示顺序的最后帧716对应于替代参考帧(例如,altref_frame606)。帧716在显示顺序上与帧700相距足够远,以具有不同的特征,但又没有太大差异,以至于无法将两者均用作该组的另一帧的参考帧。在该示例中,该组包括八个帧(不包括帧700),但是在一些实施方式中,组可以具有4至16的基数。选择距帧700最远的帧作为该组的替代参考帧会增加识别那些帧之间的特征之间的相似性的难度,除非视频序列具有相对静态的运动。然而,由于帧716被用作后向预测帧,所以选择比帧700更近的帧限制了帧716可以作为参考帧的帧数。

然而,如先前所暗指的,可以使用附加参考帧来提高代码化效率。获得附加参考帧的一个示例是将更接近黄金帧(例如,帧700)的帧指定为替代参考帧。通过以显示顺序将组内要编码或解码的帧组织为层,可以实现提供附加参考帧。与图8所图示的组代码化结构相比,图9a的各层表示具有多个后向参考帧的组代码化结构。在图9a中,第一层包括帧700(指定为黄金帧)和帧716(指定为替代参考帧)。第二层包括帧708,并且第三层包括帧704和712。第四层也是最后一层包括帧702、706、710和714。

帧708被选择为按照显示顺序在帧700与帧716之间均匀(或近似均匀)地间隔开的帧。同样地,可以按显示顺序将帧704和帧712相应地选择为在帧700与帧704之间以及在帧704与帧716之间均匀(或近似均匀)地间隔开的帧。在所示的示例中,其中,帧700和帧716间隔七个帧,帧708与每个帧间隔三个帧,帧704与帧700和帧708中的每一个间隔一个帧,并且帧712与帧708和帧716中的每一个间隔一个帧。

帧700是已编码或解码的第一帧,接着是第一替代参考帧(帧716),然后是另一替代参考帧(帧708)。帧的编码或解码顺序遵循图9a所示的分层结构。例如,前两个帧700、716对应于第一层。按照代码化顺序的第三帧(帧708)对应于第二层。第三层中有两个帧,并且第四层之后没有任何层。因此,按照代码化顺序的第四帧(帧704)对应于第三层中按照显示顺序的第一帧,接着是与第四层相对应的第五帧和第六帧,此处为帧702、706。然后,按照代码化顺序的第七帧对应于第三层中按照显示顺序的第二帧(帧712),接着是与第四层相对应的最后两个帧710、714,作为第八帧和第九帧。

从图9b可以看出,图9a的组代码化结构(类似于关于图8所描述的)导致仅当帧可以用作后向参考帧时才对帧进行无序编码。在这种布置中,图9a中的箭头部分地示出了分配给诸如参考帧缓冲器600等参考帧缓冲器内的帧的角色。与第一组代码化结构一样,将帧700指定为可用作帧702至716的块的前向预测帧的黄金或关键参考,并且将帧716指定为可用作帧702至714中的每一个的块的后向预测帧的第一替代参考帧。帧708被指定为第二替代参考帧,该第二替代参考帧可用作至少帧704、712的块的后向预测帧。帧704和712可以被指定为用于相应地预测至少帧702、706和帧710、714的块的附加后向或替代参考帧。在一些实施方式中,当帧被编码和解码时,帧712可以将参考帧缓冲器中的帧704替换为后向或替代参考帧。

最终,当视频帧被编码和解码时,参考帧缓冲器内的最后一个参考帧被更新,以用作按照代码化顺序的下一帧的块的另一前向预测帧。例如,关键帧或黄金帧700被指定为可用作帧716的前向参考帧的最后一个参考帧,帧716被指定为可用作帧708的前向参考帧的最后一个参考帧,帧708被指定为可用作帧704的前向参考帧的最后一个参考帧,帧704被指定为可用作帧702的前向参考帧的最后一个参考帧,帧702被指定为可用作帧706的前向参考帧的最后一个参考帧,帧706被指定为可用作帧712的前向参考帧的最后一个参考帧,帧712被指定为可用作帧710的前向参考帧的最后一个参考帧,并且帧710被指定为可用作帧714的前向参考帧的最后一个参考帧。

帧702、706、710和714不用作后向参考帧。因此,与第一组代码化结构一样,第二组结构导致仅在可将其用作后向参考帧时才对帧组中的帧进行无序代码化。当帧按照帧组的代码化顺序的位置在其按照显示顺序或反向显示顺序的前一相邻帧之前(以适用者为准)时,可以说该帧无序代码化。

图10是按照视频序列的反向显示顺序的图7的帧组的示意图。如上面所提到的,帧组前面有帧700,并且包括帧702至716。帧700的位置不以反向排序(即,反向显示顺序)而改变。然而,该组的帧以反向显示顺序排列,使得按照显示顺序的最终帧716是按照反向显示顺序的帧700之后的第一帧,并且按照显示顺序的第一帧702是按照反向显示顺序显示的帧700之后的最终帧。

图11是图10的帧组的代码化顺序的第一示例的示意图。图11的代码化(例如,编码或解码)顺序与关于图8所描述的第一组代码化结构相关联,由此单个后向参考帧可用于该组的每个帧。14.一般来说,在帧组以显示顺序包括前面有关键(例如,帧内预测的)帧或覆盖帧的第一帧、最后帧以及第一帧与最后帧之间的至少两个中间帧的情况下,具有单个后向参考帧的代码化顺序可以包括前面有关键帧或覆盖帧的第一帧,接着是最后帧以及以反向显示顺序在最后帧之后的至少两个中间帧。

在将第一组代码化结构应用于图10所示的帧组时,关键帧或覆盖帧700被指定为参考帧缓冲器中的黄金帧,诸如,参考帧缓冲器600中的golden_frame604。该组中的最终帧702被指定为参考帧缓冲器中的替代参考帧,诸如,参考帧缓冲器600中的altref_frame606。以该代码化顺序,在帧700之后以反向显示顺序对帧702进行代码化,以便为其余帧716至704中的每一个提供后向参考帧。在代码化帧702的块时,帧700用作帧702的块的可用参考帧。

在代码化帧716至704中的每一个的块时,帧700(作为黄金帧)可用作前向预测帧,并且帧702(作为替代参考帧)可用作后向参考帧。进一步地,在对每个帧进行编码和随后解码之后,诸如参考帧缓冲器600等参考帧缓冲器被更新,以便更新参考帧的识别,该参考帧也称为最后帧或最后一个参考帧,其以类似于帧700的方式可用作前向预测帧。例如,当(例如,在帧内/帧间预测阶段402)预测帧716的块时,帧702(或者在一些情况下,帧700)也被指定为最后帧,诸如,参考帧缓冲器600中的last_frame602。当预测帧714的块时,将帧716指定为最后帧,将帧702或700替换为参考帧缓冲器中的最后帧。同样地,当预测帧712的块时,将帧714指定为最后帧,将帧716替换为参考帧缓冲器中的最后帧。继续该过程以按照编码顺序预测该组的其余帧710至704。通过这种方式,单个后向参考帧可用于帧716至704的块的帧间预测。

图12a是分层多层结构的示意图,其图示了按照图10的帧组的代码化顺序的第二示例的可用参考帧。图12b是根据图12a的各层的图10的帧组的代码化顺序的第二示例的示意图。图12a的各层以视频序列的反向显示顺序示出了帧700至716。

提供以反向显示顺序(其中,该组以显示顺序包括前面有关键帧或覆盖帧的第一帧、最后帧以及第一帧与最后帧之间的至少两个中间帧(即,至少第一中间帧和第二组件帧))应用于帧组的多个后向参考帧的组代码化结构可以产生代码化顺序,其中,第一帧前面有关键帧或覆盖帧,然后是至少两个中间帧中的第二中间帧、最后帧和至少两个中间帧中的第一中间帧。这导致至少两个帧被无序编码,以用作用于后向帧间预测的候选参考帧。

图12a的各层表示图9a所描述的应用于图10所示的帧组的组代码化结构。该组代码化结构提供了多个后向参考帧,并且仅是各层的可能实施方式的一个示例。第一层包括帧700(指定为黄金帧)和帧702(指定为替代参考帧)。第二层包括帧710,并且第三层包括帧714和706。第四层也是最后一层包括帧716、712、708和704。

帧710被选择为按照反向显示顺序在帧700与帧702之间均匀(或近似均匀)地间隔开的帧。同样地,可以将帧714和帧706相应地选择为按反向显示顺序在帧700与帧710之间以及在帧710与帧702之间均匀(或近似均匀)地间隔开的帧。在所示的示例中,其中,帧700和帧702间隔七个帧,帧710与每个帧间隔三个帧,帧714与帧700和帧710中的每一个间隔一个帧,并且帧706与帧710和帧702中的每一个间隔一个帧。

帧700是已编码或解码的第一帧,接着是第一替代参考帧(帧702),然后是另一替代参考帧(帧710)。帧的编码或解码顺序遵循图12a所示的分层结构。例如,前两个帧700、702对应于第一层。按照代码化顺序的第三帧(帧710)对应于第二层。第三层中有两个帧,并且第四层之后没有任何层。因此,按照代码化顺序的第四帧(帧714)对应于第三层中按照反向显示顺序的第一帧,接着是与第四层相对应的第五帧和第六帧,此处为帧716、712。然后,按照代码化顺序的第七帧对应于第三层中按照反向显示顺序的第二帧(帧706),接着是与第四层相对应的最后两个帧708、704,作为第八帧和第九帧。

与在图9a中一样,图12a中的箭头部分地示出了分配给诸如参考帧缓冲器600等参考帧缓冲器内的帧的角色。与第一组代码化结构一样,将帧700指定为可用作帧716至702的块的前向预测帧的黄金或关键参考,并且将帧702指定为可用作帧716至704中的每一个的块的后向预测帧的第一替代参考帧。帧710被指定为第二替代参考帧,该第二替代参考帧可用作至少帧714、706的块的后向预测帧。帧714和706可以被指定为用于相应地预测至少帧716、712和帧708、704的块的附加后向或替代参考帧。在一些实施方式中,当帧被编码和解码时,帧706可以将参考帧缓冲器中的帧714替换为后向或替代参考帧。帧716、712、708和704不用作后向参考帧。

最终,当视频帧被编码和解码时,参考帧缓冲器内的最后一个参考帧被更新,以用作按照代码化顺序的下一帧的块的另一前向预测帧。例如,关键帧或黄金帧700被指定为可用作帧702的前向参考帧的最后一个参考帧,帧702被指定为可用作帧710的前向参考帧的最后一个参考帧,帧710被指定为可用作帧714的前向参考帧的最后一个参考帧,帧714被指定为可用作帧716的前向参考帧的最后一个参考帧,帧716被指定为可用作帧712的前向参考帧的最后一个参考帧,帧712被指定为可用作帧706的前向参考帧的最后一个参考帧,帧706被指定为可用作帧708的前向参考帧的最后一个参考帧,并且帧708被指定为可用作帧704的前向参考帧的最后一个参考帧。

如从图7至图12b可以看出,与反向显示顺序相比,当以显示顺序排列帧时,可用于预测以对帧组的帧进行编码或解码的参考帧的集合不同。视频序列可以被分为连续的帧组。通常,这些组被形成为使得成员帧包含与相邻组的特性不同的相对一致的特性。例如,一个组可能会在其连续的帧之间表现出静止,而另一组则表现出平移运动。其他示例也是可能的。

与使用相同的组代码化结构(或不同的代码化结构)从以显示顺序排列的帧组中选择的候选参考帧相比,由于组内的运动和/或其他特性之间的差异,使用组代码化结构从以反向显示顺序排列的帧组中选择的候选参考帧可能会导致代码化性能提高(例如,速率失真误差减少)。可以按照显示顺序或反向显示顺序将每个组提供给编码器的预测过程,其中,诸如在编码器400的帧内/帧间预测阶段402对编码器执行的预测过程以代码化顺序排列该组并且对帧进行预测。

图13是用于使用反向排序(也称为反向显示顺序)对视频帧进行编码的方法或过程1300的流程图。过程1300可以例如被实施为可以由诸如发送站102或接收站106等计算设备执行的软件程序。例如,软件程序可以包括机器可读指令,该机器可读指令可以存储在诸如存储器204或辅助存储214等存储器中,并且在由诸如cpu202等处理器执行时可以使计算设备执行过程1300。可以使用专用硬件或固件来实施过程1300。一些计算设备可以具有多个存储器或处理器,并且可以使用多个处理器、存储器或两者来分配过程1300所描述的操作。

在1302中,确定是否以反向显示顺序排列帧组。该确定可以在针对帧组的编码器的预测过程之前进行。该帧组由具有显示顺序的视频序列的帧的适当子集形成。

编码器可以采用不同的方案来确定该组是否应该使用显示顺序或反向显示顺序来获得编码性能与编码器复杂度之间的良好权衡。在示例中,编码器可以进行速率失真分析以比较正常显示顺序和反向显示顺序的使用之间的速率失真性能。速率失真分析可以计算与编码所导致的失真相比用于对该组的帧进行编码的速率(例如,比特数)。可以将失真计算为编码之前和解码之后的帧的像素值之间的差。这个差可以是绝对差之和或者是捕获帧的块的累积误差的某种其他测度。

在该示例中,确定是否以反向显示顺序排列帧组可以包括:执行对以显示顺序排列的帧组进行编码的第一速率失真分析,执行对以反向显示顺序排列的帧组进行编码的第二速率失真分析,并且响应于第二速率失真分析的误差小于第一速率失真分析的误差来确定以反向显示顺序排列帧组。误差可以是速率与失真的比值或者另一误差值。不必对第一速率失真分析和第二速率失真分析执行优化。即,在针对按照显示顺序和反向显示顺序中的每一个的帧组的分析中,不需要包括所有可能的预测模式、变换模式、组代码结构等。可取地,使用相同的编码参数和模式来进行比较。

与速率失真分析相比,确定该组是否应该使用显示顺序或反向显示顺序的另一方案可以通过更简单的代码化程序从帧组中提取空间和/或时间特征。例如,在使用两遍编码器对帧进行编码的情况下,可以在第一遍期间收集该组的帧的视频特征(诸如,通过运动分析获得的运动信息),其然后可以用于确定。可以通过以下方式执行运动分析:使用单个前向参考帧对以显示顺序排列的组中的至少一些帧进行帧间预测,并且响应于该运动分析指示跨帧组定义的运动来确定以反向显示顺序排列该帧组。在实施方式中,单个参考帧可以是黄金帧(即,在帧组之前的帧)。所定义的运动可以是例如放大或缩小。即,检测到跨帧组的放大或缩小可能会导致以反向显示顺序排列帧组。在其他示例中,可以在诸如查找表等方案中使用视频特征,该查找表将某些特征映射到可能会为该组产生一组更好的参考帧的显示顺序或反向显示顺序中的任何一个。

在1304中,在预测过程之前,如果适用的话,以反向显示顺序排列帧组。例如,可以响应于在帧组的预测过程之前以反向显示顺序排列帧组的确定来进行以反向显示顺序排列帧组。例如,在帧组以显示顺序包括八个帧的情况下,诸如图7所示,在图10中示出反向显示顺序。

无论是以显示顺序还是反向显示顺序排列帧组,在1306中,过程1300都以代码化顺序提前对该帧组执行预测过程。显示顺序或反向显示顺序(以适用者为准)可以称为预测过程的输入顺序。因此,执行预测过程可以包括以输入顺序接收帧组到预测过程。例如,可以在帧内/帧间预测阶段402接收该帧组,以在两遍编码过程的第二遍期间执行预测过程。

在1306中执行预测过程还可以包括使用组代码化结构来以代码化顺序排列以输入顺序接收到的帧组,该组代码化结构定义至少一个后向参考帧以包括在候选参考帧集合内。该组代码化结构可以对应于关于图8至图11描述的第一组代码化结构或者对应于产生一个后向参考帧的另一组代码化结构。该组代码化结构可以对应于关于图9a、图9b、图12a和图12b描述的第二组代码化结构或者对应于为该组的帧产生多于一个后向参考帧的另一组代码化结构。候选参考帧集合可以包括存储在诸如参考帧缓冲器600等参考帧缓冲器内的帧组中的相应帧的可用参考帧。例如,按照图11的代码化顺序,用于帧710的预测过程的候选参考帧集合包括黄金帧(即,帧700)、最后帧(即,帧712)和替代参考帧(即,帧702)。同样地,用于帧716的预测过程的候选参考帧集合包括黄金帧(即,帧700)、最后帧(即,帧702)和替代参考帧(即,帧702)。

可以通过执行速率失真分析来选择组代码化结构,该速率失真分析比较以一组可用组代码化结构中的每一个所定义的代码化顺序对帧组进行编码,并且选择导致代码化顺序具有最有效的代码化(例如,最低的速率失真误差)的组代码化结构。不管如何选择组代码化结构(以及因此选择代码化顺序),编码器都可以在编码比特流内向解码器传输指示所选择的组代码化结构的信息。可替代地,过程1300可以使用在编码器和解码器之间先验地同意的组代码化结构。如上面所提到的,组代码化结构将角色分配给参考帧缓冲器内的帧以用于预测过程。即,候选参考帧集合由组代码化结构确定。

在1306中执行预测过程还可以包括使用候选参考帧集合以代码化顺序预测帧组。预测帧组可以包括预测每个帧的块。预测帧组可以包括:选择候选参考帧集合中的至少一个参考帧以用于预测帧组中的当前帧的当前块,并且使用所选择的参考帧来生成预测块。使用预测块可对当前块进行编码。

为了选择用于预测帧的当前块的一个或多个参考帧,候选参考帧集合中的每个参考帧都可以用于生成当前块的预测块。在允许双向预测的情况下,前向和后向预测帧的一种或多种组合也可以用于生成相应的预测块。一种或多种帧内预测模式也可以用于生成当前块的相应预测块。作为当前块的最佳预测器的预测块确定该块的预测模式。可以通过确定哪个预测块具有与被预测的当前块最类似的像素值来选择最佳预测器。这可以使用绝对差之和或者预测块和当前块的像素值之间的差的其他测度来计算。预测块可以例如通过使用关于编码器400描述的压缩(例如,变换阶段404,量化阶段406和熵编码阶段408)压缩残差来对当前块进行编码。过程1300可以包括帧组的进一步编码步骤。

过程1300可以包括:在诸如压缩比特流420等比特流中利用帧组传输比特,该比特指示提供给预测过程的组的输入顺序是否是反向显示顺序。例如,值为1的比特可以指示输入顺序是反向显示顺序,而值为0的比特可以指示输入顺序为显示顺序。

视频序列可以由多个帧组形成,其中,多个帧组中的每一个由视频序列的帧的不相交集合形成。因此,可以针对多个帧组中的每一个重复过程1300。可以以显示顺序对多个帧组顺次编码,而每组内的帧则按照其相应的代码化顺序进行编码。例如,多个帧组中的至少一个的帧以反向显示顺序被提供给预测过程。过程1300然后可以进一步包括:在包括多个帧组的编码比特流内,利用多个帧组中的每一组传输比特,该比特相应地指示该组的输入顺序是否是反向显示顺序。

在一些情况下,可以仅针对多个帧组中的一些整体重复过程1300。可以根据组中的帧数对该组执行过程1300。例如,在预测多个帧组中的组之前,可以仅在该组的基数不超过8时才确定是否以反向显示顺序排列该组的帧。这可以减少对视频序列的多个组进行编码所需的计算时间量。可以根据实施过程1300的编码器的延迟来对组执行过程1300。例如,在预测多个帧组中的组之前,可以仅在编码器的延迟小于定义值时才确定是否以反向显示顺序排列该组的帧。通常,较高的延迟使得不太期望对组执行过程1300。可以以各种方式来测量延迟,诸如,帧到达帧内/帧间预测阶段402与其被包括在压缩比特流420中之间的时间量。延迟也可以通过帧的计数来测量。因此,定义值可以是时间或帧的测度。可以使用的定义值的示例为二分之一秒。在该示例中,仅当编码器的延迟小于二分之一秒时才确定是否以反向显示顺序排列组的帧。在这种情况下,过程1300省略了1302中的确定和1304中的排列,并且直接进行到在1306中以显示顺序对该组执行预测过程。

图14是用于使用反向排序(也称为反向显示顺序)对视频帧进行解码的方法或过程1400的流程图。过程1400可以例如被实施为可以由诸如发送站102或接收站106等计算设备执行的软件程序。例如,软件程序可以包括机器可读指令,该机器可读指令可以存储在诸如存储器204或辅助存储214等存储器中,并且在由诸如cpu202等处理器执行时可以使计算设备执行过程1300。可以使用专用硬件或固件来实施过程1300。如上所述,可以使用多个处理器、存储器或两者。

在1402中,过程1400包括:确定编码器的预测过程以显示顺序还是反向显示顺序接收到帧组作为输入。该帧组由具有显示顺序的视频序列的帧的适当子集形成。

可以使用来自编码比特流的信息来做出确定。在示例中,确定编码器的预测过程以显示顺序还是反向显示顺序接收到帧组作为输入包括:利用编码帧组来读取编码为编码比特流的比特。例如,编码器的预测过程以反向显示顺序接收到帧组作为输入的确定可以响应于比特的值为1的值而发生。该比特可以位于帧组的报头中或指示帧组的开始的帧的报头中。

在1404中,对帧组执行解码器的预测过程。帧组是从输入到预测过程的编码比特流接收的编码帧组(例如,具有对块进行解码所需的信息的帧的块的残差)。以代码化顺序接收到该组中的帧。可以使用组代码化结构来排列代码化顺序,该组代码化结构定义至少一个后向参考帧以包括在候选参考帧集合内。如先前所提到的,候选参考帧集合是与用于相应帧的参考帧缓冲器相关联的那些参考帧。预测过程还可以包括使用候选参考帧集合以代码化顺序预测帧组。预测帧组可以包括诸如在帧内/帧间预测阶段508使用候选帧的相应集合来预测每个帧。可以以块为单位预测每个帧,其中,一些块是帧间预测的,并且其他块是帧内预测的。在一些情况下,可以使用帧间预测和帧内预测的组合来预测块。

无论所使用的预测模式如何,在1406中,可以使用预测帧组预测过程的预测结果来生成解码帧组。例如,预测结果可以包括关于帧内/帧间预测阶段508所描述的相应块的预测器。然后,如关于解码器500的去量化阶段504、逆变换阶段506和重构阶段510所描述的,可以将预测器与块的解码残差组合以对块组进行解码。还可以执行附加滤波。

在输出解码帧组之前,可以在1408中缓冲解码帧组中的一些或全部。例如并且响应于确定编码器的预测过程以反向显示顺序接收到帧组作为输入,缓冲解码帧组,然后以显示顺序输出缓冲的解码帧。

缓冲解码帧组可以包括缓冲每个解码帧组,直到生成解码帧组的所有帧,使得仅在缓冲解码帧组的所有帧之后才以显示顺序输出缓冲的解码帧。这可以通过参照图10中的示例来解释。按照反向显示顺序,帧704是倒数第二帧,但是帧704是按照显示顺序在帧700之后的第二帧。因此,按照使用以反向显示顺序排列的帧组作为输入的许多可能的代码化顺序,帧704在该序列的最后被解码。在图11和图12b的示例中,最后解码帧704。在这些示例中,缓冲在帧704之前解码的帧,直到它们可以在帧704被解码之后输出为止。

因为该组的帧以代码化顺序被编码,所以它们也以代码化顺序被解码。解码器通过其对组代码化结构的了解来了解代码化顺序。因此,解码器可以成功地识别帧,以便以显示顺序输出它们。

当确定编码器的预测过程以显示顺序接收到帧组作为输入时,解码器通过取决于代码化顺序输出最近解码的帧或输出存储在参考帧缓冲器中的先前解码的帧来以显示顺序输出解码帧组。

该过程在帧组被解码之后结束。视频序列包括多个块组,并且每个块组可以根据过程1400被解码。

为了简化解释,将过程1300和1400中的每一个描绘和描述为一系列步骤或操作。然而,根据本公开的步骤或操作可以以各种顺序和/或同时发生。另外,可以使用本文未提出和描述的其他步骤或操作。此外,可能不需要所有图示的步骤或操作来实施根据所公开的主题的方法。

上述的编码和解码方面说明了编码和解码技术的一些示例。然而,要理解,编码和解码(如在权利要求中使用的那些术语)可以表示对数据的压缩、解压缩、变换或任何其他处理或改变。

单词“示例”在本文中用来表示充当示例、实例或说明。本文作为“示例”描述的任何方面或设计不必解释为比其他方面或设计更优选或有利。相反,单词“示例”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在表示包含性的“或”而不是排他性的“或”。即,除非另有说明或从上下文中显而易见,否则“x包括a或b”旨在表示任何自然的包含性排列。即,如果x包括a;x包括b;或x包括a和b,那么在任何上述情况下均满足“x包括a或b”。另外,在本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”,除非另有说明或从上下文中显而易见地指向单数形式。而且,贯穿全文,除非如此描述,否则术语“实施方式”或者“一种实施方式”的使用并不旨在表示相同的实施例或实施方式。

发送站102和/或接收站106的实施方式(以及存储在其上和/或由其执行(包括由编码器400和解码器500执行)的算法、方法、指令等)可以用硬件、软件或其任何组合来实现。硬件可以包括:例如,计算机、知识产权(ip)内核、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应被理解为单独地或组合地包含任何前述硬件。术语“信号”和“数据”可互换使用。进一步地,发送站102和接收站106的部分不必一定要以相同的方式实施。

进一步地,在一个方面中,例如,可以使用具有计算机程序的通用计算机或通用处理器来实施发送站102或接收站106,该计算机程序在被执行时执行本文描述的相应方法、算法和/或指令中的任何一种。另外或可替代地,例如,可以利用专用计算机/处理器,其可以包含用于执行本文描述的任何方法、算法或指令的其他硬件。

例如,发送站102和接收站106可以在视频会议系统中的计算机上实施。可替代地,发送站102可以在服务器上实施,并且接收站106可以在与服务器分离的设备(诸如,手持通信设备)上实施。在这种情况下,发送站102可以使用编码器400将内容编码为编码视频信号,并且将编码视频信号传输到通信设备。继而,通信设备然后可以使用解码器500对编码视频信号进行解码。可替代地,通信设备可以对本地存储在通信设备上的内容进行解码,例如,不是由发送站102传输的内容。其他合适的发送和接收实施方案也是可用的。例如,接收站106可以是大体上固定的个人计算机,而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。

进一步地,本公开的全部或部分实施方式可以采取可从例如计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、传递或传输程序以供任何处理器使用或与其结合使用的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体设备。其他合适的介质也是可用的。

已经描述了上述实施例、实施方式和方面,以便容易地理解本公开并且不限制本公开。相反,本公开旨在覆盖包括在所附权利要求的范围内的各种修改和等效布置,该范围应被赋予最广泛的解释,以涵盖法律允许的所有这种修改和等效结构。

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