CN1184757C - 提供和取得数据段的方法 - Google Patents

提供和取得数据段的方法 Download PDF

Info

Publication number
CN1184757C
CN1184757C CNB988125927A CN98812592A CN1184757C CN 1184757 C CN1184757 C CN 1184757C CN B988125927 A CNB988125927 A CN B988125927A CN 98812592 A CN98812592 A CN 98812592A CN 1184757 C CN1184757 C CN 1184757C
Authority
CN
China
Prior art keywords
channel
data segment
channels
length
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB988125927A
Other languages
English (en)
Other versions
CN1283342A (zh
Inventor
D·M·奥康诺尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1283342A publication Critical patent/CN1283342A/zh
Application granted granted Critical
Publication of CN1184757C publication Critical patent/CN1184757C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Communication Control (AREA)

Abstract

提供一种有最小访问等待的数据段。该数据段被分成三个或多个部分(1,2,3,4,5,6,7)并通过两个或多个频道(频道1,频道2,频道3)提供。每个频道载有数据段的有关部分,被每个频道载有的数据段的部分少于整个数据段。每个频道在时间上重复。在一个实施例中,两个或多个频道是物理频道。在另一个实施例中,两个或多个频道是逻辑频道,它们在一个物理频道中时分复用的。

Description

提供和取得数据段的方法
本发明涉及数据存储和传输领域。特别地,本发明涉及用最快存取反应时间提供数据段的方法。数据段在这里定义为有限长度的连续数据流。数据段包括但不限于音频和视频数据的任意组合。
点播系统使用在不同的设备中。例如,点播电影在有线电视和私人电视网上播映,如在饭店中出现的那样。有线电视公司和饭店能根据用户的需要给用户提供录像。点播系统使用后备频道提供信号给有线供应商和饭店的视频服务器,开始提供点播电影。可以使用遥控存取后备信道,来传输用户的请求信息至电视机或顶置盒,它们反过来提供信号给视频服务器。或者是,用户可通过电话呼叫(后备信道)来预定电影。然后该电影播放给用户观看。
近似点播(near-on demand)指这样一种系统,它可能不能按照用户的请求立即开始。而是,近似点播系统以用户可接受的足够短的间隔重复。用户不再需要使用后备信道表示他希望存取数据段。而是,为了从头观看数据段他仅需等待数据段重起。
使用近似点播系统提供数据段的一种方法是在多个频道上提供整个数据段,每个频道以固定的时间间隔偏差。例如,如果数据段是2个小时长,四个频道(用0,30,60,90分钟的偏差)将合理地使得每个人每三十分钟从头存取数据段。用户能调谐到离从头重起数据段最近的频道。然而,该方法占用许多频道来减少至合理的存取反应时间,即最大等待周期直至数据段重起。在上述实例中,使用四个频道,个人可能为数据段重起需要等待至多30分钟。
公开了提供数据段的方法。数据段分成3个或更多的部分并通过二个或更多频道提供。每个频道负载数据段的部分,由每个频道负载的数据段的部分小于整个数据段。每个频道随时间重复。
在一个实施例中,二个或多个频道为物理频道。在另一个实施例中,二个或多个频道为逻辑频道,它在单个物理频道上为时分复用的。
同样公开了如上所讨论的存取数据段的方法。另外,描述了用二个或多个频道存储数据段的设备。
图1是一方块图,描述用来存取在二个或多个频道上提供的数据段的硬件。
图2是一方块图,描述用来存取在二个或多个频道上提供的数据段的硬件的另一个实施例。
图3A表示一个实施例,这里数据段被分成等长的部分。
图3B-3H图形化表示在如图3A所示的对应t=0至t=7的不同时间间隔中,硬件给实施例所做的事情。
图4A-4H图形化表示一个时间间隔以后为存取图3A-3H的同一数据段,硬件所做的事情。
图5A-5H图形化表示二个时间间隔以后为存取图3A-3H的同一数据段,硬件所做的事情。
图6A-6H图形化表示三个时间间隔以后为存取图3A-3H的同一数据段,硬件所做的事情。
图7表示另一个实施例,这里二个或多个频道不是物理频道,而是在单个物理频道上时分复用的逻辑频道。
图8表示一个实施例,它使用现有技术应用时分复用(TDM)的数据段来改进从诸如硬盘或CD-ROM的存储媒体取得数据的存取时间。
描述了以最快的存取反应时间提供数据段的方法。本发明使用能记录一个或多个频道同时从存储器中直接观看或回放另一个频道的硬件。这种硬件的一个实例是标题为“时间迁移来同步地记录或播放数据流的方法”专利申请,序列号为××××,它同时与本申请提交并转让给同一公司的受让人。然而,能够构造其它的硬件来提供在不同频道上的记录和回放能力。
本发明提供以最快存取反应时间存取数据段的方法。它是用在重复率高的第一个频道上提供数据段的第一部分的方法来实行的。因此,用户不要等待长时间来开始存取数据流的第一部分。
当用户在存取数据流的第一部分时,该用户也能记录正在其它频道提供的数据流的后来部分。在这样的方式下,用户要么能够从一个频道直接存取数据段的一个部分,要么能够存取已在存储单元缓存的数据段的一部分。
频道被安排以这样一种方式提供数据,即有可能从头至尾以提供数据段的第一部分同样的频率速度提供整个数据段。
实例有助于描述频道能如何建立来利用本发明。图3A示出了一个实例,在该实例中,数据段被分成等长的部分。在这样特殊的情况下,数据段被分成7个部分,顺序编号为1至7。这些部分在不同频道之间分割。在本例中,这些部分在3个单独频道之间分割。
在频道1,部分1不断重复。在每个时间间隔T,T在这种情况下为数据段长度的1/7,部分1重复。
在频道2,部分2和3重复。在每2个时间间隔T之后,部分2重复。部分3跟随部分2。
在频道3,部分4,5和6重复。在每四个时间间隔T之后,部分4重复。剩下的部分顺序彼此跟随。
在一个实施例中,每个部分前的索引信息表示后面跟着数据段的哪一部分。在图3A的实例中,索引信息确定部分1至部分7中的哪一部分在某一特殊频道正在被提供。有很多方法提供这种类型的索引信息。例如,该索引信息可以嵌在数据段本身,如数据段的时间索引。而且,接收器根据在频道上提供哪一部分从而获知时间日程安排的方式,可以决定正在提供数据段的哪一部分。
图3B-3H图形化表示在如图3A所示的对应t=0至t=7的不同时间间隔中,硬件给实施例所做的事情。图3B-3H示出了一个输出设备和一个存储设备。在本例中,数据段的部分提供给输出设备。它们由接收器(rcvr)直接提供,或者它们从存储设备中被供应。数据段的部分在不同的时间间隔保存至存储设备中。在本例中,输出设备为一监视器(mon),存储设备为一硬盘(hdd)。
图3B图形化显示在第一个时间间隔t=[0..1)中硬件所做的事情。部分1发送至监视器同时部分4保存至存储设备。注意:上面的时间表示法使用左方括号表示时间包括结束点;右圆括号表示时间不包括结束点。然而,这只作为一个实例;包含或不包含在特定时间间隔T中的某一部分的确切截止时间可由实现方法而改变。
图3C图形化显示在第二个时间间隔t=[1..2)中硬件所做的事情。部分2显示在监视器上,同时部分5保存在存储设备上。
图3D图形化显示在第三个时间间隔t=[2..3)中硬件所做的事情。部分3显示在监视器上,同时部分6保存在存储设备上。
图3E图形化显示在第四个时间间隔t=[3..4)中硬件所做的事情。象前面叙述的一样,部分4如图1b所示已经保存在存储设备上。在时间t=[3..4)中,部分4从存储设备中取出并显示在监视器上,同时部分7保存在存储设备中。
图3F图形化显示在第五个时间间隔t=[4..5)中硬件所做的事情。部分5从存储设备中取出并显示在监视器上。
图3G图形化显示在第六个时间间隔t=[5..6)中硬件所做的事情。部分6从存储设备中取出并显示在监视器上。
图3H图形化显示在第七个时间间隔t=[6..7)中硬件所做的事情。部分7从存储设备中出并显示在监视器上。
因此,如果在时刻t=0(或在t=0之前的一个时间间隔)用户存取3个频道,该用户能用记录数据段中的部分同时显示其它部分的方法观看整个数据段。数据流管理员从多个频道至和从存储单元,和从存储单元至输出设备处理数据段中的部分的调度。
图4A-4H图形化表示一个时间间隔以后,如在时刻t=1开始,为存取图3A-3H的同一数据段,硬件所做的事情。尽管在时刻t=1正在频道上提供的数据与图3A中相同,在不同频道上缓存数据段的部分的序列与图3A有所变化。这是因为数据段的部分彼此有不同的时序关系。例如,对时间t=[1..2),在图3C的序列中,部分5彼此在硬盘中,同时部分2备显示。在图4B,部分2被记录同时部分1被显示。正在显示的部分由正在存取的数据段的开始时间来指令。
在前面的描述中,在某时刻只有一个频道被记录。另一个实施例容许在同一时刻多个频道被记录。例如,在图3B,部分1和4在t=[0..1)能被保存至存储设备。如图3C中所示,部分2和5在t=[1..2)能被保存至存储设备,如图3D中所示,部分3和6在t=[2..3)能被保存至存储设备。在这种方式下,与仅仅需要从单个频道保存一个部分的其它时间区间结合,存储设备能够保存整个数据段。在一个实施例中,一旦所有或部分的数据段保存在存储设备上,近似点播系统100能够在将来存取时立即存取数据段。
图5A-5H图形化表示2个时间间隔以后,如在时刻t=2开始,为存取图3A-3H的同一数据段,硬件所做的事情。同样地,图6A-6H显示在时刻t=3开始硬件如何处理同一数据段。在时刻t=4开始的数据段与图3A-3H相似,以此类推。因此,数据段可在每个间隔时间T从三个频道存取。
使用以上实例,对于一个二小时的电影,时间间隔T等于2个小时,该2个小时被分成7个时间间隔用来观看电影。这大约等于17分零八秒,考虑存取反应时间,它比现有技术方法提供的存取时间或者每40分钟使用三个频道提供整个数据段要好2.33倍。
表1,2和3显示使用本发明相对于现有技术使用同样数目频道提供整个数据段在存取反应时间上的大概收获。
表1
频道数 最佳频道长度和阶段信息(长度。阶段),rec=1,tune=2 总部分数  获得 2小时最长等待(HMS)
 1  1.0  1  1.00  2:00:00
 2  1.0  2.0  3  1.50  0:40:00
 3  1.0  2.0  2.1  5  1.67  0:24:00
 4  1.0  2.0  2.1  4.1  9  2.25  0:13:20
 5  1.0  2.0  2.1  4.1  4.3  13  2.60  0:09:13
 6  1.0  2.0  2.1  4.1  4.3  4.2  17  2.83  0:07:03
 7  1.0  2.0  2.1  4.1  4.3  4.2  4.0  21  3.00  0:05:42
 8  1.0  2.0  2.1  4.1  4.3  4.2  4.0  8.3  29  3.63  0:04:08
 9  1.0  2.0  2.1  4.1  4.3  4.2  4.0  8.3  8.7  37  4.11  0:03:14
 10  1.0  2.0  2.1  4.1  4.3  4.2  4.0  8.3  8.7  8.7  45  4.50  0:02:40
表2
频道数 最佳频道长度和阶段信息(长度。阶段),rec=2,tune=2 总部分数  获得  2小时最长等待(HMS)
 1  1.0  1  1.00  2:00:00
 2  1.0  2.0  3  1.50  0:40:00
 3  1.0  2.0  4.1  7  2.33  0:17:08
 4  1.0  2.0  4.1  4.3  11  2.75  0:10:54
 5  1.0  2.0  4.1  4.3  6.2  17  3.40  0:07:03
 6  1.0  2.0  4.1  4.3  6.2  6.4 23  3.83  0:05:13
 7  1.0  2.0  4.1  4.3  6.2  6.4  6.0  29  4.14  0:04:08
 8  1.0  2.0  4.1  4.3  6.2  6.4  6.0  8.7  37  4.63  0:03:14
 9  1.0  2.0  4.1  4.3  6.2  6.4  6.0  8.7  8.7  45  5.00  0:02:40
 10  1.0  4.1  4.3  6.2  6.4  6.0  8.7  8.7  8.7  53  5.30  0:02:15
表3
频道数 最佳频道长度和阶段信息(长度。阶段),rec=频道数,tune=频道数 总部分数 获得  2小时最长等待(HMS)
 1  1.0  1  1.00  2:00:00
 2  1.0  2.0  3  1.50  0:40:00
 3  1.0  2.0  4.0  7  2.33  0:17:08
 4  1.0  2.0  4.0  8.0  15  3.75  0:08:00
 5  1.0  2.0  4.0  8.0  16.0  31  6.20  0:03:52
 6  1.0  2.0  4.0  8.0  16.0  32.0  63  10.5  0.:01:54
 7  1.0  2.0  4.0  8.0  16.0  32.0  64.0  127  18.1  0:00:56
 8  1.0  2.0  4.0  8.0  16.0  32.0  64.0  128.0  255  31.8  0.:00:28
 9  1.0  2.0  4.0  8.0  16.0  32.0  64.0  128.0  256.0  511  56.7  0:00:14
 10  1.0  2.0  4.0  8.0  16.0  32.0  64.0  128.0  256.0 512.0  1023  102  0:00:07
根据使用的硬件,二个或多个频道能在同一时间接收或调谐到(表1-3中的“tune”),并且一个或更多的频道能在同一时间被记录(表1-3中的“rec”)。当一个实施例可以实际调谐到不同的频道,另一个实施例可以从包含二个或多个频道的数据流中解复用频道。在这样另外一个实施例中,“已调谐”数指能同时解复用的频道数目。同时提供多个频道给系统的方法也是可能的。表1显示了能在某一时间调谐二个频道(tune=2)的系统的信息,但只能在某一时间记录一个频道(rec=1)。表2显示了能在某一时间调谐二个频道(tune=2)但能记录二个频道的系统的信息。表3显示了能调谐和记录所有频道的系统的信息。
表1,2和3显示能在某一时间记录不止一个频道是有优势的。然而,用在某一时间接收二个频道并能记录一个频道的最小配置,相对于在每个频道上提供整个数据段的现有技术而言,仍然有改进。
表1显示用1到10个频道为在某一时间能调谐二个频道但只能记录一个频道的系统设立的最佳频道长度。对于一个频道的实现方法,相对现有技术没有改进。然而,使用二个频道,相对现有技术考虑存取反应时间有1.5倍的改进。使用二个频道,第一频道提供重复的第一部分(总共1部分)。频道2提供重复的第二和第三部分(总共2部分)。于是,总共有三部分,存取时间为40分钟。
在表1中,使用3个频道,相对现有技术考虑存取反应时间有1.67倍的时间改进。频道1提供重复的第一部分(总共1部分);频道2提供重复的第二和第三部分(总共2部分);频道3提供重复的第四和第五部分(总共2部分)。
在表1中,使用4个频道,相对现有技术考虑存取时间有2.25倍的改进。频道1提供重复的第一部分(总共1部分);频道2提供重复的第二和第三部分(总共2部分);频道3提供重复的第四和第五部分(总共2部分);频道4提供重复的第六,第七,第八和第九部分(总共4部分);
在表1中,因为在某一时间能记录的频道数目有限制,在给定频道上重复的部分的数目是有限制的。例如,表3对于在某一时间能记录的频道数目没有限制。于是表3每增加一个频道,每个频道部分的数目能加倍。
而且,部分的次序必须以这样一种方法重新排列,即不管在哪一个时间间隔存取数据段,整个数据段能够整体存取。对于能被记录的频道数目有限制的系统,如表1中的那样,部分的排序是重要的。在某一频道上的数据段的部分可需要用一特殊的阶段来建立。阶段X表示部分是顺序排列的,但由X回转。例如,始于4并有阶段0的4部分长的数据段为序列部分(4,5,6,7)。阶段1表示频道的部分顺序排序但回转1(如5,6,7,4)。阶段2表示频道的部分顺序排序但回转2(如6,7,4,5)。阶段3表示频道的部分顺序排序但回转3(如7,4,5,6)。决定数据段的部分的合适顺序和它们的阶段的方法与已确定的频道有关。如果建立不正确的次序,整个数据段不能从全部可能的起始点以期望的存取反应时间存取。
表1,2和3显示频道的长度(在频道上的部分的总数)和阶段。例如,图3A,4A,5A和6A使用一个频道,它用包含(1.0,2.0,4.1)的长度/阶段比建立的三个频道建立起来。这在时间t=1开始的图4A中是容易看到的。
附录中附有计算最佳长度/阶段比的程序,该长度/阶段比为能被调谐或记录的频道数目限制的频道设立的。
图1是说明用来存取在二个或多个频道上提供的数据段的硬件的方块图。接收器硬件在二个或多个频道上接收到数据段的部分。在一个实施例中,接收器硬件可以是一个调制解调器,一个调谐器或一个网络接口。
二个或多个频道从接收器硬件被分开。在该步骤它们也可选择被压缩。数据流管理员安排数据段的部分至存储器单元的线路或缓存数据段的部分至诸如音频/视频输出的输出设备。如果在先前步骤数据已压缩,执行解压缩。
图2是说明用来存取在二个或多个频道上提供的数据段的硬件的另一个实施例的方块图。在这种情况下,接收器硬件提供数据段的部分给调度器和数据流管理器。原始数据按需要缓存至硬盘。然后调度器/数据流管理器提供数据段的部分给子频道分离器,从子频道分离器数据段的各个部分被缓存并在音频/视频输出上被选择提供。
本发明有许多潜在的应用。例如,它能用于近似点播电影,它是通过有线提供,或作为直接广播卫星(DBS)或先进TV(ATV)广播的。它能用于通过因特网,有线,DBS或ATV提供音乐节目。它能通过因特网提供新闻图片,文本或声音。
对于本发明能进行加密。例如,除了频道1的所有频道可以加密。这样,举例来说,广播服务的非订户将能观看电影的第一部分,由于它没有被加密。然而,非订户将不能观看已加密部分。这提供了有价值的“免费预览”的功能。
在一个实施例中,可编程的计算机用来执行各种各样的操作,如压缩,解压缩,将数据段的时间路线安排至硬盘或输出设备。可以编写应用软件来利用本发明的技术。在其它情况下,计算机的操作系统可以使用本发明的技术来减少存取反应时间。
图7显示另一个实施例,这里二个或多个频道非物理频道。反之,二个或多个频道为在单个物理频道上为时分复用的逻辑频道。例如,高压缩的时分复用(TDM)信号能用来以最少存取反应时间提供数据段给用户。
图8示出了一个实施例,它利用TDM数据段使用本发明的技术来改进从诸如硬盘或CD-ROM的存储介质取得数据的存取反应时间。因为该介质的环路特性,定位在硬盘或CD-ROM的某一特殊轨道的头,能以最少存取反应时间存取保存在存储介质上的数据段。折衷方案是保存更多时间到存储介质上容许更快的存取时间,并减少获取信息的速度至M/N,这里M是存储设备的字节速率,N是已用频道的数目。然而,有些实现方法得益于可实现的增长的存取时间。实现本发明的技术来向存储介质和从存储介质保存和获取TDM数据段的方法,可以通过应用软件或操作系统来完成。
为了说明本发明的技术如何应用,正常的存取硬盘有寻找时间加上一半旋转周期的平均存取时间。在最糟糕情况下,正常的存取硬盘为寻找时间加上全部旋转周期。使用时分复用和保存在硬盘上的四个频道,存取时间的平均时间为寻找时间加上1/30的旋转周期。最糟糕情况是寻找时间加上1/15的旋转周期。(表3示出了数据段分成15部分的四个频道的情况。如果数据段平均分布在整个长度的环路轨道上,数据段每1/15转重起。然而,数据段能重复多次容许降低存取反应时间。)硬盘存取可以提高几个毫秒,如7200RPM硬盘大约提高8.3毫秒的转动周期。同样地,对于8倍速CD-ROM,转动延迟在最糟情况下是50ms,它能使用本发明技术显著降低。
因此,这里公开了用最少存取反应时间提供数据段的方法。这里描述的特定安排和方法仅仅作为对本发明的实质解释之用。例如,同样的方法可用来保存和取得除了视频部分外的其它类型的数据段。不偏离所述发明的范畴可作出形式上和细节上的各种修改。尽管依照特殊的实施例示出了本发明,不应认为限制如此。反之,本发明仅由附加的权利要求书限制。
附录:
/*给定频道数,该频道数能同时调谐或者解码,频道数能同时

*记录,本程序将决定这些频道中的数据段的最佳可能分割和

*每个频道的阶段关系,来优化近似点播存取。

*程序的输入是从命令行读入的,包含可选的调试开关“-d”,

*紧跟传送的频道数目,能同时记录的频道数,能调谐的,解复用

*或同时解码的频道数。

*输出将是一个对列表,每个使用的频道有一个,其形式是:

*<channel_length_in_subsegments>:<channel_phase_in_subsegments>,

*它们在一起表示频道内部分的分布。阶段总是相对于最后频道的

*起点,它不短于任何其它的频道并且包括原来数据段的后面

*的子段。

*使用的子段的总数也作为tlen输出。它仅为每个频道中的子段

*的个数总和。

*注意到程序为方便起见,该程序作为分析之用的频道的最大数目

*限于16。如果有需要,任何对有C编程技术的任何人将很容易

*增加或清除这种限制。

*该程序由英特尔公司1997年版权所有。

*该程序由C语言编写。它成功地在运行AIX的IBM RISC SYSTEM/6000

*3BT计算机上使用提供的C编译器编译和执行。

*程序编写:Dennis M.O’Connor
				
				<dp n="d10"/>
#include<stdio.h>

#include<signal.h>

int channels;

int chan_phase[16];

int chan_length[]=(1,2,4,8,16,32,64,128,

        16,16,16,16,16,16,16,16);

int cum_lcm[16];

int poss_phas[16];

int chan_first_ival[16];

int slot_used[2048];  /*计算每个时间片使用的次数*/

int direct_view[2048];/*注意何时直接观看一个频道*/

void zero_stat_arrays()

{

    inti;

    for(i=0;i<256;i++){

    slot_used[i]=0;

    direct_view[i]=0;

    }

  }

  void init_chan_phases()

  {

    inti;

    chan_first_ival[0]=1;

    for(i=0;i<channels;i++){

    chan_phase[i]=0;

    chan_first_ival[i+1]=

      chan_first_ival[i]+chan_length[i];

    }
  }
				
				<dp n="d11"/>
int increment_chan_phases()

{

  int cur_phase;/*频道0总是仅有一个阶段*/

    cur_phase=1;

    while((++chan_phase[cur_phase])>=poss_phas[cur_phase]

      &amp;&amp;(cur_phase<channels)){

    chan_phase[cur_phase]=0;

    cur_phase++;

   }

    return(cur_phase<channels);

 }

 int current_ival(int channel,int time)

{

  return chan_first_ival[channel]+

  ((chan_phase[channel]+time)%chan_length[channel]);

}

int segment_channel(int seg)

{

  int chan;

  for(chan=0;chan<channels;chan++){

  if(seg>=chan_first_ival[chan]&amp;&amp;

     seg<(chan_first_ival[chan]+chan_length[chan])){

     retum chan;

  }

 }

  printf(″Error,channel not found for segment %i\n″,seg);

  return 0;

}

int is_being_sent(int seg,int time)
				
				<dp n="d12"/>
{

  int chan;

  for(chan=0;chan<channels;chan++){

  if(seg>=chan_first_ival[chan]&amp;&amp;

     seg<(chan_first_ival[chan]+chan_length[chan])){

     return(seg==current_ival(chan,time));

  }

  }

  return 0;

}

int gcd(int a,int b)

{

  if(0==a)return b;

  if(0==b)return a;

  if(a>b){

  a=a%b;

  }

  else{

  b=b%a;

  }

  retum gcd(a,b);

}

int curbest_tlen;

int curbest_lens[17];

int curbest_phas[17];

/*SIGINT是我们所要寻找的*/

void int_handler()

{

  inti;

  for(i=0;i<channels;i++){

   printf(″%2i″,chan_length[i]);
				
				<dp n="d13"/>
  }

  printf(″curbest_tlen=%i\n″,curbest_tlen);

  signal(SIGINT,int_handler);

  return;

}

/*SIGQUIT是我们所要寻找的*/

void quit_handler()

{

  inti;

  for(i=0;i<chanels;i++){

   printf(″%i:%i″,curbest_ens[i],curbest_phas[i]);

  }

  printf(″best len=%i\n″,curbest_tlen);

  abort(0);

}

  int main(int argc,char**argv)

  {

    register int ix;

    int stime;

    int seg;

    int worst_tunes=0;

    int worst_records=0;

    int best_worst_tunes;
    int best_worst_records;

    int cur_phase_config;

    int best_phase_config;

    int flag;

    int debug=0;

    int lcm;

    int next_best;

   int next_best_count;
				
				<dp n="d14"/>
int css;

int rec_limit;
int tune_limit;

int sum;

int vflag;

int carry;

/*生成规划*/

/*从命令行得到频道数和记录/调谐限制*/

if(argc<4){

  printf(″error:missing parameters\n″

      ″format:%s[-d]<chans><record><tune>[<init_chans>]\n″,

    argv[0]);

  printf(″using default config:4 channels,2 rec/2 tune\n″);

  channels=4;

  rec_limit=2;

  tune_limit=2;

  for(ix=0;ix<channels;ix++){

   chan_length[ix]=1;

  }

  }

  else{

  if(0==strcmp(argv[1],″-d″)){

     debug=1;

  }

  channels=atoi(argv[1+debug]);

  rec_limit=atoi(argv[2+debug]);

  if(argc>3+debug){

     tune_limit=atoi(argv[3+debug]);

  }
  else{

      tune_limit=rec_limit;
				
				<dp n="d15"/>
    }

    if(argc==4+debug+channels){

      for(ix=0;ix<charnels &amp;&amp; ix<16;ix++){

      chan_length[ix]=atoi(argv[4+debug+ix]);

     }

  }

  else{

    for(ix=0;ix<channels &amp;&amp; ix<16;ix++){

    chan_length[ix]=1;

   }

  }

 }

 if(channels>16){

  printt(″Sorry,too many channels,limit is 16\n″);

 return 1;

}

 if(tune_limit>channels){

  printf(″Sorry,can’t need more tuners than channels\n″);

 return 1:

}

 if(tune_limit<rec_limit){

 printf(″Sorry,can’t need to record more than you tune\n″);

 return 1;

}

 printt(″channels=%i,record limit=%i,tuner limit=%i\n″,

    channels,rec_limit,tue_limit);

/*寻找最佳规则:

*1.频道不能长于1+sum(prev_channel)

*2.不要尝试,结合物是小于当前最佳的总长

*/

 curbest_tlen=0;

 signal(SIGINT,int_handler);

 signal(SIGQUIT,quit_handler);
				
				<dp n="d16"/>
do{

  best_worst_records=channels+1;

  best_worst_tunes=channels+1;

  init_chan_phases();

/*规划仅为每个频道的阶段信息*/

/*决定重复ival:所有频道长度的LCM*/

/*而且,决定我们小于为每个频道试用的决定信息。这将小于所有前

面频道的LCM(以它们重复的间隔)和频道长度。*/

cum_lcm[0]=chan_length[0];

poss_phas[0]=1;

for(ix=1;ix<channels;ix++){

  cum_lcm[ix]=(cum_lcm[ix-1]*chan_length[ix])/

  gcd(cum_lcm[ix-1],chan_length[ix]);

  poss_phas[ix]=(cum_lcm[ix-1]<chan_length[ix]?

       cum_lcm[ix-1]:chan_length[ix]);

}

lcm=cum_lcm[channels-1];

/*LCM是最好ival,直到它小于整个时间?*/

cur_phase_config=0;

do{

 if(debug)(

   for(ix=0;ix<channels;ix++){

      printf(″%3i″,chan_phase[ix]);

   }

   printf(″:″);

   for(ix=0;ix<channels;ix++){

      printf(″%3i″,current_ival(ix,0));

   }
				
				<dp n="d17"/>
 printf(″\n″);

}

/*该二状态是每阶段设置*/

worst_unes=0;

worst_records=0;

/*对所有可能开始时间分析*/

/*在最早没赋值的时间片记录段*/

for(stime=0;stime<lcm;stime++){

zero_stat_arrays();

for(seg=chan_first_ival[channels]-1;seg>0;-seg){

/*计算出何时段被记录或浏览*/

  int seg_chan=segment_channel(seg);

  int chan_len=chan_length[seg_chan];

   next_best_count=channels+1;/*findi min,start high*/

  if(seg==(css=current_ival(seg_chan,stime+seg-1))){

  direct_view[seg]=1;
}

 else{

 flag=0;

   for(ix=chan_len-((chan_len+seg-css)%chan_len);

    ix<seg &amp;&amp; flag==0;

    ix+=chan_len){

   if(debug &amp;&amp;

     seg!=current_ival(seg_chan,

            stime+seg-(ix+1))){

     printf(″Program Error,check 1!″);

   }

   if(slot_used[seg-ix]==0){

   flag=1;
				
				<dp n="d18"/>
       slot_used[seg-ix]=1;

     }

       else if(slot_used[seg-ix]<next_best_count){

       next_best=seg-ix;

       next_best_count=slot_used[seg-ix];

     }

   }

    if(0==flag){

      if(0!=next_best){

        slot_used[next_best]++;

      }

      else{

        printf(″Error,couldn′t get seg %3i\n″,seg);

      }

    }

  }

}

/*寻找最糟糕情况*/

for(seg=chan_firet_ival[channels]-1;seg>0;-seg){

  if(slot_used[seg]>worst_records)

  worst_records=slot_used[seg];

  if(slot_used[seg]+direct_view[seg]>worst_tunes)

  worst_tunes=slot_used[seg]+direct_view[seg];

}

/*如果对任何开始时间最差情况比我们正在寻找的情况还要糟糕,

对剩下开始时间不用费心检查*/

if(worst_records>rec_limit)}

   worst_tunes>tune_limit){

   break;

}

/*诊断/数据打印输出*/

if(debug){
				
				<dp n="d19"/>
printf(″start=%2i,″,stime);

for(seg=1;seg<chan_first_ival[channels];seg++){

printf(″%c%li″,

    (direct_view[seg]?′V′:″),

   slot_used[seg]);
   }

printf(″mxrec=%li mxtun=%li\n″,

 worst_records,worst_tunes);

}
   }

 if(worst_records<best_worst_records){

 best_worst_records=worst_records;
   }

 if(best_worst_records==worst_records &amp;&amp;

  worst_turnes<best_worst_tunes){

  best_worst_tunes=worst_tunes;

  best_phase_config=cur_phase_config;

}

  cur_phase_config++;

  /*如果该阶段配置完成目标就停止*/

  if(rec_limit>=best_worst_records &amp;&amp;

  tune_limit>=best_worst_tunes){

  /*找到一个最佳安排*/

  if(debug)printf(″new best qualifying\n″);

  curbest_tlen=0;

  for(ix=0;ix<channels;ix++){

    curbest_lens[ix]=chan_length[ix];

    curbest_has[ix]=chan_phase[ix];

    curbest_tlen+=chan_length[ix];

 }

 break;

 }

}while(increment_chan_phases());

/*现在,生成新的潜在更好频道组*/
				
				<dp n="d20"/>
/*计算,但不比2^N多,如果它不合理(没有频道比1+prev_sum长)

或者它还不比最佳的长,放弃它*/

/*然后频道应该与先前的频道一样长或比它更长*/

  do{

    sum=1;vflag=0;carry=1;

      for(ix=1;ix<channels;ix++){

       chan_length[ix]+=carry;

       if(chan_length[ix]>(1<<ix)){

         chan_length[ix]=1;

        carry=1;

      }

      else{

        carry=0;

      }

      if(chan_length[ix]>sum+1{{

         chan_length[ix]<chan_length[ix-1]){

        vflag=1;

      }

       sum+=chan_length[ix];

      }

     }while((1==vflag||sum<=curbest_tlen)&amp;&amp;0==carry);

    }while(0==carry);

    for(ix=0;ix<channels;ix++){

    printf(″%2i:%li″,curbest_lens[ix],curbest_phas[ix]);

    }

    printf(″tlen=%3i\n″,curbest_tlen);

    return 0;

      }

Claims (18)

1.提供数据段的方法,方法包括以下步骤:
(a)将数据段分成3个或多个部分;和
(b)通过两个或多个频道提供数据段,两个或多个频道的每个负载数据段的部分,由两个或多个频道负载的每部分小于整个数据段,两个或多个频道的每个随时间重复。
2.权利要求1的方法,其中两个或多个频道的第一个频道有第一长度,两个或多个频道的第二个频道有第二长度,其中第二长度是第一长度的2倍长。
3.权利要求1的方法,其中两个或多个频道的第一个频道有第一长度,两个或多个频道的第二个频道有第二长度,两个或多个频道的第三个频道有第三长度,其中第二长度是第一长度的2倍长,其中第三长度是第一长度的4倍长。
4.权利要求1的方法,其中两个或多个频道是逻辑频道,它在单个物理频道上是时分复用的。
5.一种提供数据段的方法,该方法包括以下步骤:
(a)在以间隔T重复的第一频道上提供数据段的第一部分;
(b)在以间隔T乘以乘数X重复的第二频道上提供数据段的第二部分,其中X是整数;
6.权利要求5的方法,其中第一和第二频道是逻辑频道,它在单个物理频道上是时分复用的。
7.权利要求5的方法,其中X为2。
8.权利要求7的方法还包括以下步骤:
(c)在以间隔T乘以乘数Y重复的第三频道上提供数据段的第三部分,其中Y是整数。
9.权利要求8的方法,其中第一频道和第二频道是逻辑频道,它们在单个物理频道上是时分复用的。
10.权利要求8的方法,其中Y为4。
11.权利要求10的方法还包括以下步骤:
(d)在以间隔T乘以乘数Z重复的第四频道上提供数据段的第四部分,其中Z是整数。
12.权利要求11的方法,其中Z为8。
13.一种提供数据段的方法,该方法包含以下步骤:
(a)在以第一频率重复的第一频道上提供数据段的第一部分;
(b)在以第二频率重复的第二频道上提供数据段的第二部分,其中第二频率比第一频率低频;和
(c)在以第三频率重复的第三频道上提供数据段的第三部分,其中第三频率比第二频率低频;
14.权利要求13的方法,其中第一频道,第二频道和第三频道是逻辑频道,它们在单个物理频道上是时分复用的。
15.一种存取数据段的方法,数据段有起点和终点,该方法包含以下步骤:
(a)在两个或多个频道上接收数据段,两个或多个频道的每个负载小于从起点至终点整个数据段的数据段的部分,两个或多个频道的每个随时间重复它的数据段的部分;
(b)通过从两个或多个频道取得数据段的部分,在输出上提供从起点至终点的整个数据段。
16.一种存取数据段的方法,数据段有起点和终点,该方法包含以下步骤:
(a)在N个频道的每个频道上接收数据段的至少一部分,N个频道的每个频道以时间间隔乘以乘数M重复,其中N是大于1的整数,且M是大于0的整数;
(b)在输出上提供从起点至终点的数据段,其中N个频道的每个频道在输出上提供数据段的至少一部分。
17.权利要求16的方法,其中步骤(b)还包含以下步骤:
在提供数据段的第二部分至输出之前,缓存从N个频道中的一个频道上接收的数据段的第二部分至存储单元。
18.权利要求16的方法,其中N个频道中的每个都是逻辑频道,它们在单个物理频道上是时分复用的。
CNB988125927A 1997-12-23 1998-11-10 提供和取得数据段的方法 Expired - Fee Related CN1184757C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/997501 1997-12-23
US08/997,501 US6072808A (en) 1997-12-23 1997-12-23 Method of providing and retrieving a data segment

Publications (2)

Publication Number Publication Date
CN1283342A CN1283342A (zh) 2001-02-07
CN1184757C true CN1184757C (zh) 2005-01-12

Family

ID=25544097

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB988125927A Expired - Fee Related CN1184757C (zh) 1997-12-23 1998-11-10 提供和取得数据段的方法

Country Status (9)

Country Link
US (1) US6072808A (zh)
EP (1) EP1034633B1 (zh)
JP (1) JP2001527322A (zh)
KR (1) KR100363803B1 (zh)
CN (1) CN1184757C (zh)
AU (1) AU1313999A (zh)
DE (1) DE69831972T2 (zh)
TW (1) TW455766B (zh)
WO (1) WO1999033209A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6731650B1 (en) * 1998-04-27 2004-05-04 Canon Kabushiki Kaisha Data transfer apparatus and its control method
US6622305B1 (en) * 2000-02-25 2003-09-16 Opentv, Inc. System and method for displaying near video on demand
US6557030B1 (en) * 2000-05-31 2003-04-29 Prediwave Corp. Systems and methods for providing video-on-demand services for broadcasting systems
EP1285348A4 (en) * 2000-05-31 2004-06-30 Prediwave Corp METHODS FOR PROVIDING ON-DEMAND VIDEO SERVICES FOR BROADCAST SYSTEMS
CN1237807C (zh) * 2001-06-15 2006-01-18 皇家菲利浦电子有限公司 将节目发送到客户终端的方法、系统和用作客户终端的装置
US7574728B2 (en) 2001-07-31 2009-08-11 Dinastech Ipr Limited System for delivering data over a network
US7174384B2 (en) 2001-07-31 2007-02-06 Dinastech Ipr Limited Method for delivering large amounts of data with interactivity in an on-demand system
US7020657B2 (en) * 2001-09-27 2006-03-28 International Business Machines Corporation Scalable hardware scheduler time based calendar search algorithm
US7962944B2 (en) 2002-01-23 2011-06-14 John Sidney Stewart Providing multimedia on demand in a near on demand environment
US8181215B2 (en) 2002-02-12 2012-05-15 Comcast Cable Holdings, Llc System and method for providing video program information or video program content to a user
US8040915B2 (en) * 2003-05-19 2011-10-18 Broadcom Corporation System, method, and computer program product for facilitating communication between devices implementing proprietary features in a DOCSIS-compliant broadband communication system
EP1781034A4 (en) * 2004-07-27 2011-04-27 Sharp Kk PSEUDO VIDEO ON DEMAND SYSTEM, CONTROL PROCEDURE FOR A PSEUDO VIDEO ON DEMAND SYSTEM AND PROGRAM AND RECORDING MEDIUM THEREFOR
KR101224256B1 (ko) * 2005-10-14 2013-01-18 한양대학교 산학협력단 레이저 기반의 이동 단말을 위한 다중채널의 장면구성 제어방법 및 장치
US8041848B2 (en) 2008-08-04 2011-10-18 Apple Inc. Media processing method and device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421031A (en) * 1989-08-23 1995-05-30 Delta Beta Pty. Ltd. Program transmission optimisation
US5446490A (en) * 1992-10-23 1995-08-29 At&T Corp. Interactive television with tailored programming
US5594491A (en) * 1995-12-29 1997-01-14 Vxl/Hcr Technology Corporation Near-video-on-demand digital video distribution system utilizing asymmetric digital subscriber lines
US5831662A (en) * 1996-04-04 1998-11-03 Hughes Electronics Corporation Near on-demand digital information delivery system and method using signal fragmentation and sequencing to reduce average bandwidth and peak bandwidth variability

Also Published As

Publication number Publication date
US6072808A (en) 2000-06-06
DE69831972T2 (de) 2006-07-27
CN1283342A (zh) 2001-02-07
AU1313999A (en) 1999-07-12
EP1034633B1 (en) 2005-10-19
JP2001527322A (ja) 2001-12-25
WO1999033209A1 (en) 1999-07-01
EP1034633A4 (en) 2002-09-04
KR100363803B1 (ko) 2002-12-11
DE69831972D1 (de) 2006-03-02
EP1034633A1 (en) 2000-09-13
KR20010033492A (ko) 2001-04-25
TW455766B (en) 2001-09-21

Similar Documents

Publication Publication Date Title
CN1184757C (zh) 提供和取得数据段的方法
Chen et al. Support for fully interactive playout in disk-array-based video server
JP3170461B2 (ja) ビデオ・オン・デマンド放送用のピラミッド形データ・ブロック構成
JP3177111B2 (ja) ビデオ・オン・デマンド・システムにおけるビデオ走査のためのフレーム・サンプリング方式
EP0954925B1 (en) Method and apparatus for encoding and formatting data representing a video program to provide multiple overlapping presentations of the video program
US7570867B2 (en) Systems and methods for playing digital video in reverse and fast forward modes
RU2106758C1 (ru) Способ оптимизации передачи программы многим пользователям, система для оптимизации передачи программы многим пользователям, приемник для приема программы, полученной от системы оптимизации передачи программы, и устройство планирования для системы оптимизации передачи программы
KR100583067B1 (ko) 네트워크를 거쳐서 데이터를 전달하는 방법
US20070239856A1 (en) Capturing broadcast sources to create recordings and rich navigations on mobile media devices
JPH10507889A (ja) ビデオ・プログラムを表すデータを符号化、フォーマット化し、ビデオ・プログラムの複数のオーバラップ・プレゼンテーションを提供する方法および装置
WO2000074367A9 (en) Method of optimizing near-video-on-demand transmission
CN101057500A (zh) 用于帮助用户选择内容的方法和网络设备
KR100639428B1 (ko) 네트워크를 통해 데이터를 전송하는 시스템
JP3852311B2 (ja) VoDサービス提供方法及びシステム及びVoDサービス提供プログラム及びVoDサービス提供プログラムを記録したコンピュータ読み取り可能な記録媒体
CN1237807C (zh) 将节目发送到客户终端的方法、系统和用作客户终端的装置
JP2003046975A (ja) コンテンツ配信方法及びコンテンツ配信プログラム及びコンテンツ配信プログラムを格納した記憶媒体及びコンテンツ再生プログラム及びコンテンツ再生プログラムを格納した記憶媒体
Sheu et al. A scalable cost-effective video broadcasting system for on-demand video services
Chen et al. SingBroad: A scheduling scheme for broadcasting continuous multimedia data over a single channel
JP2002320204A (ja) 映像データ管理・生成方法及びそれを用いた映像配信サービスシステム並びにその処理プログラムと記録媒体
Tse Multimedia Information Storage and Retrieval: Techniques and Technologies: Techniques and Technologies
CA2342317C (en) Frame sampling scheme for video in video-on-demand system
EP1936921A1 (en) Method for assigning multimedia data to distributed storage devices
EP1898600A1 (en) Method for assigning multimedia data to distributed storage devices
JP2003100014A (ja) 記録再生管理・制御装置及び記録再生管理・制御方法
Chen et al. Advanced generalized conservative staircase method for broadcasting popular movies

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050112

Termination date: 20171110