提供与数据流关联的参考的方法和系统.pdf

上传人:e2 文档编号:1001503 上传时间:2018-03-24 格式:PDF 页数:35 大小:1.41MB
返回 下载 相关 举报
摘要
申请专利号:

CN200780022521.5

申请日:

2007.06.14

公开号:

CN101495974A

公开日:

2009.07.29

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 12/00公开日:20090729|||专利申请权的转移IPC(主分类):G06F 12/00变更事项:申请人变更前权利人:摩托罗拉公司变更后权利人:摩托罗拉移动公司变更事项:地址变更前权利人:美国伊利诺伊州变更后权利人:美国伊利诺伊州登记生效日:20110118|||实质审查的生效|||公开

IPC分类号:

G06F12/00

主分类号:

G06F12/00

申请人:

摩托罗拉公司

发明人:

迈克尔·A·法尔克; 内尔·T·汗茨察尔; 布里坦·S·麦金利; 马克·J·卢坦

地址:

美国马萨诸塞州

优先权:

2006.6.16 US 11/454,249

专利代理机构:

中原信达知识产权代理有限责任公司

代理人:

穆德骏;陆锦华

PDF下载: PDF下载
内容摘要

插入到接收到的数据流中的每个指针集最终包括指向数据流内其它位置(例如其它片段)的指针值。最初,指针集可以被设置为空值,因为指向数据流中其它片段或其它指针集的地址或相应指示在它们被从直播馈送中接收到或被插入数据流中之前可能并非已知。当从诸如直播馈送的原始数据流接收到数据的新片段时,本文的处理功能将具有适当值的指针集中的空指针值回填为新接收到的片段或指针集。将适当指针值回填到数据流中使得观看数据流的相应用户能够启动在数据流之间的导航并可能在很小或没有延迟的情况下观看直播馈送。

权利要求书

1.  一种方法,包括:
分配第一存储区以保持与流数据的第一片段关联的指针集;
在分配所述第一存储区并接收所述流数据的第一片段之后,分配第二存储区以保持与流数据的第二片段关联的指针集,所述第二存储区的位置至少部分地取决于与流数据的第一片段关联的长度;以及
启动对与所述第一存储区关联的指针集的修改以指引所述第二存储区。

2.
  如权利要求1所述的方法,其中,所述启动对与第一存储区关联的指针集的修改包括:
将所述与第一片段关联的指针集修改为包括指向与第二存储区关联的地址的指针,所述第二存储区存储与所述第二片段关联的指针集,所述与第一片段关联的指针集中的至少一个指针取决于与第一片段关联的长度。

3.
  如权利要求1所述的方法,其中,所述启动对与第一存储区关联的指针集的修改包括:
将所述与第一片段关联的指针集修改为包括指向与以下各项中的至少一个关联的地址的指针:i)所述第二存储区,ii)所述与第二片段关联的指针集;以及iii)所述第二片段。

4.
  如权利要求1所述的方法,还包括:
在分配所述第二存储区并接收所述第二片段之后,分配第三存储区以保持与流数据的第三片段关联的指针集,所述第三存储区的位置至少部分地取决于与所述第二片段关联的长度;以及
根据与所述第二片段关联的长度来启动对与第一存储区关联的指针集中的指针值的修改。

5.
  如权利要求4所述的方法,其中,所述根据与第二片段关联的长度来启动对与第一存储区关联的指针集的修改包括:
将与第一片段关联的指针集修改为包括指向与第三存储区关联的地址的指针,所述第三存储区存储与第三片段关联的指针集。

6.
  如权利要求1所述的方法,还包括:
在分配所述第二存储区并接收所述第二片段之后,分配第三存储区以保持与流数据的第三片段关联的指针集,所述第三存储区的位置取决于与第二片段关联的长度;以及
保持所述第一片段、所述第二片段、以及所述第三片段作为相应数据流,所述相应数据流包括插入的相应指针集,每个均包括指向相应流内多个位置的指针,所述指针使相应用户能够基于相应输入而跳到相应数据流中的不同位置。

7.
  如权利要求1所述的方法,还包括:
分配第三存储区以保持与流数据的第三片段关联的指针集;
把至少部分来源于流数据的相应数据流保持为包括插入的指针集,所述插入的指针集包括所述第一存储区、所述第二存储区、以及所述第三存储区;
把所述第一存储区保持为包括指向与第二存储区关联的地址的相应指针;以及
把所述第二存储区保持为包括指向与第三存储区关联的地址的相应指针。

8.
  如权利要求1所述的方法,还包括:
分配第三存储区以保持与流数据的第三片段关联的指针集;
把至少部分来源于流数据的相应数据流保持为包括插入的指针集,所述插入的指针集包括所述第一存储区、所述第二存储区、以及所述第三存储区;
把所述第二存储区保持为包括:i)指向与第一存储区关联的地址的第一指针;以及ii)指向与第三存储区关联的地址的第二指针。

9.
  如权利要求1所述的方法,还包括:
分配第三存储区以保持与流数据的第三片段关联的指针集;
把至少部分来源于流数据的相应数据流保持为包括插入的指针集,所述插入的指针集包括所述第一存储区、所述第二存储区、以及所述第三存储区;以及
把所述第一存储区保持为包括:i)指向与第二存储区关联的地址的第一指针,以及ii)指向与第三存储区关联的地址的第二指针,所述第一指针和所述第二指针使得能够在回放相应数据流时实现多种快进速度。

10.
  如权利要求1所述的方法,其中,响应于接收流数据的第一片段而以近似实时方式分配所述第一存储区;
其中,在接收流数据的第一片段之后响应于接收流数据的第二片段而以实时方式分配所述第二存储区;以及
其中,启动对指针集的修改包括在处理第二片段之后回填与指针集关联的值。

11.
  如权利要求1所述的方法,还包括:
从远程源接收流数据作为直播馈送;以及
启动对指针集的修改,以便使相应用户能够控制观看流数据的速度近似达到直播馈送的当前位置。

12.
  如权利要求1所述的方法,还包括:
从远程源接收流数据作为直播馈送;以及
启动与第一存储区和第二存储区关联的指针集的插入和回填,以便使相应用户能够控制观看流数据的速度近似达到直播馈送的当前位置。

13.
  如权利要求1所述的方法,其中,启动插入和回填使相应用户能够以延迟来观看直播馈送。

14.
  如权利要求1所述的方法,还包括:
将与第一片段关联的指针集、第一片段、与第二片段关联的指针集、以及第二片段以连续的方式存储在同一数据流中。

15.
  一种方法,包括:
从远程源接收流数据作为直播馈送;
最初将空值赋给与流数据的第一接收片段关联的给定指针;以及
在接收并处理跟随在所述第一接收片段之后的流数据第二片段之后,用指向第二接收片段的适当值来回填所述给定指针。

16.
  如权利要求15所述的方法,还包括:
根据与流数据关联的片段的尺寸而以不同的相应间隔来启动将指针插入到流数据中,每个指针最初被赋予相应的空值,但随后当接收到连续片段时所述指针被用适当的指针值回填。

17.
  如权利要求15所述的方法,其中,回填所述给定指针包括将所述给定指针设置为指示与相应的未来接收到的流数据片段关联的地址的值。

18.
  如权利要求15所述的方法,其中,回填所述给定指针使相应用户能够控制观看流数据的速度近似达到直播馈送的当前位置。

19.
  一种包括计算机可读介质的计算机程序产品,所述计算机可读介质包括:
分配第一存储区以保持与流数据的第一片段关联的指针集的指令;
在分配所述第一存储区之后,分配第二存储区以保持与流数据的第二片段关联的指针集的指令,所述第二存储区的位置至少部分地取决于与流数据的第一片段关联的长度;以及
根据与所述第一片段关联的长度来启动对与第一存储区关联的指针集的修改的指令。

20.
  一种装置,包括:
数据流管理器,其从远程源接收流数据作为直播馈送,所述数据流管理器最初将空值赋给与流数据的第一接收片段关联的给定指针,在接收并处理流数据的第二片段之后所述数据流管理器用指向第二接收片段的适当值来回填所述给定指针。

21.
  如权利要求20所述的装置,其中,所述数据流管理器根据与流数据关联的片段的尺寸而以不同的相应间隔来启动将指针插入到流数据中,每个指针最初被赋予相应的空值,但随后当接收到流数据的连续片段时所述指针被用适当的指针值回填。

22.
  如权利要求20所述的装置,其中,所述数据流管理器将所述给定指针设置为指示与相应的未来接收到的流数据片段关联的地址的值。

23.
  如权利要求20所述的装置,其中,所述给定指针使相应用户能够控制观看流数据的速度近似达到直播馈送的当前位置。

说明书

提供与数据流关联的参考的方法和系统
背景技术
传统技术已经使更加快速而高效地向相应订户传递信息成为可能。例如,在有线网络空间中,现在数字有线技术向订户提供大量的频道以接收不同类型的用于在各自电视上的重放的数据流内容。
根据传统的有线技术,相应订户有时在其家中具有所谓的机顶盒,该机顶盒接收从相应的有线公司发送过来的编码数据信息。在接收到编码数据时,机顶盒将由电视观看者所选的多个频道之一解码。一旦被解码,观看者家中的相应机顶盒用来自于所选频道的解码数据的适当“光栅化”(rasterized)信号来驱动相应的电视系统。因此,电视观看者能够观看由有线公司发送且由相应的机顶盒接收到的相应电视节目。
在某些环境下,替代于发送预先录制的电影或视频流,有线公司会发送供相应观看者观看的一个或多个直播馈送(live feeds)。所述直播馈送的示例是由新闻公司生成的实时视频剪辑。新闻公司向有线公司馈送所谓的直播视频。有线公司又向相应订户分发与直播馈送关联的相应内容。
发明内容
与传统的内容传输关联的一个缺点是相应观看者控制由机顶盒接收到的相应数据流之间的导航。例如,如以上所讨论的,来自有线公司的传统馈送(例如直播或预录制数据流)必须存储在用户家中的相应数字视频录像系统中以便用于在相应流中执行相应导航。否则,观看者不能重放或导航(例如通过快进和快退模式)接收到的内容。
以下公开包括多个有用的实施例,用于更有效地处理接收到的数据流(例如直播数据流),以及生成能够实现在直播数据流之间的导航的相应指针集(set of pointers)。例如,根据一个实施例,本文的系统将接收到的最初不具有相应指针集的数据流(例如视频信息的原始数据流)转换成包括插入的指针集的相应数据流。所述指针集可以包括导航(例如快进和/或快退)指针,其使得观看数据流的相应用户能够启动在数据流之间的导航并尽可能接近实时地观看数据流的直播馈送。
更特别地,在一个实施例中,相应处理功能顺次处理接收到的直播馈送片段(segment)并将相应指针集插入流中,目的是使用户能够进行导航。例如,根据本文的实施例的相应处理功能接收数据的第一片段(例如,直播馈送的第一逻辑部分),并分配第一存储区(例如,新生成的数据流的一部分)以保持或存储与流数据的第一片段关联的指针集。所述处理功能最初不能向新数据流中的“超前”(look-ahead)指针或快进指针中的至少一部分赋值(例如地址值),直到接收到所述接收数据流的随后的顺序片段。
在本示例中,假设所述处理功能在接收到第一片段之后接收流数据的第二片段(例如直播馈送的第二逻辑部分)。如上所述地分配第一存储区之后(例如在诸如存储器、磁盘等相应贮存器中),所述处理功能分配第二存储区(例如在贮存器中)以保持与流数据的第二片段关联的指针集。第二存储区的位置可以至少部分地取决于与流数据的第一片段关联的长度,从而使在相应数据流中接收到的内容片段与指针集交错(interlace)在一起。
在一个实施例中,新生成的数据流中的每个指针集包括多个到数据流中的其它片段的指针值。例如,指针集中的第一个指针可以识别(例如沿着前进或后退方向)接收到的相应数据流中一跳之外(one hopaway)的另一片段(例如,就是下一片段);相应指针集中的第二指针可以指向两跳之外(two hops away)的相应片段;相应指针集中的第三指针可以指向四跳之外的相应片段;相应指针集中的第四指针可以指向十跳之外的相应片段,等等。
在一个实施例中,相应指针使用户能够使用不同的指针值在数据流之间进行导航(例如,通过不同的快进和快退速度)。例如,相应用户可以使用指向数据流中每个随后的第十个片段的指针来启动非常快速的快进。相应用户可以使用指向数据流中每个随后的下一片段的相应指针来启动慢速的快进(或快退)。
当从直播馈送中接收到每个新的数据片段时,所述处理功能最初插入“空”指针集。在接收到每个连续片段或多个连续片段之后,所述处理功能回填(backfill)指针集以便将适当的前向(forward-looking)指针值包括在数据流中。通过启动与相应数据流中的指针集关联的指针值的修改和回填,相应用户能够控制观看流数据的速度接近到达直播馈送的当前位置(例如接近实时位置)。
因此,根据一个实施例,本文的技术可以用于提供i)在开始摄取直播馈送(或等效直播馈送)的几秒内(例如固定数目的帧或片段,诸如5秒或更短)以流的形式传送直播馈送的能力,ii)在开始摄取直播馈送的几秒内暂停直播馈送的能力,iii)在流已被暂停或快退之后,在直播馈送的当前点的几秒内快进的能力;以及iv)更新存储器而不在区块/块(block/tile)内修改存储控制器的高峰线(high water mark)的能力。
本文的技术非常适合于诸如生成可导航数据流,诸如分发到多个订户的直播数据流等的那些应用。然而,应注意的是本文的结构不限于在此类应用中使用,因此,本文的结构及其变化同样非常适合于其它应用。
除可能经由逻辑电路、缓冲器、寄存器等分立硬件组件来实现之外,本文的其它实施例可以包括诸如计算化设备(例如计算机处理器系统、主机、个人计算机、工作站等等)等硬件平台,其被配置为支持对插入相应数据流中的指针集进行回填的上述技术。在此类实施例中,所述计算化设备包括存储系统、处理器(例如处理设备)、以及相应的互连。所述互连将处理器耦合到存储系统。所述存储系统用应用程序(例如软件代码)来编码,所述应用程序在处理器上被执行时,产生可导航数据流。
本文所公开的本申请的其它实施例包括执行在上文中概述并在下文中详细公开的方法实施例和操作的软件程序。更特别地,本文的实施例包括计算机程序产品(例如计算机可读介质),其包括在其上被编码且可以在计算化设备上执行以便如本文所述地从直播馈送而产生可导航数据流的计算机程序逻辑。所述计算机程序逻辑在具有计算系统的至少一个处理器上被执行时使得处理器执行作为本公开的实施例而在本文中指出的操作(例如方法)。如本文中进一步公开的此类设置通常被作为软件、代码和/或其它数据结构而提供,该软件、代码和/或其它数据结构在计算机可读介质或其它介质上设置或编码,该计算机可读介质诸如光介质(例如CD-ROM)、软盘或硬盘,该其它介质诸如一个或多个ROM或PROM芯片中的固件或微码,或诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)或诸如一个或多个模块中的可下载软件、共享库等等。所述软件或固件或其它此类结构可以被安装到计算化设备上,以使得计算化设备中的一个或多个处理器执行本文所述的技术。
本申请的另一个特定实施例意在一种包含计算机可读介质的计算机程序产品,在所述计算机可读介质上存储有用于支持根据本文实施例的可导航数据流的创建、管理和使用的指令。所述指令在被相应计算设备的处理器执行时使得处理器执行步骤:i)分配第一存储区以保持与流数据的第一片段关联的指针集;ii)分配第二存储区以保持与流数据的第二片段关联的指针集,所述第二存储区的位置至少部分地取决于与流数据的第一片段关联的长度;以及iii)启动对与第一存储区关联的指针集的修改。本申请的其它实施例包括执行在上文中概述并在下文中详细公开的任何方法实施例步骤和操作的软件程序。
附图说明
本申请的前述及其它目的、特征和优点将通过优选实施例的以下更特别说明而变得显而易见,如附图中所示,在附图中,相同的附图标记在不同视图中自始至终表示相同部分。附图不一定按比例,而是着重于示出示例性实施例、原理和构思。
图1是根据本文的一个实施例的数据流处理器设备的方框图。
图2是时间线(timeline),示出了根据本文的实施例、数据流处理器是如何对于相应数据流的片段启动回填指针值的技术的。
图3是时间线,示出了根据本文的实施例、数据流处理器是如何对于相应数据流的片段启动回填指针值的技术的。
图4是根据本文的实施例的相应数据流的图示,该相应数据流包括插入的指向未来片段的多个指针集。
图5是根据本文的实施例的相应数据流的图示,该相应数据流包括插入的指向未来和过去片段的多个指针集。
图6是根据本文的实施例的计算机系统的图示。
图7是示出了根据本文的实施例将指针插入相应数据流的技术的流程图。
图8和9联合构成流程图,其示出了根据本文的实施例将指针插入相应数据流的更具体的技术。
具体实施方式
以下公开包括用于高效地处理接收到的数据流(例如直播馈送)并插入相应的指针集(例如参考、索引、等等)的多个有用实施例。所述指针使得能够实现在数据流之间的导航。
例如,插入到接收到的数据流中的每个指针集包括指向数据流内其它位置(例如其它片段)的指针值。然而,最初,相应指针集中的指针值可以设置为空值,因为指向数据流中的其它片段或其它指针集的地址或相应索引在从直播馈送接收到相应的随后的一个或多个片段之前可能不是已知的。换言之,新创建的指针集不能指向数据流中的未来索引值,直到已知与数据流关联的相应的一个或多个随后片段的相应长度之后。当从诸如直播馈送等原始数据流接收到新的数据片段时,本文的处理功能将具有适当值的指针集中的空指针值回填到新接收到的片段或指针集中。
如将要讨论的,回填先前插入到数据流中的指针值会使观看数据流的相应用户能够启动数据流之间的导航,并可能在几乎没有延迟的情况下观看直播馈送。因此,本文的实施例包括将接收到的最初没有相应指针集的数据流(例如视频信息的原始数据流)转换成包括“最新的”(up-to-date)导航(例如快进和/或快退)指针的相应数据流的系统。
图1是根据本文的实施例的数据流管理器105-1的图示。请注意,数据流管理器105-1可以同时管理对数据新片段的处理、启动回填功能、和多个流的同时分发功能。为明了起见,以下示例性实施例将着眼于将指针插入数据流102(例如从远程源接收到的直播馈送)并将结果存储在贮存器180中。然而,为了实现多数据流的处理和分发,本文的一个实施例包括并行地操作多个数据流管理器105,以便多个用户可以在接收到并处理片段时接近实时(例如延迟)地有选择地观看多个数据流中的每一个,并在接收到的数据流的已存储部分之间进行导航。换言之,数据流管理器105-1可以同时接收多个直播馈送并将指针值插入/回填到每个数据流中。
在本示例的背景下,通信系统100(例如数据流系统)包括数据流管理器105-1、网络150、以及用于观看视频信息、收听音频信息等的多用户域190(例如家庭环境)。在一个实施例中,数据流管理器105-1包括数据流解析器110、缓冲器130(存储当前指针集120-X和内容片段125-X)、贮存器180、以及数据流分发管理器145。每个用户域190可以包括各自的显示屏192(例如电视、计算机系统、媒体播放器、等等)和机顶盒194。
根据一种实现,与用户域190-1关联的相应用户(例如订户)为了控制将要被相应媒体播放器192-1(例如电视、视频播放器、音乐播放器、等等)所重放的视频和/或音频信息流而向相应机顶盒194-1提供输入信号196-1。在此类实现中,相应机顶盒194-1将通过网络150而从相应用户接收到的输入控制信号196-1传递到数据流管理器105-1的数据流分发管理器145。
基于通过网络150而从相应用户接收到的命令,数据流分发管理器145将与所选流关联的适当数据从贮存器180或缓冲器130以流的形式传送到相应用户域190。因此,每个家庭环境可以包括相对简单的机顶盒194,其使相应用户能够通过网络150来接收(例如流数据)和发送(例如输入命令)。在一个实施例中,数据流管理器105-1可以被认为是根据用户请求来处理和分发许多数据流的集中位置。
数据流管理器105-1的一个目的是使域190处的用户实时或以尽可能接近实时地观看相应数据流。基于输入,相应用户可以使用导航(例如快进和快退)功能来在相应数据流之间进行导航。术语直播馈送包括任何预录制的信息以及从远程源接收到的尚未被数据流管理器105-1完全处理的直播广播。一个实施例的目的是将指针集插入直播馈送中以用于本地存储以及通过网络150将数据流102的内容转送给用户。
如以上所讨论的,最初,插入到接收到的数据流中的相应指针集中的指针值(例如,诸如预录制视频信息等的直播馈送)可以被设置为空值,因为指向数据流中的其它片段或其它指针集的地址或相应索引在已从数据流102接收到随后片段或未来片段之前可能不是已知的。也就是说,与新接收到的直播馈送数据流102的片段关联的指针集不能指向数据流中的未来索引值,直到已知数据流102的相应的一个或多个随后片段的相应长度之后。
当从原始直播数据流接收到连续的数据片段时,本文的处理功能将具有适当值的指针集中的空指针值回填到新接收的片段或指针集。如将要讨论的,对先前插入数据流中的空指针值或临时指针值进行回填使得观看数据流的相应用户能够启动在数据流之间的导航,并可能在几乎没有延迟的情况下观看直播馈送。因此,本文的系统将接收到的最初没有相应指针集的数据流(例如视频信息的原始数据流)转换成包括“最新的”导航(例如快进和/或快退)指针的相应数据流。
如图1所示接收到数据流102(例如直播馈送)时,数据流解析器110解析数据流102的当前片段并将其存储在缓冲器130中。最初,数据流管理器105-1创建与缓冲器130中的当前片段125-X关联的空指针集120-X。换言之,对于数据流102中接收到的第一、第二、第三片段等等中的每一个(例如,限定所谓的画面组的数字数据集),数据流管理器105-1存储相应片段(例如数据内容的长度)并创建与缓冲器130中的片段关联的相应指针集(例如一个或多个指针)。如上所述,指针集120-X包括指向数据流102中其它位置(例如其它插入的指针集)的单个指针或多个指针。
如本说明书中将进一步讨论的,指针集可以包括指向数据流中未来片段的指针以及指向数据流中较早片段的指针。给定指针集中的前向指针最初设置为空值,因为在初始处理时,尚不知道前向指针的值将是什么,直到数据流管理器105-1接收到未来片段才会得知。因此,在接收到数据流102的每个新片段时,数据流管理器105-1为还有待于被接收的部分数据流102在缓冲器130中创建相应的空指针集。由于数据流102中先前片段的位置已经知道,所以数据流管理器105-1可以立即将后向(backward-looking)指针填充到指针集120-X中,而不是用空指针值来填充指针集120-X。在将最近接收到的数据流102的片段和相应的指针集从缓冲器130传输到贮存器180时,数据流管理器105-1通知数据流分发管理器145:可以通过网络150将新片段以流的形式传送到相应的一个或多个用户。
在一个实施例中,所述指针支持转换进入播放和暂停模式或者从该模式中转换出来。为了所有可能的导航功能的完整起见,部分指针集可以包括用于前向和反向画面的指针,以及包含用于当前画面的相应指针。所谓的当前指针可以被用来从其开始进行播放或者作为停止播放的位置。该当前指针还可以被用来在暂停时在其上进行循环,其中一旦显示画面,流总是返回到当前画面的开始处。快进和快退可以被视为运动暂停;问题就是显示什么画面,或者从PTP的观点看,选择跳到什么指针。
如本公开的上文中和进一步讨论的,在PTP及其相应GOP(画面组)被写到存储器之后,所谓的PTP(例如包括指针集的元数据)中的前向指针被更新,并且由于即使在第一个完整画面被摄取和分析之前,我们也可以开始将内容写到BFD存储器,所以开始播放所摄取内容的等待时间会被显著缩短。
根据本文的实施例,PTP的当前指针和反向指针从不需要被以与前向指针相同的方式来更新,因为摄取分析器了解最初将一部分流写到存储器中的相应时间的过去和当前而了解未来。因此,本文的技术使用户能够更快(或更接近于直播馈送的末端(tip))地暂停、快退、快进、以及播放。图2是示出了根据本文的实施例的数据流102的处理的时序图。
在周期时间T1(例如第一处理周期),数据流管理器105-1从数据流102接收片段1并将片段1存储在相应的缓冲器130中。例如,数据流管理器105-1将片段1存储在缓冲器130的片段125-X中。如以上所讨论的,片段1可以表示与从远程源接收到的直播馈送关联的最近接收到的数据的逻辑组(例如一组顺次显示的视频画面)。
对于片段1,数据流管理器105-1创建相应的指针集120-X以包括FPT1(例如前向指针1)、FPT2、以及FPT3。前向指针的数目可以根据相应应用而从单一指针变为多个指针。
创建指针集PS1后,数据流管理器105-1最初将PS1中的FPT1、FPT2、以及FPT3设置为诸如零的空值,因为尚未明确地知道PS1中的指针将指向哪个未来片段。在缓冲器中创建指针集PS1后(例如,如指针集125-X,其中X=1),数据流管理器105-1将指针集PS1及相应的片段1传输到贮存器180。此初步处理之后,数据流管理器105-1的数据流分发管理器145可以潜在地将片段1以流的形式向外传送到域190中碰巧正在请求在相应媒体播放器上尽可能接近实时地显示数据流102的相应观看者。数据流管理器105-1可以在来自于生成数据流102的源以及诸如域190处的相应用户的目标接收者的路径中提供小的延迟(例如,由于处理而引起的0.25~1.0秒)。
在周期时间T2期间(例如第二片段处理周期),数据流管理器105-1将缓冲器130的初始内容(例如,指针集120-X中的指针集PS1和片段125-X中的片段1)传输到贮存器180中。
从缓冲器130中清除其内容之后,数据流管理器105-1随后将与数据流102关联的下一接收到的片段(例如片段#2)存储到缓冲器130中。数据流管理器105-1重复上述创建与片段#2关联的相应指针集的处理。例如,数据流管理器105-1为每个新接收到的片段创建新的指针集。
相应的新创建的指针集中的每个前向指针最终被回填以指引(reference)存储在贮存器180中的数据流102的未来片段。而且,由于在创建相应指针集时,指针的值最初是未知的,所以数据流管理器105-1将相应指针值设置为零(例如,不指向存储的数据流140中的有效位置的空值。例如,在T1时刻,数据流管理器105-1将指针集PS1中的FPT1、FPT2、以及FPT3设置为诸如零的空值,因为尚不知道贮存器180中的未来片段的位置。在T2时刻,数据流管理器105-1将指针集PS2中的FPT1、FPT2、以及FPT3设置为诸如零的空值,因为尚不知道贮存器180中的未来片段的位置。在T3时刻,数据流管理器105-1将指针集PS3中的FPT1、FPT2、以及FPT3设置为诸如零的空值,因为尚不知道贮存器180中的未来片段的位置,等等。
请注意,数据流管理器105-1可以为先前创建的与接收到的相应片段关联的指针集而更新指针值。例如,在周期T2期间,数据流管理器105-1能够回填指针集PS1以指向数据流102的未来片段2,因为,在此稍后的时间点,已知指针集PS2和/或片段2将被存储在贮存器180中的哪里。换言之,在周期时间T2期间,数据流管理器105-1将指针集PS1的FPT1、FPT2、以及FPT3设置为相应位置的各个地址值,其中指针集PS2存在于贮存器180中所存储的数据流140中的所述相应位置处。在周期时间T3期间,数据流管理器105-1将指针集PS1的FPT1、FPT2、以及FPT3设置为相应位置的各个地址值,其中指针集PS2和PS3存在于贮存器180中所存储的数据流140中的所述相应位置处。在周期T3,数据管理器105-1还将指针集PS2的FPT1、FPT2、以及FPT3设置为相应位置的各个地址值,其中指针集PS3存在于贮存器180中所存储的数据流140中的所述相应位置处。到周期时间T10,数据流管理器105-1完全将指针集PS1回填为最终指针值。例如,FPT1指向与片段2关联的相应存储位置,FPT2指向与片段4关联的相应存储位置,FPT3指向与片段10关联的相应存储位置,等等。
请注意,图4包括最后确定(finalized)的指针集的图示,所述最后确定的指针集指向已存储的相应数据流402中的未来片段,所述已存储的相应数据流402包括已插入的由数据流管理器105-1所创建的指针集。数据流402包括与数据流102关联的编码信息以及插入的指针集PS1、PS2、PS3、等等。
如图4所示,数据流管理器105-1已完成相应的回填处理,从而使与片段1关联的指针集PS1指向相应数据流402中的多个其它位置。例如,PS1中的指针FPT1已被用地址或指针值回填,以指向指针集PS2和/或片段#2,PS1中的指针FPT2已被用地址或指针值回填,以指向指针集PS4和/或片段#4,PS1中的指针FPT3已被用地址或指针值回填,以指向指针集PS10和/或片段#10,等等。
因此,本文的实施例包括这样一种技术,即将相应数据流中的一个或多个指针修改为指向:i)与未来存储区关联的地址(例如与PS1关联的FPT1可以被修改为指向存储指针集PS2和相应片段2的存储区),ii)与未来片段关联的指针集(例如与PS1关联的FPT1可以指向指针集PS2),和/或iii)数据流中的随后片段(例如与PS1关联的FPT1可以指向未来片段2)。
在一个实施例中,相应指针集中的相应前向指针指向与随后片段关联的指针集的起始地址位置。例如,如图4所示,每个指针集中的FPT1可以指向与随后片段关联的指针集的地址,FPT2指向与相应第三随后片段关联的指针集的地址,FPT3指向与第九随后片段关联的指针集的地址,等等。
再次参照图2,数据流管理器105-1可以存储数据流102的指针集和相应片段,从而使指针集被插入到相应的接收到的数据流102中,以生成存储在贮存器180中的数据流140。如上所述,数据流102的相应片段的尺寸是未知的,直到其被数据流管理器105-1接收到。因此,数据流管理器105-1最初不能为每个指针集创建适当的值。
然而,如上所述,最终,数据流管理器105-1接收到足够的数据流102的未来片段并能够回填与指针集关联的适当值。例如,到时间周期T10,数据流管理器105-1能够为与片段1关联的PS1创建最终的指针值集。到周期T11,数据流管理器105-1能够为指针集PS2和相应的片段2创建最终的指针值集,等等。
因此,本文的实施例包括一种将数据的多个片段保持为包括插入的相应指针集的相应数据流的技术。所述插入数据流中的每一个相应指针集包括指向相应流内的多个位置的指针。如本说明书中将进一步讨论的,所述指针使得相应用户能够跳到相应数据流中的不同位置。
图3是各个周期的图示,示出了根据本文实施例对数据流102的处理。在这种情况下,数据流管理器105-1不执行指针值的部分回填。作为替代,当数据流管理器105-1已接收到并处理了数据流102的足够的未来片段时,数据流管理器105-1回填相应指针集。
更具体地说,数据流管理器105-1创建指针集并将其插入接收到的数据流102中,该数据流102作为数据流402而存储在贮存器180中。然而,数据流管理器105-1不在指针集中回填适当发指针值,直到数据流管理器105-1能够为相应指针集中的每个指针创建最终指针值。例如,直到周期T10,指针集PS1中的指针值包括全部为零的空值。在周期T10,数据流管理器105-1用指向未来指针集和/或片段的相应地址值来回填FPT1、FPT2、以及FPT3。在周期时间T11,数据流管理器105-1回填指针集PS2。在周期时间T12,数据流管理器105-1回填与指针集PS3关联的指针值,等等。
如本文所讨论的,数据流管理器105-1使相应用户能够通过跳过“零指针”(尚未被填充的那些)而快进到相应直播摄取(例如数据流102)的“末端”(tip)。相反地,数据流管理器105-1使用户能够从所述末端跳回到为相应数据流102而创建的已被填充的指针集。这可能伴随有被称为“最后地址”(last address)和“最后完成地址”(lastcompleted address)的两个附加指针。每次加载数据片段时,“最后地址”被更新为这个值。每次完成指针集时,“最后完成地址”被更新为这个值。
在快进期间,诸如由数据流管理器105-1提供的功能的算法最终到达前向指针已被完成的片段。此时,代码跳到“最后地址”(其为数据流102的直播末端),并进入到正常播放。
如果用户处于直播播放末端,则快退指针还有待于被填充。正如所期望的,在这种情况下,所述算法可以跳回到“最后完成地址”并从那里开始快退。因此,相应用户可以观看数据流102的直播末端(或接近直播末端)并针对数据流102的存储部分执行快退能力。
图5是根据本文的实施例的被插入到相应存储的数据流502中的指针集的图示。如以上所讨论的,每个指针集(例如PS1、PS2、等等)可以包括前向指针(例如FPT1、FPT2、FPT3、等等)以及后向指针(例如BPT1、BPT2、BPT3、等等)。如所示的,本文的一个实施例包括以连续的方式将与相应片段关联的多个指针集中的每一个存储在同一或公共数据流中。换言之,存储在贮存器180中的处理后的数据流140可以包括后面跟随着第一片段的第一指针集、后面跟随着第二片段的第二指针集、后面跟随着第三片段的第三指针集、等等。
再次简要地参照图1,插入到接收到的数据流102中的前向和后向指针的一个目的是使相应用户能够控制存储在贮存器180中的相应数据流的哪一部分在相应媒体播放器上回放。例如,插入的前向和后向指针使相应用户能够以不同的速度执行诸如快进和快退功能的导航。
假设环境190-1处的相应用户生成输入196-1(例如通过遥控设备)以便快进与贮存器180中存储的数据流140关联的当前观看点。数据流分发管理器145通过网络150来接收此命令,并随后使用相应数据流140中的前向指针来向前跳并通过网络150将数据以流的形式从数据流140中的不同位置传送到用户。前向指针FPT1使得能够实现第一速度的快进,前向指针FPT2使得能够实现第二速度的快进,前向指针FPT3使得能够实现第三速度的快进,等等。当然,用户快进对相应数据流102的观看不能超过直播或当前馈送的当前位置,所述直播或当前馈送诸如由数据流管理器105-1接收到并处理的数据流102。
将指针插入到接收到的数据流中使相应用户能够控制观看流数据的速度近似达到直播馈送的当前位置,诸如更接近由数据流管理器105-1接收到的实时馈送。这种少量延迟是由于数据流管理器105-1处理最近接收到的数据流102的片段而同时数据流分发管理器145通过网络150将先前处理的片段馈送给相应用户而产生的。
在一个实施例中,网络150表示诸如因特网、广域网、局域网等网络。因此,数据流管理器105-1起到集中位置的作用,所述集中位置管理着将数据以流的形式传送到诸如环境190的多个不同位置。
图1~5描述根据本文的实施例的与数据流管理器处理功能105-1关联的功能。图6是示出了根据本文的实施例、用于执行一个或多个处理功能的示例性体系架构的图示。
如图所示,数据流管理器105-1可以在包括处理器113和相应软件代码(例如调度应用程序140-1)的相应计算机系统中实现以执行本说明书中所讨论的实施例。作为如图6所示的实施例的替代,数据流管理器105-1可以通过诸如逻辑门、缓冲器等硬件组件或适当的硬件和软件资源的组合来实现。
如图6所示,本示例的计算机系统310包括与存储系统312相耦合的互连(interconnect)311、处理器313、输入/输出接口314、以及通信接口315。输入/输出接口314使计算机系统310能够与诸如贮存器180、数据流330、手持式鼠标等外围设备通信。实现数据流管理器105-1的计算机系统310可以包括这些外围设备中的全部、一些或不包括这些外围设备。通信接口315使计算机系统310能够将流数据分发到不同的目标用户环境190。
如图所示,用数据流管理器应用程序142-1来将存储系统312编码,所述数据流管理器应用程序142-1支持将指针值插入到流数据中并在接收到并处理流数据的新片段时修改指针值的功能。数据流管理器应用程序142-1可以体现为诸如数据和/或逻辑指令(例如存储在存储器中或诸如磁盘等其它计算机可读介质上的代码)等支持根据本文所述不同实施例的处理功能的软件代码。在操作期间,处理器313经由互连311来访问存储系统312以便启动、运行、执行、解释或履行数据流管理器应用程序142-1的逻辑指令。数据流管理器应用程序142-1的执行在数据流管理器进程142-2中产生处理功能。换言之,数据流管理器进程142-2表示图1中如上所讨论的数据流管理器105-1的一个或多个部分。
应注意的是在计算机系统310中执行的数据流管理器应用程序142-1在图6中由数据流管理器应用程序142-1和/或数据流管理器进程142-2中的一个或两个来表示。为便于讨论,在执行或支持各种步骤和功能性操作以执行本文所讨论的技术时,将通常引用为数据流管理器105-1。
还应注意的是本文的示例性结构包括数据流管理器应用程序142-1本身(即未执行或非执行的逻辑指令和/或数据)。数据流管理器应用程序142-1可以存储在计算机可读介质(诸如软盘)、硬盘、或光介质上。数据流管理器应用程序142-1还可以存储在诸如固件、只读存储器(ROM)的存储系统312中,或者如在本示例中,作为可执行代码而存储在例如随机存取存储器(RAM)中。除这些实施例之外,还应注意的是本文的其它实施例包括在处理器313中执行数据流管理器应用程序142-1作为调度器进程142-2。因此本领域的技术人员将理解数据通信设备可以包括其它处理和/或软件和硬件组件以执行本文所述的功能。
图7是示出了根据本文的实施例、回填与数据流关联的指针值的技术的流程图700。请注意,将针对如图1~6所讨论的实施例来描述图7。而且,如上所述,请注意,数据流管理器105-1和相关功能可以在硬件和/或软件中实现。
在步骤710中,数据流管理器105-1启动贮存器180中的第一存储区的分配以保持与流数据102的第一接收片段关联的指针集。
在步骤720中,数据流管理器105-1启动贮存器180中的第二存储区的分配以保持与流数据的第二片段关联的指针集。用于存储相应指针的位置,诸如第二存储区的地址,至少部分地取决于与流数据的第一片段关联的长度。
在步骤730中,数据流管理器105-1根据与第一片断关联的长度来启动对与第一存储区关联的指针集(例如一个或多个指针)的修改。换言之,数据流管理器105-1启动对与第一存储区关联的指针集的修改,以指引(reference)贮存器180中的第二存储区。在一个实施例中,数据流管理器105-1通过根据未来接收到的片段的长度来回填指针集中的指针值而实现这个目的。
图8和9联合构成流程图800(例如流程图800-1和流程图800-2),其示出了根据本文的实施例、将指针插入流数据、回填指针值等技术。
在步骤810中,数据流管理器105-1接收流数据的第一片段(例如,诸如预录制视频流的直播馈送)。
在步骤820中,数据流管理器105-1在贮存器180中分配第一存储区以存储第一片段和与第一片段关联的相应指针集(例如PS1)。
在步骤830中,数据流管理器105-1最初将与第一片段关联的相应指针集赋予空值(例如,诸如零的无意义值)。
在步骤840中,数据流管理器105-1接收流数据的第二片段。例如,数据流管理器105-1在完成与第一片段关联的处理之后接收第二片段。
在步骤850中,数据流管理器105-1在贮存器180中分配第二存储区以存储第二片段和相应指针集。在一个实施例中,第二存储区的相应位置(例如地址)至少部分地取决于与流数据的第一片段关联的长度,因为与第二区关联的指针集被(例如,按地址(address-wise))存储在第一片段之后、第二片段之前。
在步骤860中,数据流管理器105-1最初将与第二片段关联的相应指针集赋予空值。
在图9所示的流程图800-2的步骤910中,数据流管理器105-1将与第一片段关联的相应指针集中的指针回填为(例如覆写与指针关联的空值或过期值(outdated value))指示(indexing)第二存储区的相应值。换言之,数据流管理器105-1将指针修改或更新为第二存储区中的地址。在一个实施例中,更新后的指针值指向与第二存储区或第二指针集关联的起始地址。
在步骤920中,数据流管理器105-1接收流数据的第三片段。
在步骤930中,数据流管理器105-1分配第三存储区以存储第三片段和相应指针集(例如第三指针集)。在一个实施例中,第三存储区(例如第三指针集)的相应位置(例如地址)至少部分地取决于与流数据的第二片段关联的长度。与第三区域关联的指针集被存储(例如地址智慧辨识)在流数据的第二片段之后、第三片段之前。
在步骤940中,数据流管理器105-1最初将与第三片段关联的相应指针集赋予空值。
在步骤950中,数据流管理器105-1将与第一片段关联的相应指针集中的指针回填为(例如覆写空值或过期值)指向(例如,指示)第三存储区的相应值。换言之,在一个实施例中,数据流管理器105-1将(与第一片段关联的指针集中的)指针修改或更新为第二存储区中的地址。在一个实施例中,数据流管理器105-1可以将相应指针值更新为指向与第二存储区关联的起始地址。
在步骤960中,数据流管理器105-1将与第二片段关联的相应指针集中的指针回填为指向(例如,指示)第三存储区的相应值。换言之,在一个实施例中,数据流管理器105-1将(与第二片段关联的指针集中的)指针修改或更新为第三存储区中的地址。数据流管理器105-1可以将相应指针值更新为指向与第三存储区关联的起始地址。
如果讨论的,本文的技术非常适合于在诸如对插入流数据中的指针值进行回填的应用中使用。然而,应注意的是本文的结构不限于在此类应用中使用,因此,本文的结构及其变形同样非常适合于其它应用。
虽然已参照本发明的优选实施例而特别示出并描述了本发明,但本领域的技术人员将理解,在不脱离所附权利要求书所限定的本发明的精神和范围的情况下可以进行形式和细节方面的各种修改。此类变更意欲被涵盖在本发明的范围内。同样地,本发明的实施例的前述说明并不意欲是限制性的。相反,对本发明的实施例的任何限制由所附权利要求来表示。

提供与数据流关联的参考的方法和系统.pdf_第1页
第1页 / 共35页
提供与数据流关联的参考的方法和系统.pdf_第2页
第2页 / 共35页
提供与数据流关联的参考的方法和系统.pdf_第3页
第3页 / 共35页
点击查看更多>>
资源描述

《提供与数据流关联的参考的方法和系统.pdf》由会员分享,可在线阅读,更多相关《提供与数据流关联的参考的方法和系统.pdf(35页珍藏版)》请在专利查询网上搜索。

插入到接收到的数据流中的每个指针集最终包括指向数据流内其它位置(例如其它片段)的指针值。最初,指针集可以被设置为空值,因为指向数据流中其它片段或其它指针集的地址或相应指示在它们被从直播馈送中接收到或被插入数据流中之前可能并非已知。当从诸如直播馈送的原始数据流接收到数据的新片段时,本文的处理功能将具有适当值的指针集中的空指针值回填为新接收到的片段或指针集。将适当指针值回填到数据流中使得观看数据流的相。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1