专利名称:用于多路复用h.264基本流的方法和装置的制作方法
技术领域:
本发明总体上涉及图像处理。更具体地,本发明涉及AVC (高级视频编解码器)基 本流的多路复用。
背景技术:
数字广播工业当前采用了多种高级技术,包括高清晰度、网际协议电视(IPTV)以 及移动视频。这些技术的关键促成者是压缩效率,以及因此对H. ^4/AVC (高级视频编解 码器/MPEG-4,部分10)视频编解码器的较低带宽需求。MPEG-2 (“活动图像专家组”)和 “H. 264"(这二者是活动图像编码过程的国际标准)已定义了作为压缩单元的图像帧或图像 场,被称为“图片”。每个“图片”被用作编码过程和解码过程中的接入单元(AU)。为了将H.264/AVC作为附加基本流(ES)类型合并到MPEG-2传输流(TS)中, MPEG-2标准的扩展已使得它可以是广播电台和网络运营商容易取得的并且对他们具有吸 引力。基本流(ES)基本上是一个音频或视频信号的原始压缩表示。基本流的格式取决 于编解码器或流中所携带的数据,并且在将该流分组成分组的基本流时,其携带公共报头。在MPEG-2系统中,视频基本流被组装成分组的基本流(PES)。在分组的基本流的 报头中携带呈现时间戳(PTS)。当启用双向预测编码时,还在I-或P-图片的PES报头中携 带解码时间戳(DTS)。当以延迟的模式多路复用时,H. 264视频基本流通常被存储为文件。H. 264视频基 本流包括网络抽象层(NAL)单元语法结构序列。NAL单元被分类成视频编码层(VCL)和非 VCL NAL单元。VCL NAL单元包含表示视频图片的数据;非VCL NAL单元包含附加信息,例 如应用于大量VCL NAL单元的序列参数集(SPS)和图片参数集(PPS)。序列参数集(SPS)中 的参数包括对帧数目、图片顺序计数(POC)和流的帧速率的标识符限制。SEI NAL单元也被 编码以增强可用性,然而,对于解码VCL NAL单元不是必要的。典型地,在解码切片报头和切片数据之前,一个或多个序列参数集和图片参数集 被发送到解码器。编码的切片报头涉及图片参数集并且这激活了特定图片参数集。被激活 的图片参数集然后保持有效直到在另一个切片报头中涉及不同的图片参数集而使该不同 的图片参数集被激活为止。类似地,图片参数集涉及激活序列参数集的标识符。被激活的 SPS保持有效直到不同的序列参数集被激活为止。H. 264视频基本流可以被看作编码的视频序列。编码的视频序列包括一个或多个 接入单元。每个接入单元(AU)是总是精确地包含一个基本编码图片的NAL单元集合。除 了基本编码图片之外,AU还可以包含一个或多个冗余编码图片或者不包含编码图片的切片 或切片数据分区(partition)的其它NAL单元。AU的解码总是产生解码的图片。在图1中 示出传统接入单元的一般结构。分组的基本流(PES):对于实际用途,需要将携带来自压缩器的音频或视频的无限 连续基本流分成PES分组。这些分组被包含时间戳(PTS和DTS)的报头标识以用于同步。PES分组可以被用来创建程序流或传输流。在压缩之后,因为双向编码,图片将会被失序发 送。它们需要可变数量的数据并且因为多路复用和传输而经历可变的延迟。为了保持音频 和视频锁定在一起,时间戳被周期性地合并到每个图片中。时间戳是一个33位数字,其是由90kHz时钟驱动的计数器的采样。通过将27MHz 程序时钟除以300来获得该时钟。因为呈现时间是均勻间隔的,所以没必要在每个呈现单 元中包括时间戳。而是,时间戳可以由解码器插值,但是在程序流或传输流中它们不得分开 多于700ms。时间戳指示特定接入单元在时间上属于何处。通过将时间戳合并到视频和音频 PES分组二者中的报头中来获得口型同步(Lip sync)。当解码器接收到所选择的PES分组 时,它解码每个接入单元并且将其缓存到RAM中。当时间线计数达到时间戳的值时,RAM被 读出。该操作具有两个期望的结果。首先,在每个基本流中获得有效时间基础校正。其次, 可以使视频和音频基本流一起同步来制成程序。PES分组被分成固定的188字节TS分组。传输流(TS)分组总是以报头开始。分 组的剩余部分携带被称为有效载荷的数据。每个PES分组形成TS分组的有效载荷。TS报 头相对较小,但是对于特定用途(例如为了携带PCR),该报头可以被扩展。在这种情况下,有 效载荷会变得更小以使得TS分组的总大小不被改变。图2描绘将音频和视频流多路复用成单个传输流的传统方法。分组器20 和202b 分别从视频编码器201a和音频编码器201b接收视频流和音频流。这些流在TS多路复用 器203中被多路复用以在输出端处获得单个传输流。每个接入单元包含基本编码图片。该 基本编码图片可以是I切片(在IDR的情况下为内部切片,切片包含整数个宏块),P切片(预 测切片),或B-切片(可以使用内部预测来解码的切片)。通过解码切片报头的切片_类型 (slice_type)来获得所携带的图片类型。当基本流包含具有B-帧的接入单元时,连续编码 的B-帧的数目是可变的和未绑定的。比特流中编码帧的顺序(也被称为编码顺序)是解码 器重构它们的顺序。重构帧在解码过程输出处的顺序(也被称为显示顺序)不总与编解码器 顺序相同。在PES报头中编码呈现时间戳和解码时间戳,其确定图片的解码和显示顺序。序列参数集还包含视频可用性信息(VUI)。通过视频可用信息来用信号通知HRD (假设参考解码器)参数。HRD参数包含比特率信息以及编码图片缓冲器和解码图片缓冲器 的值。HRD被用来检查比特流和解码器的一致性。而且,HRD参数连同可选的SEI消息(当 其存在时)一起帮助计算流中编码的图片的PTS和DTS值。参见H. 264标准的附录C以得 到更多信息。当在编码的视频可用性信息(VUI)中H. 264视频基本流不具有HRD参数时,参考 参数列表列表0和列表1的数目可以被用于预测。然而,这可能是个麻烦的过程。因此,需求一种消除对构造(如在标准中所描述的)参考列表列表0和列表1来获 得对于不具有编码的定时信息的那些基本流的定时信息的需要的方法。
发明内容
本发明的目的是提供一种机制,其可以应用于不具有编码的定时参数的高清晰度 视频基本流的延迟时间多路复用中。本发明的另一目的是提供一种用于生成视频基本流的有效多路复用以生成传输流(TS)的方法。相应地,本发明的实施例提供一种在没有编码的定时信息的情况下多路复用基本 流的装置和方法。在一些实施例中,构造“η”个接入单元(AU)并将其一个接一个地推入到列表中。 每个接入单元能够前瞻(looking ahead)以获得关于下一接入单元的定时的信息。通过由 列表的最顶部接入单元计算定时信息来构造报头。将所述报头写入到TS中,并且用来自所 述基本流的数据填充TS的剩余字节。由此,构造出传输流。在一些实施例中,迭代地检查每一个接入单元中编码的基本图片类型,并且相应 地计算包括对于每个接入单元的呈现时间戳(PTS)和解码时间戳(DTS)的定时信息。而且, 对于基本流推导出可变帧速率(tc )。如果编码的基本图片类型是B帧,则如下计算dts和pts dts (n) =dts (n-1) +tc,以及
pts(η) =dts (η);
在B帧的pts和dts之间不包括任何偏移的情况下,解码所述B帧并同时呈现。对于P和I类型的图片帧,如下计算dts和pts dts (n) =dts (n-1) +tc,以及
pts (η)=dts(η)+pts_offset*tc ;
接下来,对于在下一 I帧或P帧出现之前的B帧的数目(pts_0ffset)检查接入单元。从附图以及下面的详细描述,本发明的其它特征将变得显而易见。
将参考本发明的实施例,可以在附图中说明其示例。这些图旨在是说明性的而非 限制性的。尽管在这些实施例的背景中大致描述了本发明,但是应该理解它不打算将本发 明的范围限制为这些特定实施例。图1说明传统接入单元的一般结构。图2描绘用于将音频和视频多路复用成单个传输流的传统方法。图3描绘根据本发明的实施例的前瞻方法(look-ahead method)的流程图。图4描绘根据本发明的实施例将高清晰度视频基本流多路复用成传输流的方法。图5描绘根据本发明的实施例的多路复用装置的框图。
具体实施例方式本文所描述的是用于多路复用不具有编码的定时信息的高清晰度视频基本流来 创建传输流(TS)的装置和各种方法。在一些实施例中,构造“η”个接入单元(AU)并将其 一个接一个地推入到列表中。每个接入单元能够前瞻以获得关于下一接入单元的定时的信 息。通过由列表的最顶部接入单元计算定时信息来构造报头。将所述报头写入到TS中,并 且用来自所述基本流的数据填充TS的剩余字节。由此,构造出传输流。如上文所解释的那样,本发明的实施例目的在于提供一种机制,其可以应用于不 具有编码的定时参数的高清晰度视频基本流的延迟时间多路复用中。为此,下文描述一种前瞻方法,并且还在图3中示出该前瞻方法。该前瞻方法是一
6种在不构造(如在标准中所描述的)参考列表列表0和列表1的情况下在解码过程中进行帧 重新排序的方式。当视频序列不包含B-帧时,编码的顺序总是与显示顺序相同。B-切片的 出现意味着视频帧的编码顺序将不同于显示顺序。当编码的帧被多路复用时,其顺序不应 该改变,这意味着与它们相关联的PTS值将向上和向下跳一个比特。计算时间戳的前瞻方法
图3描绘根据本发明的实施例的前瞻方法的流程图。该前瞻方法保持“η”个接入单元 的列表,即被用于多路复用的有效AU列表。在步骤301中并且在开始时,该列表是空的。当 将基本流转换成分组的基本流时,记下开始点(start point)。在步骤302中,从开始读取 基本流直到它形成单个接入单元为止。还在步骤302中记下结束点(end point)。一个接入单元是表示小的数据逻辑单元的基本流的一个段。通常,接入单元可以 被直接使用,而不用参考基本流的其它部分。例如,当单个视频帧被解码时,其可以是接入 单元,或者是代表32ms时间段的文件的一部分。在一些实施例中,在每一个接入单元中编码的基本图片类型被迭代地检查,并且 相应地计算包括对于每个接入单元的呈现时间戳(PTS)和解码时间戳(DTS)的定时信息。 而且,对于基本流推导出可变帧速率(tc)。在步骤303中,针对B-类型基本图片类型检查 每个AU以便可以在接下来的步骤中计算PTS和DTS值。为了计算PTS和DTS值,最初如下推导出变量tc(或帧速率/场速率,这视情况而 定)并且所述变量tc被称为时钟计时单元(clock tick)。tc = num_units_in_tick / time_scale, η = 0,
dts(n-l) = 0,
pts(n-l) = 0,因为 activeAUlist (有效 AU 列表)是空的。num_units_in_tick和time_SCale是有效序列参数集的视频可用性信息的一部 分。当序列参数集变成有效时(这取决于在有效图片参数集中编码的标识符),值tc可 以改变并且在整个流中它将不会保持固定。在单个接入单元被形成之后,将其推到activeAUlist。根据在被推到列表的接入 单元中编码的图片,判定是否查找在该流中出现的下一帧。如上文在步骤303中所提到的 那样,针对B-类型基本图片类型检查每个AU。如果在所形成的AU中编码的基本图片是B 帧,则在步骤 305 中,如下计算 DTS 和 PTS :dts (η) =dts (n_l) +tc,以及 pts (η) =dts (η)。解 码所述B帧并同时呈现。在B帧的pts和dts之间不存在偏移。在步骤304中,记下AU的结束并且PTS偏移被设置为零。对于其他帧I或P,在 步骤306中,构造接下来的接入单元,并且在步骤307中,对于在下一 I帧或P帧出现之前 的B帧的数目(pts_0ffset)检查接下来的AU。一旦该信息可用,在步骤308中,如下计算 DTS 禾口 PTS :dts (η) =dts (n_l) +tc,以及 pts (η) =dts (η) +pts_offset*tc。现在,文件指针被存储回到接入单元(η)的结束,在步骤309中其被推到 activeAUlist。这是形成接入单元的一个迭代。对于后续的迭代,在步骤310中“η”的值 被增加1并且重复步骤301到309。对于不将HRD参数作为它们的SPS的VUI语法元素的一部分的流遵循该前瞻方法。对于携带HRD信息作为它们的SPS的一部分的流,SEI信息和HRD参数(Nal hrd或vcl hrd,不管哪个被编码)被用来计算定时信息。对于计算接入单元的定时的等式请参见用于 一般视听服务的ITU -TH. 264高级视频编码的附录C。使用前瞻方法形成的该activeAUlist被用于多路复用。图4描绘根据本发明的 实施例将H. 264基本流多路复用成传输流的方法。现在参考图4,在步骤401中,列表的顶部元素包含要被写入到传输流的接入单元 (AU)0在步骤402中,AU的开始被检查。在步骤403中,当AU在TS分组中开始时,payloacL unitstartjndicator(有效载荷_单元_开始_指示符)被标记为真,并且在步骤404中, TS报头被写入到TS分组。这指示TS有效载荷包含PES开始。因此,在步骤405中再次检 查AU的开始。当发现AU的开始为真时,在步骤406中将PES报头写入到TS分组中,因为 TS有效载荷的第一字节应该包含PES报头的值开始字节。然后,在步骤407中,AU的开始 被设置为假,在这种情况下TS有效载荷的大小将减少一个字节。因此在步骤408中如下计 算Readbytes (读取字节):Readbytes = 188-TS报头大小-PES报头大小。在步骤409中, 将Readbytes从文件写入到TS分组。利用来自activeAUlist的顶部元素的PTS和DTS值 来构造PES报头。该PES报头被包括在TS有效载荷中。然后,用H. 264接入单元填充TS 有效载荷的剩余字节。因此,在步骤410中检查最顶部AU的结束,并且如果发现最顶部AU 的结束为真,则在步骤411中AU的开始被设置为假以结束TS构造的一个迭代。对于后续 迭代,在步骤411中“η”的值增加1,并且重复步骤401到410。图5示出根据本发明的实施例的多路复用装置的框图。装置501包括电路502, 其用于多路复用不具有编码的定时信息的高清晰度视频基本流来创建传输流(TS)。该电路 502能够在列表中构造“η”个接入单元(AU)。可以构造每个AU以使得它能够前瞻以获得 关于下一 AU的定时的信息。所述电路502还能够启用指针来指示来自列表的AU的开始; 迭代地检查来自列表的AU的开始;通过由列表的最顶部AU计算定时信息来构造报头;将 所述报头写入到TS中;以及用来自所述基本流的数据填充TS的剩余字节。装置501的电路502使得最顶部AU的开始能够被检查并且将payl0ad_imit_ start_indicator标记为真。电路502还使得TS报头能够被写入到TS分组中。这指示TS 有效载荷包含PES开始。因此,电路502再次检查AU的开始。当发现AU的开始为真时,将 PES报头写入到TS分组中,因为TS有效载荷的第一字节应该包含PES报头的开始字节值。 然后,电路502将AU的开始设置为假。在这种情况下,TS有效载荷的大小将减少一个字节。 因此,如下计算Readbytes :Readbytes=188_TS报头大小-PES报头大小。电路502还使得 Readbytes能够从文件写入到TS分组中。利用来自activeAUlist的顶部元素的PTS和DTS 来构造PES报头。该PES报头被包括在TS有效载荷中。然后用H. 264接入单元填充TS有 效载荷的剩余字节。因此,最顶部AU的结束被检查,并且如果发现最顶部AU的结束为真, 则该装置的电路502将AU的开始设置为假以结束TS构造的一次迭代。对于后续迭代以及 TS构造,“η”的值增加1。本发明的应用
本文所述的各种实施例可以被用来生成H. 264视频基本流的有效多路复用以生成 MPEG-2传输流(TS)。它们可以被应用于不具有编码的NAL/VCL-HRD参数(作为序列参数集 的VUI信息的一部分)或补充增强信息(SEI)的H. 264视频基本流的延迟的时间多路复用。
8H. 264基本流的每个接入单元(AU)可以前瞻关于文件中下一接入单元的图片类型的信息。 该图片类型信息可以被用于计算分组的基本流(PES)的PTS和DTS值。于是,每个AU可以 被分组成PES分组并且然后被分成TS分组的流。为了更好地理解,使用了具体的示例性细节来解释本文所述的发明。然而,在不使 用这些具体细节的情况下,所公开的发明可以由本领域技术人员做出。本发明可以以硬件 和软件来实施。在框图中示出的结构和设备说明了本发明的示例性实施例并且旨在避免模 糊本发明。而且,在各种元件之间的连接没必要是直接的并且其间的数据传递可以经受编 码、重新格式化或修改。在说明书中,对“一个实施例”或“实施例”的引用意味着结合实施例所述的特定 特征、结构、特性或功能被包括在本发明的至少一个实施例中。在说明书中的各种场合出现 的短语“在一个实施例中,,没必要全都指代相同的实施例。为了清楚和理解的目的已描述了本发明的前述描述。它并不旨在将本发明限制成 所公开的精确形式。
权利要求
1.一种用于多路复用不具有编码的定时信息的高清晰度视频基本流来创建传输流 (TS)的方法,该方法包括下述步骤在列表中构造“η”个接入单元(AU),每个AU能够前瞻以获得关于下一 AU的定时的信息;启用指针来指示来自列表的AU的开始;迭代地检查来自列表的AU的开始;通过由列表的最顶部AU计算定时信息来构造报头;将所述报头写入到TS中;以及用来自所述基本流的数据填充TS的剩余字节。
2.根据权利要求1所述的方法,其中构造“η”个接入单元的步骤包括下述步骤 在将基本流转换成分组的基本流(PES)时从所述开始读取基本流直到其形成单个AU为止并记下其起点和终点;将刚形成的单个AU推入到所述列表中; 检查在被推入到所述列表中的AU中编码的基本图片类型;计算包括呈现时间戳(PTS)和解码时间戳(DTS)的定时信息,并且对于基本流推导出 可变帧速率(tc);如果编码的基本图片类型是B帧,则计算 dts (n) =dts (n-1) +tc,以及 pts(n) =dts (η),以及在B帧的pts和dts之间不包括任何偏移的情况下,解码所述B帧并同时呈现; 如果编码的基本图片类型是I或P帧,则计算 dts (n) =dts (n-1) +tc,以及pts(n)=dts(n)+pts_offset*tc,并对于在下一 I帧或P帧出现之前的B帧的数目 (pts_0ffset)检查接下来的接入单元;以及构造下一 AU并且将所述下一 AU推入到列表中以重复计算定时信息的各步骤。
3.根据权利要求1所述的方法,其中所述高清晰度基本流是H.264/AVC视频基本流。
4.根据权利要求1所述的方法,其中TS是MPEG-2TS0
5.根据权利要求1所述的方法,其中所述多路复用是不具有编码的NAL/VCL-HRD参数 (作为序列参数集的VUI信息的一部分)或补充增强信息(SEI)的H. 264视频基本流的延迟 时间多路复用。
6.根据权利要求2所述的方法,其中图片类型(B、P或I)信息被用来计算分组的基本 流(PES)的PTS和DTS值。
7.根据权利要求2所述的方法,其中变量tc是帧速率或场速率并且被推导为tc= num—units_in_tick / time—scale。
8.根据权利要求2所述的方法,其中PES分组被分成固定的188字节TS分组。
9.一种包括电路的装置,用于根据下述步骤多路复用不具有编码的定时信息的高清 晰度视频基本流来创建传输流(TS)在列表中构造“η”个接入单元(AU),每个AU进行前瞻以获得关于下一 AU的定时的信息;启用指针来指示来自列表的AU的开始;迭代地检查来自列表的AU的开始;通过由列表的最顶部AU计算定时信息来构造报头;将所述报头写入到TS中;以及用来自所述基本流的数据填充TS的剩余字节。
10.根据权利要求9所述的装置,其中所述电路还执行下述步骤在将基本流转换成分组的基本流(PES)时从所述开始读取基本流直到其形成单个AU 为止并记下其起点和终点;将刚形成的单个AU推入到所述列表中; 检查在被推入到所述列表中的AU中编码的基本图片类型;计算包括呈现时间戳(PTS)和解码时间戳(DTS)的定时信息,并且对于基本流推导出 可变帧速率(tc);如果编码的基本图片类型是B帧,则计算 dts (n) =dts (n-1) +tc,以及 pts(n) =dts (η),以及在B帧的pts和dts之间不包括任何偏移的情况下,解码所述B帧并同时呈现; 如果编码的基本图片类型是I或P帧,则计算 dts (n) =dts (n-1) +tc,以及pts(n)=dts(n)+pts_offset*tc,并对于在下一 I帧或P帧出现之前的B帧的数目 (pts_0ffset)检查接下来的接入单元;以及构造下一 AU并且将所述下一 AU推入到列表中以重复计算定时信息的各步骤。
11.根据权利要求9所述的装置,其中所述高清晰度基本流是H.^4/AVC视频基本流。
12.根据权利要求9所述的装置,其中TS是MPEG-2TS0
13.根据权利要求9所述的装置,其中所述多路复用是不具有编码的NAL/VCL-HRD参 数(作为序列参数集的VUI信息的一部分)或补充增强信息(SEI)的H. 264视频基本流的延 迟时间多路复用。
14.根据权利要求10所述的装置,其中图片类型(B、P或I)信息被用来计算分组的基 本流(PES)的PTS和DTS值。
15.根据权利要求10所述的装置,其中变量tc是帧速率或场速率并且被推导为tc= num—units_in_tick / time—scale。
16.根据权利要求10所述的装置,其中PES分组被分成固定的188字节TS分组。
全文摘要
本发明涉及用于多路复用H.264基本流的方法和装置。本发明的实施例多路复用不具有编码的定时信息的基本流来创建传输流。在一些实施例中,构造“n”个接入单元(AU)并将其一个接一个地推入到列表中。每个接入单元能够进行前瞻以获得关于下一接入单元的定时的信息。通过由列表的最顶部接入单元计算定时信息来构造报头。将所述报头写入到传输流中,并且用来自所述基本流的数据填充传输流的剩余字节。由此,构造出传输流。
文档编号H04N21/2368GK102065319SQ20101054909
公开日2011年5月18日 申请日期2010年11月18日 优先权日2009年11月18日
发明者M·V·卡雷古达 申请人:特克特朗尼克国际销售有限责任公司