掌桥专利:专业的专利平台
掌桥专利
首页

用于存储接收的包流的文件的缓冲管理

文献发布时间:2023-06-19 11:39:06


用于存储接收的包流的文件的缓冲管理

技术领域

本公开涉及一种在缓冲输入包流的包的同时优化有限存储器资源的管理的方法、设备和计算机可读存储介质。

背景技术

各种服务和应用涉及包流的接收。例如,高级电视系统委员会(ATSC)3.0标准定义这样的广播方法:广播公司在发送信道上向接收器传送互联网协议(IP)包。具体地讲,ATSC标准在ATSC Standard A/322–Physical Layer Protocol(Doc.A/322:2017dated June 6,2017)(以下“A/322标准”)和ATSC Standard A/321–System Discovery and Signaling(Doc.A/321:2016dated March 23,2016)(以下“A/321标准”)中定义物理层协议,其中每个标准的全部内容通过引用包含于此。这些协议结合链路层协议ATSC标准:Link-LayerProtocol(A/330)(Doc.A/330:2016dated September 19,2016)(以下“A/330标准”,其全部内容通过引用包含于此)而被实现,以向上层传送UDP/IP包。

ATSC 3.0接收装置的上层协议从发生接收、解调和下层处理的下层接收UDP/IP包并且解释UDP/IP包,并且被设计围绕对于互联网通信而言共同的许多协议。这些包括称为ROUTE(单向传输实时对象传送)的用于文件传送的修改的单向传输文件传送(FLUTE)协议(在ATSC Proposed Standard A/331(Doc.S33-331r1 dated November 7,2017)(以下“A/331标准”,其全部内容通过引用包含于此)中对其进行了描述)和由互联网工程任务组(IETF)开发的许多其它互联网协议的使用。A/331标准还定义基于UDP/IP的传输协议。

ATSC 3.0电视接收器能够管理按照每秒几十兆比特的速度的流数据的接收以便处理信令并且选择包从而用于解码和呈现给用户。在广播流内传送的对象是文件。这些文件中的少数文件(主要是携带信令数据的文件)将会适合单个UDP/IP包,而其它文件可具有兆字节的长度并且因此被分割成多个UDP/IP包以用于传送。

ATSC 3.0接收器的设计可解决几个存储器相关考虑因素。例如,ATSC 3.0接收器具有有限的存储器,并且因此它的操作应该优化存储器使用。另一有限的资源是CPU周期,因此ATSC 3.0接收器中的接收的数据的存储和处理应该使CPU周期的数量最小化。其它考虑因素包括存储器泄漏的避免以及易失性存储器(例如,RAM)和非易失性存储器(例如,FLASH)的合适的使用,包括从易失性存储器到非易失性存储器的合适的数据的传送。最后,ATSC 3.0接收器应该被设计为当可用存储器不足时支持可接受性能和用户体验。本公开描述解决这些挑战的策略。

发明内容

根据本公开的实施例,提供一种用于管理用于存储经包流接收的文件的具有预设字节大小的缓冲器的方法。所述方法包括:确定输入文件的文件标识符和长度;以及确定输入文件将不适合下一写位置和缓冲器的末尾之间的空间。响应于确定输入文件将不适合所述下一写位置和缓冲器的末尾之间的空间,所述方法包括:在识别存储在缓冲器中的一个或多个文件的映射图中,删除与至少部分地存储在开始于初始写位置并且具有与输入文件的长度相等的大小的缓冲器的区域中的文件对应的每个条目。与所述删除一起,所述方法包括:在映射图中添加条目,该条目包括与缓冲器中的所述初始写位置关联的输入文件的文件标识符和长度,以及分配开始于缓冲器中的所述初始写位置并且具有与输入文件的长度相等的大小的缓冲器中的连续区域并且随后将所述下一写位置移动到分配的连续区域的末尾。最后,所述方法包括:接收输入文件的包并且将接收的包存储在分配的连续区域中。

根据本公开的实施例,提供一种用于在具有预设字节大小的缓冲器中存储经包流接收的文件的缓冲管理设备。所述缓冲管理设备被配置为:确定输入文件的文件标识符和长度;以及确定输入文件将不适合下一写位置和缓冲器的末尾之间的空间。响应于确定输入文件将不适合所述下一写位置和缓冲器的末尾之间的空间,所述缓冲管理设备被配置为,在识别存储在缓冲器中的一个或多个文件的映射图中,删除与至少部分地存储在开始于初始写位置并且具有与输入文件的长度相等的大小的缓冲器的区域中的文件对应的每个条目。与所述删除一起,所述缓冲管理设备被配置为:在映射图中添加条目,该条目包括与缓冲器中的所述初始写位置关联的输入文件的文件标识符和长度,以及分配开始于缓冲器中的所述初始写位置并且具有与输入文件的长度相等的大小的缓冲器中的连续区域并且随后将所述下一写位置移动到分配的连续区域的末尾。最后,所述缓冲管理设备被配置为接收输入文件的包并且将接收的包存储在分配的连续区域中。

根据本公开的实施例,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机可读指令,当所述计算机可读指令由处理器执行时,所述计算机可读指令使处理器执行一种用于管理用于存储经包流接收的文件的具有预设字节大小的缓冲器的方法。所述方法包括:确定输入文件的文件标识符和长度;以及确定输入文件将不适合下一写位置和缓冲器的末尾之间的空间。响应于确定输入文件将不适合所述下一写位置和缓冲器的末尾之间的空间,所述方法包括:在识别存储在缓冲器中的一个或多个文件的映射图中,删除与至少部分地存储在开始于初始写位置并且具有与输入文件的长度相等的大小的缓冲器的区域中的文件对应的每个条目。与所述删除一起,所述方法包括:在映射图中添加条目,该条目包括与缓冲器中的所述初始写位置关联的输入文件的文件标识符和长度,以及分配开始于缓冲器中的所述初始写位置并且具有与输入文件的长度相等的大小的缓冲器中的连续区域并且随后将所述下一写位置移动到分配的连续区域的末尾。最后,所述方法包括:接收输入文件的包并且将接收的包存储在分配的连续区域中。

作为一般介绍提供了前面的段落,并且这些段落不应限制下面的权利要求的范围。通过参照下面结合附图进行的详细描述,将会最好地理解描述的实施例以及另外的优点。

附图说明

将会容易地获得对本公开的更完整的理解及其许多伴随的优点,因为当结合附图考虑时通过参照下面的详细描述,其将会变得更好理解,其中:

图1表示示例性数字电视广播系统;

图2表示示例性接收设备;

图3表示在接收设备中执行的示例性处理;

图4表示在接收设备中执行的示例性“开始新文件”子处理。

图5A和5B表示示例性缓冲器和对应散列表。

图6A和6B表示示例性缓冲器和对应散列表。

图7A和7B表示示例性缓冲器和对应散列表。

图8A和8B表示示例性缓冲器和对应散列表。

图9A和9B表示示例性缓冲器和对应散列表。

图10A和10B表示示例性缓冲器和对应散列表。

图11A和11B表示示例性缓冲器和对应散列表。

图12A和12B表示示例性缓冲器和对应散列表。

图13A和13B表示示例性缓冲器和对应散列表。

图14A和14B表示示例性缓冲器和对应散列表。

图15表示计算机的示例性硬件结构。

具体实施方式

尽管本公开能够具有许多不同形式的实施例,但在附图中显示并且将在这里详细描述特定实施例,应该理解,本文的这种实施例的公开应该被视为原理的示例,而非意图将本公开限制于显示和描述的特定实施例。

如这里所使用,术语“a”或“an”被定义为一个或超过一个。如这里所使用,术语“多个”被定义为两个或超过两个。如这里所使用,术语“另一”被定义为至少再一个或更多个。如这里所使用,术语“包含”和/或“具有”被定义为包括(即,开放式语言)。如这里所使用,术语“耦合”被定义为连接,但未必是直接连接,并且未必是以机械方式连接。如这里所使用,术语“程序”或“计算机程序”或类似术语被定义为设计用于在计算机系统上执行的指令序列。“程序”或“计算机程序”可包括子例程、程序模块、脚本、函数、过程、对象方法、对象实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、共享库/动态加载库和/或设计用于在计算机系统上执行的其它指令序列。

如这里所使用,术语“节目”也可用在第二语境中(以上定义用于第一语境)。在第二语境中,在“电视节目”的意义上使用该术语。在这种语境中,该术语用于表示任何相干系列的音频/视频内容,诸如将会被解释为并且在电子节目指南(EPG)中被报告为单个电视节目的内容,而不管该内容是电影、体育赛事、多部分连续剧的片段还是新闻广播等。该术语也可被解释为包括商业插播广告和可能未在EPG中被报告为节目的其它像节目一样的内容。

在整个本文件中对“一个实施例”、“某些实施例”、“实施例”、“实现方式”、“示例”或类似术语的提及表示结合实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个本说明书的各种地方的这种词语的出现不必全部表示相同的实施例。另外,所述特定特征、结构或特性可非限制性地在一个或多个实施例中以任何合适的方式组合。

如这里所使用,术语“或者”应该被解释为是包括性的或者表示任何一个或任何组合。因此,“A、B或者C”表示“下面的任何一种:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或动作的组合以某种方式固有地相互排斥时,才会发生这种定义的例外。

现在参照附图,其中相同标号在几个示图中始终表示相同或对应部分,下面的描述涉及一种用于存储接收的包流的文件的缓冲管理系统。

本公开的实施例涉及一种用于收集和存储在电视接收设备(例如,ATSC 3.0接收器)中接收的文件的方法。所述方法使用一个或多个循环缓冲器,例如,基于ATSC 3.0广播发送的特性,所述一个或多个循环缓冲器被管理,以使得CPU周期被最小化并且操作被优化。ATSC3.0发送的一个这种特性是某些文件经常重复。经常重复的文件的一个示例是开始对流媒体的每个分量(例如,视频基本流、音频基本流等)进行解码所需的“初始化段”(IS)文件。

本公开的实施例基于下面的概念。

(1)例如,由于在A/331标准中定义的信令,输入文件的长度是预先已知的。

(2)携带文件的片段的每个包包括偏移参数,偏移参数指示从文件的开头到所述片段所属于的文件中的点的偏移。偏移参数可由电视接收设备使用以确定在缓冲器中的哪个位置放置所述片段,由此能够实现片段的无序接收。

(3)文件被写在缓冲器的连续字节中,而不被分割于缓冲器的非连续区域之中。因此,不发生“包裹(wrapping)”,在“包裹”中,朝着缓冲器的末尾写文件的开头并且在缓冲器的头处写文件的其余部分。也就是说,因为“包裹”导致文件的各部分位于缓冲器的非连续区域中(也就是说,位于缓冲器的末尾和缓冲器的开头),所以在目前公开的实施例中不执行“包裹”。

(4)虽然不执行如以上在(3)中所述的“包裹”,但可在这样的意义上循环地写文件:如果给定文件不能装在当前写位置和缓冲器的末尾之间的缓冲区域中,则在缓冲器的开头的一个或多个文件可被删除以腾出空间并且当前写位置被移动到缓冲器的开头或朝着缓冲器的开头移动。

(5)每个缓冲器被合适地确定大小,从而能够存储保持视频、音频和字幕的解码和同步呈现所需的数量的文件。

(6)如果接收到作为已经位于缓冲器中的文件的重复文件的新文件,则在所述新文件的最后一个字节被存储在缓冲器中之后,存储所述以前接收的文件的缓冲器的区域可被释放。

用在本公开的实施例中的每个循环缓冲器占用存储器(例如,RAM)中的固定的连续存储器范围,并且存储文件对象。对于每个缓冲器,指针(以下“下一开始位置(NextStart Location)”)可识别将会写下一新文件的第一字节的存储器位置。每个缓冲器具有分派的唯一缓冲器编号和列出或者以其它方式识别代表该缓冲器中的文件的条目的关联的散列表(或其它表或数据结构)。缓冲器的散列表中的每个条目对应于存储在缓冲器中的一个文件,并且在一个实施例中包括至少下面的关于文件的参数:文件的名称、根据A/331标准的与文件的传输关联的传输对象标识符(TOI)、文件的第一字节在缓冲器中的位置和文件的总长度。A/331中的TOI执行与在RFC 6726中定义的FLUTE标准中的TOI值相同的功能,因为在A/331中定义的传输协议基于FLUTE。

图1是用于提供对电视内容的访问的示例性数字电视广播系统100。所述系统包括服务提供方102、接收设备120和输入装置140。接收设备102可被配置为经天线接收数据。接收设备102还可被配置为连接到互联网130以接收数据。

在一个示例中,服务提供方102是电视内容的广播公司,并且接收设备120可以是被配置为用作电视的任何装置,诸如平坦屏幕TV、膝上型计算机、平板计算机或智能电话。输入装置140可按照物理方式或按照无线方式连接到接收设备120,并且可以是适合操作接收设备120的任何装置,诸如具有数字键和/或字母数字键的遥控器、QWERTY键盘或执行与接收设备120兼容的应用的智能电话。输入装置140上的键可以是物理按钮或者触摸屏上的数字或字母数字键的数字表示。本公开的实施例可被用于提供对其它广播内容(例如,可执行应用(诸如,HTML5应用))的访问。服务提供方102发送广播流,广播流包括电视内容并且可经数字电视广播信号而被传送。

在一个实施例中,服务提供方102(例如,广播公司实体或广播站)操作服务分配系统,服务分配系统包括具有发送器的发送设备,发送器被配置为在数据流(例如,广播流)中向接收设备120发送内容、应用和/或服务。发送器被配置为例如经数字地面广播向接收设备120提供数据流。在其它示例中,数据流可经数字地面广播、移动电话网络、宽带网络(诸如,互联网)、有线网络和卫星链路之一或组合而被发送给接收设备120。服务分配系统可使用任何一种发送技术或各种发送技术向接收设备120传送数据流。

根据一个实施例的服务分配系统包括源编码器、信道编码器和调制器。源编码器包括数据、音频和视频编码器以压缩从源接收的音频、视频、信令、控制或其它数据。信道编码器对压缩的媒体和信令数据执行随机化、交错、信道编码和帧映射。例如,信道编码器包括帧构建器(frame builder),帧构建器将许多数据基元形成为将要在正交频分复用(OFDM)码元上传送的序列。调制器(例如,复用器)将处理的数字数据转换成调制码元,所述调制码元能够是例如OFDM码元。复用的数据随后被传递给逆快速傅里叶变换器(IFFT),逆快速傅里叶变换器将频域信号变换成时域信号。时域信号被提供给用于产生码元之间的保护间隔(GI)的保护插入模块,然后被提供给数模(D/A)转换器。然后,上转换、RF放大和无线广播被执行以发送广播流。

发送设备或接收设备的某些部件可能在其它实施例中不是必要的。可例如在DVB-T2标准(ETSI EN 302 755V1.4.1dated July 1,2015)(通过引用包含于此)、A/322标准和A/321标准中找到OFDM发送器和接收器的细节。

图2表示示例性接收设备120,接收设备120被配置为访问电视内容和广播公司应用。接收设备120可以是固定或移动装置,诸如电视机、机顶盒、智能电话、平板计算机、膝上型计算机、便携式计算机或被配置为接收电视内容的任何其它装置。另外,接收设备120可以是被包括在交通工具或者上述任何固定或移动装置中的数字电视接收器。

接收设备120包括:接收器电路,被配置为从一个或多个服务提供方102接收数据流(例如,广播流);和处理电路,被配置为执行接收设备120的各种功能。在一个实施例中,调谐器/解调器202接收包含广播流的广播发射。根据该实施例,接收设备120可替代地或者另外被配置为接收有线电视发送或卫星广播。

当ATSC 3.0广播发射已被调谐器/解调器202获取时,输入数据包可根据目前描述的实施例而被缓冲在工作存储器240中。在一些实施例中,根据目前描述的管理策略缓冲的某些文件被选择性地移动到例如永久存储装置280,移动到未被缓冲器和散列图占用的工作存储器240的部分,或者移动到另一RAM。文件到除文件被盖写的缓冲器之外的存储器的这种选择性移动适用于可能在以后的时间参考(或再次访问)的文件。示例包括信令表和与广播公司应用关联的文件。与媒体(例如,视频、音频和字幕)关联的文件可被直接从接收它们的缓冲器渲染和呈现,并且不被移动到它们能够在以后的时间重放的永久存储装置。然而,对于实现个人视频记录器(PVR)功能的接收装置,媒体文件将会被移动到永久存储装置以用于时移重放。

解复用器204可使用来自存储装置280的任何必要的文件对数据流进行解复用,并且将解复用的数据传送给媒体引擎290以用于解码成分开的音频和视频(A/V)流。由解复用器204输出的文件(诸如,元数据、低级信令(LLS)和服务层信令(SLS)文件、媒体文件和电子服务指南(ESG)文件)可被提供给CPU 238以用于处理。音频由音频解码器210解码,并且视频由视频解码器214解码。另外,如果存在未压缩的A/V数据,则未压缩的A/V数据可经未压缩A/V接口(例如,HDMI接口)而被接收。

接收设备120通常在至少一个处理器(诸如,CPU 238)的控制下操作,CPU 238经一个或多个总线(例如,总线250)而被耦合到永久存储装置280、工作存储器240、程序存储器242和图形子系统244。根据一个实施例,CPU 238被配置为产生用于向用户输出接收的媒体的用户界面。合成器和视频接口260将由图形子系统244输出的图形与视频图像组合以产生适合显示在视频显示器上的输出。

CPU 238操作以执行接收设备120的功能,包括使用例如存储在程序存储器242中的HTML5用户代理执行广播公司应用(例如,HTML5应用)、本机广播公司应用等中所包含的脚本对象(控制对象)。

在一个实施例中,经例如在ATSC Standard A/331(Doc.A/331:2017datedDecember 6,2017)(以下“A/331标准”)中描述并且其全部内容通过引用包含于此的ROUTE协议,构成广播公司应用的所述一批文件能够通过广播作为包而被传送。在ATSC StandardA/344(Doc.A/344:2017dated December 18,2017)(以下“A/344标准”)中描述示例性广播公司应用,其全部内容通过引用包含于此。

在某些实施例中,CPU 238可被耦合到任何一个接收设备120资源或接收设备120资源的组合以集中控制一个或多个功能。在一个实施例中,CPU 238还操作以监督接收设备120(包括调谐器/解调器202和其它电视资源)的控制。

在一个实施例中,通过输入数据包接收的文件的缓冲由CPU 238控制。参照图3描述缓冲管理处理300。该处理开始于接收包的步骤S30。包可以是针对初始化的缓冲器和对应散列表接收的第一个包,或者可以是在包流中接收的随后的包之一。

在接收第一个包的前一场景中,预定字节大小的缓冲器被初始化,并且与缓冲器对应的散列表被创建。在初始状态下,缓冲器和散列表都是空的,并且Next StartLocation指针被初始化为缓冲器的头。一旦接收器被调谐到ATSC 3.0广播发射并且信令表已被获取,与请求的服务关联的分层编码传输(LCT)信道将会被识别。例如,使用包括基于服务的传输会话实例描述(S-TSID)的服务编目表(SLT)和服务层信令(SLS)表,LCT信道可被识别,如A/331标准所定义。

每个LCT信道与源和目的地IP地址和端口值和TSI值的特定组合关联。可在相同的源和目的地IP地址和端口值的IP包内携带超过一个LCT信道。在一个实施例中,TSI值区分特定LCT信道。也就是说,每个接收的LCT信道具有对应的初始化的缓冲器和散列表,所述缓冲器和散列表存储并且管理具有该LCT信道的TSI值的包。

ATSC A/331标准定义两个不同的可能的传输协议:ROUTE/DASH和MPEG MMT。目前公开的缓冲管理处理的实施例适用于这两种传输协议。MPEG DASH标准被描述于ISO/IEC23009-1:2014,“Information technology—Dynamic adaptive streaming over HTTP(DASH)—Part 1:Media presentation description and segment formats,”International Organization for Standardization,15May 2014(以下“MPEG DASH标准”),其全部内容通过引用包含于此。

返回到图3的缓冲管理处理300的步骤S30,跟在包的接收后面的步骤是步骤S32中的遍历对应散列表。遍历散列表的目的是在步骤S34中确定是否存在具有与接收的包相同的TOI编号并且被标记为未完成的散列表中的条目。在一些实施例中,例如在TOI编号本身并不唯一识别文件名的实施例中,步骤S34包括确定是否存在具有相同的文件标识符(例如,文件名和TOI)的散列表中的条目。如果找到与接收的包的名称和TOI编号匹配并且被标记为未完成的散列表中的条目,则这指示接收的包是已经被部分地接收并且缓冲的文件的段。因此,合适的缓冲空间已被分配给所述文件,并且接收的包属于所述分配的缓冲空间。

因此,处理300中的步骤S34的“是”分支通向步骤S36,在步骤S36中,接收的包被存储在与找到的散列表中的条目对应的文件的分配的缓冲区域中。找到的散列表中的条目指示针对所述文件分配的空间的第一字节的位置。如以上所讨论,接收的包包括偏移参数,偏移参数指示从文件的开头到接收的包的片段所属于的文件中的点的偏移。通过将接收的包的偏移参数与缓冲器中的文件的第一字节的位置相加,接收的包的文件片段在缓冲器中的合适的位置能够被确定,并且文件片段能够在步骤S36中被存储在缓冲器中。

在文件片段完成存储在缓冲器中的文件的情况下,“未完成”标签被从与完成的文件对应的散列表中的条目去除。当针对文件接收到最后一个文件片段并且“未完成”标签被从散列表中的条目去除时,散列表的搜索被执行以确定是否相同名称的另一文件已经存在于散列表中,意味着相同文件已在以前被接收并且缓冲。如果在散列表中找到这种重复条目,则重复条目被从散列表去除。尽管较早接收的重复文件的字节保留在缓冲器中并且不被擦除,但与这个文件对应的条目被从散列表去除,以使得散列表不包括对写有所述较早接收的重复文件的缓冲器的区域的任何引用。

回到步骤S34,如果未找到与接收的包的TOI编号匹配并且被标记为未完成的散列表中的条目,则这指示两种可能性之一。如果不存在具有接收的包的TOI编号的散列表中的条目,则所述包是新的输入文件的第一个包。替代地,如果在散列表中存在具有与接收的包相同的TOI编号的条目,但该条目未被标记为未完成,则这指示相同文件的前一次发送已在较早时间点被完全地缓冲并且接收的包是所述文件的新的发送的第一个包。

在以上情况中的任一情况下,在步骤S34的“否”分支中的步骤S38中执行开始新文件的处理,步骤S34的“否”分支指示未找到与接收的包的TOI编号匹配并且被标记为未完成的散列表中的条目。开始新文件的处理被参照图4描述为开始新文件操作400。

开始新文件操作开始于步骤S40,并且移至步骤S41以确定新文件是否将会适合缓冲器中的剩余空间。为了对此进行确定,如以上例如在A/331标准中所述通过信令预先接收到的新文件的大小被与Next Start Location指针的字节位置相加。如果所获得的位置超出缓冲器的末尾,则在步骤S41中确定在未首先腾出更多可用空间的情况下新文件将不适合缓冲器中的剩余空间。如果新文件的大小大于Next Start Location指针的位置和缓冲器的末尾之间剩余的缓冲区域,则将会从缓冲器的头获取将要腾出的空间。

另一方面,如果通过将新文件的大小与Next Start Location指针的字节位置相加而获得的位置未超出缓冲器的末尾,则新文件在步骤S41中被确定为适合缓冲器中的剩余空间,而无需去除散列表中的任何条目。在这种情况下,该处理移至步骤S46以确定新文件的范围是否将会与在散列表中列出的其它文件交叠。

在步骤S46中,已知将会开始在Next Start Location指针处写所述文件,因为在步骤S41中确定所述文件将会适合布置在Next Start Location和缓冲器的末尾之间。因此,步骤S46中的新文件的范围开始于Next Start Location,并且延伸新文件的长度。给定新文件的这个范围,在步骤S46中确定是否在散列表中列出的任何文件与新文件的范围交叠。在这个处理中,散列表中的每个条目的分配的连续缓冲区域被确定为开始于在文件的第一字节的位置的散列表字段中指示的字节编号,并且被确定为在长度上等于散列表条目的文件长度字段。然后,确定每个各散列表条目的关联的连续缓冲区域是否与新文件的范围交叠。换句话说,步骤S46确定:如果新文件被存储在缓冲器中,则是否在散列表中列出的任何文件将会被部分地或完全盖写。

如果在步骤S46中确定新文件的范围将不与散列表中的文件交叠,则该处理移至步骤S47,在步骤S47中,为在Next Start Location开始的新文件分配缓冲器中的区域。作为步骤S47的分配的一部分,基于通过信令预先接收并且被包括在步骤S30中接收的包中的关于新文件的信息在散列表中创建新条目。例如,文件的名称、文件的TOI和文件的长度被填写作为散列表中的单个条目。文件的第一字节的位置被填写在散列表中作为Next StartLocation指针的当前位置。最后,如果在步骤S30中接收的包不包含整个文件,则散列表中的新条目被标记为未完成。

因此,在步骤S47中,基于散列表中的创建的条目为新文件分配缓冲器中的区域。分配的缓冲区域是连续的,并且开始于Next Start Location指针的当前位置。分配的缓冲区域的大小是在新创建的散列表条目中指示的文件的长度。在步骤S47中分配缓冲器中的区域时,Next Start Location指针的位置在步骤S48中被从分配的区域的开头移至分配的区域的末尾,或者在新文件将会正好填充到缓冲器的末尾的情况下,移至缓冲器的头。在本公开中,“缓冲器的头”被用于表示在缓冲器的开头附近的位置,所述位置可以是字节0或靠近字节0的另一位置。

然后,在步骤S49中,在步骤S30中接收的包被存储在分配的区域中。因为在步骤S30中接收的包未必携带新文件的第一片段,所以在步骤S49中执行与步骤S36相同的偏移确定。也就是说,接收的包包括偏移参数,偏移参数指示从文件的开头到接收的包的片段所属于的文件中的点的偏移。通过将接收的包的偏移参数与缓冲器中的文件的第一字节的位置相加,接收的包的文件片段在缓冲器中的合适的位置能够被确定,并且文件片段能够在步骤S49中被存储在缓冲器中。

回到步骤S46,如果在步骤S46中确定新文件的范围将会与存储在散列表中的文件的分配的缓冲区域交叠,则后面跟随有这个步骤的“是”分支。如上所述,新文件的范围开始于Next Start Location并且延伸新文件的长度,并且散列表中的每个文件的分配的缓冲区域能够基于存储在散列表中的信息而被确定。在散列表中的至少一个文件的分配的缓冲区域被发现与新文件的范围交叠的情况下,执行步骤S50。在步骤S50中,被发现与新文件的范围交叠的散列表中的一个或多个文件被从散列表删除。这允许该处理移动到用于新文件的缓冲区域的分配的步骤S47,而没有与新文件的分配的区域交叠的散列表中的条目。其后,如上所述执行步骤S48和S49。

回到步骤S41,如果新文件被确定为不适合缓冲器中的剩余空间,则后面跟随有这个步骤的“否”分支。如上所述,当新文件的大小大于Next Start Location指针的字节位置和缓冲器的末尾之间剩余的缓冲区域时,发生这种情况。在这种情况下,在步骤S42中执行“腾空间”操作。

作为在步骤S41中确定新文件将不适合缓冲器中的剩余空间的结果,腾空间操作开始于步骤S42。因此,新文件的范围将会开始于缓冲器的开头或开始于朝着缓冲器的开头的初始写缓冲位置,并且将会延伸新文件的长度。从这个开始点,新文件的范围将会在连续块中延伸新文件的长度。

如上所述,在一些实施例中,将会在初始写缓冲位置写新文件,所述初始写缓冲位置未必刚好位于缓冲器的开头(字节0),但仍然能够适应新文件的长度。如前所述,“缓冲器的头”被用于表示在缓冲器的开头附近的位置,所述位置可以是字节0或靠近字节0的另一位置。也就是说,一些实施例中的新文件的范围将不开始于字节0,而是开始于某个其它初始写缓冲位置,并且将会延伸新文件的长度。在一个实施例中,新文件的范围将会开始于与应该被盖写以便存储新文件的以前存储的一个文件或一组文件的第一字节对应的字节编号。在另一实施例中,新文件的范围将会开始于通过将Next Start Location移动存储新文件所需的数量的另外的字节来确定的字节编号。

接下来,在步骤S43中,与新文件的范围交叠的散列表中的每个条目被识别。因为新文件在步骤S41中被发现不适合缓冲器的剩余空间,所以新文件的范围开始于初始写缓冲位置,所述初始写缓冲位置可位于缓冲器的头或位于缓冲器的头附近并且延伸新文件的长度,如上所述。

在步骤S43中,对于散列表中的每个条目,缓冲器中的文件的关联的连续区域被确定为开始于在文件的第一字节的位置的散列表字段中指示的字节编号,并且被确定为在长度上等于散列表条目的文件长度字段。然后,确定每个各散列表条目的关联的连续区域是否与新文件的范围交叠。换句话说,步骤S43识别在新文件被存储在缓冲器中的情况下将会被部分地或完全盖写的在散列表中列出的所有文件。

在步骤S44中,在步骤S43中识别的所有散列表条目被从散列表删除。为了准备写新文件而执行这项操作,由此部分地或完全盖写其条目被从散列表删除的文件。

在完成步骤S44时,该处理移至步骤S45,在步骤S45中,为开始于初始写位置的新文件分配缓冲器中的区域。作为步骤S45中的分配的一部分,在散列表中创建新条目。基于通过信令预先接收并且被包括在步骤S30中接收的包中的关于新文件的信息,文件的名称、文件的TOI和文件的长度被填写作为散列表中的新条目。初始写位置在新条目中被指示为文件的第一字节的位置。如上所述,在一些实施例中,初始写位置位于缓冲器的头处以优化缓冲容量。在其它实施例中,初始写位置位于另一缓冲位置,只要初始写位置和缓冲器的末尾之间的空间能够适应新文件的大小即可。最后,如果在步骤S30中接收的包不包含整个文件,则散列表中的新条目被标记为未完成。

在完成步骤S45时,Next Start Location指针的位置随后在步骤S48中被移动到分配的区域的末尾,并且在步骤S49中,在步骤S30中接收的包被存储在分配的区域中。如上所述,在步骤S49中通过将接收的包的偏移参数与缓冲器中的文件的第一字节的位置(如果在步骤S47中分配缓冲区域,则所述缓冲器中的文件的第一字节的位置是Next StartLocation指针的位置,或者如果在步骤S45中分配缓冲区域,则所述缓冲器中的文件的第一字节的位置是初始写位置)相加来提供包的“无序”接收。根据这种相加,接收的包的文件片段在缓冲器中的合适的位置能够被确定,并且文件片段能够在步骤S49中被存储在缓冲器中。

接下来,将提供根据以上参照图3和4描述的处理的缓冲器和散列表的操作的示例。图5A和5B显示缓冲器和对应散列表的初始状态。在这个示例中,缓冲器的所述预定字节大小是20000000字节。在一些实施例中,缓冲器是RAM中的连续存储器块。在图5A的初始化状态下,Next Start Location指针的位置是缓冲器的头。在下面的示例中,字节编号0至20000000指示缓冲器的连续存储器块内的相对位置,而非指示缓冲器所在的RAM内的绝对存储器地址或位置。

如上所述,初始化的缓冲器和散列表对应于具有有着相同TSI值的包的接收的LCT信道。在图5A和5B的本示例中,选择的服务包括定义三个LCT信道的ROUTE会话。在本示例中,服务的视频分量的文件在与TSI值443关联的LCT信道上被传输,并且将要被缓冲在图5A的初始化的缓冲器中。在一些实施例中,TSI值被包括在散列表标识符中。

图6A和6B显示基于通过接收并且处理关于命名为“ch4-2-v00392.mp4”的视频DASH媒体段文件的信令而获得的关于该文件的信息执行处理300的结果。在一个实施例中,所述信令是在与选择的服务关联的S-TSID中找到的根据A/331标准的扩展文件传送表(EFDT)。在图6A的示例性实施例中,携带这个文件的包已开始被存储在缓冲器中。

对于与文件ch4-2-v00392.mp4对应接收的第一个包,步骤S34的确定是“否”,因为散列表仍然处于图5B的初始化状态并且不存在具有与文件ch4-2-v00392.mp4相同的TOI编号的未完成条目。在新文件操作400中,在步骤S41中,文件被确定为适合缓冲器中的剩余空间,因为缓冲器处于图5A的初始化状态。图6B显示用于这个文件的新条目的创建,所述新条目指示文件的第一字节已被存储在字节0处,字节0是在接收该文件之前的Next StartLocation指针的位置,并且文件的长度是5000000个字节。

图6A显示这样的缓冲器的状态:缓冲器中的区域(由TOI=392指示)已被分配给新文件,并且Next Start Location的位置已被移动到分配的区域的末尾(即,移动到字节5000000)。分配的区域的阴影区域指示这样的状态:携带文件的一些包已被接收并且存储在缓冲器中,但文件还未完成。

最初,并且在与文件关联的全部字节已被获取之前,在信令中(例如,在EFDT.FDT-Instance.File@Content-Location中)接收的文件名字符串被保存在散列表中并且附加有“.new”,如图6B中所示。“.new”的存在是将散列表条目指示为未完成的方式,并且指示散列表中的条目代表其在缓冲器中的接收未完成的文件。另一标识符能够被附加,或者分开的参数能够被添加到散列表以指示文件的接收未完成。

因此,在携带该文件的全部随后的(即,不是首次接收的)包的处理中,在步骤S34中找到具有TOI匹配的散列表中的未完成条目,因为图6B的散列表现在包括用于这个文件的未完成条目。因此,携带该文件的随后的接收的包被根据步骤S36存储在图6A中示出的分配的区域中。

当该文件的最后一个字节已被接收到时,在散列表中删除文件名的“.new”部分,并且能够在记录的第一字节的位置处访问该文件。当文件名的“.new”部分被删除并且由此将该文件标记为完成时,执行检查以查看是否相同文件名的另一条目存在于散列表中。如果找到重复文件,则具有相同文件名的散列表中的较早条目被去除,如上所述。在一个实施例中,新版本的文件具有与以前的版本不同的TOI编号。

在图7A和7B的示例性实施例中,第一文件(ch4-2-v00392.mp4)已被完全接收,通过在文件名的末尾缺少“.new”以及字节0和5000000之间的分配的缓冲区域的完全阴影状态来指示这一点。例如通过解析EFDT,关于第二文件的信息已被发现。

如上所述,针对第二文件的第一个接收的包执行处理300。第二文件的长度被通知为7000个字节。对于第二文件的第一个接收的包,步骤S34中的答案是“否”,并且新文件操作400被执行。在步骤S41中,确定第二文件的全部7000个字节将会适合缓冲器而不超出缓冲器的末尾。在步骤S46中,确定新文件的范围将不与散列表中的任何文件交叠。因此,与第二文件对应的条目被添加到散列表。图7B显示在第二文件被完全接收之后的散列表的状态,并且因此,与第二文件对应的条目未被在文件名的末尾利用“.new”标记为未完成。第二文件的第一字节位于字节5000000,字节5000000是在接收第二文件之前的Next StartLocation指针的位置,如图6A中所示。在用于第二文件的缓冲空间的分配之后,Next StartLocation指针的位置被移动到用于第二文件的分配的缓冲空间的末尾,移动到字节5007000,如图7A中所示。

第二文件“ch4-2-v-init.mp4”是用于服务的视频基本流分量的初始化文件(即,初始化段)。在一些实施例中,为了促进访问可能在任何时间加入所述流的接收设备,这种初始化文件经常在包流中被重复。为了总是确保初始化文件的可用性,在一些实施例中,缓冲器的大小被设置为足够大以在任何给定的时间点存储初始化文件。例如,给定初始化文件的复现率和文件流的其它因素,缓冲器的大小能够被设置为一定大小,以使得当下一个初始化文件被接收并且存储在缓冲器中时,以前接收的初始化文件还未被盖写。在一些实施例中,接收器可被配置为基于输入广播文件的大小动态地改变缓冲器大小。在一些实施例中,初始化文件可被移动到存储器的另一部分,由此确保初始化文件总是可用并且将不被盖写。

接下来,在这个示例性实施例中,与第三文件关联的包在广播流中被发现并且处理。第三文件是命名为“ch4-2-v00393.mp4”的随后的视频媒体段。长度被通知为4000000个字节。对于与文件ch4-2-v00393.mp4对应接收的第一个包,步骤S34的确定是“否”,因为散列表处于图7B的状态并且不存在具有与文件ch4-2-v00393.mp4相同的TOI编号的未完成条目。在新文件操作400中,在步骤S41中,第三文件被确定为适合缓冲器中的剩余空间,因为缓冲器处于图7A中示出的状态,并且Next Start Location指针和缓冲器的末尾之间的空间大于第三文件的4000000字节长度。还在步骤S46中确定,新文件的范围将不与散列表中的任何文件交叠。图8B显示添加的用于第三文件的新条目,该新条目指示该文件的第一字节已被存储在字节5007000处,字节5007000是在接收第三文件之前的图7A中的Next StartLocation指针的位置。

图8A显示这样的缓冲器的状态:缓冲器中的区域(由TOI=393指示)已被分配给新文件,并且Next Start Location的位置已被移动到分配的区域的末尾(即,移动到字节9007000)。分配的区域的阴影区域指示这样的状态:携带文件的一些包已被接收并且存储在缓冲器中,但文件还未完成。

因此,在携带第三文件的全部随后的(即,不是首次接收的)包的处理中,在步骤S34中找到具有TOI匹配的散列表中的未完成条目,因为图8B的散列表现在包括用于这个文件的未完成条目。因此,携带第三文件的随后的接收的包被根据步骤S36存储在图8A中示出的分配的区域中。

接下来,在这个示例性实施例中,在与本实施例的缓冲器和散列表对应的LCT信道(TSI=443)中发现携带第二文件(ch4-2-v-init.mp4)的重复实例的包。这个新文件被识别为第二文件的重复文件,因为它的文件名与第二文件的文件名相同并且这两个文件的TSI/TOI值相同。如果新接收的文件是第二文件的更新版本,则文件的TOI编号将会是不同的,但文件名将会是相同的。

然而,在一个实施例中,针对新文件的第一个接收的包执行处理300。第二文件的长度被通知为7000个字节。对于第二文件的第一个接收的包,步骤S34中的答案是“否”,因为具有与新文件相同的TOI编号(即,2)的散列表条目未被标记为未完成,因此新文件操作400被执行。

如上所述,一些接收器实施例总是需要重复的初始化文件的可用性。在这种实施例中,初始化文件的每个新拷贝被接收并且缓冲,同时去除以前缓冲的重复文件,如下所述。在替代实施例中,初始化文件可被移动到缓冲器之外的存储器的另一部分,以确保该文件的可用性。在可能并不总是需要初始化文件的可用性的其它实施例中,重复的接收的文件不被存储,并且与具有相同TOI编号的散列表条目对应的以前缓冲的文件被保留。在其它实施例中,重复的接收的文件响应于确定接收的文件不是必要的而不被存储,并且将不被接收设备读取。

在步骤S41中,确定第二文件的全部7000个字节将会适合缓冲器而不超出缓冲器的末尾。在步骤S46中,确定新文件的范围不与已经在散列表中的任何文件交叠。因此,与新文件对应的条目被添加到散列表作为第四条目。图9B显示在新文件的一些包已被接收之后的散列表的状态,但并非所有字节已被接收,并且与新文件对应的条目被在文件名的末尾利用“.new”标记为未完成。新文件的第一字节位于字节9007000处,字节9007000是在接收第二文件之前的Next Start Location指针的位置,如图8A中所示。

在用于新文件的缓冲空间的分配之后,Next Start Location指针的位置被移动到分配的缓冲空间的末尾,移动到字节9014000,如图9A中所示。在重复的ch4-2-v-init.mp4文件的最后一个字节被接收时,散列表中的每个条目被检查以确定是否具有相同名称的文件已经存在于散列表中,并且识别出的散列表中的较早条目被去除,如上所述。

图10A显示重复的ch4-2-v-init.mp4文件被完全接收并且存储在缓冲器中的示例性实施例。当重复的ch4-2-v-init.mp4文件完成时,图9B中的散列表中的第二条目被识别为新接收的文件的重复文件。因此,该文件的第一实例被去除,如图10B中所示。此时,在示例性实施例中,如果接收设备需要参照文件ch4-2-v-init.mp4,则散列表将会指示该文件被存储为开始于缓冲器的字节9007000,并且接收设备将会参照该文件的最新接收的拷贝。

在图10A中,已存储ch4-2-v-init.mp4文件的第一拷贝的缓冲器的区域(即,字节5000000和字节5007000之间的区域)被示出为阴影(如前所述)以指示该文件的字节保留在缓冲器中。在字节未被擦除的同时,在散列表中就不存在对缓冲器的这个区域的参照。

接下来,在图11A和11B的示例性实施例中,第三媒体段文件(ch4-2-v00394.mp4)和另一初始化段(ch4-2-v-init.mp4)已被接收并且缓冲。如上所述,每次遇到新输入文件的第一个包时,在新文件操作400的步骤S41中确定完整文件是否将会适合开始于NextStart Position的缓冲器。如图11A中所示,这两个新文件适合缓冲器中的剩余空间,因此对于每个文件,在步骤S41的答案是“是”。这些文件的范围也不与存储在散列表中的任何其它文件交叠,因此在步骤S46的答案是“否”。此外,如上所述,接收重复的初始化段(或任何重复的文件)涉及在完成新的重复的文件的接收时从散列表去除以前接收的文件的条目。在本示例性实施例中,散列表不是有序的,因此条目能够被添加到散列表中的任何位置以及从散列表中的任何位置去除。

在图11A的示例性实施例中,缓冲器几乎变满。在这个示例性实施例中,第四媒体段文件的包被发现,并且EFDT指示该文件具有5500000个字节的长度。对于第四文件的第一个接收的包,步骤S34中的答案是“否”,因为不存在具有与新文件相同的的名称和TOI编号(即,395)或在一些实施例中仅具有与新文件相同的TOI编号的散列表条目中的条目,因此新文件操作400被执行。

然而,在本示例性实施例中,在步骤S41确定该文件将不适合缓冲器中的剩余空间。做出这项确定是因为与Next Start Location指针的位置(在本实施例中,Next StartLocation指针的位置位于15021000字节)相加的该文件的长度(该文件的长度是5500000个字节)超过缓冲器的大小(缓冲器的大小是20000000个字节)。如此,步骤S43的腾空间操作随后被执行以腾出空间。

开始于步骤S42的腾空间操作基于这样的认知:缓冲器中的较早的文件已过时无用并且能够被丢弃。在步骤S43和S44中,散列表中的每个条目被检查,并且如果对应文件的任何字节将会与将要被输入文件占用的空间交叠,则条目被删除,假设输入文件将会被存储在初始写位置,而非存储在Next Start Location。

在本示例性实施例中,前两个媒体段(TOI=392和393)被完全或部分地包含在缓冲器的前5500000个字节内。因此,散列表中的这两个条目在步骤S43中被识别,并且在步骤S44中被删除。然后,开始于初始写位置的缓冲区域被分配给新文件,新的散列表条目被创建用于新文件,并且接收设备现在能够开始存储新文件的包,ch4-2-v00395.mp4开始于所述初始写位置。

在图12A的示例性实施例中,新文件处于被接收和缓冲的处理中。图12A显示其散列表条目已被去除的一些文件或文件的一部分,以反映那些文件的字节存在于缓冲器中直至它们被接收的新文件的包盖写。图12B显示在步骤S43中识别的媒体段文件已被从其去除的散列表的对应示图,两个以前添加的文件保留(TOI=2和394),并且新文件ch4-2-v00395.mp4通过文件名的“.new”后缀而被指示为未完成。

为了继续该示例,图13A和13B的示例性实施例显示另一媒体段文件的到达,这个媒体段文件的长度是2000000个字节。新文件适合在字节5500000处的Next StartLocation指针和缓冲器的末尾之间的缓冲空间,因此在步骤S41的答案是“是”。接下来,确定新文件适合在字节5500000处的Next Start Location指针和存储在偏移9014000的文件的开头之间的缓冲空间,因此步骤S46中的答案是“否”。图13A显示缓冲器,并且图13B显示在新文件已被完全存储之后的散列表。

接下来,在图14A和14B的示例性实施例中,遇到长度是5000000字节的媒体段文件。尽管这个文件适合缓冲器(例如,Next Start Location的值加5000000未超过20000000),但步骤S46的确定中的答案是“否”,因为该文件的范围(Next Start Location加5000000)与分配给文件ch4-2-v00394.mp4的空间交叠。因此,在步骤S50中,文件ch4-2-v00394.mp4被从散列表删除。图14A显示当新文件ch4-2-v00397.mp4被部分地存储时的缓冲器。图14B显示与图14A对应的散列表的状态,在该状态下,文件ch4-2-v00394.mp4已被去除并且新文件ch4-2-v00397.mp4被标记为未完成。

在上述示例性实施例的总结中,与文件对应的接收的包的处理首先遍历与文件的LCT信道对应的散列表中的条目,并且搜索TOI/文件名匹配项。如果找到匹配项并且文件名被标记为未完成,则接收的包被存储在它在将会存储该文件的存储器的区域内的合适的位置处。包的位置由包中所包括的偏移确定,所述偏移指示包相对于文件的开头的位置。如果包完成存储在缓冲器中的文件,则“未完成”标签被从散列表中的该文件的条目去除,并且与相同文件对应的散列图中的任何以前的条目被删除。如果未找到TOI/文件名匹配项,则“开始新文件”操作被执行。

开始新文件操作的示例性实施例可被总结为首先确定文件是否将会适合缓冲器中的剩余空间。如果文件的范围(所述文件的范围是Next Start Location加文件长度)超过缓冲器的大小,则答案将会是“否”,在这种情况下,“腾空间”操作被执行。否则,答案是“是”。当确定新文件将会适合缓冲器中的剩余空间时,确定新文件的范围(所述新文件的范围是Next Start Location加文件长度)是否与在散列表中列出的任何文件交叠。如果新文件的范围与在散列表中列出的文件交叠,则这种文件被删除。然后,新条目在散列表中被创建,指示在Next Start Location处的新文件的分配的缓冲区域,Next Start Location被移动到分配的缓冲区域的末尾,并且包被相对于文件的第一字节位置存储在它在缓冲器中的对应位置。如果包含新文件的片段的包未完成新文件,则在散列表中创建的新条目被标记为未完成。当确定新文件将不适合缓冲器中的剩余空间时,腾空间操作被执行。

在示例性实施例中,“腾空间”操作针对散列表中的每个条目确定与条目对应的各文件是否与开始于初始写位置并且延伸新文件的长度的新文件的范围交叠。基于给定散列表条目的第一字节位置和文件长度,能够确定被该条目占用的缓冲区域。

在腾空间操作的示例性实施例中,被发现与新文件的范围交叠的散列表中的任何条目被从散列表去除,并且开始于初始写位置的缓冲区域被分配给新文件,包括为新文件创建散列表中的条目。如果还未接收到文件的全部字节,则散列表中的新条目被标记为未完成。

在开始新文件操作的示例性实施例中的缓冲空间的分配之后,Next StartLocation被移动到分配的缓冲空间的末尾,并且属于新文件的接收的包被根据它们的偏移放置在分配的缓冲空间中,如上所述。

处理输入包的上述示例性实施例能够在文件的包未被按顺序接收时合适地接收并且缓冲文件。例如,按照“轮播”对一些文件进行广播,在“轮播”中,传送文件的内容的包随着时间过去连续地重复。在这种实施例中,大文件可能全天在五分钟期间重复。当接收设备首次收听时,由接收设备接收的第一个包不太可能包括文件的第一个字节。然而,根据上述实施例,即使接收的第一个包不是文件的第一个包,接收设备仍然能够缓冲该文件。

这个功能被实现,因为按照ATSC A/331标准,每个传输包在每个LCT包中包括称为start_offset的字段。如以上在示例性实施例中所述,接收设备使用这个偏移字段确定任何包中的字节将要在缓冲器中相对于文件的第一字节在缓冲器中的位置被存储在哪个位置。因此,当接收到文件的包时,即使包被无序地接收,它们也被按照正确次序放置在分配给文件的缓冲区域内,从而分配的区域最终被所述包填充并且文件在缓冲器中被重构。

图15是显示能够被配置为执行接收设备和服务分配系统中的任何一个或组合的功能的计算机的硬件结构的示例的方框图。例如,在一个实施例中,计算机被配置为执行这里针对接收设备120描述的功能之一或组合。

如图15中所示,计算机包括经一个或多个总线1208彼此互连的CPU 1202、ROM(只读存储器)1204和RAM(随机存取存储器)1206。所述一个或多个总线1208还与输入输出接口1210连接。输入输出接口1210与由键盘、鼠标、麦克风、遥控器等形成的输入部分1212连接。输入输出接口1210还连接到下面的部件:输出部分1214,由音频接口、视频接口、显示器、扬声器等形成;记录部分1216,由硬盘、非易失性存储器或其它非暂态计算机可读存储介质形成;通信部分1218,由网络接口、调制解调器、USB接口、火线接口等形成;和驱动器1220,用于驱动可移除介质1222(诸如,磁盘、光盘、磁光盘、半导体存储器等)。

根据一个实施例,CPU 1202经输入输出接口1210和总线1208将存储在记录部分1216中的程序加载到RAM 1206中,然后执行被配置为提供这里针对接收设备120描述的功能之一或组合的功能的程序。

通过图2和15中示出的任何一个结构示例而例示的以上硬件描述构成或包括被编程或配置为执行以上例如参照图3和4描述的算法的专门对应结构。例如,图3和4中示出的算法中的任何一个或组合可由图2中示出的单个装置中所包括的电路完全执行。

很明显地,考虑到以上教导,许多变型和变化是可能的。因此应该理解,在所附权利要求的范围内,可按照除这里具体地描述的方式之外的方式实施本公开。

因此,前面的讨论仅公开和描述本公开的示例性实施例。本领域技术人员将会理解,在不脱离本公开的精神或基本特征的情况下,可按照其它特定形式实现本公开。因此,本公开应该是说明性的,而非限制本公开的范围以及其它权利要求。本公开(包括任何可容易地辨别的这里的教导的变型)部分地定义前面的权利要求术语的范围,从而没有发明主题被奉献给公众。

本公开的实施例包括显著有益的特征,诸如:

(1)被优化用于流传输多播传送媒体数据的接收的缓冲方案。

(2)考虑到Java编程语言的优点和限制而设计处理,具体地讲,避免与能够导致存储器泄漏的垃圾收集操作相关的低效率和不确定性。

(3)因为Java中的字节数组不能被打破成碎片,所以处理被优化以避免任何一个文件占用多个连续字节数组。

(a)处理被设计为采用仅在字节数组上工作的System.arrayCopy本地Android功能,以高效地移动存储器的块。

(b)通常,处理被优化用于Android上的Java。

(4)处理的优化包括:

(a)将文件存储在缓冲器的连续区域中以避免在文件未被存储在连续存储器中的情况下引起的复杂性和CPU开销。

(b)避免不必要的文件的复制。

(c)重复文件的高效处理。

(d)用于存储更新的文件的存储器的恢复的高效管理。

(5)处理支持无序包传送和轮播文件传送模式。

以上公开还包括以下列出的实施例。

(1)一种用于管理用于存储经包流接收的文件的具有预设字节大小的缓冲器的方法,所述方法包括:确定输入文件的文件标识符和长度;确定输入文件将不适合下一写位置和缓冲器的末尾之间的空间;响应于确定输入文件将不适合所述下一写位置和缓冲器的末尾之间的空间,在识别存储在缓冲器中的一个或多个文件的映射图中,删除与至少部分地存储在开始于初始写位置并且具有与输入文件的长度相等的大小的缓冲器的区域中的文件对应的每个条目,在映射图中添加条目,该条目包括与缓冲器中的所述初始写位置关联的输入文件的文件标识符和长度,分配开始于缓冲器中的所述初始写位置并且具有与输入文件的长度相等的大小的缓冲器中的连续区域并且随后将所述下一写位置移动到分配的连续区域的末尾,以及接收输入文件的包并且将接收的包存储在分配的连续区域中。

(2)如特征(1)所述的方法,其中所述包流是高级电视系统委员会(ATSC)3.0数字电视信号的一部分。

(3)如特征(1)或(2)所述的方法,其中所述输入文件在具有与存储在缓冲器中的其它文件共同的传输会话标识符(TSI)值的分层编码传输(LCT)信道中被接收,并且新的缓冲器和分开的映射图被初始化以存储具有不同的对应的TSI值的文件。

(4)如特征(1)至(3)中任一项所述的方法,其中所述映射图中的添加的条目包括输入文件的文件标识符和长度。

(5)如特征(1)至(4)中任一项所述的方法,还包括:将所述映射图中的添加的条目标记为未完成,直至接收的输入文件的包填满分配给该文件的缓冲器中的连续区域。

(6)如特征(1)至(5)中任一项所述的方法,还包括:对于包流的每个输入包,确定对应文件的文件标识符;确定是否存在具有对应文件的文件标识符并且被标记为未完成的映射图中的条目;响应于确定存在具有对应文件的文件标识符的映射图中的未完成条目,将输入包存储在与映射图中的所述未完成条目关联的分配的连续区域中,确定输入包是否完成与映射图中的所述未完成条目关联的分配的连续区域中的文件,响应于确定输入包完成与映射图中的所述未完成条目关联的分配的连续区域中的文件,去除与映射图中的所述条目关联的未完成标签,去除与映射图中的所述条目具有相同文件名的映射图中的所有其它条目,以及响应于确定不存在具有对应文件的文件标识符的映射图中的未完成条目,将输入包处理为新的输入文件。

(7)如特征(1)至(6)中任一项所述的方法,其中所述文件标识符包括传输对象标识符(TOI)和文件名。

(8)一种用于在具有预设字节大小的缓冲器中存储经包流接收的文件的缓冲管理设备,所述缓冲管理设备包括:电路,被配置为:确定输入文件的文件标识符和长度;确定输入文件将不适合下一写位置和缓冲器的末尾之间的空间;响应于确定输入文件将不适合所述下一写位置和缓冲器的末尾之间的空间,在识别存储在缓冲器中的一个或多个文件的映射图中,删除与至少部分地存储在开始于初始写位置并且具有与输入文件的长度相等的大小的缓冲器的区域中的文件对应的每个条目,在映射图中添加条目,该条目包括与缓冲器中的所述初始写位置关联的输入文件的文件标识符和长度,分配开始于缓冲器中的所述初始写位置并且具有与输入文件的长度相等的大小的缓冲器中的连续区域并且随后将所述下一写位置移动到分配的连续区域的末尾,以及接收输入文件的包并且将接收的包存储在分配的连续区域中。

(9)如特征(8)所述的缓冲管理设备,其中所述包流是高级电视系统委员会(ATSC)3.0数字电视信号的一部分。

(10)如特征(8)或(9)所述的缓冲管理设备,其中

所述输入文件在具有与存储在缓冲器中的其它文件共同的传输会话标识符(TSI)值的分层编码传输(LCT)信道中被接收,并且新的缓冲器和分开的映射图被初始化以存储具有不同的对应的TSI值的文件。

(11)如特征(8)至(10)中任一项所述的缓冲管理设备,其中所述映射图中的添加的条目包括输入文件的文件标识符和长度。

(12)如特征(8)至(11)中任一项所述的缓冲管理设备,其中所述电路还被配置为将所述映射图中的添加的条目标记为未完成,直至接收的输入文件的包填满分配给输入文件的缓冲器中的连续区域。

(13)如特征(8)至(12)中任一项所述的缓冲管理设备,其中所述电路还被配置为,对于包流的每个输入包,确定对应文件的文件标识符;确定是否存在具有对应文件的文件标识符并且被标记为未完成的映射图中的条目;响应于确定存在具有对应文件的文件标识符的映射图中的未完成条目,将输入包存储在与映射图中的所述未完成条目关联的分配的连续区域中,确定输入包是否完成与映射图中的所述未完成条目关联的分配的连续区域中的文件,响应于确定输入包完成与映射图中的所述未完成条目关联的分配的连续区域中的文件,去除与映射图中的所述条目关联的未完成标签,去除与映射图中的所述条目具有相同文件名的映射图中的所有其它条目;以及响应于确定不存在具有对应文件的文件标识符的映射图中的未完成条目,将输入包处理为新的输入文件。

(14)如特征(8)至(13)中任一项所述的缓冲管理设备,其中所述文件标识符包括传输对象标识符(TOI)和文件名。

(15)一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机可读指令,当所述计算机可读指令由处理器执行时,所述计算机可读指令使处理器执行一种用于管理用于存储经包流接收的文件的具有预设字节大小的缓冲器的方法,所述方法包括:确定输入文件的文件标识符和长度;确定输入文件将不适合下一写位置和缓冲器的末尾之间的空间;响应于确定输入文件将不适合所述下一写位置和缓冲器的末尾之间的空间,在识别存储在缓冲器中的一个或多个文件的映射图中,删除与至少部分地存储在开始于初始写位置并且具有与输入文件的长度相等的大小的缓冲器的区域中的文件对应的每个条目,在映射图中添加条目,该条目包括与缓冲器中的所述初始写位置关联的输入文件的文件标识符和长度,分配开始于缓冲器中的所述初始写位置并且具有与输入文件的长度相等的大小的缓冲器中的连续区域并且随后将所述下一写位置移动到分配的连续区域的末尾,以及接收输入文件的包并且将接收的包存储在分配的连续区域中。

(16)如特征(15)所述的非暂态计算机可读介质,其中所述包流是高级电视系统委员会(ATSC)3.0数字电视信号的一部分。

(17)如特征(15)或(16)所述的非暂态计算机可读介质,其中所述输入文件在具有与存储在缓冲器中的其它文件共同的传输会话标识符(TSI)值的分层编码传输(LCT)信道中被接收,并且新的缓冲器和分开的映射图被初始化用于具有不同的对应的TSI值的文件。

(18)如特征(15)至(17)中任一项所述的非暂态计算机可读介质,其中所述映射图中的添加的条目包括输入文件的文件标识符和长度,并且所述文件标识符包括传输对象标识符(TOI)和文件名。

(19)如特征(15)至(18)中任一项所述的非暂态计算机可读介质,还包括将所述映射图中的添加的条目标记为未完成,直至接收的输入文件的包填满分配给输入文件的缓冲器中的连续区域。

(20)如权利要求19所述的非暂态计算机可读介质,还包括:对于包流的每个输入包,确定对应文件的文件标识符;确定是否存在具有对应文件的文件标识符并且被标记为未完成的映射图中的条目;响应于确定存在具有对应文件的文件标识符的映射图中的未完成条目,将输入包存储在与映射图中的所述未完成条目关联的分配的连续区域中,确定输入包是否完成与映射图中的所述未完成条目关联的分配的连续区域中的文件,响应于确定输入包完成与映射图中的所述未完成条目关联的分配的连续区域中的文件,去除与映射图中的所述条目关联的未完成标签,去除与映射图中的所述条目具有相同文件名的映射图中的所有其它条目,以及响应于确定不存在具有对应文件的文件标识符的映射图中的未完成条目,将输入包处理为新的输入文件。

相关技术
  • 用于存储接收的包流的文件的缓冲管理
  • 用于管理接收数字电视的设备中的数字文件的数字文件管理器和方法
技术分类

06120113002563