HK1088162B - 图像解码方法 - Google Patents
图像解码方法 Download PDFInfo
- Publication number
- HK1088162B HK1088162B HK06108434.1A HK06108434A HK1088162B HK 1088162 B HK1088162 B HK 1088162B HK 06108434 A HK06108434 A HK 06108434A HK 1088162 B HK1088162 B HK 1088162B
- Authority
- HK
- Hong Kong
- Prior art keywords
- pictures
- picture
- encoded
- transmission unit
- identifier
- Prior art date
Links
Description
技术领域
本发明涉及一种用于对编码图像进行排序的方法,该方法包括用于在编码器中形成编码图像的编码步骤,用于解码编码器中的所述编码图像的可选假定解码步骤,用于将所述的编码图像传送到解码器的传送步骤,以及用于按照解码顺序排列解码图像的重新排列步骤。本发明还涉及一种系统,一个编码器,一个解码器,一种设备,一个计算机程序,一个信号,一个模块以及一个计算机程序产品。
背景技术
公开的视频编码标准包括ITU-T H.261,ITU-T H.263,ISO/IECMPEG-1,ISO/IEC,MEPG-2,以及ISO/IEC MPEG-4第二部分。这些标准在此作为传统的视频编码标准而被引用。
视频通信系统
视频通信系统可以被分成对话式系统(conversational system)和非对话式系统。对话式系统包括视频会议以及视频电话。这种系统的例子包括ITU-T建议H.320,H.323,以及H.324,这些标准分别详细描述了在ISDN,IP,PSTN网络中操作的视频会议/电话系统。对话式系统的特征在于其努力使终端-终端的延时最小(从音-视频捕获到远端音-视频呈现)从而改善用户体验。
非对话式系统包括存储内容的回放系统,诸如数字紧致盘(DVD)或者存储在回放设备的大型存储器中的视频文件,数字电视,和流。下面给出了这些技术领域中的最重要标准的简单回顾。
在今天的数字视频消费电子设备中占统治地位的标准是MPEG-2,它包括视频压缩,音频压缩,存储和传送的技术规范。编码视频的存储和传送基于基础流的概念。基础流由来自于一个单独的源(例如视频)的编码数据以及用于同步,识别和描述源信息所需的附加数据构成。基础流被打包成恒定长度或者可变长度的包从而形成一个打包的基础流(PES:Packetized Elementary Stream)。每个PES包由一个报头以及随后的流数据构成,流数据被称为负载。来自于每个基础流的PES包被合并从而形成一个节目流(PS)或者一个传输流(TS)。PS针对具有可忽略的传输误差的应用,例如存储-播放类型的应用设备。TS针对具有易受影响的传输误差的应用。但是,TS假设网络吞吐量保持恒定。
在ITU-T的联合视频组(JVT)和ISO/IEC正在努力研究一种标准。JVT的工作是基于ITU-T的早前的标准化工程,被称为H.26L。JVT标准的目标是发布与诸如ITU-T建议H.264,ISO/IEC国际标准14496-10(MPEG-4第10部分)相同的标准文本。草拟的标准在本文中被称为JVT编码标准,根据草拟标准的编解码器被称为JVT编解码器。
编解码规范本身在概念上区别了视频编码层(VCL)和网络抽象层(NAL)。VCL包括编解码器的信号处理功能,诸如传送,量化,运动搜索/补偿,以及循环滤波。其遵循目前视频编码器领域最通用的概念:基于宏块的编码器利用具有运动补偿的内图像预测并且对残差信号进行转换编码。VCL编码器的输出是片(slice):一个包含整数个宏块的宏块数据的比特串,以及条头信息(包含该条中的第一个宏块的空间地址,初始量化参数,等)。条中的宏块按照扫描顺序依次排列,除非使用所谓的灵活宏块排序语法特别说明了一种不同的宏块分配。仅在条内使用图像内预测,例如内预测和运动矢量预测。
NAL将VCL的条输出压缩到网络抽象层单元(NAL单元或者NALU),这些单元适于在打包网络上传输或者在打包定向复用环境中使用。JJVT的附件B定义了一个封装处理,从而在面向字节流的网络上传送这样的NALU。
H.263可选的参考图像选择模式以及MPEG-4第2部分的NEWPRED编码工具能够为每个图像段(例如H.263中的每个条)选择用于运动补偿的参考帧。而且,H.263可选的增强参考图像选择模式和JVT编码标准能够分别为每个宏块选择参考帧。
参考图像选择能够启动多种类型的时间可伸缩方案。附图1表明了一个时间可伸缩方案的例子,在这里称为递归时间可伸缩。示例的方案能够利用三种恒定的帧速率解码。附图2描述了一种被称为视频冗余编码的方案,其中一个图像序列以交织的方式被分成两个或者多个独立的编码线。这些以及所有随后的附图中的箭头表示运动补偿的方向,帧下方的数值与每个帧的捕获和显示次数相应。
参数组概念
JVT编解码的一个基础的设计概念是生成自包含的包,从而不需要生成诸如报头副本的结构。通过将与不止一个条相关的信息同媒体流分离可以实现上述方式。高层的元信息应当在包含条包的RTP包流之前被可靠地异步发送。该信息还能够在不具有专用于此目的带外传输信道的设备中带内传送。高级别参数的组合被称为参数组。参数组包括诸如图像尺寸,显示窗,所采用的可选编码模式,宏块分配映射等信息。
为了能够改变图像参数(例如图像尺寸),同时不需要发送与条打包流同步更新的参数组,编码器和解码器可以包括一个多于一个参数组的列表。每个条头包括一个表示将被使用的参数组的码字。
这种结构允许将参数组的传输同包流相分离,并且通过附加的装置,例如,作为容量变换的副作用,或者通过(可靠的或者不可靠的)控制协议来传送。甚至有可能从不传送它们,而通过一个应用设计规范而将其固定。
传输顺序
在传统的视频编码标准中,除了B图像以外,图像的解码顺序与显示顺序相同。传统的B图像的块可以根据两个参考图像在时间上进行双向预测,其中一个参考图像在时间上在先显示,而另一个参考图像在时间上在后显示。只有在解码顺序中最近的参考图像能够在显示顺序中位于B图像之前(例外:在H.263的交织编码中,时间上连续的参考帧的两场图像在解码顺序中都位于B图像之前)。传统的B图像不能作为时间预测中的参考图像使用,因此传统的B图像可以被任意放置而不会影响任何其他图像的解码。
JVT编码标准与早前的标准相比具有以下的新颖的技术特征:
-图像的解码顺序与显示顺序分离。帧_数(frame_num)语法单元的值表示解码顺序,图像顺序计数表示显示顺序。
-B图像中用于一个块的参考图像在显示顺序中可以在B图像之前或者之后。因此,B图像表示双向预测图像,而不是双向图像。
-没有被用作参考图像的图像被明确标记。任何类型的图像(帧内图像,帧间图像,B等)或者是参考图像或者是非参考图像。(因此,B图像能够作为用于时间预测其它图像的参考图像使用)。
-图像可以包括利用不同的编码类型编码的条。换句话说,编码图像可以包括例如帧内编码条和B-编码条。
显示顺序与解码顺序的分离从压缩效率和误差弹性的方面具有优势。
在附图3中表明了预测结构潜在的提高了压缩效率的例子。方框表示图像,方框内的大写字母表示编码类型,方框内的数字是根据JVT编码标准的图像编号,箭头表示预测的依赖关系。注意图像B17是图像B18的参考图像。与传统编码相比,压缩效率潜在的提高了,这是由于图像B18的参考图像与传统的利用PBBP或者PBBBP的编码图像方案相比在时间上更为靠近。与传统的PBP编码图像方案相比,压缩效率潜在的提高,这是由于部分参考图像是双向预测的。
附图4表明了能够用于提高误差弹性的内图像延迟方法的例子。传统上,内图像在一个场景切换之后立即被编码,或者是作为一个到期的内图像更新周期的响应而被编码。在内图像延迟方法中,一个内图像并不是在产生编码一个内图像的需要之后立即被编码,而是选择一个在时间上连续的图像作为一个内图像。编码的内图像和内图像的传统位置之间的每个图像都利用下一个时间上连续的图像进行预测。如图4所示,内图像延迟方法生成了两个独立的帧间图像预测链,而传统的编码方法仅生成一个单独的帧间图像链。很明显,两个链的方法比一个链的传统方法更能够稳定的抵御擦除误差(erasureerror)。如果一个链丢失了数据包,另一个链仍然能够被正确接收。在传统的编码中,包损失经常会使误差被传送到帧间图像预测链剩余部分。
通常有两种类型的排序和时间信息与数字视频相关:解码和呈现顺序。下面更进一步的介绍相关的技术。
解码时间戳(DTS)表示与参考时钟相关的时间,编码数据单元在参考时钟被解码。如果DTS被编码和传送,其用于两个目的:第一,如果图像的解码顺序与它们的输出顺序不同,DTS明确表示解码顺序。第二,DTS保证一个特定的解码前缓冲(用于解码器的编码数据单元的缓冲),假如接收速率在任何时刻都接近传输速率。在终端-终端反应时间变化的网络中,DTS的第二种应用没有或者几乎不产生影响。相反,假如在后解码缓冲器(用于解码图像的缓冲)中存在用于未压缩图像的空间,接收数据能够被尽可能快的解码。
DTS的运输取决于通信系统和所使用的视频编码标准。在MPEG-2系统中,DTS能够选择性的作为一个项目在PES包的报头中传送。在JVT编码标准中,DTS能够选择性的作为补充增强信息(SEI)的一部分被携带,并且能够在可选的假设参考解码器中被使用。在ISO基础媒体文件格式中,DTS将自身的方框类型,解码时间贡献给取样方框。在多种系统中,例如基于RTP的流系统中,DTS根本没有被传输,这是由于在该系统中解码顺序被假设与传输顺序相同,并且抽取解码时间不会发挥重要作用。
H.263选择附件U和附件W.6.12说明了一个图像编号,该数在解码顺序中相对于先前的参考图像增加1。在JVT编码标准中,帧_数语法单元(以后也被称为帧编号)与H.263的图像编号类似。JVT编码标准说明了内图像的一个特殊类型,称为瞬间解码刷新(IDR)图像。没有后来图像会参考在解码顺序中位于IDR图像之前的图像。一个IDR图像经常被编码作为场景改变的响应。在JVT编码标准中,帧编号在每个IDR图像处被复位为0,假如如附图5a和5b所示丢失了IDR图像,其能够在任何情况下改进误差弹性。但是,应当注意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。
RTP序列编号通常是位于RTP报头中的16比特无符号值,对于每个发送的RTP数据包,该值增加1,并且接收机可以使用该值来检测包损失以及恢复包序列。
多媒体流的传输
一个多媒体流送系统有一个流送服务器和多个通过网络访问服务器的播放器。网络通常是面向包的并且提供一点或不提供装置来维持服务质量。播放器通常从服务器中取出预存储的或直播的多媒体内容并且在下载内容的同时实时播放该内容。通信的种类可以是点对点或者是多点传送。在点对点流传送中,服务器为每一个播放器提供一个独立的连接。在多点流传送中,服务器传送一个单一数据流给多个播放器,并且只有在需要的时候,网络单元才复制该流。
当一个播放器已经建立了一个与服务器的连接并且要求了多媒体流时,服务器开始传输所需的流。播放器并没有立即开始回放该流,而是通常缓冲输入数据几秒钟。在此,这种缓冲被称为初始缓冲。初始缓冲帮助维持不间断的回放,因为,在偶然增加传输延迟或网络全部掉线的情况下,用户可以解码并回放缓冲的数据。
为了避免无限制的传输延迟,在流送媒体中通常不喜欢可靠的传输协议。代替地,系统选择不可靠的传输协议,例如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图像不归零(如同JVT编码标准一样)。但是,当使用这样解决方案时可能发生两个问题:
第一,附图5a表明了一种解决方案,其中使用连续计数方案。例如,如果丢失了IDR图像I37(不能被接收或解码),解码器继续解码接下来的图像,但是它使用的是错误的参考图像。这导致错误继续向下传输到接下来的帧,直到接收到独立于校正帧的下一帧,并且该帧被正确解码为止。在附图5b所示的例子中,帧编号在一个IDR图像被复位为0。现在,在丢失了一个IDR图像10的情况下,解码器通知在最新正确解码图像P36之后在图像编号中存在一个大的间隙。解码器然后假设发生了一个误差并且将显示器冻结在图像P36,直到接收并解码独立于该校正帧的下一帧。
第二,如果接收机假设了一种预定义计数方案,例如在解码顺序中每个参考图像增加1,则在接合和子序列去除中的出现的问题是很明显的。接收机可以使用预定义的计数方案检测损失。接合(slicing)指的是在另一个编码序列的中间插入一个编码序列的操作。一个实际使用的接合的例子是在数字电视广播中插入广告。如果接收机采用了一个预定义的计数方案,发射机必须根据接合序列的位置和帧计数在传输过程中更新帧计数。类似的,如果发射机决定不传输任何子序列以避免在一个IP网络中出现网络拥堵,例如,需要根据放置的子序列的位置和帧计数在传输过程中更新帧计数的数。在本说明书中,将在以后详细描述子序列的概念。
对于本领域的技术人员来说,NAL单元的解码顺序能够根据NAL单元序列编号重建,NAL单元序列编号与RTP序列编号类似,但是表明的是NAL单元的解码顺序,不是传输顺序。但是,当采用这种解决方案时会产生两个问题:
第一,在某些情况下,不需要完美恢复解码顺序。例如,一幅图像的SEI消息通常以任意顺序解码。如果解码器支持任意的条排序,一幅图像的条能够以任意顺序解码。结果,由于网络元件中的无意识的包的排列差别,NAL单元可以不按照NAL序列编号的顺序接收,接收机不必须等待与丢失的NAL单元序列编号相应的NAL单元,即使NAL单元以及接下来的NAL单元序列编号能够被实际解码。该附加延迟会降低所使用的视频通信系统所感受到的主观质量。而且,它可能引发不必要的损失校正的使用或者隐藏处理。
第二,某些NAL单元,例如用于非参考图像的条以及SEI NAL单元可以被网络元件放弃,而不会影响其它NAL单元的解码处理。NAL单元的放弃可能造成在NAL单元序列编号的接收序列中出现间隙。结果,例如对于RTP序列编号,接收机假设预定义的计数方案,例如每个NAL单元按照解码顺序增加1,并且使用序列编号中的间隙进行损失检测。NAL单元序列编号的使用同排列NAL单元,同时不影响其它NAL单元的解码相矛盾。
子序列
JVT编码标准还包括一个子序列概念,其与非参考图像的使用相比能够提高时间可伸缩性,从而使得图像的帧间预测链能够被看作是一整个,同时不影响编码流的剩余部分的解译能力。
子序列是一个子序列层内的一组编码图像。一幅图像属于一个子序列层,并且仅属于一个子序列层。一个子序列不依赖于相同子序列层中的任何其他子序列,也不依赖于更高子序列层中的子序列。层0的子序列可以独立于任何其他的子序列以及先前的长期的参考图像而被解码。附图6a表明了在层1含有子序列的图像流的例子。
一个子序列层包括序列中的编码图像的子集。子序列层利用非负整数计数。具有较大的层数的层是比具有较小层数的层更高的层。这些层根据彼此之间的依赖性排序从而使某一层不依赖于任何更高的层,但是可以依赖更低的层。换句话说,层0可以独立解码,层1中的图像可以根据层0预测,层2中的图像可以根据层0和层1预测,等。期望主观质量与解码层的数目一起增加。
子序列的概念包含在JVT解码标准当中:在序列参数组中required_frame_num_update_behaviour_flag等于1表明编码序列不包含所有的子序列。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编码标准中的编码图像的解码顺序通常不能根据帧编号和子序列识别符重建。如果传输顺序与解码顺序不同,并且编码图像属于子序列层1,不能根据子序列识别符和帧编号推断与子序列层0相关的解码顺序。例如,考虑在附图6b中表明的编码方案,其中输出顺序从左向右,方框表示图像,方框里面的大写字母表示根据JVT编码标准的帧编号,下划线中的字符表示非参考图像,箭头表示预测依赖关系。如果图像按照I0,P1,P3,I0,P1,B2,B4,P5的顺序传送,不能够推断图像B2属于哪个独立图像组(独立GOP)。一个独立GOP是能够不参考任何其他图像组中的图像而正确解码的图像组。
可以讨论在先前的例子中,能够根据其输出时间戳来推断图像B2的正确独立GOP。但是,图像的解码顺序不能根据输出时间戳和图像编号恢复,因为解码顺序和输出顺序是不相关的。考虑下面的例子(附图6c),其中输出顺序从左到右,方框表示图像,方框内的大写字母表示编码类型,方框内的数字表示根据JVT编码标准的帧编号,箭头表示预测依赖关系。如果图像不按照解码顺序输出,就不能可靠地检测在输出顺序中,图像P4是否应当在第一或第二独立GOP的P3之后解码。
基础和冗余图像
基础编码图像是一幅图像的基础编码表示。解码的基础编码图像覆盖整个图像区域,即基础编码图像包括该图像的所有条和宏块。冗余编码图像除非基础编码图像丢失或者恶化而不会被用于解码的一幅图像或者图像的一部分的冗余编码表示。冗余编码图像不需要包括基础编码图像中的所有宏块。
缓冲
流客户端通常具有一个能够存储比较大数量的数据的接收机缓冲器。最初,当建立一个流送对话时,客户并没有立即开始回放数据流,而是通常将输入的数据缓冲几秒钟。这一缓冲有助于维持连续的回放,因为,万一偶然增加的传输延时或网络吞吐量下降,客户可以解码和回放缓冲的数据。否则,没有初始缓冲,客户只有冻结显示,停止解码,并且等待输入数据。该缓冲对于自动或选择性地在任何一个协议层的重发也是必需的。如果图像的任何一部分丢失了,就会采用一个重发机制来重新发送丢失的数据。如果重发数据在其所安排的解码或回放时间之前被接收,该丢失就被完美地恢复了。
编码图像可以根据其在解码序列的主观质量中的重要性而被分级。例如,非参考图像,例如传统的B图像,在主观上被认为最不重要,因为它们的不存在不会影响其它图像的解码。主观的分级也可以在数据分割或条组的基础上进行。主观上认为最重要的编码条和数据分割可以早于它们的解码顺序指示而被发送,而主观上认为最不重要的编码条和数据分割可以晚于它们自然编码顺序指示被发送。因此,任何一个最重要的条和数据分割的重发相对于最不重要的条和数据分割更可能在安排的解码或回放时间之前被接收。
发明内容
本发明能够在视频通信方案中将来自于传输顺序的视频数据重新排列成解码顺序,在该方案中,这种顺序对于不按解码顺序传输数据非常有利。
在本发明中,解码顺序的带内信令从发射机被传送到接收机。该信令可以是能够被用于恢复解码顺序的视频比特流中的任何其他信令的补充或者替代,例如JVT编码标准中的帧编号。
下文将描述JVT编码标准中对帧编号的补充信令。以后,一个独立的GOP包括按照解码顺序从一个IDR图像(包含在内)到下一个IDR图像(不包含在内)的图像。该流中的每个NAL单元包括或者与一个视频序列ID有关,该视频序列ID对于一个独立GOP中的所有NAL来说保持不变。
一个独立GOP的视频序列ID将与解码顺序中先前的独立GOP的视频序列ID不同,或者与先前的视频序列ID(模运算)相比,其应当增加。在前一情况下,独立GOP的解码顺序由它们的接收顺序确定。例如,以具有最小的RTP序列编号的IDR图像开始的独立GOP首先被解码。在后面的情况下,独立的GOP按照视频序列ID递增的顺序被解码。
在下面的描述中,通过使用基于编码器解码器的系统来描述本发明,但是很明显本发明还能够在其它存储视频信号的系统中执行。存储的视频信号可以是在编码之前存储的未编码信号,作为编码之后存储的编码信号,或者作为编码和解码处理之后存储的解码信号。一个文件系统接收音频和/或视频比特流,该比特流例如按照解码顺序被封装,并作为一个文件被存储。此外,编码器和文件系统能够生成元数据,其说明图像和NAL单元的主观重要性,并且本质上包含有关子序列的信息。该文件能够被存储到一个数据库中,直接回放服务器能够从该数据库中读出NAL单元,并将其封装成RTP包。根据可选择的元数据以及所使用的数据连接,直接回放服务器能够将包的传输顺序修改为不同于解码顺序,去除子序列,判断SEI消息将传输的内容,如果存在的话,等等。在接收端,RTP包被接收和缓存。通常,NAL单元首先被重新排列成正确的顺序,之后,NAL单元被传送到解码器。
根据H.264标准,VCL NAL单元被指定为具有nal_unit_type等于1-5(包含1和5)的NAL单元。在该标准中,NAL单元类型1-5被定义为:
1 非IDR图像的编码条
2 编码条数据部分A
3 编码条数据部分B
4 编码条数据部分C
5 IDR图像的编码条
下文中根据本发明的优选实施例描述了视频比特流中的任何解码顺序信息的替代信令。一个解码顺序编号(DON)表示NAL单元的解码顺序,而不是NAL单元传输到解码器的传输顺序。以后,DON被假设为没有一般性损失的16位无符号整数。令一个NAL单元的DON为D1,另一个NAL单元的DON为D2。如果D1<D2并且D2-D1<32768,或者如果D1>D2,并且D1-D2>=32768,那么DON=D1的NAL单元在NAL单元传输顺序上先于DON=D2的NAL单元。D1<D2并且D2-D1>=32768,或者如果D1>D2,并且D1-D2<32768,那么DON=D2的NAL单元在NAL单元传输顺序上先于DON=D1的NAL单元。与不同的基础编码图像相关的NAL单元不会具有相同的DON的值。与相同的基础编码图像相关的NAL单元可以具有相同的DON的值。如果基础编码图像的所有NAL单元具有相同的DON的值,与基础编码图像相关的冗余编码图像的NAL单元可以与基础编码图像的NAL单元具有不同的DON的值。具有相同的DON的值的NAL单元的NAL单元传输顺序例如可以如下所示:
1.图像分隔NAL单元,如果存在的话
2.序列参数组NAL单元,如果存在的话
3.图像参数组NAL单元,如果存在的话
4.SEI NAL单元,如果存在的话
5.基础编码图像的编码条和条数据分割NAL单元,如果存在的话
6.冗余编码图像的编码条和条数据分割NAL单元,如果存在的话
7.滤波数据NAL单元,如果存在的话
8.序列NAL结束单元,如果存在的话
9.流NAL结束单元,如果存在的话。
根据本发明的第一方面,提供了一种方法,主要特征在于在编码步骤中,为编码图像定义了一个与图像ID不同的视频序列ID。
根据本发明的第二方面,提供了一种用于编码图像和用于对编码图像排序的编码器,包括一个排列器,用于形成至少一个编码图像组并且为该图像组中的每个图像定义一个图像ID,该编码器进一步包括一个定义器,用于为编码图像定义一个与图像ID分离的视频序列ID,视频序列ID被安排成与相同的图像组中的每个图像相同。
根据本发明的第三方面,提供了一种用于解码编码图像从而形成解码图像的解码器,包括一个重新排列器,用于以解码顺序排列编码图像,该解码器进一步包括一个处理器,用于通过使用视频序列ID来确定哪些图像属于相同的图像组。
根据本发明的第四方面,提供了一种包括用于执行编码图像的排序方法的计算机可执行步骤的软件程序,该方法包括用于在编码器中形成编码图像的编码步骤,其中形成至少一个图像组,为该图像组中的每个图像定义一个图像ID,一个用于将所述的编码图像传输到解码器的传输步骤,一个用于按照解码顺序排列编码图像的重新排列步骤,其中在编码步骤中,为编码图像定义一个与图像ID相分离的视频序列ID。
根据本发明的第五方面,提供了一种包括编码图像的信号,编码图像至少形成了一个图像组,为该图像组的每个图像定义一个图像ID,其中在该信号中为编码图像定义一个与图像ID分离的视频序列ID,对于相同图像组中的每个图像而言视频序列ID相同。
根据本发明的第六方面,提供了一种用于排序包含有第一和第二编码图像的编码图像的方法,根据第一编码图像形成至少一个第一传输单元,根据第二编码图像形成至少一个第二传输单元,其中为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第七方面,提供了一种用于对包含第一和第二编码图像的编码图像进行排序的设备,该设备包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元,根据第二编码图像形成至少一个第二传输单元,该设备进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第八方面,提供了一种用于编码图像和用于对包含第一和第二编码图像的编码图像进行排序的编码器,该编码器包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元,和根据第二编码图像形成一个第二传输单元,该编码器进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第九方面,提供了一种用于解码编码图像从而形成解码图像的解码器,编码图像包括在根据第一编码图像形成的至少一个第一传输单元中传输的第一编码图像和在根据第二编码图像形成的至少一个第二传输单元中传输的第二编码图像,该解码器进一步包括一个处理器,用于根据为所述的第一传输单元定义的第一识别符和为所述的第二传输单元定义的第二识别符来确定包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第十方面,提供了一种包括一个用于编码图像和用于对包含第一和第二编码图像的编码图像进行排序的系统,该编码器包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元和根据第二编码图像形成至少一个第二传输单元,以及一个用于解码编码图像的解码器,该系统在编码器中进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,在解码器中进一步包括一个处理器,用于根据所述的第一识别符和所述的第二识别符确定包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第十一方面,提供了一种含有用于执行用于排序包含第一和第二编码图像的编码图像,从而根据第一编码图像形成至少一个第一传输单元,根据第二编码图像形成至少一个第二传输单元的方法的计算机可执行步骤的计算机程序,该计算机程序进一步包括用于为所述的第一传输单元确定一个第一识别符和为所述的第二传输单元确定一个第二识别符的计算机可执行步骤,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第十二方面,提供了一种计算机程序产品,用于存储一个包含有用于执行含有第一和第二编码图像的编码图像的排序,从而根据第一编码图像形成至少一个第一传输单元和根据第二编码图像形成至少一个第二传输单元的方法的计算机可执行步骤的计算机程序该计算机程序进一步包括用于为所述的第一传输单元确定一个第一识别符和为所述的第二传输单元确定一个第二识别符的计算机可执行步骤,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第十三方面,提供了一种含有根据第一编码图像形成的至少一个第一传输单元,和根据第二编码图像形成的至少一个第二传输单元的信号,该信号进一步包括为所述的第一传输单元确定的一个第一识别符和为所述的第二传输单元确定的一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第十四方面,提供了一种用于排序用于传输的编码图像的模块,编码图像包括第一和第二编码图像,该模块包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元,根据第二编码图像形成至少一个第二传输单元,该模块进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
根据本发明的第十五方面,提供了一种用于对编码图像进行重新排序从而进行解码的模块,编码图像包括在根据第一编码图像形成的至少一个第一传输单元中传输的第一编码图像和在根据第二编码图像形成的至少一个第二传输单元中传输的第二编码图像,该模块进一步包括一个处理器,用于根据为所述的第一传输单元定义的第一识别符和为所述的第二传输单元定义的第二识别符,确定包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序。
本发明提高了编码系统的可靠性。通过使用本发明,图像的正确解码顺序能够比现有系统更可靠地确定,即使在解码器中不能获得视频流中的某些包。
附图说明
附图1表明了一个递归时间可伸缩方案的例子,
附图2表明了被称为视频冗余编码的方案,其中一个图像序列以交织的方式被分成两个或者多个独立的编码线程,
附图3表明了潜在地提高压缩效率的预测结构的例子,
附图4表明了能够被用于提高误差弹性的图像内延迟方法的例子,
附图5a和5b表明了现有技术中对编码视频流图像的不同计数方案,
附图6a表明了一个在层1含有子序列的图像流的例子,
附图6b表明了在层1含有具有子序列的两个独立图像组的图像流的例子,
附图6c表明了不同独立图像组的图像流的例子,
附图7表明了在层1含有子序列的图像流的另一个例子,
附图8表明了根据本发明的系统的优选实施例,
附图9表明了根据本发明的编码器的优选实施例,
附图10表明了根据本发明的解码器的优选实施例,
附图11a表明了在本发明中使用的NAL打包格式的例子,以及
附图11b表明了在本发明中使用的NAL打包格式的另一个例子。
具体实施方式
下面将参照附图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还将图像的显示顺序信息插入到传输流中。实际上,除了JVT语法(例如RTP时间戳)以外,还可以使用时间信息SEI消息或者时间戳。
如果需要,编码图像从编码处理被移动到编码图像缓冲器1.2。编码图像通过传输信道4从编码器1被传送到解码器2。在解码器2中,编码图像被解码从而形成与编码图像尽可能相对应的未压缩图像。每个解码图像都被缓存在解码器2的解码图像缓冲器(DPB)2.1中,除非该图像在解码之后立即被显示并且没有被作为参考图像使用。在根据本发明的系统中,组合了参考图像缓冲和显示图像缓冲,并且它们使用相同的解码图像缓冲器2.1。这消除了在两个不同的地方存储相同图像的需要,因此降低了解码器2的存储需要。
解码器1还包括一个存储器2.3以及一个处理器2.2,在处理器中应用根据本发明的解码任务。存储器2.3和处理器2.2可以与接收设备8共用,或者接收设备8可以具有令外的处理器和/或存储器(未显示),用于接收设备8的其它功能。
RTP包的负载格式根据需要被定义为多个不同的负载结构。但是,一个接收到的RTP包包含什么样的结构可以从该负载的第一个字节中明确得知。该字节将被构建为一个NAL单元报头。NAL单元类型字段表明目前是哪一结构。可能的结构是:单独NAL单元包,集合包和分段单元。单独NAL单元包在负载中仅包括一个单独的NAL单元。NAL报头类型字段将等于原始的NAL单元类型,即1-23的范围内含1和23。集合包类型被用于将多个NAL单元集合成一个单独的RTP负载。该包存在四种版本,单独时间集合包类型A(STAP-A),单独时间集合包类型B(STAP-B),具有16比特偏移的多时间集合包(MTAP)(MTAP16)以及具有24比特偏移的多时间集合包(MTAP)(MTAP24)。为STAP-A,STAP-B,MTAP16以及MTAP24设定的NAL单元类型编号分别是24,25,26和27。分段单元被用于将一个单独的NAL单元分成多个RTP包。它存在两个版本,分别用NAL单元类型编号28和29识别。
为RTP包传输定义的打包模式存在三种情况:
-单独NAL单元模式,
-非交织模式,以及
-交织模式。
单独NAL单元模式适用于遵照ITU-T建议H.241的对话式系统。非交织模式适用于不遵照ITU-T建议H.241的对话式系统。在非交织模式,NAL单元按照NAL单元解码顺序传输。交织模式适用于不需要非常低的终端-终端反应时间的系统。交织模式允许不按照NAL单元解码顺序传输NAL单元。
所使用的打包模式可以通过可选打包模式MIME参数或者通过外部装置表示。使用的打包模式控制RTP负载中允许的NAL单元类型。
在交织打包模式中,允许NAL单元的传输顺序与NAL单元的解码顺序不同。解码顺序编号(DON)是负载结构中的一个字段或者是表示NAL单元解码顺序的导出变量。
传输和解码顺序的组合按照如下方式由可选交织深度MIME参数控制。当可选交织深度MIME参数的值等于0并且不允许NAL单元不按照解码顺序传输时,NAL单元的传输顺序与NAL的解码顺序相同。当可选交织深度MIME参数的值大于0或者允许NAL单元不按照它们的解码顺序传输时,实际上,
-在多时间集合包16(MTAP16)和多时间集合包24(MTAP24)中NAL单元的顺序不需要与NAL单元解码顺序相同,以及
-通过拆封单独时间集合包B(STAP-B),MTAP和两个连续包中的分段单元B(FU-B)形成的NAL单元的顺序不需要与NAL单元解码顺序相同。
单独NAL单元包,STAP-A以及FU-A的RTP负载结构不包括DON。STAP-B和FU-B结构包括DON,MTAP的结构允许DON的推导。
如果发射机期望封装每个包的一个NAL单元,并且不按照解码顺序发射包,可以使用STAP-B包类型。
在单独NAL单元打包模式,NAL单元的传输顺序与它们的NAL单元解码顺序相同。在非交织打包模式,单独NAL单元包和STAP-A,FU-A的传输顺序与它们的NAL单元解码顺序相同。一个STAP中的NAL单元按照NAL单元解码顺序呈现。
由于H.264允许解码顺序与显示顺序不同,RTP时间戳的值可以不作为RTP序列编号的函数单调递减。
传输顺序中的第一NAL单元的DON值可以被设定为任意值。DON值的范围是0-65535(包括0和65535)。在达到最大值之后,DON的值归零。
包含在任意的STAP-B,MTAP中的两个NAL单元的解码顺序或者以一个FU-B开始的一系列分段单元的解码顺序按照如下的方式被确定。令一个NAL单元的DON的值为D1,另一个NAL单元的DON的值为D2。如果D1=D2,则两个NAL单元的NAL单元解码顺序可以是任意的。如果D1<D2,并且D2-D1<32768,或者如果D1>D2,并且D1-D2>=32768,则在NAL单元解码顺序中,DON的值等于D1的NAL单元位于DON的值等于D2的NAL单元之前。如果D1<D2,并且D2-D1>=32768,或者如果D1>D2,并且D1-D2<32768,则在NAL单元解码顺序中,DON的值等于D2的NAL单元位于DON的值等于D1的NAL单元之前。与场相关的DON的值这样被确定从而使按照上述方式由DON的值确定的解码顺序与NAL单元解码顺序一致。如果NAL单元流中的两个连续的NAL单元的顺序被转换,并且新的顺序仍然与NAL单元解码顺序一致,NAL单元具有相同的DON值。例如,当使用中的视频编码方案允许任意的条顺序,则允许一个编码图像中的所有编码条NAL单元具有相同的DON值。结果,具有相同DON值的NAL单元可以利用任何顺序解码,并且具有不同DON值的两个NAL单元应当按照上述的顺序被传送到解码器。当NAL单元解码顺序中的两个连续的NAL单元具有不同的DON值时,解码顺序中第二NAL单元的DON值应当是解码顺序中第一NAL单元的DON的值加1。接收机不能期望NAL单元解码顺序中的两个连续的NAL单元的DON的值的绝对差等于1,即使在无误差传输当中。由于在将DON的值与NAL单元相关时,可能并不知道是否所有的NAL单元都被传送到接收机,因此不需要增加1。例如,当包将被转送到的网络存在比特率缺乏时,网关将不转送非参考图像的编码条NAL单元或者SEI NAL单元。在另一个例子中,现场直播可能一次又一次的地被诸如广告的编码前的内容所打断。预编码剪辑中的第一个内图像被预先传送从而确保在接收机中能够实际接收到该图像。在传输第一个内图像时,始发者并不确切知道在在预编码剪辑的第一个内图像之前有多少NAL单元将按照解码顺序出现。因此,必须在传送它们时估计预编码剪辑中的第一个内图像的NAL单元的DON的值,并且可以会出现DON值的空白。
编码
现在让我们详细考虑编解码处理。来自于视频源3的图像进入编码器1并且预先存储在编码前缓冲器1.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的图像10(0),P1(0),P3(0),层1上的图像B2(0),2×B3(0),B4(0),2×B5(0),B6(0),P5(0),P6(0)。第二独立图像组包括层0的图像10(1)和P1(1)以及层1上的图像2×B3(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文件格式中。
下文将简要描述用于表示视频比特流中的解码顺序信息的另一个优选方法。编码器将解码顺序编号(DON)初始化为一个合适的开始值,例如0。这里假设一种具有一个最大值的循环递增计数方案。如果,例如解码顺序编号是16比特无符号整数,最大值是65535。编码器根据基础编码图像形成一个或者多个NAL单元。编码器能够为相同图像的每个NAL单元定义相同的解码顺序编号,并且如果存在冗余编码图像(高层的子序列),编码器能够为这些冗余编码图像的NAL单元指派一个不同的DON。当整个基础编码图像和其可能的冗余编码图像被编码时,编码器开始按照解码顺序处理下一基础编码图像。如果解码顺序编号的值小于所述的最大值,编码器最好将解码顺序编号增加1。如果解码顺序编号具有最大值,编码器将解码顺序值设置为最小值,最好为0。然后,编码器根据所述的下一个基础编码图像形成NAL单元,并且将它们指派为解码顺序编号的当前值。如果分别存在相同基础编码图像的任何冗余编码图像,它们也被转换成NAL单元。操作继续,直到所有的基础编码图像以及每个冗余编码图像(如果存在的话)都被处理。传输设备在所有图像都被处理之前可以开始传输NAL单元。
如果编码器知道远端解码器不能以任意的顺序(即,不按照光栅扫描顺序)处理接收的条,编码器应当为光栅扫描顺序中的基础编码图像的每个条指派一个递增的DON值。就是说,如果在单独NAL单元中传送一个条,则每个连续的NAL单元具有不同的DON值。如果该条作为一个数据分割NAL单元传送,则条的每个数据分割NAL单元共享相同的DON值。对于一个冗余编码图像的条,编码器为DON指派一个大于相应的基础编码图像的相应条的DON值。
在接收机中,解码顺序编号能够被用于确定编码图像的正确解码顺序。
附图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提供更好的保护。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单元传输顺序。
集合包是负载规范的包集合方案。引入该方案是为了反映两个不同网络类型-有线IP网络(MTU尺寸通常由以太MTU尺寸,约为1500字节限制),以及基于IP或者非IP(例如H.324/M)的无线网络,其优选地具有254字节或者更小传输单元尺寸-MTU尺寸的显著不同。为了防止两个领域之间的媒体转码,并且为了避免不期望的打包费用,引入了一种包集合方案。
单独时间集合包(STAP)将NALU和一致的NALU时间集合起来。多时间集合包(MTAP)分别与潜在不同的NALU时间集合。定义了两种在NALU时间戳偏移长度上不同的两种不同的MTAP。NALU时间被定义为如果NALU将在其自身的RTP包中传输,RTP时间戳将具有的值。
MTAP和STAP共享下述的根据本发明的一个优选实施例的非限制打包规则。RTP时间戳必须被设置为所有将被集合的NALU的NALU时间的最小值。NALU类型字节中的类型字段必须被按照表1的方式设置为合适的值。如果集合NALU的所有的误差表示符字段是0,误差表示符字段11.1必须被清除,否则,其必须被设置。
表1
| 类型 | 包 | 时间戳偏移字段长度(以比特为单位) |
| 0×18 | STAP | 0 |
| 0×19 | MTAP16 | 16 |
| 0×20 | MTAP24 | 24 |
集合包的NALU负载包括一个或者多个集合包。集合包能够传输所需的多个集合单元,但是一个集合包中的数据的总数目必须适合于一个IP包,并且可以选择尺寸,使产生的IP包小于MTU尺寸。
只要集合的NALU共享相同的NALU时间,就应当使用单独时间集合包(STAP)。STAP的NALU负载包括视频序列ID字段12.1(例如7比特),以及位于单独图像集合单元(SPAU)之后的场表示符12.2。单独时间集合包类型B(STAP-B)还包括DON。
根据本说明的视频序列可以是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的RTP时间戳增加时间信息来产生MTAP中每个NALU的RTP包的RTP时间戳(NALU时间)。
在另一个替代实施例中,多时间集合包(MTAP)包括NALU报头字节,解码顺序编号基础(DONB)字段12.1(例如16比特),以及一个或者多个多图像集合单元。在这种情况下,按照以下的方式定义了两个不同的多时间集合单元。它们两个都包括例如随后的NALU的16位无符号尺寸信息(与STAP的尺寸信息相同)。除了这些16比特之外,还具有解码顺序编号变量(DOND)字段12.5(例如7比特),以及该NALU的n比特时间信息,其中n可以是16或者24。随后的NALU的DON等于DONB+DOND。时间信息字段必须被设置从而能够通过从MTAP的RTP时间戳增加时间信息来产生MTAP中的每个NALU的RTP包的RTP时间戳(NALU时间)。DONB可以包括MTAP的NAL单元中的最小的DON值。
传输
在准备好第一编码图像之后可以立即开始传输和/或存储(以及可选地虚拟解码)编码图像。由于解码顺序和输出顺序不一致,因此该图像不一定是解码器输出顺序中的第一个。
在对视频流的第一图像编码时,可以开始传输。编码图像可选地被存储在编码图像缓冲器1.2中。并且传输可以在稍后的阶段开始,例如,在对视频流的某一部分编码之后。
解码器2也应当以正确的顺序输出解码的图像,例如,通过使用图像顺序计数的排序,并且需要清楚、标准地定义重新排序过程。
解包
解包处理与实施方式相关。因此,下面描述的是一个适当的实施方式的非限制性的例子。也可以使用其它的方案。关于上述算法的最优化方案也是可行的。
在这些解包规则背后的基本概念是从传输顺序到NAL单元传送顺序对NAL单元重新排序。
解码
下面,将描述接收器8的操作。接收器8收集属于一个图像的所有包,并将它们按照合理的顺序排列。顺序的严格性依赖于所应用的方案。接收到的包最好被存储在接收缓冲器9.1中(解码前缓冲器)。接收机8丢弃任何无用的东西,并将剩余的传送到解码器2。通过将它们的负载卸载成携带NALU的单独的RTP包来处理集合包。这些NALU像在单独的RTP包中被接收那样进行处理,以他们在集合包中安排的顺序。
对于存储在缓冲器中的每个NAL单元,包含NAL单元的包的RTP序列编号最好被存储并且与存储的NAL单元相关。而且,包含NAL单元的包类型(简单包或者集合包)被存储并且与每个存储的NAL单元相关。
以下,N为可选的num-reorder-VCL-NAL-units参数(交织深度参数)的值,其指定按照NAL单元传输顺序位于包流中任何VCL NAL单元之前并且按照RTP序列编号顺序或者包含VCL NAL单元的集合包的合成顺序在所述VCL NAL之后的VCL NAL单元的最大数量。如果不出现该参数,可以使用一个0值编号。当初始化一个视频流传送对话时,接收器在向解码器2传输任何包之前,将至少N个VCL NAL单元缓存在接收缓存器9.1中。
当接收缓冲器9.1包括至少N个VCL NAL单元时,从接收缓冲器9.1中移出NAL单元,并且按照下述的顺序将其传送到解码器2,直到缓冲器包含有N-1个VCL NAL单元为止。
以后,令PVSID为传送到解码器的最后的NAL单元的视频序列ID(VSID)。一个STAP中的所有NAL单元共享相同的VSID。NAL被传送给解码器的顺序按照以下的方式指定:如果缓冲器的最旧的RTP序列编号与一个简单包相对应,该简单包中的NALU是NAL单元传输顺序中的下一个NALU。如果缓冲器中的最旧的RTP序列编号与一个集合包相对应,则在按照RTP序列编号顺序传送的集合包中的NALU中恢复NAL单元传输顺序,直到下一个简单包(不包含)。以后将这组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单元传输顺序能够按照以下描述的方式恢复。
在上文中使用了术语PVSID和VSID。很明显,也可以使用PDON(在NAL单元传输顺序中,集合包的先前的NAL单元的解码顺序编号)和DON(解码顺序编号)。
首先,条和数据分割根据它们的帧编号,RTP时间戳,以及第一场标记与图像相关:共享相同的帧编号,RTP时间戳,以及第一场标记的数值的所有NALU属于相同的图像。SEI NALU,序列参数组NALU,图像参数组NALU,图像分隔NALU,序列NALU的结束,流NALU的结束,填充数据NALU属于传输顺序中下一VCL NAL单元的图像。
其次,图像的传输顺序根据每一图像的nal_ref_idc,帧编号,第一场标记,以及RTP时间戳推断。图像的传输顺序按照帧编号(模运算)递增的顺序。如果几个图像共享相同的帧编号的值,则nal_ref_idc=0的图像首先被传送。如果几个图像共享相同的帧编号的值,并且它们的nal_ref_idc都等于0,则按照RTP时间戳递增的顺序传送图像。如果两个图像共享相同的RTP时间戳,第一场标记=1的图像首先被传送。注意这里将基础编码图像以及相应的冗余编码图像被看作是一个编码图像。
第三,如果使用的视频解码器不支持任意条排序,则条和A数据分隔的传输顺序按照条报头中的first_mb_in_slice语法单元递增的顺序。而且,在传输顺序中,在相应的A数据分隔之后,立即传送B和C数据分隔。
下面的附加解包规则可以被用于执行JVT解包器的操作:按照RTP序列编号的顺序将NALU传送给JVT解码器。集合包中携带的NALU在集合包中按照它们的顺序依次呈现。集合包的所有的NALU都在处理下一个RTP包之前被处理。
智能RTP接收机(例如网关)能够识别丢失的DPA。如果发现了丢失的DPA,网关可以决定不发送DPB和DPC部分,因此它们的信息对于JVT解码而言毫无意义。以这种方式,通过放弃无用的包,同时不解析一个复杂的比特流,网络元件能够降低网络负载。
智能接收机可以丢弃NAL参考ldc为0的所有包。但是,如果可能,它们应当处理处理这些包,因为如果放弃了这些包,用户体验也会受到影响。
DPB2.1包含用于存储多个图像的空间。这些空间在描述中也被称为帧存储器。解码器2按照正确的顺序解码接收到的图像。为了这样做,解码器检查接收图像的视频序列ID信息。如果编码器已经为每个独立的图像组自由地选择了视频序列ID,解码器将按照接收图像的顺序解码独立图像组中的图像。如果编码器使用递增(或者递减)数字方案为每个独立图像组定义了视频序列ID,解码器则按照视频序列ID的顺序解码独立图像组。换句话说,具有最小(或最大)的视频序列ID的独立图像组将最先被解码。
本发明可以被实现在多种系统和装置中。包含编码器1和可选的HRD5的传输设备6最好还包括一个传输机7,用于向传输信道4传输编码图像。接收设备8包括一个接收机9,用于接收编码图像,解码器2,和用于在其上显示解码的图像的显示器10。传输信道可以是,例如,一个路上运输通信信道和/或一个无线通信信道。传输设备和接收设备还包括一个或多个能够运行用于根据本发明控制视频流的编码/解码处理的必需步骤的处理器1.2,2.2。因此,根据本发明的方法主要实现为一个处理器的计算机可执行步骤。图像的缓冲可以在设备的存储器1.3,2.3中执行。解码器的程序代码1.4可以被存储在存储器1.3中。解码器的程序代码2.4可以相应地存储在存储器2.3中。
Claims (22)
1.一种用于对编码图像排序方法,该方法包括用于在编码器中形成编码图像的编码步骤,其中形成至少一个图像组,并且为该图像组中的每个图像定义一个图像标识,用于将所述的编码图像传送到解码器的传输步骤,以及用于按照解码顺序排列编码图像的重新排列步骤,其中在编码步骤中,为编码图像定义一个与图像标识分离的视频序列标识,其中,该视频序列标识被编码到传送的图像流,其中视频序列标识对于同一图像组的每个图像相同,其中在解码步骤中,排列视频序列标识以被用于确定哪些图像属于同一图像组。
2.根据权利要求1所述的方法,其中形成两个或者多个图像组,并且为所述的两个或者多个图像组定义不同的视频序列标识。
3.根据权利要求2所述的方法,其中根据视频序列标识定义图像的解码顺序。
4.根据权利要求2所述的方法,其中在传输层传送视频序列标识,并且在视频层传送图像标识。
5.一种用于在解码器中解码编码图像流的方法,所述的流包括至少一个图像组,为该图像组的每个图像定义了一个图像标识,并且为图像组定义与图像标识分离的视频序列标识,其中,该视频序列标识被编码到传送的图像流,其中在解码时,视频序列标识被用于确定哪些图像属于同一图像组。
6.根据权利要求5所述的方法,其中每个图像组中的一个图像是一个可独立解码的图像,为该图像定义了所述的视频序列标识,图像组中的图像形成了至少一个子序列,并且该子序列的每个图像具有与同一图像组中的可独立解码的图像相同的视频序列标识。
7.一种用于编码图像并且用于对编码图像排序的编码器,包括一个排列器,用于形成编码图像的至少一个图像组并且为该图像组中的每个图像定义一个图像标识,其中该编码器进一步包括一个定义器,用于为编码图像定义一个与图像标识分离的视频序列标识,其中,该视频序列标识被编码到传送的图像流,视频序列标识被安排成对同一图像组中的每个图像来说是相同的,其中该视频序列标识用于在解码时确定哪些图像属于同一图像组。
8.一种用于解码编码图像从而形成解码图像的解码器,包括一个重新排列器,用于按照解码顺序排列编码图像,其中该解码器进一步包括一个通过使用视频序列标识来确定哪些图像属于同一图像组的处理器,其中,该视频序列标识被编码到传送的图像流。
9.一种用于对编码图像排序的方法,编码图像包括第一和第二编码图像,根据第一编码图像形成至少一个第一传输单元,根据第二编码图像形成至少一个第二传输单元,其中为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,并且该第一和第二识别符被编码到传送的图像流。
10.根据权利要求9所述的方法,其中识别符被定义为一个整数。
11.根据权利要求10所述的方法,其中该识别符是能够循环的整数,其中较大的整数表示一个稍后的解码顺序。
12.根据权利要求9所述的方法,其中编码图像包括一个或多个条,所述的第一传输单元包括一个第一条,所述的第二传输单元包括一个第二条。
13.一种用于对包括第一和第二编码图像的编码图像进行排序的设备,该设备包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元,以及根据第二编码图像形成至少一个第二传输单元,其中该设备进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,以及为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,并且将该第一和第二识别符编码到传送的图像流。
14.根据权利要求13所述的设备,其中该设备是一个网关设备。
15.根据权利要求13所述的设备,其中该设备是一个移动通信设备。
16.根据权利要求13所述的设备,其中该设备是一个流服务器。
17.一种用于编码图像以及用于对包括第一和第二编码图像的编码图像进行排序的编码器,该编码器包括一个用于根据第一编码图像形成至少一个第一传输单元以及根据第二编码图像形成至少一个第二传输单元的排列器,其中该编码器进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,以及为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息以及包含在第二传输单元中的信息的解码顺序,并且将该第一和第二识别符编码到传送的图像流。
18.根据权利要求17所述的编码器,其中编码图像包括一个或多个条,所述的排列器被配置成将第一条包含在所述的第一传输单元中,将第二条包含在所述的第二传输单元中。
19.一种用于解码编码图像从而形成解码图像的解码器,该编码图像包括在根据第一编码图像形成的至少一个第一传输单元和在根据第二编码图像形成的至少一个第二传输单元中传送的第一和第二编码图像,其中该解码器进一步包括一个处理器,用于根据为所述的第一传输单元定义的第一识别符和为所述的第二传输单元定义的第二识别符定义包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,该第一和第二识别符被编码到传送的图像流。
20.一种包括编码器和解码器的系统,该编码器用于编码图像和用于对包括第一和第二编码图像的编码图像进行排序的编码器,该编码器包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元和根据第二编码图像生成至少一个第二传输单元,该解码器用于解码编码图像,其中该系统在编码器中进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符,为所述的第二传输单元定义一个第二识别符,第一和第二识别符分别表示包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,以及在解码器中包含一个处理器,用于根据所述的第一识别符和所述的第二识别符确定包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,该第一和第二识别符被编码到传送的图像流。
21.一种对用于传输的编码图像进行排序的装置,该编码图像包括第一和第二编码图像,该装置包括一个排列器,用于根据第一编码图像形成至少一个第一传输单元以及根据第二编码图像形成至少一个第二传输单元,其中该装置进一步包括一个定义器,用于为所述的第一传输单元定义一个第一识别符和为所述的第二传输单元定义一个第二识别符,第一和第二识别符表示包含在第一传输单元中的信息和包含在第二传输单元中的信息各自的解码顺序,并且将该第一和第二识别符编码到传送的图像流。
22.一种用于重新排列用于解码的编码图像的装置,该编码图像包括在至少一个根据第一编码图像形成的第一传输单元中和在至少一个根据第二编码图像形成的第二传输单元中传输的第一和第二编码图像,其中该装置进一步包括一个处理器,用于根据为所述的第一传输单元定义的第一识别符和为所述的第二传输单元定义的第二识别符确定包含在第一传输单元中的信息和包含在第二传输单元中的信息的解码顺序,并且该第一和第二识别符被编码到传送的图像流。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US44818903P | 2003-02-18 | 2003-02-18 | |
| US60/448,189 | 2003-02-18 | ||
| PCT/FI2004/050015 WO2004075554A1 (en) | 2003-02-18 | 2004-02-17 | Picture decoding method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1088162A1 HK1088162A1 (zh) | 2006-10-27 |
| HK1088162B true HK1088162B (zh) | 2010-04-16 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8532194B2 (en) | Picture decoding method | |
| TWI396445B (zh) | 媒體資料的傳送/接收方法、編碼器、解碼器、儲存媒體、用於編碼/解碼圖像之系統、電子設備及傳送裝置、以及用於解碼圖像之接收裝置 | |
| US7403660B2 (en) | Encoding picture arrangement parameter in picture bitstream | |
| KR100711635B1 (ko) | 화상 부호화 방법 | |
| US20040218669A1 (en) | Picture coding method | |
| HK1088162B (zh) | 图像解码方法 | |
| MXPA06009109A (en) | Resizing of buffer in encoder and decoder | |
| HK1101847B (zh) | 调整编码器和解码器中缓冲器的大小的方法及装置 |