同步内容的分布式控制转让专利

申请号 : CN201280071268.3

文献号 : CN104160708A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 威廉·格本斯·瑞德曼

申请人 : 汤姆逊许可公司

摘要 :

一种用于在本地内容控制器处处理传输命令以控制与其他远程内容控制器同步回放共享的内容的方法,该方法开始于首先确定所接收到的传输命令是起源于本地内容控制器还是起源于至少一个远程内容控制器。如果是本地起源的传输命令,则本地内容控制器向本地起源的传输命令赋予相对于最近接收到的传输命令的优先级。之后,如果本地起源的传输命令具有优先级,则本地控制器将本地起源的传输命令传送到至少一个远程内容控制器以供执行。如果是远程起源的传输命令,则本地控制器向远程起源的传输命令赋予相对于最近接收到的传输命令的优先级,然后根据这些内容控制器之间的延时执行被赋予优先级的传输命令。

权利要求 :

1.一种用于在本地内容控制器处处理传输命令的方法,所述方法包括以下步骤:

1)确定接收到的传输命令是起源于所述本地内容控制器还是起源于至少一个远程内容控制器;

2)如果是本地起源的传输命令,则

(i)向所述本地起源的传输命令赋予相对于尚未执行的传输命令的优先级;

(ii)如果所述本地起源的传输命令具有优先级,则将所述本地起源的传输命令传送到所述远程内容控制器以供执行;

3)如果是远程起源的传输命令,则

(iii)向所述远程起源的传输命令赋予相对于尚未执行的传输命令的优先级;以及

4)根据内容控制器之间的延时执行被赋予优先级的传输命令。

2.如权利要求1所述的方法,其中,所述内容控制器之间的延时是根据信号从一个控制器行进到另一控制器并从所述另一控制器返回所经过的往返时间来确定的。

3.如权利要求1所述的方法,其中,向所述本地起源的传输命令赋予相对于尚未执行的传输命令的优先级的步骤包括:确定相对于所述尚未执行的传输命令所述本地起源的传输命令是否在时间上首先发生。

4.如权利要求1所述的方法,其中,向所述远程起源的传输命令赋予相对于尚未执行的传输命令的优先级的步骤包括:确定相对于所述尚未执行的传输命令所述远程起源的传输命令是否在时间上首先发生。

5.如权利要求1所述的方法,其中,所述尚未执行的命令包括本地起源的传输命令。

6.如权利要求1所述的方法,其中,所述尚未执行的命令包括远程起源的传输命令。

7.如权利要求1所述的方法,包括:延迟远程起源的传输命令的执行达拖延间隔的步骤。

8.如权利要求1所述的方法,其中,所述本地起源的传输命令和所述远程起源的传输命令分别包括相应的时间戳,所述时间戳指示用于确定优先级的命令发布时间。

9.一种用于在本地内容控制器处处理第一传输命令以控制共享的内容的方法,所述方法包括以下步骤:(a)确定在所述本地内容控制器处接收到的所述第一传输命令相对于先前接收到的第二传输命令是否具有优先级;

(b)如果所述第一传输命令具有优先级,则在所述本地内容控制器处执行所述第一传输命令,以根据所述第一传输命令控制所述共享的内容;但是(c)如果所述第二传输命令具有优先级,则不在所述本地内容控制器处执行所述第一传输命令。

10.如权利要求9所述的方法,其中,所述第一传输命令是本地起源的,并且步骤(b)还包括将所述第一传输命令传送到至少一个远程内容控制器。

11.如权利要求9所述的方法,其中,所述第一传输命令的优先级是根据多个内容控制器中的该命令起源于的内容控制器来确定的。

12.如权利要求9所述的方法,其中,所述第一传输命令的优先级是基于所述第一传输命令和所述第二传输命令被发布的时间来确定的。

13.如权利要求12所述的方法,其中,所述第一传输命令和所述第二传输命令分别包括指示该命令的发布时间的相应时间戳。

14.如权利要求9所述的方法,其中:

i)如果所述第一命令在所述第二命令之前被发布,那么所述第一命令具有优先级;

ii)如果所述第一命令未在所述第二命令之前被发布,并且所述第一命令和所述第二命令具有相同的起源,那么所述第一命令具有优先级;

iii)如果所述第一命令在所述第二命令之后的至少预定的时间量后被发布,并且所述第一命令和所述第二命令具有不同的起源,那么所述第一命令具有优先级;

iv)如果所述第一命令在所述第二命令之后的少于预定值的时间内被发布,并且所述第一命令和所述第二命令具有不同的起源,那么所述第一命令不具有优先级;

v)如果所述第一命令和所述第二命令在相同的时间被发布,那么基于除所述第一传输命令和所述第二传输命令被发布的时间之外的因素确定所述第一传输命令是否具有优先级。

15.如权利要求9所述的方法,其中:

i)如果所述第一命令在所述第二命令之前少于预定值的时间内被发布,那么所述第一命令的执行优先于所述第二命令的先前执行;以及ii)否则,所述第一命令的执行不优先于所述第二命令的先前执行。

16.一种用于在本地第一内容控制器处处理传输命令的方法,所述方法包括以下步骤:a)提供表示至少一个远程内容控制器中的每个远程内容控制器的操作者的数据;

b)确定在所述第一内容控制器处接收到的传输命令是否起源于本地;

c)如果所述传输命令起源于所述第一内容控制器,则将所述传输命令传送至每个其他内容控制器;

d)如果所述传输命令起源于所述至少一个远程内容控制器中的第二内容控制器,则当所述传输命令被执行时显示所述传输命令的标记,所述标记包括与所述第二内容控制器相对应的数据。

17.如权利要求18所述的方法,其中,所述数据包括操作者的名称。

18.如权利要求16所述的方法,其中,所述数据包括操作者的图片。

19.一种本地内容控制器,包括:

a)用于获得表示多个远程内容控制器中的每个远程内容控制器的操作者的数据的装置;

b)用于确定在所述本地内容控制器处接收到的传输命令是否起源于本地的装置;

c)用于在所述传输命令起源于所述本地内容控制器的情况下,将所述传输命令传送到每个其他内容控制器的装置;

d)用于在所述传输命令起源于所述多个远程内容控制器中的第二内容控制器的情况下,当所述传输命令被执行时显示所述传输命令的标记的装置,所述标记包括与所述第二内容控制器相对应的数据。

说明书 :

同步内容的分布式控制

[0001] 相关申请的交叉引用
[0002] 该申请要求于2012年3月9日提交的美国临时专利申请序列号61/609,040的由35U.S.C.119(e)规定的权益,其教导被合并于此。

技术领域

[0003] 本发明涉及用于控制在不同位置的多个参与者之间的共享内容的回放的技术。

背景技术

[0004] 各种已知的技术允许对多个内容控制器(也称为“媒体控制器”)进行控制,以使得它们作为分布式内容控制器(也称为“分布式传输器(transport)”)联合地进行操作。这样的用于内容控制器的联盟的技术允许(一般在不同位置的)多个站中的每个站处的单个内容控制器共享信息和命令,以便通过它们协调的动作来在所有参与站处提供对音频和/或视频内容的几乎同时回放。这样的技术在维护每个参与站点处于“共享的内容”中基本相同的点、处于基本相同的状态的同时允许各个位置处的参与者执行不同的内容控制器命令(也称为“传输命令(transport command)”,例如,暂停、倒回、快进以及播放)。换言之,使用分布式内容控制器展示的音频或视频内容将基本在该内容的相同的位置处、以基本相同的状态(例如,播放、暂停、快进)呈现在每个站,而不管中间的传输命令。(本申请所使用的名词“传输器”与数字内容控制器有关,并且通过类比磁带记录器中用来移动磁带经过读写头的机械“走带装置(tape transport)”得到。)因此,“共享的内容”不依赖于每个站实际如何获得内容,而是描述使用内容控制器之一的一个参与站处的内容观看体验与其他参与站中的任何参与站处的内容观看体验基本相同。
[0005] 尽管观赏视频广播的不同观看者将在相同的状态和位置看到相同的内容,但是如果一个观看者(例如,使用他们自己的数字视频录像机(DVR))暂停播出,那么他们对该视频的观看将暂停,但所有其他观看者所看到的视频将继续,在这种意义上来说,这将不是“共享的内容”。内容是相同的,但在多个站中的一些站间缺乏状态和位置的一致性,使得这样的广播不能称之为“共享的内容”。在这样的广播被多个参与者使用联盟以形成分布式内容控制器的DVR进行观赏的不同的场景中,那么该广播对于这些观看者来说将是“共享的内容”,因为如果一个观看者要暂停或倒回他们DVR上的内容,那么所有的参与DVR将照做。
[0006] 尽管如此,现有的分布式内容控制器存在缺陷。在一些系统中,对分布式内容控制器的控制限于指定的参与者;很像演播室工程师控制记录和回放设备,而乐队成员却不能。在其他系统中,各个位置处的参与者具有对共享的内容进行控制播出的等同的能力,例如,倒回重听稍微能理解的短语。然而,竟态条件(race condition)能够导致当两个或多个参与者彼此在短暂间隔内发布命令时导致添加或冲突性质的多个命令。对这样的多个命令的执行能够产生意外的结果,如果不是不想要的结果。
[0007] 在允许任意参与者向分布式内容控制器发布命令的现有系统中,它们不能识别传输命令的发布者也会引起问题。目前,只有传输命令的发布者知道命令的发布。如果多个参与者在不知道谁已经发布了这样的命令的情况下同时发布命令,那么单个参与者将可能困惑并且发布一个或多个附加的命令,使得情况更混乱。
[0008] 美国专利6,653,545(Redmann等)和7,518,051(Redmann)教导了适合用于协作的音乐记录的分布式传输控制方案。这样的分布式传输控制策略将可能证明不适用于社交电视应用,因为命令分布式内容控制器的能力被限制于一个指定的参与者。美国专利7,818,770(Duchcncaut等)、7,873,983(也是Duchencaut等)以及美国专利申请2011/0218656(Bishop等)各自教导了一个或多个用于使多个站在他们共享的内容的播出上保持同步恰如单个站向他们相应的内容控制器发布命令的方法。然而,这些技术遭受上面提到的缺点,或者在一些情形中通过放弃不能充分同步的站来避免某些问题。因此,存在对用于控制在不同位置的多个观众成员之间共享的内容的回放的改进的技术的需要。

发明内容

[0009] 简略地,根据优选的实施例,一种用于在本地内容控制器处处理传输命令以控制对共享的内容的回放的方法开始于首先确定所接收到的传输命令是起源于本地内容控制器还是起源于至少一个远程内容控制器。如果是本地起源的传输命令,则本地内容控制器向本地起源的传输命令赋予相对于尚未执行的传输命令的优先级。之后,如果本地起源的传输命令具有优先级,则本地控制器将本地起源的传输命令传送到至少一个远程内容控制器以供执行。如果是远程起源的传输命令,则本地控制器将向远程起源的传输命令赋予相对于尚未执行的传输命令的优先级,然后根据这些内容控制器之间的延时执行优先的传输命令。

附图说明

[0010] 图1描绘了具有远程监控特征的、由分布式观众中的参与者用于观看共享的内容的分布式内容控制器的示例性框图;
[0011] 图2描绘了描绘针对图1的分布式内容控制器内的共享的内容的回放由内容控制器命令(即,“传输命令”)引起的内容控制器状态之间的转变的示例性状态转变图;
[0012] 图3描绘了实现图2中所描绘的内容控制器状态转变的示例性转变表格;
[0013] 图4描绘了在图1的分布式内容控制器内的内容控制器之间建立共同时序的示例事务的事务图解;
[0014] 图5A描绘了示出具有类似命令(二者均为“后跳”)的竟态条件的事件中示例性传输命令(例如,“跳过”命令)的分布式内容控制器的事务图解;
[0015] 图5B描绘了示出具有非类似命令(“前跳”/“后跳”)的竟态条件的事件中示例性传输命令(例如,“跳过”命令)的分布式内容控制器的事务图解;
[0016] 图6描绘了图1的分布式观众中的每个参与者所看到的、当图1的分布式内容控制器恢复同步时视频被暂停的图5A中示出的分布式事务;
[0017] 图7描绘了当图1的分布式内容控制器恢复同步时视频前翻(pre-rolling)的图5A的分布式事务的替代实施例;
[0018] 图8描绘了示出另一个示例性传输命令的分布式内容控制器的事务图解,从而展示了图1的分布式内容控制器的推迟行为;
[0019] 图9以流程图的形式描绘了根据本原理的优选实施例的、参与分布式内容控制器以播放共享的内容的内容控制器处理;
[0020] 图10以流程图的形式描绘了响应于远程内容控制器命令的控制共享的内容的内容控制器处理;以及
[0021] 图11A-D描绘了本地站响应于图5B的示例性事务的不同的示例性行为。

具体实施方式

[0022] 图1描绘了利用共同通信通道101来将多个站(例如,站110、120和130)相互链接并将多个站链接到头端102的共享内容系统100的框图。在所示实施例中,站110、120和130包括适合于在使用为该目的提供的监控器和相机(如图所示)的这些站之间提供远程监控的功能。由此,站110、120和130可以彼此互相通信,还可以从头端102下载内容以供个人消费以及用作与一个或多个其他站共享的共享内容。从头端102下载的内容可以包括诸如电影、电视节目、比赛、广告等之类的视听文件。尽管图1描绘了3个站110、120和130,但是在不背离本原理的情况下可以存在更多或更少数目的站。
[0023] 站110、120和130中的每个站分别包括内容监控器112、122和132中的单独一个内容监控器,用于分别由参与者113、123和133中的相应一个参与者观看。参与者113、123和133分别从沙发或椅子114、124和134分别观赏他们的内容监控器112、122和132。在图1示出的实施例中,站110、120和130中的每个站分别包括单独一个机顶盒(STB)111、121和131,用于调谐来自头端102的内容并用于分别驱动内容监控器112、122和132中的相应一个。站110、120和130还分别包括每个分别被耦合到STB 111、121和131中的单独一个STB的远程监控监控器116、126和136以及并列的远程监控摄像机117、127和137。
实际上,远程监控监控器116、126和136分别位于内容监控器112、122和132的一侧。例如,内容监控器112直接与参与者113对齐,以便参与者113向方向118(例如,直向前)看以观赏共享的内容。然而,参与者113将转向不同的方向119(例如,成角度)来观看远程监控监控器116以观看分别由远程的远程监控摄像机127和137中的单独一个分别捕捉到的参与者123和133的图像。
[0024] 对于讨论的情形,驻留在站110、120和130中相关联的一个站的参与者承担“本地参与者”的指定。从每个本地参与者的角度,每个另一站处的参与者成为“远程参与者”。因此,从站110处的参与者113的角度来看,分别在站120和130处的参与者123和133成为远程参与者。
[0025] 尽管没有在图1中示出,但是远程监控相机117、127和137中的一个或多个远程监控相机可以分别与内容监控器112、122和132中相应一个内容监控器的屏幕并列放置。对于这样的情形,每个远程参与者的图像能够以画中画模式呈现在本地参与者的内容监控器上。例如,参与者113可以在他或她的内容监控器112上观看每个远程参与者123和133的图像。在本地参与者的内容监控器上显示(一个或多个)远程参与者的图像避免了为每个本地参与者提供单独的远程监控监控器的需要。
[0026] 机顶盒111、121和131中的每个机顶盒分别具有远程控制单元115、125和135中相关联的一个远程控制单元。实际上,每个参与者113、123和133将分别开动远程控制单元115、125和135中相应的一个远程控制单元,以通过他们各自的STB来控制对来自头端102的内容的调谐和这些内容在内容监控器112、122和132上的播出。由此,每个参与者113、
123和133从而能够在他或她的内容监控器上控制内容的播出。在与一个或多个远程参与者共享内容会话过程中,本地参与者还能够控制相应一个或多个远程站处的内容的播出。
[0027] 实际上,从头端102调谐的内容起源于一个或多个源,这一个或多个源包括但不限于:空中电视广播公司、卫星电视提供商和/或有线电视提供商。而且,通过STB 111、121和131中的每个STB调谐的内容可以起源于VCR、DVD播放器、个人视频录像机、个人计算机或本地网关等。在一些实例中,共享的内容的分立的副本可以分别存在于站110、120和130中的每个站(例如,连接到STB 111、121和131的分立的DVD播放器)。在其他实例中,一个STB(例如,STB 111)可用的节目可以被流式传输(streaming)至其他两个(STB 121和131),而不需要内容在每个站的本地副本。
[0028] 对于随后的讨论,假设头端102作为用于在每个共享的内容监控器112、122和132上基本同时并基本同步地进行观看的内容的源。实际上,共享的内容包括图像(例如,视频)以及随同视频同步展示的附随音频。为了便于说明,图1没有示出音频播出所必需的音频再现设备(例如,扬声器),但是这样的设备通常将存在于站110、120和130中的每个站中。
[0029] 头端102包括至少一个存储通过通信通道101由服务器103递送至STB 111、121和131的内容的存储设备104。服务器103还包括出于各种目的用来验证参与者113、123和133或STB 111、121和131的数据库106,这些目的包括:
[0030] (a)确定从存储设备104下载某些内容资格;
[0031] (b)维护存储设备104中可用的电子节目指南或内容的索引;以及
[0032] (c)为每个参与者113、123和133维护朋友列表以促进共享内容的观看。
[0033] 图2示出了内容控制器的示例性状态转变图200,这些内容控制器由协同作为分布式内容控制器的图1中的STB 111、121和131实现,以使得在内容监控器112、122和132上观看的内容分别在站110、120和130中的每个站处保持基本同步,从而为相应参与者113、123和133提供“共享的内容”。每个STB提供内容控制器以播出内容。“本地内容控制器”是本地播放媒体所必需的元件的集合,并且“本地内容控制器”可以包括,例如,实体DVD播放器和用于管理其操作的控制系统,可替代地(或此外),本地内容控制器可以包括数字媒体播放器(包括缓冲器、解码器等),还包括用于管理其操作以使得数字内容可以被播放的控制系统。本申请所提供的“分布式内容控制器”是多个站中的每个站处的分立的本地内容控制器的联盟,这些分立的内容控制器协同行动以使得每个站播放的内容能够适应相互基本同步。在分布式内容控制器的一些实施例中,一个站可以提供内容(例如,从DVD或先前由DVR捕捉的记录)并将该内容提供给其他站。典型地,在现代系统中,内容控制器相当于逻辑内容控制器。该逻辑内容控制器管理来自展示设备(例如,STB)处具有充足缓冲存储的存储器缓存器(未示出)的数字内容的播出,以便处理数字内容的递送中的丢失和波动,该数字内容例如来自头端102或诸如PVR或DVD(未示出)之类的其他内容源、或者来自远程内容控制器。在示出的实施例中,为确保可靠的播出(即,在无不恰当的暂停或丢失的情况下播出),每个STB维护其自己的本地逻辑内容控制器,并应用本申请所描述的处理以保持每个STB的各自的逻辑内容管理器处于基本同步。
[0034] 本原理的逻辑内容控制器提供了虚拟读头(即,指针)以指示缓冲器(未示出)中的内容的当前播出位置。最后,在读头已经读出用于播出的部分内容之后,缓冲器能够清除该内容以腾出空间来接收尚未播放的内容。这个众所周知的配置允许当内容正在播出时对该内容进行规律的、可预测的且可靠的访问,并且为缓存器内诸如暂停、继续、快进、倒回以及跳过之类的传输命令提供快速、可靠的访问时间。然而,该方法响应于请求大幅前跳或后跳或者调用完全不同内容(即,跳到不在缓冲器中的内容)的传输命令而表现出大幅延时。
[0035] 大幅延时由几个原因引起,这些原因包括:(1)由每个方向上的STB到服务器通信链路所施加的延迟,(2)与在内容服务器处请求排队相关联的延迟,(3)内容服务器处的访问时间滞后(对于播出点中非预期的改变),以及(4)STB施加的对在新位置处开始播出之前进行充足的缓冲的要求。在一些情况下,(例如,在服务器103或单个STB(例如,STB111)上实现的)单一内容控制器能够将内容流提供给所有参与的STB。每个STB需要将内容进行不同程度地缓冲以应对传输延迟,并且使得展示在每个内容监控器112、122和132上的内容保持基本同步。
[0036] 对通信延迟和远程设备的其他延时的考虑对维护跨多个STB播出的内容的基本同步依然很重要。在图2中,在暂停状态201和播放状态203之间插入“播放等待(play pending)”状态202,并将用在播放等待到播放转变251的适当的超时设置用来解决延时问题。转变251和适当的超时设置在考虑转变到播放等待状态202的其他状态时也依然很重要。除了超时转变251,图200中的其余转变与通常由参与者从远程控制(例如,远程控制115)向内容控制器发布的传输命令相对应。本地STB(例如,STB111)接收这样的命令并随同足够的附加信息将这些命令传送给其他STB(例如,STB 121和131)以允许其他STB可预测地进行同步。在一些实施例中,这样的命令还被传送给头端102以尽快提供由参与STB所请求的相应的流(或那些流中的位置)将改变的通知。暂停命令产生转变232和252,这两个转变都会引起暂停状态201。其他转变222、224、226和228也引起暂停状态。这些命令易于实现,因为它们引起有限、静态的状态(共享的内容被暂停)。相反,在暂停状态时由播放命令引起的转变231,以及转变242、244、246和248均引起播放等待状态(其中共享的内容应该或将很快播出)。
[0037] 出现在远程控制(例如,远程控制115)上的后跳按钮当被开动时触发能够根据当前状态产生三个不同转变的后跳命令(SK-)。当前状态可以是(a)暂停状态201、(b)播放等待状态202、或(c)播放状态203,这些状态产生到跳过-/暂停(skip-/paused)状态210的转变221以及均导致跳过-/播放(skip-/playing)状态214的转变241和261。释放远程控制115上的后跳按钮引起产生以下两种转变之一的命令(~SK-):(a)回到暂停状态201的转变222,或(b)到播放等待202的转变242。
[0038] 转变和状态的类似集合还出现在状态转变图200中。225、245和265这三个转变由倒回按钮按压感应(press-induced)命令(RW)引起,并类似地产生两个状态:(a)倒回/暂停状态212和(b)倒回/播放216。释放倒回按钮触发分别产生到暂停状态201和播放等待状态202的转变226和246的命令(~RW)。在前跳按钮的开动之间存在相似的关系,该前跳按钮的开动触发产生到跳过+/暂停(skip+/paused)状态211和跳过+/播放(skip+/playing)状态215的转变223、243和263的命令(SK+)。释放前跳按钮产生引起到暂停状态201的转变224和到播放等待状态202的转变244的命令(~SK+)。
[0039] 最后,在快进按钮的开动之间存在相似的关系,该快进按钮的开动产生触发到快进/暂停状态213和快进/播放状态217的转变227、247和267的命令(FF)。释放快进按钮触发产生到暂停状态201的转变228和到播放等待状态202的转变248的命令(~FF)。
[0040] 使用由DVD所供应的内容能够引起通常以类似的方式实现的附加命令,例如,(1)章+(chapter+)、(2)章-(chapter-)、(3)主菜单、(4)光标向上/向下/向左/向右、(5)选择等。实际上,与“静态”情况有关的命令(例如,光标移动)直接实现最终状态,但是引起“动态”情况的命令(章+到播放)经历具有恰当确定的超时值的中间同步状态,比如,播放等待202。这样的命令将被以与本申请所讨论的那些命令类似的方式进行处置,基于下面进一步的讨论将变得显而易见。同样对于随来自头端102的视频点播(VOD)或从其他网址(未示出)流式传输的Over-The-Top(OTT)内容出现的其他命令,举例来说,根据需要导航电子节目指南(EPG)并从他们相应的目录中选择什么内容应该被共享。
[0041] 图3描绘了示出根据分布式内容控制器的当前状态响应于一个或多个外部事件(例如,对远程控制115上的按钮的开动)的命令的发布的转变表格300。具有至少一个参数的命令的加强能够基于分布式内容控制器、当前协调时间和/或关于每个本地内容控制器操作的预期性能的信息的聚合状态而发生。转变表格300具有行301和列302。每行与状态转变图200中的状态之一相对应,而每列与经由远程控制(例如,远程控制115)做出的按钮开动之一相对应。转变表格300中的每个网格单元303与图2中的转变相对应,并为分布式内容控制器提供当处于由行301中的相应行所指示的状态的同时列302中的相应列中的事件发生时而发生的命令。在许多情形中,所指示的命令是空命令(例如,网格单元304),这意味着没有动作是必需的。没有示出与释放事件~SK+和~SK-相对应的动作或列,因为对于该实施例,这些动作在所有情况下均保持为空:如果有,那么所有相关的动作均发生在SK+或SK-按钮开动上,而不在按钮释放上。
[0042] 结合转变232、252、226和228来看,表格300中频繁看到的动作是“暂停到P(Pause to P)”。该命令的记号指示接收该命令的本地设备应该在位置“P”处暂停。位置“P”标识正在由事件所发生于的本地设备控制其播出的内容中的明确位置。实际上,当命令通过远程控制115发布时,位置P与STB 111中共享的内容中的内容控制器的当前位置相对应。根据实现方式,通常位置P通常相当于以下各项之一:内容中的帧序号、时间、或帧偏移,或者嵌入在内容中的时间代码值。“暂停到P”相当于“静态”动作,照此将导致所有STB一旦执行了该命令就进入同步(假设没有后续命令干扰该命令)。
[0043] 分别结合转变223和221,“暂停到P+d(Pause to P+d)”和“暂停到P-d(Pause to P-d)”是表格300中所描绘的“暂停到P”条件的变化形式。此处,“d”表示在系统100中用作为跳过的基础的变化量(增量)。在一些实现方式中,参数“d”能够是预定值,而不是实际上当暂停时随着跳过命令被传送的参数。跳过大小“d”表示帧或时间的度量,并且照此,当事件发生时可以从共享内容中的本地内容控制器的当前位置“P”进行添加或删减,以针对该内容控制器确定共享内容中的正确的新位置。这些动作表示“静态”动作,因为它们各自将各自的内容控制器带到特定的、可辨别的位置并无限期地在此等待(至少等到下一命令的接收)。
[0044] 表格300中可见的诸如“以速率S从P处FF(FF from P@speed S)”和“以速率S从P处RW(RW from P@speed S)”之类的动作结合转变227、247、267、225、245和265发生,并且分别使得每个本地内容控制器(例如,每个STB)理论上从位置“P”开始以速率因子“S”向前或向后播放。速率因子“S”相当于乘数。根据实现方式决定,“S”能够包括整数值(例如,2x、5x)或非整数值(例如,2.5x、3.3x),并且这些值被限制为大于1的数,或将允许放慢运动的不被限制到大于1的数(例如,0.5x或0.0417x)。在其他实施例中,“S”可以表示为以每秒帧数表征的值(其中,“1”可以是放慢运动,“24”是正常速率,“48”是双倍速率等)。
[0045] 有趣的是,根据每个设备的实现方式,这两个动作“以速率S从P处FF/RW(FF/RW from P@speed S)”能够表示“静态”或“动态”动作。在转变225和227的情形中,下一个转变分别被限制为相当于静态命令的226或228。只要参与者开动FF或RW按钮,参与者的本地设备(例如,STB)将以合适的速率因子尽职地向前或向后播放。当参与者释放该按钮时,本地设备将传播相应的静态命令“在P处暂停”。最后,在释放该按钮之后,跨所有STB的播出变为同步的。然而,在对快进或倒回操作的执行期间分布式内容控制器是否(以及何种程度)保持基本的同步是仍然实现方式细节。
[0046] 举例来考虑,按压快进按钮:在一个实施例中,当开动FF按钮时,本地内容控制器(通常由本地STB 111实现)提供当前位置“P”并且开始以2x的正常速率播出(假设2x是针对快进速率因子预定的默认值)。本地STB 111将采用本地获得的P值以及当前同步时间T(下面结合图4所讨论的)来将FF命令传播至远程STB(例如,STB 121、131)。然而,由于到这些远程STB的通信的延时,远程STB直到之后的某一时间才接收这样的信息。在该实施例中,在接收到快进命令之后,远程STB立即以2x速率开始播放,而不考虑“P”和“T”参数(因为“P”是正确的,或者是最近传递的,并且“T”总是过去的)。当在开动快进(FF)按钮之前分布式内容控制器保持在暂停状态201时,该动作将非常类似地呈现给所有参与站的参与者,带有与引起该命令的站相比远程站将稍后播放该内容的警示。在对静态“暂停到P”动作的后续传送、接收以及执行时,每个STB处的内容控制器再次同步。
[0047] 当在开动快进(FF)按钮之前分布式内容控制器处于播放状态203时出现稍微不同的行为。起初与命令发布站(例如,STB 111)同步的远程站在该命令传播到每个远程STB(例如,STB 121、131)时继续以正常的速率播放内容。如果远程STB遵守该命令而不考虑P或T,那么远程STB将在以2x正常速率开始快进播放之前以正常速率展示再多一点的内容。这将继续直到按钮的释放以及向远程STB传输并由远程STB接收命令“在T+x时从P播放等待(Play pending from P@T+x)”(可能与关于快进或倒回命令的转变248或246相对应)。
[0048] 在示出的实施例中,仅以零超时转变到图2的播放等待状态202,将导致以正常速率到播放状态203的中间转变251以及所有站处基本同步播放的恢复。每个站将以2x速率播放基本相同量的内容,尽管以2x速率播放的内容的开始部分在每个站可能有所不同,不同的量与通过通道101的相应连接的通信延时差不多。
[0049] 示出的实施例假设从一个STB(例如,STB 111)发送至另一个STB(例如,STB 121)的命令的延时基本保持一致。如果延时不保持一致,那么到播放等待状态202的转变(例如,通过转变248)能够根据由与FF和~FF命令相对应的第一和第二P参数所指示的间隔(通过FF命令的速率S参数划分)设置超时。由此,在采取的动作之间的时间基本等价于产生按钮事件之间的时间(或者可替代地,两个T参数之间的区别,假设该参数伴随每个命令)。由此,如果第一命令经受严重延时,而之后的命令却没有,那么2x播出不是具有2x播出的很短的间隔而是将针对正确的间隔发生。
[0050] 为针对第一命令及时地被递送而第二命令经历更加严重的延迟的相反情形进行管理,远程STB可以建立短暂的拖延,通过拖延间隔STB将延迟执行第一命令。拖延持续时间能够具有表示最差情形下的延时的预定值,或者可以基于所观察到的延时的差异动态变化。当伴有的第二命令出现时,对间隔的计算可以发生,并且快进操作的精确持续时间被复制。该方法在出现各种延时的情况中可靠地恢复同步,但是该方法具有这样的缺点,即以2x播放的内容的开始部分在每个站处有所不同,不同的量与相应连接通过通道101的通信延时加上拖延持续时间的值差不多。
[0051] 还有在另一实施例中,远程站可以计算拦截位置。例如,假设与转变267相关联的命令“以速率S从P处FF”在同步时间T1发生,但在之后的时间T2被接收。结果,起源站将以速率S而不是以原始速率S0播放内容。在这样的情况下,起源站可能以相对于接收站ΔPR=(S-S0)(T2-T1)的量在接收站之前进行播放。接收站能够尝试追赶,例如通过以速率2S运行持续(T2-T1)(S-S0)/(2S-S)的时间段,在此之后这两个站之间的当前播出位置的区别应该基本为零。
[0052] 之后,接收站能够以速率S播放,直到受到其他命令为止。此处,速率2S称为“追赶”速率,该“追赶”速率能够取决于实现方式细节、或者能够被预定为偏好事物、或者根据特定速率,接收内容控制器看起来以这些特定速率运行良好。之后,当起源站的参与者释放快进按钮时,那么在时间T3处,以原始速率S0继续播出,对此接收站将在时间处T4知道。在这样的情况下,接收站将超过ΔPB=(S-S0)(T4-T3),并且通常暂停(将速率设置为零或设置为小于S0的某一值)达恰当的时间段。例如,接收站可以通过暂停(T4-T3)(S-S0)/S0时间来弥补超过的时间。
[0053] 在示出的实施例中,使用预测器原理处理来尝试纠正原始站超前或落后的出现。在示出的实施例的各种变化形式中,起源站可以周期性地广播其当前位置P和相应的时间T,并且预期其他站将根据需要使用预测器原理处理来动作以匹配位置。预测原理处理的精确实现方式将依靠相应的本地内容控制器的具体行为,例如,当改变速率、暂停时,如果存在对速率值的具体限制,或者如果存在固有延时等。本实现方式中可能出现其他约束,例如,最小化位置上的不连续,或避免暂停除非起源站已经暂停(即,当纠正超过时不是暂停而是使用小于1倍的速率)。通常,预测器原理处理允许鲁棒系统维持同步,尤其在准许多个事件连续不断地发生的实施例中,例如,在将最近推断的ΔP减小为零之前接收新的动态命令。
[0054] 一些命令(例如,“在T+x时从P处播放等待”命令)引起到播放等待状态202的转变,其中,超时被设置为在时间T+x处到期,其中,“x”表示基于任意STB对之间的最差预期延时的拖延。这允许在每个站将在时间T+x之前的本地时间TR接收命令的预期下传输命令,以使得到播放等待状态202的转变可以随着超时被设置为T+x-TR立即发生。下面将结合图4呈现对用于测量x的合理值的示例性机制的描述。可替代地,分布式内容控制器系统可以使用相当大的预定值(例如,设置x=500ms)。该方法提供了包括在起源站处的内容播放同时开始的优点。有时,由于通信通道101中意想不到的延时,站可能太晚接收到命令以至于不能按时开始,但是在这样的情形中,预测器原理处理能够允许该站追赶起源站。
[0055] 当一个或多个参与者113、123和133在其他动作向所有其他STB传播之前分别按压在他们的远程控制115、125和135上的各自的按钮时会出现竟态条件。为帮助解决这样的竟态条件,每个按钮开动将具有指示参与者按压按钮的时间的伴随时间标记“T”。时间“T”是相对于每个站的本地时钟确定的,每个本地时钟与其他本地时钟基本同步。
[0056] 图4示出了描绘同步参与分布式内容控制器的三个STB之间的时钟的方式的示例性时钟同步事务序列400。STB 111、121和131中的每个STB彼此相互通信。在该示例中,STB 111扮演主STB的角色。STB 111将消息401发送至STB以建立时序关系。STB 111将发送消息401的时间标注为时间T111S。在接收到消息401时,STB 121以消息402做出回复。STB121应该尽快做出该回复。实际上,STB 121将会把发送消息402的时间标注为时间T121S,并且能够将该时间包括在消息402中。STB 111将接收消息402的时间标注为时间T111R,并且能够将往返时间403确定为T111R-T111S。尽管不是百分之百地正确,往返时间仍将每个方向的传输延迟L111到121合理的近似表示为(T111R-T111S)/2。如果STB 121已经将发送时间T121S包括在消息402之内,那么在接收到该时间信息时,STB 111可以根据关系式(T121S-(T111R-T111S)/2)-T111R确定它们两个时钟之间的差值。随后,STB 111能够将STB121提供的任何时间转换成本地时间。在接收到消息402时,STB 111应该尽快通过在时间T111A(被包括在消息404中)发送的消息404进行应答。
[0057] STB 121将在时间T121R接收消息404,并且能够根据关系式T121R-T121S确定往返时间405。STB 121能够通过将T111A-(T121R-(T121R-T121S)/2)的值加到它自己的本地时钟上来确定STB 111的时钟的值。这允许STB 121从它自己的时钟计算主时钟(即,STB 111的时钟)的当前值。在一些实施例中,STB 121能够将其本地时钟设置为等于所计算出的主时钟的值。然而,特定STB在漫长的运行寿命中可以具有不同的主STB。因此,STB应该简单地维护与主STB相对应的偏移。以类似的方式,STB111通过交换消息411、412和414来与STB 131进行同步,这允许对往返时间413和415进行计算。往返时间415建立了STB 131需要应用到其本地时钟以确定STB 111上主时钟的当前值的偏移。
[0058] 在任意给定的往返交换中,通信通道101能够引入非对称或伪造的额外延时。尽管能够存在这样的现象,但是出于时钟同步的目的,图1的系统应该采用最小往返时间进行同步并且不考虑伪造的较长的往返时间。对往返时间的统计分析能够证明是有用的,例如,用于确定预期的延时(例如,一种实现方式能够选择使用平均延时,而另一实现方式可th以选择90 百分位数)。所有的参与STB对中的最高的预期延时仍然可用于确定上面结合图3中的一些命令所讨论的恰当的拖延“x”,除非选择使用“x”的预定值(例如,500ms)。
[0059] 通常,不存在相信不同STB对之间的传输延迟将保持相同的理由,因此,同步应该发生在每对STB之间。在其他实施例中,第一STB可以作为控制者,而每个其他的STB将与控制者STB的时钟进行同步。还在其他的实施例中,所有的STB能够同步到另一个主时钟(例如,使用网络时间协议(NTP)服务器的权威时钟)或全球定位系统(GPS)派生的时钟。此外,除了在同步时钟时,在一些情形下,使用与结合图4所描述的事务有关的拖延“x”的恰当值能够证明是有用的。
[0060] 由于STB对之间的传播延迟,参与者可能在大约同一时间发布冲突命令。本原理的系统有利地管理这样的来自不同站的参与者的同时命令,以提供帮助最小化冲突并缓解那些会发生的冲突的直观的、可用的接口。在类似的命令的情形中,考虑两个参与者(例如,参与者113和123)各自开动他们各自的远程控制(例如,远程控制115和125)上的后跳(SK-)按钮的可能性,因为刚刚播放了一些有趣的东西并且两个参与者都想要再看一遍。每个按钮按压由相应的本地STB进行处理,本地的STB将命令经由通信通道101传播到其他STB。如果不进行管理,那么每个STB111、121和131将后跳两次,从而超过有趣的部分,这不是参与者所希望的。该动作将给使用分布式内容控制器观看内容的参与者带来尴尬和困惑。
[0061] 图5A示出了用于处置可能的冲突命令的分布式事务500。每条垂直线表示STB111、121和131之一。图5A中的时间从上至下演进,其中,水平排列的事件同时发生。当STB 111、121和131基本同步地播出内容时,假设参与者113按压他或她的远程控制115上的后跳按钮551以生成在时间t在前(tPRIOR)553由本地STB 111接收的SK-命令552。从转变表格300看出,该事件导致动作241,“在T+x时从P-d处播放等待(PLAYP ENDING from P-d@T+x)”。由于P-d与当前位置减去与SK-(即,跳过大小)相关联的预定差值相对应,因此STB 111将此进行计算作为位置“N”。T+x相当于当前时间“T”加上能够作为预定值的某个差值“x”或者可以基于上述当前延时条件且此处示出为t传输+响应(tTRANSPORT+RESPONSE)554(即,预期对允许远程内容控制器的传输延迟和响应时间充足的时间量)的一些。从而,STB 111计算T+x为时间tSYNC555。而且,为指示发布该命令的时间,命令将时间tPRIOR附加到其上。
从而,STB 111将命令PL:fr(N)@tSYNC、tPRIOR作为消息557发送到STB121,并且作为消息558从STB 111发送到STB 131。注释PL:fr(N)@tSYNC意思是“在时间tSYNC从位置N播放”。
[0062] 将tPRIOR附加到消息557建立该命令的暂时优先级:在冲突的情形中,较早的命令掌握支配权。在不太可能的暂时优先级平局(即,两个命令具有相同的暂时优先级值)的情形中,来自具有较高优先级的参与STB的命令获胜优先级,在一个示例实施例中,对STB优先级的确定取决于STB加入会话的顺序。在该情形中,STB 111第一个加入,STB 121第二个加入,STB 131第三个加入。因此,消息557将具有指示起源于第一优先级设备(此处为STB 111)的命令以供传输至第二优先级设备(STB121)的标记“1->2”。应当注意,每个消息不需要包括STB优先级,因为其他STB将会从消息起源于的STB得知优先级。如另一示例实施例,STB优先级能够取决于STB的IP地址,其中,较低的IP地址值具有较高的优先级。应当注意在这些实例中,STB 111能够立即行动来后跳以向本地参与者113示出跳过命令将播放的视频。在后文讨论的图6和图7中呈现了对本地播出的各种处置。
[0063] 为留出命令生效的时间,系统100能够施加动态指定的或预定的拖延间隔t拖延(tHOLDOFF)556,以禁止其他参与者在较早命令之后太快发布命令。拖延间隔留出时间供经受远程命令的参与者充分看到该远程命令的效果。由此,在具有理解远程引入的上下文改变的机会之后,这些参与者将做出后续的命令。例如,参与者不必回跳,如果另一个参与者已经发布了这样的命令。如另一示例,参与者尝试快进将会是不恰当的,如果另一个参与者已经寻求执行相同的动作。尽管建立拖延间隔不会阻止参与者给出冲突命令,但是延迟这样的命令将给这样的参与者意识到他们的命令将会引起冲突的机会。
[0064] 在后续的时间,参与者123按压远程125上的后跳按钮561,以生成在时间t在后(tLATER)563处由本地STB 121接收的SK-命令562。作为响应,STB 121计算“M”作为P-d的值,该值不必是与“N”相同的值,因为STB 111在tPRIOR时的播出位置将可能不与STB 121在tLATER时的播出位置相符。同样,STB 121针对T+x的计算产生可能不等于t同步(tSYNC)的tS 565。因此,STB 121将命令PL:fr(M)@tS、tLATER作为消息567发送到STB 131,并且作为消息568从STB 121发送至STB 111。
[0065] 在时间t第一(tFIRST)处,STB 131从STB 121接收消息567中的PL:fr(M)@tS命令,并且根据实现方式,能够等待直到时间tS时才行动。例如,STB 131能够以设置为tS-tFIRST的超时进入播放等待状态202,或者能够在位置M之前的与tS-tFIRST相对应的位置处立即开始播出,以便为实际的命令或一些类似的行为(图6和图7中呈现了这些类似的行为的一些示例)提供前导。在tSYNC+tHOLDOFF之前的某一时间,STB 111将从STB 121接收消息568中的PL:fr(M)@tS命令。由于STB 121在tPRIOR时发起命令,该命令早于在tLATER时发起的命令,并且截至tLATER,较早命令的拖延间隔556还未到期,STB 111将忽略消息568中的较晚命令。
[0066] 在时间t第二(tSECOND)处,STB 131从STB 111接收消息558中的PL:fr(M)@tSYNC命令。尽管STB已经从STB 121接收消息567中的命令,但是该较晚接收的命令具有优先级,因为tPRIOR早于tLATER出现。即使这两个命令具有相同的暂时优先级(例如,这两个命令均在tPRIOR时被发起),消息557将优先于消息567,因为前者消息起源于具有较高优先级的STB。结果,STB 131将根据消息558中的来自STB 111的命令采取行动。根据实现方式,参与者
133能够经历不明显的改变。如果STB 131处的内容控制器已经进入播放等待状态但当前超时等于tSYNC-tSECOND则将导致缺乏任何明显改变。如果STB 131已经开始最终与STB 121针对时间ts命令的播出进行同步的前导也会导致缺乏任何改变。播出将根据需要跳过以与STB 111针对时间tSYNC命令的播出进行同步。没有动作的另一示例是由使用将使得STB
131意识到自两个远程站的、使得后跳相同差值“d”的命令的前导造成的。结果,前导或同步中的改变不是必需的或区别太小(例如,一个或两个视频帧)以至于无法保证校正。
[0067] STB 121将在接收到消息557时以类似的方式来行动。消息557中的命令具有高于命令562的优先级,并且STB 121将根据需要处理该命令以实现在时间tSYNC同步播出。而且,STB 121将忽略来自远程控制125的、影响内容控制器的附加命令直到tHOLDOFF 556到期为止。可替代地,STB121能够通过显示图标或生成指示目前STB 121将忽略这样的命令的可听信号来对接收到命令做出应答。尽管如此,STB 121将接受(例如,改变这些音量的)非传输命令,因为这些命令仅影响本地站。在时间tSYNC处,STB 111、121和131中的每个STB以相互的、分布式同步来播放内容。任何能够提供前导的STB将已经进入播放状态
203。那些在播放等待状态202的等待超时251在时间tSYNC发生的STB已经刚刚转变到播放状态203。
[0068] 图5B示出了与事务序列500类似的分布式事务序列570。图5B由于参与者123已经按压远程控制125上的前跳按钮571从而产生SK+命令572(而不是SK-命令562)而不同。这个动作导致命令消息575-576的传输。在图5B所描绘的情况下,SK-和SK+命令相当于增量命令,即,后跳或前跳预定的量,而不是表格300中所示的命令格式。因此,在时间tPRIOR处,STB 111将消息573中的命令“SK-,tPRIOR”发送到STB 121,然后针对STB 131在消息574中重复该命令。在该情形中,STB 111依旧假设分布式内容控制器已经同步,无论暂停或播放。而且,STB 111假设每个站将在接收时(或者在一些实施例中,在时间tPRIOR之后的预定或动态确定的时间增量处)恰当地处置跳过。同样,SK+命令572被封装为“SK+,tLATER”以分别通过在消息575和576中传输至STB 131和111。然而,如果STB 131在接收到在时间tFIRST 569处接收的第一命令消息575时立即行动,或者如果STB 131设置的针对播放等待状态202的超时已经到期,那么在接收到被确定为比已经执行的命令574具有优先级的命令574(因为tPRIOR<tLATER)时,STB 131将需要解开较早命令的执行,而不是消息575中较低优先级的命令。而且,STB 131需要使用来自在前的时间tSECOND559的结果执行来自消息574的命令,STB 131的本地内容控制器表现得就像STB 131只接收到第二消息
574。
[0069] “解开”本地传输命令的能力要求在执行第一传输命令时,STB必须不仅仅只根据命令指导本地内容控制器。而是,STB需要维护模型或充足的内容控制器事件数据以确定未来时间本地内容控制器的状态,如果STB忽略第一命令并且维护之后的现状。一般地,这相当于在执行第一命令(此处为575)时在时间“T1”标注内容位置“P1”和速率“S1”。然后,在不早于tHOLDOFF(例如,此处,比如将在tS 565处开始被测量的tHOLDOFF 556(但未示出))到期的较晚时间T2,如果STB接收具有比第一命令高的优先级的冲突第二传输命令(如574),那么在STB没有执行第一命令的情况下简单的计算提供当前在T2时刻的内容位置P2(P2=P1+S(T2-T1))。在第二命令不具有比第一命令高的优先级的情形中,STB将忽略第二命令。
[0070] 随着第二命令被执行,STB必须记住P2、S2和T2,以在STB接收第三冲突且具有更高优先级的命令的不太可能的情形中使用。不具有更高优先级的命令将与tHOLDOFF间隔已经到期的命令相冲突,并且这设置了STB必须记住P1、S1、T1组合(或P2、S2和T2)多长时间的上限。当与当前最高优先级命令相关联的tHOLDOFF间隔到期时,STB能够忘记相应的P、S、T组合。应当注意,每个命令的时间T表示该命令的优先级。在平局的情形中,如上面所讨论的,对用于确定优先级的进一步的机制的使用可能是必要的。因此,对于每个所执行的命令,STB应该保留优先级值或具有只要STB保留当前P、S、T组合就能确定优先级的能力,以允许完成与任何新接收到的命令完成优先级比较。
[0071] 应当注意,在接收到较高优先级消息557或573时,STB 121将不接受来自远程控制125的进一步的命令,直到与命令552相关联的tHOLDOFF间隔556到期。不具有本地命令的STB 131在接收消息575达相应的拖延时间(未示出)时将不接受来自远程控制135的命令。当接收到消息574中的较高优先级命令时,STB 131能够放松限制以仅要求tHOLDOFF间隔556到期。
[0072] 不同于STB 131,STB 111不引起这样的约束。所接收到的命令消息576具有比已经生效的命令552低的优先级,因此,STB 111将忽略消息576。只要tHOLDOFF 556还没到期,参与者113能够使用他或她的远程控制115来发布另一命令,并且该命令将与分布式内容控制器相关地被接受。一旦参与者的命令具有优先级,那么后续的命令也具有优先级,直到最后的拖延间隔到期并且“优先级”当前是易得的。这允许参与者113发起动作,例如,搜索可能需要不止一个命令552(例如,向后跳过几个步骤)的特定场景。以这种方式,参与者具有不需要来自干扰或混淆这样的效果的其他参与者(例如,参与者123和133)的中间命令而执行每个跳过的权限。然而,在与最后跳过相对应的拖延间隔到期时,任何参与者的命令将被本地接受并用于共享,这会导致由该优先级机制解决的另一个命令冲突。
[0073] 图5A和图5B示出两个示例性命令表示机制。序列500中的命令具有表格300中也可见的完全限定目标帧数目(例如,“N”、“M”)和目标同步时间(例如,tSYNC 555)的性质。序列570中的命令表现为与它们发布时间(例如,tPRIOR 553)有关。针对当前所接收到的每个具有最高优先级的命令,所示出的示例性的处置机制包括在采取行动之前等待直到同步时间,适当地进行前导以便在同步时间实现基本的同步,以及在同步点暂停直到同步时间。
[0074] 这些命令表示方式(以及其他未示出的)和处置机制(包括其他未示出的)可以通过动作(例如,通过表格300中的条目)以及由STB进行选择。也就是说,转变网格单元303中的不同的动作可以以不同的方式在命令消息中显示自身,并且单个STB 111、121和
131可以以不同的方式响应相同的动作。然而,一般来说,包括每个协作STB的本地内容控制器的分布式内容控制器将在命令的传播和冲突解决过程中维持少许帧或一秒的若干分之几的基本同步并且仅仅维持暂时的差异。
[0075] 图6和图7各自图示出了对事务序列500的不同响应的效果。图6描绘了当等待时间tSYNC 555时暂停在播放等待状态202(即,播放等待超时被设置为在tSYNC时到期)。相反,图7描绘了在时间tSYNC或在时间tSYNC之前确保同步的情形下播放状态203中的前导。(即,播放等待超时将在tSYNC时或在tSYNC之前到期,并且如果在tSYNC之前到期,那么播放状态203将从指定位置N之前的位置tSYNC-tSTART开始)。如图6中所描绘的,共享展示600分别被显示在站110、120和130处的监控器112、122和132上。在时间610,展示进行同步并且分别呈现在相应监控器112、122和132上的显示器611、612和613描绘了基本相同的图像。在时间620,站110处的参与者113按压远程控制115上的后跳按钮551,使得STB111在时间tPRIOR 553接收到SK-命令。针对STB 111的当前帧631被设置为“N”,这与后跳预定值相对应,并且播出暂停。然而,站120和130继续播放,当前未被来自站110的命令所通知。因此,正在进行的播出帧632和633分别呈现在站120和130处。后跳图标634呈现在站110处的显示器上。在该示例中,命令发布站110在“N”处暂停,等待指定的再同步时间tSYNC 555。
[0076] 在时间640处,站120处的参与者123按压远程控制125上的后跳按钮561,使得STB 121在时间tLATER 563接收SK-命令。站120处的当前帧642现被设置为与后跳预定值相对应的“M”。播出暂停,并且后跳图标644现在呈现在本地显示器上。如图6中点画背景所描绘的,站110已经暂停在帧641上。站130继续播放帧643,仍然不知道远程生成的命令。
[0077] 时间620和640的远程控制事件生成图5A所示的命令消息557、558、567、568。在时间tFIRST 569,站130处的STB 131接收消息567。在同一时间,站120处的STB 121接收消息557。作为接收这两个命令消息的结果,响应于来自站110的命令,站120示出被暂停的帧652。响应于来自站120的命令,站130示出被暂停的帧653。在使用表示参与者113的图像来归属(attributing)命令的示例中,后跳图标654被显示给站110处的参与者113。在相同的时间处,后跳图标655以类似的方式被归属于站120处的参与者123。此时,站130刚从站120接收到较低优先级命令并且向后跳过,但是不像站110和120跳得那么远。
[0078] 等到时间tSYNC555,STB 111和131已经接收到命令消息568和558。STB 111将忽略消息568,因为该STB已经知道更高优先级命令552。然而,当站130处的STB 131接收到消息558时,该消息具有较高优先级,并且比消息567中的命令优先。因此,站130接受更高优先级命令,并且跳到帧“N”。在时间tSYNC,站110、120和130中的每个站分别开始示出基本同步的图像661-663。站130还将示出后跳图标664,但是该图标现在归属于参与者113。后续地,这三个站基本同步地继续播放图像671-673。后跳按钮634、644、654、664在间隔之后消失,该间隔能够是预定时间(例如,如图所示的大约1秒)、或者可以持续到同步点(例如,时间tSYNC 555)、或直到拖延间隔(例如,时间tHOLDOFF 556)到期。应当注意:图标
655由与更高优先级命令558相对应的图标664所代替。后者策略具有提供视觉指示符以示出另一个参与者当前具有命令优先级的优点。然而,如通过图标655和664所看到的,当前具有优先级的参与者是能够改变的。这些图标提供为什么本地远程看起来没有效果(由于另一参与者具有优先级)的视觉提示。在间隔610、620和660期间,站110、120和130基本同步地进行操作,而在间隔630期间,这些站的状况暂时不同。
[0079] 图7示出响应于之前所讨论的相同事务序列500、但在当这些站前导视频以在指定时间tSYNC 555的指定帧N上实现滚动同步时的情景下的共享展示700。在时间710,站110、120和130分别显示同步的帧711、712和713。在时间720,在站100处,参与者113发布由STB 111在时间tPRIOR553接收的SK-命令552,具有帧710被指定为“N”并且后跳图标被本地显示734在监控器112上的瞬时结果。远程站120和130仍然不知道命令552,并继续分别显示帧732和733。
[0080] 在时间740,参与者123发布由STB 121在时间tLATER 563接收的SK-命令562。表示本地向后跳过的帧742被指定为“M”,并且后跳图标744被显示在内容监控器122上。远程站110和130仍然不知道命令562:STB 131继续播放,现在在帧743处,而STB 111已经后跳超过帧N并且现在播放表示前导事件的帧741。参与者113可以使帧741的显示变模糊或者以其他方式标记帧(如图7中的散线所指示的)以使得参与者113意识到其他参与者123和133无法将该前导作为共享内容查看(尽管可能可以)。
[0081] 在时间tFIRST 569,STB 111仍然播放帧751,从而响应于本地命令552仍执行前导操作。STB 121已经回跳并且现在播放帧752。因此,响应于对远程命令消息557的接收,STB 121现在执行前导操作。而且,STB 121触发归属于参与者111、或可替代地归属于站110或没有归属的远程后跳图标754的显示。由于响应于接收到远程命令消息567执行前导操作,STB 131已经回跳并且现在播放帧753。而且,STB 131将触发对归属于参与者121的远程后跳图标755的显示。对于那些进行与最高优先级命令相对应的前导操作的站(例如,站110和120),它们的图像(例如,图像751和752)基本同步。
[0082] 在时间tSYNC 555处,监控器112、122和132中的每个监控器显示帧N(图像761、762、763),其中站130还示出现在归属于参与者111的远程后跳命令图标764。这些显示器基本同步并且随着播出继续保持基本同步,显示图像771、772和773。在间隔710、720和
760期间,分布式内容控制器保持基本同步,并且在间隔730期间,一些站的状况有所不同。
[0083] 图8示出了图示出拖延间隔的另一目的和效果的事务序列800。在时间tPRIOR 853处,STB 111接收源于远程控制115上的按钮按压851的SK-命令852。STB 111通过动态确定该间隔或者根据预定的传输延时和响应时间间隔854来设置时间tSYNC 855。STB 111分别通过消息857和858将所生成命令传送到STB 121和STB 131。在STB 121接收到消息857之后,该STB将忽略诸如由于远程控制125上的按钮按压861而生成的传输命令862之类的传输命令,直到同步时间(tSYNC)为止,因为该命令具有比命令852(通过消息857来中继)低的优先级(该命令比命令852到达较晚)。而且,尽管在时间tSYNC 855之后,如果策略要求诸如时间tHOLDOFF 856之类的拖延间隔,那么STB 121还将忽略诸如由于按钮按压871而生成的传输命令872之类的传输命令。如果,在时间tHOLDOFF已经到期之后,例如,在tNEXT 883时,STB 121将接收由于按钮按压881而生成的传输命令882。STB 121将接受该命令,并且分别通过消息888和887向远程站110和130传输该命令。
[0084] 拖延间隔不应用于发布优先级命令的站(此处为站110及其STB111)。这允许发布优先级命令的参与者(此处为站110处的参与者113)出于任何不受来自其他参与者的命令的干扰的目的而发布后续命令。而且,这还为另一参与者(此处为参与者123)留出充足的时间在发布命令(例如,命令882)之前查看发生了什么。通过在时间tHOLDOFF 856到期之前不在命令852之后发布命令,参与者111将从而把优先级让给任意其他参与者。在拖延间隔到期之前禁止命令862和872确保参与者121具有在发起不相关的命令之前看到更高优先级命令(例如,命令852)的结果的机会。如果不存在本原理的分布式内容控制器的这些重要的方面,将可能导致困惑、不满甚至彻底冲突。
[0085] 图9描绘了将由参与分布式内容控制器的STB 111执行的命令处置处理900。处理900开始于步骤910,其中STB 111已被连接到一个或多个远程站(例如,STB 121和131)。
在一些实例中,在步骤911处,STB111将确定到每个远程站的延时(例如,通过时钟同步处理400),将结果存储为延时数据901。在其他的实施例中,尤其是STB 111在建立本地时钟时间时使用其他机制的实施例中,延时数据901能够被预定。延时数据901向本地站(例如,站110)提供充足信息来准确地估计远程站(例如,站130)将能够执行(例如,通过消息558)发送到远程站的本地起源的命令(例如,命令552)的时间(例如,tSYNC 555)。在相反的情景中,延时数据901允许本地站(例如,站130)准确地估计在消息(例如,558)中接收到的远程起源的命令将要由远程起源站(例如,站110)执行的时间(tSYNC 555)。
[0086] 延时数据901能够以不同形式存在。例如,延时数据能够相当于对主站(master station)的时钟的偏移,这对于主站为零。可替代地,延时数据901能够相当于表示本地时钟到每个其他远程时钟的偏移。可随预同步的时钟使用的延时数据的另一示例将是到每个远程站的传输延时的记录。具有基本准确的预同步时钟并使用预定值而不是实际传输延时的一些实施例可能根本不需要数据获取,在该情形中延时数据901将相当于一组预定值。
[0087] 在步骤912处,站110将与每个远程站交换其信息。关于本地站(例如,站110)的信息驻留在本地站信息存储库902A中并且从902A下载,本地站信息存储库902A通常驻留在与该本地站相关联的STB中。本地站(例如,站110)将所获得的关于远程站(例如,站120和130)的信息记录在远程站信息存储库902B中。站信息能够包括表示本地参与者或站的图片、名称、图标或数字,以用在诸如包括在图标654、655、664、754、755和764(这些图标能够利用参与者的图片)中的参与者属性之类的属性中。因此,在站110处,相机117能够捕捉参与者113的图片,或者参与者的图片可以其他方式存储在STB 111可访问的本地站信息存储库902A中。对参与者的图片的捕捉或提供能够与处理900的开始同时发生(未示出)。可替代地,参与者的图片能够作为开始步骤910而存在。从每个远程站接收的站信息被存储在存储器902B中。
[0088] 在一些情况中,不是每个站与每个其他站交换信息,而是参与站之一作为控制者。因此,一个站能够作为站信息的清除库(clearinghouse),在该情形中,步骤912期间的站信息交换将随着该站被指定为清除库而发生。当其他站加入分布式内容控制器时,每个站可能需要临时更新。在其他情景中,服务器103能够保存站信息以由其他站访问。被提供用于交换的附加的站信息能够包括每个本地内容控制器的性质。例如,如果一些本地站具有10x的快进速率的限制,但是其他站能够实现20x,那么分布式内容控制器可以被约束到较低限制。在其他实现方式中,具有较慢内容控制器性能的站可以采取前跳而不是快进播出,从而不将分布式内容控制器的操作制约到“最小公分母”。
[0089] 站之间潜在的不一致的另一示例能够关于针对播放命令的预期的设置时间来发生:一些站可以具有快速查找时间,而其他站查找地慢一些,并且分布式内容控制器能够面临参与站的最慢查找时间性能的限制。如果不同站针对前跳和后跳命令实现不同大小的跳过,那么能够产生对性能的另一限制。
[0090] 其他的站信息可以包括可用的内容源。图1描绘了头端102作为共享内容的源的示例性实施例。如果一个或多个STB支持附加的头端(未示出)、或支持针对一个或多个服务的“Over-The-Top”互联网流、或支持本地缓存的内容,那么这些站能够共享来自这样的可替代源的内容。具有更多可用内容的源将包含“观赏什么”的决定,例如,通过向参与者113、123和133提供所有三个STB 111、121、131都能够访问并共享的内容。约束能够限制参与者可用的内容搜索性能。而且,电子节目指南能够包括指示哪个参与者(或站)能够共享每个节目的注释。这个特征将使得参与者群组认识到哪个参与者的配置最约束该群组内容选择的宽度,转而建议下次不要邀请谁、或谁应该考虑设备或服务升级。
[0091] 结合图9中描绘的处理900,以下所讨论的各种示例依赖于前面关于特定站的视角的示例的讨论。为了清楚,下面的处理步骤由每个站结合分布式内容控制器来运行,每个站具有其相应视角:对于发生在STB 11处的处理900,该STB将作为“本地STB”,而其他STB121、131将作为“远程STB”呈现给STB 111。各种示例有时称不同的STB为“本地”设备或“远程”设备的事实源自先前关于不对任何一个站提供所有条件的图3-图8的的讨论。
[0092] 处理900包括从步骤920开始执行的主循环。首先,进行检查以确定本地命令的发生(例如,命令852和862之一的发生)。如果发生,那么在步骤921期间,如命令历史缓冲器903中所反映的,针对活跃的(未到期的)远程拖延间隔(例如,时间间隔856)进行检查。如果活跃的远程拖延间隔当前存在,那么STB将忽略本地命令并且在步骤920期间重新开始主循环。该情形的示例发生在STB 121接收到命令862和872时,因为与来自远程站STB 111的命令852有关的拖延间隔856还未到期。本地STB能够蜂鸣、闪现图标,或者以其他方式这样指示命令的拒绝。在一些实例中,STB能够在本地内容监控器(例如,122)上发起对远程站命令图标(例如,图标654)的显示,而且通知本地参与者(例如,123)本地命令被阻止的原因。
[0093] 在步骤921期间,所执行的检查能够揭示适当位置上没有活跃的远程拖延。例如,这种情景将随着命令882存在,因为等到时间(t下一个)tNEXT883发生,较早的远程拖延856已经到期。由于没有活跃的远程拖延,在STB将本地命令(例如,作为消息887和888)发送至每个远程站时,步骤930被执行以处理本地命令(例如,命令882)。在步骤950期间,命令历史缓冲器903考虑正被处理的命令,包括表示或基于在该命令之前的当前位置P、速率因子S、时间T的信息。命令历史缓冲器903还能够考虑与该命令相对应的拖延到期时间,或者能够根据需要从T推导出该值。对于除了T还需要信息确定命令优先级的情形(例如,对于两个命令在时间T同时发生的情形),命令历史缓冲器903能够记录附加的优先级信息(例如,如上面所描述的,提供命令的站、提供命令的站的IP地址等)。
[0094] 在步骤951期间,针对本地内容控制器状态是否发生变化进行检查,如前面所讨论的,检查能够包括对播放等待状态202的恰当的超时值进行计算。该计算能够考虑步骤950处刚刚指出的本地内容控制器状态(即,位置P和速率S),并且能够考虑本地内容控制器性能限制,例如,查找时间、回转速率、快进/倒回速率限制或量化等。该计算提供了对由本地内容控制器使用的命令的翻译。如果所有的站具有等同的本地内容控制器性能参数,那么该计算变为简单的。然而,如果性能参数不同(例如,一个命令指定以3x快进,但是本地内容控制器只能做到2x或5x),那么存在几种解决差异的可能性。例如,STB能够选择单个速率(例如,2x)。可替代地,STB能够执行更复杂的命令序列(未示出)以使快进速率在2x和5x之间抖动。例如,STB能够重复地以2x运行2秒,然后以5x运行1秒,平均为
3x,但是不会超过以3x运行的内容控制器。在任一情形中,当处理后面的暂停或正常速率播出命令时,STB将需要执行“修整(fix-up)”。在一些情形中,发生在步骤951处的计算将根据之前命令的近似提供所需的必要的修整(例如,抖动的快进速率)。
[0095] 在远程命令在步骤951期间被处理的情形中,延时数据901能够根据需要用来确定恰当的时间偏移,以使得在每个站执行的命令最终同步(在间隔660和760期间实现)。对延时数据901的使用的示例将使得命令消息557根据STB 111的本地时钟被表达为tSYNC,然后当被STB 121处理时命令消息557被转换到该STB的本地时钟,以使得在tSYNC555时发生全局基本同步。
[0096] 在步骤952期间,本地STB 111向本地内容控制器发布在步骤951期间计算出的传输命令。例如,如果本地内容控制器包括DVD播放器并且该命令要开始播出,那么在恰当的时间播放命令将被发布给DVD播放器,该命令包括对DVD播放器响应中任意可预测的延时的补偿。如果本地内容控制器包括(包括输入媒体缓冲器的)数字媒体播放器,那么播放命令将确保恰当的内容已经及时地被提供在缓冲器中,以便当命令指定时开始播出。
[0097] 在步骤953处,如果需要,那么命令图标可以被显示在屏幕上达一段时间量。在本地命令(例如,STB 111处的命令552)的情形中,本地命令图标(例如,图标634)能够被显示在监控器112上。在远程命令(例如,在STB 121处接收到的消息557)的情形中,使用来自远程站信息存储库902的、与远程站(例如,STB 111)相对应的信息,所分配的命令图标(例如,图标654)可以被显示在监控器(例如,监控器122)上。命令图标能够被显示与通过步骤953的下一程相对应的时间间隔,以表示最近的优先级命令。可替代地,命令图标能够被显示直到相应拖延间隔到期,如果较早但不小于一些预定的最小时间(例如,1秒),那么总有参与者确定状态中的当前变化的原因的机会。
[0098] 此时,处理重新开始在步骤920期间的主循环,其中根据步骤953处所确定的时序命令图标被设置为消失,除非命令图标被尽快地替换。任何本地传输命令序列(例如,步骤951期间执行的抖动快进速率示例)将根据需要继续直到其被后续的命令取消。如果在步骤920期间没有需要处置的本地命令,那么在步骤922期间进行测试以检查远程命令消息(例如,消息557、567和568)的接收。在不存在远程命令消息时,在步骤920处处理重新开始主循环。当接收到命令消息时,在步骤923期间进行测试以确定是否存在任意拖延保持活跃。在步骤950的每次先前执行期间,命令历史缓冲器903被更新,并且如果不存在拖延或不存在未到期的拖延,那么在步骤950期间对该新的远程命令的处理继续。其示例包括在tHOLDOFF856到期之后,由STB 131首先接收命令消息567,并由STB 111接收命令消息
888。
[0099] 然而,如果(与远程命令或与本地命令相关联的)拖延保持活跃,那么在步骤924期间再次使用来自命令历史903的数据进行检查,以确定新的远程命令是否比先前的优先级命令具有更高的优先级。如果不是,STB将默默地丢弃新的远程命令并且在步骤920处重新开始处理。其示例发生在tHOLDOFF 556还未到期的同时STB 111接收命令568时。
[0100] 在步骤924期间,如果新的远程命令具有较高优先级(其示例包括STB 131接收消息558和574),那么在步骤925期间,可选的测试被执行以确定新接收到的较高优先级命令是否表示有效的改变。如果没有出现有效改变,即,如果通过执行新的较高优先级命令而不是之前的命令,本地站的可观察的行为基本不改变,那么该站能够放弃执行较高优先级命令。其示例随结合STB 131接收到命令消息558进行讨论的实施例中的一些实施例发生,其中,两个不同的SK-命令552和562能够在差异的间隔期间(例如,间隔630和730)导致不同的行为,但是最终导致在某一稍晚时间(例如,间隔660和760)基本同步。如果差异的间隔不是太严重或太具破坏性,那么不存在发布实际较高优先级命令的严格要求。事实上,呈现在本地内容监控器上的显示可能实际上示出比实际存在的少的扰动。尽管如此,对命令历史903中的实际较高优先级命令的记录仍然是可取的,尽管该记录能够包括命令不执行的记号。STB将提供恰当分配的图标的显示,以使得本地参与者将接收特定远程站现在具有优先级的视觉指示,尽管该动作不连同步骤925一起出现。
[0101] 如果步骤925期间进行的测试确定新的较高优先级远程命令表示有效的变化(或者如果实现方式在步骤925期间不执行测试,并且在步骤924期间执行的测试发现具有优先级的新的命令),那么在步骤940期间,STB 111将先占一个或多个之前的命令,并且在步骤950期间处理新的较高优先级命令。这一系列事件的示例发生在STB 131接收到SK-命令消息574时,该SK-命令消息574跟随之前的SK+命令575:SK+命令是先占的,并且较高优先级SK-命令由STB 131进行处理。在一些情形中,将进行对本地内容控制器的假设状态的计算,将成为当前的状态使得当前先占的命令不被执行。在步骤950的较早执行过程中被记录在命令历史903中的、与最早先占的命令相关联的位置/速率/时间状态能够容易地产生这样的假设状态。本地内容控制器的假设状态相当于从所记录的状态到当前时间和新的优先级命令的有效时间之间的时间的推断(根据实现方式)。实际上,有效时间相当于从消息574中给定的或从策略或站信息识别出来的时间tSYNC。该假设的状态是步骤950期间所记录的那个,而不是通过目前先占的(一个或多个)命令导出的实际状态。
[0102] 应当注意,针对一些实施方式,尤其是那些为消息延迟和设备响应时间提供充足余量的实施方式,从实际本地内容控制器状态到假设状态的任何所需的修整仍然很简单。例如,考虑图5A中的STB 131,其中,当接收到消息567时,本地内容控制器可能已经跳到帧“M”、暂停并且在播放等待状态202下等待(超时被设置为时间tS)。在接收到消息558中的较高优先级命令时,STB 131将先占超时。在对新的优先级命令的后续处理中(步骤
950-953),本地内容控制器跳到帧“N”,并且等待针对时间tSYNC设置的播放等待状态的超时。
[0103] 图10示出了用在提供分布式内容控制器的站中的简化远程命令处置处理1000。处理1000当从参与分布式内容控制器的其他站之一接收到新的远程命令时开始于步骤
1001。在步骤1002期间,对命令历史缓冲器903进行检查以确定是否保持有任何当前活跃的拖延。如果没有,那么新的命令立即在步骤1005处被执行(或者在适当的时间被安排执行)。命令历史缓冲器903根据当前优先级命令来记录当前本地内容控制器状态。
[0104] 然而,如果在步骤1002期间,存在活跃的拖延,那么在步骤1003期间,使用来自命令历史缓冲器903的数据进行检查以确定新的命令是否比当前优先级命令具有更高优先级。如果存在活跃的拖延并且新的命令不比拖延具有更高优先级,那么STB将忽略新的命令并且该处理在步骤1006处终止。然而,如果新的命令具有优先级,那么在步骤1004期间STB先占(一个或多个)先前接收但具有较低优先级的命令,然后计算假设的内容控制器状态以确定内容控制器状态使得先占命令从来没有存在过。在步骤1005期间,STB执行新的命令(或安排命令以执行,即,一个或多个动作被提供给本地内容控制器,根据需要包括超时值)。STB将当前内容控制器状态(该当前内容控制器状态是根据步骤1004处被先占的任意命令的假设的内容控制器状态)作为当前优先级命令记录在命令历史缓冲器903中。当在步骤1005期间安排用于执行的新命令时,该处理在步骤1006处结束。
[0105] 图11A-D示出反映图5B中所示事务的STB 111、121和131的示例性本地内容控制器行为。根据本申请后面所讨论的,STB 131的行为针对图11A-D各图中的不同示例性策略而不同。在这四幅图中的每幅图中,垂直的内容位置轴1101具有呈现在该轴的底部附近的早期内容(从内容本身的时间线意义上来说)以及朝向顶部的后期内容。水平的时间轴1102从左到右(从早期到后期)演进。照此,正常的速率播出将通过具有统一斜率的线来表示。图5B中所描绘的时间值(tPRIOR 553、tLATER 563、tFIRST569、tSECOND 559、tSYNC 555以及tS 565)沿时间轴1102呈现,其中一些时间值(tFIRST到tS)具有向上延伸以更好示出与各个内容控制器中的状态变化对齐的延长线。特定内容位置“P1”1103、“P2”1104和“P3”1105沿内容轴1101呈现。
[0106] 在图11A-D中的每个图中,如图5B所示,在时间tPRIOR 553之前,所有三个STB111、121、131以常规速率基本同步地播放。在图11A-11D的图形表示中,常规速率播出与斜率为1.0的线段1110相对应,表示正常播出。线段1110呈现为粗线,指示所有三个STB都遵照该时间/位置关系。然而,在时间tPRIOR 553处,STB 111接收SK-命令552,该命令导致STB111的本地内容控制器在内容中执行后跳1111,跳过的大小为“-d”。结果,紧跟着时间tPRIOR 553,STB 111将根据线段1112播放内容。由于后跳,线段1112指示STB 111的内容播出在STB 121和131的内容播放(如线段1113所表示的,STB 121和131继续播出内容)之后约“d”的量(以内容轴1101的单位来度量,能够是帧或时间代码单位)。应当注意,线段1113呈现为中等粗度,表示两个STB的内容播出,而线段1112呈现为最小粗度,表示以该时间/位置关系的单个STB的播出。
[0107] 在时间tLATER 563处,STB 121接收SK+命令572并且如前跳1114所示的以“+d”的量前跳通过内容。因此,STB 111、121和131中的每个STB在时间tLATER 563之后的时间、在该内容的不同位置处播放,分别如细线段1112、1115和1116所示。在时间tFIRST之前的某一时间,STB 121从STB 111接收命令消息573,并且以跳过1117(大约-2d大小)来响应,以响应于通过时间上较早的优势已经获得较高优先级的原始SK-552命令。因此,如中等粗度线段1118所示,STB 111和121同步播放,而STB 121已经放弃由沿段1119的轨迹所表示的它先前的播出。应当注意,STB 121所需用来确定跳过1117的大小的计算细节不呈现于此,但是这样的细节将结合STB 131的各示例性行为呈现在下文。
[0108] 在时间tFIRST 569处,STB 131从STB 121接收源自SK+命令572的命令消息575。根据图9和图10中所示的示例性处理,STB 131将集中地表示本地内容控制器状态1120的当前时间(tFIRST569)、位置(“P3”1105)以及速率(“1x”,先前时间/位置线段1116的斜率)记录在本地命令历史缓冲器903中。从此时开始,STB 131的示例性行为控制该图的其余部分,并且将在图11A-D中的每个图中有所不同。
[0109] 在图11A中,当STB 131以示例性的方式来表现时,STB 131将立即跳到预期的同步点上,并且在该同步点等待直到预期的同步时间,并且之后以预期的播放速率进行播放。该行为与图6中所描绘的“暂停”行为相对应(尽管图6是基于图5A的事务的)。从消息
572,STB 131通过将预定的间隔554加到命令时间tLATER 563来计算同步时间,以获得时间tS565。在图5A的示例性事务中,消息572明确提供同步时间。用于计算预期的同步点的一种方法是从本地内容控制器状态点1120反向推断以确定时间tLATER处的内容控制器位置,然后加上默认SK+尺寸(+d)来计算新的位置,然后推断前进到时间tS的位置,以获得内容位置“P2”1104。该特定方法即使在命令或内容控制器状态涉及除1x以外的速度的情况下也很有效(例如,采用快进或倒回命令)。
[0110] 因此,在时间tFIRST,STB 131的本地内容控制器如线段1121所示从当前位置“P3”跳到预期同步点“P2”,并且如斜率为零(指示内容位置不随时间演进而改变)的线段1122所示暂停。此时,STB 131预期保持暂停(通过线段1123,直到时间tS)。之后,STB 131预期播出,如斜率为1且与线段1115共线的线段1124所示,在假设STB 121继续播放而不进行跳过1117的情况下线段1124将会使得STB 131与STB 121同步。
[0111] 然而,STB 131从未到达线段1123和1124,因为在时间tSECOND 559处,STB 131从STB 111接收SK-命令消息574。该命令同与状态1120相关联的命令历史条目相比具有优先级。因此,STB 131计算其在时间tPRIOR553处的本地内容控制器位置(如消息574中所给出得),然后偏移该位置达“-d”,之后正向推断预期的同步时间tSYNC 555,以确定预期的同步点“P1”1103。从而,在时间tSECOND处,如线段1125所示,STB 131跳到“P1”,并且如线段1126所示等待,预期在时间tSYNC处STB将沿着线段1127以正常速率开始播出。由于没有其他优先级命令先占该动作(这是确实是所发生的情况),以使得在tSYNC 555之后,所有三个站均再次同步播放。
[0112] 应当注意,凭借命令历史缓冲器903,推断预期同步位置和预期同步时间的STB131仅需要使用次于具有最低优先级的最新优先级命令的最早日志条目(即,日志条目具有较低优先级,这通常意味着较晚的优先级时间)。当命令历史缓冲器903没有条目时(可允许地发生在不晚于最近的拖延间隔已经到期时),则STB利用当前本地内容控制器状态,因为该在情况中,所有的内容控制器预期同步。
[0113] 尽管跳过1121和1125看起来占用时间为零(或有效地一帧时间),但是该情况实际上不可能发生,除非当与那些点相关联的内容已经存在于本地缓冲器中时。图11A中STB 131的行为将容易地适合于跳到新位置所需的时间相对较长或者不能可靠地预测的系统。因此,尽管线段1121、1125各自具有指示跳过占用非零时间的斜率,但是将产生相同的结果,虽然个别暂停线段1122、1126较短。如果STB 131在这些暂停期间模糊这些图片,那么本地参与者133将不会察觉到异常。
[0114] 在图11B中,STB 131的示例性行为不同,因为STB立即暂停并等待预期同步时间。在预期的同步时间,STB 131将跳到预期的同步点并且从此处开始播出。因此,在时间tFIRST处,STB 131依旧计算预期的同步时间tS和预期的同步位置“P3”,如线段1131所示,本地内容控制器立即暂停。STB 131将预期通过线段1134和1132来保持暂停,然后通过跳过
1133到达“P2”,并且从此处沿着线段1124(与线段1115共线)进行播放。然而,STB 131不遵从线段1132、1133和1124,而是在时间tSECOND,STB 131如上所述再次计算新的预期同步时间tSYNC和位置“P1”。因此,本地内容控制器保持暂停(线段1134)仅持续到预期同步时间tSYNC,此时本地内容控制器跳到(线段1135)预期同步位置“P1”,并且开始与STB 111和121同步地常规播出内容(线段1127)。
[0115] 图11B中的STB 131的行为用来最小化图片改变,这些图片改变可能通过首先跳到“P2”处的未来事件然后回到“P1”而使参与者133感到困惑。相反,STB 131只示出最终优先级命令结果,从而从“P1”开始。如果STB 131在暂停1131和1134期间模糊图像,那么参与者133将不会注意到差异(除非改变命令的归属,如从755到764)。在递送快速(即,跳过需要极少时间)且可预测的情况下该行为还提供了减少带宽开销的机会,因为在这样的条件下,直到恰在预期同步时间之前才需要对内容进行获取。这使得对于STB 131而言响应于恰在时间tFIRST之后的消息575避免对“P2”的不必要的内容获取成为可能,因为前跳将在时间tSECOND被先占。
[0116] 在图11C中,STB 131的示例性行为与全部图11A-D中的STB 121的示例性行为相匹配。在图11C中,STB 131立即跳到预期的当前位置并开始播出。该活动相当于图7中示出的“前导”行为(尽管图7依赖于图5A中所描绘的事务)。此处,在时间tFIRST,由于SK+命令消息575,STB131通过首先反向推断时间tLATER处的位置、然后增加偏移“+d”、之后正向推断到时间tFIRST来计算STB 121的当前位置。如线段1142所指示的,本地内容控制器立即跳到那个点,并且如线段1143(与线段1115共线)所指示的,开始播出,直到在时间tSECOND处接收到SK-命令消息574。在时间tSECOND处,STB 131通过反向推断其自己的由存储在命令历史903中的记录1120所表示的内容位置到时间tPRIOR来计算STB 111的内容位置。STB 131根据新的优先级命令将偏移“-d”添加到该位置,然后正向推断以确定当前时间的位置并做出由线段1144表示的相应跳过以如线段1145所表示的开始立即播出,甚至在线段1127之前就与STB 111和121共线并同步。该行为提供了暂停屏幕达最小时间量的优点,并且与发布最高优先级命令的站同步尽快发生。
[0117] 图11D示出了STB 131的示例性行为,较少示出其用处而较多示出各种可能性的宽泛范围。此处的行为需要本地内容控制器具有以任意速率播放的能力。因此,在tFIRST处,当对在预期同步时间“tS”的预期同步位置“P2”进行计算时,该时间/位置对的斜率根据线段1120处的当前时间/位置对来确定,在该示例中该斜率为1.25。响应于该计算,如线段1
1151所示,本地内容控制器立即以1/4x的速率开始播放,并且预期在“tS”时到达“P2”且之后以正常速率播放(如线段1124所表示)。然而,该快进播出在tSECOND时被先占(因此,线段1153未被播放),并且STB 131计算从其本地内容控制器的当前位置到在tSYNC时的预期同步点“P1”的斜率,其结果是斜率为-0.5。因此,如线段1154所示,在tSECOND时,STB开始以-0.5x慢速率倒回,直到tSYNC,在tSYNC之后与STB 111和121同步地以正常速率再次向前播出,如线段1127所示。
[0118] 尽管STB 131提供的本地内容控制器不能实现以任意速率播出(例如,因为快进或倒回速率被约束为整数值),但是通过使用分段可用速率,STB仍然能够实现该行为。例如,STB能够通过计划首先以2x速率快进然后在与线段1119相交之后降为1x来近似线段1120的斜率1.25。类似地,STB 131能够通过以1x速率倒回直到到达“P1”然后暂停直到tSYNC(或可替代地,以1x速率倒回直到与线段1118相交,然后以正常速率向前播放直接通过tSYNC和“P1”)来近似线段1154的-0.5的斜率。
[0119] STB 131的该行为具有减少理解远程参与者所命令的内容所需要的图标的数目的优点。例如,如果视频可视地向后运行到某点,则不存在指示后跳的需要。仍可以提供这样的图标的归属元件(例如,654、655、664)以指示谁发布了这些命令。在这些行为中的每个行为中,由于延时的各种来源,前跳或播出速率或方向的改变能够占用时间。存在多种方式来处置这些问题以恢复同步。一种方法是测量每个命令的执行中经历的延时。如果计划是跳到某一位置并开始播放,并且这会立即发生,但是实际上占用100ms,那么下一个命令(不论该命令何时发生)将会被告知其目标位置是100ms之后。这样,同步永远不会比最糟的延时更糟糕,并且有可能更少,因为每个站将经历其自己的延时,并且这些延时趋向抵消相互之间延时的至少一部分延时。另一种方式是估计每个命令的延时。例如,可以知道短的前跳(并且可能是较大的后跳)将具有零延时(因为内容可能已经被缓存)或微小延时(例如,与冲洗(flushing)并再填充视频解码器通道有关)。在两个方向中的每个方向上的较大跳过可能有不同的、大延时(与获取还未被缓冲的内容或缓冲器已被冲洗的内容有关),在该情形中所命令的位置可以通过预期的延时在播放的方向上被偏移。也就是说,如果跳到新的位置应该随后为以-2x速率向后播放,那么目标位置应该被偏移-2乘以跳过中的预期延时。这样,本地同步误差将仅仅是任意误估的量级,而不是整体的预期延时。
[0120] 第三种方式是使用前面的经验和当前网络延时来估计每个命令的偏移从而将这些方式组合起来,然后将测量到的误估添加到下一命令(不论该命令何时到达)。第四种方法利用的微跳过和播出速率微小变化来减小测量到的同步误差。例如,在本地STB中,帧可能被跳过或回放速率被调整+/-1%,直到恢复充分的同步。在这样的速率调整过程中,能够进行对相应音频音高的调整,以使得语音和音乐不改变音高,尽管它们仍将轻微改变拍子。
[0121] 如果发生了灾难性的异步事件,例如,一个STB无法内容达几秒钟,则存在几种使得该STB恢复的方法。这个不幸的STB在丢失内容之前可能发布了具有后跳到远至所预期的进行内容恢复的时间量的点的效果的命令。因此,如果该STB预期内容将花费10秒来恢复,那么除非暂时的倒回,被分配给正在经受的STB的10秒的后跳将留出时间来重新请求并重新获得错过的内容,并且播出将利落地进行。这个选择将证明比在所有的系统上暂停播出(其中“重新缓冲”图标归属于失去信号的STB)要好,因为播出中的10秒的间歇可能被视为比10秒后跳更具破坏性。可替代地,丢失内容的STB可以暂停直到内容恢复,然后以增大的速率(例如,+5%)播放以便更快地追上。此外,相应的音频能够被补偿。
[0122] 本发明的另一实施例允许分立的电话会议系统(未示出)提供远程呈现监控器和相机。包含本申请所描述的分布式内容控制器机制与处理的相应DVD播放器(未示出)能够代替STB 111、121和131。每个这样的DVD播放器可以具有相同DVD的复制品。为促进一些内容控制器操作,这样的播放器能够具有附加的数字缓冲来促进同步。
[0123] 在一些实施例中,在这些站之间共享的内容能够包括交互式元件,包括诸如菜单、复选框和按钮之类的图形用户界面元件和诸如载入(或选择)内容、弹出框等之类的附加命令。这些用户界面元件的共享不需要严格地要求对分布式内容控制器进行扩展或修改,因为可以通过将命令和状态添加到状态图200并将命令、状态和动作添加到状态转变表300来完成。然而,除了较低优先级命令,先前执行的命令历史、命令性质、拖延以及退绕的原理仍可用。
[0124] 在相反的极端情况下,在其他实施例中,主站能够选择应该在共享的监控器112、122和132上播放什么内容(例如,使用用户界面)。一旦选择,每个站或只是头端102便接收关于这些站将共享什么内容的信息,并且扩展到状态图200或转变表格300对于为参与者113、123和133提供与分布式内容控制器共享内容的体验不是必需的。
[0125] 上面描述了用于使用分布式内容控制器在多个站之间提供共享的内容的技术。