媒体数据包的同步播放
技术领域
本发明涉及用来同步播放媒体数据包的一种方法、一种媒体源、一种媒体接收器和一种媒体处理系统。
背景技术
人类利用声音的两个参数来确定声源的位置:声音的幅度和相位。由于声音的强度随着它通过空气传播而下降,离声源更远的耳朵收到的声音电平低于离声源较近的耳朵收到的声音电平。此外,由于声音在空气中传播需要时间,因此较远的耳朵比较近的耳朵收到信号的时刻要晚一些。实验表明,人类将两个信道大于6~20微秒的相位差当成声源发生了位移,而将大于35~40毫秒相位差的两个信号当成两个不同的声音。
对于播放(发射)音频声音的音频系统,这就意味着属于多声道信号例如立体声信号中一个声道的音频信号应该与属于同一个多声道信号,例如同一个立体声信号,的所有其它对应音频信号,精确地同时播放,也就是在同一时刻播放。换句话说,不同音频输出装置,例如扬声器,的严格同步是必要的,因而在输出过程中多声道信号不同声道之间的时间关系能够得到满足。在其它音频应用中,例如杜比环绕声系统,或者在音频-视频应用中,也会有相似的要求。
数字传输音频系统同样必须满足上面提到的严格同步要求,在这些系统中音频信号从媒体源向音频输出装置(以后将更加一般地称之为媒体接收器(Media Sink),它们还包括用任意其它方式处理收到的多声道信号的装置)的传输是以媒体数据包(以后也叫做媒体数据包)的形式进行的。每一个音频输出装置必须在严格正确的时刻播出媒体数据包的声音(播放媒体数据包),也就是在另一个媒体输出装置播放例如属于同一个立体声信号,但是属于另一个声道的对应的媒体数据包的时刻播放。如果媒体数据包的播放同步得不好,也就是同一个立体声信号不同声道的对应的媒体数据包在不同的输出装置里是在不同时刻播出的,就会发生上面提到的问题,也就是立体声被最终认为来自另一个方向,或者被当作两个不同的声音(以下将这些问题叫做听觉失真)。
因特网工程任务组(IETF)在它的建议请求RFC1889中提供了一种实时应用传输协议(RTP),以后将它叫做RTP。这个实时传输协议(RTP)包括一个控制协议RTCP,它从数据发送方提供同步信息,从数据接收方提供反馈信息。考虑媒体配送的流同步,这一协议提供所谓的发送方报告(SR),这些报告提供采样时钟信号和全局时钟信号之间的一种相关信息。
发送方报告(SR)从媒体源发送给媒体接收器,其中有两个时间标记。一个时间标记用本地采样时钟的时间单位表明一个时刻(本地采样时钟时间),另一个表明用全局时钟信号的时间单位表示的同一个时刻(全局时钟时间)。同时产生SR的这两个时间标记。假设在其间传送媒体流的媒体源和媒体接收器都能够获得全局时钟时间。因而媒体接收器能够获得全局时钟时间,从而根据全局时钟调整它自己的采样时钟。
RTP的主要目的是为因特网视频会议提供一种手段,重新同步同一个媒体接收器不同流中收到的视频和音频信号。这一协议不是为了保证数字传输音频系统中不同媒体接收器里媒体数据包能够同步播放。因此,用这一协议向媒体接收器发送媒体数据包的时候,不同媒体接收器中播放的媒体数据包不能很好地同步,也就是说,属于同一个立体声信号的媒体数据包在不同的媒体接收器,例如扬声器,中不能在同一时刻播放。这样,只将这一RTP用于数字传输音频系统的时候,就会发生上面提到的听觉失真。
听觉失真这样的问题还会因为个人计算机(PC)或者个人数字助理(PDA)这样的大多数非实时源装置中存在不可靠和不精确的时钟信息而发生。这些装置假设全局时钟信息(全局时钟时间)满足应用场合规定的所有要求。但是事实可能并非如此。非实时装置通常都是通过一个外部连接,例如USB或者RS232,来获得实际时间(全局时钟时间)从而产生媒体数据包的时间标记。因为通常设计用于这种外部连接的总线系统不是为了以非常短的传送时间来传送,因此将它用于PC或者PDA来确定媒体数据包时间标记的时候,时钟信息(全局时钟时间)就可能丧失它的精度。这就意味着媒体数据包的时间标记给出的全局时钟时间相对于媒体数据包的实际发送全局时钟时间而言可能是错误的。此外,两个时间标记给出的两个时刻之间的时间差可能会发生变化,即使对应的两个实际全局时钟时间之间的时间差没有改变。其原因是外部连接传输全局时钟信息给应用所需要的时间可能会变化。由于媒体数据包的时间标记一般都被媒体接收器用来确定每个数据包的播出时间,媒体数据的时间标记给出的不精确和统计学上变化的时间会导致上面提到的听觉失真,因为属于同一个立体声信号的媒体数据包可以由不同的媒体接收器在不同的时刻播出。
发明内容
本发明的一个目的是提供一种媒体源、一种媒体接收器和一种媒体处理系统,用来同时播放媒体数据包,还提供用于让这些装置工作的对应方法,从而在不同媒体接收器播放声音的时候避免听觉失真。
为了本发明第一个实施方案的目的,权利要求1给出了一种媒体源,在权利要求5中给出了一种媒体接收器,在权利要求10中给出了一种媒体处理系统。此外,在权利要求17、21和26中给出了对应于第一个实施方案的方法。在它们后面的附属权利要求中分别给出了它们的优选实施方案。为了本发明第二个实施方案的目的,权利要求11给出了一种媒体源,权利要求14给出了一种媒体接收器,权利要求16给出了一种媒体处理系统。此外,在权利要求27、30和32中给出第二个实施方案的相应方法。在对应的附属权利要求中给出了它们的优选实施方案。
因此,本发明的目的是用两个不同的实施方案实现的,它们具有相同的发明思想。在这两个实施方案中,确定一个共同的播放时刻,并且将它们与每个媒体数据包联系起来,媒体接收器严格在这个共同播放时刻播放媒体数据包。在第一个实施方案中,共同的播放时刻是通过在媒体数据包的时间标记所表明的时间加上一个播放时间偏移,由媒体接收器确定的。媒体源确定播放时间偏移,传送给媒体接收器。在第二个实施方案中,媒体源确定每个数据包的共同播放时刻,并且用对应时间标记的形式与每个媒体数据包一起发送。
本发明第一个实施方案的解决方案:
本发明的媒体源能够发送有时间标记的媒体数据包,给下面给出的一个或者多个接收媒体接收器,每个媒体数据包的时间标记都说明相应媒体数据包的产生时刻,用于确定播放时间偏移,还用于发送播放时间偏移给下面给出的一个或者多个接收媒体接收器。
本发明的媒体源最好包括能够确定采样时钟时间的一个采样时钟,能够确定全局挂钟时间,用于不时地发送控制数据包给下面给出的所述一个或者多个接收媒体接收器,所述控制数据包有两个控制数据包时间标记,用来说明时间上的同一时刻,其中的第一个控制数据包时间标记是按照所述全局挂钟时间的时间单位度量或者定义的,第二个控制数据包时间标记是按照所述采样时钟时间的时间单位度量或者定义的。
此外,媒体数据包的所述时间标记最好能够用所述采样时钟时间的时间单位来说明有所述时间标记的媒体数据包的产生时间。媒体源最好还被设计成发送同样的媒体数据包给两个或者多个不同的接收媒体接收器。
本发明的媒体接收器用于从上面给出的媒体源接收有时间标记的媒体数据包,还用于确定播放时间偏移,精确地确定全局挂钟时间,通过将有时间标记的所述媒体数据包说明的时间加上所述播放时间偏移,确定收到的每个有时间标记的媒体数据包的共同播放时间,在收到的有时间标记的媒体数据包的共同播放时刻到了的时候播放收到的有时间标记的每个媒体数据包。
媒体接收器用于从上面给出的媒体源接收一次所述播放时间偏移,与至少一个其它媒体接收器协商所述播放时间偏移。媒体接收器还能够从上面给出的媒体源接收控制数据包,其中有第一个控制数据包时间标记,说明用采样时钟时刻的时间单位度量或者定义的某个时刻,第二个控制数据包时间标记说明用全局挂钟时间的时间单位度量或者定义的同一个时刻,根据第一个和第二个控制数据包时间标记,将利用采样时钟时间的单位度量或者定义的有时间标记的媒体数据包的时间标记说明的时间转换成用全局挂钟时间的单位度量或者定义的时间。
在一个优选实施方案中,该媒体接收器有一个缓存器,用于储存媒体数据包,直到所述共同播放时间。
本发明的媒体处理系统包括上面给出的一种媒体源和上面给出的一种媒体接收器。
本发明第一个实施方案中用于媒体源的方法包括以下步骤:发送有时间标记的媒体数据包给一个或者多个接收媒体接收器,每个媒体数据包的时间标记能够说明产生对应媒体数据包的时间,确定播放时间偏移,发送所述播放时间偏移给所述一个或者多个接收媒体接收器。
最好执行以下步骤:确定采样时钟时间,确定全局挂钟时间,偶尔发送一次控制数据包给所述一个或者多个接收媒体接收器,所述控制数据包有两个控制数据包时间标记,它们说明同一时刻,它的第一个控制数据包时间标记是用所述全局挂钟时间的时间单位度量或者定义的,它的第二个控制数据包时间标记是用所述采样时钟时间的时间单位度量或者定义的。
媒体数据包的所述时间标记最好能够用所述采样时钟时间的时间单位说明产生有时间标记的所述媒体数据包的时刻。此外,最好是将同样的媒体数据包发送给两个或者多个不同的媒体接收器。
本发明第一个实施方案中用于媒体接收器同步播放媒体数据包的一种方法包括以下步骤:从媒体源接收有时间标记的媒体数据包,确定播放时间偏移,精确地确定全局挂钟时间,通过将有时间标记的所述媒体数据包的时间标记说明的时间加上所述播放时间偏移来确定收到的有时间标记的每个媒体数据包的共同播放时刻,在确定的收到的有时间标记的媒体数据包的共同播放时刻到来的时候播放收到的有时间标记的每个媒体数据包。
从媒体源接收一次所述播放时间偏移,或者与至少一个其它媒体接收器进行协商。
此外,最好是执行以下步骤:从权利要求1~4中的任意一个所述的媒体源接收控制数据包,其中有第一个控制数据包时间标记,说明用采样时钟时间的时间单位度量或者定义的特定时刻,接收第二个控制数据包时间标记,它说明用全局挂钟时间的时间单位度量或者定义的同一个时刻,根据第一个和第二个控制数据包时间标记信息,将利用采样时钟时间的单位度量或者定义的有时间标记的媒体数据包的时间标记说明的时间转换成全局挂钟时间度量或者定义的时间。
将媒体数据包储存在一个缓存器中,直到共同的播放时刻。
在本发明第一个实施方案中同步播放媒体数据包的方法中,媒体处理系统执行上面给出的媒体源的方法中的步骤以及上面给出的媒体接收器的方法的步骤。
本发明第二个实施方案的解决方案:
实现本发明第二个实施方案中本发明的目的的媒体源用于确定播放时间偏移,并且通过将确定的播放时间偏移加上当前时间来确定共同的播放时刻,还用于发送有时间标记的媒体数据包给下面说明的一个或者多个媒体接收器,有时间标记的媒体数据包的时间标记说明所述媒体数据包的共同播放时刻。
该媒体源最好有一个能够确定采样时钟时间的一个采样时钟,用于读取全局挂钟时间一次,将所述采样时钟给出的时间周期加上只是一次读出的全局挂钟时间,计算所述当前时间。此外,媒体源还用于发送同样的媒体数据包给两个或者多个不同的接收媒体接收器。
本发明第二个实施方案中的媒体接收器用于从上面给出的媒体源接收有时间标记的媒体数据包,能够精确地确定全局挂钟时间,并且能够为收到的有时间标记的每个媒体数据包确定共同的播放时间,这个时间就是有时间标记的媒体数据包的时间标记所表明的时间。媒体接收器最好有一个缓存器,用于储存媒体数据包,直到共同的播放时刻。
本发明第二个实施方案中的媒体处理系统具有上面第二个实施方案中给出的媒体源和上面第二个实施方案给出的媒体接收器。
本发明中第二个实施方案里针对媒体源,使得媒体数据包能够同步播放的方法,包括以下步骤:确定播放时间偏移,通过将确定出来的播放时间偏移加上当前时间来确定共同的播放时间,将有时间标记的媒体数据包发送给一个或者多接收媒体接收器,有时间标记的媒体数据包的时间标记说明媒体数据包的所述共同播放时刻。
最好执行以下步骤:确定采样时钟时间,通过只读一次全局挂钟时间,将所述采样时钟给出的时间加上只用一次读出来的全局挂钟时间来计算所述当前时间。此外,还将同样的媒体数据包发送给两个或者多个不同的接收媒体接收器。
本发明第二个实施方案中用于媒体接收器,使得媒体数据包能够同步播放的方法包括以下步骤:从媒体源接收有时间标记的媒体数据包,精确地确定全局挂钟时间,为收到的有时间标记的每个媒体数据包确定共同的播放时间,这个时间就是有时间标记的媒体数据包的时间标记所说明的时间。
媒体数据包最好储存在一个缓存器里,直到共同的播放时刻。
本发明第二个实施方案中用于媒体处理系统,使得媒体数据包能够同步播放的方法包括用于媒体源的方法的那些步骤和用于媒体接收器的方法的那些步骤。
因此,根据本发明,媒体接收器能够严格同步地播放媒体数据包,因为确定了一个共同的播放时刻,并且将它与相应的媒体数据包联系起来,这些媒体数据包在每个媒体接收器的这个严格的播放时刻播放。媒体接收器能够严格按播放时间播放是因为媒体接收器精确地确定了全局挂钟时间,因为它们一般都是用专用硬件,不需要很长的处理时间,也就是说,这些媒体接收器与全局挂钟时间严格同步。这个共同播放时间与只用一次读出的全局挂钟时间同步,因而不同媒体数据包的两个时间标记所说明的两个时间之间没有任何差别,就象上面提到的现有技术系统中那种情形一样。另一方面,从精度的角度来说,本发明的媒体源得到全局挂钟时间的机会有限,因为可以选择用来加的播放时间偏移,从而在任何时候都能够补偿这种不精确。
附图说明
下面将参考附图,以示例性实施方案的形式详细地介绍本发明及其优点,在这些附图中:
图1说明的是媒体源发送有时间标记的媒体数据包给两个媒体接收器这种情形的一个实例;
图2说明媒体源和n个媒体接收器对同一个全局挂钟时间的访问;
图3是一个流程图,它说明从媒体源向接收和处理媒体数据包的两个媒体接收器发送媒体数据包的过程;
图4说明将PC用作媒体源,将两个扬声器作为媒体接收器的一个实例;
图5画出了说明其中采用了符合RTP标准的控制数据包的媒体源和媒体接收器之间的交互过程的一个流程图;
图6画出了说明本发明第一个可选实施方案中媒体源和媒体接收器之间交互过程的一个流程图;
图7说明本发明的第二个可选实施方案,其中的媒体接收器在它们自身之间协商播放时间偏移。
具体实施方式
图1说明与两个同步媒体接收器,也就是第一个媒体接收器1和第二个媒体接收器2,进行媒体配送会话的基本情形。媒体源101将有时间标记的第一个媒体数据包1021发送给第一个媒体接收器1,将有时间标记的第二个媒体数据包1022发送给第二个媒体接收器2。媒体数据包的时间标记说明源产生这个媒体数据包的时刻。如果是编码数据,第一个媒体接收器1和第二个媒体接收器2就对媒体数据包进行译码。然后将数据储存在相应的缓存器里,也就是第一个媒体接收器1的第一个缓存器1041和第二个媒体接收器2的第二个缓存器1042,直到相应数据包的共同播放时刻105。这个共同播放时刻105是媒体接收器将一次确定的播放时间偏移与媒体数据包中时间标记说明的时间相加,为每个数据包确定的。如果到了数据包的共同播放时间105,媒体接收器就播放媒体数据包。在图1所示的实例中,第一个媒体数据包1021和第二个媒体数据包1022的时间标记说明时间上的同一个瞬间。因此,这些媒体数据包由第一个媒体接收器1和第二个媒体接收器2完全在同一瞬间播放。
播放时间偏移必须在媒体源101和所有媒体会话漏(在这里是第一个媒体接收器1和第二个媒体接收器2)之间进行协商,将传输时间、可用缓存器大小以及媒体源101与全局挂钟时间最终的不严格同步考虑在内。
对于时钟,假设媒体流装置里有两个时钟存在(可供访问):采样时钟和全局挂钟。采样时钟是媒体流中固有的。对于作为音频流的源一个实例的CD,这个采样时钟以44.1kHz的频率运行。全局挂钟可以由参与媒体会话的所有源和漏装置读取。对于IP网络,网络时间协议(NTP)描述如何在整个网络中维护好一个NTP时钟。但是对于具有严格要求的应用,比如同步两个立体声声道,这样一个NTP时钟的精度和时钟分辨率恐怕都不够.因此假设存在精度和分辨率都高得多的一个时钟。这就是需要所有参与者都需要一个共同的时钟,以便执行同步跳频的一些无线系统中所出现的情形。这种无线系统的一个实例是蓝牙规范,其中皮网的所有参与者都维护好一个共同时钟。这个共同时钟的时间可以被媒体应用用作全局挂钟时间。一般情况下,采样时钟时间和全局挂钟时间是用不同的单位度量的。例如,全局挂钟时间可以按照微秒走,而采样时钟则按照一次采样作为一个最小单位来运转。
对于时间标记,假设使用它们的方法与RTP中描述的一样。这就意味着媒体数据包的时间标记说明用采样时钟的时间单位表示的数据包第一个采样的那个瞬间。除了按照RTP发送媒体数据包的媒体流以外,还要在参与者之间,也就是在流的媒体源和媒体接收器之间,交换控制数据包。这些控制数据包中没有任何媒体数据,而是除了其它信息以外有两个时间标记,说明时间上的同一瞬间,一个时间标记用采样时钟的时间单位说明这一时刻,而另一个时间标记则用全局挂钟时间的时间单位说明时间上的同一瞬间。利用这一信息,如果给出全局挂钟时间,媒体接收器就能够确定采样时钟时间,反过来如果给出采样时钟时间,它就能够确定全局挂钟时间。因此,控制数据包具有将源采样时钟时间与全局挂钟时间联系起来的功能。这样一来媒体接收器就能够通过转换按照采样时钟的时间单位给出的媒体数据包的时间标记说明的时间,确定用全局挂钟时间的时间单位表示的产生媒体数据包的时间上的瞬间。
在图2中,假设媒体源202和n个媒体接收器,例如媒体接收器203-1、203-2、...、203-n,有一个全局挂钟时间201。这个全局挂钟时间可以是例如数字总线系统或者无线数字传输系统使用的时钟时间。除此以外,还假设这个时钟在精度和分辨率上满足所需同步的要求。典型情况下,这样一个时钟非常接近物理层,例如在这样一个传输系统的基带内。对于PC或者PDA 202这样的通用装置,这就意味着这样一个时钟是外部的,只能通过一个外部连接204,例如USB或者RS232来获得。这样一个实例是通过USB与PC连接的蓝牙模块。在一个皮网中,所有装置都自动地与蓝牙基带时钟同步,因为这个时钟信息被用来同步所有皮网参与者的频率跳变。因此必须通过USB总线系统从蓝牙模块将本地蓝牙时钟信息传送给PC。
因为一般情况下这种外部连接使用的总线系统并不总是被设计成用来传输时间,因此当时钟信息通过这样的总线系统的时候,时钟信息会丧失它的精度(有效性)。例如,精度为几个微妙的时钟信息通过带来几个毫秒延迟的总线系统传输的时候会丧失它的价值,特别是这个延迟会有几个毫秒的随机变化的时候,也就是说用来例如产生时间标记的这个时间不再有效。另外,通常在PC和PDA这种通用装置上运行的非实时操作系统205会给时钟信息带来更多的不确定性。在图2中,通过媒体源202的那些层的弯曲箭头206表示出了媒体应用收到的时钟信息的这种不确定性和不精确性。
另一方面,作为媒体接收器,也就是n个媒体接收器203-1、203-2、...、203-n,通常都采用单一目的装置(嵌入式装置),例如扬声器。这样的单一目的装置可以作为嵌入系统装进去。这样就能够获得更加直接的路径到达全局挂钟时间,也就是能够精确地确定全局挂钟时间。例如,媒体应用207可以在传输系统的基带处理器上运行。这就意味着媒体应用能够非常直接地获得时钟信息,而没有任何显著的延迟和显著的不确定性。因此,媒体接收器的媒体应用207能够获得具有几个微秒精度的精确的时钟信息,因为它不是通过任何慢速总线系统传输的。图2中n个媒体接收器203-1、203-2、...、203-n说明的就是这种直接获取。
如图2所示,本发明利用了因为能够直接访问全局时钟,多个媒体接收器,也就是n个媒体接收器能够非常精确地互相同步这样一个事实,而对于源装置,与漏装置不严格的同步是可以接受的。例如,从CD播放机向两个扬声器传送立体声音频数据的时候,从CD播放机发送数据包到扬声器播出它位置的这一个延迟可能有几个毫秒,但是左边和右边的扬声器之间的延迟可能只有几个微秒。因此在媒体接收器中进行适当的缓存能够补偿源这一边时钟信息的不确定性。因为媒体源这边的时钟信息不如媒体接收器这边的时钟信息精确和可靠,因此在这种基础上实现的同步可以被叫做“非对称同步”。
最好源这一边只是在传输会话的一开始读一次全局挂钟时间,以便将采样时钟与全局挂钟时间联系起来。这一时钟信息可以被用来调整发送给媒体接收器的第一个控制数据包的时间标记。而对于以后的控制数据包中的全局挂钟时间标记,时间差可以通过对采样次数进行计数计算出来,而不是再次读全局挂钟时间。这是因为全局挂钟信息传输时间的变化一般都太大,会导致漏这边播放的时候出现间隙或者跳跃这样一个事实。
在图3中,媒体源101发送媒体数据包给第一个媒体接收器1和第二个媒体接收器2。在这一程序的开头,必须在步骤304中协商(确定)播放时间偏移。将协商得到的这个播放时间偏移发送给两个媒体接收器,也就是第一个媒体接收器1和第二个媒体接收器2,由这些媒体接收器用来确定每个数据包的共同播放时间。媒体数据包时间标记用采样时钟的时间单位表明产生数据包的时间瞬间。为了确定共同的播放时间,也就是漏必须在物理上播放媒体数据包的时间瞬间,将媒体数据包的时间标记表明的时间转换成以全局挂钟时间的时间单位表示的全局挂钟时间,将协商得到的播放时间偏移加到这个全局挂钟时间上。为了协商播放时间偏移,必须考虑预期的传输时间、潜在的译码时间和可用媒体接收器缓存器大小。因为源这边的全局挂钟时间信息可能不太精确,还会有统计起伏,因此源必须将最差情况下的变化时间加到播放时间偏移中去。这样就能够避免媒体数据包到达漏的时候共同的播放时间已经过去这种情形出现。
即使媒体源的全局挂钟时间存在上述变化,在媒体传输会话的一开始在步骤305中还被读一次,将源的采样时钟与全局挂钟时间联系起来。在后面的步骤306中,将具有两个时间标记的控制数据包发送给第一个媒体接收器1和第二个媒体接收器2。控制数据包的这两个时间标记都说明时间上的同一个瞬间,一个时间标记用源采样时钟的时间单位说明时间上的这个瞬间,另一个时间标记用全局挂钟时间的时间单位说明时间上的这一瞬间。这样,接收控制数据包的媒体接收器就能够利用媒体数据包用采样时钟的时间单位表示的时间标记说明的时间,确定用全局挂钟时间的时间单位表示的媒体数据包的产生时间瞬间。
在步骤307中,将每个漏的媒体数据包准备好,用源采样时钟的时间单位打上产生它们的时刻的时间标记。如果每个漏都是一个不同的流,就必须为每个流这样做。如果将一个流传送到多个漏,就只需要对这个流这样做。在图3所示的实例中,只有一个流被发送给两个媒体接收器。因此,在步骤308中,流的媒体数据包被发送给第一个媒体接收器1和第二个媒体接收器2。
在下一个步骤309中,每个漏都对数据译码,如果它们是编码数据。还有,在步骤309中,漏将收到的媒体数据包的时间标记说明的时间转换成全局挂钟时间单位表示的时间。于是,每个漏都通过将协商得到的用全局挂钟时间的单位给出的播放时间偏移加到收到的媒体数据包的时间标记说明的转换过的时间上去来确定共同的播放时间。在下一个步骤310中,每个漏都将媒体数据缓存起来,直到确定的共同播放时刻到来。媒体接收器中的这些缓存器必需足够大,以便补偿媒体源中时钟信息的随机变化、传输延迟的随机变化和译码延迟的可能变化。在下一个步骤311中,共同播放时间105到来的时候,每个漏都在物理上播放媒体。
对于随后从媒体源301向第一个媒体接收器1和第二个媒体接收器2发送的媒体数据包的任意时间标记,媒体源301在步骤312中利用采样时钟时间来确定时间标记的时间,而不是再次读全局挂钟时间。这样就能够确保不会因为源媒体应用中挂钟时间的不精确性导致漏这边出现间隙或者跳跃。在步骤313中,从源发送给漏的下一个媒体数据包的时间标记使用采样时钟时间,而不是读挂钟时间。在步骤314中,将媒体数据包发送给每个媒体接收器,也就是第一个媒体接收器1和第二个媒体接收器2,其中的时间标记说明源采样时钟给出的它们的产生时间。媒体数据包的时间标记一般都包括在媒体数据包里作为报头信息。但是,它也可以用单独的时间标记数据包发送。
从图3可以看出,重复执行步骤312、313和314,直到这一会话的所有媒体数据包都被发送出去,也就是计算新的时间标记,将媒体数据包与这些时间标记一起打包,并且将这些媒体数据包发送给媒体接收器。
作为这一程序的结果,源媒体应用只需要与全局挂钟时间不严格地联系起来,而每个媒体接收器则与全局挂钟时间严格联系。因此,将PC或者PDA这样的非实时装置用作媒体源,将扬声器用作媒体接收器,扬声器就能够互相精确同步,满足人类对接收空间音频信号的严格要求。
图4说明可以应用本发明的程序的可能情形。配备了蓝牙的PC 400正在通过两条蓝牙链路,也就是第一条蓝牙链路4011和第二条蓝牙链路4012,将媒体数据包形式的立体声音频流播发给两个蓝牙扬声器,也就是第一个蓝牙扬声器4021和第二个蓝牙扬声器4022。在每条链路中,将立体声信号的音频信号的媒体数据包发送给相应的扬声器。
在PC这边,蓝牙模块是通过USB连接的,而第一个蓝牙扬声器4021和第二个蓝牙扬声器4022这边,蓝牙是直接嵌入系统结构中的。PC和蓝牙扬声器使用的全局挂钟时间是每个蓝牙基带应用中内在的蓝牙基带时钟。在蓝牙皮网的所有参与者中,这个蓝牙基带时钟是同步得非常好的。
作为音频流媒体源的PC 400利用RTP定义的控制数据包提供的信息,从评估向第一个蓝牙扬声器4021和第二个蓝牙扬声器4022的蓝牙传输质量和延迟开始。此外,PC利用适当的信令命令查询每个扬声器译码需要的时间和缓存器容量。利用这一信息以及PC时钟信息的随机变化信息,也就是最大可能变化的信息,PC能够确定播放时间偏移。将这个播放时间偏移向第一个蓝牙扬声器4021和第二个蓝牙扬声器4022发送一次,并且将它加到媒体流每个媒体数据包的时间标记所说明的时间上去,获得每个媒体数据包的公共播放时间。在本发明的其它实施方案中,可以由媒体源,在这里是PC 400,为每个媒体数据包确定共同的播放时间,然后与每个媒体数据包一起发送,如同下面参考图6所介绍的一样。
PC 400作为这个流的媒体源产生时间标记。发送RTP媒体数据包的时候,媒体数据包中的时间标记用采样时钟的时间单位说明数据包的采样时刻。到全局挂钟时间的链路,在这里是蓝牙基带时钟,是通过在RTCP控制数据包中提供同一时刻的两个时间标记来实现的,一个时间标记用采样时钟的时间单元,另一个用全局挂钟时间单元说明时间,就象前面所介绍的一样。但是因PC这边的时钟信息不是那么精确,因此最好是实际上只为第一个控制数据包读取基带时钟。对于随后的控制数据包,全局挂钟时间标记的时间信息是通过对上一个控制数据包以后经历的采样数进行计数,然后将这个采样数转换成全局挂钟时间时间单位的时间来产生。如上所述,控制数据包由一个全局挂钟时间标记,它用全局挂钟时间的时间单位说明一个时刻,还有一个采样时钟时间标记,它用采样时钟时间的时间单位说明同一个时刻。因此,通过将媒体数据包和控制数据包中存在的各种时间标记提供的信息结合起来,每个蓝牙扬声器都能够从媒体数据包的时间标记确定按照全局挂钟时间的时间单位,源产生数据包的时刻,说明用采样时钟的时间单元的产生时间。通过加上协商好的播放时间偏移,就能够确定每个媒体数据包的采样必须在什么时候播放。因为每个漏都能够直接访问蓝牙基带时钟,所以所有漏都能够将它们的采样播放时钟与蓝牙基带时钟严格同步。
因为源这边的时钟信息在某种程度上是不精确的,因此作为音频媒体接收器的第一个蓝牙扬声器4021和第二个蓝牙扬声器4022必须用适当大小的缓存器补偿这种不精确性。例如,PC 400知道时钟信息最大有2毫秒的变化。因此,为了避免媒体数据包到了漏的时候这个媒体数据包的播放时刻已经过去这种情况发生,它在协商好的播放时间偏移里包括了这2个毫秒。对于2毫秒的变化,在最差的情况下,源产生的时间标记可能会早1毫秒或者晚1毫秒。因此,漏必须提供足够的存储器来缓存这种最差情形下的数据,这一点源装置已经考虑了进去,以确保安全。
图5画出了说明本发明中媒体源101这边发送过程和媒体接收器1那边接收过程的一个流程图,其中每个媒体数据包的播放时间由媒体接收器决定。这一实例是建立在RTP标准基础之上的。在第一个步骤603S中,媒体源101将传输时间、参与媒体流会话的媒体接收器的译码时间和可用缓存器大小考虑在内,确定(协商)播放时间偏移。为了获得这些信息,媒体源101询问媒体接收器1。然后将播放时间偏移以数据控制数据包604S的形式发送给媒体接收器1。这个数据控制数据包604S包括以全局挂钟时间的时间单位为单位的播放时间偏移。媒体接收器1接收发送的数据控制数据包604R,它对应于媒体源101发送出来的数据控制数据包604S。媒体接收器1以全局挂钟时间的单位储存这个播放时间偏移,以便确定随后收到的媒体数据包的播放时间,如同下面将介绍的一样。
从媒体源101将媒体数据包发送给媒体接收器1之前,从媒体源101向媒体接收器1发送一个发送方报告数据包。因此,在以下的步骤605S中,产生一个发送方报告数据包606S。发送方报告数据包606S包括两个时间标记,用采样时钟的时间单位说明时间上一个瞬间的一个采样时钟时间标记607S,以及用全局挂钟时间单位说明同一时间瞬间的一个全局挂钟时间标记608S。发送方报告数据包606S偶尔从媒体源101向媒体接收器1发送一次。在每个媒体流会话开始之前至少发送它一次,但是也可以在媒体流会话过程的中间发送它。此时,媒体接收器接收发送过来,包括发送的采样时钟时间标记607R和发送的全局挂钟时间标记608R的发送方报告数据包606R。因为这两个时间标记说明时间上的同一瞬间,因此,在下面的步骤609R里,媒体接收器1能够将采样时钟时间与全局挂钟时间联系起来。这就意味着对于随后收到的时间标记,如果相应的时间标记给出全局挂钟时间,媒体接收器1能够确定采样时钟时间,反过来如果给出了采样时钟时间,它就能够确定全局挂钟时间。
在随后的数据准备步骤609S里,媒体源101产生一个媒体数据包610S。媒体数据包610S包括一个采样时钟时间标记,它用采样时钟的时间单位说明媒体数据包610S的产生时间,它还包括媒体数据612S。这个媒体数据包610S被发送给媒体接收器1。媒体接收器1接收发送过来的媒体数据包610R,其中包括发送的用采样时钟时间单位说明的媒体数据包610R产生时间的采样时钟时间标记611R和发送的媒体数据612R。在第一个计算步骤613R中,媒体接收器1随后利用早些时候收到的发送过来的发送方报告数据包606R提供的信息计算用全局挂钟时间的时间单位表示的产生它的全局挂钟时间。现在,在第二个计算步骤614R中,通过将计算出来的产生它的全局挂钟时间和播放时间偏移加起来,确定用全局挂钟时间的时间单位表示的播放时间。然后在缓存步骤615R里,缓存发送的媒体数据612R,直到已经确定,用全局挂钟时间的时间单位表示的播放时间到达。最后,在播放步骤616R里,精确地在确定的播放时刻在物理上播出媒体数据,现在媒体接收器1已经知道用全局挂钟时间的时间单位表示的这个时刻。如上所述,在时间上精确地播放是可能的,因为媒体接收器1能够直接(精确地)访问全局挂钟时间。
对于媒体流会话过程中随后的媒体数据包,数据准备步骤609s、从媒体源101向媒体接收器1的媒体数据包发送步骤、第一个计算步骤613R、第二个计算步骤614R、缓存步骤615R和播放步骤616R重复执行。如上所述,在这样一个媒体流会话过程中,也可以偶尔从媒体源101向媒体接收器1发送一次发送方报告数据包606S。
图6画出了一个流程图,它说明本发明第一个替代实施方案中媒体源501这边的发送过程和媒体接收器502这边的接收过程,其中每个数据包的播放时间都由媒体源501确定,并且和每个媒体数据包一起发送。说明的这一过程对于从媒体源(SRC)501发送给媒体接收器(SNK)502的每个媒体数据包都要执行。应当指出,图6只说明了参加媒体流会话的一个媒体接收器502里的过程。同样的过程也在参与同一媒体会话的其它媒体接收器中执行。
在第一个步骤510中,针对下一次要发送的媒体数据包511产生播放时间。这一播放时间取决于媒体源501时钟信息的随机变化、传输时间长度、参与这一媒体流会话的媒体接收器的译码时间长度和可用缓存大小。如上所述,在媒体源501和媒体接收器502之间协商这些信息。媒体数据包511包括媒体数据513和全局挂钟时间标记512,它用全局挂钟时间的时间单位说明媒体数据包511的播放时间。将这个媒体数据包511发送给媒体接收器502。发送的媒体数据包514包括媒体数据516和分别对应于媒体源501发送的媒体数据513和全局挂钟时间标记512的全局挂钟时间标记515。收到发送的媒体数据包514以后,在处理步骤517里,媒体接收器502缓存媒体数据515,直到发送的全局挂钟时间标记515所说明的播放时刻到来。然后在播放步骤518里,媒体接收器502精确地在确定的播放时刻实际播出媒体数据,这个时间由全局挂钟时间标记515说明。如上所述,在时间上精确地播放是可能的,因为媒体接收器502能够直接(精确地)访问全局挂钟时间。对于有严格时间要求的情形,象立体声左声道和右声道的同步,对时钟信息的这一访问是关键点。
为了协商(协调)播放时间,所有装置都需要获得作为公共时间基准的同一个时钟信息(全局挂钟时间)。然后,媒体源能够协调媒体数据包,所有漏必须缓存这些媒体数据包,直到协调好的全局挂钟时间到来。
图7说明本发明的第二个可选实施方案,其中的媒体接收器自己写上播放时间偏移。在这第二个可选实施方案中,第三个媒体接收器71和第四个媒体接收器72将传输时间、译码时间、可用缓存大小和媒体源101与全局挂钟时间最终的不严格同步考虑在内,协商好一个播放时间偏移。第三个媒体接收器71和第四个媒体接收器72可以通过直接数据链路73(直接通信信道)协商播放时间偏移,也可以在媒体源101中通过第一条数据链路74和第二条数据链路75协商播放时间偏移(间接通信信道)。第一条数据链路74将媒体源101和第三个媒体接收器71连接起来,第二条数据链路75将媒体源101和第四个媒体接收器72联系起来。第三个媒体接收器71和第四个媒体接收器72协商好播放时间偏移以后,媒体源101开始通过第一条数据链路74和第二条数据链路75发送有时间标记的媒体数据包。在图7所示的实例中,通过第一条数据链路74发送有时间标记的第三个媒体数据包76,通过第二条数据链路75发送有时间标记的第四个媒体数据包77。媒体数据包的时间标记可以用全局挂钟时间的时间单位说明它们的产生时刻,或者它们可以用采样时钟时间的时间单位说明它们的产生时间。在后一种情形中,必须在发送媒体数据包以前执行图5所示的程序,也就是必须从媒体源101向第三个媒体接收器71和第四个媒体接收器72发送控制数据包,从而使第三个媒体接收器71和第四个媒体接收器72能够确定用全局挂钟时间的时间单位表示的媒体数据包的产生时间。第三个媒体接收器71和/或第四个媒体接收器72收到媒体数据包以后,它们将协商好的播放时间偏移加上媒体数据包的时间标记说明的时间,确定收到的媒体数据包的播放时间。在这个实例中,第三个媒体接收器71将协商好的播放时间偏移加上有时间标记的第三个媒体数据包76的时间标记说明的时间,确定有时间标记的第三个媒体数据包76的播放时间,精确地在确定好的这个播放时刻播放有时间标记的第三个媒体数据包76。第四个媒体接收器72将协商好的播放时间偏移加上有时间标记的第四个媒体数据包77的时间标记说明的时间,确定有时间标记的第四个媒体数据包77的播放时间,精确地在确定的这个播放时刻播放有时间标记的第四个媒体数据包77。
概括起来说,根据本发明,在数字音频传输系统中,将媒体数据包从媒体源发送给媒体接收器(例如扬声器)。如果媒体接收器收到媒体数据包,其中有属于例如立体声信号的音频信号的音频数据,那么这个媒体数据包与包括另一个媒体接收器收到的包括同一个立体声信号的音频信号的媒体数据包在同一个时刻播放是非常重要的,也就是说这些媒体数据包必须同步播出。为了确保不同的媒体接收器同步播出这些媒体数据包,媒体源或者媒体接收器确定一个共同的播放时刻,媒体数据包被缓存起来,直到这个共同播出时刻。媒体源或者媒体接收器根据在采样时钟的基础之上计算出来的全局挂钟时间的基础之上确定这一共同播放时刻。