带有视频程序的传输流再分多路复用器转让专利

申请号 : CN200810005858.1

文献号 : CN101299813B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : R·格拉塔盖普W·斯莱特里R·罗比内特

申请人 : 天溪有限公司

摘要 :

一种方法和系统(30,30′,100,100′,100″,100)使用即时地输出传输包的基于描述符的系统(122,124,129-4),使用用于对来自任何异步处理(160,120,130,S2,402,S4,404)的传输包的同步接收和发送去耦合的描述符和传输包高速缓存技术(116,122,124,114),使用用于管理加扰和解扰控制字(129-9)、通过以传输包数据替换空传输包来优化传输流的带宽的描述符以及使用用于锁定多个内部基准时钟发生器(113)的技术(180),对带有视频程序的数据(TS1-TS5,TS10-TS20)进行再分多路复用。

权利要求 :

1.在通过链接由共享通信媒体互连的节点的网络中,所述节点的网络包括一个或多个节点的组,其中所述组中的每个节点能够在共享通信媒体上发送带有程序的信号,其中所发送的带有程序的信号由共享通信媒体承载到所述网络的一个或多个节点上,一种方法包括:(a)在共享通信媒体上从一个或多个节点的组中的每个节点发送一个或多个带有程序的信号,所述组中的每个节点发送相互不同的带有程序的信号,这些信号具有至少一些与其它所发送的每个带有程序的信号中承载的程序数据不同的程序数据,其中从所述组中每个节点发送的每个带有程序的信号承载到与共享通信媒体相连的每个节点;

(b)在所述网络的节点中的一个特定节点处接收来自共享通信媒体上的一个或多个所发送的带有程序的信号,所述特定节点从每个接收的带有程序的信号中选择程序数据并生成包含该选择的程序数据的输出程序信号,其中,所述输出程序信号至少部分不同于每个所接收的带有程序的信号;并且其中所述输出程序信号通过输出程序信号的接收者在所输出的程序信号中保持程序数据的接收定时;以及(c)在共享通信媒体上随时间动态地改变所述组中的节点来发送各自的带有程序的信号,以便所述组中的第一和第二节点在相互不同的时间上在共享通信媒体上发送各自的带有程序的信号。

2.如权利要求1所述的方法,其特征在于,所述特定节点能够将由所述节点之一在共享通信媒体上发送的至少一个专用的带有程序的信号中选择的程序数据与其它数据进行组合以产生用于广播发送到多个目标节点的所生成的输出信号,该其它数据并不是来自从中选择所选择的数据的专用的所发送的带有程序的信号。

3.如权利要求1所述的方法,其特征在于,所述通信媒体能够以时分多路复用方式来承载所发送的信息,所述方法进一步包括下述步骤:(d)所述组中的每个节点通过将其各自的带有程序的信号的数据与在通信媒体上发送的其它信息进行时分多路复用来发送其各自的带有程序的信号。

4.如权利要求3所述的方法,其特征在于,所述通信媒体是以包交换方式承载通信的数据的包交换通信媒体,所述方法进一步包括下述步骤:(e)所述组的每个节点以包方式来发送其各自的带有程序的信号,所述包具有分配给特定节点的目标地址;以及(f)在生成所述输出程序信号之前,所述特定节点从共享通信媒体中选择仅接收那些具有分配给该特定节点的目标地址的包。

5.如权利要求4所述的方法,其特征在于,在共享通信媒体上由所述组中的每个节点发送的包包括传输包数据,并且其中所述传输包数据本身是从具有分配给流元的包标识符的传输包中得到,其中每个传输包具有识别在各自传输包中承载的流元数据的内容的包标识符。

6.如权利要求1所述的方法,其特征在于,所述通信媒体是以包交换方式承载通信的包交换通信媒体,所述方法进一步包括下述步骤:(d)所述组的每个节点以包方式来发送其各自的带有程序的信号,所述包具有分配给特定节点的目标地址;以及(e)在生成所述输出程序信号之前,所述特定节点从共享通信媒体中选择仅接收那些具有分配给该特定节点的目标地址的包。

7.如权利要求6所述的方法,其特征在于,由所述组的每个节点在共享通信媒体上发送的包包括传输包数据,并且其中,所述传输包数据本身是从具有分配给流元的包标识符的传输包中得到,其中每个传输包具有识别在各自传输包中承载的流元数据的内容的包标识符。

8.如权利要求1所述的方法,其特征在于,进一步包括下述步骤:

(d)在共享通信媒体上从所述特定节点输出所生成的输出程序信号。

9.如权利要求8所述的方法,其特征在于,进一步包括下述步骤:

(e)在所述节点中的第二特定节点处接收来自共享通信媒体的输出程序信号;以及

(f)在所述节点中的第二特定节点处,生成第二输出程序信号,该信号包括从共享通信媒体接收的输出程序信号中的至少一部分程序数据,其中所述第二输出程序信号具有与所述特定节点在共享通信媒体上发送的所述输出程序信号至少部分不同的内容。

10.如权利要求1所述的方法,其特征在于,所述节点中的两个节点在共享通信媒体上发送相互不同的带有程序的信号,其中所述特定节点从所述两个节点发送的每个带有程序的信号中接收并选择程序数据,并且由所述特定节点生成的所述输出信号包括从所述两个节点发送的每个带有程序的信号中的程序数据。

11.一种具有通过链路由共享通信媒体内连的节点的网络,包括:

(a)共享通信媒体,能承载一个或多个带有程序的信号,其中每个所发送的带有程序的信号由共享通信媒体承载到所述网络的一个或多个节点上;

(b)用于在共享通信媒体上发送一个或多个带有程序的信号的一个或多个节点的组,所述组的每个节点用于发送相互不同的带有程序的信号,这些信号具有至少一些与其它所发送的每个带有程序的信号中承载的程序数据不同的程序数据,其中从所述组中每个节点发送的每个带有程序的信号承载到与共享通信媒体相连的每个节点;

(c)特定节点,用于接收来自共享通信媒体上的一个或多个由所述节点的组所发送的带有程序的信号,所述特定节点从每个接收的带有程序的信号中选择程序数据并生成包含该选择的程序数据的输出程序信号,其中,所述输出程序信号至少部分不同于每个所接收的带有程序的信号;并且其中所述输出程序信号通过输出程序信号的接收者在所输出的程序信号中保持程序数据的接收定时;

其中,在共享通信媒体上随时间动态地改变所述组中的发送各自的带有程序的信号的特定节点,以便所述组中的第一和第二节点在相互不同的时间上在共享通信媒体上发送各自的带有程序的信号。

12.如权利要求11所述的网络,所述特定节点能够将由所述组中的节点之一在共享通信媒体上发送的至少一个专用的带有程序的信号中选择的程序数据与其它数据进行组合以产生用于广播发送到多个目标节点的所生成的输出信号,该其它数据并不是来自从中选择所选择的数据的专用的所发送的带有程序的信号。

13.如权利要求11所述的网络,其特征在于,所述通信媒体能够以时分多路复用方式来承载所发送的信息,并且所述组中的每个节点通过将其各自的带有程序的信号的数据与在通信媒体上发送的其它信息进行时分多路复用来发送其各自的带有程序的信号。

14.如权利要求13所述的网络,其特征在于,所述通信媒体是以包交换方式承载通信的数据的包交换通信媒体,并且所述组的每个节点以包方式来发送其各自的带有程序的信号,所述包具有分配给特定节点的目标地址;以及在生成所述输出程序信号之前,所述特定节点从共享通信媒体中选择仅接收那些具有分配给该特定节点的目标地址的包。

15.如权利要求14所述的网络,其特征在于,在共享通信媒体上由所述组中的每个节点发送的包包括传输包数据,并且其中所述传输包数据本身是从具有分配给流元的包标识符的传输包中得到,其中每个传输包具有识别在各自传输包中承载的流元数据的内容的包标识符。

16.如权利要求11所述的网络,其特征在于,所述通信媒体是以包交换方式承载通信的包交换通信媒体,并且所述组的每个节点以包方式来发送其各自的带有程序的信号,所述包具有分配给该特定节点的目标地址;以及在生成所述输出程序信号之前,所述特定节点从共享通信媒体中选择仅接收那些具有分配给该特定节点的目标地址的包。

17.如权利要求16所述的网络,其特征在于,由所述组的每个节点在共享通信媒体上发送的包包括传输包数据,并且其中,所述传输包数据本身是从具有分配给流元的包标识符的传输包中得到,其中每个传输包具有识别在各自传输包中承载的流元数据的内容的包标识符。

18.如权利要求11所述的网络,其特征在于,所述特定节点在共享通信媒体上输出所生成的输出程序信号。

19.如权利要求18所述的网络,其特征在于,还包括:

第二特定节点,用于接收来自共享通信媒体的输出程序信号,并用于生成第二输出程序信号,该第二输出程序信号包括从共享通信媒体接收的输出程序信号中的至少一部分程序数据,其中所述第二输出程序信号具有与所述特定节点在共享通信媒体上发送的所述输出程序信号至少部分不同的内容。

20.如权利要求11所述的网络,其特征在于,所述组的两个节点在共享通信媒体上发送相互不同的带有程序的信号,其中所述特定节点从所述两个节点发送的每个带有程序的信号中接收并选择程序数据,并且由所述特定节点生成的所述输出信号包括从所述两个节点发送的每个带有程序的信号中的程序数据。

说明书 :

技术领域

本发明属于通信系统。尤其是,本发明属于选择性地多路复用包含一个或多个程序(诸如实时音频-视频程序)的位流。调节程序专用信息和有关其它程序的信息,从而使得可在位流的接收端对程序进行识别、提取和实时再现。

背景技术

近来,已提出了有效地压缩音频-视频程序以便存储和发送的技术。例如,见ISO\IEC IS 13818-1,2,3:信息技术-移动图像及相关的音频信息的通用编码:系统、视频和和音频(“MPEG-2”);ISO\IEC IS 11172-1,2,3:信息技术-用于高达约1.5兆位/秒的数字存储媒体的移动画面及相关视频的通用编码:系统、视频和音频(“MPEG-1”);杜比AC-3;运动JPEG等。这里,按照MPEG-2的说法,术语程序指具有公共时间基准且打算同步呈现的有关音频-视频信号的集合。
MPEG-1和MPEG-2为分层流而设。即,音频-视频程序由一个或多个经编码的位流或“流元(elementary stream)”(“ES”)构成,流元诸如经编码的视频ES和经编码的音频ES、经第二语言编码的音频ES、闭路字幕文本(closed captiontext)ES等。对每个ES,尤其是对每个音频和视频ES分开地进行编码。然后,把经编码的ES组合成为诸如程序流“PS”或传输流“TS”等系统层流。PS或TS的目的在于使得可从一程序中提取经编码的ES,分离每个ES并对其进行分开的解码,并同步地呈现经编码的ES。可把TS或PS封装在一较高的通道层中或以为前向纠错而设的存储格式来封装。
流元
通常以例如384kbps的恒定位速率对音频ES进行编码。另一方面,以可变的位速率依据MPEG-1或MPEG-2对视频ES进行编码。这意味着,每一经压缩/编码的图像的位数依图像而不同(这些图像是以恒定的速率呈现或显示的)。视频编码包含从空间上和时间上对视频图像进行编码的步骤。空间编码包括亮度和色度象素数据的离散余弦变换、量化、(曲折)扫描、游程长度编码和可变长度编码块。时间编码涉及估计宏块(例如,由亮度块和覆盖在其上的每个色度块形成的4×4阵列)的运动来识别运动矢量,对宏块进行运动补偿来形成预测误差宏块,对预测误差宏块进行空间编码以及对运动矢量进行可变长度编码。仅对一些图像(叫做I图像)进行空间编码,而对诸如P和B图像等其它图像进行空间和运动补偿编码(即,从其它图像进行时间预测)。经编码的I图像所具有的位通常比经编码的P图像的位多,经编码的P图像所具有的位通常比经编码的B图像的位多。在任一种情况下,甚至同一类型的经编码图像可能具有不同的位数。
MPEG-2限定了对经编码的视频ES的缓冲器尺寸约束。尤其是,假定解码器的缓冲器具有预定的最大存储容量。经编码的视频ES不得使解码器的缓冲器上溢(在某些情况下,不得使解码器的缓冲器下溢)。为使能对预测图像(来自预测这些预测图像的基准图像)的解码,MPEG-2具体地限定了相对于视频ES的位速率从解码器的缓冲器中除去每个图像的压缩数据的时间、图像显示速率和某些图像重新排序的约束。如果给定这些约束,则可调节(与以宏块为基础对宏块进行调节一样频繁)在压缩图像时所产生的位数,以保证视频ES不引起视频ES编码器的缓冲器下溢或上溢。
传输流
这里以TS示出本发明。为了简洁,省略对PS的讨论。然而,本领域内的技术人员应理解本发明的某些方面对PS的可应用性。
每个ES的数据形成可变长度程序流元或“PES”包(packet)。PES包包含单个ES的数据,但也可包含不止一个解码单元的数据(例如,可包含不止一个压缩图像、不止一个压缩音频帧等)。在TS的情况下,首先把PES包分成许多有效负载(payload)单元,并把它们插入固定长度(188字节长)的传输包中。每个传输包可携带单一类型的有效负载数据,例如单一ES的PES包数据。每个TS设有包括包标识符或“PID”的四字节标头。此PID类似于唯一地指示传输包的内容的标签(tag)。因而,把一个PID指派给特定程序的视频ES,把另一个不同的PID指派给特定程序的音频ES等。
相对于单个编码器系统的定时时钟对每个程序的ES进行编码。同样,依次使这些ES的解码和同步呈现相对于同一编码器系统定时时钟同步。因而,解码器必须能恢复原始的编码器系统定时时钟,以便能以及时且相互同步的方式对每个ES进行解码并呈现每个经解码的ES。为此,把系统定时时钟的时间标记(叫做程序时钟基准或“PCR”)插入选中的传输包的有效负载中(具体来说,在适应(adaption)字段中)。解码器从传输包中提取PCR并使用PCR来恢复编码器系统定时时钟。PES包可包含解码时间标记或“DTS”和/或呈现时间标记或“PTS”。DTS指示相对于所恢复的编码器系统定时时钟应对下一解码单元(即,经压缩的音频帧、经压缩的视频图像等)进行解码的时间。PTS指示相对于所恢复的编码器系统定时时钟应呈现或显示下一呈现单元(即,经解压缩的音频帧、经解压缩的图像等)的时间。
与PS不同,TS可具有携带不止一个程序的程序数据的传输包。已在相对于不同的编码器系统定时时钟的不同编码器处对每个程序进行了编码。TS使得解码器可恢复解码器想要解码的程序的专用系统定时时钟。为此,TS必须携带不同组PCR组,即其中的一组PCR用于恢复每个程序的编码器系统定时时钟。
TS还携带了传输包中的程序专用信息或(PSI)。PSI用于识别想要程序的数据或有助于程序解码的其它信息。设有程序关联表或“PAT”,在具有PID 0x0000的传输包中携带有此关联表。PAT把每个程序号与携带该程序的程序定义传输包的PID相关。程序定义:(1)指示哪些ES构成程序定义所对应的程序,(2)识别这些ES中每一个的PID,(3)指示携带该程序的PCR的传输包的PID,(4)识别携带ES专用命名控制消息(例如,解扰或解密密钥)和其它信息。总的来说,TS的所有程序定义都叫做程序映射表(PMT)。因而,解码器可从传输包中提取PAT数据并使用PAT来识别携带想要程序的程序定义的传输包的PID。然后,解码器可从传输包中提取想要的程序的程序定义数据,并识别携带构成该想要的程序的ES数据的传输包的PID以及携带PCR的传输包的PID。然后,使用所识别的这些PID,解码器可从TS的传输包中提取想要的程序的ES的ES数据及该程序的PCR。解码器从想要程序的PCR中恢复编码器系统定时时钟,并在相对于所恢复的编码器系统定时时钟的时间对ES数据进行解码并呈现。
任选地设置在TS中的其它类型信息包括命名控制消息(ECM)、命名管理消息(EMM)、有条件访问(access)表(CAT)和网络信息表(NIT)(CAT和NIT也是PSI型的)。ECM是用于控制解码器翻译ECM所属ES的能力的ES专用消息。例如,可对ES进行加扰,解扰密钥或控制字可以是ECM。把与特定ES相关的ECM置于它们自己的传输包中,并标上独有的PID。另一方面,EMM是用于控制一组解码器(这组解码器位于一个叫做“有条件访问系统”的系统中)翻译一部分TS的能力的全系统消息。把EMM置于它们自己的传输包中,并标上对EMM所属的有条件访问系统所独有的PID。为使解码器对有条件访问系统(解码器是该系统的一部分,即该解码器是该组解码器的一个成员)的EMM定位,每当存在EMM时就设置一CAT。NIT保存了各种网络参数。例如,如果在解码器接收器可调谐到的不同载波频率上调制多个TS,则NIT可指示在哪个载波频率(携带TS)调制每个程序。
与视频ES相类似的,MPEG-2要求,由具有预定尺寸来存储程序ES和PSI数据的TS缓冲器的解码器对TS进行解码。MPEG-2还限定了数据流入和流出这种缓冲器的速率。最重要的是,MPEG-2要求,TS不能上溢或下溢TS缓冲器。
为了进一步防止缓冲器上溢或下溢,MPEG-2要求,从编码器传输到解码器的数据需经历恒定的端-端延迟,并保持适当的程序和ES位速率。此外,为了保证对ES进行及时地解码和呈现,TS中PCR的相对到达时间不应与此PCR所指示的相对时间改变得太多。换句话说,每个PCR指示当接收到包含PCR一部分的最后一个字节时系统定时时钟(在解码器处所恢复的)应具有的时间。因而,下一个PCR的接收时间应与每个PCR所指示的时间相关。
再分多路复用
通常,想要对TS进行“再分多路复用”。再分多路复用涉及选择性地修改TS的内容,诸如增加TS的传输包、从TS中删除传输包、重新排列TS中传输包的顺序和/或修改包含在传输包中的数据。例如,有时想要把包含第一程序的传输包加到包含其它程序的TS中。这种操作涉及的步骤比简单地增加第一程序的传输包要多。至少,必须修改诸如PAT和PMT等PSI,从而它能正确地引用(reference)TS的内容。然而,必须进一步修改TS,以保持其中所携带的每个程序的端-端延迟。具体来说,不可以改变每个程序的位速率,以防止TS和视频解码器的缓冲器下溢和上溢。此外,必须除去引入TS的PC的任何时间的未对准,这些未对准是改变带有(bearing)同一程序的PCR的相继传输包的相对接收间隔/速率的结果。
已有技术已提出了一种用于MPEG-2TS的再分多路复用器。所提出的再分多路复用器是一块复杂的专用硬件,它在接收每个输入的待多路复用TS的点到输出最后一个经再分多路复用的输出TS的点之间提供完全的同步——单个系统定时时钟控制传输包的接收、缓冲、修改、传送、重新装配和输出并使这些操作同步。虽然这种再分多路复用器能对TS进行再分多路复用,但再分多路复用器的体系结构是复杂的,而且需要统一同步的专用平台。
本发明的一个目的是提供一种灵活的再分多路复用体系结构,例如它可存在于可能异步的任何平台上。
对单个程序的视频和音频进行压缩并产生带有单个程序的TS的程序编码器是公知的。如上所述,MPEG-2给任何时刻可在视频解码器缓冲器中存在的TS的位速率和位数加上了非常强的约束。难于对ES尤其是视频ES进行编码并保证位速率在所有的时刻保持完全恒定。再者,必须把某些开销带宽分配给每个程序,以保证不因ES编码器产生意外的过量编码信息而省略ES数据。另一方面,程序编码器偶尔没有在特定传输包时隙输出任何经编码的程序数据。这可能因为程序编码器为防止解码器缓冲器的上溢而减少在该时刻待输出的位数而发生。或者,这可能因为程序编码器未曾预料到对ES进行编码需要较长的时间因而在该瞬时没有可获得的数据而发生。为了保持TS的位速率并防止TS解码器缓冲器的下溢,把空的传输包插入传输包时隙中。
在待再分多路复用的TS中存在空的传输包通常是必须简单接受的一个约束。本发明的一个目的是优化包含空传输包的TS的带宽。
有时,经由异步通信链路来传送TS或ES数据。本发明的一个目的是对此未定时或异步传送的数据进行“重新定时”。本发明的还有一个目的是通过对这些传输包的发送进行定时而把从这些异步通信链路发送的传输包的抖动(jitter)减到最少。
本发明的还有一个目的是使用户可动态地(即,实时地)改变经再分多路复用的内容成为再分多路复用TS,而不停止输出的再分多路复用TS中的传输包的流动。
本发明的另一个目的是在一网络上分布再分多路复用功能。例如,一个目的是把一个或多个TS或ES源置于可能异步的通信网络(诸如以太网LAN)的任意节点处以及把再分多路复用器置于这种网络的另一个节点处。

发明内容

依据本发明实现了这些和其它目的。本发明的一个示例应用是对符合MPEG-2的一个或多个传输流(TS)进行再分多路复用。TS是包含一个或多个经压缩/编码的音频-视频程序的数据的位流。每个TS形成固定长度的传输包的序列。每个经压缩的传输包括诸如数字视频信号和/或数字音频信号的一个或多个经压缩的流元(ES)的数据。传输包还携带了每个程序的程序时钟基准(PCR),这些PCR是使各个程序的解码和呈现被同步的编码器系统定时时钟的时间标记。每个程序具有预定的位速率,且将在具有预定尺寸的TS缓冲器和预定解码器缓冲器的解码器处被解码。以此方式对每个程序进行编码,从而防止这些缓冲器的上溢和下溢。示例地,在TS的选中传输包中还携带了有助于TS的解码的程序专用信息(PSI)。
依据一个实施例,再分多路复用器节点设有一个或多个适配器,每个适配器包括一高速缓冲存储器、连到该高速缓冲存储器的数据链路控制电路和连到该高速缓冲存储器的直接存储器访问电路。适配器是具有特殊特性的同步接口。数据链路控制电路具有用于接收传输流的输入端口和用于发送传输流的输出端口。直接存储器访问电路可连到具有可变端-端通信延迟的异步通信链路(诸如再分多路复用器节点的一条总线)。使用异步通信链路,直接存储器访问电路可访问再分多路复用器节点的存储器。存储器可存储一个或多个描述符存储单元(storage location)的队列,诸如指派给输入端口的一个队列和指派给输出端口的一个队列。存储器还可在传输包存储单元中存储传输包,对于这些单元描述符存储在每个队列点的描述符存储单元中。示例地,再分多路复用器节点包括连到总线的处理器,该处理器用于处理传输包和描述符。
当使用适配器来输入传输流时,数据链路控制电路把对输入端口所分配的队列中的描述符存储单元序列之一中未使用的描述符分配给待保留的每个接收到的传输包。所分配的描述符位于高速缓冲存储器已从中获得控制的描述符存储单元。数据链路控制电路把每个保留的传输包存储在高速缓冲存储器已从中获得控制并由所分配的描述符所指向的传输包存储单元处。直接存储器访问电路获得对存储器中该队列的一个或多个未使用描述符存储单元(位于高速缓冲存储器已从中获得控制的最后一个描述符存储单元后)的控制。直接存储器访问电路还获得对一个或多个描述符存储单元中的这些描述符所指向的存储器中的传输包单元的控制。
在使用适配器来输出传输包时,数据链路控制电路从高速缓冲存储器检索(retrieve)指派给输出端口的队列的描述符存储单元序列中的每个描述符。从序列的开始依次检索描述符。数据链路控制电路还从高速缓冲存储器检索存储在检索的描述符所指向的传输包存储单元中的传输包。数据链路控制电路以从输出端口输出的传输流的独有时隙输出每个检索的传输包(即,每时隙一个传输包)。直接存储器访问电路从存储器中获得指派给存储单元(位于其中存储有该序列的最后一个高速缓存描述符的描述符存储单元后)的输出端口的队列的描述符,以存储在高速缓冲存储器中。直接存储器访问电路还获得存储在所获得的描述符指向的传输包单元中的每个传输包。
依据另一个实施例,(还)使用每个描述符来记录指示在输入端口处何时接收到传输包接收时间标记,或指示将从输出端口发送初始包的时间的派送时间标记。在输入端口接收到传输包的情况下,数据链路控制电路把接收时间标记记录在分配给每个接收到并保留的传输包的描述符中,以指示接收到该传输包的时间。按接收的顺序把描述符保存在接收队列中。在从输出端口输出传输包的情况下,数据链路控制电路从发送队列中依次检索每个描述符及每个检索的描述符指向的传输包。在相应于记录在每个检索的描述符中的派送时间的时刻,数据链路控制电路以相应于记录在检索的描述符中的派送时间的输出传输流的时隙来发送每个检索的描述符指向的被检索的传输包。
示例地,再分多路复用器节点处理器检查接收队列中的每个描述符以及包含指向待输出传输包的描述符的其它队列。处理器分配与输出端口(从中将发送由每个经检查的描述符(如果有的话)所指向的传输包)有关的发送队列的描述符。处理器依据例如描述符指向的传输包的接收时间及传输包的接收和输出之间的内部缓冲器延迟,把派送时间指派给对发送队列所分配的描述符。此外,处理器还按派送时间的升序对发送队列的描述符进行排序。
还提供了独有的PCR归一化处理。处理器调度将在相应于再分多路复用器节点中的预定延迟的特定派送时间处以某一时隙输出的每个传输包。如果被调度的传输包包含PCR,则根据本地基准时钟相对于从中产生PCR的系统定时时钟的程序的偏移(drift)(如果存在任何偏移)来调节PCR。数据链路控制电路(发送带有此被调节PCR的传输包)进一步根据传输包的调度派送时间与相对于外部时钟发生该时隙的实际时间之差来调节每个经调节的PCR时间标记。
示例地,如果要以同一时隙输出不止一个传输包,则以分开的连续时隙来输出每个这样的传输包。处理器计算传输包中每个PCR的估计调节,此传输包被调度到以与使用预定延迟所确定的时隙不同的时隙输出。所估计的调节以处理器实际调度带有待输出PCR的传输包的时隙与预定延迟所确定的时隙之间的输出时间差为基础。处理器依据此估计的调节来调节PCR。
依据一个实施例,描述符还用于控制对传输包的加扰或解扰。在解扰的情况下,处理器定义了将在每个传输包上所进行的一个或多个处理步骤的序列并对该序列内的解扰处理排序。处理器把与传输包的内容有关的控制字信息存入所分配的描述符的控制字信息存储单元中。数据链路控制电路把描述符分配给每个接收到的并保留的传输包,每个这样的描述符包括一个或多个处理指示及控制字信息的存储单元。数据链路控制电路设定所分配的描述符的一个或多个处理指示,以指示可在每个所分配的描述符上执行的序列的下一处理步骤。提供了依次访问每个所分配的描述符的解扰器。如果把访问到的描述符的处理指示设定为指示可对访问到的描述符(和访问到的描述符所指向的传输包)进行解扰处理,则解扰器对此描述符及其指向的传输包进行处理。具体来说,如果描述符指向一待解扰的传输包,则解扰器使用访问到的描述符中的控制字信息对传输包进行解扰。
解扰器可位于(接收)适配器上,在此情况下,解扰器的处理发生在数据链路控制电路的处理(例如,描述符分配、接收时间记录等)后,但发生在直接存储器访问电路的处理(例如,传送到存储器)前。或者,解扰器可以是连到异步通信接口的分开的器件,在此情况下,解扰器的处理发生在直接存储器访问电路的处理后,但发生在处理器的处理(例如,估计的离开时间计算、PID重新映射等)前。在任一种情况下,控制字信息都是处理器所保存的PID可索引控制字表的基址。
在加扰的情况下,处理器限定了将在每个传输包上执行的一个或多个处理步骤的序列,并对该序列内的加扰处理进行排序。处理器把发送队列的发送描述符分配给每个待发送的传输包,并把与传输包有关的控制字信息存入所分配的描述符中的选中描述符的控制字信息存储单元中。然后,处理器设定描述符的一个或多个处理指示,以指示可对每个所分配的描述符进行的序列中的下一处理步骤。提供了依次访问每个所分配的描述符的加扰器。加扰器处理每个访问到的描述符及访问到的描述符指向的传输包,但此处理仅在把访问到的描述符的处理指示设定为指示可对访问到的描述符(和访问到的描述符所指向的传输包)进行加扰处理时进行。具体来说,如果访问到的描述符指向待加扰的传输包,则加扰器使用访问到的描述符中的控制字信息对访问到的描述符所指向的传输包进行加扰。
加扰器可位于(发送)适配器上,在此情况下,加扰器的处理发生在直接存储器访问电路的处理(例如,从存储器传送到高速缓冲存储器等)后,但发生在数据链路控制电路的处理(例如,以正确的时隙输出、最后一个PCR校正等)前。或者,加扰器可以是连到异步通信接口的分开的器件,在此情况下,解扰器的处理发生在处理器的处理(例如,发送队列描述符分配、派送时间指派、PCR校正等)后,但发生在直接存储器访问电路的处理前。如同解扰,控制字信息可以是处理器所保存的PID可索引控制字表的基址。然而,控制字信息最好是用来对传输包进行加扰的控制字本身。
此外,依据一个实施例,提供了对带有经由异步通信链路接收到的数据的视频程序进行重新定时的方法。异步通信接口(例如,以太网接口、ATM接口等)连到再分多路复用器节点处理器(例如,经由总线),以接收来自具有变化的端-端发送延迟的通信链路的带有视频程序的位流。该处理器根据接收到的位流中所携带的程序的多个时间标记来确定携带有接收到的位流的同一程序的数据的一个或多个接收到的包中每个包应在输出的TS中出现的时间。诸如发送适配器等同步接口在依据所确定时间的时间处,选择性地发送输出的TS(具有恒定的端-端延迟)中携带有被接收数据的选中传输包。
示例地,再分多路复用器节点存储器存储包含从接收队列中接收到的位流中接收到的数据的包。处理器识别包含存储在接收队列中的程序的数据的每个包,此识别是在包含该程序的连续时间标记的第一和第二特定包之间进行。处理器根据此第一和第二时间标记之差来定该程序的(传输)包速率。处理器把指派给第一特定包的发送时间及(传输)包速率与所识别的包同第一包的偏差之积的总和作为发送时间指派给每个所识别的包。
依据另一个实施例,提供了依据变化的用户指定动态而无缝地改变再分多路复用的方法。诸如第一适配器等接口依据对再分多路复用的TS内容的初始用户指定从TS中选择性地仅提取一些特定的传输包。诸如第二适配器等第二接口依据对再分多路复用的TS内容的初始用户指定,把从所提取的传输包和包含PSI的传输包(如果有的话)中选中的那些传输包重新装配成输出的再分多路复用的TS。此外,第二适配器输出重新装配的经再分多路复用的TS作为连续位流。处理器动态地接收对再分多路复用的TS内容的一个或多个新的用户指定,它们指定了以下的一个或多个:(I)待提取的不同传输包和/或(II)待重新装配的不同传输包,与此同时第一和第二适配器提取传输包进行重新装配,并输出再分多路复用的TS。与之响应处理器使第一和第二适配器动态地停止依据初始用户指定对传输包所进行的提取或重新装配,且动态地开始依据新的用户指定对传输包所进行的提取或重新装配,而不在所输出的再分多路复用的传输流中引入不连续。例如,处理器可按每个新的用户指定而产生引用不同传输包的替代PSI,以由第二适配器进行重新装配。
示例地,可使用此无缝再分多路复用的改变技术来自动地保证在再分多路复用的TS总是输出每个选中程序的正确的ES信息,尽管构成该程序的ES中可能有任何变化。可设置产生用户指定的控制器,该用户指定指示将在输出TS中输出的输入TS的一个或多个程序。第一适配器连续地捕获-输入TS的程序定义。处理器从俘获的程序定义(这些流元构成每个程序)中进行连续地确定。第二适配器在输出的TS中输出传输包,每个传输包包含每个ES(这些ES被确定为构成由用户指定要输出的每个程序)的ES数据,而不在输出的TS中引入不连续。因而,即使构成每个程序的ES的PID改变(数目或值),但在输出的TS中总是输出每个程序的正确的完整ES数据。
依据再一个实施例,提供了一种优化其中插入空传输包的TS的端口的方法。第一接口(适配器)以预定位速率接收TS,该TS包括带有可变压缩程序数据的传输包以及一个或多个空的传输包。当不能获得插入在各个传输包时隙处接收到的TS中的带有压缩程序数据的传输包时,把每个空的传输包插入接收到的TS的一个时隙中。处理器以其它带有待再分多路复用数据的传输包来替换一个或多个空的传输包。带有这种替换数据的传输包可包含PSI数据或者甚至突发(bursty)事务处理(transactional)数据,这些突发事务处理数据对以连续方式呈现信息没有位速率或发送等待时间(latency)的要求。
示例地,处理器从接收到的TS中提取选中的一些传输包,并丢弃每个未选中传输包(包括每个空传输包)。由处理器和第一适配器把选中的传输包存储在存储器中。如上所述,处理器调度每个所存储的传输包,从而在以接收到每个所存储的传输包的时间为依据的时间在输出的传输流中输出。第二接口(适配器)以相应于此调度的时隙输出每个所存储的传输包。如果没有要调度在输出TS的时隙之一处输出的传输包,则第二适配器输出空传输包。然而,与每个输入的TS相比,空的传输包在输出的TS中占据较少的带宽。
依据附加的实施例,提供了一种在异步通信链路上及时地输出带有压缩程序数据的位流的方法。同步接口(适配器)提供了包含传输包的位流。处理器把派送时间指派给一个或多个选中传输包中的每一个,以保持一程序(每个被选中的传输包携带有该程序的数据)的预定位流,并引起每个选中传输包的平均等待时间。在以每个派送时间为依据的时间,异步通信接口接收一个或多个命令,并通过在近似于这些派送时间的时候发送相应的选中传输包作为响应,从而把选中传输包的抖动减到最少。
示例地,如下产生命令。处理器对包含以上派送时间的发送描述符进行排队而成为发送队列。处理器指派再分多路复用器节点的适配器代表异步接口服务于发送队列。当描述符的派送时间等于适配器处的基准时钟的时间时,所指派的适配器的数据链路控制电路使得每个命令发出。
可使用这些技术中的各种技术来使能网络分布式再分多路复用。网络设有一个或多个通信链路和通过通信链路互连成一通信网络的多个节点。目的地节点经由通信链路之一接收包含一个或多个程序的数据的第一位流,第一位流的各部分具有一个或多个预定的位速率。目的地节点可以是如上所述的再分多路复用器节点,在任何情况下它都包括处理器。处理器至少选择接收到的第一位流的一部分用以发送,并调度第一位流的选中部分的发送,从而以所述第一位流的选中部分的预定速率为依据的速率在TS中输出第一位流的选中部分。
或者,通信链路集中地形成共享通信媒体。把这些节点分割成用于把一个或多个位流发送到此共享通信媒体上的第一组一个或多个节点以及用于接收从共享通信媒体发送的位流的第二组一个或多个节点。第二组节点选择所发送的位流的部分并发送作为包含选中部分的位流的一个或多个再分多路复用的TS。每个所发送的再分多路复用的TS不同于发送位流中接收到的位流。设置了选择第一和第二组节点并使选中的节点依据多个不同的信号流模式之一经由共享通信媒体传送位流,这些信号流模式包括不同于节点至共享通信媒体的拓扑连接的至少一个信号流模式。
最后,还提供了一种使得在再分多路复用系统中接收或发送传输包的多个电路中的每一个处的基准时钟同步的方法。接收传输包的每个电路处的基准时钟指示在该处接收到每个传输包的时间。发送传输包的每个电路处的基准时钟指示何时从该处发送每个传输包。指定使这些基准时钟相互同步的主基准时钟。周期性地获得主基准时钟的当前时间。依据其它基准时钟处的各个时间与主基准时钟的当前时间之差来相互调节基准时钟,从而使各基准时钟的时间与主基准时钟的相应时间匹配。
因而,依据本发明,提供了一种更灵活的再分多路复用系统。此增加的灵活性增强了再分多路复用也降低了整个系统的成本。
附图概述
图1示出依据本发明一个实施例的再分多路复用环境。
图2示出依据本发明一个实施例的使用异步平台的再分多路复用器节点。
图3示出一流程图,该流程图示意地示出依据本发明的一个实施例,如何根据传输包在再分多路复用节点中的PID对传输包进行处理。
图4示出依据本发明一个实施例的网络分布式再分多路复用器。
本发明的较佳实施方式
为了清楚,把对本发明的描述分成几部分。
再分多路复用器环境和概述
图1示出依据本发明一个实施例的基本再分多路复用环境10。控制器20使用例如任何远程过程调用(RPC)协议向再分多路复用器30提供指令。可使用的RPC的例子包括数字分布式计算环境协议(DEC)和开放式网络计算协议(ONC)。DEC和ONC是利用协议堆栈的网络协议,这些协议堆栈使客户进程(client process)可执行位于同一平台(例如,控制器20)或另一远程平台(例如,在再分多路复用器30中)的子程序。换句话说,客户进程可通过简单的子程序调用来发出控制指令。DCE或ONC进程向再分多路复用器30发出适当的信号和命令以实行想要的控制。
控制器20可以是诸如PC兼容计算机等计算机形式。控制器20包括连到总线24的诸如一个或多个IntelTM Pentium IITM集成电路等处理器21、主存储器23、磁盘存储器25、监视器和键盘/鼠标器27以及一个或多个I/O器件29。I/O器件29是依据如何实现再分多路复用器30而与再分多路复用器30进行通信的任何适当的I/O器件29。这种I/O器件29的例子包括RS-422接口、以太网接口、调制解调器和USB接口。
以一个或多个网络连接的“黑盒”来实现再分多路复用器30。在以下所述的示例再分多路复用器的体系结构中,再分多路复用器30的黑盒可以是通过诸如以太网、ATM或DS3通信链路等通信链路互连的独立PC兼容计算机。例如,再分多路复用器30包括一个或多个黑盒,每个黑盒是通过以太网网络(10BASE-T、100 BASE-T或1000 BASE-T等)互连的独立PC兼容计算机。
如图所示,在再分多路复用器30处接收到一个或多个待再分多路复用的TS,即TS1、TS2和TS3。由于再分多路复用器30的再分多路复用操作的结果,从再分多路复用器30输出一个或多个TS,即TS4和TS5。再分多路复用的TS(示例的TS4和TS5)包括来自输入TS(TS1、TS2和TS3)的至少一些信息(至少一个传输包)。还设置至少一个存储器件40,例如磁盘存储器或服务器。存储器件40可产生作为输入的待再分多路复用的信息的TS或数据,以经再分多路复用器30再分多路复用成为输出的TS(TS4或TS5)。同样,存储器件40可存储再分多路复用器30所产生的TS信息或数据,诸如从输入的TS(TS1、TS2或TS3)中提取或复制的传输包,在再分多路复用器30处接收到的其它信息或由再分多路复用器30所产生的信息。
还示出一个或多个数据注入源50和一个或多个数据提取目的地60。这些源50和目的地60本身可以实现为PC兼容计算机。然而,源50还可以是诸如摄像机、视频磁带播放装置、通信解调器/接收机等器件,目的地60可以是显示接收器、视频磁带记录装置、通信调制器/发射机等器件。数据注入源50把TS、ES或其它数据提供给再分多路复用器30,用以例如把它们再分多路复用成为输出的TS,TS4和/或TS5。同样,数据提取目的地60接收来自再分多路复用器30的TS、ES或其它数据,例如从输入TS(TS1、TS2和/或TS3)中所提取的。例如,可设置一用于产生每个输入的待再分多路复用的TS(TS1、TS2和TS3)的数据注入源50,可设置一用于接收每个输出的经再分多路复用的TS(TS4和TS5)的数据提取目的地60。
可把环境10看作一网络。在此情况下,可把环境10中的控制器20、每个数据注入源50、存储器件40、数据提取目的地60和再分多路复用器30的每个“网络的黑盒”看作该通信网络的一个节点。每个节点可由同步或异步通信链路连接。此外,把器件20、40、50和60从再分多路复用器30分离仅仅是为了方便。在另一个实施例中,器件20、40、50和60是再分多路复用器30的一部分。
再分多路复用器的体系结构
图2示出再分多路复用器30的网络黑盒或节点100(以下叫做“再分多路复用器节点”100)之一的基本体系结构。图2所示的特定再分多路复用器节点100可用作整个再分多路复用器30。或者,从以下讨论中很明显的是,再分多路复用器节点100的不同部分可分布于分开的节点中,这些节点通过同步或异步通信链路相互互连。在又一个实施例中,具有与图2所示相同的体系结构的多个再分多路复用器节点100经由同步或异步通信链路相互互连,且可被编程为一致地行动。在这里把后两个实施例叫做网络分布式再分多路复用器。
示例地,再分多路复用器节点100是Windows NTTM兼容的PC计算机平台。再分多路复用器节点100包括一个或多个适配器110。每个适配器110连到总线130,示例的总线是PCI兼容总线。主存储器120也连到总线130。诸如IntelTMPentium IITM集成电路等处理器也连到总线130。应注意,图2所示的单个总线体系结构可以是更复杂的多总线结构的简化表示。此外,可存在不止一个处理器160,这些处理器在进行以下所述的处理功能时相互协作。
示例地,设有两个接口140和150。这两个接口140和150连到总线130,虽然事实上它们也可直接连到I/O扩充总线(未示出),继而此I/O扩充总线经由I/O桥路(未示出)连到总线130。示例地,接口140是诸如以太网接口等异步接口。这意味着,不保证经由接口140发送的数据准确地在任何时间出现,该数据可能经历可变端-端延迟。另一方面,接口150是诸如T1接口等异步接口。使得在连到接口150的通信链路上的通信与接口150处所保持的时钟信号同步。在特定时间经由接口150发送数据,该数据经历恒定的端-端延迟。
图2还示出,再分多路复用器节点100可具有任选的加扰器/解扰器(它们可实现为加密器/解密器)170和/或全球定位卫星(GPS)接收机180。加扰器/解扰器170用于对传输包中的数据进行加扰或解扰。GPS接收机180用于接收统一时钟信号,以使再分多路复用器节点100同步。以下更详细地描述这些器件的目的和操作。
每个适配器110是专门类型的同步接口。每个适配器110具有一个或多个数据链路控制电路112、基准时钟发生器113、一个或多个描述符和传输包高速缓冲存储器114、任选的加扰器/解扰器115和一个或多个DMA控制电路116。这些电路可以是一个或多个处理器的一部分。最好,它们使用有限状态自动机即在一个或多个ASIC或门阵列(PGA、FPGA等)中实现。以下将描述这些电路中每一个电路的目的。
示例地,基准时钟发生器113是以27MHZ计数的32位翻转计数器。可在数据链路控制电路112处接收到基准时钟发生器113所产生的系统时间。此外,处理器160可如下直接访问基准时钟发生器113。处理器160可从基准时钟发生器113的I/O寄存器读取当前系统时间。处理器160可把特定值装入基准时钟发生器113的同一I/O寄存器。最后,处理器160可在调节寄存器中设定基准时钟发生器的计数频率,从而基准时钟发生器113以特定范围内的频率进行计数。
高速缓冲存储器114的目的是暂时存储待输出的下一个或多个来自适配器110的待命输出的传输包或最近在适配器110处接收到的最后一个或多个传输包。使用高速缓冲存储器114使得可以最少的等待时间(最显著的是不发生通过总线130的传送等待时间)接收和存储或检索和输出传输包。高速缓冲存储器114还存储每个传输包的描述符数据。以下更详细地描述这些描述符的目的和结构。此外,高速缓冲存储器114存储在正常操作下可由处理器160下载和修改的过滤器映射(filter map)。示例地,高速缓冲存储器114还可存储入以下更详细描述的用于加扰或解扰的控制字信息。除了处理器160以外,高速缓冲存储器114还被数据链路控制电路112、DMA控制电路116和任选的加扰器/解扰器115访问。
众所周知,高速缓冲存储器114可拥有主存储器120中数据的全真或修改的拷贝。同样,在需要时,高速缓冲存储器114应获得主存储器中任何数据的修改拷贝而不是其拥有的旧拷贝。主存储器120也是如此。利用“所有权协议”,从而只有单个器件(诸如高速缓冲存储器114或主存储器120)才有许可在任一时刻修改数据存储单元的内容。这里,当高速缓冲器存储器具有修改这些存储单元内容的专有控制时就说成高速缓冲存储器114获得对数据存储单元的控制。通常,高速缓冲存储器114获得对存储单元以及存储在其中的数据的全真复制拷贝的控制,修改其拷贝,但推迟把数据的修改写到主存储器直到以后。这意味着,当高速缓冲存储器把数据写到主存储器中的存储单元时,高速缓冲存储器114放弃对主存储器120的控制。
DMA控制电路116用于在主存储器120与高速缓冲存储器114之间传送传输包数据和描述符。DMA控制电路116可把足够数目的传输包(及其描述符)保存在高速缓冲存储器114中,以使数据链路控制电路12连续地(即,以连续的时隙)输出在输出TS中的传输包。DMA控制电路116还可获得对高速缓冲存储器114中的足够数目的描述符存储单元及其指向的包存储单元的控制。DMA控制电路116获得对高速缓冲存储器114的这些描述符和传输包存储单元的控制。这使得可在接收到入局的传输包(即,从连续时隙)时把它们连续地分配给描述符和传输包存储单元。
数据链路控制电路112用于接收来自入局TS的传输包或在出局TS上发送传输包。在接收到传输包时,数据链路控制电路112仅滤出和保留从入局TS中接收到的在可下载过滤器映射(由处理器160所提供)中所指定的选中传输包。数据链路控制电路112丢弃每个其它的传输包。数据链路控制电路112把下一未使用描述符分配给接收到的传输包,并把接收到的传输包存储在高速缓冲存储器114中,以传送到所分配的描述符指向的传输包存储单元。此外,数据链路控制电路112从基准时钟发生器113中获得相应于传输包的接收时间的基准时间。数据链路控制电路112把此时间作为接收时间标记记录在指向其中存储有传输包的传输包存储单元的描述符中。
在发送包时,数据链路控制电路112从高速缓冲存储器114检索出局传输包的描述符,并以在基准时钟发生器113近似等于各描述符中所指示的派送时间时发生的出局TS的时隙发送相应的传输包。此外,数据链路控制电路112在必要时在输出的传输包中进行任何最终的PCR校正,从而传输包中所指示的PCR与出局TS中的传输包的精确对准同步。
处理器160用于接收来自外部控制器20(图1)的控制指令,并把命令发送到适配器110和接口140和150以控制它们。与之响应,对于这些指令,处理器160产生PID过滤器映射并把它下载到高速缓冲存储器114,或者修改已存在于高速缓冲存储器114中的PID过滤器,以便使数据链路控制电路112在选择性地提取想要的传输包时使用。此外,处理器160产生用于处理每个接收到的传输包(根据其PID)的中断接收处理程序。接收中断处理程序可使处理器160重新映射传输包的PID、估计传输包的离开时间、提取传输包中的信息以进行进一步处理等。此外,处理器160制定和执行发送中断程序,该程序使处理器对传输包进行适当地排序以输出,对每个传输包产生离开时间,粗略地校正传输包中的PCR以及把PSI插入输出的TS中。处理器160还可有助于以下更详细所述进行加扰和解扰。
主存储器120用于存储传输包及与其相关的描述符。如下组织主存储器120的存储单元。设置缓冲器122,它包含用作传输包池的多个可再使用的传输包存储单元。把描述符存储单元129组织成为多个环124。每个环124是一描述符存储单元129的序列,从起始存储器地址或环的顶部124-1到结尾存储器地址或环的底部124-2。对从再分多路复用器节点100发送的每个出局TS设置一个环124,对在再分多路复用器节点100处接收到的每个入局TS设置一个环124。可如以下更详细所述来设置其它环124。
在每个环124中实现一队列,这是通过给队列头部或队列中的第一个已使用/分配的描述符存储单元129指定一指针124-3并给队列尾部或队列中的最后一个已使用/分配的描述符存储单元129指定一指针124-4来实现的。把描述符存储单元129分配给以刚好接在尾部124-4后的未使用/未分配描述符存储单元129为起始的入局传输包。从头部124-3所指向的描述符存储单元129起始并按序进到尾部124-4的队列中检索出局传输包的描述符存储单元129。每当到达处于环124-2末尾的描述符存储单元129的描述符时,以位于环124-1顶部的描述符存储单元129的描述符继续从描述符存储单元129中分配或检索描述符。
如图所示,存储在每个描述符存储单元129中的每个描述符包括许多字段129-1、129-2、129-3、129-4、129-5、129-6、129-7、129-8、129-9和129-10。简而言之,这些字段中每个字段的目的如下。字段129-1用于存储命令属性。处理器160可使用命令属性字段的各位来控制适配器110的传输包发送和描述符数据检索。例如,处理器160可在环124的底部124-2所指向的描述符存储单元129中的描述符的字段129-1中预设一位,以指示顶部指针124-1所指向的描述符存储单元129是接在底部指针124-2所指向的描述符存储单元129后。
字段129-2用于存储软件状态位。这些位既不能被适配器110访问也不能被它修改,这些位可被处理器160用于不涉及适配器110的任何目的。
字段129-3用于存储待输出的出局传输包的字节数(通常对MPEG-2传输包为188字节,但在描述符依据不同传输协议或“集中”和“分散”支持(把包分成多个存储单元片或从存储在多个包存储单元的片进行装配)而指向包时,可把字节数设定为更大或更小的数目)。
字段129-4用于存储描述符所对应的传输包存储单元的指针。这在图2中利用从环124的描述符存储单元129中的描述符至传输包池122的指定存储单元的箭头来示出。
字段129-5用于存储接收到的入局传输包的接收时间或存储待发送的出局传输包的派送时间。
字段129-6用于存储可能发生的各种异常/差错。可使用该字段的位来指示总线130的差错、数据链路控制电路112连接到的通信链路上的数据链路差错、短或长包(少于或超过188字节)的接收等。
字段129-7用于存储指示描述符的不同状态方面的状态位,诸如描述符是否有效、是否无效地指向一出错包等。例如,假定多个器件必须相继处理描述符和/或其指向的包。在此情况下,最好提供四个状态位。可把前两位设定到值0、1、2或3。值0指示描述符无效。值1指示描述符有效并可被最后一个器件处理,该器件必须处理描述符和/或其指向的包。值2指示描述符有效且可被倒数第二个器件处理,该器件必须处理描述符和/或其指向的包。值3指示描述符有效且可被倒数第三个器件处理,该器件必须处理描述符和/或其指向的包。后两位指示是否已从主存储器120中取得描述符送入高速缓冲存储器114以及是否已在适配器10处完成对描述符的处理并把它存储在主存储器120中。可如以下更详细地所述来设置其它状态位。
字段129-8包含指示接收到的入局传输包的字节数的传送计数。
字段129-9用于存储加扰/解扰控制字或用于加扰或解扰的其它信息。例如,处理器160可在此字段129-9存储一控制字(加密/解密密钥)或存储在高速缓冲存储器114中的控制字表的基址。
字段129-10用于存储经调度估计的离开时间,实际离开时间或实际接收时间。如以下更详细所述,处理器160使用该字段对接收到的入局传输包进行排序以输出或记录入局传输包的接收时间。
示例地,为了在单个输入端处接收传输包,需要一数据链路控制电路112、一DMA控制电路116和一环124,为了从单个输出端发送传输包,需要一数据链路控制电路112、一DMA控制电路116和一环124。这里把存储在与输入端有关的队列中的描述符叫做接收描述符,把存储在与输出端有关的队列中的描述符叫做发送描述符。如下所述,以上所指的送入和输出端可以是数据链路控制电路112连接到的通信链路的输入或输出端或再分多路复用器节点100中的另一接口140或150的通信链路的输入或输出端。把适配器110示作仅有单个数据链路控制电路112和单个DMA控制电路116。这只是为了说明——可在同一适配器110上设置多个数据链路控制电路112和DMA控制电路116。或者,此外,可在再分多路复用器节点100中设置多个适配器110。
基本传输包接收、再分多路复用和发送
现在考虑再分多路复用器节点100的操作。给操作人员提供如何操作再分多路复用器节点100的许多选择。在再分多路复用器节点100的第一种操作方式中,假设操作人员希望把两个TS(即,TS1和TS2)的程序信息选择性地组合成为第三TS,即TS3。在此情况下,假设操作人员最初不知道这两个待再分多路复用的TS(TS1和TS2)中包含什么程序,ES还是PID。此外,示例地,在第一适配器110处接收TS1,在第二适配器110处接收TS2,以及从同一再分多路复用器的节点100的第三适配器110发送TS3。从以下的描述可以理解,TS1和TS2中的每一个可改为经由同一节点或不同节点处的同步或异步接口接收,可经由任意结构的网络把TS1和TS2的选中部分传送到第三节点,以在第三节点处选择性地组合而形成TS3。
可把依据此方式的操作归纳为(1)获取输入的待再分多路复的TS(TS1和TS2)的内容信息(程序,ES、PAT、PMT、CAT、NIT等及其PID);(2)把此内容信息报告给操作人员,从而操作人员可制定用户规定;以及(3)接收用于构成输出的经再分多路复用的TS(TS3)的用户规定,并依据此用户规定从输入的待多路复用的TS(TS1和TS2)的内容动态地构成经再分多路复用的TS(TS3)。
为了使能内容信息的获取,传输处理器160把一接收队列分配给分别接收TS(TS1和TS2)的第一和第二适配器110中的每一个。为了获取TS(TS1和TS2)的内容,最初在TS1或TS2的适配器110处不丢弃传输包。因而,处理器160把一过滤器映射装入接收TS(TS1和TS2)的第一和第二适配器110中每一个的高速缓冲存储器114,使得可保留每个传输包并传送到主存储器120。当在各适配器110处接收到TS(例如,TS1)的每个传输包时,数据链路控制电路112把下一个未使用的描述符(接在存储在接收队列尾部124-4处的描述符存储单元中描述符后)分配给接收到的入局传输包。数据链路控制电路112把每个接收到的传输包存储在所分配的描述符指向的高速缓冲存储器114中的传输包存储单元中。
DMA控制电路116把每个传输包写到主存储器120中池122的相应存储单元,并把分配给这些传输包的描述符的描述符数据写到接收队列的各描述符存储单元。此外,DMA控制电路116可获得对接收队列中接着的几个未分配描述符存储单元129(接在DMA控制电路116先前已获得控制的描述符129序列的存储单元后)、存储在其中的描述符的拷贝和这些描述符指向的传输包存储单元的控制。把对这些未使用、未分配的描述符和传输包存储单元的控制提供给高速缓冲存储器114,以被数据链路控制电路112使用(即,分配给将来从TS1接收到的传输包)。
在DMA控制电路116把i≥1个传输包和分配给它们的描述符的数据写到池122和接收队列中,DMA控制电路116产生一中断。示例地,操作人员可使用控制器20来选择数字i并通过处理器160来设定。中断使得处理器160对每个接收到的传输包执行适当的接收“PID”处理器子程序(handler subroutine)。或者,可使用诸如轮询或基于定时器的过程等另一种技术启动处理器160对每个接收到的传输包执行接收PID处理器子程序。为了清楚,在这里使用中断范例来说明本发明。参考图3,示例地,处理器160具有用于在再分多路复用会话(session)期间接收或发送TS的每个适配器110(或其它器件)的一组PID处理器子程序。图3示出两种类型的PID处理器子程序组,即接收PID处理器子程序组和发送PID处理器子程序组。每个DMA控制电路116产生可识别的不同中断,从而使处理器160确定使用哪一组PID处理器子程序。响应于DMA控制电路116的中断,处理器160执行步骤S2,依据该步骤S2,处理器160检查在中断适配器110的接收队列中最近存储的描述符所指向的每个传输包的PID。对于每个PID,处理器160咨询中断处理器160的适配器110(或其它器件)所专用的接收PID处理器子程序402的指针表。
假设,接收TS1的第一适配器110中断处理器160,在此情况下,处理器160确定咨询接收该TS(TS1)的适配器110所专用的接收PID处理器子程序402的指针表。接收PID处理器子程序的指针表包括8192个表目,包括被每个可许可PID(依据MPEG-2,这些PID有13位)索引(index)的一个表目。每个被索引的表目包含将被处理器160执行的子程序的指针或地址RIV0、RIV1、…、RIV8191。使用每个传输包的PID,处理器160可给接收PID处理器子程序402的指针表的表目加上索引,以识别将对该特定传输包执行的子程序的指针。
利用指针表402,把由各指针指向并被处理器160所执行的每个子程序具体地映射到每个PID,以实现用户规定。有利的是,由指针表402依据用户规定预先确定每个子程序并进行简单的映射。每个子程序由一个或多个基本构件块处理的集合构成。基本构件块处理的一些例子包括:
(1)PAT获取:最初,该处理包含在由RIV0指向的子程序即PID 0x0000的接收PID处理器子程序中。在执行该处理时,示例地,处理器160提取当前被处理的传输包中所携带的PAT部分(section),并把此PAT部分装入保持在存储器中的PAT中。注意,可使用PAT的多个版本,因为TS中所携带的程序可随时间而改变。处理器160能识别PAT的不同版本并分开地聚集PAT的每个版本的拷贝并保持在主存储器120中。处理器160能根据包含在各种PAT部分中的信息在任何时间识别目前在使用PAT的哪一个版本。处理器160还使用每个更新的PAT部分中所携带的信息来识别此时TS中所携带的程序的程序号以及此类程序号的PMT部分的PID或程序定义。使用这些程序号,处理器160可修改接收PID处理器子程序的指针表402,以插入适当PID的指针(给带有PMT部分的传输包作标签),以执行包含用于获取PMT部分/程序定义的处理的子程序。
(2)PMT部分/程序定义获取:在此处理中,处理器160提取包含在目前处理的传输包中的PMT部分或程序定义,并以所提取的程序定义或PMT部分数据更新PMT的各部分。同PAT一样,可利用PMT的多个版本,处理器160可确定在哪一个PMT中存储所提取的PMT部分或程序定义数据。处理器160可使用PMT信息来更新PID过滤器映射(用来丢弃未包含在经再分多路复用的TS中的程序的传输包),识别用于对ES进行解扰的控制字并选择用于处理包含在传输包(具有在PMT中所识别的PID)中的PCR的子程序。
(3)PID重新映射:这使得处理器160以不同的PID改写相应包的PID。这是保证PID指派的唯一性所需的。即,如果要把携带不同内容(例如,不同ES的数据、不同PSI流的数据等)的传输包再分多路复用成为同一输出的再分多路复用TS(并由其携带),则MPEG-2要求给这些携带不同内容的传输包标上互不相同的PID。否则,解码器或其它器件不能区分携带不同类型数据的传输包来进行提取、解码等。在TS1中使用某一PID给带有第一类型数据的传输包作标签并在TS2中使用同一PID给带有第二类型数据的传输包作标签是可能的。如果要把第一和第二类型的传输包包含在输出的再分多路复用的TS(TS3)中,则应以新的PID对两种类型的传输包中的至少一种重新作标签以保证唯一性。
(4)传输包丢弃:如名称所示,处理器160简单地丢弃这些传输包。为此,处理器160解除分配指向丢弃传输包的描述符。可通过处理器160调节该队列的描述符存储单元129中所存在的描述符的顺序,以除去删除的传输包的描述符(例如,处理器识别接在环124中的待删除传输包的描述符后的所有已分配的描述符,并把每一个移至刚好在前的那个描述符的描述符存储空间),这样来实现描述符的解除分配。描述符的解除分配在接收队列中产生了用以重新分配的描述符存储空间129。
(5)PCR标志(flag)设定:PMT对每个程序指示携带PCR的传输包的PID。然而,这些传输包中只有一些携带有PCR。简单地,这可以通过处理器160确定在传输包中是否设定适当的指示(传输包标题中的adaption_field_control(适应_字段_控制)位和适应字段中的PCR_flag(PCR_标志)位)来确定。如果处理器160确定存在PCR,则处理器160在有关各包的描述符129的属性字段129-1中设定一PCR标志位。以下更详细地描述此属性标志位的目的。
此外,示例地,处理器160计算基准时钟发生器113相对于程序(其PCR为样本)的编码器系统定时时钟的当前的偏移。可通过以下公式来确定偏移:
偏移=ΔRTS12-ΔPCR12Δ
ΔRTS12=RTS2-RTS1;以及
ΔPCR12=PCR1-PCR2
这里:ΔPCR12是该程序的各相继PCR之差,
PCR2是当前处理的传输包中的PCR,
PCR1是先前接收到的该程序的PCR,
ΔRTS12是相继接收时间标记之差;
RTS2是对包含PCR2的当前所处理的传输包所记录的接收时间标记,以及
RTS1是包含PCR1的传输包的先前接收时间标记。
在计算了偏移后,把PCR1和PTS1分别设定为等于PCR2和PTS2。如下所述使用此偏移来调节PCRΔ(在必要时)。
(6)估计的离开时间计算:依据此处理,处理器160估计传输包的(理想)离开时间。示例地,此处理包含在接收中断处理程序中,以把每个接收到的入局传输包再分多路复用成为出局TS。可从传输包的接收时间(字段129-5中)和再分多路复用节点100处的已知内部缓冲延迟来估计所估计的离开时间。处理器160把所期望的离开时间写入字段129-10。
(7)加扰/解扰控制字信息插入:通常,在加扰或解扰技术中,实际上需要动态变化的控制字(诸如加密或解密密钥)对传输包中的数据进行加扰或解扰。普通的加扰和解扰技术依据此使用奇数和偶数密钥,一个密钥用于对ES数据进行加密,在TS中同期地传送随后将使用的下一个密钥。然后,发送指示现在应使用最近传送的密钥的信号。加扰/解扰控制字可以是ES专用的或可用于一组ES(整个“有条件访问系统”上)。可把解扰或加扰控制字保持在再分多路复用器节点100处的PID可编索引表中。如以下更详细所述,处理器160在执行此处理时可把控制字表的基址或控制字本身插入描述符的字段129-9。
最初,处理器160选择用于获取每个接收到的TS(TS1和TS2)的PAT并且其后丢弃每个经处理的传输包的PID处理程序。在接收PAT期间,获得诸如程序定义/PMT部分、NIT和CAT等带有其它PSI的PID的传输包以及诸如ES流、ECM流、EMM流等其它流的PID等。示例地,用于PAT的PID的接收PID处理器子程序选择用于获取PMT、NIT、CAT等的接收PID处理器子程序。这可容易地通过使这些子程序可用并简单地改变指向这些PID处理器子程序的表402中表目的指针(可通过适当的识别PID编索引)来实现。注意,即使在接收TS1和TS2的传输包并进行处理时,也可动态地实行这种简单的PID处理器子程序选择处理。以下更详细地描述其优点。
最终,获取有关每个TS(TS1和TS2)的足够数量的PSI,以使操作人员产生将在再分多路复用TS(TS3)中输出的信息的用户规定。示例地,处理器160例如使用异步接口140把获取的PSI信息发送到控制器20。把用于选择用户规定的足够的信息发送到控制器20。此信息可以是选择性的,例如,刚好是示出包含在其中的程序号的每个TS的通道映射及不同类型的ES(以诸如视频、音频、第二音频呈现、关闭的图片说明文本等来描述)。或者,该信息可以是穷举的,例如包括每个程序的PID、其ES的ECM等,控制器20以相干而有用的方式把该信息简单地显示给操作人员。
使用所提供的信息,操作人员产生用户规定以输出到待再分多路复用的TS(TS3)中。此用户规定可指定:
(1)待保留并在再分多路复用TS(TS3)中输出的每个TS(TS1和TS2)中的程序号,
(2)待保留或丢弃的保留程序的ES,
(3)待解扰和/或加扰的ES、ES组、程序或程序组以及将在对每个ES、ES组、程序或程序组进行加扰时使用的控制字的源,
(4)待注入或包含在输出的再分多路复用TS(TS3)中的任何新的ECM或EMM,以及
(5)并非从以上选择中自动暗示的任何新PSI信息,这些选择诸如待置于输出的TS(TS3)中的NIT或CAT、待重新映射的特定PID及其应重新映射到的新PID、指派给在再分多路复用器节点处产生并在TS(TS3)中所携带的其它信息(例如,如下所述的突发数据)的PID等。
然后,例如经由异步接口140把用户规定从控制器20发送到再分多路复用器节点100。
处理器160接收此用户规定,并通过对每个接收到的待再分多路复用的TS(TS1和TS2)的适当PID选择适当的接收PID处理器子程序来响应。例如,对于标注包含待保留数据的传输包用的每个PID,处理器160选择一子程序,在子程序中,处理器160插入估计离开时间的过程。对于标注包含被加扰数据的传输包用的每个PID,处理器160选择一子程序,该子程序包含用于选择适当的控制字并把该控制字插入与此传输包有关的描述符中的过程。对于标注包含PCR的传输包用的每个PID,处理器160可选择一子程序,该子程序包含用于设定PCR标志并计算偏移等的过程。以下更详细地描述用户规定和/或PSI数据的动态调节。
处理器160把一发送队列分配给发送经再分多路复用的TS的每个器件,即输出TS(TS3)的第三适配器110。此外,处理器160把PID过滤器映射装入接收TS(TS1和TS2)的第一和第二适配器110的每个高速缓冲存储器114,此TS(TS1和TS2)具有适当的值,这些值用于保留待在再分多路复用的TS(TS3)中输出的那些传输包、用于保留包含PSI的其它传输包、用于保持TS1和TS2的内容的跟踪(track)以及用于丢弃每个其它(each other)传输包。
除了选择接收PID处理器子程序、分配发送队列以及装载适当的PID过滤器映射修改以外,示例地,处理器160对输出经再分多路复用的TS的每个适配器(或其它器件)选择一组发送PID处理器子程序。这如图3所示。发送PID处理器子程序以PID和发送TS为基础进行选择。如上所述,响应于接收可识别的中断(例如,来自发送诸如TS3等输出TS的适配器110的数据链路控制电路112),处理器160执行步骤S4。在步骤S4,处理器160检查来自接收队列(和/或包含还未被调度输出的传输包的描述符的其它可能的队列)的描述符,并识别指向将从中断适配器110输出的传输包的高达j≥1个描述符。示例地,数目j可以是可编程的,且有利地可把它设定为等于从特定适配器110(每次特定适配器110中断处理器160之间,从该特定适配器110发送一输出TS)所发送的传输包的数目k。
在执行步骤S4时,处理器160检查指向旨在特定输出TS的传输包的描述符的每个接收队列。处理器160通过咨询发送PID处理器子程序404的指针表来确定哪些传输包指针输出TS。如同表402,表404对于每个PID包括一个表目并用0x0000到0x1FFF对每个PID索引。每个被索引的表目包含TIV0、TIV1、...、TIV8181(待响应于各PID执行的子程序)的指针或地址。处理器160依据从控制器20接收到的用户规定制定发送PID处理器子程序404的指针表,如以下所述来修改此指针表。
以下是可组合成发送PID处理器子程序的示例过程:
(1)什么也没有(nothing):如果不在向处理器160发出发送中断的器件的再分多路复用TS(或其它流)中输出当前传输包,则此传输包的PID映射到仅包含此过程的子程序。依据此过程,处理器160简单地跳过此传输包及其描述符。不把被检查的描述符计为待从中断处理器160的特定适配器110输出的j个传输包之一。
(2)用于发送的顺序描述符:如果要在向处理器发出发送中断的器件的再分多路复用TS(或其它流)中输出当前传输包,则此传输包的PID映射到包含此过程(以及可能的其它过程)的子程序。依据此过程,处理器160把一发送描述符分配给此传输包。然后,处理器160把指向该传输包的接收描述符中的相关信息拷贝到此新分配的发送描述符中。然后,以发送队列中与请求中断的器件有关的适当顺序对所分配的发送描述符进行排序,以进行发送。尤其是,处理器160把新分配的描述符指向的包的估计离开时间与记录在发送队列中的其它描述符中的实际派送时间(将发送传输包的实际时间)相比较。如果可能,把此描述符置于发送队列中实际派送时间比此描述符的估计离开时间晚的每个描述符前及实际派送时间比此描述符的估计离开时间早的每个描述符后。可通过把实际派送时间比待插入描述符的估计离开时间晚的发送描述符序列中的每个发送描述符拷贝到该队列中各后续的下一描述符存储单元129来实现此插入。然后,可把所分配的发送描述符的数据存入可通过拷贝该序列获得的描述符存储单元129中。
(3)实际派送时间确定:处理器160可确定所分配的描述符指向的传输包的实际派送时间,此确定根据该传输包的估计离开时间。通过确定用于发送传输包(新分配和插入的发送描述符指向该传输包)的输出再分多路复用TS(TS3)的传输包时隙来设定实际派送时间。即,选中在时间上最接近估计的离开时间的输出TS(TS3)的传输包时隙。假定将在被选中的传输包时隙的时间(相对于适配器110(这些适配器如下所述相互同步)的基准时钟发生器113所建立的内部基准时间)处输出该传输包。指派有关各传输包时隙的时间作为实际派送时间。然后,把此实际派送时间存入发送描述符的字段129-5。如下所述,实际派送时间实际上是第三适配器110(该适配器输出经再分多路复用的TS,即TS3)的数据链路控制电路112提交相应传输包以输出的近似时间。传输包的实际输出时间与处理器160所不知的外部时钟所建立的传输包时隙的对准有关。可实施如下所述的附加步骤,以消除此不对准而引起的PCR的抖动(dejitter)。
考虑从中接收包的TS(即,TS1或TS2)的位速率可能不同于输出的TS(即,TS3)的位速率。此外,将从内部缓冲传输包至一预定延迟(与接收和发送队列的长度有关)。然而,假设在输出的再分多路复用TS(TS3)的同一传输包时隙接收到的不同TS的传输包之间不存在争用,则所有的传输包将在多路复用器假定100中引起近似相同的等待时间。由于平均等待时间是相同的,所以不会在传输包中引入抖动。
现在考虑在几乎相同的时间从不同TS(即TS1和TS2)中接收两个传输包并在再分多路复用的TS(TS3)中输出这两个传输包的情况。这两个传输包可能具有不同的估计离开时间,尽管如此,此估计离开时间相应于(在时间上最接近于)输出的再分多路复用TS(TS3)的同一传输包时隙。把具有最早估计离开时间(或接收时间)的传输包指派给此时隙和此时隙的实际派送时间。给另一传输包指派输出的再分多路复用TS(TS3)的下一传输包时隙及其实际派送时间。注意,指派给下一时隙的传输包所引起的等待时间不同于该程序的其它传输包所引起的平均等待时间。因而,示例地,处理器160设法消除此传输包引起的等待时间,包括调节此传输包的PCR(如果其中包含PCR)。
(4)PCR偏移和等待时间调节:示例地,此过程包含在由包含PCR的传输包的PID来索引的表404的指针所指向的子程序中。处理器160确定仅在未把一传输包指派给在时间上最接近该传输包的估计离开时间的输出再分多路复用TS(TS3)的传输包时隙(对该程序的其它传输包也如此)时以及在各接收描述符中设定PCR标志时才需要PCR等待时间调节。校正PCR中因指派给不理想时隙引起的时间偏离。此调节等于传输包的时隙偏离理想时隙的时隙数乘以时隙的时间。
如下所述调节所有PCR的偏移,除非输入和输出TS在时间上精确对准或此PCR是从异步通信链路接收到的。在前一情况下,内部时钟的偏移不影响输出PCR的定时。在后一情况下,如下所述使用不同的偏移调节。在其它所有的情况下,输出接收到的PCR的时间均受到接收该传输包的适配器110和发送此传输包的适配器110的基准时钟发生器113相对于PCR的程序时钟的偏移的影响。即,给包含PCR的传输包标上从基准时钟发生器113获得的接收时间标记。此接收时间标记用来确定估计离开时间和实际派送实际。如以下详细地所述,相对于发送TS(TS3)的适配器110上的基准时钟发生器113和保持同步的所有适配器110的所有基准时钟发生器113,依据传输包的实际派送时间来派送传输包。然而,虽然基准时钟发生器113都相互同步,但基准时钟发生器113仍旧要经受相对于产生传输包及其PCR的编码器系统定时时钟的偏移。此偏移可影响从再分多路复用器节点100输出的输出再分多路复用TS(诸如TS3)中的每个PCR的时间。
依据本发明,再分多路复用器节点100校正这些偏移。如上所述,用于每个程序的PCR的接收处理器子程序的部分将保持对偏移的当前测量。保持测量基准时钟发生器113相对于每个程序的编码器系统定时时钟的偏移。对于每个PCR,从PCR中减去PCR的程序的当前偏移(即,基准时钟发生器113与该程序的编码器系统定时时钟之间的偏移)。
通过如上所述分配队列、选择PID处理器子程序及修改PID过滤器映射,可如下进行再分多路复用。在第一适配器110的数据链路控制电路112处接收到TS1的传输包。同样,在第二适配器110的数据链路控制电路112处接收到TS2的传输包。第一和第二适配器110中每一个中的数据链路控制电路112咨询存储在当地的(thereat)高速缓冲存储器114中的本地PID过滤器映射,并选择性地丢弃具有指示将不保留传输包的PID的每个传输包。每个数据链路控制电路112从高速缓冲存储器114中检索下一未使用/未分配的描述符,并确定与此描述符有关的传输包存储单元。(如以上和以下所述,DMA控制电路116连续地获得对指派给数据链路控制电路112的接收队列的一个或多个后续未使用/未分配描述符构成的序列及这些描述符指向的传输包存储单元的控制。)这些后续未使用、未分配描述符接在存储在尾部指针129-4所指向的描述符存储单元129中的描述符后,数据链路控制电路112可获得此尾部指针129-4。(如上所述,如果尾部指针129-4等于环地址的底部129-2,则被尾部指针129-4指向的描述符将具有由处理器160在字段129-7中所设定的描述符环命令位的结尾。这将使数据链路控制电路112使用环绕式寻址技术来分配存储在描述符存储等于129中环地址顶部129-1的描述符。)数据链路控制电路112获得相应于接收到传输包的第一字节的时间的基准时钟发生器113的时间,并把该值作为接收时间标记存储在所分配的描述符的字段129-5中。数据链路控制电路112把接收到的传输包的字节数存储在字段129-8中。此外,如果在接收传输包时发生任何差错(例如,丢失TS1的数据链路载波(carrier)、短包、长包、出错包等),则数据链路控制电路112通过设定129-6的适当异常位来指示这些差错。然后,数据链路控制电路112在状态字段129-7中设定一位指示已处理描述符129或已处理描述符129的差错,并把该传输包存储在字段129-4中的指针所指向的高速缓冲存储器114中的传输包存储单元中。(注意,在长包的情况下,可把不止一个后续未使用未分配描述符构成的序列分配给接收到的传输包,可把过剩的数据存储在与这些描述符有关的包存储单元中。可在描述符中第一个的属性字段129-1中设定适当的集中/分散位,以指示这个包的数据超过了与描述符中第一个有关的单个传输包存储空间。还可在描述符中最后一个的属性字段129-1中设定相应的位,以指示它是多描述符传送中的最后一个描述符。这种长的包通常发生在适配器来自不同于TS的流的包时。)
DMA控制电路116把此传输包写入主存储器120的传输包池122中其相应传输包存储单元内。DMA控制电路116还把指向写入的传输包的描述符的数据写到指派给各适配器110的接收队列的各描述符存储单元129。注意,DMA控制电路116可通过确定哪些描述符的字段129-7中设定有处理完成状态位来识别要把哪些传输包写到主存储器120以及这些描述符指向的传输包存储单元。注意,DMA控制电路116可在每次写完成时一个接一个地写入描述符和传输包的数据。或者,DMA控制电路116可允许累积某阈值数目的传输包和描述符。然后,DMA控制电路116写入i≥1个多个完成的描述符和传输包的序列的数据。
在一个实施例中,把加扰器/解扰器电路115置于适配器110上。在此情况下,在DMA控制电路116把传输包的数据写到主存储器120前,加扰器/解扰器电路115对必须进行解扰的每个传输包进行解扰。以下对此进行更详细的描述。
当DMA控制电路116把描述符数据和传输包写到主存储器130时,DMA控制电路116中断处理器160。这些中断可由DMA控制电路116在把每i≥1个描述符的数据写到主存储器130时启动。中断使得处理器160执行每个传输包(PID和输入TS特定)的接收PID处理器子程序之一。如上所述,由表402中指针的适当变更来选择接收PID处理器子程序,从而处理器160(尤其是)丢弃将不在再分多路复用TS中输出的传输包,把估计离开时间写入指向的输出传输包的描述符中并在指向包含PCR的传输包的描述符中设定PCR标志位。此外,选中的接收PID处理器子程序最好引起处理器160连续地获取和更新PSI表,调节PID过滤器映射,并选择实行某用户规定所需的附加接收PID处理器子程序。例如,用户规定可指定将在再分多路复用TS(TS3)中连续地输出的特定程序号。然而,由于达到事件边界使得构成该程序的ES经历改变。最好,处理器160将通过监测PAT和PMT的变化来检测ES构成中的这些改变,并将根据连续地在再分多路复用TS(TS3)中输出选中程序的ES的需要来改变PID过滤器映射并选择接收PID处理器子程序,而无论该程序的构成是经常的。
在进行以上与接收传输包有关的功能的同时,第三适配器110上的DMA控制电路116和数据链路控制电路112也进行与在TS3中发送传输包有关的某些功能。每当此第三适配器110的数据链路控制电路112输出k≥1个传输包时,数据链路控制电路112产生一发送中断。示例地,k可由处理器160选择。在对输出的再分多路复用TS(TS3)执行适当的发送PID处理器子程序的处理器160处接收此发送中断。尤其是,处理器160检查位于每个队列头部处的描述符,此每个队列包含指向将在TS3中输出的传输包的的描述符。如上所述,两个接收队列包含指向将在TS3中输出的传输包的描述符,包括一有关第一适配器110(接收TS1)的接收队列和一有关第二适配器110(接收TS2)的接收队列。如下所述,处理器160可分配包含指向待在TS3中输出的传输包的描述符的附加队列。处理器160识别指向待在TS3中输出的后续j个传输包的描述符。这是通过执行该组(与第三适配器110有关且可通过接收队列头部中的传输包的PID而索引)的发送PID处理器子程序来实现。如上所述,如果将不从第三适配器110(产生中断)输出相应于处理器160所检查的队列中的一个描述符的传输包,则此传输包的PID将对什么也不作的第三适配器110的发送PID处理器子程序索引。如果要从第三适配器110(产生中断)输出相应于处理器160所检查的队列中的一个描述符的传输包,则此传输包的PID将对一发送PID处理器子程序的指针索引,该发送PID处理器子程序将:(1)对该传输包分配一发送描述符,(2)按照正确的发送顺序对有关第三适配器110的发送队列中的发送描述符进行排序,(3)对所分配的描述符和传输包指派一实际派送时间,以及(4)在必要时对传输包的偏移和等待时间进行粗的PCR校正。示例地,处理器160检查(接收)队列中的描述符,直到识别指向将在TS3中输出或来自第三适配器110的传输包的j个描述符。从头部124-3到尾部124-4依次检查这些描述符。如果可获得具有候选描述符的多个队列用以检查,则处理器160可按照估计离开时间的顺序或可虑及描述符指向的传输包的内容的某些其它适当的顺序(如下所述),以轮流(round-robin)方式来检查这些队列。
DMA控制电路116从主存储器120中检索有关TS3或第三适配器110的队列的j≥1个描述符构成的序列的数据。按照从头部指针124-3到尾部指针124-4的顺序,从队列的描述符存储单元129中检索这些描述符。DMA控制电路116还从主存储器120中检索来自每个如此检索的描述符所指向的池122的传输包存储单元中的传输包。DMA控制电路116把如此检索的描述符和传输包存入高速缓冲存储器114中。
数据链路控制电路112按照从头部指针124-3的顺序,从高速缓冲存储器114中连续检索发送队列中的每个描述符和该描述符指向的传输包存储单元中的传输包。当第三适配器110的基准时钟发生器113的时间等于被检索的描述符的派送时间字段129-5中所指示的时间时,数据链路控制电路112在TS3中发送该描述符(位于头部指针124-3所指向的存储单元中)指向的传输包。此派送时间只近似于发送时间,因为必须与TS3的传输包时隙边界对准地发送每个传输包。以处理器160不知道的外部时钟为基准来设定这种边界。注意,由于某种原因,每个传输包的PCR可能稍稍抖动。相应地,数据链路控制电路112此外最终还依据包含此PCR的传输包的精确发送时间来校正此PCR。具体来说,此精确发送时间小于估计的传输包离开时间。数据链路控制电路112使用预先锁定于TS3的时隙边界的传输时隙边界时钟,以对所估计的PCR进行细调(即,通过把派送时间与实际发送时间之差加到传输包的PCR)。注意,数据链路控制电路112可使用此描述符的PCR标志位来确定该传输包中是否存在PCR(继而确定是否校正它)。
在发送一传输包后,数据链路控制电路112在指向所发送的传输包的描述符的字段129-7中设定适当的状态信息并解除分配该描述符。然后,DMA控制电路116把此状态信息写入发送队列的适当的描述符存储单元中。
在另一种操作方式中,操作人员已完全知道待再分多路复用的输入TS的内容。在此情况下,操作人员简单地准备用户规定并把此用户规定从控制器20发送到再分多路复用器节点100(或当多个节点在网络分布式再分多路复用器100中操作时发送到多个再分多路复用器节点100)。尽管如此,最好,连续地获取有关待再分多路复用的输入TS的内容(诸如PAT、PMT等)的不同类型信息。这使得可即时地把此内容报告给操作人员(经由处理器160和控制器20),例如使得产生经修改的用户规定以及依据此修改的用户规定动态地调节再分多路复用,而不必停止输入待再分多路复用的TS、输出经再分多路复用的TS或上述再分多路复用器100的再分多路复用处理。
除了以上的基本再分多路复用功能以外,再分多路复用器节点100可进行更多的先进功能。以下单独地描述这些功能。
动态再分多路复用和程序专用信息插入
如上所述,操作人员可使用控制器20来产生指定保留或丢弃的程序和ES、程序或ES的加扰或不加扰(或这两者)、PID的重新映射等的用户规定说明。此外,处理器160最好连续地获取内容信息(例如,PAT、PMT、CAT、NIT、ECM表等的数据)。这使得可对用户规定进行动态地实时或“飞行中(on the fly)”的修改,并依据新的用户规定而无缝地改变再分多路复用。具体来说,操作人员可改变用户规定并使再分多路复用器30依据新的用户规定无缝地切换到再分多路复用。无论如何,再分多路复用器30保证每个输出的经再分多路复用的TS始终是包含不中断的传输包序列或串的连续位流。因而,如此修改输出的再分多路复用的TS的内容,而不会在输出的再分多路复用TS中引入不连续,即在输出的传输包串中不发生中断或在输出的位流中不发生中止。
以上无缝修改可能受到使用可编程处理器160的影响,该处理器控制传输包在输入和输出适配器110或接口140和150与诸如解扰器/解扰器170等其它电路之间的流动。考虑到保留或丢弃不同组ES的选择可能简单地受到处理器160调节处理器160对每个PID选中的适当PID过滤器映射和PID处理器子程序的影响。处理器160通过改变响应于指派给这些ES或程序的PID所执行的PID处理器子程序而使它们包括适当的加扰或解扰过程(如以上和以下所述),可实现对某些ES或程序是进行加扰还是解扰的选择。处理器160通过给新的输出端口分配发送描述符队列、对不需要的输出端口解除发送描述符队列的分配、对每个新输出端口的发送PID处理器子程序产生指针表404并丢弃每个被解除分配的发送队列的发送PID处理器子程序的每个指针表404,可实现对输出端口的不同选择,以输出所输出的再分多路复用TS的不同组合。处理器160以相同的方式,通过分配和解除接收队列的分配并对被分配的接收队列的接收PID处理程序产生指针表402和丢弃被解除分配的接收队列的接收PID的处理程序的指针表402,可实现对输入端口的不同选择。
除了选择用以输出的正确的传输包以外,示例地,再分多路复用器节点100还对每个输出的再分多路复用TS提供正确的PSI。这是如下实现的。处理器20(图2)对输出的TS产生用户规定说明。考虑再分多路复用器节点100对两个TS(即,TS1和TS2)进行再分多路复用以产生第三TS(即,TS3)的上述例子。示例地,表1给出了TS1和TS2中每一个的内容。
表1
  程序  ES   PID   程序  ES   PID   A  视频A   PID(VA)   E  视频E   PID(VE)
 A   音频A   PID(AA)  E   音频E   PID(AE)  A   数据A   PID(DA)  PMT   Prog.Def.E   PID(e)  PMT   Prog.Def.A   PID(a)  F   视频F   PID(VF)  B   视频B   PID(VB)  F   音频F   PID(AF)  B   音频B   PID(AB)  F   数据F   PID(DF)  PMT   Prog.Def.B   PID(b)  PMT   Prog.Def.F   PID(f)  C   视频C   PID(VC)  G   视频G   PID(VG)  C   音频C   PID(AC)  G   音频1G   PID(A1G)  C   解密C   PID(ECMC)  G   音频2G   PID(A2G)  PMT   Prog.Def.C   PID(c)  G   数据G   PID(DG)  D   视频D   PID(VC)  G   解密G   PID(ECMG)  D   音频1D   PID(A1D)  PMT   Prog.Def.G   PID(g)  D   音频2D   PID(A2D)  PAT   PAT2   0x0000  D   数据D   PID(DD)  PMT   Prog.Def.D   PID(d)  PMT   PAT 1   0x0000
最好,控制器20对处理器160进行编程以使用如上所述的接收PID处理器子程序的获取过程来提取表1所示的信息。
假定用户规定说明指定仅保留程序A、B、F和G并把它们在再分多路复用的输出TS(TS3)中输出。用户在控制器20(图1)处例如使用键盘/鼠标器27(图1)来指示此规定。控制器20确定此用户规定是否有效。尤其是,控制器20确定每个输出再分多路复用的TS(诸如TS3)是否有足够的带宽来输出所有被指定的程序A、B、F和G及有关的PSI(即,程序定义a、b、f、g和如下所述的新的替代PAT3)。如果这些位速率信息不是已知的,则可从处理器160中获得。例如,处理器可执行PID处理器子程序,以从指派给带有每个程序的PCR的每个传输包的接收时间标记中确定每个程序的位速率(或传输包速率)。如上所述,总之处理器160为进行PCR调节的目的而获得这些信息。如果用户规定无效,则处理器20不下载此用户规定。如果规定有效,则控制器20把此用户规定下载到处理器160。
假设,TS3的带宽可满足用户规定。如果输入的TS(TS1和TS2)的PAT和PMT还未被获取,则处理器160获取其PAT和PMT。根据PAT1和PAT2中的信息,处理器160构成一替代的PAT3,它仅包括指示有关程序A、B、F和G的程序定义a、b、f和g的PID的PAT1和PAT2的表目。再者,这可使用用于PAT1和PAT2的PID的适当PID处理器子程序来实现,且最好连续地执行以保证把在PAT1和PAT2中所反映的对程序的任何改变并入替代PAT3中。处理器160产生包含此新的替代PAT3的传输包序列并把它们存入包缓冲器122。处理器160还产生指向带有PAT3的这些传输包的描述符的PAT队列,该队列最好实现为环124。有利的是,PAT3传输包的PAT描述符队列专用于仅存储替代PAT信息。此外,处理器160产生估计的离开时间并把它们存储在指向PAT3传输包的PAT队列的描述符中。
现在,处理器160可响应于发送中断以与任何接收队列相同的方式服务于PAT3描述符队列。即,当数据链路控制电路112发送k≥1个包并中断处理器160时,处理器160将从PAT3队列以及接收队列中提取描述符。这里,把包含指向待输出传输包(发送队列中的发送描述符还未被分配)的所有队列统一地叫做“连接队列”。
然后,处理器160构成适当的过滤器映射并把一过滤器映射传送到接收TS1的第一适配器110并把第二过滤器映射传送到接收TS2的第二适配器110。例如,第一过滤器映射可指示提取和保留具有PID:PID(VA)、PID(DA)、PID(a)、PID(VB)、PID(AB)和PID(b)(以及相应于TS1中的PSI的其它可能的PID)的传输包。同样,第二过滤器映射可指示提取和保留具有PID:PID:PID(VF)、PID(AF)、PID(DF)、PID(f)、PID(VG)、PID(A1G)、PID(A2G)、PID(DG)、PID(ECMG)和PID(g)(以及相应于TS2中的PSI的其它可能的PID)的传输包。对此响应,接收TS1和TS2的第一和第二数据链路控制电路112依据处理器160所提供的过滤器映射仅从TS1和TS2中提取这些传输包。如上所述,第一和第二数据链路控制电路112把这些所提取的包存储在高速缓冲存储器114中并对其分配描述符。第一和第二DMA控制电路116周期性地把所提取的传输包及其描述符的数据写到主存储器120。把由第一DMA控制电路116写入的描述符的数据存储在第一数据链路控制电路112的第一接收队列的各描述符存储单元129中,把由第二DMA控制电路116写入的描述符的数据存储在第二数据链路控制电路112的第二接收队列的描述符存储单元中。
此外,第三DMA控制电路116从有关TS3的发送队列中检索描述符及其相应的传输包,并把它们存储在高速缓冲存储器114中。第三数据链路控制电路112从高速缓冲存储器114中检索每个描述符并把它们在TS3中发送。第三数据链路控制电路112在发送了k≥1个传输包后产生中断。这使得处理器160访问与第三数据链路控制电路112有关的发送队列的发送PID处理器子程序的指针表。在执行适当的发送PID处理器子程序时,处理器160把TS3中未使用的发送描述符分配给可获得的连接队列(即,第一接收队列、第二接收队列和PAT3队列)中的描述符,并从这些连接队列中拷贝如此分配的描述符的有关信息。按照有关接收描述符的估计派送时间的顺序在TS3发送队列中分配发送描述符。
注意,可动态的插入任何类型的PSI,包括新的程序定义、EMM、ECM、CAT或NIT。
现在考虑产生新的用户规定说明同时依据前一个用户规定发生再分多路复用的情况。如上所述,控制器20开始验证是否有足够的带宽满足新的用户规定。如果有,则把新的用户规定下载到处理器160。新的用户规定可能需要处理器160提取不同的程序和ES,对PID进行不同地映射,或者产生:(a)新的PSI、(b)带有此新的PSI的传输包以及(c)指向带有此新的PSI的传输包的描述符。在修改包含在TS3中的程序或ES的情况下,处理器160依据新的用户规定修改PID过滤器映射,以保留待保留的传输包并丢弃待丢弃的传输包。把这些新的过滤器映射传送到各高速缓冲存储器114,这些高速缓冲存储器114立即动态地切换到依据新的用户规定提取传输包。处理器160还通过修改与新的待保留传输包的PID有关的接收PID处理器子程序指针表402的指针,为新的待保留传输包选择适当的接收PID处理器子程序。还可对由现在待被丢弃的传输包的PID索引的接收PID处理器子程序指针表402的指针进行修改。在新的PID重新映射的情况下,处理器160选择适当的子程序来执行新的PID重新映射。
这种改变可能需要产生新的PSI,例如新的PAT。处理器160选择适当的PID处理器子程序来产生新的PSI。例如,在新的PAT的情况下,PID处理器子程序可由TS1和TS2的PAT的PID来触发。处理器160产生新的PSI并把此新的PSI插入传输包。把各PSI队列中的描述符分配给这些新的PSI传输包。处理器160停止服务于指向包含旧PSI的传输包的任何PSI描述符队列(即,进行刷新和从中传送传输包),而是服务于新的PSI描述符队列。
在每一个改变时,即可获得每个新选中的PID处理器子程序(每个PSI插入修改或每个新的PID过滤器映射)时,适当的数据链路控制电路112或处理器160无缝地改变其操作。直到实行这些改变时,数据链路控制电路112或处理器160才在先前的用户规定下继续操作。在每个改变发生时进行排序时必须注意,从而输出的再分多路复用TS总是符合MPEG-2。例如,最好延迟对TS中的PID映射、PID过滤、程序、ES、ECM等(它们影响PMT或PAT)进行的任何改变,直到可在TS中输出PMT(或其特定程序定义)和/或PAT的新版本以及在TS中指示切换到新的PMT、程序定义或PAT的指示时。同样,如果包含或丢失一有条件访问系统的EMM,则延迟此EMM的引入,直到在TS中可发送CAT的新版本。对资源的内部处理管理想要对改变进行附加的慎重排序,诸如在改变用于保留具有此PID的传输包的各适配器110的PID过滤器映射前,把一指针存储到待被保留的传输包(它先前被丢弃了)的PID索引的适当接收PID处理器子程序指针表中的接收PID处理器子程序等。
以下是依据新的用户规定修改再分多路复用的一个例子。假定用户提供了指示应丢弃程序B和F而应保留程序C和D的新的用户规定。与之响应,控制器20在依据新的用户规定修改再分多路复用的TS(TS3)时,首先确定在输出的再分多路复用TS(TS3)中是否有足够的带宽来容纳所有的新程序数据以及必须为其产生的新PSI。假设有,则把此新的用户规定下载到再分多路复用器节点100。处理器160修改第一适配器110中的PID过滤器映射,从而丢弃具有PID(PID(VB)、PID(AB)、PID(b))的传输包,并保留具有PID(PID(VC)、PID(AC)、PID(ECMC)、PID(c)、PID(VD)、PID(A1D)、PID(A2D)、PID(DD)和PID(d)的传输包。同样,处理器160修改第二适配器110中的PID过滤器映射,从而丢弃具有PID(PID(VF)、PID(AF)、PID(DF)和PID(f))的传输包。处理器160选择包括用于PID(PID(VC)、PID(AC)、PID(ECMC)、PID(c)、PID(VD)、PID(A1D)、PID(A2D)、PID(DD)和PID(d))的PID处理器子程序,包括用于PID(PID(c)和PID(d)中每一个的程序定义更新处理、用于PID(ECMC)的控制字更新处理、用于程序C的每一个加扰ES(例如,PID(VC))的解扰控制字信息插入处理。处理器160例如在执行第一和第二适配器110中每一个的PID(0)的PID处理器子程序期间,还产生包括程序定义a、b、c、d和g的不同替代PAT3。
现在考虑提供了指示应对程序A的VA视频ES进行加扰的另一个新用户规定的情况。再者,控制器20首先确定TS3中是否有足够的带宽来容纳带有VA的传输包的ECM和程序A的新程序定义。假设有,则把此新的用户规定下载到再分多路复用器节点100。处理器160分配用于存储指向包含VA的ECM的传输包的描述符的队列。处理器160为PID(VA)选择适当的PID处理器子程序,包括把加扰控制字插入指向包含VA的传输包的描述符中。处理器160还产生包含作为VA的ECM的控制字的传输包并分配指向这些传输包的描述符。这可使用定时器驱动的中断处理器子程序来实现。或者,由处理器160执行的附加硬件(未示出)或软件周期性地产生控制字并在这些控制字准备好时中断处理器160。处理器160通过把一可获得的控制字置于一个或多个传输包中、把一ECM队列的ECM描述符分配给这些传输包并把新的控制字装入适当的控制字表中,对这些中断作出响应。此外,处理器160还选择用于PID(a)的接收PID处理器子程序,包括提取程序定义a中的信息并添加有关ECMA的信息(例如,PID(ECMA),其加密的ES等)。
加扰/解扰控制
与加扰和解扰有关的一个问题是对每个传输包选择正确的控制字或密钥。即,可以PID专用控制字或专用于一组PID的控制字对经加扰的传输包数据进行加扰。可在控制字时时改变时使用旋转控制字方案。简言之,可存在与每个TS有关的大量控制字(例如,密钥)并周期性地改变这些控制字。在解扰的情况下,必须提供连续地接收用于每个待解扰ES或ES组的控制字并在每一时刻选择适当的控制字的机构。在加扰的情况下,必须提供用于选择ES或ES组加扰用的正确控制字并足够超前于如此形成的任何经加扰的ES数据把此ES加扰用的控制字插入输出的再分多路复用TS中的机构。
可使用这些描述符及其在接收和发送队列中的排序来简化TS的加扰和解扰。尤其是,每个接收描述符具有其中可存储有关加扰或解扰的信息的字段129-9,这些信息诸如在对传输包进行加扰时所使用的控制字或适当控制字表(包含用于对传输包进行加扰或解扰的控制字)的指针。
首先考虑在对一传输包进行解扰时所执行的步骤。包含待解扰的传输包的TS包含带有ECM(ES专用有条件访问)和EMM(专用于整个ES组的有条件访问)的传输包。在标有EMM所对应的ES组所独有的PID的传输包中携带有EMM,在标有每个ECM所对应的特定ES所独有的PID的传输包中携带有ECM。可参考CAT把EMM的PID同EMM所对应的特定ES组相关。可参考PMT把ECM的PID同ECM所对应的每个特定ES相关。处理器160选择PID处理器子程序,用以:
(1)恢复在TS中发送的每个CAT和PMT并识别当前所使用的CAT或PMT的版本,
(2)参考PMT,恢复被携带有ECM所对应的ES的传输包的PID索引的ECM表。
接着,处理器160定义将在每个传输包和描述符上执行的一系列处理步骤。即,处理器160定义接收适配器110的数据链路控制电路112、(任选)接收适配器110的解扰器115、接收适配器110的DMA控制电路116、(任选)解扰器170和处理器160可处理一接收描述符或一接收描述符指向的包的特定顺序。为此,处理器160可把适当的控制信息传送到装置112、115和116中的每一个,以使它们按照如下所述定义的一系列处理步骤的特定顺序来处理传输包及指向该传输包的描述符。
如果使用适配器110的解扰器115,则如下定义该序列中的处理顺序。适配器110的数据链路控制电路112接收传输包并给未按照如上所述的PID过滤器映射丢弃的那些传输包中选中的传输包分配接收描述符。在把每个保留的传输包存入高速缓冲存储器114中后,示例地,数据链路控制电路112设定指向该传输包的描述符中的状态位129-7指示现在按照所定义的处理步骤序列的顺序可由下一个装置来处理该传输包。
解扰器115周期性地在高速缓冲存储器114中检查接着的一个或多个描述符,其状态位129-7被设定为指示已许可解扰器115修改传输包。示例地,解扰器115在已处理了m≥1个描述符后访问高速缓冲存储器114。解扰器115从先前被解扰器115访问的描述符开始依次访问高速缓冲存储器114的每个描述符,直到已访问了m≥1个描述符或直到到达这一描述符,其状态位129-7被设定为指示已按照所定义的处理步骤序列的顺序对描述符及其指向的传输包执行了前一步骤的处理。
在处理描述符和传输包时,解扰器115使用当前被检查的描述符指向的传输包的PID来索引位于高速缓冲存储器114中的解扰映射。示例地,处理器160如下所述周期性地更新高速缓冲存储器114中的解扰映射。由位于描述符直到1299中的基址来提供解扰映射的位置。示例地,处理器160在分配接收描述符队列时把解扰映射的基址装入每个描述符的直到129-9。解扰映射的被索引表目指示是否对传输包进行加扰以及在加扰时可使用对传输包进行解扰的一个或多个控制字。解扰映射的被索引表目可包含相应于传输包的PID的控制字或指向其中存储有各控制字的存储单元的指针。如果解扰映射的被索引表目指示不对被访问的描述符指向的传输包进行解扰,则解扰器115简单地把描述符的状态位129-7设定为指示可按照所定义的处理步骤序列的顺序对描述符及其指向的传输包执行下一处理步骤。
如果解扰映射的被索引表目指示将要对传输包进行解扰,则解扰器115获得相应于该传输包的PID的控制字并使用该控制字对传输包数据进行解扰。注意,典型的解扰方案使用如上所述的旋转(即,奇数和偶数)控制字。在对一传输包进行解扰时所使用的正确的奇数或偶数控制字由传输包中的控制位来指示,诸如传输_加扰_控制位。解扰器115在对正确的控制字进行索引时使用这些位以及传输包的PID。即,由PID和奇数/偶数指示符来索引由处理器160构成和保持的映射。然后,解扰器115把经解扰的传输包数据存储在由当前检查的描述符所指向的传输包存储单元,从而改写该传输包的预解扰数据。然后,解扰器115把该描述符的状态位129-7设定为指示可按照所定义的处理步骤序列的顺序对描述符及其指向的传输包执行下一处理步骤。
DMA控制电路116周期性地把传输包数据和指向该传输包的描述符的数据从高速缓冲存储器114写到主存储器130的各个存储单元122和129。这样做时,DMA控制电路116周期性地检查高速缓冲存储器114中由接在DMA控制电路116所处理的最后一个描述符后(按照接收队列的顺序)的一个或多个描述符构成的序列。如果被检查的描述符的状态位129-7指示可对被检查的描述符执行DMA控制电路116的处理,则DMA控制电路116把该描述符中的适当状态位129-7设定为指示可按照所定义的处理步骤序列的顺序对此描述符及其指向的传输包执行下一处理步骤。然后,DMA控制电路116把该描述符的数据及其指向的传输包的数据写到主存储器130。然而,如果状态位129-7被设定为指示仍将对描述符执行DMA控制电路116所执行的处理之前的处理步骤,则DMA控制电路116避免处理该描述符及其指向的传输包。示例地,在被使能时,DMA控制电路116检查描述符,直到DMA控制电路116写入i≥1个描述符的序列及这些描述符指向的传输包的数据,或直到碰到这样的描述符,其状态位129-7指示仍旧按照所定义的处理步骤序列的顺序对该描述符执行前一处理步骤。每当DMA控制电路116传送了i≥1个传输包时,DMA控制电路发出一中断。
处理器160通过执行适当的接收PID处理器子程序,响应于例如DMA控制电路116所发出的中断。处理器160从处理器160所处理的最后一个描述符开始检查相应于从中接收到中断的适配器110的接收队列中的一个或多个描述符。示例地,处理器160仅对这样的描述符执行适当的接收PID处理器子程序,这些描述符的状态位129-7被设定为指示可对描述符执行处理器160的处理。每当处理器160被中断时,示例地,处理器160处理描述符及其指向的传输包,直到对i≥1个传输包执行了PID处理器子程序或直到碰到这样的一个描述符,其适当的状态位129-7被设定为指示仍旧对该描述符执行前一处理步骤(按照所定义的处理步骤序列的顺序)的处理。。
在执行适当的接收PID处理器子程序期间,处理器160恢复所有ES的所有控制字并更新被解扰器115(或如下所述的170)所使用的解扰和控制字表或映射。在旋转控制字方案中,处理器160在控制字表或映射中保持用于每个PID的多个(即,奇数和偶数)密钥。处理器160还可进行使能对经解扰的传输包进行后续的加扰的处理(如下所述)。在处理了接收描述符后,处理器160通过把这些描述符的状态位129-7设定为指示描述符无效(继而数据链路控制电路112是下一个处理这些描述符的装置)、擦除或重新设定描述符的选中字段并使首部指针123-3进到下一描述符存储单元129来解除这些描述符的分配。
现在考虑在适配器110上未设置或不使用解扰器115的情况。取而代之,使用位于总线130上的解扰器170。执行与先前非常类似的过程。然而,在此情况下,如此改变所定义序列的处理步骤的顺序,从而DMA控制电路116在数据链路控制电路之后并在解扰器之前处理描述符(及其相应的传输包),解扰器170在DMA控制电路116之后但在处理器160之前处理描述符(及其相应的传输包)。继而,在数据链路控制电路112把描述符分配给传输包并设定适当的状态位129-7以使能对它们所执行的下一处理步骤后,DMA控制电路116处理该描述符及其指向的传输包。如上所述,DMA控制电路116把状态位129-7设定为指示可对描述符执行下一处理步骤,并把该传输包和描述符写到主存储器130。
解扰器170周期性地检查接收队列中的描述符,以识别其状态位129-7被设定为指示可对描述符及其指向的传输包进行解扰处理(按照所定义的处理步骤序列的顺序)的描述符。解扰器170与以上对解扰器115所讨论的类似的方式处理这些被识别的传输包。在处理了这些传输包后,解扰器170把一个或多个状态位129-7设定为指示现在可对描述符及其指向的传输包执行下一个处理步骤(按照所定义的处理步骤序列的顺序)。
处理器160响应于DMA控制电路116所发出的中断进行如上所述的处理,包括执行适当的接收PID处理器子程序。最好,与中断处理器160的适配器110有关的接收队列的队列长度相对于解扰器170的处理时间足够长,从而使处理器160检查和处理解扰器170已完成处理的描述符。换句话说,处理器160和解扰器170最好不要尝试同时访问相同的描述符。再者,处理器160在接收队列中与解扰器170不同的点处开始处理描述符。
现在考虑有关加扰的处理。如同解扰处理,使用描述符中的状态位129-7,按照所定义的处理步骤序列的顺序对每个描述符和这些描述符指向的传输包所进行的处理步骤进行排序。与解扰不同,加扰最好在处理器160已把发送描述符分配给待加扰的传输包后进行。这样,可以两种方式中的一种来使用控制字字段129-9。如同解扰,可把加扰映射的基址置于控制字描述符字段129-9中。然而,由于加扰发生在处理器160处理发送队列中的描述符后,所以最好把正确的控制字本身置于控制字描述符字段129-9中。
首先考虑由发送适配器110的加扰器115进行加扰的加扰处理。处理器160获得包含控制字(最好被加密)的ECM传输包。把这些ECM传输包在各个相应的连接队列中排队,并对它们进行调度以在正确的时间输出。即,对这些ECM传输包进行调度,以足够超前于它们所解扰的传输包把这些ECM传输包插入输出的TS中,以使解码器在接收其所解扰的传输包前恢复该控制字。
在发送包含控制字的ECM传输包后的适当时间,处理器160改变控制字表以使用相应于最近发送的控制字的新密钥对数据进行加密。当从输出适配器发送传输包时,处理器160执行与被检查的连接队列中的描述符所指向的传输包的PID有关的发送PID处理器子程序。对于这些待加扰的传输包中的每一个,发送PID处理器子程序包括用于把控制字信息插入有关该传输包的描述符中的处理。控制字信息可简单的是将在识别传输包加扰用控制字时所使用的加扰映射的基址。然而,控制字信息还可以是将在传输包加扰中所使用的正确的控制字。处理器160还可来回切换(toggle)传输包中的诸如传输_加扰_控制位等位,以指示应使用最近发送的控制字中的哪一个对解码器处的传输包进行解密或解扰。此外,示例地,处理器160把新分配的发送描述符的一个或多个状态位129-7设定为指示应对此发送描述符及其指向的传输包进行下一处理步骤(按照所定义的处理步骤序列的顺序)。
发送适配器110的DMA控制电路116周期性地从发送队列中检索描述符数据及这些描述符指向的传输包。这样做时,DMA控制电路116检查接在DMA控制电路116把描述符数据传送到高速缓冲存储器114的最后一个描述符后面的发送队列中的描述符。DMA控制电路116仅传送这些发送描述符的数据,这些发送描述符的状态位129-7被设定为指示现在可执行DMA控制电路116的处理(按照所定义的处理步骤序列的顺序)。例如,DMA控制电路116可检查发送描述符,直到已识别许可DMA控制电路116处理的某一数目k≥1个发送描述符,或直到识别了这样的一个描述符,其状态位129-7被设定为指示仍旧对发送描述符及其指向的传输包执行前一处理步骤。在把这些发送描述符的数据以及这些发送描述符指向的传输包传送到高速缓冲存储器114后,DMA控制电路116把这些所传送的发送描述符的状态位129-7设定为指示可对这些发送描述符及其指向的传输包执行下一处理步骤(按照所定义的处理步骤序列的顺序)。
接着,加扰器115在高速缓冲存储器114内的描述符中周期性地检查要处理的一个或多个描述符的序列及其指向的传输包。加扰器115仅处理那些被访问的描述符,这些描述符具有被设定为指示可对这些描述符执行加扰处理步骤(按照所定义的处理步骤序列的顺序)的一个或多个状态129-7。加扰器115访问控制字信息字段129-9并使用其中的信息对每个待加扰的传输包进行加扰。如上所述,可以两种方式中的一种来使用控制字信息。如果控制字信息是一加扰映射的基址,则加扰器115使用该基址和此传输包的PID信息对加扰映射进行索引。加扰映射被索引的表目指示是否要对传输包进行加扰以及在要进行加扰时加扰传输包用的控制字。或者,字段129-9中的控制字信息本身指示是否要对此传输包进行加扰以及在要进行加扰时加扰传输包所使用的控制字。如果不要对被处理描述符的传输包进行加扰,则加扰器115简单地把适当的状态位129-7设定为指示现在可对发送描述符及其指向的传输包执行下一处理步骤(按照所定义的处理步骤序列的顺序)。如果要对被处理的描述符的传输包进行加扰,则加扰器首先对此传输包数据进行加扰,把此传输包存储在高速缓冲存储器中代替未加扰的传输包,然后设定适当的状态位129-7。
数据链路控制电路112在高速缓冲存储器114内的发送描述符中周期性地检查发送描述符,这些描述符具有被设定为指示可对这些描述符执行数据链路控制电路112的处理的一个或多个状态位129-7。对于这些发送描述符,数据链路控制电路112以这些描述符中所指示的实际派送时间发送这些描述符所指向的传输包。然后,数据链路控制电路112解除这些描述符的分配(并把状态位129-7设定为无效)。示例地,每当数据链路控制电路112发送k≥1个描述符的序列时,数据链路控制电路112产生被处理器160接收的发送中断。
在不存在或不使用加扰器115的情况下,示例地,取而代之使用加扰器170。如此改变所述处理步骤的序列,从而加扰器170在处理器160后但在DMA控制电路116前处理每个发送描述符及其指向的传输包,DMA控制电路116在加扰器170后但在数据链路控制电路110前处理每个发送描述符及其指向的传输包。
带宽优化
如上所述,通常在带有程序的TS中插入空传输包。这些空传输包的存在是由于程序编码器通常必须给每个程序分配多余的带宽。这是因为对时时产生的每个ES所产生的编码数据的数量只能控制这么多。没有此“开销带宽”,经编码的ES数据会频繁地超过对其所分配的带宽量,从而使得在TS中遗漏经编码的ES数据。或者,ES编码器(尤其是视频ES编码器)不一定总是在发生传输包时隙时可获得被输出的数据。例如,特定图形的编码可能意外地占据比先前所预期的更长的时间,从而在产生经编码的视频ES数据时引起延迟。这些时隙被空的传输包所填充。
虽然在再分多路复用器节点100中必须容忍空传输包的存在,但想要减少这些浪费带宽的空传输包的数目。然而,在这样做时,不应改变每个程序的位速率且应使这些程序的端-端延迟保持恒定。依据一个实施例,利用了一种技术从而以其它待再分多路复用的传输包数据(如果这些其它传输包数据可获得的话)来替换空传输包。这是如下实现的。
首先考虑处理器160现有多个连接队列,这些队列包含待调度传输包的描述符,即还未传送到发送队列的接收队列、PSI队列、其它数据队列等中的描述符。如上所述,这些描述符可指向与接收到的入局TS有关的传输包或处理器160所产生的诸如PAT流、PMT流、EMM流、ECM流、NIT流、CAT流等其它有关程序的流。然而,现有的可以是其它类型的待调度传输包及其描述符129,诸如带有非时间敏感的“突发”或“竭尽全力(best effort)”的独有数据的传输包。例如,这些额外的传输包可包含事务处理计算机数据,例如在Web浏览器和Web服务器之间传送的数据。(再分多路复用器节点100可以是一服务器、一终端或简单地是一连到“因特网”的通信系统中的一个中间节点。可使用调制解调器、适配器140或150等来实现这种与因特网的连接。)这些数据没有恒定的端-端延迟的要求。而是,只要可获得带宽,这些数据就可以突发脉冲串(burst)来发送。
处理器160首先使得每个空的传输包被丢弃。这可通过由处理器160使用丢弃所有空传输包的接收PID处理器子程序来实现。示例地,该技术是在从适配器110以外(诸如接口140或150)的装置接收到空传输包时使用的。或者,如果空传输包是从适配器110接收到的,则处理器160可把一PID过滤器映射提供给数据链路控制电路112以丢弃每个空传输包。接着,依据接收PID处理器子程序,给将在TS中输出的每个入局传输包指派一作为传输包的接收时间(记录在其描述符中)的函数的估计离开时间以及再分多路复用器节点100内的内部缓冲延迟。在包含待调度传输包的每个连接队列中,所指派的离开时间不可能是输出的TS的连续传输包发送时间(相应于相邻时隙)。再者,将在统一输出TS中输出的传输包的两个连续描述符的估计离开时间可能隔开输出的再分多路复用TS(其中将发送这些传输包)的一个或多个传输包发送时间(或时隙)。
最好,把指向带有程序数据的传输包的描述符、指向带有PSI、ECM或EMM的传输包的描述符以及指向突发数据的描述符都保持在相互分开的连接队列中。在实现中,给每个连接队列指派一服务优先级,该优先级与在其中排队的描述符所指向的传输包中的数据类型有关。最好,给从多路复用器节点外部(例如,经由接收适配器110或接口140或150)接收到的程序数据指派最高的优先级。还可给存储再分多路复用器节点100所产生的PSI、ECM或EMM流的连接队列指派同一优先级。最后,给具有指向这种传输包(包含没有特定连续性、传播延迟或位速率要求的突发数据)的描述符的连接队列指派最低优先级。此外,与程序、PSI、ECM和EMM数据不同,不给带有突发数据的传输包的描述符指派估计离开时间或不把该时间记录在其中。
在执行发送PID处理器子程序时,处理器160把有关待调度传输包的描述符从它们各自的连接队列传送到一发送队列。在这样做时,处理器160最好在对较低优先级的连接队列诉诸服务前,服务于给定优先级的每个连接队列(即,检查其中的描述符)。在检查描述符时,处理器160确定优先级高的连接队列(即,包含带有程序PSI、ECM或EMM数据的传输包的描述符)的任何被检查描述符是否指向必须在下一实际派送时间发送的传输包,此确定根据指派给这些传输包的估计离开时间。如果是这样,则处理器160把一发送描述符分配给每个这样的传输包,把连接队列描述符中的有关信息拷贝到所分配的发送队列描述符中,并给对发送描述符所分配的每个传输包指派适当的派送时间。如上所述,偶尔,两个或多个传输包竞争同一实际离开时间(即,输出的再分多路复用TS的同一传输包时隙),在此情况下,把一传输包序列指派给连续时隙和实际离开时间。在必要时,对这些传输包进行PCR调节。
在其它时间,当处理器160服务于连接队列时,较高优先级的连接队列的传输包的估计离开时间都不会使处理器160把该传输包指派给输出的再分多路复用TS中的下一可获得的时隙和实际派送时间。通常,这会在输出的再分多路复用TS中产生空时隙。然而,在此情况下,处理器160最好服务于较低优先级的连接队列。处理器160检查较低优先级的连接队列(按照从头部指针124-3开始的顺序),选择性地把发送描述符指派给这些被检查的描述符指向的一个或多个传输包构成的序列中的每一个,以及把被检查的描述符的有关信息拷贝到所分配的发送描述符上。处理器160选择性地把(另外的)空时隙分配给这些被检查的描述符指向的每个传输包,并把有关所指派的时隙的实际派送时间存储在所分配的相应发送描述符中。
偶尔,没有被优先级高或低的连接队列中的描述符所指的传输包可分配给输出的再分多路复用TS的时隙。这发生的原因可能是优先级高的传输包的估计离开时间都不相应于时隙的实际派送时间以及不对带有突发数据的传输包进行缓冲来等待再分多路复用器节点100处的发送。或者,对带有突发数据的传输包进行缓冲,但处理器160由于以下所讨论的原因而选择不在此特定时刻对其指派发送描述符。在此情况下,发送队列中的描述符将具有相应于输出的再分多路复用TS的不连续传输包时隙序列的实际发送时间。当发送适配器110的数据链路控制电路112碰到这样的不连续时,数据链路控制电路112在未被指派传输包的每个空时隙发送一空的传输包(利用发送描述符实际派送时间)。例如,假设发送队列中与第一和第二传输包有关的两个连续描述符的派送时间指示将在第一传输包时隙处发送第一传输包以及将在第六传输包时隙处发送第二传输包。数据链路控制电路112在第一传输包时隙发送第一传输包。在第二、第三、第四和第五传输包时隙中的每一个时隙处,数据链路控制电路112自动地发送一空传输包。在第六传输包时隙处,数据链路控制电路112发送第二传输包。
注意,突发或竭尽全力数据通常没有严格的接收缓冲器约束。即,大多数突发或竭尽全力数据接收器和接收器应用程序不规定最大缓冲器尺寸,数据填充速率等。取而代之,可利用诸如发送控制协议(TCP)等传输协议,从而在接收器缓冲器填充时,接收器简单地丢弃随后接收到的数据。接收器不确认接收到所丢弃的包,源重新发送未被确认接收到的带有数据的包。这有效地节制了至接收器的有效数据发送速率。虽然此节制技术可有效地实现至接收器的准确数据发送速率,但它有两个问题。首先,网络必须支持双向通信。所有的有线电视网络中只有一部分且没有直接的广播卫星网络支持发送器与接收器之间(不存在电话返回路径)的双向通信。在任何支持双向通信的情况下,从接收器到发送器的返回路径的带宽基本上小于从发送器到接收器的前向路径,且该返回路径通常必须由多个接收器共享。因而,把TCP积极地用作节制机构利用了返回路径(它还必须用于其它接收器至发送器的通信)中的大部分。此外,不想要地浪费了发送被丢弃的传输包的前向路径的带宽。
最好,突发或竭尽全力数据的插入不应使这些缓冲器上溢。示例地,假设某一(或典型的)接收器缓冲器的占有率及其中的数据的未决性,PID处理器子程序可控制插入突发数据的速率,以实现某一平均速率,从而不超过某一峰值速率或甚至简单地防止接收器缓冲器上溢。因而,甚至在处理器160可获得插入一个或多个空的传输包时隙的突发或竭尽全力数据(不能获得其它插入其中的数据)时,处理器160可选择仅把突发数据插入某些空的传输包时隙中,选择把突发数据插入交替或隔开的传输包时隙中,或选择不把突发数据插入任何空传输包时隙中,从而调整至假定的接收器突发数据缓冲器的数据发送,或防止该缓冲器的上溢。此外,旨在多个不同接收器的传输包本身可以是交错的(interleaved),而与它们何时产生无关,以保持接收器的某一数据发送速率。
在任何情况下,再分多路复用器节点100都提供了优化TS的带宽的简单方法。丢弃入局TS中的所有空传输包。如果可获得传输包,则把它们插入通常会分配给被丢弃的空传输包的时隙中。如果不能获得传输包,则通过正常派送时间指派过程给这些时隙留下空隙。如果传输包的派送时间都不指示应在输出的再分多路复用TS的下一可获得的时隙处发送该传输包,则数据链路控制电路112自动地把空传输包插入这一时隙。
这种带宽优化方案的优点是双重的。第一,就输出的再分多路复用TS而言实现了带宽增益。现在把通常在空的传输包上所浪费的带宽用于发送信息。第二,可在TS中输出竭尽全力或突发数据,而不对其具体地分配带宽(或分配少得多的带宽)。例如,假设一输出的再分多路复用TS的带宽为20Mbits/sec。要对带有四个程序的TS(每个为5Mbits/sec)进行再分多路复用并把它们输出到20Mbits/sec的再分多路复用TS。然而,可把带有这四个程序的TS中每一个带宽的大约5%分配给空的包。这样,传送带有竭尽全力或突发数据的传输包可获得(名义上)高达1Mbit/sec,然而对于端-端延迟的恒定性没有任何保证或限制。
对未定时的数据进行重新定时
如上所述,可经由异步接口140接收待再分多路复用的程序数据。因未把接口140及其所连的通信链路设计成在任何特定时间发送数据及将在所传送的数据中引入可变端-端延迟从而会引起问题。在比较中,可对经由异步通信链路(诸如连到接收适配器110)在再分多路复用器节点100处接收到的程序数据进行这样的假设,即将输出其所有接收到的传输包而没有抖动。这是因为所有这些包在再分多路复用器节点100处都引起同一延迟(即,内部缓冲延迟),或者如果它们不引起同一延迟(因如上所述的时隙竞争的结果),则知道是附加的延迟,调节这些PCR以除去这些附加延迟所引入的任何抖动。此外,进一步校正PCR的内部时钟机构相对于每个程序的系统定时时钟的偏移,以及校正PCR的调度输出时间与实际输出时间之间相对于输出的TS的时隙边界的不对准。然而,在从接口140接收到传输包的情况下,在再分多路复用器节点100处以可变位速率以及不恒定的抖动时间接收这些传输包。因而,如果把传输包的实际接收时间用作估计传输包的离开的基础,则抖动仍将保持。抖动的PCR不仅在解码器处造成解码和呈现不连续,而且它们还使缓冲器上溢和下溢。这是因为每个程序的位速率被仔细地调整(假设将把这些数据从解码器缓冲器中移去以用于解码,并相对于程序的系统定时时钟进行呈现)。
依据一个实施例,如下所述来克服这些问题。处理器160识别接收到的TS的每个程序的PCR。使用这些PCR,处理器160确定PCR对之间的每个程序的传输包的分段传输包速率。给定每个程序的每个(交错的)传输包序列的传输包速率,则处理器160可根据应接收到每个传输包的时间来指派估计离开时间。
示例地,当接口140接收到程序数据时,把接收到的程序数据从接口140传送到主存储器120的包缓冲器122。具体来说,接口140以某种形式的接收队列来存储接收到的程序数据。最好,接收到的程序数据为传输包的形式。
接口140在接收到数据时周期性地中断处理器160。接口140可在每当接收到任何数量的数据时中断处理器160,或者可在接收到一定数量的数据后中断处理器160。如适配器100,专门为接口140设计接收PID处理器子程序指针表402。被这些指针所指向的子程序在许多方面类似于被与接收适配器110有关的接收PID处理器子程序指针表中的指针所指向的子程序。然而,这些子程序至少在以下方面是不同的。首先,异步接口140不必分配具有图2所示格式的描述符,而且也不必以传输包的形式来接收程序数据。例如,程序数据可以是PES包数据或PS包数据。在这种情况下,示例地,处理器160对所保留的传输包的PID执行的子程序包括用于把程序数据插入传输包中的处理。此外,可设置把指派给该适配器140的队列的接收描述符分配给每个接收到的传输包。处理器160把指向相应传输包的存储单元的指针存储在每个所分配的描述符的指针字段129-4中。示例地,最初,使实际接收时间字段129-5是空白的。
此外,包含PCR的每个传输包还包括以下处理。在第一次接收到带有任何程序的PCR的传输包时,处理器160从任何适配器110的基准时钟发生器113(或被同步锁定于适配器110的基准时钟发生器113的任何其它基准时钟发生器113)中获得一时间标记。如下所述,基准时钟113被同步锁定。把获得的时间标记指派给第一个曾经接收到的带有一程序的PCR的传输包作为该传输包的接收时间。注意,在此第一接收到的带有PCR的传输包之前可能已接收到其它待再分多路复用的传输包。可把再分多路复用器节点100处的已知内部缓冲延迟添加到此接收时间标记上,以产生被指派给传输包(包含一特定程序的第一曾经接收到的PCR)的估计离开时间。
在接收到带有一特定程序的PCR的第二后续传输包后,处理器160可估计具有异步接口140接收的该程序的PCR之间的传输包速率。这是如下实现的。处理器160形成该程序的两个相继PCR之差。然后,处理器把此差值除以同一程序中包含第一PCR的传输包和包含该程序的第二PCR的传输包之间的传输包数目。这产生了该程序的传输包速率。处理器160通过把该程序的传输包速率乘以每个这样的传输包与包含第一PCR的传输包的偏移或偏离来估计程序的这些PCR之间程序的每个传输包的离开时间。此偏移是通过从计算估计离开时间的传输包队列位置中减去带有第一PCR的传输包的传输包队列位置来确定的。(注意,一传输包的队列位置相对于所有接收到的流的所有接收到的传输包。)然后,处理器160把指派给包含第一PCR的传输包的估计离开时间加到如此产生的积中。示例地,处理器160把每个这样的传输包的估计离开时间存入指向它们的描述符的字段129-10。
在把一估计离开时间标记指派给一程序的传输包后,处理器160可丢弃不想要在TS中输出的传输包(依据用户规定)。然后,对TS中携带的每个程序的每一对相继PCR连续地重复以上过程。然后,在处理器160执行发送PID处理器子程序期间,可把具有估计离开时间的描述符的数据传送到适当的发送队列。注意,可能在接收到该程序的第一PCR之前接收到该程序最初的一些传输包。对于这些传输包,仅把传输包速率估计为该程序的第一和第二PCR之间的传输包速率(即使这些包不在第一和第二PCR的传输包之间)。然后,如上所述确定估计离开时间。
如同从诸如适配器110等同步接口接收到PCR,对经由异步接口140接收到的PCR,校正每个程序时钟与用来指派估计接收时间标记及输出传输包的本地基准时钟113之间的偏移。与从适配器110接收到的传输包不同,从接口140接收到的传输包没有为它们所记录的实际接收时间标记。这样,不存在可从中准确地测量偏移的有关每个传输包的基准时钟。取而代之,处理器160使用再分多路复用器节点100中的发送队列长度的测量或其中的当前延迟来估计偏移。理想地,发送队列长度应不从再分多路复用器节点100中的预定已知延迟而改变。发送队列长度的任何改变都是适配器110的基准时钟发生器113相对于该程序的程序时钟的偏移的指示。这样,处理器160依据当前发送队列长度与所期望的理想发送队列长度之差来向上或向下调节偏移的测量。例如,每当把一发送描述符分配给一传输包时,处理器160测量当前发送队列长度并把它从再分多路复用器节点100中的理想发送队列长度中减去。此差值就是偏移。使用如此计算的偏移来调节PCR和携带这些PCR的传输包的估计离开时间。即,从经由异步接口接收到的传输包的PCR中减去如此计算的偏移,该接口置于相应于该传输包的估计离开时间的时隙之后的时隙。同样,可在指派实际派送时间前从带有PCR的传输包的估计离开时间中减去此偏移。注意,此估计的偏移仅用于从异步接口140接收到的传输包,而不用于经由诸如适配器110等同步接口接收到的其它传输包。
现在考虑竞争的问题。当两个(或更多)接收到的传输包争着要指派给输出的再分多路复用TS的同一传输包时隙(和实际派送时间)时,把一传输包指派给该时隙,并把另一传输包指派给下一时隙。如果另一传输包包含PCR,则以该PCR偏离其理想时隙的时隙数来调节此PCR,以反映指派给后来的时隙。
辅助输出定时
如上所述,接口140在任何特定时间都不接收传输包。同样,接口140在任何特定时间都不发送传输包。然而,即使接口140及相连的通信链路都不提供恒定的端-端延迟,但想要尽可能地减少端-端延迟的变化。再分多路复用器节点100提供把这种变化减到最小的方式。
依据一个实施例,处理器160对将经由接口140输出的每个传输包分配被指派给接口140的发送队列的一个发送描述符。这可使用指派给接口140的输出端口的发送队列中适当的一组发送PID处理器子程序。此外,处理器160指派一用于管理从此接口140的数据输出的适配器110。虽然,在技术上把发送队列“指派”给接口140,但实际上,由被指派用来管理从接口140的输出的适配器110的DMA控制电路116获得对指派给接口140的描述符队列的描述符的控制。数据链路控制电路112访问这些描述符,如下所述,这些描述符可保存在高速缓冲存储器114中。因而,实际上,由检查该队列的数据链路控制电路112所产生的中断来触发指派给此队列并由处理器160来执行的这组发送PID处理器子程序。
如上所述,响应于此中断,处理器160检查待调度的描述符,即在连接队列中,从待从接口140的输出端口输出的这些连接队列中选择一个或多个描述符并把发送描述符分配给位于有关接口140的输出端口的发送队列尾部处的连接队列的选中描述符。与输出如上所述的传输包不同,处理器160还可收集有关连接队列的选中描述符的传输包,且实际上把它们组织成为类似于队列的缓冲器(如果这些缓冲器是接口140所必需的话)。
如上所述,DMA控制电路116获得对接在DMA控制电路116获得控制的最后一个描述符后的一个或多个描述符的序列的控制,该序列与接口140的输出端口有关。(注意,是否检索相应于这些描述符的传输包都无关。由于数据链路控制电路112控制接口140处的传输包输出,所以不从连到该数据链路接口112的输出接口中输出传输包。或者,数据链路控制电路112完全可如上所述进行操作,从而产生输出TS的镜象(mirror)拷贝。在此情况下,还必须提供可被适配器110访问的每个传输包的第二拷贝)。如上所述,数据链路控制电路112检索高速缓冲存储器114中的每个描述符,并根据记录在字段129-5中的指示派送时间来确定相对于基准时钟发生器113所指示的时间要在何时发送相应的传输包。大致在基准时钟发生器113的时间等于此派送时间时,数据链路控制电路112对处理器160产生一中断,以指示现在应发送传输包。这可以是与数据链路控制电路112在发送k≥1个传输包时所产生的相同的中断。然而,此中断最好是每k=1个传输包时产生的。与之响应,处理器160检查发送PID处理器子程序的适当指针表,并执行正确的发送PID处理器子程序。在执行此发送PID处理器子程序时,处理器160发出使接口140发送一传输包的命令或中断。这使得大致在基准时钟发生器113的当前时间与相应于传输包的描述符中写入的派送时间匹配时从接口140的输出端口发送刚好下一传输包。注意,某些总线和中断等待时间将发生在时间链路控制电路112发出中断和接口140输出传输包之间。此外,某些等待时间可能发生在与接口140相连的通信链路上(由于它因冲突等而变得繁忙)。通过处理器160慎重地选择传输包的派送时间,可在一定程度上适应平均数量的等待时间。无论如何,传输包的输出可相当接近于正确时间,纵使此接近程度小于使用适配器110或接口150可实现的程度。此外,处理器160还如上所述把一个或多个描述符传送到指派给接口140的输出端口的发送队列。
适配器间基准时钟锁定
利用多个时钟发生器的任何同步系统的特定问题在于每个发生器的时间或计数与其它时钟发生器不完全相同。更有甚者,每个时钟发生器的计数可能偏离(例如,因制造公差、温度、功率变化等的结果)。这种担心在环境10中也存在。每个再分多路复用器节点100、数据注入器(injector)50、数据提取器60、控制器20等都可具有一基准时钟发生器,诸如再分多路复用器节点100中适配器110的基准时钟发生器113。希望锁定同一TS信号流动路径中的至少每个节点50、60或100的基准时钟发生器,从而它们具有相同时间。
在广播环境中,使产生、编辑或发送程序信息的所有设备同步是有用的。在模拟广播中,这可使用黑短脉冲串(black burst)发生器或SMPTE时间代码发生器。这种同步使实时视频馈送能够无缝接合,且减少了有关把异步视频馈送耦合在一起的噪声。
在再分多路复用器节点100中,对同步的需求更为重要。这是因为根据一个基准时钟来调度接收到的传输包的离开,且实际上根据第二基准时钟来检索接收到的传输包的派送。假设再分多路复用器节点100中的传输包所引起的任何等待时间都相同。然而,此假设仅在估计包离开所依据的基准时钟与实际派送传输包所依据的基准时钟之间只存在可忽略的偏移时才有效。
依据一个实施例,提供了多种锁定即让基准时钟发生器113同步的技术。在每一种技术中,相对于“主”基准时钟发生器周期性地调节每个“从”基准时钟发生器的时间。
依据第一种技术,把一适配器110的一个基准时钟发生器113指定为主基准时钟发生器。每个其它的适配器110的每个其它的基准时钟发生器113指定为从基准时钟发生器。处理器160周期性地获得每个基准时钟发生器113(包括主基准时钟发生器和从基准时钟发生器)的当前系统时间。示例地,这是使用在特定时间周期内“休眠”(即,空闲)、唤醒并使处理器160获得每个基准时钟发生器113的当前时间的过程来实现的。处理器160把每个从基准时钟发生器113的当前时间与主基准时钟发生器113的当前时间相比较。根据这些比较,处理器160调节每个从基准时钟发生器113,以使它们相对于主基准时钟发生器113同步。此调节可简单地通过对基准时钟发生器113进行重新加载、把调节的时间值加到基准时钟发生器113的系统时间上或(过滤)加速或减缓电压控制振荡器(它把时钟脉冲提供给基准时钟发生器113的计数器)的脉冲来实现的。最后一种调节形式类似于MPEG-2系统规定中所述的锁相回路反馈调节。
现在考虑主基准时钟发生器和从基准时钟发生器不在同一节点中而是通过一通信链路相连的情况。例如,主基准时钟发生器可位于第一再分多路复用器节点100中,从基准时钟发生器可位于第二再分多路复用器100中,其中第一和第二再分多路复用器节点通过一在第一和第二再分多路复用器节点100的各适配器110之间延伸的通信链路相连。周期性地,响应于定时器过程,处理器160发出获得主基准时钟发生器113的当前时间的命令。适配器100通过把此当前时间提供给处理器160来响应。然后,处理器160经由此通信链路把此当前时间发送到每个其它的从基准时钟。然后,例如如上所述调节从基准时钟。
应注意,可把任何时间源或时间服务器用作主基准时钟发生器。经由具有恒定端-端延迟的专用通信链路把该主基准时钟发生器的时间发送到包含从基准时钟的每个其它节点。
如果一再分多路复用器30的两个或多个节点20、40、50、60或100在地理上分开很大的距离,则使每个节点的基准时钟发生器与任何其它节点的基准时钟发生器同步是不可能的。这是因为在一通信链路上发送的任何信号可能经历某些有限的传播延迟。这种延迟在传输包尤其是带有同步时间标记的传输包的发送中引起等待时间。取而代之,使用一与再分多路复用器30的每个节点等距离的基准时钟源是可能的。众所周知,美国政府保持地面和卫星基准时钟发生器。这些源在公知的载波信号上可靠地发送时间。诸如再分多路复用器节点100等每个节点可设有诸如GPS接收器180等接收器,该接收器能接收广播的基准时钟。每个节点20、40、50、60或100处的处理器160(或其它电路)从接收器180周期性地获得基准时钟。处理器160可把获得的时间传送到适配器110,以装入基准时钟发生器113中。然而,最好,处理器160向适配器110发出获得基准时钟发生器113的当前时间的命令。然后,处理器160发出根据从接收器180获得的时间与基准时钟发生器113的当前时间之间的不同来调节(例如,加速或减缓)基准时钟发生器113的电压控制振荡器的命令。
网络化再分多路复用
给出如上所述的操作,可在一网络上分配再分多路复用的各种功能。例如,可通过各种通信链路、适配器110和接口140和150使多个再分多路复用器节点100互连。可由控制器20(图1)控制这些再分多路复用器节点100中的每一个以共同起到单个再分多路复用器30的作用。
为了方便或灵活性起见,可能想要这种网络分布式再分多路复用器30。例如,可把一再分多路复用器节点100连到多个文件服务器或存储器件40(图1)。可把第二再分多路复用器节点100连到多个其它输入源,诸如摄像机或解调器/接收器。可把每个其它的再分多路复用器节点100连到一个或多个发送器/调制器或记录器。或者,可如此连接再分多路复用器节点100以提供冗余功能继而在一再分多路复用器节点100失效或把它有目的地从服务中取出的情况下的容错。
考虑图3所示的第一网络再分多路复用器30′。在此情况下,经由诸如100BASE-TX以太网等异步网络把多个再分多路复用器节点100′、100″、100相互连接起来。前两个再分多路复用器节点100′、100″中的每一个接收四个TS(TS10-TS13或TS14-TS17)并产生单个再分多路复用的输出TS(TS18或TS19)。第三再分多路复用器节点100接收TS(TS18和TS19)并产生输出再分多路复用TS(TS20)。在图3所示的例子中,再分多路复用器节点100经由其适配器100(图2)接收从解调器/接收器实时发送的TS(TS10-TS13)。另一方面,再分多路复用器100″经由同步接口150(图2)从一存储器件接收预先存储的TS(TS14-TS17)。再分多路复用器节点100′和100″中的每一个经由至再分多路复用器节点100的异步(100BASE-TX以太网)接口140(图2)的异步(100BASE-TX以太网)接口140(图2)把其各自的输出再分多路复用TS即TS18或TS19发送到再分多路复用器节点100。有利的是,再分多路复用器节点100′和100″中的每一个使用上述辅助输出定时技术,把这种通信所引起的端-端延迟的变化减到至少。在任何情况下,再分多路复用器节点100使用上述对未定时数据进行重新定时的技术来估计TS18和TS19中每个程序的位速率并对TS18和TS19去抖动(dejitter)。
任选地,在系统30′的至少一个通信链路上还可包括突发器件200。例如,如同在LAN中,可与其它终端一起共享通信媒体来进行普通数据处理。然而,还为了把数据注入TS(例如,TS20)中和/或从中提取数据而设置突发器件200。例如,突发器件200可以是提供因特网访问的服务器、Web服务器、Web终端等。
当然,这仅仅是网络分布式再分多路复用器的一个例子。其它配置也是可能的。例如,连接有这些节点的网络的通信协议可以是TAM、DS3等。
应注意网络分布式再分多路复用器30′的两个重要的性质。第一,在所示的特定网络中,任何输入端口可接收来自任何输出端口的诸如突发数据或TS数据等数据。即,再分多路复用器节点100′可接收来自再分多路复用器节点100″或100或突发器件200的数据,再分多路复用器节点100″可接收来自再分多路复用器节点100′或100或突发器件200的数据,再分多路复用器节点100可接收来自再分多路复用器100′或100″或突发器件200中任一个的数据,突发器件200可接收来自再分多路复用器节点100′、100″或100中任一个的数据。第二,执行数据提取和丢弃的再分多路复用器节点,即再分多路复用器节点100可在同一通信链路上接收来自不止一个源即再分多路复用器100′或100″或突发器件200的数据。
由于这两个性质,所以从源节点到再分多路复用器内的目的地节点的传输包的“信号流动模式”与节点连接的网络拓扑结构无关。换句话说,网络分布式再分多路复用器30′中的传输包所遍历的节点和通信链路路径与节点通过通信链路的精确物理连接无关。因而,可使用非常普通的网络拓扑结构——可以基本上任意的拓扑结构(总线、环、链、树、星形等)来连接再分多路复用器节点100,而这些再分多路复用器节点仍能对TS进行再分多路复用,以实现实际任何类型的节点-节点信号流动模式。例如,节点100′、100″、100和200以总线拓扑结构连接。还可实现以下用于所发送的数据的信号流动模式中的任一种:从节点100′到节点100″,然后到节点100;从节点100′和100中的每一个平行地到达节点200;从节点200和100′平行地到达节点100″,然后从节点100″到节点100等。在此类型的发送中,可能需要时分多路复用来交错不同组通信节点之间的信号流。例如,在图3所示的信号流中,在共享的通信媒体上时分多路复用TS18和TS19。
以上讨论旨在对本发明进行说明。本领域内的技术人员可设计出大量的替代实施例,而不背离以下权利要求书的精神和范围。
本申请是申请日:1999.01.07,申请号为99803994.2(国际申请号为PCT/US99/00360),名称为“带有视频程序的传输流再分多路复用器”的申请的分案申请。