叠接数字视频流的装置和方法

文档序号:7504740阅读:156来源:国知局
专利名称:叠接数字视频流的装置和方法
技术领域
本发明一般涉及多媒体数据流的处理,尤其涉及用于把数字编码的多媒体数据流叠接在一起的装置和方法。
借助于技术的发展和以前的标准化成果,正在快速地出现多媒体产生、处理和输出系统。例如,改进的处理与存储、传输、编码/译码和其它技术正在帮助实现从模拟向数字广播(即数字化的并通常经过数字处理的多媒体数据流的电视、电缆、卫星和其它的分配)的转变。早期的标准化还规定彼此的可协作性,因而提供了更为廉价的更容易得到的系统和元件。在这种转变的预期的优点当中,包括用户可以访问更多的更高质量的节目,并且工商业可以得到大量的高质量的分配介质。
用于对包括音频、视频、其它多媒体和非多媒体信息的数据流进行编码和译码的标准包括国际上采用的MPEG-1(ISO/IEC11172-n)和由活动图像专家组采纳的MPEG-2(ISO/IEC13818-n)标准(MPEG-2根据MPEG-1扩充而来,用于高质量广播的视频应用和其它应用)。在其它的特点当中,例如MPEG-1和MPEG-2编码/译码规范(下文统称为“MPEG规范”)规定了基本上独立于硬件/软件系统实施的一系列的数据流格式、定时、同步以及装置容量参数。换句话说,MPEG规范规定了特定的协议和能力,同时允许基本上不受限制的系统(考虑到不断发展)用于执行规定的协议和能力。
MPEG规范和其它的编码/译码标准也已经被扩展从而适用于其它正在出现的技术。例如,音频扩展标准(ISO/IEC13818-7)对MPEG-2增加了AC-3音频模式。在MPEG规范内的其它扩展也作为国际标准被讨论、介绍与/或采用了,用于处理、促进与/或扩展数据编码、译码、传输和有关的发送的应用。MPEG规范全文在此列为参考。
遗憾的是,虽然MPEG为实现上述目的提供了一个不断发展的公共平台,但是从近期的发展看来,MPEG和相关的规范至少部分地需要修订。尽管修订与扩充,但它们必然还不能满足某些预想不到的应用和其它偶然发生的情况。例如MPEG-2没有预料到完全数字编码的数据流叠接(“连接”)支持的不断发展的要求。一般地说,数字编码的数据流叠接涉及在现有的数据流中选择的一点附加一个新的数据流,借以代替叠接点的现有的数据流。关于广播媒体,叠接可被一般地看作是一种从当前广播的数据流向一个新的数据流的转换。例如,在其它的应用当中,可能需要在正在进行的电影广播中插入单独编码的商业信息(需要在商业信息的开始处叠接,并在商业信息的结束处再和电影叠接)。
把数字编码的数据流叠接到一起时所涉及的困难通过比较把模拟的数据流或者甚至非编码的数字数据流叠接在一起的简单的任务可能更容易理解。例如非编码的数据流一般用同一个指令显示,且由接收机进行发送、接收和缓冲。此外,非编码的数据流的每个单独表示的数据部分或“帧”如果不相同的话一般含有相同的数据量。因此,把两个模拟数据流或两个非编码的数字数据流叠接在一起主要涉及以容易确定的帧边界从一个流源转换为第二个流源。用于完成这种叠接的系统和方法在本领域中也是熟知的。
相反,数字编码的数据流的帧一般由译码器利用和它们被显示时不同的指令接收。事实上,不同的编码器一般产生具有非常不同的帧特性和信息特性的数据流。此外,编码的主要目的是压缩数据流,使得数据流需要较少的传输带宽和较少的存储空间,还有许多其它的优点。因而,MPEG-2编码的视频数据流只限于含有用于独立地再现相应的图像的完整的数据的若干帧(通常被称为“I”帧);而其它的帧,通常被称为被预测的帧(“P帧”)和双向帧(“B帧”),则含有较少的数量不同的参考数据,用于通过和先前译码的帧进行比较再现视频图像。此外,每个数据流必须被这样编码,使得在译码期间译码器缓冲器将含有连续的足够数量的帧,用于连续译码,而不含有能够使译码器缓冲器溢出的许多帧。
每个编码的数据流的独立的性质使数字编码的数据流叠接在一起变得更复杂。除去和每个数据流相关的独立的形式和同步数据之外,常规的编码器和译码器规范不能提供所需的定时参数或叠接点参数。由于缺少用于使数据流彼此相关的数据,这种困难被进一步加重。例如,不能提供用于直接且可靠地确定由一个以上的数据流占据的译码器缓冲器的内容的参数。因而,没有提供直接的支持,去确保译码器缓冲器将含有来自两个被叠接在一起的数据流的每个数据流的足够量的数据,以便维持连续的数据流,并且缓冲器也不断流或溢出。
尽管上述的和其它的困难涉及把数据流叠接在一起,还是提出了一些解决办法,其中有两种已被使用。一种常规的解决办法是译码对象数据流,以译码的形式进行叠接,然后对数据流进行再编码使得成为一个单独数据流,借以有效地避免在叠接编码的数据流时存在的固有的问题。遗憾的是,充分可靠地进行实时叠接的编码译码硬件是昂贵的。在广播应用中,由单独的数据流源供应每个“电视频道”,其中任何一个频道都可能需要叠接。因此,似乎需要多个译码器和编码器轮流工作。
按照另一种常规的用以叠接编码的数据流的方法,把黑化的无声的视频帧(“引导帧”)附加于新的数据流的开始处。这种方法的优点是需要最小量的数据去产生引导帧。因此,译码缓冲器不会发生溢出。此外,引导帧用于掩盖由于数据流对的不太精确的叠接,例如一般在本领域中被称为翻转的显示失步,而引起的视觉问题。此外,这种方法可以使用现有的编码器和译码器完成,从而避免替换成本。遗憾的是,叠接是不透明的。黑化的帧对于被供给显示的数据流的用户是明显的。因为引导帧形成新的数据流的一部分,例如商业信息,故损失的“空的”时间对于广告商而言是特别关心的,其在30秒钟内可以播放的广告能够超过900000美元的收费。(因此每帧可以超过1000美元)。
尽管这些尝试,但当前由运动图像和电视协会提出的标准化成果(“Proposed SMPTE Standard for Television-Splice Points forMPEG-2 Transport Streams”)建议废除当前的叠接方法以便有助于MPEG-2规范的新的扩展。该提议提出了一种新的完整的协议,尤其是能够进行数据流对的透明的或“无缝的”叠接。概括地说,所提出的标准提出在编码时直接在数据流中包含进去叠接点和相关的叠接支持信息。遗憾的是,所提出的扩展至少需要投资以便代替现有的编码器。事情更加困难,所提出的标准仍然没有被批准。因此,可能会出现可能的修正,以及不可避免的不同解释,实施,不相容性,专利权的“进一步扩充”和其他问题。
因而需要一种装置和方法,用于叠接数字编码的多媒体数据流而不需要新的编码器或译码器,并且不引入明显的空余时间被浪费的人为现象。还要求这种装置和方法能够避免修改常规的编码/译码规范的要求。
本发明提供一种基于数据处理系统的叠接系统,用于无缝地把数字编码的数据流叠接在一起。更具体地说,本叠接系统按照现有的编码/译码规范使用常规的编码器和译码器进行旧数据流和单独编码的新数据流的叠接,同时避免过高的费用、视觉问题和常规的叠接系统中引起的丢失空余时间等问题。
因而,本发明的第一优选实施例包括一个叠接器,其用作在较大的数据流处理与广播系统内的一个程序库。所述叠接器还直接或间接地和较大系统的主应用程序以及多路传输器通信。此外,可以同时调用几个叠接器,以便把存储在主处理系统中的数据流叠接在一起与/或作为多路传输的MPEG-2数据流频道向外同时传输。
有利的是,叠接器在叠接期间调整数据流而不需要译码,以便或者对齐数据流或者在新数据流的叠接入点关闭一个打开图像组。叠接器还这样调整新数据流,使得由于叠接而引起的接收译码器输入缓冲器的溢出或欠流被避免。叠接器还有这样的优点,即在完成叠接时,新数据流的剩余部分可以作为编码的数据被接收而不用叠接器进一步干预。
当由库程序调用从主应用程序中调用时,优选的叠接器接收建立信息,其中包括相应的叠接缓冲器-N的位置,只叠接或插入方式选择,音频可选项选择和叠接缓冲器满或在所需的旧数据流部分前面的要在其中进行叠接的“叠接缓冲器”的数量。此后,叠接器使用由按顺序放置在叠接缓冲器-N中的新数据流数据跟随的旧数据流数据进行叠接。
优选的叠接器的操作是通过产生叠接表并且然后分析在叠接缓冲器-N中的各个叠接缓冲器,以完成单独的任务和并行的处理中的任务。单独的任务包括产生叠接表,查找叠接出点和叠接入点,确定新数据流传输时间并对齐新数据流的接收和对旧数据流的最后译码器缓冲器进行译码的时刻。进行中的任务包括利用数据流帧信息增加叠接表,并且同时还使用帧信息避免译码器输入缓冲器溢出而不改变过去的叠接数据流编码。
为了对齐数据流接收并避免或“校正”溢出,叠接器延迟并加速新数据流的不同部分。更具体地说,叠接器通过在数据流的开始之前插入空包延迟数据流接收,并通过从数据流的开始删除空包加速数据流接收。类似地,叠接器通过在引起溢出数据包的前面插入空包来延迟这种数据包,并通过从落后的数据包中删除空包来加速落后的数据包(或复位编码定时)。空包的加入是通过对主应用程序提供指令实现的,主应用程序进行附加并对多路传输器提供用于多路传输和传输的结果。延迟是由叠接器使用重复的复制操作来移动叠接缓冲器-N内的数据包而直接地实现的。
在另一个优选实施例中,数据流部分的延迟和加速通过调用一个新颖位时钟装置来实现。在一方面,不个别地进行每个重复的复制空包删除和每个空包的插入,而是保持空包计数,直到完成当前数据流部分的处理为止。在第二方面,多路传输器被设置成收集每个数据流输出缓冲器,以便按照多路传输器的操作速率的比例传输。然后叠接器对于给定的缓冲器确定空包附加或删除的数量并把这些数量提供给主应用程序。然后主应用程序把这些数量提供给多路传输器,它把这些数量附加到相应缓冲器的定时表中。有利的是,因为避免重复复制和主应用程序的操作,所以可以大大增加处理系统的输出。
本发明的这些和其它的目的、优点和特点由下面的附图和说明将更加清楚。


图1是按照本发明的优选实施例的功能方块图,总体地说明一个用于接收、制备、存储、恢复和发送数字编码的多媒体数据流的系统;图2是说明图1所示系统的更详细的功能方块图;图3是说明按照本发明的优选的叠接器的功能方块图;图4是说明按照本发明的用于把第一数字编码的流和第二数字编码的流叠接在一起的优选的方法的流程图;图5是按照本发明说明按照图4所示的优选的方法在第一数据流中发现叠接出点的优选的方法的流程图;图6是按照本发明说明按照图4所示的优选的方法在第二数据流中发现叠接入点的优选的方法的流程图;图7是按照本发明说明按照图4所示的优选的方法在第二数据流中闭合图像的引导打开组的优选的方法的流程图;图8是说明按照图7的优选的方法的当闭合图像组时用于确定临时基准的优选的方法的流程图;图9A是说明MPEG-2编码的数据流按照常规方法是如何被译码器输入缓冲器接收然后又被译码的曲线;图9B按照本发明说明按照图4的优选方法的在用于连续地显示视频帧的两个视频帧之间的常规的显示扫描速率的定时关系;图10是按照本发明说明按照图4的优选的方法确定实时的新的数据流PCR的优选的方法的流程图;图11是按照本发明说明按照图4的优选的方法在确定实时的新的数据流PCR之后,译码器输入缓冲器是如何接收第二数据流的曲线;图12是按照本发明说明按照图4的优选的方法使由译码器输入缓冲器接收第二数据流和由译码器输入缓冲器译码第一数据流对齐的优选的方法的流程图;图13A按照本发明说明用于删除数据流内的空包的优选的方法的流程图,其中数据流被存储在叠接缓冲器中;图13B按照本发明说明在执行图12a的优选的方法之后,叠接缓冲器的配置;图14是按照本发明说明消除由于在译码输入缓冲器中同时存在旧的数据流和要被叠接在一起的新的数据流而引起的译码输入缓冲器的溢出的优选的方法的流程图;图15A是按照本发明说明按照用于删除和消除译码器输入缓冲器溢出的优选的方法增加具有旧的数据流帧数据的叠接表的优选的方法的第一部分流程图;图15B是按照本发明说明按照图14的优选的方法增加具有新的数据流数据的叠接表并同时删除溢出的优选的方法的第一部分流程图;图15C是按照本发明的图15B的流程图的继续;图16是按照本发明说明溢出特性并进一步说明按照图15a-15c的优选的方法删除和消除溢出的曲线;图17按照本发明说明按照图15a-15c的优选的方法的叠接表的示例的内容;图18是按照本发明说明用于设置第一数据流的音频叠接出点的优选的方法的流程图;图19A按照本发明说明另一个音频叠接出点;图19B按照本发明说明另一个音频叠接入点;图20是按照本发明说明用于在新的数据流中设置叠接入点的优选方法的流程图21是按照本发明的另一个优选实施例说明利用比特定时的优选的叠接器的流程图;以及图22是按照本发明说明增强图15a-15c的用于检测并校正溢出条件的优选的方法的流程图。
为简明起见,此处讨论的实施例主要针对把按照MPEG-2规范进行编码和译码的数字编码的数据流(“数据流”)叠接在一起。更具体地说,讨论的重点在于叠接正在播放的电视节目广播和商业信息,叠接在用于向用户所在地的电缆接收机发送信息的电缆广播站进行。讨论将根据被装在优选的系统中的叠接器应用程序进行,所示系统用于接收、制备、存储、检索和传输数字编码的多媒体数据流。
不过,本领域的技术人员应当理解,除去MPEG规范之外,本发明可以容易地适用于现有的并正在被引入的许多数字编码/译码规范。其中的例子包括但不限于欧洲电信标准。此外,对象数据流的内容决不限于电视节目和商业信息。本发明给出的教导可以应用于广泛的范围,包括音频、视频和其它类型可以利用数字编码的的数据。如图1总体地所示,按照本发明的用于接收、制备、存储、检索和传输数字编码的多媒体数据流的优选的系统100最好被全部包括在一个主处理系统中,例如个人计算机或“PC”中。系统100最好包括在电气上耦联的硬件,其中包括输入装置110、处理器112、存储器114、存储装置116、MPEG-2编码器120、MPEG-2译码器125、卫星I/O130、电缆I/O133、网络I/O135、音频I/O137、视频I/O138、和发送机139。系统100还包括一些耦合软件元件,它们包括操作系统140,I/O处理器145,流路由器150,缓冲器发生器160,叠接缓冲器165,叠接器170,多路缓冲器180和多路传输器190。
本领域技术人员容易理解,在本发明的范围内,系统100的结构可以有多种改变。例如,随着处理器和计算机性能的改变和技术的不断进步,硬件例如MPEG-2编码器120和MPEG-2译码器125都可以用软件实施,或者通过硬件和软件的结合实施。类似地,软件程序例如多路传输器185可以通过硬件或者硬件和软件的组合实施。此外,虽然只说明了利用网络I/O145和其它计算机装置连接,但是也可以利用有线的、无线的、调制解调器与/或其它的连接和其它计算机装置(包括但不限于局域网、广域网和互连网)相连。其它的例子还有利用分布处理、多位置观看、信息传输、信息共享、远方信息检索和和并接以及有关的应用。可以利用不同的操作系统和数据处理系统,不过最好使用常规的多任务操作系统,例如在IBM兼容机上运行的Windows95或Windows NT(微软公司的商标),或者利用基于Unix操作系统的计算机,下面将针对这些进行讨论。输入装置110可以包括用于输入指令和数据的任何数量的装置和/或装置类型,包括但不限于键盘、鼠标和语音识别装置。
图2的方块图较详细地说明按照本发明的叠接器是如何作为图1的系统100内的支持应用程序而优选地操作的。概括地说,系统100最好按照用户的选择操作,以便接收来自外部源与/或存储装置的数据流,在需要时对数据流进行MPEG-2编码,多路传输编码的数据流,然后发送与/或存储多路传输的数据流(先前被译码或不被译码)。当选择叠接时,系统100向叠接器优选地发送当前传输的(旧的)数据流和新的数据流。叠接器根据需要实时地修正数据流对,使得当附加到多路传输的数据流时,新的数据流将被接收、由译码器译码并输出,而用作旧的数据流的无缝添加的数据流。
更具体地说,用户最好以常规方式使用输入装置110、音频I/O137和视频I/O138结合I/O处理器145的用户接口145a来输入信息并接收输出信息。用户接口145a还最好以常规方式配备有WINDOWS操作系统。用户可以通过用户接口145a从I/O接口203得到的(即接收的)数据流源与/或从存储装置16检索的数据流中选择若干个数据流源.I/O接口103包括卫星接口130和电缆接口133(即收发信机扩展卡与/或包括的硬件与/或用于处理分别通过卫星和电缆传输的数据流的软件),网络接口135,射频接口137,和视频接口139。本领域技术人员容易理解,用户可以按照缺省的值与/或定时的与/或即时的选择值互动地选择数据流源和其它项。
在系统100的正常操作期间(即在没有叠接时),数据流路由器150按照数据流的类型发送选择的数据流。更具体地说,数据流路由器从I/O接口103向缓冲器发生器160发送已经编码的数据流源。数据流路由器150还通过各个编码器(例如编码器-1220和编码器-N120)例如从存储装置116向缓冲器发生器160发送未编码的数据流。缓冲器发生器160在接收初始数据流时建立一个输出缓冲器。为简明起见,在正常操作期间由缓冲器发生器160产生的输出缓冲器此处被称为多路缓冲器(例如多路缓冲器-1280)。产生多路缓冲器之后,缓冲器发生器160便随着从相应的I/O接口收到的数据而增加多路缓冲器,并且在填满多路缓冲器时再次设置数据准备标记。并和MPEG-2规范定时一致。虽然用户可以选择地确定各个多路缓冲器的大小,不过其一般的大小范围大约在64k到47×64k字节,从而至少提供300个包。
当选择叠接操作时,流路由器150还按照数据流的类型发送旧的和新的数据流。更具体地说,流路由器150直接向缓冲器发生器160发送编码的数据流(一般也从I/O接口203),并通过可得到的编码器(例如编码器-1220到编码器-N120)向缓冲器发生器160发送未编码的数据流(一般也从存储装置116,音频I/O137和视频I/O138),如正常操作那样。不过,为简明起见,在叠接操作期间由缓冲器发生器160产生的输出缓冲器此处被称为叠接缓冲器(如示范性的叠接缓冲器-N265和叠接缓冲器-1265a)。在产生叠接缓冲器之后,缓冲器发生器160随着数据流数据而增加叠接缓冲器,并发出有关叠接器(例如示范性的叠接器-N270和叠接器-1270a)。叠接器最好是由主应用程序的缓冲器发生器应用程序部分的库调用产生的C+库。发出的叠接器实现叠接并把值返回主应用程序。然后主应用程序可以在设置状态准备标记之前进一步处理叠接缓冲器中的数据。因而概括地说,叠接器-N270最好被调用和操作,以便分析来自旧的数据流和新的数据流对的数据流数据(其被包含在叠接缓冲器-N265中,一次填满一个缓冲器),进行叠接,然后把参数返回主应用程序。应当注意,主应用程序在缓冲器由复用器190接收之前大约0.5-1秒填满叠接缓冲器-N265,从而为叠接器-N270提供至少0.5秒的时间,用于处理缓冲器中包含的数据。
在正常和叠接操作期间,复用器190通过每个输出缓冲器的数据准备标记测试来连续地循环,并且在检测到准备好状态时,向发送机139发送各个缓冲器的内容。在收到多路缓冲器内容时,发送机139向流路由器150发送输出缓冲器内容与/或(选择地,按照用户选择)发出多路缓冲器内容。在收到来自发送机139的数据时,流路由器150向译码器125,I/O接口103与/或存储装置116发送接收的数据。
由系统100发送的复用数据流可由一个或几个转播站(例如示范性转播站291)接收与再发送,或者由用户接收机(例如示范性接收机293,295)直接接收。被包括在每个多路传输的数据流中的每个分数据流被作为数据源接收,用于按照MPEG-2规范分离“电视频道”。被叠接(主要是透明的叠接)的数据流对(例如电视节目和广告的叠接)也被接收,用作一个MPEG-2编码的频道。
一般地,系统100需要一个大约5MHz的平均带宽,用于叠接每个数据流对。因而具有200MHz的奔腾(英特尔公司商标名)处理器的一般PC可以同时支持达40个数据流。不过,从处理器、装置底板、存储器、存储装置、系统软件的发展的观点看来,可以使系统100最佳化,从而使数据流的数量增加。系统100还可以和其它系统同步,用于通过提供合适的同步源而处理增加数据的数据流。
特定的接收机硬件和软件的配置和功能可以有很大的不同,尤其是在未被MPEG-2规范包括的条件方面。不过每个接收机都包括用于译码的完整的硬件与/或软件系统。因为发送的数据作为多路传输的数据流被接收,所以每个接收机包括解多路传输器(未示出)。因为每个数据流包括多路传输的音频和视频数据,故每个接收机还包括具有音频视频数据流的解多路传输能力的部件(未示出),用于支持每个数据流频道。每个接收机还包括(对于每个频道)用于对MPEG-2编码的音频和视频数据译码的译码器。例如,视频译码器293a和音频译码器293b表示这种必须的用于一个MPEG-2编码的数据流的译码器对。(每个缓冲器的大小,或者换句话说,每个缓冲器可以包含的数据量,可以因接收机而不同)。每个译码器包括输入缓冲器(未示出),用于在译码之前接收各个多路传输的视频或音频数据,以及相应的帧缓冲器,用于接收译码的视频或音频数据并重构音频视频表示(即进行重构以便输出到显示装置或其它装置)。
通过参见图2可知图3和图4在总体上说明按照本发明的优选的叠接器和叠接方法。为简明起见,下面的讨论假定在系统100中只有两个要被处理的数据流(旧数据流和新数据流),并且假定这种处理包括两个数据流的叠接。因此只讨论一个叠接器,即叠接器-N270(图2),和一个输出缓冲器,即叠接缓冲器-N265。根据所作的讨论,本领域的技术人员将会理解,其它的叠接器和输出缓冲器的组合也能以相同方式操作。
如图3的方块图所示,叠接器-N270最好包括一些被连接的元件,它们包括叠接发生器310、顺序求取器320、帧求取器330、包求取器340、GOP求取器350、包移动器360和帧表370。概括地说,叠接发生器310产生并增加帧表370,并启动和利用其它叠接器-N270元件的操作。顺序求取器320、帧求取器330、包求取器340、GOP求取器350最好分别定位和恢复来自MPEG-2编码的数据流的各个顺序、帧、包和GOP数据。包移动器360优选地消除定时误差,以便使叠接器-N270形成无缝叠接,帧表370优选地用于确定缓冲器溢出状态。
参见图2和图3可知图4说明按照本发明的优选叠接方法。如前所述,叠接最好由来自主程序的一个调用启动或“开始”。来自主程序的该调用相当于填充叠接缓冲器-N265的主程序,其启动(即“开始”,“调用”或“例示”)叠接器-N270。该调用还包括叠接缓冲器-N265在主处理系统内的位置(或者叠接缓冲器的外部位置,如果是外部的话),并表明叠接要根据具有填充的叠接缓冲器-N265的主应用程序按照规定的次数进行。换句话说,由主程序送到叠接器-N270的缓冲器位置参数表示缓冲器的位置,而送到叠接器-N270的其它参数表示“叠接缓冲器满”,其中叠接器-N270要结束旧的数据流。主程序在向叠接缓冲器-N265发出旧数据流的叠接缓冲器满时,还开始用新数据流的“叠接缓冲器满”填充叠接缓冲器-N265。虽然叠接缓冲器-N265的大小和叠接开始时间是最好由用户选择的,但缓冲器-N一般适用于300k字节的数据,并且一般在缓冲器启动之后50毫秒开始叠接。
本领域技术人员应当理解,根据这里的教导,数据流源与/或主程序可以由和叠接器-N270分开的处理系统主持,并且/或者叠接器-N270可以作为库之外的单独的处理或子处理来实现。不过,在一个处理系统内完全的综合和一个库的使用最好是起因于用于完成实时叠接的增强的数据处理请求。不过,一个库最好能够支持多个这种处理或子处理,借以提供多个同时的叠接操作。由下面的讨论可以看出,由主程序产生并填充的并根据需要被叠接器修正的一个叠接缓冲器同样因为增强的操作而被利用。例如,避免多个缓冲器的管理(例如多个位置指针和不邻接的数据位置)以及缓冲器复制(例如从多个叠接器输入缓冲器到单独的叠接器输出缓冲器)有助于使用于完成叠接的处理系统输出的要求减至最少。
如图所示,在步405,叠接器-N270产生并开始增加帧表370(图3)。在步410,叠接器-N270查找旧数据流中在叠接之前旧数据流的传输被终止的数据位置,以后称它为“旧数据流叠接出点”,或被简称为“叠接出点”。在步420,叠接器-N270查找新数据流中开始传输新数据流的数据的位置,以后它被称为“新数据流入点”,或简称为“叠接入点”。在步430,叠接器-N270确定开始发送新数据流的时间,以后它被称为“实时发送开始点”。在步440,叠接器-N270对齐新数据流,使得新数据流在开始译码最后一个旧数据流缓冲器的同时最好由接收机译码器接收。在步450,叠接器-N270检测并校正译码缓冲器溢出状态。
在完成叠接之后,叠接器-N270最好把参数返回调用程序(例如调用程序的缓冲器发生器子处理)。调用程序然后可以管理叠接缓冲器-N265的内容,然后设置数据准备好标记,如上所述。此后,叠接器-N270可以设置一个PCR断续包。
由下面的讨论可以看出,在叠接时,在发送之前叠接器-N270使用帧表370检测并消除可能的译码器输入缓冲器溢出条件发生,使得在发送之后不会发生溢出状态。当缓冲器发生器160(图2)继续用相应于来自旧数据流和新数据流的数据的缓冲器满来填充叠接缓冲器-N265时,叠接器-N270同时进行步410到450。例如,当叠接缓冲器-N265包含旧数据流的最后一部分时,叠接器-N270查找旧数据流叠接出点。当叠接缓冲器-N265含有新数据流的第一部分时,叠接器-N270还查找新数据流叠接入点,如此等等。为简明起见,保留产生与增加帧表370,以便相应地讨论检测和消除译码器输入缓冲器溢出(步450)。为简明起见,将首先考虑优选的视频叠接,仅注解何时发生音频叠接。然后单独讨论优选的音频叠接。
图5说明叠接器-N270在收到旧数据流的最后叠接缓冲器满时如何优选地查找旧数据流视频叠接出点。如图所示,叠接器-N270优选地提供多种可由调用程序规定的操作方式,其中每种方式都能由调用程序来指定。在“插入”操作方式中,叠接器-N270以这样的方式进行叠接,即例如,当要在正播放的节目(例如电影)中插入商业信息时,预期较后回到旧数据流的叠接。因为在商业信息之后继续播放电影,故断开电影数据流传输的优选点也是在紧跟断开的点之后实现电影数据流继续传输的点,或“叠接出点”。与此相对,在“只叠接方式”中,叠接器-N270实现孤立的叠接,而不管旧数据流以后的继续。这种只叠接方式一般在这种情况下选择,例如,在单独编码的预先制备的电影结束时,或者在现场直播期间。此外,还有不同于连续的电影的情况。
用户可以选择现场直播的最后叠接缓冲器满作为包括视频数据的“额外”帧,因而尤其需要找到以前的叠接点(即在额外帧之前)。
如图所示,如果在步501选择了插入方式,则叠接器-N270在步520查找在程序头部开始之前的旧数据流叠接出点。如果在步510选择只叠接方式,则在步530叠接器-N270查找在序列头部、GOP头部、I帧或P帧第一次出现时的旧数据流叠接出点。接着在步540,叠接器-N270在叠接缓冲器-N265内设置用于传输在叠接点之前的那些字节的字节。如后所述,叠接器-N270接着使用旧数据流视频叠接出点查找旧数据流音频叠接出点(未示出)。
在操作上,叠接器-N270通过分析在叠接缓冲器-N265中包含的数据(从第一次收到的数据开始),使用包括序列查找器320、GOP查找器350或帧查找器330的各个数据类型查找器优先查找序列头部、GOP头部、I帧或P帧。每个数据类型查找器包括用于按照MPEG-2规范确定各个数据类型的状态标记,下面还要详细说明。叠接器-N270还通过计数包括在叠接缓冲器-N265中的在叠接点之前的数据字节数来设置用于传输的字节(在检索期间),并通过向主程序返回该数据字节数,作为在叠接缓冲器-N265内的主程序应当发送给多路传输器的数据字节数。主程序在收到该信息之后,则一般忽略在叠接缓冲器-N265中的剩余字节(在叠接点之后)。
参见图3可知图6到图8说明一个优选叠接器如何在新的数据流中查找视频叠接入点。如上所述,主程序将指示(当调用叠接器-N270时)包含旧数据流的结束部分的叠接缓冲器满。因此,伴随的叠接缓冲器满将含有新数据流的第一部分。概括地说,叠接器-N270将再次分析在叠接缓冲器-N265中包含的数据流数据,以便确定新数据流叠接点。叠接器-N270操作的细节通过首先参考MPEG-2规范的某些方面将更加容易理解。
MPEG-2规范用于把连续的视频流编码而成为串行序列。每个序列又被分为图像组(“GOP”),每个GOP包含一系列编码的视频帧。每个序列包括一个序列头部,每个GOP包括GOP头部,并且每个帧包括帧的头部。如同将要进一步讨论的,每个序列还包括至少10个程序时钟基准或“PCR”。此外,每个数据流作为一个连接的但未必是连续的包系列被发送,每个包具有一个包头部。除去视频数据和帧类型字段(即一个I,B或P帧)之外,每个MPEG-2编码的视频帧还包括定时和相对的排序信息。帧定时信息包括(对于每帧的)译码时间标记或“DTS”字段,(其表示收到的帧要被译码的时间),以及相应地提供时间标记或“PTS”字段(其表示译码的帧被提供用于显示的时间)。帧相对排序信息包括(对于每帧)暂时基准字段(表示要被显示的帧和同一个GOP中的其它帧比较的顺序)。
不过,尽管在数据流内含有大量的识别信息,但MPEG-2编码只提供关于一个编码的数据流的信息,并且通常是以不能容易地被存取的方式提供这些信息。例如,MPEG-2规范规定上述信息的不同的排序和这些信息在GOP中甚至在包中的分配。更具体地说,虽然在数据流内,第一序列头部后面必须是GOP头部(对于第一GOP),然后是帧头部(对于包含在GOP中的第一帧),但是对于第一帧的DTS和PTS对可以位于帧头部之前的任何位置。正如将要看出的,这个DTS和PTS对最好由叠接器-N270使用,以便查找叠接点和帮助使新数据流和旧数据流实时地对齐。
现在参看图6,叠接器-N270通过首先查找新数据流的第一视频帧的DTS和PTS对优先地进行叠接。叠接器-N270首先在步610通过查找新数据流的第一序列头部来查找该DTS和PTS对,然后在步620查找并存储第一帧头部(其是第一视频帧的帧头部)之前的最后一个DTS,然后在步630查找并存储相应于DTS的PTS。接着,在步640,叠接器-N270确保新数据流的首先出现的帧是I帧。更具体地说,如果新数据流的第一GOP是打开的,则叠接器-N270将“关闭GOP”。最后,在步650,叠接器-N270查找音频叠接入点(为简明起见,音频叠接入点和音频叠接出点将在完成视频讨论之后讨论)。
在操作上,叠接器-N270使用初始序列查找器320(图3)查找序列头部(即步610)。序列查找器320最好是一个状态机器,其对于第一次出现的序列头部码,分析包含在叠接缓冲器-N265中的新数据流。由MPEG-2规范定义的每个序列头部码的数字序列是“000001B3Hex”。然后叠接发生器对于先前的DTS和PTS(即对于新数据流的第一帧的TDS和PTS)类似地分析新数据流。本领域技术人员应当理解,根据本发明的教导,叠接入点可被另外选择为不同于新数据流的第一帧的点。例如当需要只显示完整的商业信息的后部分时,这种另外的帧可能是需要的。在这种情况下,用户可以规定所需的“总的开始时间”(由此时间叠接器-N270将进一步确定叠接入点),或者用户可以直接地确定叠接入点。
图7和图8说明叠接器-N270如何优选地关闭打开的新数据流的第一GOP(图6的步540)。
编码规范,尤其是MPEG-2编码规范,一般不要求每个GOP必须由本身含有足够的数据的帧开始,以便再生视频图像或帧(即I帧)。具有要求由先前的GOP中的帧再生视频图像的第一帧的GOP一般被称为“打开的”GOP。例如,当在叠接之前(“打断联系”)新数据流被编辑并被存储时,可能出现打开的GOP。虽然,如果采用合适的编码,则一个打开的GOP将总是在含有相应的I帧的GOP后面,因此,打开的GOP的独立的帧可以被再生,但是对于新数据流的第一GOP,不存在这种I帧。因此,叠接器-N270确保新数据流的第一个出现的帧是I帧。
由叠接器-N270来“关闭”打开的GOP的一种方法包括对这些帧和第一帧本身译码,打开的GOP的第一帧依赖于这些被译码的帧。接着,把第一帧再编码而成为I帧。遗憾的是,这种方法由于要增加专用的硬件与/或需要基于处理器系统的实时地输出而费用太高。因此这种用于关闭GOP的替代方法只作为一种选择,以便适应要求绝对精确的应用情况。
不过,已经发现打开的GOP也可以通过删除而不通过重构前面的独立帧(即B帧)来关闭,其中只对先前打开的GOP中剩余的帧稍加修改。虽然由删除的视频帧表示的图像被丢失并且新数据流的长度受影响,但是发现,从关闭GOP所需的最小时间来看,一般丢失66毫秒是可以接受的。(按照这个优选的方法,除去新数据流的前面打开的GOP之外的所有的GOP都保持不变,如图6和图7所示)。
现在参看图7,如果在步710新数据流的第一个GOP是打开的GOP(即GOP的第一帧不是I帧),则在步720,叠接器-N270首先删除所有的前面的非I帧。接着,在步730,叠接器-N270校正GOP中每个剩余帧的暂时基准。最后,在步740,叠接器-N270利用在步720中删除的帧的最大的DTS代替GOP的第一个I帧的DTS。
图8的流程图进一步说明暂时基准如何按照本发明被优选地代替。如图所示,如果在步810在最后删除的帧之后在GOP中留有较多的帧,则在步820,叠接器-N270首先查找在GOP中的下一个帧头部(表示现在“当前”帧)。接着,在步830,叠接器-N270查找当前帧的相应的暂时基准。最后,在步840,叠接器-N270用暂时基准减去删除的帧数来代替暂时基准,然后返回步810。
在操作上,叠接器-N270(图3)通过启动帧查找器330优先查找下一个帧。帧查找器330最好是一个状态机器,其分析在叠接缓冲器-N265中包含的新数据流数据,用于产生下一个帧头部。每个帧头部由MPEG-2规范定义为数字序列“00000100Hex”。
例如,按照图7和图8所示的优选方法,随后下面打开的GOP现在要被关闭。
暂时基准2 0 1 5 3 4帧类型I B B P B B
DTS-1 0 1 2 3 4首先,两个前面的B帧(即暂时基准数0和1)被删除,在GOP中剩下I帧和在I帧后面的两个B帧。
暂时基准2 5 3 4帧类型I P B BDTS-1 2 3 4接着,剩余帧的暂时基准按照顺序被代替,从第一个删除的帧的暂时基准开始。
暂时基准0 3 1 2帧类型I P B BDTS-3 0 1 2最后,前面的I帧的DTS被删除的帧的最高的DTS代替。
暂时基准0 3 1 2帧类型I P B BDTS-1 0 1 2图9a到图10说明在查找叠接点之后,按照本发明的优选叠接器如何优先查找新数据流的新流实时传输开始时间(即图4的步420)。简单地回顾一下MPEG-2规范的有关部分应当有助于理解按照本发明的优选实施例是如何提供无缝叠接的。
图9a的曲线说明新的MPEG-2编码的数据流如何在MPEG-2规范规定的环境下(例如在没有叠接时)由用户接收机接收和译码。该曲线说明不断增加的垂直部分即由译码器输入缓冲器接收的数据的数量对时间的变化,所述数量由左到右沿着横轴增加。在由斜线段910到910d表示的时间间隔内,由译码器输入缓冲器接收数据,同时在由垂直部分920到920d指示的时间发生译码。
如图所示,在t1开始接收新数据流和在t4对第一帧译码(按照帧的DTS)之间发生延迟。虽然在时刻t2接收第一帧和在译码(按照帧的DTS)第一帧的时刻之间的延迟由第一帧内(以及每个相继的帧)的数据字段给出,但是应当注意,在接收数据流和译码第一帧之间的实际时间也分别包括在时刻t1-t2和t3-t4的初始序列头部的接收和译码。
为了显示没有产生通常被称为图像翻滚的视频人为问题的运动的视频图像,图9B进一步说明在显示第一帧的开始时刻和显示下一帧的开始时刻之间必须有一个恒定的延迟,其等于一个视频帧的扫描时间。例如,利用NTSC编码时,帧间延迟大约是33毫秒。因此看出可以通过提供可靠的定时基准实现无缝叠接,其中考虑传输和译码之间的延迟(因而也是接收和译码之间的延迟),并且确保新流的显示和帧间显示延迟相等。
图10的流程图说明一个优选叠接器如何优选地确定新数据流实时传输开始时间(图4的步420)。概括地说,步1010和1020产生只与新数据流有关的值,而步1030到1050则使用这些值建立相应于旧数据流的新数据流传输时间。更具体地说,在步1010,叠接器-N270检索新数据流的第一包的PCR(“PCR(新)”)。在步1020,叠接器-N270计算在新数据流的第一序列头部的传输时间和新数据流的第一帧(先前存储的)译码时间标记(“DTS(新)”)之间的时间差(“Δ(新)”),由下式给出Δ(新)=DTS(新)-PCR(新)在步1030,叠接器-N270分析包含在叠接缓冲器-N265中的旧数据流数据,以便得到旧数据流的最后帧的译码时间标记(“DTS(旧)”)。在步1040,叠接器-N270计算新数据流的连续显示译码时间标记(“DTS(连续)”),其等于在步1030求得的DTS(旧)和帧间延迟(下面也称为“间隙”)的和。
DTS(连续)=DTS(旧)+帧间延迟对于NTSC,该式等于DTS(连续)=DTS(旧)+1001/30000秒最后,在步1050,叠接器-N270计算实时新流PCR(“PCR(新-RT)”),其等于在步1040确定的连续显示DTS和传输延迟或在步1020求得的差值之间的差
PCR(新-RT)=DTS(连续)-Δ(新)图11的曲线以译码器输入缓冲器内容为例说明由用于确定如图10所示的新数据流实时传输开始时间的优选方法得到的结果。为简明起见,旧数据流1101和可能的新数据流的变化1102a-1102c分别在曲线的上部和下部单独示出了。如图所示,上部和下部的每个曲线在水平轴上表示经过的时间,从左到右而增加,在竖轴上表示不断增加的输入缓冲器内容(如同图8a的未修正的一个MPEG-2编码的数据流曲线一样)。此外,由垂直部分1110和1120a-c分别给出了旧数据流1101和可能的新数据流变化1102a-c的按照DTS的译码情况,同时,例如由曲线部分1112和1113给出了旧数据流1101的在译码之间接收的数据流数据。不过应当注意,按照优选的叠接器,所示的新数据流的部分和旧数据流的部分尚未被发送或尚未被译码器输入缓冲器传输或接收。曲线中的数据仅仅是用于说明而已。
如图所示,确定相对于旧流的最后的DTS值的实时新流PCR(加上一个帧间延迟或间隙)以及新流的第一DTS,用来首先使该数据流对对齐。换句话说,实时新流PCR使新流的第一帧在译码旧流1103的最后一帧之后大约33毫秒(1001/30毫秒)被译码(对于NTSC)。类似地,新流的第一个PTS也按照实时新流PCR来确定。因而,对于NTSC编码,新的数据流的出现和显示将在旧数据流的最后一帧被显示之后大约33毫秒开始。因此,新数据流将无缝地被译码和发送,从而不产生图像翻滚之类的视觉问题。
叠接器-N270通过发出序列查找器320(图3)查找新数据流的第一序列头部来确定帧间间隙1103。然后叠接发生器310查找按照MPEG-2规范包含在序列头部内的帧速率值,并按下式计算间隙11031/(由帧速率代码给出的帧速率)按照MPEG-2规范的帧速率代码由下面的帧速率代码对帧速率值转换表给出<
正确的译码和显示以及正确的数据流。换句话说,在其它的特点当中,遵守MPEG-2编码应当保证数据流数据不会使译码器缓冲器溢出或欠流(假定数据流已被正确地编码)。因此,通过避免修改在编码期间建立的数据部分的关系,优选的叠接器在叠接完成之后可避免校正由于这种修改而发生的错误。因而,至少对于优选的叠接器,新的数据流将继续被译码,并按照其编码在叠接之后被显示。
不过,遗憾的是,图11还说明在完成旧数据流的译码之前,在译码器输入缓冲器中新数据流数据的存在仍然是有问题的。首先,译码器输入缓冲器可能在旧数据流数据的最后一个“缓冲器满”被译码之前或之后开始接收新数据流数据。第二,新数据流数据可能如此之多,以致于引起译码器输入缓冲器溢出。这种溢出可能发生在译码旧数据流的最后帧之前的不同的时间点,从而使事情更槽。
如图所示,旧数据流1101直到时刻t2才被译码器输入缓冲器接收。然后,从时刻t2到时刻t4,在译码器输入缓冲器中的所有剩余的旧数据流数据(即“旧数据流的最后缓冲器”)被译码,直到所有旧数据流数据(由译码器接收的)都被译码完毕。第一个问题(即新数据流的开头和旧数据流的最后缓冲器的开头不对齐)对于可能的新数据流1102a是不存在的。不过,可能发生新数据流过早地开始被接收,如发生在时刻t2之前的可能的新数据流(即“早的数据流”)。遗憾的是,早的数据流的存在不仅可以导致溢出(和正被接收的旧数据流数据一起),而且在同一频道上并行地接收与传输多个数据流也不符合MPEG-2规范。可能的新数据流1102c(即“最后的数据流”)也有这样的问题,即由于在时刻t2之后的某个时刻发生并与旧数据流1101一起被译码,所以可能发生欠流。
图12是流程图,说明按照本发明的优选叠接器如何优选地对齐新数据流数据的译码器输入缓冲器的开头和旧数据流的最后缓冲器的开头。概括地说,如果新数据流是早的数据流(例如图11的1102b),则叠接器-N270延迟新数据流数据的传输(并且同样延迟译码器的接收),如果新数据流是晚的数据流(例如图11的1102c),则叠接器-N270加快新数据流的传输(同样加快译码器的接收)。更具体地说,叠接器-N270通过在新数据流开始传输之前加上空包来延迟新数据流,或者通过删除已被译码成为数据流的空包来延迟新数据流。叠接器-N270还优选地存储被加上/删除的全部数量的空包,供在叠接期间使用,如下文所述。
如图所示,在步1210,叠接器-N270初始化求和变量(“空计数”),并且在步1215,叠接器-N270查找数据流传输的结尾。如果在步1220实时新数据流PCR小于旧数据流的最后包被传输的时间(“PCT旧”),则叠接器-N270确定在新数据流开始之前是否有足够的空包数,使得实时新数据流PCR等于PCR旧,并然后在步1240相应地更新空计数。如果在步1250新数据流较晚,则叠接器-N270在步1260删除在新数据流开头附近的足够数量的空包,使得实时的新数据流PCR等于PCR旧,并且在步1270相应地更新空计数。
不过,因为叠接器-N270是一个库函数,所以叠接器-N270不知道叠接缓冲器-N265的总的大小。因此,虽然叠接器-N270可以安全地从存储在叠接缓冲器-N265中的数据流数据中除去空包(从而需要较少的叠接缓冲器容量)时,但加上附加的空包的数据流数据可能超过叠接缓冲器-N265的容量。因此,叠接器-N270通过向主程序返回空计数的值,在叠接缓冲器-N265中存储的数据被传输之前,利用加上那么多的空包的指令加上空包。由此处的讨论,本领域技术人员应当理解,按照本发明的并作为一个完整的应用程序的叠接器能够规定静态的或动态的叠接缓冲器容量,使得叠接器能够对叠接缓冲器直接地加上空包。
虽然从新的数据流减去或加上空包对于保持新数据流的编码特性的影响是相反的,但这种修正需要相当少量的处理系统输出,这尤其是因为必须的PCR值是已知的,并且必须的PCR旧可以从先前的叠接入点或传输起点通过计数包来求得。此外,虽然特别是从新的数据流中删除空包将使得数据能够被输入缓冲器更快地接收并可能引起溢出,但是可在叠接完成之前在对齐期间对数据流修正进行补偿,如同下面将要进一步讨论的。
图13a和13b说明按照本发明的优选叠接器如何从新数据流中优选地删除空包。如图所示,叠接缓冲器-N265(图2)随着作为按顺序排序的分量数据包的数据流数据而增长。这种方案使得叠接器-N270在包的级上访问、分析与/或管理数据流数据,而不用进一步管理或重构(即和其它的组织方法相反,例如顺序、GOP、帧或其它的粒度(granularity)等级)。
叠接器-N270通过把每个剩余的数据包复制到叠接缓冲器-N265中的下一个新流位置来删除数据包。例如,图13A表示在叠接缓冲器-N265的位置2包含的空包。叠接器-N270通过把新数据流中的每个剩余的空包复制到以前的(即在时间上,或者相当于较小的号数)位置来删除在位置2包含的空包,借以重写在位置2包含的空包并形成修正的叠接缓冲器-N265,如图13B所示。(因为在数据流中的每个序列一般至少包括10%或更多的空包,所以没有发现可以删除的空包的存在并且也不可能成为问题)。
由此处披露的内容看来,本领域技术人员应当理解,可以利用许多不同类型的数据结构代替叠接缓冲器-N265。其中的例子包括但不限于多维表和链接表。上述的用于插入和删除的复制方法也容易被各种常规的表处理方法代替,其中的例子包括链接表和使用空的单元。优选的方法尽管根据处理输出看来花费较多,但仍然是优选的,这是由于其具有最小的复杂性,并且花费也只是在暂时(即在叠接期间)从译码器直接接收数据,然后把数据传送给多路缓冲器,以及在进行实时叠接时。不过,尤其是从不断发展的硬件和软件看来,可以预料,可以利用其它的表和表管理方法。
图14到图15c的流程图,同时参考图11,16,和17,说明按照本发明的优选叠接器如何优选地检测并校正会由叠接引起(图4的步450)的译码器输入缓冲器溢出状态。
首先参看图11,旧数据流1801的最后译码器缓冲器在时刻t2之前将被传输给译码器。在旧数据流继续译码或“播出”(从时刻t2到时刻t4)时,新数据流1102a的第一译码器缓冲器(在对齐之后)将继续被译码器输入缓冲器接收。因此,从时刻t2到t4,主要在译码器输入缓冲器中显示连续地改变两个数据流的数量,使旧数据流的数量减少,新数据流的数量增加。
新数据流的第一译码器缓冲器将继续被译码器接收,直到在t5新的数据流译码开始(即新数据流叠接入点)。所述的这些情况当然是发生在没有溢出校正时。
图16的曲线也说明在译码器输入缓冲器中的旧数据流数据和新数据流数据的一个示例的部分。不过,和图11相比,只示出了旧数据流的最后译码器缓冲器的一部分。此外,示出了较多的信息性的数据流的例子,并且旧数据流数据和新数据流数据以组合的方式示出。图16表示在译码器输入缓冲器中的组合的数据流的存在如何使译码器输入缓冲器的容量被超过,引起“译码器溢出状态”(即视频译码器输入缓冲器的)A,B和C。遗憾的是,除非被校正,每个溢出状态将引起数据流数据的丢失。
图14的流程图概括地说明按照本发明的用于消除溢出状态的优选的方法。如图所示,如果在步1410叠接器-N270(图3)发现由叠接引起的溢出状态,则在步1420叠接器-N270对引起溢出状态的数据流部分延迟一个延迟量。然后叠接器-N270在步1430使落后的数据流部分加快一个相应于延迟量的量。如在下面将要进一步说明的,叠接器-N270最好通过在溢出校正期间在发生溢出状态的(或简称为“溢出”)叠接缓冲器开头插入空包来延迟一个数据流部分。叠接器-N270还最好在溢出校正期间通过在相应的叠接缓冲器满的开头或开头附近删除空包来加快一个数据流部分。(如前所述,由于编码的结果,数据缓冲器一般含有10%或更多的空包,因而尚未观察到在进行溢出校正期间没有足够的空包供删除。)此外,叠接器-N270最好对数据流的那些被实际检测到溢出的部分以空包插入与/或删除的形式确定数据流的修正。更具体地说,只有在需要时才修正新数据流,并且在新数据流内,只有那些被检测到溢出的叠接缓冲器与/或在前面与/或在后面的这种叠接缓冲器才被修正。根据此处的教导,本领域技术人员应当理解,在数据流中叠接缓冲器开头之外的位置,空包插入可以用另外的方法实现。其中的例子包括但不限于就在检测到溢出的数据包前面插入。不过,虽然这种方案可以更精确地校正溢出状态,但据观察,优选的方法能够实现同样效果的溢出校正,并且通过作为库实现的叠接器使得更容易实时地进行校正。还有一些关于删除空包的类似的方案。设想到的这些方案例如有,叠接器不作为库来实现,因此通过稍微增加费用或者不用增加费用便能具有更直接的控制能力。
现在参看图16,优选的叠接器-N270通过沿着组合数据流曲线1610的优选确定点更特定地检测溢出状态。如图所示,沿着所述曲线的确定点在时刻t2,t5和t7表明溢出状态的开始。虽然似乎下一步可能包括计算超过译码器输入缓冲器容量的数据的数量(并且这一步已经被利用过),但是发现按照数据流数据的缓冲器超过数量进行校正可能导致不精确的结果。据信这种可能的不精确大部分是由于在一个公共的数据流内存在视频、音频和其它信息而造成的。不过,通过测量溢出状态的长度,更具体地说,通过计算在溢出状态期间应当由译码器输入缓冲器接收的数据包的数量,已经表明可以获得精确的结果。由于混合类型数据的同样的原因,数据流数据也最好按照视频数据字节进行分析,然后逐帧地进行计算。
如上所述,叠接器-N270(图3)最好这样进行操作部分地分析旧数据流数据,然后在传输之前大约1秒钟根据逐个缓冲器满(或等效地,根据逐个叠接缓冲器)分析在叠接缓冲器-N265中按顺序提供的新数据流数据。因此,当叠接缓冲器-N265包含相应的数据流部分时(例如旧数据流的结尾或新数据流的开始),叠接器-N270最好完成上述的每个功能(例如查找叠接入点和叠接出点)。结合叠接入点、叠接出点、PCR和对齐确定,叠接器-N270产生叠接表370,然后利用用于检测和校正溢出的数据使叠接表370增加(见图4的步450)。
已经观察到,不仅在相继的叠接缓冲器时期可能存在一个以上的溢出状态,而且在一个缓冲器时期也存在。因此叠接器-N270全部检索每个叠接缓冲器,以揭示可能存在于叠接缓冲器内的所有溢出状态。
还已经观察到,在同一个叠接缓冲器内发生溢出不应当孤立地进行校正。例如,虽然希望通过相应地插入空包应当避免每个溢出,但是观察到,这种多次插入在一些情况下会引起译码器缓冲器欠流。因此叠接器-N270最好在进行校正之前完成全部叠接缓冲器内的溢出测试/检测。更具体地说,叠接器-N270确定叠接缓冲器内的持续时间最长的溢出状态,然后在该叠接缓冲器之前插入相应数量的空包。
还应当注意,优选的基于库的叠接器-N270最好以上述的方式在溢出校正期间增加和删除空包。更具体地说,通过使一个加指令和一些要增加的空包一道返回主程序来增加数据包。与此相反,叠接器-N270直接从叠接缓冲器-N265中删除空包。
参考图17示例的帧表,图15a-c的流程图更详细说明用于检测并消除溢出状态的优选的方法。图15A说明用于利用旧数据流增加帧表265(图3)的方法,而图15b和15c说明用于利用新数据流数据增加帧表265以及用于检测和消除溢出状态的方法。
如图15A所示,叠接器-N270最好通过利用被包含在叠接缓冲器-N265中的旧数据流视频帧的DTS和大小增加叠接表-N370来开始溢出处理。虽然叠接器-N270基本上在启动时立即开始,但是叠接器-N270只需要足够早地开始,以便保证叠接表370包含旧数据流的最后译码器缓冲器的全部数据。叠接器-N270以上述方式分析叠接缓冲器-N265的序列、GOP、包数据和帧数据。叠接器-N270还通过计数叠接缓冲器-N265包含的每个包内的视频帧数据字节来确定帧的尺寸。
更具体地说,如果在步1501,叠接缓冲器-N265包含旧数据流的新的叠接缓冲器,则在步1503,叠接器-N270分析叠接缓冲器-N265的第一帧(即“当前帧”)。接着,在步1505,叠接器-N270检索当前帧的DTS,并在步1507在帧表370的下一个位置存储检索的DTS。如果在步1509在叠接缓冲器-N265中剩余较多的数据,则叠接器-N270在步1510得到叠接缓冲器-N265的下一个数据包,并在步1511确定当前包是否是新的帧。如果在步1511确定当前帧是新的帧,则叠接器-N270在叠接表370中存储先前视频帧的尺寸,并返回步1505;否则,叠接器-N270便在步1513把当前帧中的视频数据字节数加在当前帧的总数上,然后返回步1509。
如果在步1509在叠接缓冲器-N265中没有剩余另外的数据,则叠接器-N270进行步1514的处理。如果在步1514叠接缓冲器-N265不包含旧数据流数据的最后叠接缓冲器,则叠接器-N270进行步1501。如果在步1514叠接缓冲器-N265包含旧数据流数据的最后叠接缓冲器,则在步1515叠接器-N270初始化指针“第一”,使其指向(在帧表370中)旧数据流的最后译码器缓冲器的第一帧的位置。
在图15B中进行新数据流的处理,叠接器-N270首先通过对在译码器输入缓冲器中已经包含的旧数据流数据加上新数据流数据确定可以不被超出(即溢出)的缓冲器。更具体地说,在步1521叠接器-N270把变量“尺寸”的值设置为新数据流的第一序列头部内vbv缓冲器_尺寸字段的值。当vbv缓冲器尺寸值不需反映每个接收译码器输入缓冲器的总的可利用的尺寸时(其可以改变),它便代表在新数据流编码期间预计的最大缓冲器尺寸。因此,叠接器-N270通过假设这样一个尺寸,保证在不进行叠接就不会发生溢出(即只有一个编码的数据流占据译码器输入缓冲器)的情况下不会发生溢出。在步1523,叠接器-N270初始化变量“加空”,用于决定是否添加空包,如果是,则确定要增加多少个空包。
图17通过例子说明如何使用缓冲器表370检测溢出。如图所示,此时叠接器-N270已经被找到(在相继的叠接缓冲器中)并相应地用旧数据流的每个DTS和帧尺寸填充帧表370。叠接器-N270也已经把起始指针设置成指向旧数据流的最后译码器缓冲器的第一帧。不过,关于新数据流(在所示表的下部),叠接器-N270将以确定第一帧的DTS开始,然后开始确定第一帧的帧尺寸。直到叠接器-N270完成这尺寸的确定,该尺寸一直是简单地“前进”的。在完成确定该尺寸时(通过检测下一个帧),当前帧的尺寸将成为固定的。
在进行帧计算的同时,叠接器-N270将测试和校正溢出。因为正确编码的数据流不会单独引起溢出,所以旧数据流的尺寸值可被加到一起而不用测试溢出。不过,由于尚未知道的一些新数据流数据包,使得溢出也会发生。因此叠接器-N270最好在分析每个包之后在完成前进的尺寸确定时测试溢出(即超过vbv缓冲器尺寸)。新数据流的帧尺寸一旦被固定,便可以和旧数据流帧尺寸一起直接相加。不过,应当注意,虽然溢出确定和校正最好根据逐个叠接缓冲器进行,但MPEG-2编码的帧可以跨过帧缓冲器的边界甚至跨过包的边界开始和结束。
括号1710和1712和不断增加的起始指针一道说明如何从旧数据流的每个相继帧开始优选地进行测试溢出。为简明起见,图15a-15c的流程图假定通过每个旧数据流译码消除溢出。回到图16的曲线,代表至此发现的所有溢出状态的溢出状态A和B说明这种译码器消除溢出的情况。不过,应当注意,不能通过译码消除溢出的溢出状态(例如C型溢出)也是可能存在的。因而,为了避免漏掉这种溢出,应当从当前确定的尺寸中减去每个译码的帧的尺寸,并且再次进行测试,以便确定是否还有溢出。如果有,则应当继续确定在溢出过程期间的包数。不过,给定附加的时间和空间要求,可以优先选择地提供发生C型溢出的测试。
根据本发明的教导,本领域技术人员应当理解,不脱离本发明的范围和构思,特定的叠接表结构和特定的方法参数可被修改。
回到图15B,在步1525,叠接器-N270从起点指针指示的位置开始加叠接表-N370中的所有的已知尺寸。在步1527,叠接器-N270把新数据流的第一帧的DTS输入到叠接表-N370中,并把帧尺寸初始化为0。在步1529,叠接器-N270得到在叠接缓冲器-N265的当前包中的视频字节的总数,再把该数加到当前帧的帧尺寸中。
如果在步1531增加的新数据流数据字节引起溢出状态,则叠接器-N270转到步1551(图15C);否则,叠接器-N270继续执行步1533。
如果在步1533新数据流的当前数据包的PCR值大于或等于开始帧(旧数据流的)的TDS,则将进行旧数据流译码,并且可继续关于下一个旧数据流帧的溢出检测,如步1535所示。而如果在步1533PCR值不大于或等于当前起始帧的DTS,则叠接器-N270跳过步1535,并在步1537继续。
如果在步1537已经达到叠接缓冲器-N265的结尾,则叠接器-N270在步1557(图15C)继续;否则,叠接器-N270通过对下一包中的视频字节求和在步1539继续视频字节的计数,或者如果达到新的帧,则输入帧表370中的总的帧尺寸,重新初始化当前帧尺寸,并进行步1531的处理。
图15C开始在步1551响应检测的溢出状态的开始。如上所述,叠接器-N270优选地确定在当前缓冲器中持续存在溢出状态的包数,并加上等于这种在当前叠接缓冲器中的最大的持续数量的空包数。在步1551,叠接器-N270得到当前包的包数(从当前包的头部)。在步1553,叠接器-N270从下一包(或如前所述)得到视频字节数,如果下一包开始一个新帧,则叠接器-N270在缓冲器表370中输入先前的帧尺寸,并重新初始化当前的帧尺寸。
如果已经达到溢出状态,并且在步1555尚未达到当前叠接缓冲器的结尾,则叠接器-N270在步1565进行处理。而如果已经达到溢出状态,并且在步1555已经达到当前叠接缓冲器结尾,则叠接器-N270在步1557在当前叠接缓冲器前面加上等于在当前叠接缓冲器中最大的持续存在溢出的包数的空包数,并进行步1559的处理。
如果在步1559已达到结束状态,则叠接完成,否则,则叠接器-N270继续执行步1561。叠接器-N270最好在新的数据流继续被编码时(即在叠接期间进行任何修正之前)确定是否发生结束状态。因此,如果编码的新数据流以一个闭合的GOP开始,则当当前叠接缓冲器的当前包的PCR等于或大于编码的旧数据流的最后的DTS时达到结束状态。不过,如果叠接器-N270在新数据流开始(即在找到视频叠接入点时)已经关闭一个打开的GOP,则当叠接器-N270在新数据流中找到DTSn+1帧时达到结束状态,其中n是由叠接器-N丢失的帧数。例如,如果叠接器-N270通过丢失2帧来闭合一个GOP,则在叠接器-N270找到新数据流的第三帧的DTS时达到结束状态。
在步1561(即发现溢出并且已经达到当前叠接缓冲器的结尾,但是不存在结束状态),叠接器-N270从下一个叠接缓冲器的开始减去空包数,并重新初始化空包计数。接着,在步1563,叠接器-N270通过得到叠接缓冲器的下一个(在这种情况下即第一个)包的尺寸开始测试新的叠接缓冲器是否溢出,或者如果发现一个新帧,则向缓冲器表370输入旧的帧尺寸,并把新的帧尺寸初始化为零字节。叠接器-N270然后继续步1531(图15B)。
虽然优选的叠接器最好跟随一种叠接缓冲器,对它已通过从随后的叠接缓冲器中删除相同的空包数而增加空包,但按照本发明的教导,本领域技术人员应当理解,可以采用不同于直接删除的恢复方案。如上所述,在叠接结束之前把剩余的新数据流恢复到其编码形式,以便避免在不需要进一步干预的叠接之后再发生溢出、欠流与/或其它异常状态。因此,最好在增加空包之后删除空包(即借以恢复编码的数据流)。删除还应跟随增加,使得足以接近闭合,从而例如避免因太多的延迟而引起欠流。不过,不同的例子包括但不限于在特定的增加和删除之间只有一个缓冲器较少地接近闭合,并且假定相同的缓冲器不引起溢出和欠流。
现在返回到图15C,在步1565,叠接器-N270得到叠接缓冲器的下一个包的尺寸,或者,如果找到新的帧,则在缓冲器表-N370中输入旧的帧尺寸,并对新的帧尺寸初始化。然后,叠接器-N270继续步1567。如果在步1567,已经达到当前叠接缓冲器结束,则叠接器-N270在步1557继续;否则,叠接器-N270在步1569继续。如果在步1569当前叠接缓冲器的当前包的PCR值等于或大于起始帧的DTS值,则叠接器-N270在当前叠接缓冲器前面加上一个空包数,所述的空包数等于在步1571在当前叠接缓冲器中持续发生溢出的最大的包数,然后执行步1563;否则,叠接器-N270跳过步1571而执行步1563。
现在返回到图18到图20,叠接器-N270和视频叠接相结合提供音频叠接。更具体地说,叠接器-N270在找到视频叠接出点(图4的步410)之后查找旧数据流音频叠接出点,并类似地在找到视频叠接入点(图4步420)之后查找新数据音频叠接入点。
图18的流程图说明用于在旧数据流中设置音频叠接出点的优选的方法。如图所示,如果在步1810找到视频叠接出点,则在步1820叠接器-N270分析叠接缓冲器-N265以便得到最后的以前音频包。接着,在步1830,叠接器-N270填充在音频叠接点和空包后面的视频叠接出点之间产生的间隙。
如图19A的曲线所示,图18的方法在点1901在结束叠接之前的视频终结之前结束音频叠接。虽然这种叠接出点在视频图像结束之前产生无声间隔,但是认为20-30毫秒的无声间隔是可接受的。另一方面,如果确保不产生无声间隔(通过使音频PTS和视频PTS匹配),则会引起在视频结束之后,音频1902还在继续的问题。此外,过量的音频数据更可能产生音频缓冲器的溢出。
参考图19B,图20的流程图说明在新数据流中设置音频叠接入点的一种优选的方法。如图所示,如果在步2010已经找到音频叠接入点,并且在步2020已经选择早出选择,则在步2050,叠接器-N270查找在视频叠接入点(图19B的1905)之后的音频头部边界。因为在视频开始之后存在无声间隔期,所以在步2060,叠接器-N270用空包代替丢失音频包(图19B的1950)。而如果在步2020已经选择PTS匹配选择,则在步2030,叠接器-N270查找大于视频PTS的第一音频PTS,并在步2040利用空包代替或“添凑”无声间隔期,直到音频开始(图19B的1960)。早出点选择的短的无声间隔期也是可取的。
图21和图22说明本发明的另一个优选的实施例。一般地说,本实施例提供一种以类似于前一个实施例的叠接器的方式进行叠接的叠接器,不过本实施例的叠接器和一个优选的利用多路传输器实现的“位时钟”结合来操作。通过使用这种位时钟和其它相关的优点,一种优选的叠接器能够使进行叠接处理的要求大大降低。
一般地说,频道多路传输器以重复的方式进行操作,按照顺序接收数据流数据,对数据流进行多路传输,并把多路传输的数据提供给发送机。在这种系统中,数据流的处理必须在由多路传输器接收之前被完成。不过,发现在叠接器和多路传输器之间可以建立公共的时基,使得多路传输器有助于叠接操作。
图21说明位时钟通常如何和叠接器的操作相结合而操作。如图所示,在步2105,用户设置多路传输器的位速率。在步2110,主应用程序向多路传输器190(图2)发出每个有效叠接缓冲器的传输位速率。在步2115,主应用程序按照频道位速率对多路传输器的位速率的比率设置缓冲器传输定时。在步2120,多路传输器190按照定时发出叠接缓冲器-N265未准备发送的空包。在步2125,叠接器-N270的删除n个空包的指令通过主应用程序和叠接缓冲器-N265的内容一道被多路传输器190接收。(对于一个删除空包的指令,n是负的,对于增加空包的指令,n是正的。)在步2130,多路传输器190把叠接缓冲器-N265的内容提供给发送机,其在由下式表示的时刻立即发送给叠接缓冲器
应当注意,叠接器-N270不仅使用比前一实施例(图13a和13b)用于删除空包的多复制方法小得多的处理功率来加速叠接缓冲器,此外叠接器-N270还可以以和前一实施例相同的方式工作。还可以看到,因为叠接器-N270以相同的方式实现延迟(即添加空包)和加速(即删除空包),所以可以实现进一步的优化。
图22的流程图说明本发明的叠接器如何优先优化图14到15c所示的溢出检测和校正方法。概括地说,和图15a-15c的单独恢复新数据流然后校正同一叠接缓冲器的溢出的方法相比,本叠接器对每个叠接缓冲器只提供一个指令。此外,本叠接器和位时钟结合优选地操作,以便改变叠接缓冲器的传输而不象先前的方法那样删除和附加空包。
如图所示,在步2205,叠接器-N270通过分析新数据流的第一叠接缓冲器来检测一个或几个溢出状态,然后,在步2210,叠接器-N270设置附加空包等于在溢出期间最大的包(如前一实施例一样),并且再设置删除空包等于附加空包。删除空包被用于下一个叠接缓冲器恢复新数据流。接着,在步2215,叠接器-N270通过主应用程序向多路传输器190发出“加空包”指令。如果在步2205没有检测到溢出状态,则叠接器-N270在步2207设置加空包和删除空包为0。
如果叠接器-N270在步2220在分析下一个叠接缓冲器时检测到溢出状态,则叠接器-N270在步2225存储在最大的持续溢出期间叠接缓冲器的包数,在步2230向主应用程序发出在溢出校正和流决定的空包值之间的差(即分别加上并删除空包),并在步2235设置删除等于添加并然后添加等于0。如上所述,因而叠接器-N270对叠接帧优选地只提供一个组合指令。如果在步2260,叠接器-N270没有达到结束状态(如前所述),则叠接器-N270转到步2220。
如果叠接器-N270在步2220在分析下一个叠接缓冲器时没有检测到溢出状态,则叠接器-N270执行步2140。如果在步2140删除空包等于0,则叠接器-N270转到步2260。而如果在步2140删除空包等于0,则在步2245叠接器向主应用程序发出相应的删除空包指令,并在步2250设置删除空包等于0。
按照上述,本领域技术人员应当理解,此处所述的两个实施例也可以应用于旧数据流和新数据流用其他方法进行相同编码或不同编码的情况。例如,优选的叠接器还可以进一步选择地利用与/或设置一个公共时间基准,例如公共PCR。每种叠接器也可以被设计成用于直接和输出装置例如多路传输器190(图2)通信。此外,所讨论的从空包向位时钟定时变化的转换可以利用叠接器与/或主应用程序来实现。
虽然本发明已经参照特定实施例进行了说明,但是应当理解,在不脱离所述本发明的范围和构思的情况下可以对上述的公开作出多种改变、改型和替代,并且在一些情况下可以使用本发明的一些特征而不使用其它特征。
权利要求
1.一种用于消除溢出状态的方法,包括以下步骤检测引起溢出状态的第一数字编码的数据流部分;延迟所述第一数据流部分一个用于阻止所述异常状态的延迟时间;以及加速比所述第一数据流部分落后的第二数据流部分,以便基本上补偿所述延迟时间。
2.一种用于消除溢出状态的装置,包括用于检测引起溢出状态的第一数字编码的数据流部分的装置;用于延迟所述数据流部分的装置;以及用于加速比所述第一数据流部分落后的第二数据流部分的装置。
3.一种用于避免含有新数据流部分和旧数据流部分的译码器缓冲器溢出的方法,包括(a)确定如果传送给所述译码器缓冲器则会占据所述译码器缓冲器的旧数据流数据的总量;(b)把新数据流数据的数量加到所述总量上,以便获得组合的数据量;(c)检测所述的组合数据量是否溢出所述译码器缓冲器;(d)如果发生溢出,则在所述部分要被传输到所述译码器缓冲器的情况下,使新数据流部分延迟一个至少相应于所述溢出的延迟量。
4.根据权利要求3所述的方法,其中在所述确定步骤(a)之前确定所述译码器缓冲器的最大容量。
5.根据权利要求4所述的方法,其中所述最大容量按照旧数据流内的缓冲器容量参数进行确定。
6.根据权利要求4所述的方法,其中所述步骤(a)的最大容量按照在新数据流内的缓冲器容量参数确定。
7.根据权利要求4所述的方法,还包括在检测步骤(c)之前从所述总量中减去旧数据流数据的在被传输时要被所述译码器译码的数量。
8.根据权利要求3所述的方法,其中所述步骤(d)的延迟量是在所述新数据流的所述部分内使所述缓冲器溢出的数据流数据的数量的函数。
9.根据权利要求3所述的方法,其中所述步骤(d)的延迟量是在所述新数据流的所述部分内在一个溢出单事件的情况下使所述缓冲器溢出的数据流数据的数量的函数。
10.根据权利要求3所述的方法,其中所述步骤(d)的延迟量是在所述新数据流的所述部分内溢出的持续时间的函数。
11.根据权利要求3所述的方法,其中所述步骤(d)的延迟量是在所述新数据流的所述部分内一次溢出单事件情况下的持续时间的函数。
12.根据权利要求3所述的方法,其中所述步骤(d)的延迟量是在所述新数据流的所述部分内持续时间最长的溢出事件的函数。
13.根据权利要求3所述的方法,其中所述步骤(d)的延迟量等于在所述新数据流的所述部分内持续时间最长的溢出期间所述部分的数据包数。
14.根据权利要求3所述的方法,其中所述步骤(d)还包括使所述新数据流的随后部分被加速一个相应于当新数据流被传输时的所述延迟量的加速量。
15.一种用于检测在包括旧数据流部分和新数据部分的数据流部分叠接期间数据流译码器溢出的方法,包括(a)确定多个旧数据流帧尺寸和相应于所述旧数据流部分的旧数据流帧的译码时间,并在叠接表中存储所述帧尺寸和所述译码时间;(b)确定最大的译码器缓冲器容量;(c)确定新的帧尺寸和相应于新数据流部分的新数据流帧的译码时间;(d)通过对被存储在叠接表中的多个旧数据流帧尺寸相加来确定一个中间尺寸;(e)通过把新数据流帧尺寸加到所述中间尺寸来确定一个总尺寸;以及(f)通过确定所述总尺寸是否超过所述最大译码器缓冲器容量来检测溢出。
16.根据权利要求15所述的方法,其中所述步骤(d)的旧数据流帧尺寸包括如果数据流部分被传输,则当所述新数据流帧被译码器接收时将保持不被译码的旧数据流部分的所有的帧。
17.根据权利要求16所述的方法,其中所述数据流部分被传输。
18.根据权利要求15所述的方法,还包括(a)如果在步骤(f)发现溢出,则使包括所述新数据流帧的新数据流数据部分的传输时间被延迟。
19.一种用于校正在包括旧数据流部分和新数据流部分的数据流部分的叠接期间数字编码的数据流译码器溢出的方法,包括使新数据流数据的一部分的预定传输时间延迟。
20.根据权利要求20所述的方法,其中所述延迟是由于对所述新数据流部分加上空包而引起的。
21.根据权利要求19所述的方法,其中所述延迟是由于按照以下公式重新定时所述部分的传输而引起的(所述部分的当前规定的传输时间)+(n包×m位/包×多路传输器位速率)/(数据流位速率),其中n表示要被延迟传输的包数,m表示在要被传输的数据流数据中的位数。
22.根据权利要求21所述的方法,其中m=1504。
23.一种用于叠接包括旧数据流和新数据流的数字编码的数据流的方法,包括(a)为了与旧数据流的叠接出点和新数据流的叠接入点相适应,修改新数据流的当前时间基准,借以形成一个修正的新数据流时间基准;以及(b)按照所述的修正的新数据流时间基准对齐新数据流的部分和旧数据流的部分,使得在播放期间从旧数据流向新数据流的传输基本上是不可觉察的。
24.根据权利要求23所述的方法,其中步骤(a)的所述修正的时间基准还相应于一个在用于译码旧数据流的最后帧的第一译码时间和用于译码新数据流的第一帧的第二译码时间之间的时间间隙。
25.根据权利要求23所述的方法,其中确定所述修正的新数据流时间基准的步骤包括(i)确定新数据流的所述当前时间基准;(ii)确定在所述当前时间基准和新数据流帧的当前译码时间之间的延迟;(iii)确定一个相应于所述当前译码时间加上一个在译码旧数据流的最后帧的译码时间与用于译码新数据流的第一帧的译码时间之间的帧间延迟的新数据流的所述帧新译码时间;(iv)确定所述修正的新数据流时间基准,作为减去所述步骤(ii)的延迟的步骤(iii)的所述新译码时间。
26.根据权利要求23所述的方法,其中确定所述修正的新数据流时间基准包括(i)确定所述新数据流的第一包的程序时钟基准;(ii)确定一个在所述新数据流的第一序列头部的传输和所述新数据流的第一帧的第一译码时间标记(“DTS”)之间的延迟;(iii)确定连续的DTS,作为所述第一TDS和帧间延迟的和;以及(iv)确定新数据流的实时传输时间,作为减去所述步(ii)的延迟的步(iii)的所述连续的DTS。
27.根据权利要求23所述的方法,其中所述对齐步骤(b)设置一个相应于用于译码旧数据流部分的译码时间的传输新数据流部分的起始时间。
28.根据权利要求23所述的方法,其中所述步(b)中的对齐设置一个用于译码缓冲器的起始时间,以便开始接收相应于用于译码旧数据流部分的译码时间的新数据流的部分。
29.根据权利要求23所述的方法,还包括(d)如果数据流被传输,则检测会由所述叠接引起的译码器缓冲器溢出状态;以及(e)校正所述溢出状态。
30.根据权利要求23所述的方法,其中在所述确定步骤(a)之前执行(i)确定旧数据流的叠接出点;以及(ii)确定新数据流的叠接入点。
31.根据权利要求30所述的方法,其中步骤(ii)包括,如果新数据流的起始帧是参考前一帧的译码进行正常译码的类型,则修正新数据流以除去所述参考。
32.根据权利要求31所述的方法,其中所述帧的类型从包括B帧和P帧的组中选择,并且其中所述修正步骤包括关闭一个打开的图像组(“GOP”)。
33.根据权利要求30所述的方法,其中所述数据流包括视频数据和音频数据,其中步骤(a)包括确定视频叠接出点和音频叠接出点,并且其中步骤(b)包括确定视频叠接入点和音频叠接入点。
34.根据权利要求30所述的方法,其中所述步骤(i)的叠接出点在旧数据流的用户可选择的部分内确定。
35.根据权利要求30所述的方法,其中所述步骤(ii)的叠接入点在新数据流的用户可选择的部分内确定。
36.根据权利要求30所述的方法,其中步骤(i)的所述叠接出点是用户可选择的。
37.根据权利要求30所述的方法,其中步骤(ii)的所述叠接入点是用户可选择的。
38.根据权利要求23所述的方法,其中在步骤(a)之前确定用于旧数据流的第一源和用于新数据流的第二源。
39.根据权利要求38所述的方法,其中所述源包括从由存储装置、卫星接收器、电缆接收器、网络、音频源、视频源和译码器构成的组中选择的类型的源。
40.根据权利要求39所述的方法,其中所述第一源和所述第二源是同一种源。
41.根据权利要求23所述的方法,其中至少一个所述数据流是MPEG编码的。
42.根据权利要求23所述的方法,其中所述叠接被实时地进行。
43.根据权利要求23所述的方法,其中在步骤(a)之后发送旧数据流的部分。
44.根据权利要求23所述的方法,其中在步骤(b)之后发送新数据流部分。
45.一种数据叠接的数据流组合,包括按照权利要求23的方法叠接在一起的旧数据流和新数据流。
46.一种计算机可读的存储介质,用于存储程序代码,以便使计算机执行下述步骤(a)确定旧数据流内的叠接出点;(b)确定新数据流内的叠接入点;以及(c)确定新数据流的实时传输起始时间。
47.根据权利要求46所述的计算机可读的存储介质,其中在步骤(a)之前进行确定要和另一个数据流对同时叠接的新数据流对;以及启动程序代码,以便叠接所述新数据流对。
48.根据权利要求46所述的计算机可读的存储介质,其中在步骤(a)之前进行产生至少一个数据存储结构,用于存储所述数据流部分;以及在所述至少一个数据存储结构中存储所述数据流部分。
49.根据权利要求48所述的计算机可读的存储介质,其中所述至少一个数据存储结构位于主处理系统的存储器中。
50.一种用于叠接包括旧数据流和新数据流的数字编码的数据流的方法,包括(a)接收一个表示要在其中确定叠接出点的旧数据流部分的用户可选择的参数;(b)分配用于存储旧数据流部分和新数据流部分的叠接缓冲器;(c)把旧数据流部分送到所述叠接缓冲器;(d)确定所述叠接出点;(e)把新的数据流送到所述叠接缓冲器;(f)确定新数据流部分内叠接入点,并且如果新数据流部分的起始帧依赖于新数据流部分前面的帧,则修正新数据流部分,以消除所述的依赖性;(g)如果在传输时,译码器缓冲器会在所述缓冲器最后接收旧数据流部分以后开始接收新数据流,则使所述新数据流和所述最后的接收对齐,以及(h)如果在传输时,译码器缓冲器在所述缓冲器最后接收旧数据流部分之前开始接收新数据流,则使所述新数据流和所述最后的接收对齐。
51.根据权利要求50所述的方法,其中所述步骤(f)的依赖性是一个打开的GOP,并且其中所述的修正关闭这个打开的图像组(“GOP”)。
52.根据权利要求50所述的方法,还包括(j)检查所述译码器缓冲器的溢出;以及(k)如果发现溢出,则消除所述溢出。
53.一种用于叠接包括旧数据流和新数据流的数字编码的数据流的叠接器,包括(a)用于按照旧数据流的叠接出点和新数据流的叠接入点来确定新数据流的实时传输开始时间的装置;以及(b)用于按照所述新数据流实时传输时间来对准新数据流和旧数据流的装置。
54.一种用于准备供叠接使用的数字编码的数据流的方法,包括(a)确定新数据流的叠接入点;以及(b)如果新数据流包括一个初始打开的GOP,则关闭新数据流的初始打开的图像组(“GOP”)。
55.一种用于叠接包括旧数据流和新数据流的数字编码的数据流的叠接器,包括(a)用于确定新数据流的叠接入点的装置;以及(b)如果新数据流包括一个打开的GOP,则关闭新数据流的打开的图像组(“GOP”)的装置。
56.根据权利要求50所述的方法,其中所述叠接出点在步骤(a)中按照一个在插入方式选择和只叠接方式选择之间的用户选择进行确定。
57.根据权利要求56所述的方法,其中所述的叠接出点在紧接一个序列的头部的前方被确定。
58.根据权利要求56所述的方法,其中叠接出点在紧接第一次出现的图像组(“GOP”)头部、I帧和P帧、的前方被确定。
59.根据权利要求50所述的方法,其中所述确定一个叠接入点包括查找用于新数据流的一帧的译码时间标记(“DTS”),所述的一帧被包括在新数据流的图像组(“GOP”)内;查找用于所述帧的相应的当前的时间标记;以及如果所述帧不是I帧,则关闭所述GOP。
60.根据权利要求59所述的方法,其中所述帧是新数据流的初始帧。
61.根据权利要求59所述的方法,其中查找所述DTS包括分析新数据流的第一部分以便得到第一序列头部,然后再分析所述第一部分以便得到在第一帧头部前面的最后的DTS。
62.一种用于确保编码数据流部分的初始帧可以被独立译码的方法,包括(a)确定在所述部分内的可独立译码的帧;(b)使所述部分的播放从所述可独立译码的帧开始;以及(c)修正所述部分的排序参数,使得接收译码器可译码作为所述部分的第一帧的所述可独立译码的帧。
63.根据权利要求62所述的方法,其中步骤(b)通过删除在所述可独立译码的帧的前方的所述部分内的帧来实现。
64.一种用于关闭一个数字编码的数据流的打开GOP的方法,所述GOP包括多个帧,包括(a)确定所述GOP内的第一个I帧;(b)确定所述GOP内的在所述I帧前方的所有所述帧中的最大的DTS;(c)删除在所述I帧前方的所述GOP内的所有的帧;(d)修正在所述GOP内的至少一个剩余帧的时间基准;以及(e)用步骤(b)的所述最大的DTS代替所述I帧的DTS。
65.根据权利要求62所述的方法,其中修正步骤(d)包括用相应地增加在步骤(c)删除的帧的时间基准值来代替增加所述GOP内的剩余帧的时间基准值。
66.一种用于对齐数字编码的旧数据流的叠接出部分和数字编码的新数据流的叠接入部分的方法,包括求取新数据流的实时传输时间。
67.根据权利要求66所述的方法,其中所述求取步骤包括(a)确定所述新数据流的第一包的程序时钟基准(“PCR”);(b)如果所述新数据流被传输的话,则确定一个在所述新数据流的第一序列头部的传输和所述新数据流的第一帧的第一译码时间标记(“DTS”)之间的时间差;(c)确定连续的DTS,作为所述第一DTS和帧间延迟之和;以及(d)确定所述新数据流实时传输时间,作为一个在所述连续的DTS和所述时间差之间的差。
68.根据权利要求66所述的方法,其中所述求取步骤在所述新数据流和所述旧数据流的叠接期间实时地进行。
69.根据权利要求67所述的方法,其中所述帧间延迟等于1001/30000秒。
70.一种用于对齐数字编码的旧数据流的叠接出部分和数字编码的新数据流的叠接入部分的方法,包括设置所述新数据流的接收时间的开始时刻,在此时刻,如果所述新数据流被传输,则所述新数据流将开始被译码器接收,以便和用于所述旧数据流的所述叠接出点的译码时间对齐。
71.根据权利要求70所述的方法,其中所述设置步骤包括如果在所述数据流被传输时,所述新数据流在译码器收到所有的叠接出部分之前开始被译码器接收,则设置用于所述新数据流的传输延迟参数。
72.根据权利要求71所述的方法,还包括如果所述新数据流被传输,则在所述新数据流的一个位置插入一些相应于所述延迟参数的空包,使得所述空包基本上在其它的新数据流数据之前传输。
73.根据权利要求72所述的方法,其中如果新数据流被传输的话,则所述空包数等于没有所述插入时在译码器收到所有所述叠接出部分之前应当由译码器收到的数据的包数。
74.根据权利要求70所述的方法,其中所述设置步骤包括如果所述新数据流在其被传输时,在译码器已经收到所有所述的叠接出部分之后开始被译码器接收,则设置用于所述新数据流的传输加速参数。
75.根据权利要求74所述的方法,还包括如果所述新数据流被传输的话,则从所述新数据流的第一个被传输的部分删除一些相应于所述加速参数的空包。
76.根据权利要求75所述的方法,其中所述如果新数据流被传输的话,则空包数等于没有所述删除时在译码器收到所有所述叠接出部分之后应当由译码器收到的数据的包数。
77.一种用于对齐数字编码的旧数据流的叠接出部分和数字编码的新数据流的叠接入部分的方法,所述叠接出部分和所述叠接入部分中每个部分都包括多个包,所述方法包括(a)分析所述叠接出部分以便得到要被传输的所述叠接出部分的最后包的程序时钟基准(“PCR”);(b)分析所述叠接入部分,以便得到所述新数据流的第一帧的第一序列头部和第一译码时间标记(“DTS”);(c)确定所述新数据流的连续的DTS;(d)如果步骤(a)的叠接出PCR小于步骤(c)的实时传输时间,则存储一个表示当在所述叠接入部分之前传输时,将使叠接入部分的传输在基本上和所述叠接出部分的译码时间相同的时间开始的空包总数的值;以及(e)如果步骤(a)的叠接出PCR大于步骤(c)的所述实时传输时间,则存储一个表示当从所述叠接入部分删除时,将接近一种其中叠接出部分的PCR等于实时传输时间的状态的空包总数的值。
78.一种数字编码的数据流发送器,包括用于确定数据流部分的预定的传输时间要被其加速或要被其延迟的数量的改变装置;以及用于在按照由所述改变装置确定的数量加速或延迟的传输时间传输所述数据流部分的传输装置。
79.根据权利要求78所述的装置,其中所述新数据流数据作为多个数据包被接收。
80.根据权利要求79所述的装置,其中所述的量作为一个相应于数据流数据的数据包数的时间被计算。
81.一种用于发送一种和数字编码的旧数据流叠接的数字编码的新数据流的发送机,包括一个发送器;以及一个位时钟装置,用于把所述新数据流的新数据流数据的发送时间规定在一个相应于对所述新数据流和所述旧数据流进行叠接的时间。
全文摘要
一种叠接系统包括用于把数字编码的数据流无缝地叠接在一起的叠接器。在优选实施例中,叠接器优选地分析相继的数据流数据的叠接缓冲器,以便得到叠接入点和叠接出点,如果需要,则关闭一个开始的GOP。优选的叠接器还求取新数据流的实时的PCR值,用于对齐新数据流译码/表示,并对齐新数据流开始时间。同时,叠接器优选地使用帧表来检测溢出并通过加上空包来校正这种溢出,借此延迟数据流数据的一些部分。叠接器还通过删除空包来优选地恢复数据流编码,借此加速数据流数据的一部分。在另一个优选实施例中,叠接器优选地使用位时钟定时偏移来延迟或加速数据流数据的一些部分。
文档编号H03M7/30GK1275289SQ99800710
公开日2000年11月29日 申请日期1999年4月2日 优先权日1998年4月4日
发明者希莱尔·格兹特 申请人:蔚友图形公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1