发明背景
已公开的视频编码标准包括:ITU-T H.261、ITU-T H.263、ISO/IECMPEG-1、ISO/IEC MPEG-2和ISO/IEC MPEG-4 Part 2。这些标准在此被称为传统的视频编码标准。
视频通信系统
视频通信系统可以被划分成对话式和非对话式系统。对话式系统包括视频会议和视频电话。这类系统的示例包括ITU-T推荐H.320、H.323和H.324,它们指定了分别在ISDN、IP和PSTN网络中操作的视频会议/电话系统。对话式系统的特点在于:其试图最小化端到端时延(从音频-视频捕获到远端音频-视频呈现)以便改善用户体验。
非对话式系统包括被存储内容的播放,比如数字多功能光盘(DVD)或存储在播放装置的海量存储器中的视频文件、数字电视和媒体流。这些技术领域中的最重要的标准的简略评论如下给出。
当今,数字视频消费电子中的主导标准是MPEG-2,其包括用于视频压缩、声频压缩、存储和传送的规范。编码视频的存储和传送是基于基本流的概念。基本流包括来自于单个源(例如视频)的编码数据加上同步、识别和描述源信息特征所需的辅助数据。基本流被分组成不变长度或可变长度的分组以便形成分组基本流(PES)。每个PES分组都包括报头,跟随其后是被称作有效载荷的流数据。来自于各个基本流的PES分组被合并形成程序流(PS)或传送流(TS)。PS针对具有可忽略传输差错的应用,比如存储和播放类型的应用。TS针对容许有传输差错的应用。然而,TS假定网络吞吐量有保证为常数。
ITU-T和ISO/IEC的联合视频工作组(JVT)正在努力进行标准化。JVT的工作是基于ITU-T的较早的标准化项目,称作H.26L。JVT标准化的目标是发布与ITU-T推荐H.264和ISO/IEC国际标准14496-10(MPEG-4Part 10)相同的标准文本。这个文件中的标准草案被称为JVT编码标准,而根据该标准草案的编码解码器被称为JVT编码解码器。
编码解码器规范本身在概念上在视频编码层(VCL)和网络抽象层(NAL)之间有所区别。VCL包括编码解码器的信号处理功能,比如转换、量化、运动搜索/补偿和环路滤波之类的功能。它遵循当今大多数的视频编码解码器的一般概念,使用具有运动补偿的图像间预测的基于宏块的编码器,并且转换残留信号的编码。VCL的输出是片(slice):包括宏块整数的宏块数据的位串,以及片报头的信息(包括该片中第一宏块的空间地址、初始量化参数、以及类似信息)。除非指定了不同的宏块分配,否则片中的宏块通过使用所谓的灵活的宏块排序语法以扫描顺序被排序。图像中预测只在片内使用。
NAL将VCL的片输出封装到网络抽象层单元(NALU)中,其适合于在分组网上传输或者适合于在面向分组复用环境中使用。JVT的附录B定义了用于在面向字节流的网络上发射这类NALU的封装过程。
H.263的可选择的参考图像选择模式和MPEG-4 Part 2的NEWPRED编码工具支持例如H.263中的每一片的每一图像段的运动补偿的参考帧的选择。而且,H.263的可选择的增强参考图像选择模式和JVT编码标准分别支持用于每个宏块的参考帧的选择。
参考图像选择支持很多类型的时域可扩展方案。图1示出了时域可扩展方案的示例,其在此被称为递归时域可扩展。该示例方案可以用三个恒定帧速率来解码。图2描述了被称为视频冗余编码的方案,其中,图像序列以交错方式被分成两个或更多的独立编码的线程。这些附图和所有随后附图中的箭头指示了运动补偿的方向,并且帧下面的值对应于帧的相对捕获和显示时间。
参数集概念
JVT编码解码器的一个很基础的设计概念是生成独立的分组,以便使得诸如报头复制之类的机制不必要。其实现方法是去耦与来自于媒体流的超过一个的片有关的信息。这个较高层的元信息应该从包括片分组的RTP分组流提前异步地并且可靠地发送。在这类没有适合于该目的带外传送信道的应用中,这个信息还可以被在带内发送。较高级的参数的组合被称作参数集。该参数集包括诸如图像大小、显示窗口、所采用的可选择的编码模式、宏块分配图等等之类的信息。
为了能够改变图像参数(比如图像大小),而不需要向片分组流同步地发射参数集更新,编码器和解码器可以保持超过一个参数集的列表。每个片报头都包括指示将要使用的参数集的代码字。
这个机制允许从分组流中去耦参数集的传输,并且通过例如作为容量交换的副作用的外部手段或通过一个(可靠或不可靠的)控制协议来发射它们。甚至有可能它们永远不被发射但是却由应用设计规范来决定。
传输顺序
在传统的视频编码标准中,图像的解码顺序与除B图像之外的显示顺序相同。传统的B图像中的块可以从两个参考图像被双向地在时间上预测,其中,一个参考图像在时间上处于前面,而另一个参考图像按显示顺序在时间上接续。只有解码顺序中的最新参考图像可以以显示顺序来接续B图像(例外:H.263中的交错编码,其中,时间上后续的参考帧的双字段图像可以按解码顺序先于B图像)。传统的B图像不能被用作用于时域预测的参考图像,并且因此传统的B图像可以被处置而不会影响任何其它图像的解码。
JVT编码标准包括下列与较早期标准相比新颖的技术特征:
-图像的解码顺序从显示顺序被去耦。图像编号指示解码顺序并且图像顺序计数指示显示顺序。
-用于B图像中的块的参考图像可以在显示顺序上在B图像之前或之后。因此,B图像代表双预测图像而不是双向图像。
-未被用作参考图像的图像被明确地标记。任何类型的图像(内、间、B等)可以是参考图像或非参考图像。(从而,B图像可以被用作参考图像,以对其它图像进行时域预测。)
-图像可以包括用不同的编码类型来编码的片。换言之,编码图像可以包括例如帧内编码片和B编码片。
从压缩效率和误码弹性的角度看,显示顺序从解码顺序中去耦是有益的。
在图3中给出了潜在地改善压缩效率的预测结构示例。方框指示图像,方框内的大写字母指示编码类型,方框内的编号是根据JVT编码标准的图像编号,并且箭头指示预测相关性。请注意,图像B17是一个用于图像B18的参考图像。压缩效率较传统的编码潜在地得以提高,因为用于图像B18的参考图像较使用PBBP或PBBBP编码图像模式的传统编码在时间上较为接近。压缩效率较传统的PBP编码图像模式潜在地得以提高,因为部分参考图像被双向地预测。
图4示出了可用于提高误码弹性的帧内图像延缓方法的示例。传统地,例如在情景剪切之后或响应于期满的帧内图像刷新周期,帧内图像被立即编码。在帧内图像延缓方法中,帧内图像不是在出现编码帧内图像的需要之后被立即编码,而是在时间上后续的图像被选为帧内图像时。编码帧内图像和帧内图像的传统位置之间的每个图像都从下一个在时间上后续的图像被预测。如图4所示,帧内图像延缓方法生成两个独立的图像间预测链,而传统的编码算法产生单个图像间链。直观地很清楚,双链方法比单链常规方法更能有效地防止擦除差错。如果一个链遇到分组丢失,则另一个链仍然可以被正确地接收。在传统的编码中,分组丢失总是导致其余的图像间预测链的差错传播。
两种排序和定时信息已经传统地与数字视频相关联:解码和呈现顺序。对相关技术的更详细解释在下文中给出。
解码时间戳(DTS)指示相对于假设编码数据单元将被解码的参考时钟的时间。如果DTS被编码并发射,则它用作两个目的:首先,如果图像解码顺序不同于它们的输出顺序,则DTS明确地指示解码顺序。其次,假如接收速率在任意时刻都接近传输速率,则DTS保证确定的解码器前缓冲行为。在端到端延迟变化的网络中,DTS的第二种使用没有或几乎没什么作用。替代地,假如在用于未压缩图像的解码器后缓冲器中存在空间,那么接收数据被尽快地解码。
DTS的运作取决于通信系统和使用的视频编码标准。在MPEG-2系统中,DTS可以选择性地作为PES分组报头中的一项被发射。在JVT编码标准中,DTS可以选择性地作为补充增强信息(SEI)的一部分被传送,并且它被用于可选择的虚拟参考解码器的操作。在ISO基本媒体文件格式中,DTS将它自己的箱形(box type)、解码时间专用于样品箱。在许多诸如基于RTP的流传输系统之类的系统中,根本不传送DTS,因为解码顺序被假定为与传输顺序相同并且正确的解码时间没有起重要作用。
H.263可选择的附录U以及附录W.6.12指定了图像编号,其相对于前一参考图像在解码顺序中被增加1。在JVT编码标准中,类似于H.263的图像编号地指定了帧编号编码元件。JVT编码标准指定了特殊类型的帧内图像,被称作即时解码刷新(IDR)图像。没有后续的图像可以参考在解码顺序中比IDR图像早的图像。IDR图像往往响应于情景的变化而被编码。在JVT编码标准中,帧编号在IDR图像处被重置为0,以便在IDR图像丢失的情况下提高误码弹性,如附图5a和5b所示。然而,应当指出,JVT编码标准的情景信息SEI消息还可以被用于检测情景变化。
H.263图像编号可用于恢复参考图像的解码顺序。类似地,JVT帧编号可用于恢复解码顺序中的IDR图像(相容)和下一个IDR图像(排斥)之间的帧的解码顺序。然而,因为补足参考字段对(被编码为具有异奇偶性的字段的连续图像)共享同一帧编号,所以它们的解码顺序不能从帧编号被重建。
H.263图像编号或非参考图像的JVT帧编号被指定为等于解码顺序中的前一参考图像的图像或帧编号加上1。如果几个非参考图像在解码顺序中是连续的,则它们共享同一图像或帧编号。非参考图像的图像或帧编号还与解码顺序中的下列参考图像的图像或帧编号相同。连续的非参考图像的解码顺序可以用H.263中的时域参考(TR)编码元件或JVT编码标准的图像顺序计数(POC)概念来恢复。
呈现时间戳(PTS)指示相对于假设图像将被显示的参考时钟的时间。呈现时间戳也被称为显示时间戳、输出时间戳和合成时间戳。
PTS的运作取决于通信系统和使用的视频编码标准。在MPEG-2系统中,PTS可以选择性地作为PES分组报头中的一项被发射。在JVT编码标准中,PTS可以选择性地作为补充增强信息(SEI)的一部分被传送,并且它被用于可选择的虚拟参考解码器的操作。在ISO基本媒体文件格式中,PTS将它自己的箱形、合成时间专用于样品箱,其中,呈现时间戳相对于对应的解码时间戳被编码。在RTP中,RTP分组报头中的RTP时间戳对应于PTS。
传统的视频编码标准的特征是在许多方面类似于PTS的时域参考(TR)编码元件。在诸如MPEG-2视频之类的某些传统的编码标准中,TR在图像组(GOP)开始时被重置为零。在JVT编码标准中,在视频编码层中不存在时间的概念。图像顺序计数(POC)被指定用于每个帧和字段,并且例如它类似于TR被直接用于B片的直接时域预测。POC在IDR图像处被重置为0。
多媒体流的传输
多媒体流系统包括流传输服务器和大量的播放器,播放器经由网络接入服务器。通常,该网络是面向分组的并且很少或不提供保证服务质量的手段。播放器从服务器获取预存储的或者实况的多媒体内容,并且在这些内容被下载的时候实时播放它们。通信类型可以是点到点或者组播。在点到点流传输中,服务器为每个播放器提供一个单独的连接。在组播流传输中,服务器向大量的播放器发射单个数据流,并且网元只有当有必要时才复制该数据流。
当播放器已经建立了到服务器的连接和请求了多媒体流时,该服务器开始发射所期望的流。播放器不立即开始播放该数据流,而是通常将输入数据缓冲几秒。在此,这个缓冲被称为初始缓冲。初始缓冲有助于保持无间断播放,因为在传输延迟偶尔增加或网络吞吐量偶尔下降的情况下,播放器可以解码并播放缓冲的数据。
为了避免没有限制的传输延迟,在流传输系统中一般不趋向于支持可靠的传输协议。替代地,系统优选不可靠的传输协议,比如UDP,其一方面继承了更稳定的传输延迟,但是另一方面还容许数据损坏或丢失。
RTP和RTCP协议可以在UDP之上被用来控制实时通信。RTP提供检测传输分组的丢失,在接收端重组分组的正确顺序,以及关联抽样时间戳与每个分组的手段。RTCP传送与分组的大部分怎样被正确地接收有关的信息,并且因此它可以被用于流量控制目的。
传输差错
传输差错的主要类型有两种,即比特差错和分组差错。通常,比特差错与电路交换信道相关联,比如移动通信中的无线接入网络连接,并且它们起因于物理信道的缺陷,比如无线电干扰。这类缺陷可能在被发射数据中导致比特倒置、比特插入和比特删除。分组差错通常由分组交换网络中的元件所引起。例如,分组路由器可能变得拥塞;即它可能得到太多作为输入的分组并且不能以相同的速率输出它们。在这个情况下,其缓冲溢出,并且一部分分组被丢失。与发射顺序不同的分组复制和分组递送也是可能的,但是它们通常被认为比分组丢失更不普遍。分组差错还可能起因于所使用的传送协议栈的实施。例如,某些协议使用校验和,校验和在发射机中被计算并且用源编码数据来封装。如果在数据中存在比特倒置差错,则接收机不能终止于相同的校验和,并且它可能必须丢弃所接收到的分组。
第二代(2G)和第三代(3G)移动网络(包括GPRS、UMTS和CDMA-2000)提供两种基本类型的无线电链路连接,即确认和非确认的。确认连接使得无线电链路帧的完整性由接收者来检查(或是移动台,MS或是基站子系统,BSS),并且在传输差错的情况下,重发请求被给到该无线电链路的其它端。由于链路层重发,始发者必须缓冲无线电链路帧,直到该帧的肯定确认被接收为止。在恶劣的无线电条件中,这个缓冲器可能溢出并且造成数据丢失。尽管如此,已经被示出了将确认无线链路协议模式用于流传输服务是有益的。非确认连接使得错误的无线电链路帧通常被丢弃。
分组丢失可能被校正或隐瞒。丢失校正指的是完美地恢复丢失数据的能力,就好像数据从来未被丢失过一样。丢失隐瞒指的是隐瞒传输损失影响的能力,因此它们在重建的视频序列中应当不是可见的。
当播放器检测到分组丢失时,它可能请求分组重发。因为初始缓冲,该重发分组可以在其计划播放时间之前被接收。某些商业互联网流传输系统使用专有协议来执行重发请求。IETF的工作在继续,以便将选择性的重发请求机制标准化为RTCP的一部分。
用于所有这些重发请求协议的共同特征是它们不宜于向大量的播放器的组播,因为网络业务量可能急速地增加。因此,组播流传输应用必须依赖于非交互的分组丢失控制。
点到点流传输系统还可能受益于非交互的差错控制技术。首先,某些系统可能不包括任何交互的差错控制机制或它们优选地不具有任何来自播放器的反馈以便简化系统。其次,丢失分组的重发和其它形式的交互差错控制一般比非交互差错控制方法采用更大部分的发射数据速率。流传输服务器必须保证交互差错控制方法没有保留可用的网络吞吐量的主要部分。实际上,服务器可能必须限制交互差错控制操作的数量。再者,传输延迟可能限制服务器和播放器之间的交互的数量,因为所有用于特殊数据抽样的交互差错控制操作将优选地在数据抽样被播放之前完成。
非交互的分组丢失控制机制可以被分类成前向差错控制和通过后处理的丢失隐瞒。前向差错控制指的是这样的技术,其中,发射机将这类冗余添加到被发射数据,即使存在传输损失,接收机也可以至少恢复一部分被发射数据。通过后处理的差错隐瞒完全是面向接收机的。这些方法试图估计被错误接收的数据的正确表示。
大多数的视频压缩算法在时间上生成被预测的INTER或P图像。因此,图像中的数据丢失在结果图像中产生可见的退化,结果图像是在时间上从恶化的图像预测出的。视频通信系统可以隐瞒被显示图形中的损失或者将最新的正确图像稳定在屏幕上,直到接收到与该恶化帧无关的帧为止。
在传统的视频编码标准中,解码顺序与输出顺序耦合。换言之,I和P图像的解码顺序与它们的输出顺序相同,并且B图像的解码顺序在输出顺序中立即遵循B图像的后面的参考图像的解码顺序。因此,基于已知的输出顺序来恢复解码顺序是可能的。输出顺序通常在时域参考(TR)字段以及系统多路复用层中,比如在RTP报头中,以基本视频比特流来传送。从而,在传统的视频编码标准中不存在所给出的问题。
一个对于本领域专家明显的解决方案是使用类似于H.263图像编号的帧计数器,而在IDR图像处不用重置到0(如JVT编码标准中所做的)。然而,某些问题可能在那种解决方案被使用的时候发生。图5a表示连续数字方案被使用的情况。例如,如果IDR图像I37丢失(不能被接收/解码),则解码器继续解码接续的图像,但是它使用的参考图像是错误的。这导致了到接续帧的差错传播,直到与恶化帧无关的下一帧被正确地接收和解码为止。在图5b的示例中,帧编号在IDR图像处被重置到0。现在,在IDR图像I0被丢失的情况中,解码器通知在最新的正确解码图像P36之后在图像编号中存在一个大缺口。然后,解码器可以假定发生了差错并且可以将显示保持在图像P36,直到与恶化帧无关的下一帧被接收和解码为止。
子序列
JVT编码标准还包括子序列概念,其较非参考图像的使用可以增强时域可扩展,使得预测间的图像链可以被处置为一个整体而不会影响其余编码流的可解码性。
子序列是子序列层内的一组编码图像。图像将存在于一个子序列层中并且只存在于一个子序列中。子序列将不会取决于在相同或更高子序列层中的任何其它子序列。层0中的子序列可以与任何其它子序列以及先前的长期参考图像无关地被解码。图6a公开了包括在层1处子序列的图像流的示例。
子序列层包括在序列中的编码图像的子集。子序列层用非负整数来编号。具有较大层编号的层是比具有较小层编号的层更高的层。该层基于它们彼此的相关性被按等级地排序,使得一个层不取决于任何较高层并且可以取决于较低层。换言之,层0是可独立地解码的,层1中的图像可以从层0来预测,层2中的图像可以从层0和1来预测等等。主观的质量被预期随着解码层的编号增加而增加。
该子序列概念被如下所示地包括在JVT编码标准中:在序列参数集中等于1的required_frame_num_update_behaviour_flag发信号告知该编码序列可能不包括所有的子序列。required_frame_num_update_behaviour_flag的使用发布了对每个参考帧都将其帧编号加1的要求。替代地,帧编号中的缺口在被解码图像缓冲器中被特别地标记。如果″丢失″帧编号和帧间预测有关,则推断图像丢失。否则,处理对应于″丢失″帧编号的帧,就好像它们是用滑动窗口缓冲模式插入解码图像缓冲器的普通帧一样。在处置的子序列中的所有图像因此都在解码图像缓冲器中被分配了″丢失″帧编号,但是它们在其它子序列的帧间预测中从不被使用。
JVT编码标准还包括与可选择子序列相关的SEI消息。子序列信息SEI消息与解码顺序中的下一片相关联。它发信号告知子序列层和该片所属的子序列的子序列标识符(sub_seq_id)。
每个IDR图像都包括标识符(idr_pic_id)。如果两个IDR图像在解码顺序中是连续的(没有任何插入图像),则idr_pic_id的值将从第一IDR图像变化成另一个。如果当前图像存在于其在解码顺序中的第一图像是IDR图像的子序列中,则sub_seq_id的值应该与IDR图像的idr_pic_id值相同。
JVT-D093中的解决方案只有当子序列层1或更高层中不存在数据时才正确地工作。如果传输顺序不同于解码顺序并且编码图像存在于子序列层1,则它们相对于子序列层0中的图像的解码顺序不能基于子序列标识符和帧编号来断定。例如,考虑在图6b上给出的下列编码方案,其中,输出顺序从左至右,方框指示图像,方框内的大写字母指示编码类型,方框内的编号是根据JVT编码标准的帧编号,加下线字符指示非参考图像,并且箭头指示预测相关性。如果图像以顺序I0、P1、P3、I0、P1、B2、B4、P5被发射,则不能断定独立的GOP图像B2属于哪一个。
可以证明,在先前的示例中,图像B2的正确独立的GOP可以基于其输出时间戳来断定。然而,图像的解码顺序不能基于输出时间戳和图像编号来恢复,因为解码顺序和输出顺序被去耦。考虑下列示例(图6c),其中,输出顺序从左至右,方框指示图像,方框内的大写字母指示编码类型,方框内的编号是根据JVT编码标准的帧编号,并且箭头指示预测相关性。如果图像不按解码顺序发射,则无法可靠地检测图像P4是否应该在输出顺序中的第一或第二独立的GOP的P3之后被解码。
缓冲
流传输客户端通常具有能够存储相对大量数据的接收机缓冲器。最初,当流传输会话被建立时,客户端不是立即开始播放该流,而是通常将输入数据缓冲几秒。这个缓冲有助于保持连续播放,因为在传输延迟偶尔增加或网络吞吐量偶尔下降的情况下,客户端可以解码并播放缓冲的数据。如果没有初始的缓冲,那么客户端必须保持显示,停止解码并且等待输入数据。缓冲还是在任何协议级中的自动或选择性的重发所必需的。如果图像的任何一部分丢失,则重发机制可以被用来重新发送丢失的数据。如果重发数据在其计划的解码或播放时间之前被接收,则丢失被完美地恢复。
编码图像可以根据它们在解码序列的主观质量中的重要性来划分等级。例如,诸如传统的B图像之类的非参考图像主观上是最不重要的,因为它们的缺失不影响任何其它图像的解码。主观的划分等级还可以基于数据分割或片组来做出。主观上最重要的编码片和数据分割可以比它们的解码顺序指示更早地发送,而主观上最不重要的编码片和数据分割可以比它们的自然编码顺序指示更迟地发送。因此,与最不重要的片和数据分割相比,最重要的片和数据分割的任何重发部分很可能在它们计划的解码或播放时间之前被接收。
解码器前缓冲
解码器前缓冲指的是在编码数据被解码之前的缓冲。初始缓冲指的是在流传输会话开始时的解码器前缓冲。初始缓冲传统地因为在下面解释的两个原因而被做出。
在对话式分组交换多媒体系统中,例如在基于IP的电视会议系统中,不同类型的媒体一般在单独分组中被传送。而且,分组通常在尽力而为(best-effort)网络上传送,所述网络不能保证恒定的传输延迟,而是时延可能在分组之间有所不同。因此,具有相同的呈现(播放)时间戳的分组可能没有被同时接收,并且两个分组的接收间隔可能与它们的呈现间隔(按照时间)不相同。从而,为了保持不同媒体类型之间的播放同步并且保持正确的播放速率,多媒体终端通常将所接收数据缓冲一个短周期(例如小于半秒)以便平滑延迟变化。在此,这类缓冲器部件被称为延迟抖动缓冲器。缓冲可以在媒体数据解码之前和/或之后进行。
延迟抖动缓冲还应用在流传输系统中。由于流传输是非对话式应用的原因,所以所要求的延迟抖动缓冲可能比对话式应用中大得多。当流传输播放器已经建立了到服务器的连接并且请求了要下载的多媒体流时,该服务器开始发射所期望的流。播放器不立即开始播放该媒体流,而是通常将输入数据缓冲某个周期,通常是几秒。在此,这个缓冲被称为初始缓冲。初始缓冲提供了以类似于对话式应用中的延迟抖动缓冲所提供的方式来平滑传输延迟变化的能力。另外,它支持链路、传送和/或丢失协议数据单元(PDU)的应用层重发的使用。当可以及时接收重发的PDU以在计划的时刻被解码和播放的时候,播放器可以解码并播放缓冲的数据。
流传输客户端中的初始缓冲还提供了在对话式系统中不能实现的另一个优点:它允许从服务器发射的媒体的数据速率发生变化。换言之,只要接收机缓冲器不溢出或下溢,媒体分组就可以暂时比它们的播放速率更快或更慢地发射。数据速率中的波动可以起源于两个源。
首先,某些诸如视频之类的媒体类型中可达到的压缩效率取决于源数据的内容。因此,如果期望稳定的质量,则得到的压缩的比特流的比特速率发生变化。通常,稳定的视听质量主观上比变化质量更合意。从而,与例如电视会议系统的没有初始缓冲的系统相比较,初始缓冲支持了将达到的更合意的视听质量。
其次,通常已知,固定IP网络中的分组丢失以突发的形式发生。为了避免突发差错和高峰值比特和分组速率,精心设计的流传输服务器谨慎地计划分组的传输。分组可能不精确地以它们在接收端被播放的速率来发送,而是服务器可能设法在被发射分组之间实现稳定的间隔。服务器还可以根据占优势的网络条件来调整分组传输速率,在网络变得拥塞的时候降低分组传输速率,并且例如在网络条件允许的时候增加分组传输速率。
虚拟参考解码器(HRD)/视频缓冲校验器(verifier)(VBV)
许多视频编码标准包括作为该标准不可分割部分的HRD/VBV规范。HRD/VBV规范是虚拟解码器模型,其包括输入(解码器前)缓冲器。编码数据通常以恒定比特率流入输入缓冲器。编码图像在它们的解码时间戳处被从输入缓冲器中移除,解码时间戳可以与它们的输出时间戳相同。输入缓冲器取决于使用的配置文件和级别具有特定大小。HRD/VBV模型被用来从处理和内存需求的观点指定互操作性点。编码器将保证生成的比特流根据特定配置文件和级别的HRD/VBV参数值来遵循HRD/VBV规范。解码器要求对特定配置文件和级别的支持将能够解码遵循HRD/VBV模型的比特流。
HRD包括用于存储编码数据流编码图像缓冲器和用于存储解码参考图像并且重新在显示顺序中排序解码图像的解码图像缓冲器。HRD类似于解码器装置的解码器在缓冲器之间移动数据。然而,HRD不需要彻底地解码编码图像并且也不需要输出解码图像,而HRD只是检查图像流的解码可以在编码标准给出的约束条件下被执行。当HRD正在操作时,它接收编码数据流并且将其存储到编码图像缓冲器。另外,HRD从编码图像缓冲器移除编码图像并且将至少某些对应的假设地解码的图像存储到解码图像缓冲器中。HRD知道编码数据依此流入编码图像缓冲器的输入速率、图像从编码图像缓冲器移除的速率、以及图像从解码图像缓冲器输的出速率。HRD检查编码或解码图像缓冲器溢出,并且它指示用当前设置是否有可能进行解码。然后,HRD通知编码器关于缓冲违规,其中,编码器可以例如通过降低参考帧数量来改变编码参数以便避免缓冲违规。替换地或附加地,编码器开始用新的参数编码图像并且将编码的图像发送到HRD,HRD再次执行图像解码以及必需的检查。作为又一个替换,编码器可以丢弃最新的编码帧并且编码较后的帧使得没有缓冲违规发生。
两种类型的解码器一致性已经在JVT编码标准中被指定:输出顺序一致性(VCL一致性)以及输出时间一致性(VCL-NAL一致性)。这些类型的一致性已经用HRD规范来指定。输出顺序一致性指的是解码器正确地恢复图像输出顺序的能力。HRD规范包括″撞击解码器(bumpingdecoder)″模型,当需要用于图像的新的存储空间时,其以输出顺序输出最早的未压缩图像。输出时间一致性指的是解码器以与HRD模型的相同步调输出图像的能力。图像的输出时间戳必须总是等于或小于它将从″撞击解码器″中被移除的时间。
交错
帧交错是在音频流传输中常用的技术。在帧交错技术中,一个RTP分组包括在解码或输出顺序中不连续的音频帧。如果音频分组流中的一个分组丢失,则被正确接收的分组包括可以被用于隐瞒丢失音频分组的相邻音频帧(通过某种内插)。许多音频编码RTP有效载荷和MIME类型规范包括在一个分组中就音频帧而言发送交错的最大量的可能性。
在某些现有技术编码/解码方法中,缓冲器的所需大小作为传输单元计数被通知。
具体实施方式
在去分组化规则后的一般概念是将诸如NAL单元之类的传输单元从传输顺序重新排序到NAL单元解码顺序。
接收机包括接收机缓冲器(或解码前缓冲器),其被用来将分组从传输顺序重新排序到NAL单元解码顺序。在本发明的一个示例实施例中,接收机缓冲器大小按照字节数被设置为等于或大于deint-buf-size参数的值,例如被设置成值1.2×deint-buf-size MIME参数的值。接收机还可以考虑用于传输延迟抖动的缓冲并且或者保留单独的缓冲器用于传输延迟抖动缓冲或者合并用于传输延迟抖动的缓冲器与接收机缓冲器(并因此保留某些附加的空间用于接收机缓冲器中的延迟抖动缓冲)。
接收机以接收顺序将输入NAL单元如下地存储到接收机缓冲器中。将集合分组的NAL单元分别地存储到接收机缓冲器中。计算并且存储DON的值以用于所有的NAL单元。
在下文中,使N是可选择num-reorder-VCL-NAL-units参数(交错深度参数)的值,该参数指定了VCL NAL单元的最大量,其中该单元在NAL单元传输顺序中先于分组流中的任何VCL NAL单元并且在解码顺序中跟随在VCL NAL单元之后的。如果参数不存在,则可以默示为0值的数字。
当视频流传送会话被初始化时,接收机8为接收缓冲器9.1分配存储器以便存储至少N个VCL NAL单元。然后,接收机开始接收视频流并且将所接收的VCL NAL单元存储到接收缓冲器中。初始缓冲维持
-直到至少N个VCL NAL单元被存储到接收缓冲器9.1中,或者
-如果max-don-diff MIME参数存在,则直到函数don_diff(m,n)的值大于max-don-diff的值,其中,n在被接收NAL单元当中对应于具有AbsDON最大值的NAL单元,以及m在被接收NAL单元当中对应于具有最小AbsDON值的NAL单元,或者
-直到初始缓冲已经持续了等于或大于可选择的init-buf-timeMIME参数的持续时间。
函数don_diff(m,n)被指定如下:
If DON(m)==DON(n),don_diff(m,n)=0
If(DON(m)<DON(n)and DON(n)-DON(m)<32768),
don_diff(m,n)=DON(n)-DON(m)
If(DON(m)>DON(n)and DON(m)-DON(n)>=32768),
don_diff(m,n)=65536-DON(m)+DON(n)
If(DON(m)<DON(n)and DON(n)-DON(m)>=32768),
don_diff(m,n)=-(DON(m)+65536-DON(n))
If(DON(m)>DON(n)and DON(m)-DON(n)<32768),
don_diff(m,n)=-(DON(m)-DON(n))
其中,DON(i)是在传输顺序中具有指数i的NAL单元的解码顺序编号。
don_diff(m,n)的正值指示具有传输顺序指数n的NAL单元在解码顺序中跟随在具有传输顺序指数m的NAL单元之后。
AbsDON表示在65535之后不回转到0的NAL单元的这类解码顺序编号。换言之,AbsDON计算如下:
使m和n在传输顺序中是连续的NAL单元。对于在传输顺序中的第一个NAL单元(其指数是0),AbsDON(0)=DON(0)。对于其它NAL单元,AbsDON被计算如下:
If DON(m)==DON(n),AbsDON(n)=AbsDON(m)
If(DON(m)<DON(n)and DON(n)-DON(m)<32768),
AbsDON(n)=AbsDON(m)+DON(n)-DON(m)
If(DON(m)>DON(n)and DON(m)-DON(n)>=32768),
AbsDON(n)=AbsDON(m)+65536-DON(m)+DON(n)
If(DON(m)<DON(n)and DON(n)-DON(m)>=32768),
AbsDON(n)=AbsDON(m)-(DON(m)+65536-DON(n))
If(DON(m)>DON(n)and DON(m)-DON(n)<32768),
AbsDON(n)=AbsDON(m)-(DON(m)-DON(n))
其中,DON(i)是在传输顺序中具有指数i的NAL单元的解码顺序编号。
在接收机中通常存在两种缓冲状态:初始缓冲和边播放边缓冲。初始缓冲发生在RTP会话初始化的时候。在初始缓冲之后,开始解码和播放并且使用边播放边缓冲模式。
当接收机缓冲器9.1包括至少N个VCL NAL单元时,NAL单元被一个接一个地从接收机缓冲器9.1中移除并且被传递到解码器2。NAL单元不是必须按与它们的存储顺序相同的顺序从接收机缓冲器9.1中被移除,而是如下所述地根据NAL单元的DON。向解码器2的分组递送一直继续到缓冲器包括小于N个的VCL NAL单元,即N-1个VCL NAL单元。
将从接收机缓冲器中被移除的NAL单元被确定如下:
-如果接收机缓冲器包括至少N个VCL NAL单元,则NAL单元从接收机缓冲器中被移除并且以在下面指定的顺序被传递到解码器,直到缓冲器包括N-1个VCL NAL单元为止。
-如果max-don-diff存在,则所有的don_diff(m,n)大于max-don-diff的NAL单元m从接收机缓冲器中被移除并且以在下面指定的顺序被传递到解码器。在此,n对应于在所接收NAL单元当中具有最大AbsDON值的NAL单元。
-变量ts被设置为系统计时器的值,其在接收NAL单元流的第一分组时被初始化为0。如果接收机缓冲器包括一个其接收时间tr满足ts-tr>init-buf-time的条件的NAL单元,则NAL单元以下面指定的顺序被传递到解码器(并且从接收机缓冲器中被移除),直到接收机缓冲器不包含其接收时间tr满足指定条件的NAL单元为止。
向解码器传递NAL单元的顺序被指定如下:
使PDON是在RTP会话开始时被初始化为0的变量。对于与DON值相关联的每个NAL单元,DON距离被计算如下。如果NAL单元的DON值大于PDON的值,则DON距离等于DON-PDON。否则,DON距离等于65535-PDON+DON+1。
NAL单元以DON距离的升序被递送给解码器。如果几个NAL单元共享同一DON距离值,则它们可以以任何顺序被传递到解码器。当期望的NAL单元编号已经被传递到解码器时,对于最后一个被传递到解码器的NAL单元,PDON值被设置为DON的值。
附加去分组化方针
以下附加去分组化规则可以用来执行运算的H.264去分组器:
智能RTP接收机(例如在网关中)可以标识丢失的编码片数据分割A(DPA)。如果找到丢失的DPA,则网关可能决定不发送对应的编码片数据分割B和C,因为它们的信息对于H.264解码器来说没有意义。用这种方法,网元可以通过丢弃无用分组来降低网络负载而不用解析复杂的比特流。
智能RTP接收机(例如在网关中)可以标识丢失的分数单元(FU)。如果找到丢失的FU,则网关可能决定不发送同一NAL单元的后续FU,因为它们的信息对于H.264解码器来说没有意义。用这种方法,网元可以通过丢弃无用分组来降低网络负载而不用解析复杂的比特流。
必须丢弃分组或NALU的智能接收机可以首先丢弃所有的分组/NALU,其中,NAL单元类型八比特组的NRI字段值等于0。这可以最小化对用户体验的影响。
在下文中,被描述用于指示解码器中的最大缓冲器大小的参数。该参数deint-buf-size一般在指示分组化模式的分组化模式参数不存在或者分组化模式参数的值等于0或1的时候不存在。这个参数将在分组化模式参数等于2的时候存在。
deint-buf-size参数的值与以下假设去交错缓冲器模型相关联地被指定。在开始时,假设去交错缓冲器为空并且最大缓冲器占用m被设置为0。以下过程被用于该模型:
i)传输顺序中的下一个VCL NAL单元被插入假设去交错缓冲器。
ii)使s是缓冲器中的VCL NAL单元的字节总大小。
iii)如果s大于m,则m被设置成等于s。
iv)如果假设去交错缓冲器中的VCL NAL单元的编号小于或等于交错深度的值,则处理从阶段vii继续。
v)根据RFC XXXX的段5.5,在假设去交错缓冲器中的VCL NAL单元当中以解码顺序最早的VCL NAL单元从用于VCL NAL单元的DON值中被确定。
vi)最早的VCL NAL单元从假设去交错缓冲器中被移除。
vii)如果在传输顺序中不再有更多的VCL NAL单元,则该处理被终止。
viii)处理从阶段i继续。
这个参数发信号告知NAL单元流的属性或者接收机的实施能力。当该参数被用来发信号告知NAL单元流的属性时,该被称为v的参数的值使得:
a)当NAL单元流通过假设去交错缓冲器模型被彻底地处理时所得到的m的值小于或等于v,或者
b)只要存在缓冲溢出,通过移除来自去交错缓冲器的最早VCL NAL单元而确定的VCL NAL单元的顺序就与来自假设去交错缓冲器的VCLNAL单元的移除顺序相同。
因此,当用于VCL NAL单元解码顺序恢复的缓冲器大小至少是deint-buf-size的按字节的值时,保证接收机可以重建VCL NAL单元解码顺序。
当该参数被用来发信号告知接收机的实施能力时,该接收机能够正确地重建任何其特点在于相同的deint-buf-size值的NAL单元流的VCLNAL单元解码顺序。当接收机缓冲等于或大于deint-buf-size值的字节的这类数量时,它能够从传输顺序重建VCL NAL单元解码顺序。
非VCL NAL单元还将在确定去交错缓冲器大小的时候被考虑。当这个参数存在时,对于所有NAL单元的去交错缓冲器的足够大小是小于或等于参数值的20%以上。
如果该参数不存在,则0值被用于deint-buf-size。deint-buf-size的值是例如包括在在0到4294967295范围内的整数。
在下文中,本发明将更详细地参考图8的系统、图9的编码器1和虚拟参考解码器(HRD)5以及图10的解码器2来描述。将被编码的图像例如可以是来自例如照相机、电视录像机等的视频源3的视频流的图像。视频流的图像(帧)可以被划分成诸如片之类的较小的部分。所述片还可以被划分成块。在编码器1中,视频流被编码以便减少将经由传输信道4发射的,或发射到存储介质(未示出)的信息。视频流的图像被输入编码器1。编码器具有用于暂时存储将被编码的一部分图像的编码缓冲器1.1(图9)。编码器1还包括存储器1.3和处理器1.2,在其中根据本发明的编码任务可以被应用。存储器1.3和处理器1.2可以是发射装置6常见的情况,或者发射装置6可以具有另一个处理器和/或存储器(未示出)以用于发射装置6的其它功能。编码器1执行运动估计和/或其它的任务来压缩视频流。在运动估计中,将被编码的图像(当前图像)和之前和/或之后的图像之间的相似性被搜索。如果找到相似性,则所比较的图像或其一部分可以用作将要编码的图像的参考图像。在JVT中,图像的显示顺序和解码顺序不一定是相同的,其中,只要它被用作参考图像,参考图像必须被存储在缓冲器(例如编码缓冲器1.1)中。编码器1还将关于图像的显示顺序的信息插入到传输流中。
必要时,编码图像从编码处理被移动到编码图像缓冲器5.2。编码图像经由传输信道4从编码器1被发射到解码器2。在解码器2中,编码图像被解码以便形成尽可能对应于编码图像的未压缩图像。每个解码图像都在解码器2的DPB 2.1中被缓冲,除非它基本上立即在解码之后被显示并且未被用作参考图像。在根据本发明的系统中,参考图像缓冲和显示图像缓冲被合并并且它们使用相同的解码的图像缓冲器2.1。这消除了对将同一图像存储在两个不同地方的需要,从而降低了解码器2的存储器需求。
解码器1还包括存储器2.3和处理器2.2,在其中根据本发明的解码任务可以被应用。存储器2.3和处理器2.2可以是接收装置8常见的情况,或者接收装置8可以具有用于接收装置8的其它功能的另一个处理器和/或存储器(未示出)。
编码
我们现在来更详细地考虑编码-解码过程。来自视频源3的图像被输入编码器1并且被有利地存储在编码缓冲器1.1中。编码过程不一定要在第一图像被输入编码器之后立即开始,而是在一定数量的图像在编码缓冲器1.1中可用之后才开始。然后,编码器1试图从将被用作参考帧的图像中找到适当的候选者。然后,编码器1执行编码以形成编码图像。例如,编码图像可以是预测图像(P)、双预测图像(B)和/或帧内编码图像(I)。帧内编码图像可以不使用任何其它图像就被解码,但是其它类型的图像在其可以被解码之前需要至少一个参考图像。任何上述图像类型的图像都可以被用作参考图像。
编码器有利地向图像付上两个时间戳:解码时间戳(DTS)和输出时间戳(OTS)。解码器可以使用该时间戳来确定正确的解码时间和输出(显示)图像的时间。然而,其时间戳不一定被发射到解码器或者解码器不使用它们。
编码器还在最低层0上面的一层或多层上形成子序列。层0上的图像是可独立解码的,但是较高层上的图像可以取决于某些较低的一层或多层上的图像。在图6a的示例中存在两层:层0和层1。图像I0、P6和P12属于层0,而图6a上示出的其它图像P1-P5、P7-P11属于层1。有利地,编码器形成图像组(GOP),使得一个GOP中的每个图像都可以通过只使用同一GOP中的图像来重建。换言之,一个GOP包括至少一个可独立解码的图像和所有其它的图像,可独立解码的图像是所有其它图像的参考图像。在图7的示例中存在两个图像组。第一图像组包括层0上的图像I0(0)、P1(0)、P3(0),以及层1上的图像B2(0)、2xB3(0)、B4(0)、2xB5(0)、B6(0)、P5(0)、P6(0)。第二图像组包括层0上的图像I0(1)、和P1(1),以及层1上的图像2xB3(1)和B2(1)。每个图像组的层1上的图像被进一步安排为子序列。第一图像组的第一子序列包括图像B3(0)、B2(0)、B3(0),第二子序列包括图像B5(0)、B4(0)、B5(0),以及第三子序列包括图像B6(0)、P5(0)、P6(0)。第二图像组的子序列包括图像B3(1)、B2(1)、B3(1)。括弧中的数字指示定义用于图像所属的图像组的视频序列ID。
视频序列ID对每个图像都被传送。它可以在诸如补充增强信息数据之类的视频比特流内被传送。视频序列ID还可以在传送协议的报头字段中被发射,比如在JVT编码标准的RTP有效载荷报头内被发射。根据给出的独立GOP的分割的视频序列ID可以以视频文件元数据的格式被存储,比如以MPEG-4AVC文件格式被存储。图11a和11b公开了可用于本发明的NAL分组格式的示例。所述分组包括报头11和有效载荷部分12。报头11有利地包括差错指示符字段11.1(F,禁止)、优先权字段11.2、和类型字段11.3。所述差错指示符字段11.1指示了无比特差错的NAL单元。有利地,当所述差错指示符字段被设置时,解码器被告知在有效载荷或NALU类型的八比特组可能存在比特差错。不能处理比特差错的解码器然后可以丢弃这类分组。优先权字段11.2被用于指示封装在分组的有效载荷部分12中的图像的重要性。在一个实现的示例中,所述优先权字段可以具有如下的四个不同的值。值00指示NALU的内容不被用来重建所存储的图像(其可以被用于将来的参考)。这类NALU可以被丢弃而不会危及参考图像的完整性。上述的值00指示NALU的解码被要求保持参考图像的完整性。而且,上述的值00指示了如由编码器确定的相关的传送优先权。智能网元可以用这个信息来比次要NALU更好地保护重要的NALU。11是最高传送优先级,后面是10、然后是01,并且最后,00是最低的。
NALU的有效载荷部分12包括至少一个视频序列ID字段12.1、字段指示符12.2、大小字段12.3、定时信息12.4以及编码图像信息12.5。视频序列ID字段12.1被用于存储图像所属的视频序列的编号。字段指示符12.2被用来在两帧图像格式被使用的时候发送所述图像是第一还是第二帧的信号。两个帧都可以被编码为单独的图像。等于1的第一字段指示符有利地发信号,告知NALU属于在解码顺序中先于同一帧的第二代码字段的码帧或代码字段。等于0的第一字段指示符发信号,告知NALU属于在解码顺序中接续同一帧的第一代码字段的代码字段。必要时,定时信息字段11.3被用于与转换时间相关的信息。
NAL单元可以在不同种类的分组中被递送。在这个有利的实施例中,不同的分组格式包括简单分组和集合分组。所述集合分组可以被进一步划分成单一时间集合分组和多时间集合分组。
根据本发明的简单分组包括一个NALU。通过以RTP序列号顺序拆封简单分组而合成的NAL单元流将遵循NAL单元递送顺序。
集合分组是这个有效载荷规范的分组集合方案。所述方案被引入来反映两种不同类型网络的显著不同的MTU大小:有线IP网络(具有往往受限于以太网MTU的大小的MTU大小,大约为1500字节),以及基于IP或非IP(例如H.324/M)的无线网络,其优选的传输单元大小为254字节或更小。为了防止两个领域之间的媒体代码转换并且避免不合需要的分组化开销,引入了分组集合方案。
单一时间集合分组(STAP)集合具有相同NALU时间的NALU。各自地,多时间集合分组(MTAP)集合具有潜在不同的NALU时间的NALU。两种不同的MTAPs被定义,它们在NALU时间戳偏移的长度方面有所不同。如果那个NALU将在它自己的RTP分组中被传送,则术语NALU时间被定义为RTP时间戳将具有的值。
根据本发明的一个有利实施例MTAP和STAP共享下列非限制的分组化规则。RTP时间戳必须被设置为将要集合的所有NALU的NALU时间的最小数。NALU类型八比特组的类型字段必须被设置为表1中指示的适当值。如果被集合NALU的所有差错指示符字段都是零,则差错指示符字段11.1必须被清空,否则它必须被设置。
表1
类型 |
分组 |
时间戳偏移字段长度(比特) |
0x18 |
STAP |
0 |
0x19 |
MTAP16 |
16 |
0x20 |
MTAP24 |
24 |
集合分组的NALU有效载荷包括一个或多个集合单元。集合分组可以有所需数量的集合单元,然而集合分组中的数据总数明显地必须要适合于IP分组,并且其大小应该使得得到的IP分组小于MTU大小。
无论何时集合共享同一NALU时间的NALU,都应该使用单一时间集合分组(STAP)。STAP的NALU有效载荷包括视频序列ID字段12.1(例如7比特)和由单一图像集合单元(SPAU)跟随的字段指示符12.2。
在另一个可选择实施例中,单一图像集合分组(STAP)包括16比特无符号的解码顺序编号(DON),其后面是单一图像集合单元(SPAU)。
根据这个规范的视频序列可以是NALU流的任何部分,其可以从NALU流的其它部分被独立地解码。
帧包括可以被编码为单独图像的两个字段。等于1的第一字段指示符发信号,告知NALU属于在解码顺序中先于同一帧的第二代码字段的码帧或代码字段。等于0的第一字段指示符发信号,告知NALU属于在解码顺序中接续同一帧的第一代码字段的代码字段。
单一图像集合单元包括16比特无符号大小信息,该信息指示下列NALU的按字节的大小(除去这两个八比特组,但是包括NALU的NALU类型八比特组),该单元后面是包括它的NALU类型字节的NALU本身。
多时间集合分组(MTAP)具有类似于STAP的结构。它包括NALU报头字节和一个或多个多图像集合单元。不同的MTAP字段之间的选择是与应用相关的:时间戳偏移越大,MTAP的灵活性就越高,但是开销也越大。
在这些规范中定义了两个不同的多时间集合单元。它们都包括例如下列NALU的16比特无符号大小信息(与STAP中的大小信息一样)。除了这些16比特之外,还有视频序列ID字段12.1(例如7比特)、字段指示符12.2和用于这些NALU的定时信息的n比特,以此,n可以例如是16或24。定时信息字段必须被设置,使得MTAP中每个NALU的RTP分组的RTP时间戳(NALU时间)可以通过添加来自MTAP的RTP时间戳的定时信息而生成。
在另一个可选择实施例中,多时间集合分组(MTAP)包括NALU报头字节、解码顺序编号基础(DONB)字段12.1(例如16比特)、和一个或多个多图像集合单元。两个不同的多时间集合单元在这种情况下被定义如下。它们都包括例如下列NALU的16比特无符号大小信息(与STAP中的大小信息一样)。除了这些16比特之外,还有解码顺序编号增量(DONA)字段12.5(例如7比特)、和用于这些NALU的定时信息的n比特,以此,n可以例如是16或24。下列NALU的DON等于DONB+DOND。定时信息字段必须被设置,使得MTAP中每个NALU的RTP分组的RTP时间戳(NALU时间)可以通过添加来自MTAP的RTP时间戳的定时信息而生成。DONB将包括MTAP的NAL单元当中最小的DON值。
根据本发明的缓冲模型的行为有利地用下列参数来控制:起始输入周期(例如以90kHz时钟的时钟节拍)和虚拟分组输入缓冲器的大小(例如以字节)。优选地,缺省的起始输入周期和虚拟分组输入缓冲器的缺省大小是0。PSS客户端可以在能力交换过程中来发信号告知它们提供较大缓冲器的能力。
例如用SDP的媒体级带宽属性或专用的SDP参数,可以发送最大的视频比特率的信号。如果视频级带宽属性在给出的说明中不存在,则最大视频比特率根据使用中的视频编码配置文件和级别来定义。
例如通过使用MIME型参数或类似的非标准SDP参数,可以在所述流的SDP描述内发送每个流的起始参数值的信号。发信号的参数值覆盖对应的缺省参数值。(假定恒定时延可靠的传输信道)在SDP描述内被发信号的值保证从流的开始一直无间断播放到流的结束。
PSS服务器可以响应于RTSP播放请求来更新参数值。如果更新的参数值存在,则它将替换在SDP描述中被发信号的值或在PSS缓冲器模型的操作中的缺省参数值。更新的参数值只有在指示的播放范围中才是有效的,并且在那之后不再有效。假定恒定时延可靠的传输信道,更新的参数值保证响应于播放请求指示的实际范围的无间断播放。虚拟输入分组缓冲器的指示大小和起始输入周期应该小于或等于SDP描述中的对应值或对应的缺省值,无论那一个都是有效的。
服务器缓冲校验器根据指定的缓冲模型而被指定。所述模型是基于虚拟分组输入缓冲器。
下面给出该缓冲模型。缓冲器最初是空的。当具有视频有效载荷的RTP分组被发射时,PSS服务器立即将它们每一个添加到虚拟分组输入缓冲器1.1。在RTP或任何较低层的所有协议报头都被除去。在一个被称作起始输入周期的周期中,数据没有从虚拟分组输入缓冲器被移除。起始输入周期在第一RTP分组被添加到虚拟分组输入缓冲器的时候开始。当起始输入周期已经期满时,数据开始从虚拟分组输入缓冲器被移除。除非虚拟分组输入缓冲器1.1是空的,否则数据移除有利地发生在最大视频比特率。从虚拟分组输入缓冲器1.1除去的数据被输入虚拟参考解码器5。虚拟参考解码器5执行虚拟解码过程来保证编码视频流根据所设置参数是可解码的,或者如果虚拟参考解码器5注意到例如虚拟参考解码器5的图像缓冲器5.2溢出,则缓冲器参数可以被更改。在那种情况下,新的参数也被发射到接收装置8,其中,缓冲器因此被重新初始化。
诸如PSS服务器之类的编码和发射装置1将校验被发射的RTP分组流遵循以下要求:
-缓冲模型应该用于缺省或被发信号的缓冲参数值。发信号的参数值覆盖对应的缺省参数值。
-虚拟分组输入缓冲器的占用率将不会超过缺省或所发信号的缓冲器大小。
-虚拟分组输入缓冲器的输出比特流将遵循虚拟参考解码器的定义。
当缓冲模型在使用中时,在RTP分组流在固定时延可靠的传输信道上被传输的时候,PSS客户端应该能够接收遵循PSS服务缓冲校验器的RTP分组流。而且,PSS客户端的解码器将以由接收的分组流的RTP时间戳定义的正确的速率来输出帧。
传输
被编码图像的传输和/或存储(以及可选择的虚拟解码)可以在第一编码图像准备好之后立即开始。这个图像不一定是解码器输出顺序中的第一个,因为解码顺序和输出顺序可能不相同。
当视频流的第一图像被编码时,传输可以开始。被编码图像被选择性地存储到编码图像缓冲器1.2。传输还可以稍后开始,例如,在视频流的某个部分被编码之后开始。
例如通过使用图像顺序计数的排序,解码器2也将以正确顺序输出已解码图像,并且因此重新排序过程需要被清楚地和规范地定义。
去分组化
去分组化过程是与实施相关的。因此,以下描述是适当的实施的非限制性的示例。其它方案也可以被使用。相对于所述算法的优化很可能是可能的。
这些去分组化规则后的一般概念将NAL单元从传输顺序重新排序到NAL单元递送顺序。
解码
接下来,将描述接收机8的操作。接收机8收集属于图像的所有分组,带给它们合理的顺序。顺序的严谨性取决于所采用的配置文件。接收的分组被存储到接收缓冲器9.1中(解码前缓冲器)。接收机8丢弃任何不可用的东西,并且将剩余的传递到解码器2。集合分组通过将它们的有效载荷卸载到携带NALU的各个RTP分组中得以处理。按照它们在集合分组中被安排的顺序,那些NALU像它们在单独的RTP分组中被接收那样被处理。
在下文中,使N是可选择num-reorder-VCL-NAL-units MIME类型参数的值,其指定了VCL NAL单元的最大量,VCL NAL单元在NAL单元递送顺序中先于分组流中的任何VCL NAL单元,并且在RTP序列号顺序中或在包括该VCL NAL单元的集合分组的合成顺序中的VCL NAL单元之后。如果参数不存在,则可以默示为0值的数字。
当视频流传输会话被初始化时,接收机8为接收缓冲器9.1分配存储器以便存储至少N个VCL NAL单元。然后,接收机开始接收视频流并且将接收到的VCL NAL单元存储到接收缓冲器中,直到至少N个VCL NAL单元被存储到接收缓冲器9.1中为止。
当接收机缓冲器9.1包括至少N个VCL NAL单元时,NAL单元被一个接一个地从接收机缓冲器9.1中移除并且被传递到解码器2。NAL单元不是必须按与它们的存储顺序相同的顺序从接收机缓冲器9.1中被移除,而是如下所述地根据NAL单元的视频序列ID。向解码器2的分组递送一直继续到缓冲器包括小于N个的VCL NAL单元,即N-1个VCL NAL单元。
在图12中,描述了在解码器的解码前缓冲器中缓冲传输单元的示例。数字指示解码顺序,而传输单元的顺序指的是传输顺序(并且还指示接收顺序)。
在下文中,使PVSID是被传递到解码器的最新NAL单元的视频序列ID(VSID)。STAP中的所有NAL单元都共享同一VSID。NAL单元向解码器传递的顺序被指定如下:如果缓冲器中最旧的RTP序列号对应于简单的分组,则该简单分组中的NALU是NAL单元递送顺序中的下一个NALU。如果缓冲器中最旧的RTP序列号对应于一个集合分组,则NAL单元递送顺序在集合分组中以RTP序列号顺序传送的NALU当中被恢复,直到下一个简单分组(排斥)。这组NALU在下面被称为候选NALU。如果没有在简单分组中传送的NALU存在于缓冲器中,则所有的NALU都属于候选NALU。
对于候选NALU当中的每个NAL单元,VSID距离被计算如下。如果NAL单元的VSID大于PVSID,则VSID距离等于VSID-PVSID。否则,VSID距离等于2^(用来发送VSID的信号的比特数)-PVSID+VSID。NAL单元以VSID距离的升序被递送给解码器。如果几个NAL单元共享同一VSID距离,则将它们传递到解码器的顺序将遵循这规范中定义的NAL单元递送顺序。NAL单元递送顺序可以如下文所述地被恢复。
首先,片和数据分割根据它们的帧编号、RTP时间戳和第一字段标志与图像相关联:所有的NALU都共享相同的帧编号、RTP时间戳和属于同一图像的第一字段标志的值。SEI NALU、序列参数集NALU、图像参数集NALU、图像定界符NALU、序列结束NALU、流结束NALU、和填充符数据NALU属于传输顺序中的下一VCL NAL单元的图像。
其次,图像的递送顺序基于每个图像的nal_ref_idc、帧编号、第一字段标志和RTP时间戳而被断定。图像的递送顺序是以帧编号的升序(在模运算中)。如果几个图像共享同一帧编号值,则一个或多个具有nal_ref_idc等于0的图像首先被递送。如果几个图像共享同一帧编号值并且它们全都具有等于0的nal_ref_idc,则图像以RTP时间戳的升序被递送。如果两个图像共享同一RTP时间戳,则具有等于1的第一字段标志的图像首先被递送。请注意,原始编码图像和对应的冗余编码图像在此被认为是一个编码图像。
再者,如果使用的视频解码器不支持任意的片排序,则片和A数据分割的递送顺序是片报头中的first_mb_in_slice语法元素的升序。而且,B和C数据分割立即在递送顺序中跟随对应的A数据分割。
在上文中,使用了术语PVSID和VSID。术语PDON(在NAL单元递送顺序中的集合分组的前一NAL单元的解码顺序编号)和DON(解码顺序编号)可以替代地被使用如下:使被传递到解码器的第一NAL单元的PDON是0。NAL单元被传递到解码器的顺序被指定如下:如果缓冲器中最旧的RTP序列号对应于简单分组,则该简单分组中的NALU是NAL单元递送顺序中的下一个NALU。如果缓冲器中最旧的RTP序列号对应于集合分组,则NAL单元递送顺序在集合分组中以RTP序列号顺序传送的NALU当中被恢复,直到下一个简单分组(排斥)。这组NALU在下面被称为候选NALU。如果没有在简单分组中传送的NALU存在于缓冲器中,则所有的NALU都属于候选NALU。
对于候选NALU当中的每个NAL单元,DON距离计算如下。如果NAL单元的DON大于PDON,则DON距离等于DON-PDON。否则,DON距离等于2^(将DON和PDON表示为无符号整数的比特数)-PDON+DON。NAL单元以DON距离的升序被递送给解码器。
如果几个NAL单元共享同一DON距离,则它们向解码器的传递顺序是:
1.如果存在,图像定界符NAL单元
2.如果存在,序列参数集NAL单元
3.如果存在,图像参数集NAL单元
4.如果存在,SEI NAL单元
5.如果存在,原始编码图像的编码片和片数据分割NAL单元
6.如果存在,冗余编码图像的编码片和片数据分割NAL单元
7.如果存在,填充符数据NAL单元
8.如果存在,序列结束NAL单元
9.如果存在,流结束NAL单元
如果使用的视频解码器不支持任意的片排序,则片和A数据分割的递送顺序以片报头中的first_mb_in_slice语法元素的升序来排序。而且,B和C数据分割立即在递送顺序中跟随对应的A数据分割。
以下附加去分组化规则可以被用来执行运算的JVT去分组器:NALU以RTP序列号的顺序被呈现给JVT解码器。在集合分组中传送的NALU以它们在集合分组中的顺序来给出。集合分组的所有NALU都在下一RTP分组被处理之前被处理。
智能RTP接收机(例如在网关中)可以标识丢失的DPA。如果找到丢失的DPA,则网关可以决定不发送DPB和DPC分割,因为它们的信息对于JVT解码器来说没有意义。用这种方法,网元可以通过丢弃无用分组来降低网络负载而不用解析复杂的比特流。
智能接收机可以丢弃具有NAL参考Idc为0的所有分组。然而,如果可能,它们将处理这些分组,因为用户体验可以由于分组被丢弃而受损害。
DPB 2.1包括用于存储大量图像的存储器位置。那些位置也被称为描述中的帧存储。解码器2以正确顺序解码接收到的图像。为此,解码器检验所接收图像的视频序列ID信息。如果编码器已经为每个图像组自由地选择了视频序列ID,则解码器以它们的被接收的顺序来解码图像组的图像。如果编码器已经使用递增(或递减)编号方案为每个图像组定义了视频序列ID,则解码器以视频序列ID的顺序来解码图像组。换言之,具有最小(或最大)视频序列ID的图像组被首先解码。
本发明可以应用于许多种类的系统和装置。发射装置6包括编码器1并且可选择地包括HRD5,还有利地包括发射机7,用于将编码图像发射到传输信道4。接收装置8包括用于接收编码图像的接收机9、解码器2以及可以在上面显示解码图像的显示器10。例如,传输信道可以是陆上线路通信信道和/或无线通信信道。发射装置和接收装置还包括一个或多个处理器1.2、2.2,它们可以执行用于控制根据本发明视频流的编码/解码过程所必需的步骤。因此,根据本发明的方法可以主要地被执行为处理器的机器可执行步骤。图像缓冲可以在装置的存储器1.3、2.3中被实现。编码器的程序代码1.4可以被存储到存储器1.3中。相应地,解码器的程序代码2.4可以被存储到存储器2.3中。
显然,虚拟参考解码器5可以被安置在编码器1之后,使得虚拟参考解码器5在必要时重排编码图像并可以保证接收机8的解码前缓冲器不溢出。
本发明可以实现在为虚拟参考解码器5的一部分的缓冲校验器中或者与之分离。