具有分布式视频数据存储的视频优化的媒体流分送器的制作方法

文档序号:7566543阅读:217来源:国知局
专利名称:具有分布式视频数据存储的视频优化的媒体流分送器的制作方法
技术领域
本发明与一个分送多媒体数据的系统相关,更具体地,与一个能同时向多个终端用最少的缓冲提供视频的交互式视频服务器系统相关。
当今的电影和电视的播出是用相当陈旧的技术手段实现的。基本的存储介质是模拟磁带,例如VHS录像机/放像机,以及电视制片室和广播电台用的很高质量又很昂贵的DI磁带录相机。这种技术存在很多问题,其中一些包括装磁带需要手工操作,机械部件,磁头和磁带本身的磨损和破坏,以及昂贵的价格。一个困扰广播电台的一个严重限制是VTR只能按顺序一次完成一项功能。每个磁带单元的价格为$75,000到$150,000。
电视台要从商业节目,即不过是一些短片中增加收入,就通过在标准节目中插播特殊商业节目实现,因而把每个城市看作一个独立的市场目标。这对于用磁带技术,即使有很昂贵的数字DI磁带系统或磁带机器人来说也很困难。
传统的分送多媒体数据到终端用户的方法分为两类1)广播工业的方法和2)计算机工业的方法。广播方法(包括电影,有线,电视网,和录制工业)一般用模拟或数字记录的磁带的形式提供存储器。磁带的播放导致等时数据流的产生,然后通过广播工业的设备送到终端用户。计算机方法一般以磁盘或附加磁带的磁盘的形式提供存储,并以压缩数字格式如DVI、JPEG和MPEG格式来记录数据。接到了请求,计算机就把非等时数据流分送到终端用户,在那里硬件缓存和特殊应用代码平滑这些数据流,使得可以连续地看或听。
传统地,由于存储介质价格的关系,视频磁带子系统比计算机磁盘子系统有价格优势。但是磁带子系统的劣势在于磁带管理,访问延迟,以及相对低的可靠性。随着计算机存储器的降价,再加上实时数字压缩/解压缩技术的出现,这些劣势变得更为显著。
虽然计算机子系统显示出综合性能价格比的提高,但是一般还不能说是“视频友好”的。计算机基本上用被称为“非等时”的接口和协议与工作站和计算机终端连接。为保证多媒体数据平滑地(等时地)分送到终端用户,计算机系统需要特殊的应用代码和很大的缓存来弥补其传统的通信方式的天生的弱点。而且计算机的视频不友好性还在于缺乏与多媒体工业的设备的兼容的接口,需要这些接口来处理多个等时数据流并在它们之间高精度地切换。
随着使用计算机来以数字格式压缩并存储视频素材的出现,在几个主要工业中发生了一场革命,如电视广播,电影制片,通过电话线“点播电视”,饭店里的“一看一付”的电影,等等。压缩技术已经发展到压缩比为100倍到180倍的可以接受的程度。这种压缩比使随机访问磁盘技术成为先前的磁带系统技术的一个很有吸引力的替代。
具备了随机访问磁盘数据的能力和磁盘系统很高的带宽,所需要的系统功能和性能是磁盘技术的性能、硬件费用和可消费性可以达到的。因为存储费用的缘故,过去根本不能考虑用磁盘文件来存储电视或电影。这种费用最近有了显著降低。
对于许多新出现的用MPEG标准利用压缩视频数据的市场来说,有多种途径可以经济有效地存储视频数据。本发明提供了一个满足不同性能要求的层次式解决方法,最终得到一个可以用户化以满足市场要求的模块式系统方法。
本发明提供一个“视频友好”的计算机子系统,它在该工业的传统接口上提供多媒体环境中的等时数据流分送。一个媒体流分送器(media streamer)被优化用于等时数据流的分送,并能让数据流进新型的采用ATM(异步传输模式)技术的计算机网络中。本发明在提供对系统控制的VTR(视频磁带录相机)的模拟的同时消除了视频磁带的缺点。本发明的系统具有下列特色可伸缩性,分送从1个到数千个独立控制的数据流到终端用户;从单个的数据拷贝分送很多个等时数据流的能力;混合输出接口;混合数据率;一个简单的“开放系统”控制接口;自动控制支持;存储层次支持;以及较低的每个数据流的费用。
一个按照本发明的媒体流分送器包括至少一个包含海量存储器的存储结点,用来存储至少一个视频图象的一个数字表示。海量存储器包含多个海量存储单元。所述至少一个视频图象需要一段时间T来全部播放出来,并存在N个数据块中。每个数据块存有相当于大约视频播出的T/N时间的数据。媒体流分送器还包括多个通信结点,每一个通信结点有至少一个输入端口耦合到所述至少一个存储结点的一个输出,来从那里接收一个视频图象的数字表示。多个通信结点中的每一个还包括多个输出端口,它们各自把一个数字表示作为一个数据流传送到数字表示的一个消费者。
根据本发明的一个方面,数字表示的N个数据块被分为X条,其中数据块1,x+1,2*x+1,…与X条中的第一条相联,依此类推,其中X条各自存在多个海量存储单元中的一个不同的单元上。
多个海量存储单元最好存有一个视频图象的一个数字表示的单一拷贝。X条以这种方式读出,使得可以以多个数据流同时传送N个数据块中的同一个,或者以这种方式读出,使得可以以多个数据流同时传送N个数据块中的不同的块。
X值由下述表达式确定X=最大值(r*n/d,r*m/d);其中r是一个数据流的标定数据率;n是在标定数据率下同时输出的数据流的个数,d是其中一个海量存储单元的实际输出数据率;m是在标定数据率下从存有N个数据单元中的至少一个海量存储单元同时输出的数据流的最大个数。


图1是一个结合本发明的媒体流分送器的方框图;图1A是表明图1所示的电路开关的进一步细节的方框图;图1B是表明图1所示的一个磁带存储结点的进一步细节的方框图;图1C是表明图1所示的一个磁盘存储结点的进一步细节的方框图;图1D是表明图1所示的一个通信结点的进一步细节的方框图;图2列出了一组以高优先级执行的视频流输出控制命令,还列出一组以较低优先级执行的数据管理命令;图3是显示通信结点的数据流(data flow)的方框图;图4是显示磁盘存储结点的数据流(data flow)的方框图;图5显示了使得一个连接得以实现的控制消息流;图6显示了使一次播出得以发生的控制消息流;图7显示了存在于媒体流分送器与客户控制系统之间的接口;图8显示了显示多个用来操纵媒体流分送器的“软”键的一块显示板;图9显示了在选择了图8中的装入软键后出现的一个装入选择板;图10显示了在选择了图8中的批处理键后出现的一个批处理选择板;图11显示了存在于媒体流分送器和一个客户控制系统之间的几种客户机/服务器关系;图12显示了一种访问视频数据并把它供给一个或多个输出端口的先有技术;图13是一个方框图,它指出多个视频端口是怎样访问包含在一个通信结点高速缓存内的单一一个视频段的;图14是显示多个视频端口是怎样直接访问包含在磁盘存储结点上的高速缓存内的一个视频段的一个方框图;图15显示了本发明所用的一个存储器分配方案;图16显示了一个视频1的一个分段逻辑文件;图17显示了视频1的不同段是怎样在多个磁盘驱动器之间划分的;图18显示了在一个存储结点和一个交叉开关之间的一个先有技术的开关接口;图19显示了图18中所示的先有技术开关接口是怎样被改进以便为一个存储结点提供扩展的输出带宽的;图20是显示用来确保对一个视频输出总线的恒定的视频输出的一个过程的方框图;图21显示了一个用于转换数字视频数据到模拟视频数据的视频适配器的方框图;图22是显示使得SCSI总线命令能被用来控制图21所示的视频适配器卡的控制模块的方框图。
词汇表在下面的描述中,若干个术语的用法如下所述AAL5 ATM ADAPTATION LAYER—5(ATM适配层—5)指的是一类适于数据传输的ATM服务。ATM ASYNCHRONOUS TRANSFER MODE(异步传输模式)一种高速交换和传输技术,可以用于局域或广域网,或者两者都有。它设计为运载数据和视频/声频。Betacam一种专业质量的模拟视频格式。CCIR601一种数字电视的标准分辨率。720×840(对NTSC)或720×576(对PAL)亮度,色度水平方向2∶1二次采样。CPU 中央处理单元计算机体系结构中处理计算机指令的主要实体。CRC CYCLE REDUNDANCY CHECK(循环冗余校验)
一种数据错误检测方案。D1 遵循CCIR601的数字视频记录格式。记录在19毫米视频磁带上。D2 遵循SMPTE 244M的数字视频记录格式。记录在19毫米视频磁带上。D3 遵循SMTPE 244M的数字视频记录格式。记录在1/2"视频磁带上。DASDDIRECT ACCESS STORAGE DEVICE(直接访问存取设备)任何能够被寻址的在线数据存储设备或CD—ROM播放机都是一个DASD。用法与磁盘驱动器同义。DMA DIRECT MEMORY ACCESS(直接存储器访问)一种计算机体系结构中移动数据的方法;它移动数据时不需要CPU。DVI 一种相对质量较低的视频压缩格式,通常用来从CD—ROM盘播放视频到计算机屏幕上。E1 T1在欧洲的等同物。FIFOFIRST IN FIRST OUT(先入先出)基于先来先服务的操作的队列处理方法。GenLock 指的是与另一个视频信号同步化的过程。它是在计算机对视频的捕获中需要的,以便使数字化过程与视频信号的扫描参数同步化。I/O 输入/输出。等时用来描述时间敏感的并且(最好是)无间断发送的信息。
实时发送的视频和声频信号都是等时的。JPEGJOINT PHOTOGRAPHIC EXPERT GROUP(联合照相专家组)国际标准组织资助的一个工作委员会,它定义了一个建议的全球标准,用于用在计算机系统中的静态图像的数字压缩。KB 千字节1024字节。LAN LOCAL AREA NETWORK(局域网)通过双绞线,同轴电缆,或光纤缆的高速传输,将一英里或更小距离内的终端,计算机和外围设备在一起。LRU 最近最少使用。MPEG MOVING PICTURE EXPERTS GROUP(移动图象专家组)国际标准组织资助的一个工作委员会,它定义了动态视频/声频的数字压缩/解压缩标准。MPEG—1是最初的标准并在使用中。MPEG2将是下一个标准并将支持数字的、灵活的,可伸缩的视频传输。它将涉及多种解像率,比特率和分送机制。MPEG1,MPEG2参见MPEG。MRU MOST RECENTLY USED(最近最多使用)。MTNU MOST TIME TO NEXT USE(到下次使用最大时间)。NTSC制式NATIONAL TELEVISION STANDARDSCOMMITTEE(国家电视标准委员会)美国和日本标准的彩色电视制式。PAL制式PHASE ALTERNATION LINE(相位变化线)法国以外的欧洲标准的彩色电视制式。PC 个人计算机可以家用或商用的相对低价的计算机。RAID冗余廉价磁盘阵列使用多个磁盘或光盘成组工作的一种存储安排,以提高输出带宽并提供冗余备份。SCSI小型计算机系统接口用于把外围设备及其控制器连接到计算机的一种工业标准。SIF SOURCE INPUT FORMAT(源输入格式)OCIR601解像率的1/4。SMPTE 移动图像和电视工程师协会。SSA 串行存储体系结构用来连接外围设备和其控制器到计算机的一种标准。是对SCSI的一种可能的替代。T1 与电话网的数字接口,比特率1.544兆位/秒。TCP/IP TRANSMISSION CONTROL PROTOCOL/INTERNET PROGRAM(传输控制协议/互联网程序)美国国防部开发的一组协议以连接网上的不相似的计算机。VHS VERTICAL HELICAL SCAN(垂直螺线扫描)在磁带上记录模拟视频的一种普通格式。VTR VIDEO TAPE RECORDER(视频磁带录像机)一种在磁带上记录视频的设备。VCR VIDEO CASSETTE RECORDER(视频盒式录像机)同VTR。
一个视频优化的流服务器系统10(此后称为媒体流分送器)在图10中显示出来,它包括四种结构上不同的部件以提供可伸缩性,高可用性,和配置灵活性。主要部件如下1)低延迟开关12一个硬件/微代码部件,其基本任务是在通信结点14,一个或多个存储结点16,17和一个或多个控制结点18之间分送数据和控制信息。
2)通信结点14一个硬件/微代码部件,其基本任务是通过一个广播业的人们所熟知的外部定义接口如NTSC,PAL,D1,D2等来启动“播放”(等时分送数据)和“录制”(等时接收数据)。数字—视频接口被做在一个视频卡中,该卡包含在接到每个通信结点14的输出的多个视频端口15中。
3)存储结点16,17一个硬件/微代码部件,其基本任务是管理存储介质如磁盘以及相关联的存储可用性选项。
4)控制结点18一个硬件/微代码部件,其基本任务是接收并执行来自计算机工业所熟悉的一个外部定义的子系统接口的控制命令。
一个典型的有64个结点的媒体流分送器的实现可能包含31个通信结点,31个存储结点,2个控制结点,它们都用低延迟开关12互联。一个小些的系统可能不包括开关而只有一个支持通信、存储和控制功能的硬件结点。媒体流分送器10的设计允许在用户安装时把一个小系统扩充为一个大系统。不论如何配置,媒体流分送器10的功能保持一致,只是分送的流的数目及所存的多媒体的小时数目不同。
在图1A中示出了低延迟开关12的进一步细节。多个电路开关芯片(未示出)通过纵横开关卡20上互联,后者通过一块平面板(示意出)互联。该平面和一块卡20构成了有16个结点端口的一个低延迟开关。可以增加附加卡20来配置附加的结点端口,如果需要的说,配置活跃的冗余结点端口以获得高可用性。低延迟开关12的每个端口启动比如说一个每秒25兆字节的全双工信道。
信息以包的形式通过开关12传送。每个包包含一个首部,它控制每个开关芯片中的每一个纵横开关点的开关状态。控制结点18通过低延迟开关12为其它结点(存储结点16,17和通信结点14)提供激活对等操作所需的信息。
图1B表明了一个磁带存储结点17的内部细节。后面会明白,存储结点17为视频图象的数字表示的存储提供了一个大容量的存储设施。
这里用的一部视频图象可以包括一幅或多幅适于显示和/或处理的图像。一个视频图象可能包括音频部分。一幅或多幅图像可能是逻辑相关的,例如一部电影或动画系列的连续的帧。图像原本可能是用照相机,数字计算机、或照相机和数字计算机共同产生的。音频部分可以与连续的图像显示同步。此处所用的视频图象的数据表示可以是任何适合于表示一幅或多幅图像及可能的声音的数字数据格式。数字数据可以是编码的和/或压缩的。
再次参考图1B,一个磁带存储结点17包括一个磁带库控制器接口24,使得可以访问包含在一个磁带库26中的多个磁带记录。还有一个接口28使得可以通过一个SCSI总线互连访问另外的磁带库。一个内部系统存储器30可以用来缓冲从接口24或28次到或通过DMA数据传输通路32收到的视频数据。系统存储块30可能是PC34的一部分,该PC34包含了磁带库和文件管理操作的软件。一个开关接口和缓冲模块38(也用于磁盘存储结点16,通信结点14和控制结点18)完成了磁带存储结点17与低延迟开关12之间的联接。就是说,模块38负责把一个数据传输分割为包,并给每个包加上供开关12为该包选择路径之用的首部。当从开关12收到一个包时,模块38负责去掉首部然后在本地缓冲或以其它方式处理收到的数据。
来自磁带库26的视频数据在一个第一缓冲动作中进入系统存储器10。然后,响应控制结点18的初始导向,通过低延迟开关12把视频数据送到一个磁盘存储结点16,准备在需要时可以基本上立即访问。
在图1C中示出了一个磁盘存储结点16的内部细节。每个磁盘存储结点16包括一个开关接口与缓冲模块40,使得数据可以从一个RAID缓冲视频高速缓存和存储接口模块42传入或传到那里。接口42把接收到的视频数据传递到多个磁盘45,并以准RAID方式把数据散布在各磁盘上。RAID存储的细节已为先有技术所知并在下面这本书里描述“廉价磁盘冗余阵列之一例(PAID)”,Patterson等著,ACM SIGMOD会议,芝加哥,伊利诺伊,6月1—3日,1988年,109—116页。
一个磁盘存储结点还有一个内部PC44,它包括软件模块46和48,它们分别提供存储结点控制,视频文件和磁盘控制,以及存在磁盘45上的数据的RAID映射。实际上,每个磁盘存储结点16比一个磁带存储结点17提供更为迅速的视频数据可用性。每个磁盘存储结点16还可以在开关接口和缓冲模块40的一块半导体存储器中(以高速缓存方式)缓冲视频数据,以便在收到对视频数据的请求时更快地用到数据。
总的说来,一个存储结点包括一个海量存储单元(或者与一个海量存储单元的接口),和在本地缓冲从海量存储单元读出或向它写入的数据的能力。存储结点可能包括一个或多个磁带驱动器和/或磁盘驱动器形式的顺序存取海量存储器,还可能包括随机访问存储器,例如以随机方式访问的一个或多个磁盘驱动器,和/或半导体存储器。
在图1D中显示了一个通信结点14的内部元件的方框图。与上述结点相似,通信结点14包括一个开关接口和缓冲模块50,用它可象前面所进的那样与低延迟开关12通信。视频数据在开关接口和缓冲模块50和流缓冲和通信接口52之间直接传输,其中通过开关接口和缓冲模块50送到流缓冲器,通过通信接口52送到一个用户终端(未示出)。一个PC54包括软件模块56和58,分别提供通信结点控制(如流的开始/停止动作)和激活一个等时数据流的随后产生。一个到流缓冲和通信接口52的附加输入60启动输出数据的帧同步。那个数据是从自动控制装置62接收到,而后者又受一个系统控制器64控制,系统控制器64对媒体流分送器10(见图1)进行总体操作控制。系统控制器64响应用户控制机顶盒65的输入,以产生命令,使得媒体流分送器10可以访问一个被请求的视频图象。系统控制器64还拥有一个用户接口和显示工具66,它使用户可以输入命令,比如通过硬或软按钮,以及其它数据来启动对视频图象的识别,视频图象的调度,以及对视频图象的播放的控制。
每个控制结点18配置为一个PC,它包含一个开关接口模块,用来与低延迟开关12接口。每个控制结点18响应系统控制器64的输入来提供信息给通信结点14和存储结点16,17,以便通过低延迟开关12产生想要的连接。另外,控制结点18还包含软件,用来使得所请求的视频数据从一个或多个磁盘存储结点16取出并通过一个流分送接口分送视频数据到一个用户显示终端。控制结点18还通过低延迟开关12发送命令来控制磁带和磁盘存储结点16,17的操作。
媒体流分送器有三种结构的外部接口,如图1所示。这些外部接口是1)控制接口一个执行TCP/IP协议的开放系统接口(以太网,令牌环网,串行端口,调制解调器等)。
2)流分送接口为数据的分送设计的多种工业标准之一(NTSC,D1,等)。
3)自动控制接口用于流输出的精确同步的工业标准控制接口的集合(GenLock,BlackBurst,SMPTE时钟等)。
通过控制接口向媒体流分送器10发布应用命令。当发布数据装入命令时,控制结点把输入数据分成段(即数据块),并把它们散布在一个或多个存储结点上。素材的密度和同一时刻数据用户的数目影响数据在存储结点16,17上的放置。增加密度和/或同一时刻的用户意味着在容量和带宽上利用了更多的存储结点。
当通过控制接口发布命令来开始把数据向一个终端用户流动时,控制结点18选择并激活一个适当的通信结点14并传递控制信息给它指示数据文件段在存储结点16,17上的位置。通信结点14激活需要涉及的存储结点16,17并继续通过低延迟开并12发送的命令包来与这些结点通信以开始数据的移动。
数据通过低延迟开关12在磁盘存储结点16和通信结点14之间移动,使用“刚好准时”(just in time)调度算法。调度和数据流控制所用的技术在后面充分描述。从一个通信结点接口发出的数据流到磁盘存储结点16之间是多路复用,而从磁盘存储结点16发出的数据流也如此,这样单个通信结点流只用了每个盘存储结点的一部分容量和带宽。以这种方法,很多通信结点14可以多路复用地访问盘存储结点的相同或不同的数据。例如,媒体流分送器10可以从通信结点池14提供1500个独立控制的终端用户流,其中每一个都多路复用地访问散布在磁盘存储结点16上的同一个多媒体文件。这种能力称为“单拷贝多个流”。
通过控制接口接收的令令以两种不同的类别执行。那些管理数据而不与流控制直接相关的命令以“低优先级”执行。这使得一个应用给媒体流分送器10装入新数据而不影响数据流对终端用户的分送。那些影响流分送(即输出)的命令以“高优先级”执行。
控制接口命令如图2所示。媒体流分送器10中用来装入和管理数据的低优先级数据管理命令包括VS—CRE,VS—OPEN,VS—READ,VS—WRITE,VS—GET—POSITION,VS—SET—POSITION,VS—CLOSE,VS—RENAME,VS—DELETE,VS—GET—ATTRIBUTE,及VS—GET—NAMES。
用于启动和管理流输出的高优先级命令包括VS—CONNECT,VS—PLAY,VS—RECORD,VS—SEEK,VS—PAUSE,VS—STOP,和VS—DISCONNECT。控制结点18监控流控制命令以保证请求被执行。控制结点18中的这种“准入控制”工具可能拒绝启动流的请求,这是在超越了媒体流分送器10的能力时。这可能在几种情况下发生1)当系统中的一些元件发生故障而妨碍了最大限度地工作;2)当同时访问一个数据文件的流的数目超越了一个指定数目(由VS—CREATE命令的参数指定)时;以及3)当来自系统的同时的流的数目超越了一个由安装配置指定的数目时。
通信结点14是作为一个异种组来管理的,其中每一个都可能有不同的带宽(流)容量和物理定义。VS—CONNECT命令指示媒体流分送器10分配一个通信结点14及其部分或全部带宽以进行等时数据流的分送。例如,媒体流分送器10可以通过若干通信结点14以270兆位/秒的速率播放未压缩的数据流,而同时在另外一些通信结点14上以低得多的速率(通常1—16兆位/秒)播放压缩数据流。
存储结点16,17是作为一个异种组来管理的,其中每一个都可能有不同的带宽(流)容量和物理定义。VS—CREATE命令指示媒体流分送器10分配一个或多个存储结点16,17给一个多媒体文件及其相联的元数据(meta data)。VS—CREATE命令指令流密度和所需的同一时刻用户的最大数目。
三个附加的命令支持广播工业中的自动控制系统VS—CONNECT—LIST,VS—PLAY—AT—SIGNAL,和VS—RECORD—AT—SIGNAL。VS—CONNECT—LIST命令允许应用在一个给予系统的命令中指定一个播放命令序列。媒体流分送器10将执行其中每一个播放命令,就象是从控制接口发布的一样,但将不留痕迹地从一个流的分送过渡到下一个。下面是一个序列的例子1)控制结点18接到一个VS—CONNECT—LIST命令,其播放子命令指示文件1、文件2、文件3的全部或部分顺序播放。控制结点18确定这些文件的最大数据率并在一个通信结点14上分配资源。给所分配的通信结点以详细的播放表,并启动等时流的分送。
2)当文件1的分送接近末尾时,通信结点14启动文件2的分送但并不把它送到该结点的输出端口。当文件1播放完毕或产生了一个来自自动控制接口的信号时,通信结点14把输出端口从第一个流切换到第二个流。这是在1/30秒内或者说在一个标准视频帧时间之内完成的。
3)通信结点14释放与文件1有关的资源。
VS—PLAY—AT—SIGNAL和VS—RECORD—AT—SIGNAL允许来自外部自动控制接口的信号激活播放和录制操作的数据传输,其精度在一个视频帧的界限内。在前例中,VS—CONNECT—LIST命令包括一个PLAY—AT—SIGNAL子命令来根据外部自动控制接口信号来启动从文件1到文件2的过渡。如果这个子命令是VS—PLAY,则只有当文件1播完时才会发生过渡。
媒体流分送器10执行的其它命令提供了管理存储层次的能力。这些命令是VS—DUMP,VS—RESTORE,VS—SEND,VS—RECEIVE,和VS—RECEIVE—AND—PLAY。每个命令都造成一个或多个多媒体文件在存储结点16和两个外部定义的层次实体之间的移动。
1)VS—DUMP和VS—RESTORE使数据可以在盘存储结点16和控制结点18访问得到的一个磁带存储结点17之间移动。数据的移动可以由控制应用激活,或者由控制结点18自动地激活。
2)VS—SEND和VS—RECEIVE提供了一个传递多媒体文件到另一个媒体流分送器的方法。作为选项,接收方媒体流分送器可以立即播放输入文件到一个预先分配的通信结点而不必等待整个文件。
除了定义在媒体流分送器体系结构内的模块设计和功能集以外,还针对等时数据传输对数据流进行优化,以便显著地降低费用。具体地1)低延迟开关的带宽超过了所连接的结点的带宽;结点间的通信几乎没有阻碍;2)避免了数据移入处理器内存,提供了更高的带宽;3)避免了对数据的处理;去掉了昂贵的处理单元;以及4)数据的移动被仔细调度,从而省去了大的数据高速缓存。
用传统的计算机的说法,媒体流分送器10用作一个互联的适配器系统,它具备通过低延迟开关12完成同级之间的数据移动的能力。低延迟开关12访问数据存储器并把数据段从一个适配器的存储器移到另一个适配器的存储器,而无须“宿主机”的干预。B.数字压缩视频数据的等时分送的层次管理媒体流分送器10提供了层次化的存储成分,它的设计允许从一个很小的视频系统扩展到一个很大的系统。它还提供了存储管理的灵活性以适应不同的需要来满足点播电视,近电视点播,商业节目插入,高质量未压缩视频存储,捕获和重放功能。B1.磁带存储在媒体流分送器10中,视频图象从高性能数字磁带移动到磁盘上,并以终端用户需要的低得多的数据率播出。用这种方法,只有很少量的视频时间存在磁盘子系统中。如果是“近电视点播”(Near Video on Demand),那么在任一时刻都只有比如说每个电影的5分钟需要在磁盘存储中。对一个典型的2小时的电影只需要22个5分钟的段。结果是一个视频图象所需的盘存储量降低了,因为在任一时刻都不是把全部的视频图象保存在磁盘文件中。只有正在播出的那部分片子需要出现在磁盘中。
换句话说,如果一个视频图象需要时间T才全部播完,并且存贮为一个包括N个数据块的数字表示,那么每个数据块存有大约相当于视频图象的T/N的部分。N块数据的最后一块可能存得不足T/N时间。
随着对系统的需求的增长和流的数目的增加,统计学上的平均是大约视频流请求的25%是针对同一部电影的。但是在不同的亚秒时间间隔内,而且观众的分布将使得那些亚秒请求中有超过50%落在有15个电影段的一组上。
本发明的一个方面是使用最恰当的技术来满足这一要求。一个随机访问装盒机是一个数字磁带系统(如IBM公司生产的),它的每个磁带有很高容量,每个抽屉机械自动地装入100盒磁带,每个抽屉最多两个磁带驱动器。结果形成一个有效的电影点播系统磁带库。然而本发明也实现了极低价的数字磁带存储库系统以提供电影的海量存储,还实现了低需求电影直接从磁带播放到速度相当的缓冲区然后到视频解压缩和分配通道。
把层次磁带存储与任何视频系统相结合的另一个好处是它提供了对存在磁盘上的任何电影在磁盘发生不工作时的快速备份。一个典型的系统将保持一个“空闲”磁盘,这样在一个盘单元故障时可以把从电影从磁带上重新装入。一般这将与一个RAID和类RAID的系统相结合。B2.磁盘存储系统当对视频流的需求达到一个更高水平时,把整个电影存在盘就变得更为有效,这省却了把视频数据不断地从磁带上移到磁盘上需要的性能开销。一个典型的系统仍将包括一个存在磁带上的电影库,因为一般存在库里的电影数目比任何时间正在播出的数目要大数十倍到数百倍。当用户请求一个特定电影时,它的各段便装入磁盘存储结点16并从那儿开始。
当大量用户要求看同一部电影时,保持电影在磁盘上是有利的。这些电影一般是本周的“热门”电影,并在看电影的高峰时间之前预先从磁带装入磁盘。这是为了减少高峰时间系统的工作负担。B3.来自高速缓存的电影随着对“热门”电影的需求的增长,媒体流分送器10通过一个MRU算法决定把关键电影移入高速缓存。这需要相当大的高速缓存,但是以费用与活跃流的数量的比率来说,高速缓存支持的高容量可以降低媒体流分送器10的总体费用。
因为视频数据的本性以及系统总是率先知道哪个片子正在播放和下一步需要什么数据、要多长时间这一率实,所以采取了一些方法来优化对高速缓存、内部缓冲器、磁盘存储器、磁带装入机、总线性能等等的使用。
控制分布在所有存储介质上的内容的放置和分布的算法使得等时数据可以分送给一个很广泛的带宽需求。因为等时数据的分送是基本上100%可预测的,所以这个算法与传统的那些用于计算机工业的其它部门的、对用户访问的数据的高速缓存不总是可预测的算法大为不同。C.媒体流分送器数据流(data flow)结构如上文指出,媒体流分送器10分送视频流到多种输出,例如通过诸如LAN,ATM等的网络连接的电视机与机顶盒。为满足对存储容量和同时的流的数目的需求,最好使用包含多个存储和通信结点的分布式结构。数据存在存储结点16,17上,并由通信结点14分送。一个通信结点14从适当的存储结点16,17获得数据。控制结点18提供单一的系统映象给外部世界。这些结点由交叉连接低延迟开关12连接。
数据率和要分送的数据对每个流都是可预测的。本发明利用了这种可预测性而构造了一个数据流结构,它充分利用了资源并保证在任何阶段每个流的数据在需要时都可得到。
存储结点16、17与通信结点14之间的数据流可用几种不同方式建立。
一个通信结点14一般负责分送多个流。可能会出现对这些流中的每一个的数据的请求,所请求的数据可能来自不同的存储结点16、17。如果不同的存储结点同时试图发数据给同一个通信结点,那么将只有一个存储结点能够发送数据,而另外的存储结点将被阻塞。阻塞会造成这些存储结点试图重发数据,而降低了开关的利用并造成了从存储结点发送数据到通信结点所需时间的巨大差别。在本发明中,在不同的存储结点16、17之间不存在对一个通信结点14的一个输入端口的竞争。
所需的缓冲器数量可以这样确定通信结点14确定发送一个请求给存储结点16、17和接收数据的所需的平均时间。该时间是把发送一个请求给存储结点的时间和接收到应答的时间与存储结点处理该请求所需时间相加来确定的。而存储结点是通过把从磁盘读数据所需的平均时间与处理该请求而带来的延迟相加来确定处理这一请求所需的平均时间的。这就是处理请求的延迟。所需的缓冲的数量是以流的数据率覆盖这一延迟所需的存储器。下面描述的解决方案利用了媒体流分送器环境的特殊情况来减少延迟并因此减少所需的资源。延迟的减少是通过在数据的每个阶段使用刚好准时调度算法(例如在存储结点和通信结点内),并结合对来自前一阶段的数据的请求的预测来实现的。
存储结点16,17对一个通信结点14的输入端口的竞争是通过以下两点来消除的1)一个存储结点16,17只在收到一个特定请求时才发送数据给一通信结点14。
2)一个通信结点14把要从存储结点读出数据的请求串行排列,这样在任一时刻都只会出现一个从通信结点14接收数据的请求,这不依赖于通信结点14正在分送的流的数目。
如上面指出,减少延迟依赖于在每个阶段使用刚好准时调度算法。其基本原则是在一个流的数据流动的每个阶段,数据在对它的请求到达时已经准备好。这减少发送请求和执行任何数据传输所需的延迟。这样,当控制结点18向存储结点16发送一个对一个特定流的数据的请求时,存储结点16几乎可以立即响应该请求。这一特性对于上述解决竞争问题的方法很重要。
因为在媒体流分送器环境中对数据的访问是串行的,而且一个流的数据率是可预测的,所以一个存储结点16可以预先知道下一个对一特定流的数据的请求什么时候需要。响应请求而供应的数据的标识也是知道的。存储结点16还知道数据存在哪里以及所期待的对其它流的请求。有了这个信息和所预期的处理一个读盘请求的时间,存储结点16调度一个读操作,使得数据刚好在来自通信结点14的请求到达前准备好。例如,如果流数据率为250千字节/秒,一个存储结点16包含着一个视频的每个第四段,那么对该数据流的数据的请求将每4秒到达一次。如果处理一个读请求的时间是500毫秒(必须有信心让读请求在500毫秒之内完成),那么请求的时间被定在来自通信结点14的请求的预定接收时刻的至少500毫秒以前。C1.控制结点18的功能控制结点18的功能是为媒体流分送器10和外部世界之间提供控制流的接口。它还给外部世界表现了一个单一的系统形象,即便媒体流分送器10本身是以一个分布式系统实现的。控制结点的功能是由一个定义的应用程序接口(API)实现的。API提供了在媒体流分送器10中产生视频内容的函数以及诸如播放/录制视频数据的实时函数。控制结点18把播放或停止视频的实时请求传送给通信结点14。C2.通信结点14一个通信结点14有下列线程(thread)(在同一进程中)致力于处理一个实时视频接口一个线程处理连接/断开请求,一个线程处理播放/停止和暂停/继续请求,一个线程处理跳跃请求(向前或向后搜索)。另外它有一个输入线程负责从存储结点16读出一个流的数据,以及一个输出线程负责写数据到输出端口。
图3示意出一个通信结点14中的一个数据流结构,用于在播放一个视频时处理数据。该数据流结构包括一个输出线程100来从一个存储结点16接收数据。输入线程100把从存储结点接收数据串行化,以便在任何时刻都只有一个存储结点在发送数据。输入线程100保证当一个输出线程102需要从一个缓冲器中写一个流时该缓冲器已经充满了数据。另外还有一个调度函数104,它调度对流的输入输出操作。该函数被输入线程100和输出线程102二者使用。
每一个线程都处理一个请求队列。输出线程102的请求队列106包含识别流和指向一个需要清空的相关缓冲器的请求。这些请求按照它们需要被写入视频输出接口的时间来排列。当输出线程102清空了一个缓冲器时,它把它标记为空并调用调度函数104把在一个输入队列108中的对流的请求排队送给输入线程(以把缓冲器填满)。输入线程100的队列108也是按照缓冲器需要被填满的时间的顺序来排列的。
输入线程100也处理按请求时间排列的请求队列108。它的任务是从一个存储结点16填满缓冲器。对它的队列中的每一个请求,输出线程100都要进行下列操作。输入线程100确定存有这个流的下一段数据的那个存储结点16(一个视频流的数据最好是分条分布在若干个存储结点上)。然后输入线程100发送请求给所确定的存储结点(使用通过开关12的消息)来请求流的数据,然后等待数据到来。
该协议保证在任一时刻只有一个存储结点16发送数据给一个特定的通信结点14,那它消除了如果存储结点异步地发数据到一个通信结点14而带来的冲突。当所请求的数据从存储结点16到达时,输入线程100把缓冲器标记为满并调用调度函数104来缓冲一个到输出线程102来清空这个缓冲器的请求(基于流的数据率)。C3.存储结点16图4示意出存储结点16的结构,以便数据流(data flow)支持对一个流(stream)的播放。存储结点16有一个包含视频数据的缓冲池。它对每一个逻辑盘驱动器有一个输入线程100,和一个输出线程112,后者通过开关矩阵12写数据到通信结点14。它还有一个调度函数114由输入输出线程110和112使用,来调度操作。它还有一个消息线程116,它处理来自通信结点14的对数据的请求。
当从一个通信结点14收到一条请求数据的消息时,消息线程通常找到已经被缓冲的所请求的数据,并把请求(队列118)排队送到输出线程。请求是按时间顺序排列的。输出线程112将清空这个缓冲器并把它加到空闲缓冲器表中。每个输入线程110有它们自己的请求队列。对于每一个在相关的盘驱动器上有视频数据的活跃流都保持一个按请求时间顺序排列的(基于数据速率,数据分条的程度)队列102以填充下一个缓冲器。线程取队列120中的第一个请求,把它与一个空闲缓冲器相联,并发布I/O请求用磁盘驱动器来的数据填充这个缓冲器。当缓冲器填满时,它被加到满缓冲器的表中。正是这个表在收到对流数据的请求时被消息线程116检查。当从一个通信结点14收到一条数据的消息而所需的缓冲器却不满时,这被认为是一次错过最后期限。C4.恰好准时调度(JUST—IN—TIME SCHEDULING)在通信结点14和存储结点16中都使用一种刚好准时调度技术。该技术使用下列参数bc=在通信结点14的缓冲器大小;bs=在存储结点16的缓冲器大小;r视频流数据率;n=包含视频流的数据视频条的数目;sr=条数据率;以及sr=r/n 。
所用的算法如下(1)sfc=在通信结点对一个流的请求的频率=r/bc;以及(2)dfc=在存储结点的读盘请求的频率=sr/bs视频数据的“分条”将在后面的第H章详述。
用一个上述表达式确定的频率来调度请示,并使得它们在需要数据之前完成。这是通过在开始播放一个视频流时用数据“填满”数据管道来实现的。
对sfc和dfc的计算是在连接时进行的,在播放流的通信结点14和包含视频数据的存储结点16中都进行。频率(或其倒数,周期)被用来调度从存储结点16的磁盘的输入(见图4)以及对通信结点14中的端口的输出(以及从存储结点的输入)(见图3)。刚好准时调度算法的例子从分布在四个存储结点上的视频条以2.0兆位/秒(250,000字节/秒)的速率播放一个流。再假设在通信结点的缓冲器大小为50,000字节,而在磁盘结点的缓冲器为250,000字节。还假设数据被以250,000字节/秒的段来分条。
刚好准时算法中各参数的值如下bc=250000字节(在通信结点14的缓冲器大小)bs=250000字节(在存储结点16的缓冲器大小)r=250000字节/秒(流数据率)n=4(流的视频所分条的数目)sr=r/n=62500字节/秒或250000/4秒,即每4秒250000字节;sfc=r/bc=1/秒(在通信结点14的请求频率)dfc=r/bs=1/秒(在存储结点16的请求频率)。
负责播放流的通信结点14以1/秒的频率或者说以1秒的周期调度输入输出请求。假设通信结点14有两个缓冲器分配给这个流,通信结点14保证在开始输出视频流之前将这两个缓冲器填满。
在连接的时候通信结点14将向所有四个包含视频数据的一个条的存储结点16都发送消息。前两个存储结点将预期对来自该条的第一个段的请求并调度磁盘请求来填满缓冲器。通信结点14将调度输入请求(见图3)来读取前两个段到两个缓冲器中,每个有25000字节。到一个播放请求到来时,通信结点14将首先确认两个缓冲器是满的,然后通知所有的存储结点16播放就要开始。随后开始播放流。当第一缓冲器已经输出时(以2兆位/秒或250000字节/秒的速率耗时1秒),通信结点14向一个存储结点16请求数据。然后通信结点以1秒间隔依次向每个存储结点请求数据,即,它将以4秒的间隔从一个特定存储结点请求数据。它总是每次请求250,000字节的数据。对一个通信结点向一个存储结点16请求数据的频率的计算是在连接的时候在由通信结点14计算的。
存储结点16如下面这样预测对流的数据的请求。包含第3个条的存储结点16(见后面第H章)可以在开始播出1秒后期待对下一个250000字节的段的请求,以后每4秒一次。包含第4个条的存储结点16可以在开始播出2秒后期待一个请求,以后每4秒一次。包含第2条的存储结点16可以在开始播出4秒后期待一个请求,以后每4秒一次。就是说,每个存储结点16从某个开始时刻以每4秒250000字节的频率来调度从磁盘的输入(如上所述)。调度是在存储结点16内在收到一个播放命令后以及在流的一个缓冲器被输出后进行的。对请求频率的计算是在接到连接请求的时候进行的。
在通信结点14和存储结点16使用不同大小的缓冲器也是可能的。例如在通信结点14的缓冲器大小为50000字节,而在存储结点16的缓冲器大小为250000字节。在这种情况下,在通信结点14的请求频率将为(250000/50000)5/秒或者说每隔0.2秒,而在存储结点16的频率仍为1/秒。通信结点14从包含第一条的存储结点读头两个缓冲器(100000字节)(注段大小为250000字节而包含第一段的存储结点16将在连接时调度从磁盘的输入)。当播放开始时,通信结点14通知存储结点16这件率并输出第一个缓冲器。当该缓冲器变空时,通信结点14调度下一个输入。缓冲器将每0.2秒空一次,通信结点14就以这个频率请求从存储结点16的输入,并以同样频率调度输出。
在此例中,通信结点16可以预计5个请求以0.2秒的间隔到达(除了已经读出100000字节的第一个段,这样开始时三个请求将在播出开始后每4秒来一次,即下一个序列的五个请求(每个50000字节)将在前一序列中的最后一个请求的4秒以后到达)。由于在存储结点的缓冲器大小为250000字节,所以存储结点16将每4秒一次调度从磁盘输入(恰好与上例相同)。C5.一个播放动作的细节下述步骤跟踪一个流的播放动作的控制和数据流。图5示出了设置一个视频的播放的步骤。这些步骤以时间顺序排列。1.用户调用一个命令来为已预先装入的一个特定视频设置一个端口。该请求送到控制结点18。2.控制结点18的一个线程接收这个请求和一个VS—CONNECT函数。3.控制结点线程为该视频打开一个目录项,并用分条化文件的信息为该视频设置一个内存描述符。4.控制结点18为该请求分配一个通信结点14以及在该结点上的一个输出端口。5.然后控制结点18发一个消息给所分配的通信结点14。6.通信结点14的一个线程从控制结点18收到这个消息。7.通信结点线程向包含分条文件的存储结点16发送一个打开请求。8,9.打开请求所发给的每一个存储结点16的一个线程接收这一请求并打开所请求的分条文件以及分配所需资源,还调度从磁盘的输入(如果该分条文件包含头几个段)。10.存储结点线程向通信结点14发回一个应答还有该分条文件的句柄(标识符)。11.通信结点14中的线程等待来自所有涉及到的存储结点的应答,在接收到成功的应答时就为该流分配资源,包括设置输出端口。12.然后通信结点14调度输入以填满视频数据管道。13.然后通信结点14向控制结点18发回一个应答。14.控制结点线程在从通信结点14收到一个成功的应答后返回一个流的句柄给用户,用于与该流的这一实例有关的后续请求。在一个视频流被成功地设置之后,当收到一个播放请求时所采取的动作的步骤以时间顺序排列如下,并显示在图6中1.用户发布播放命令。2.控制结点18的一个线程接收该请求。3.控制结点18的线程确认该请求是针对已建立的一个流的,然后发一个播放请求给所分配的通信结点14。4.通信结点14中的一个线程接收播放请求。5.通信结点14发送播放请求给所有涉及的存储结点16,这样它们可以预测后面对该流的请求来调度它们的操作。一个“涉及”的存储结点就是存有所关心的视频图象的至少一条的结点。6.每个所涉及的存储结点16的一个线程接收该请求并制订为将来对该流的请求服务的时间表。每一个涉及的存储结点16向通信结点14发回一个应答。7.通信结点线程保证流水线是准备好的(预先装入了视频数据)并且启动流的输出。8.然后通信结点14向控制结点18发回一个应答。9.控制结点18向用户发回一个应答告诉流正在播出。输入和输出线程继续分送视频图象到指定的端口直到收到一个停止/暂停命令或播出完毕。D.媒体流分送器的用户和应用接口媒体流分送器是一个被动服务器,当从一个外部控制系统收到控制命令时执行视频服务操作。图7显示了媒体流分送器10的应用的一个系统配置,并表明了系统中出现的接口。媒体流分送器10给用户和应用程序提供了两级接口以控制其操作一个用户接口(图7中的(A));以及一个应用程序接口(图7中的(B))。
在客户控制系统中提供了这两级接口,它通过一个远程过程调用(RPC)机制与媒体流分送器10通信。通过在客户控制系统中提供接口而不是在媒体流分送器10中提供,从而获得了应用软件与媒体流分送器的分离。这方便了媒体流分送器10的升级或替换,因为这不需要改变或替换在客户控制系统上的应用软件。D1.用户通信媒体流分送器10提供了两种用户接口一个命令行接口;和一个图形用户接口。D1.1命令行接口命令行接口在用户控制台或界面显示一个提示(图1中的65,66)。在命令提示后面用户打入一个命令,前面是命令关键字后面跟着参数。命令执行后,接口再次显示提示并等待下一个命令输入。媒体流分送器命令行接口特别适于下面两种操作批处理控制批处理控制就是启动执行一个包含一系列视频控制命令的命令行脚本。例如在广播工业中,可以率先准备好一个命令脚本,包含预告录制的定好时间的节目在一个较长时间内播放。在定好的开始时刻,用一个批处理命令执行这个命令脚本,并开始广播,而不再需要操作员的干预。
自动控制自动控制就是执行一个由程序产生的命令序列来更新/播放存在媒体流分送器10中的素材。比如一家新闻社可能每天都给媒体流分送器10装入新素材。一个管理这些新素材的应用控制程序可以产生媒体流分送器命令(例如装入、删除、卸下)来用这些新素材更新媒体流分送器10。所产生的命令可以经管道送到命令行接口并付诸实施。D1.2图形用户接口图8是一个媒体流分送器的图形用户接口的例子。该接口模仿录相机的控制面板,有诸如Play(播放),Pause(暂停),Rewind(倒带),Stop(停止)的控制控钮。另外,当一个操作涉及由用户选择时(例如装入需要用户来选择一个视频图象来装入),它还提供选择面板。图形用户接口对直接用户干预特别有用。
图形用户接口中还包括一个“Batch”(批处理)按钮130和一个“Import/Export”(出口/进口)按扭132。其功能在下面描述。D2用户函数媒体流分送器10提供三种类型的用户函数进口/出口;类似录相机的播出控制;以及高级用户控制。D2.1进口/出口(Import/Export)进口/出口函数是用来移动视频数据进出媒体流分送器10的。当一个视频从客户控制系统移入媒体流分送器10(进口)时,视频数据的源被指定为客户控制系统的一个设备或一个文件。视频数据的目的地用媒体流分送器10中的一个唯一的名字来指定。当一个视频从媒体流分送器10移出到客户控制系统时(出口),视频数据的源由它在媒体流分送器10中的名字指定,视频数据的目的地由客户控制系统中的一个文件或设备指定。
在进口/出口类的用户函数中,媒体流分送器10还提供一个“删除”函数还清除一个视频,以及一个“取得属性”函数来获取关于所存的视频的信息(例如名字,数据率)。
为了通过图形用户接口来调用进口/出口函数,用户揿动“进口/出口”软按钮132(图8)。这带来一个新的面板(未示出),其中包含“Import”(进口),“Export”(出口),“Delete”(删除),“Get Allribute”(取得属性)按钮来调用各自的函数。D2.2类似录相机的控制媒体流分送器10提供了一组类似录相机的播出控制。图8中的媒体流分送器图形用户接口显示下列功能是具备的Load(装入),Ejecte(弹出),Play(播放),Slow(慢速),Pause(暂停),Stop(停止),Rewind(倒带),Fast Forward(快进)和Mute(消声)。这些功能是通过揿动图形用户接口上相应的软按钮来启动的。媒体流分送器命令行接口提供了一组类似的功能Setup(建立)一为一个指定输出端口建立一个视频。相当于把录相带装入录相机中。Play(播放)—启动一个已被建立的视频的播出,或者恢复被暂停的视频的播出。Pause(暂停)一暂停播放一个视频。Detach(断开)—相当于把录相带从录相机中弹出。Status(状态)—显示端口的状态,例如哪个视频正在播出,已经播放的时间,等等。D2.3高级用户控制为了支持特别的用户要求,例如广播工业本发明还提供了几种高级用户控制Play list(播出表)—建立在一个端口播出的多个视频及其播出次序。Play length(播出长度)—限制播出一个视频的时间。Batch Operation(批处理操作)—完成存在一个命令文件中的一系列操作。
播出名单和播出长度控制是通过在图形用户接口中的一个“装入”软按钮134来实现的。每一个“建立”命令将指定一个视频图象加入到一个特定端口的播出名单中。它还指定视频图象将要播出的时间。图9显示了在图形用户接口上按动了“装入”软按钮134后出现的面板,用它来选择一个视频图象加到播出名单中以及指定其播出时限。当用户按动“文件”框136中的一个文件名时,其名字便进入“文件名”框138中。当用户按动“加入”按钮140时,“文件名”框138中的文件名便与其时限一起增添到“播出表”框142中,并显示当前的播出表(以及播出表中的每一个视频图象的时限)。
批处理操作是通过使用图形用户接口中的一个“批处理”软按钮130来实现的(见图8)。
当“批处理”软按钮被激活时,便显示一个批处理选择面板供用户选择或输入命令文件名(见图10)。按下批处理选择面板上的“执行”按钮便开始执行选定的命令文件中的命令。图10是图形用户接口中的“批处理”和“执行”操作的一个例子。例如用户首先在C/batchcmd目录下的文件“batch2”中创建了一个命令脚本。然后用户按动图8所示的图形用户接口中的“批处理”软按钮130来打开批处理选择面板。下一步,用户按动批处理选择面板中的“目录”框146中的“C/batchcmd”。结果在“文件”框148中便显示了一列文件。按动“文件”框148中的“batch2”行,把它装到“文件名”框150中。最后用户按动“执行”按钮144,便顺序执行存在文件“batch2”中的各条命令。D3.应用程序接口媒体流分送器10提供了上面提到的应用程序接口(API),以便应用控制程序与媒体流分送器10接口交互并控制它的操作(再次参考图7)。
API包含基于远程过程调用(RPC)的过程。应用控制程序通过过程调用来启动API函数。过程调用的参数指定要执行的函数。应用控制程序调用API函数时不考虑媒体流分送器10的逻辑和物理位置。提供视频服务的媒体流分送器10的标识是在客户控制系统启动时或者可以选择在应用控制程序初始化时确定。一旦确立了媒体流分送器10的标识,过程调用便被导向正确的媒体流分送器10以获得服务。
除了下面指出的情况,API函数是同步处理的,即一旦一个函数调用返回到调用者,函数便已经完毕而在媒体流分送器10不再需要其它处理。通过把API函数配置为同步操作,避免了上下文切换,异步信号处理和反馈的附加的处理开销。由于严格的实时要求,这一性能对于视频服务器应用是重要的。
API函数的处理是接收到的请求的顺序来执行的。这保证了用户操作以正确顺序执行。比如一个视频图象必须先连接(建立)然后才能播出。又如改变一个“播出”请求与随后的一个“暂停”请求的次序将给用户带来完全不同的结果。
一个VS—PLAY函数启动视频播出并立即返回控制给调用者(不必等待视频播出完毕)。这种结构的道理在于既然播放一个视频图象的时间一般较长(几分钟到几小时),而且难以预料(可能有暂停或停止命令),让VS—PLAY函数异步,便可以释放资源,不然这些资源就会在不可预测的长时间内被占用。
在视频播出完毕后,媒体流分送器10产生一个异步呼叫到一个由应用控制程序指定的系统/端口地址,以通知应用控制程序这个视频完毕率件。系统/端口地址是在应用控制程序调用VS—CONNECT函数来连接视频时确定的。应当指出VS—PLAY的回调系统/端口地址是在独立视频级上指定的。这意味着应用控制程序有把视频完毕信息导向任何控制点的自由。例如一个应用可能想要用一个中央系统/端口来处理多个或全部客户控制系统的视频完毕消息。在另一应用中,可指定多个不同的系统/端口地址来处理一个客户控制系统的视频完毕消息。
依靠这种API结构,使得媒体流分送器10可以支持多种不同的硬件和软件平台的并发的客户控制系统,并有效地处理同步和异步的操作,同时保证操作请求的正确顺序。例如,媒体流分送器10可以使用在PS/2系统上运行的IBMOS/I操作系统,而一个客户系统可以使用在RS/6000系统上运行的IBM AIX操作系统(IBM,OS/2,PS/2,AIX,RS6000都是国际商用机器公司的商标)。D4.客户/媒体流分送器的通信一个客户控制系统和媒体流分送器10之间的通信是通过诸如一种已知类型的远程过程调用(RPC)机制来实现的。图11显示了一个客户控制系统11和媒体流分送器10之间的通信的RPC结构。在调用媒体流分送器函数时,客户控制系统11是作为RPC客户而媒体流分送器作为RPC服务器。这由图11中的(A)指出。但是对于一个异步操作,即VS—PLAY,它的完毕造成媒体流分送器10产生一个呼叫给客户控制系统11。在这种情况下,客房控制系统11是作为RPC服务器,而媒体流分送器10是RPC客户。这由图11中的(B)指出。D4.1客户控制系统11在客户控制系统11中,用户命令行接口由三个内部并行进程(线程)组成。第一个进程翻译用户的命令行输入并通过调用API函数执行所要求的操作,结果造成对媒体流分送器10的RPC调用(图11中的(A))。该进程还跟踪在多个输出端口建立并播放的视频的状态。第二个进程周期性地检查每个视频的播放所消耗的时间,并与各自的时限相对照。如果一个视频到了时限,该视频便被停止并断开,并启动同一个输出端口的等待队列中的下一个视频(如果有的话)。客户控制系统11中的第三个进程是作为一个RPC服务器来接收来自媒体流分送器10的VS—PLAY的异步结束通知(图11中的(B))。B4.2媒体流分送器10在媒体流分送器10的启动过程中,两个并行的进程(线程)被调用以便支持客户控制系统11和媒体流分送器10之间的RPC。第一个进程作为来自客户控制系统11的API函数调用的一个RPC服务器(图11中的(A))。第一个进程接收RPC调用并分派适当的过程执行所请求的函数(例如VS—CONNECT,VS—PLAY,VS—DISCONNECT)。第二个进程是作为一个RPC客户来呼叫适当的客户控制系统地址以通知该应用控制系统异步结束事件。该进程自我阻塞以等待一个内部管道,该管道由其它负责视频播出的进程写入。当后者到达一个视频终点或遇到异常终止条件时,它向管道写入一个消息。阻塞的进程读到这一消息并进行一个RPC调用(图11中的(B))给适当的客户控制系统端口地址,这样客户控制系统就能更新其状态并采取相应的动作。E.媒体流分送器内存组织和针对视频分送的优化本发明的一个方面是提供集成的机制以裁剪高速缓存的管理和相关的I/O操作以适应视频分送环境。现在详细描述本发明的这一方面。E1.先有技术的高速缓存管理先有技术的高速缓存管理机制被嵌入高速缓存控制器和操作系统的文件子系统中。它们设计为通用的,而不是专门针对视频分送的需要。
图12说明了一种可能的途径来配置传统的高速缓存管理机制用于视频分送。该技术利用两个磁盘文件160,162之间的一个视频分裂(因为对一个文件就过大了),一个包含文件系统166、一个媒体服务器168和一个视频驱动器170的处理器。该图还说明了两个视频适配器端口172,174用于两个视频流。还说明了一个数据流,把磁盘文件160的一个段读入主存,并随后把数据写到第一视频端口172,以及另一个数据流,读入同一个段并把它写入第二视频端口174。图12用来说明先有技术带来的问题,而被本发明的媒体流分送器10提出并解决。
图12描述了步骤A1—A12A1.媒体服务器168调用文件系统166来读一个段Sk进入视频驱动器170的一个缓冲器中。A2.文件系统166读Sk的一部分进入文件系统166的一个高速缓存中。A3.文件系统166把高速缓存复制到视频驱动器170的一个缓冲器中。步骤A2和A3多次重复。A4.文件系统166调用视频驱动器170把Sk写到视频端口1(176)。A5.视频驱动器170把Sk的一部分复制到视频驱动器170的一个缓冲器中。A6.视频驱动器170把缓冲器写入视频端口1(176)。步骤A5和A6多次重复。
步骤A7到A12以类似方式工作,只是端口1变成端口2。在端口2需要时如果Sk的一部分正好在文件系统166的高速缓存中,就可以跳过步骤A8。
可以意识到视频分送涉及大量的数据通过多个数据流传输。其总体使用模式不符合两种传统的优化缓存的模式(随机的和顺序的)中的任何一种。如果选择随机方式,大多数高速缓存将可能包含最近被读过的视频段数据,但是在它们用完之前不会有视频流排队读它们。如果选择顺序方式,最近用过的高速缓存被首先重复利用,所以从文件系统的高速缓存中找到需要的段的可能性就更小了。如前面说过的,视频分送的一个重要因素是数据流等时分送,就是说不能有令观众或用户感觉不愉快的停顿和间断。先有技术的高速缓存机制,正如刚刚指出的,不能保证把一个视频流等时地分送到一个用户。
图12说明的附加问题是a.磁盘和视频端口I/O是以相对小的段来进行,以满足一般文件系统的要求。这相对于视频段那样大小的段,需要更多处理时间,磁盘查找开销和总线开销。b.在文件系统高速缓存和媒体服务器缓冲器之间,以及媒体服务器缓冲器和视频驱动器缓冲器之间复制数据所需的处理时间,是一种最好能消除的负担。c.使用两个视频缓冲器(即172,174)在同一时刻包含同一视频段的多个拷贝是对主存的浪费。当同一数据既存在文件系统高速缓存中也存在视频驱动器缓冲器中,就造成了更大浪费。E2.视频优化高速缓存管理按照本发明的这一方面的高速缓存管理操作有三个基本方面各个流之间共享段大小的高速缓存;预见性地高速缓冲;同步化以优化高速缓冲E2.1各个流之间共享段大小的高速缓存视频是以固定大小的段来存储和管理的。各段顺序编号,使得比如说第5段所存的一个视频图象的那部分比第6段所存的那部分更接近这个视频图象的开头。段的大小被适当选择以优化磁盘I/O,视频I/O,总线的使用和处理器的使用。一个视频的一段有固定的内容,只由视频名和段号决定。所有到磁盘和视频输出的I/O,以及所有的高速缓存的操作,都是按段边界对齐来进行的。
本发明的这一方面有两种形式,取决于下层硬件是否支持在磁盘和一个通信结点14中的视频输出卡之间的直接的对数据流的对等操作(peer—to—peer operation),而不需要通过通信结点中的高速缓存传递。对于对等操作,高速缓冲是在磁盘存储单元16进行的。对于不支持对等操作的硬件,数据以段大小的块为单位被直接读进页对齐的连续的高速缓存(在通信结点14内),以尽量减少I/O操作和数据移动(见下面的F章视频优化数字存储器分配)。
数据保持在同一位置,并直接从这一位置写出,直到这个视频段不再被需要为止。在这一视频段被缓冲期间,所有需要输出这一视频段的视频流都访问同一块高速缓存。这样,视频段的同一个拷贝可以为许多用户使用,从而避免了读取同一个视频段的其它拷贝所需的额外对I/O、处理器和缓存的使用。对于对等操作,剩余的I/O操作的一半和几乎全部的处理器和主存的使用都在通信结点14得以避免。
图13说明了在设有对等操作的系统的情况下本发明的一个实施例。视频数据在磁盘存储结点上进行了分条,使得编号为奇数的段在第一磁盘存储结点180上,而编号为偶数的段在第二磁盘存储结点182上(见下面的第H章)。
这一配置的数据流也在图13中示出。可以看出,段Sk从磁盘182读到通信结点186中的高速缓冲184中,然后写到视频输出端口1和2。Sk视频数据段用一个I/O操作直接读到高速缓存184中,然后被写到端口1。下一步Sk视频数据段用一个I/O操作从高速缓冲器184写入端口2。
可以明白,图12所描述的传统方法的所有问题都被图13说明的系统解决了。
图14说明了包含支持在磁盘存储结点和视频输出卡之间的对等操作的一种配置的数据流。一对磁盘驱动器190和192包含一个分条的视频图象,后者被直接供给一对视频端口194,196,而无须通过一个中间通信结点14的主存来传递。
这一配置的数据流是把段Sk从磁盘192直接通过磁盘高速缓冲198读到端口1(用一个I/O操作)。
如果一个调用接下来读段Sk到端口2,段Sk从磁盘高速缓冲198直接读入端口2(用一个I/O操作)。
当读入磁盘高速缓存198的用于端口1的数据在向端口2写时依然在那里,一种对存储器总线、处理器资源的最好的利用就是把视频段传到端口1和2。
有可能把对等操作与主存高速缓冲机制结合起来,例如对只向通信结点14的一个端口播出的视频图象使用对等操作,对于向通信结点14的多个端口播出的视频图象则在通信结点14内缓冲。
适当地选择一种划分磁盘存储结点和通信结点的缓冲职责的策略,以便能在给定的硬件配置下支持最大数量的视频流。如果要支持的流的数量已知,就可以确定高速缓存的数量和放置。E2.2预见性高速缓冲(Predictive Caching)一种预见性高速缓存机制迎合了极为适合视频分送的缓存策略。视频图象一般是有可预见的。一般它们从开头开始播放,以一个固定速率播放一段预先确定的较长时间,只有到达末尾时才停止。媒体流分送器10的高速缓存方法利用了这种可预见性来优化在任一时刻被缓冲的视频段的集合。
这种可预见性被用来调度填满一块高速缓存的一个读操作,还用来驱动收回高速缓存的算法。那些内容在到时之前预计不会用得着的缓冲器被立即收回,释放空同以备更高优先级的使用。那些内容在合理时间内用得着的缓冲器不被收回,即使距上次用它已经很久了。
更具体地,给定视频V1,V2,…,和流S1,S2…,播放这些视频,每个流Sj播放一个视频V(Sj),预计的写V(Sj)的第k个段的时间是线性函数t(sj,k)=a(Sj)+r(Sj)k其中a(Sj)取决于开始时间和开始段号,r(Sj)是播放一个段用的固定时间,t(Sj,k)是设定的播放流Sj的第k段的时刻。
这一信息被用来调度填充一块高速缓存的读操作,还用来驱动重复利用高速缓存的算法。高速缓存的管理算法的一些操作实例如下例A一块高速缓存包含一个预计不会被任何一个正在播出的视频流使用的视频段,这一块缓存在重复利用任何预计要被播放的缓存之前首先被重复利用。满足这一条约束后,视频的播出频率和段号被用作衡量该视频段保持在高速缓存中的优先级的度量。这一组中最高的保持优先级赋予在一个频繁播出的视频中先出现的视频段。例B对一块包含有预计要播放的视频段的高速缓存来说,下一预计播出的时间和剩下的要播放该视频段的流的数量被用作确定保持这个视频段在缓存中的优先级的度量。这些度量实际上把一块高速缓存的保持优先级设置为收回高速缓存进行的I/O的预计数目(对任何视频段),与把它保留下来所进行的I/O的预计数目的差。
例如,如果V5正在S7上播放,V8正在S2和S3上播放,其中S2在S3后面5秒,V4正在S12到S20上播出,其中每一个在下一个后面30秒。
那么包含已经被S7用过的V5的数据的缓冲器被首先收回,接着是包含已经被S2用过的V8的数据的缓冲器,接着是包含已被S12用过的V4的数据的缓冲器,接着是其余的具有最低保持优先级的缓冲器。
高速缓存管理算法还为一些特殊情况提供变通处理,例如连接操作(可能预测一个视频段将在不久的将来播出,但不知道精确的时间)和停止操作(那时必须修改先前的预测)。E2.3使流同步以优化高速缓冲把请求同一给定视频段的流聚集在一起是比较理想的,这样减少了包含那一段的那块高速缓存保存在存储器的时间,从而腾出更多的系统容量给其它视频流。对于视频播出,通常在各段播放的速率上没有什么灵活性。但是在某些视频分送的应用中播放的速率是灵活的(就是说视频和声频可以略微加速或减速而不至于引起人的反感)。另外视频的分送可能为除了让人立即观看之外的其它目的。当允许速率有一定变化时,在前面输出的流(沿时间方向)以最低允许的速率播出,而在后面输出的流(沿时间方向)以最高允许的速率播出,以便缩小流之同的间距并减少各段必须留在缓冲器中的时间。
在连接和播放操作期间也考虑了把使用同一视频图象的流聚集起来。例如,VS—PLAY—AT—SIGNAL可以用来在同一时刻在多个流上开始播出一个视频。这提高了聚集,腾出了更多的系统资源给其它流,增加了系统的有效容量。更具体地,通过推迟一个流一小段时间以便与第二个流一致,聚集法使得高速缓存中的段的一个拷贝能用于两个流,因而节约了处理资源。F.视频优化数字存储器分配数字视频数据的属性与那些普通数据处理数据的不同之处在于前者是非随机的,是顺序的,大量的,而且是时间临界(timecritical)而非内容临界(content critical)的。数据的多个流必须以很高的比特率分送,需要把所有的不必要的开销在数据路径上减少到最低。需要仔细地管理缓冲器来尽量提高媒体流分送器10的效率和容量。存储器的分配,回收和访问是这一过程的关键因素,不恰当地使用会造成存储器碎片,效率降低,以及视频数据的延迟或破坏。
本发明的媒体流分送器10使用一个内存分配过程,它允许高层应用为数字视频数据分配和回收非可交换的、页对齐的、连续的存储器段(块)。该过程提供一个简单的高层接口给视频传送应用,并利用低层操作系统模块和代码段以所需要的大小分配存储器块。存储器块是连续的,并固定在物理存储器中,消除了由虚拟内存交换或分页带来的延迟或破坏,以及必须在数据传送软件中实现聚集/分散例程的复杂性。
高层接口还为所请求的内存块返回了多种寻址模式值,从而消除了进行费率的动态地址变换以适应可在媒体流分送器环境中并发操作的不同的存储模型的需要。物理地址以及为多种应用所用的进程线性和进程分段地址可供其它的设备驱动程序直接访问,例如硬盘驱动器。还提供一个回收例程,它返回一个存储器块给系统,消除了碎片问题,因为存储器都是以一个单独的块返回的。F1.内存分配所用的命令1.分配物理存储器分配所请求大小的存储器块,返回一个具有存储器区域的不同存储模式地址的控制块,还有块的长度。2.回收物理存储器返回存储器块给操作系统并释放相关的存储器指针。F2.应用程序接口在系统配置文件中定义了一个设备驱动程序并在系统启动时自动初始化它。然后一个应用打开一个作为伪设备的设备驱动程序并获得它的标号,然后使用这个接口来传递命令和参数。被支持的命令是Allocate Memory(分配存储器)和Deallocate memory(回收存储器),其参数是存储器大小和逻辑存储器地址的指针。一旦物理的存储器块被分配并且其物理地址转换成逻辑地址,这些地址便被设备驱动程序设定了。如果分配失败则返回空。
图15显示了将使用该过程的应用的典型集合。一个32位应用请求缓冲器1的数据,数据被修改然后放进缓冲器2。然后这个缓冲器就可以由一个16位应用使用段地址直接操纵,或者由一个物理设备如硬盘驱动器操纵。通过用这一分配方案来预分配固定的、物理的、连续的缓冲器,使每个应用能用自己本身的直接寻址方法来访问数据,消除了地址翻译和动态存储器分配的延迟。一个视频应用可以用这种方法,通过把数字视频数据从物理盘直接放到缓冲器中来尽量减少数据移动,然后把它直接传送到输出设备,而不必在此过程中把数据多次移动。G.针对视频应用优化的磁盘驱动器视频流被等时地分送到目的地是重要的,即没有能被人眼察觉的运动停顿和能被入耳察觉的声音间断这类延迟。现有的磁盘技术会有周期性动作,例如进行可能导致数据访问中显著延迟的预测性故障分析。尽管多数I/O操作在100毫秒内完成,但100毫秒的周期性延迟是平常的,还可能发生整3秒的延迟。
媒体流分送器10还必须能有数地维持高数据传输率。一个为通用数据存储和检索配置的硬盘驱动器如果不针对视频服务应用进行优化,便会出现内存使用、磁盘缓冲、SCSI总线和磁盘容量的低效率。
根据本发明的一方面,这里用的磁盘驱动器通过优化磁盘参数来加以调整,以平滑又及时地分送大量的数据。这些参数可以在专门做视频服务的硬盘驱动器的生产时设定,或者是能够通过命令机制来设置的变量。
控制周期性动作的参数被设置得尽量减少或者消除延迟。影响缓冲器的使用的参数被设置为允许在一个读或写操作中传送很大数量的数据。影响SCSI总线与处理器总线的速度匹配的参数被调整得使数据传输的开始既不太早,也不太晚。磁盘介质自身以容量和带宽达到最高效率的扇区大小来格式化。为了达到优化物理盘介质用允许的最大物理扇区大小来格式化。这一格式化选项使浪费在扇区间的间隔上的空间达到最小,使设备容量最大,使猝发数据率最大。一个较佳的实现是744字节的扇区。
磁盘可能有相联的缓冲器。在总线可用于传输数据时,该缓冲器用于异步地从磁盘介质读数据。类似地,该缓冲器还用于在传输数据到磁盘介质时异步地保持从总线到达的数据。缓冲器可以分为若干个段,该数量是由一个参数控制。如果段数过多,每个段就太小而不能保存一次传输所需要的数据量。当缓冲器满时,设备必须进行重新连接然后开始传送,如果这时总线/设备未准备好,接下来是循环的延时。在较佳实施中,该值被设置得使任何缓冲器段都至少与数据传输的大小一样,例如设置为一。
在一次读取时,随着一个缓冲器段开始填充,磁盘试图与总线重新连接以进行一次对主机的数据传送。磁盘试图重新连接的那个时刻影响总线利用的效率。总线和磁盘的相对速度决定了在填充操作期间开始向主机传送的最佳时刻。类似地,在写操作时,随着来自主机的数据到达,缓冲器将填满,而且在这一填充过程的某一点,磁盘应当试图与总线重新连接。精确的速度匹配导致SCSI总线上的更少断开/重新选择周期,而得到更高的最大吞吐量。
控制何时试图重新连接的参数叫做“读缓冲器满比率”,和“写缓冲器空比率”。对于视频数据,计算这些比率的较佳算法是256×(瞬时SCSI数据传输率一持续磁盘数据传输率)/瞬时SCSI数据传输率。当前缓冲器满和缓冲器空的比率的较佳值为204。
一些磁盘驱动器的设计需要随着温度的变化周期性地对磁头位置做重新校正。某些这种类型的磁盘驱动器还允许控制是同时对组件中的所有磁头进行热补偿,还是一次对一个磁头进行热补偿。如果一次对所有磁头都进行,在对视频数据的读操作时随后就会发生几百毫秒的延迟。更长的读时间延迟导致需要更大的主存缓冲器来平滑数据流和防止多媒体演示中的人工因素。较佳的方法是对磁头热补偿控制函数进行编程以允许一次对一个磁头进行热补偿。
保存错误记录和进行预测性故障分析可以花几秒钟完成。如果没有非常大的主存缓冲器以平滑延迟和防止多媒体演示中的人工因素,这些延迟对于视频服务器应用来说是不能容忍的。限制空闲时间函数(Limit Idle Time Function)参数可以用来禁止保存错误记录和执行空闲时间函数。较佳的实施是设一个参数来限制这些函数。H.视频数据的数据分条在视频应用中,有从同一数据(例如一个电影)分送多个流的需要。这一要求转化为对以高数据率读数据的需要;就是说,分送一个流所需的数据率乘以同时访问该同一数据的流的数目。传统地,这个问题是通过保存数据的多个拷贝来解决的,这样导致附加的开销。本发明的媒体流分送器10使用了一种技术从数据的一个拷贝服务很多同时的流。该技术考虑到了一个单独的流的数据率和可能同时访问数据的流的数目。
前面提到的数据分条涉及了逻辑文件的概念,其数据被分区存在被称为条的多个文件组成部分中。每个条允许存在于不同的磁盘卷上,因此允许逻辑文件横跨多个物理盘。磁盘可以是本地的或远程的。
当数据被写入逻辑文件时,它被分裂成多个逻辑长度(即段),它们被顺序地放入各条中。如图16所示,一个视频一视频1一的逻辑文件被分段为M个段或块,每一个都有特定大小,例如256千字节,最后一个段可能只是部分填满数据。一个数据段被放进第一条,跟着下一个段被放进第二条,等等。当每一个条都已写入了一个段时,下一个段便写入第一条。这样,如果一个文件分到N个条中,那么条1将包含段1,N+1,2*N+1,等等,条2将包含段2,N+2,2*N+2,等等,依此类推。
一种相似的数据分条已知被用于RAID方案的数据处理,其分条的目的是在一个磁盘丢失的情况下保证数据的完整性。这样一个RAID存储系统拿出N个盘中的一个来存储数据恢复时需要用的奇偶数据。媒体流分送器10的磁盘存储结点16组织为一个类RAID结构,但不需要奇偶数据(因为视频数据的拷贝可从磁带存储得到)。
图17说明了这种数据安排的第一个重要方面,即把每个视频图象分裂成数据块或段,它们散布在可用的磁盘驱动器上,使得每个视频图象可以被多个驱动器同时访问而不需要多个拷贝。这样,其思想是一种分条,这不是为了数据完整性和性能这些自身的原因,而是为了并发或带宽的原因。这样,媒体流分送器10把视频图象以播放的段来分条,而不是以字节块,等等。
如图17所示,其中一个视频数据文件1被分为M段,并分裂到四个条中,条1是一个包含视频文件1的段1,5,9等的文件;条2是一个包含视频文件1的段2,6,10等的文件;条3是一个包含视频文件1的段3,7,11等的文件;条4是一个包含视频文件1的段4,8,12等的文件,直到视频文件1的所有M个段都包含在四个条文件之一中为止。
有了所述的分条策略,参数按照下面方法计算,以适应每个单独视频的分条。
首先,段的大小被适当选择以便获得磁盘的合理有效数据率。但是它也不能大到对延迟有不良影响。它还得足够小,能够在内存中缓存/高速缓存。较好的段大小为256千字节,对于数据率在128千字节/秒到512千字节/秒范围内的视频图象它保持不变。如果视频数据率更高,则最好用更大些的段。段的大小依赖于存在同一介质上的视频图象范围内的I/O操作的基本单位。所用的原则是使用包含大约0.5到2秒的视频数据作为段的大小。
下一步确定条的数目,即视频数据所分布的磁盘的数目。这个数目必须足够大,以维持所需的总体数据率,而且是根据一个预计的使用率针对每个视频图象分别计算。更具体地,每个磁盘有一个逻辑卷与之相联。每个视频图象被分割为组元文件(componentfile),组元的数目与所需的条的数目相同,每个组元文件存在一个不同的逻辑卷上。例如,如果视频数据必须以每流250千字节/秒来分送,而且从同一个视频支持30个同时的流,它们以比如15秒的间隔开始,获得总体上至少7.5兆字节/秒的数据率。如果一个磁盘驱动器能支持平均为3兆字节/秒的速率,那么对该视频图象至少需要3个条。
数据从磁盘读出的有效速率受读操作的大小的影响。例如,如果数据以4千字节的块从磁盘读出(从磁盘上的随机位置),有效数据率就可能是1兆字节/秒。而如果数据以256千字节的块读出,则有效数据率可能是3兆字节/秒。但是如果数据以非常大的块读出,缓冲需要的存储器也增加,而且,使用所读数据的延迟也增加,因为操作必须在数据能被访问之前完成。由此选择数据传输的大小时有一个折衷。大小是基于设备的特性和存储器的配置来选择的。较好的是数据传输的大小就是所选择的段的大小。对于一个给定的段大小,从一个设备的有效数据率就确定了。例如对一些磁盘驱动器,段大小为256千字节为磁盘驱动器的有效使用(有效数据率为3兆字节/秒)和缓冲大小(256千字节)提供了良好的平衡。
如果不用分条,能支持的流的最大数目就受限于磁盘的有效数据率,例如如果有效数据率是3兆字节/秒,一个流的数据率是200千字节/秒,那么磁盘所能供应的流不超过15个。如果比如说需要同一个视频的60个流,那么数据必须复制到4个盘上。但是如果使用了根据本发明的分条,可以使用4个盘的1/4容量。对于单一的视频数据拷贝的60个同时的流,四条中的每一条都可以同时播放15个流。各个流的开始时间错开,以保证对60个流的请求在各个条之间均匀分布。还要注意如果各个流的开始时间比较接近,可以通过使用被高速缓存的视频数据来减少对I/O的需要。
对于一个给定视频,其条的数目受两个因素影响,第一个是在任一时刻从视频提供的流的最大数目,另一个是在任一时刻从与该视频存贮在同一磁盘上的所有视频需要提供的流的总数。
对一个视频,条的数目确定如下s=最大值(r*n/d,r*m/d),其中r=该流要播放的标定数据率;n=以标定数据率自这个视频图象的同时的流的最大数目;d=自一个磁盘的有效数据率(注意从磁盘的有效数据率受段大小的影响);m=以标定数据率自包含该视频图象的任何部分的所有磁盘的同时的流的最大数目;以及s=一个视频图象的流的数目。
一个视频图象的数据被分条分布的若干个磁盘是作为一个集合管理,而且可以想成是一个非常大的物理盘。分条可允许一个视频文件超过一个系统的物理文件系统所允许的最大文件的大小限制。视频数据一般不总是需要在该集合的所有盘上存相同数量的数据。为了平衡磁盘的使用,当一个视频被分条时,分条是从空闲空间最多的那个盘开始。
作为一个例子,考虑一个需要以2兆位/秒(250000字节/秒)的速率播放的一个视频图象的情况,即r等于250,000字节/秒,而且假设有必要从该视频分送多达30个同时的流,即n=30。假设在此例中m也等于30,即从所有磁盘上分送的流的总数也是30。还假设数据以250000字节的段分条,而且对给定段大小(250000字节)从一个盘的有效数据率为3000000字节/秒。那么所需分条的数目n为250000*30/3,000,000,即2.5,入为3(s=取上限(r*n/d))。
如果来自包含该数据的所有磁盘的流的最大数目比如说是45,那么250,000*45/3,000,000即需要3.75个条,入为4个条。
即使把视频分成3个条足以达到从该视频的一个拷贝分送30个流的要求,如果包含该视频的盘还包含其它内容,而且从那个视频要支持的流的总数是45,那么就需要4个磁盘驱动器(分条程度为4)。
该算法在媒体流分送器10中被使用的方式如下。存储器(数个磁盘驱动器)被分成磁盘组。每个组有一定的容量和分送给定数目的同时的流的能力(基于一个预先确定的段的大小以每个磁盘的有效数据率)。每个组的段大小是常数。不同的组可以选择不同的段大小(并因而具有不同的有效数据率)。当一个视频图象要被分条时,首先根据下列标准选择一个组。
段大小与视频数据率是一致的,即如果流数据率为250000字节/秒,段大小就在125K到500KB之间。下一个标准是保证组中磁盘的数量足够支持同时的流的最大数目,即当“r”是流数据率,“n”是同时的流的最大数目,“d”是组中一个盘的有效数据率时磁盘的数目。最后,应该确信从磁盘组中所有的视频需要支持的同时的流的总数不超过其容量。就是说,如果“m”是该组的容量,“m—n”应该大于或等于可从已经存贮在组中的视频同时播放的所有的流的和。
该计算是在控制结点18中在视频数据装入媒体流分送器10时计算的。在最简单情况下,所有的磁盘都将在单一的池中,它定义了媒体流分送器10对于存储器和可支持的流的数量的总容量。在此情况下支持给定数目的同时的流所必需的磁盘(或条)的数目是从公式m*r/d计算得来,其中m是流的数目,r是一个流的数据率,d是对一个盘的有效数据率。注意如果流可以具有不同的速率,那么上面公式中的m*r应当由下式替换所有同时的流的数据率的和的最大值。
把这一技术用于写数据的结果是数据可以为了分送很多个流而以指定速率读出,而并不需要视频图象的数字表示的多个拷贝。通过把数据分条到多个磁盘卷上,为分送一个流而读该文件的一个部分并不影响为分送另一个流而读该文件的另一部分。I.媒体流分送器数据传输和转换过程I.1分送视频至开关18的动态带宽分配传统的视频服务器一般都符合两种形式之一。它们不是用PC技术构造一个低价的(但也是低带宽的)视频服务器,就是用超级计算技术构造一个高带宽(而且昂贵)的视频服务器。本发明的一个目标是分送高带宽的视频,而不用高价的超级计算机技术。
实现高带宽低价格的一个较好方法是使用低延迟开关(纵横电路开关矩阵)12把基于低价PC的“结点”互联成一个视频服务器(如图1所示)。媒体流分送器结构的一个重要方面是有效地使用了从每一个存储结点16和通信结点14可以得到的视频流带宽。通过把视频数据的特殊性质(写一次,读多次)与低价开关技术的动态、实时带宽分配能力结合起来,从而使带宽达到最大。
图18显示了在一个开关接口和一个存储结点之间的传统的逻辑连接。开关接口必须是全双工(即信息可以同时在两个方向发送)以便允许视频数据(以及控制信息)传入和传出存储结点。因为视频内容被写进存储结点一次而后读出多次,大多数对存贮结点的带宽请求朝向开关。在典型的开关接口情况下,存储结点的带宽未能充分利用,因为分配给写能力的那一半带宽很少使用。
图19显示了根据本发明的一个开关接口。该接口实时地动态分配其全部带宽进入或进出开关18,以满足结点的当前需要。(存储结点16用作一例)。通信结点14有相似的需要,但是它们的大部分带宽是在从开关18来的方向。
动态分配是通过使用开关12的适当的路由首部来把两个或更多物理开关接口组合成一个逻辑开关接口18a而实现的。于是视频数据(例如一个读)被分到两个物理接口。如前所述这是通过把数据分条到多个存储单元而实现的。接收结点把视频数据组合还原为单一的逻辑流。
例如,在图18中开关接口的速率为2X兆字节/秒全双工,即每个方向X兆字节/秒。但视频数据通常只向一个方向发送(从存储结点进入开关)。因此只有X兆字节/秒的视频带宽从存储结点分送出来,尽管结点的能力有它的两倍(2X)。存储结点没有充分利用。图19的开关接口动态地分配这整个2X兆字节/秒的带宽以把视频从存储结点传送到开关。结果是结点的带宽增加,视频服务器的带宽更高,而且每个流的费用更低。J.使用通信适配器的等时视频数据分送数字视频数据是顺序的,连续的,大量的,时间临界的,而不是内容临界的。视频数据流必须以高的比特率等时分送,需要把数据路径上不必要的开销降到最低。接收的硬件一般是一个视频机顶盒或某些其它合适的视频数据接收器。标准串行通信协议经常在硬件级加入附加位和数据字节到流中,用于同步和数据验证。如果接收器不能透明地移去这些附加数据,视频数据流便遭到破坏。由这些位和字节引入的附加开销还降低了有效数据率,产生视频解压缩和转换的错误。
已经确定,为了保证对用户的等时分送,通过标准通信适配器进行的视频数据传输需要把大多数的标准串行通信协议属性都关闭。达到达一点的方法随所用的通信适配器的不同而不同,但下面描述了其基本思想。图20中,通信结点14中的一个串行通信芯片200禁止了数据格式化和完整性信息,如奇偶校验,开始和停止位,循环冗余校验码和同步字节,并防止了空字符的产生。使用输入FIFO缓冲202,204,206等,在允许总线周期装入数据块的同时确保一个恒定(等时)输出的视频数据流。一个1000字节的FIFO缓冲器208简化了CPU和总线装入逻辑。
如果通信输出芯片200不允许对产生初始同步(sync)字节的禁止,那么同步字节的值被编程到每个数据块的第一字节的值中(而且数据块指针递增到第二字节)。字节对齐也必须用实际数据管理,因而任何填充字节(padding byte)如果不是实际压缩视频数据的一部分都将破坏数据流。
为了达到高质量压缩视频数据所需的恒定的高速串行数据输出,必须使用一个循环缓冲器或者多个大缓冲器(如202,204,206)。这对于在从一个前面填满的缓冲器输出数据的同时)允许足够的时间来填充一个输入缓冲器来说是必需的。除非缓冲器打包是在视频数据流路径的早期完成,视频结束的情况会造成一个很小的缓冲器在下一个缓冲器的传输完成之前输出,从而导致数据欠载运行。这就需要最少三个大面独立的缓冲器。一个双重模式内存(读时可写)中的循环缓冲器也是一个合适的实施例。J1.把压缩的MPEG—1,1+,或MPEG—2数字数据格式的视频图像和电影转换成工业标准的电视制式(NTSC或PAL)。
如前所述,数字视频数据从磁盘移到缓冲存储器中。一旦缓冲器中有了足够数据,它便从内存移到通信结点14中的一个接口适配器中。所用的接口是SCSI20兆字节/秒,快/宽接口,或者SSA串行SCSI接口。SCSI接口被扩充到处理15个地址,而SSA结构支持最多256个。其它合适的接口包括RS422,V.35,V.36等,但并不限于这些。
如图21所示,来自接口的视频数据被从一个通信结点14通过通信总线210传送到NTSC适配器212(另见图20),并在那里被缓冲。适配器212从一个局部缓冲214取出数据,那里存有多个数据块,以使总线性能达到最高。适配器212的主要目标是保持数据从存储器214到MPEG芯片216、218,然后到NTSC芯片220和D/A222的等时流动,以确保在视频和/或声频的分送中没有中断。MPEG逻辑模块216,218把数字视频数据(压缩的)转换成元件级视频和声频。一个NTSC编码器220把信号转换成NTSC基带模拟信号。MPEG声频解码器216把数字声频转换成并行数字数据,然后通过一个数模转换器222,经过滤波,产生声音左右输出。
产生一个对速度匹配和等时分送问题的解决方法的目的是得到这样一个途径,它不仅使系统的带宽分送达到最大,而且具有最少的性能约束。
一般地,应用开发者使用一个总线结构如SSA和SCSI用于在处理器和机械存储设备之间控制和分送数据,如磁盘文件,磁带文件,光存储单元等。两种总线都包含使它们适于高带宽视频数据分送的属性,只要采取了控制速度和视频数据的等时分送的措施。
SCSI总线允许数据以20兆字节/秒猝发,这使任何一个视频信号从缓冲器移入一个特定的NTSC适配器的时间达到最短。适配器卡212包含一个大缓冲器,它具备以峰值速率将数据从总线210猝发到存储器中,以及以低得多的速率从缓冲器214移去数据用于分送到NTSC解码芯片216,218的性能。缓冲器214还被划分为多个更小缓冲器,以软件控制连接起来,作为循环方式连接的多缓冲器。
这允许系统分送大小不同的数据块到分离的缓冲器,并控制播出的顺序。这一方法的一个好处是它免除了系统软件在有任何对视频数据的请求之前以及以很高的分送速率分送视频数据块。这为媒体流分送器10提供了在动态吞吐需求下管理很多个视频流的能力。当一个通信结点中的处理器有时间时,它能产生对将要顺序播放的几个大数据块的分送。这个一旦完成,处理器被释放以控制其它的流,而没有立即的需要来分送慢的连续等时数据到每一个端口。
为进一步提高解码器系统的性能价格比,在大解码器缓冲器214和MPEG解码器216,218之间插入一个小FIFO存储器224。FIFO存储器224允许控制器226把小块数据,一般为512字节,从缓冲器214移入FIFO224,然后后者把数据转换成串行位流,分送到MPEG解码器216,218。声频和视频解码芯片216和218都可以从同一串行数据流取得输入,在内部分离并对所需数据解码。数据从FIFO存储器224的输出的传送是以等时方式发生,或者基本上是等时方式,以保证把一个不间断的视频图象分送到一个用户或者视频图象的用户。K.数字视频传送到SCSI设备如图22所示,来自缓冲存储器的压缩数字视频数据和命令流由设备级软件转换成SCSI命令和数据流,并通过SCSI总线210以SCSIII快速数据率传送到一个目标适配器212。然后数据被缓冲,并以要求的内容输出速率供给MPEG逻辑来解压缩和转换为模拟视频与声频数据。在SCSI总线210中提供反馈以调查数据流并保证适当的缓存管理。
SCSI NTSC/PAL适配器212提供了一个与SCSI总线210的高层接口,支持标准SCSI协议的一个子集。操作的正常模式是打开适配器212,对它写数据流(视频和声频),在完毕时关闭适配器212。适配器212按所需的速度取数据,以保持缓冲器满,由通信结点14和存贮结点16提供数据,其大小适当选择以优化总线传输并降低总线开销。
如果需要,可以通过一个模式选择SCSI命令经由控制包来重置系统参数。视频/声频的同步是在适配器212内部而不需外部控制。错误被减到最少,还有自动重新同步和连续的声频/视频输出。K1.SCSI级命令描述直接访问设备和顺序访问设备命令可与标准普通命令混合使用以调节SCSI视频输出适配器的功能。对所有的SCSI命令,在每个命令之后都返回一个有效的状态字节,如果返回一个检查条件,则在读出数据区(Sense data area)装入错误情况。所用的标准SCST命令包括RESET(复位),INQUIRY(查询),REQUESTSENSE(请求读出),MODE SELECT(模式选择),MODESENSE(模式读出),READ(读),WRITE(写),RESERVE(保留),RELEASE(释放),TEST UNITREADY(测试单元准备)。视频命令视频控制命令是用户级的视频输出控制命令,是上面列出的标准命令的扩展。它们对低层操作系统或SCSI命令提供了一个简化的用户级前端,这些低层操作系统或SCSI命令与SCSI视频输出适配器212直接接口。每个命令的实现利用微码来仿真必需的视频设备函数并避免由无效的控制状态造成的视频和声频异常。一个SCSI命令—SCSI开始/停止单元命令—被用来把视频控制命令翻译到目标SCSI视频输出适配器212,以及带有必要的参数随命令一起移动。这简化了用户应用接口和适配器卡212微码。下面的命令被利用停止(SCSI开始/停止1—参数=模式)输入到MPEG芯片集(216,218)的数据被中止,声音消音,视频变成空白。参数域选择停止模式。正常模式是让缓冲器和位置指针保持当前状况,这样播放命令在视频流的相同位置继续。第二个模式(电影结束或中止)是把缓冲器指针置到下一个缓冲器的开头,并释放当前缓冲器。第三个模式也是对电影结束情况的,但停止(无声无图象)被延迟到数据缓冲器变空。第四个模式可以用于某种MPEG解码器的实现,为一个延迟的停止提供声音,但当数据用完时固定最后一个有效帧。在每种情况下,视频适配器212的微码确定停止点,以便视频和视频输出在正确的边界上停止,以允许干净地重新开始。暂停(SCSI START/STOP2—无参数)输入到MPEG芯片集(216,218)的数据被中止,声音消声,但视频没有变成空白。这使得MPEG视频芯片集(216,218)保持最后一个好帧的固定帧。这受限于避免视频管的老化。最好由控制结点18发布一个停止命令,但是如果5分钟内没有收到命令,视频输出会自动变为空白。适配器212的微码保持缓冲器位置的解码器状态,以允许平滑地转回播放。无图—无声(SCSI START/STOP3—参数=模式)该命令可以使视频输出变空而不影响声频输出,使声频变哑而不影响视频,或者既无声又无图。无声和无图象都可以用一个带有模式参数的命令关闭,它使得转换更平滑并减少命令开销。这些是在视频适配器212上在解压缩和转换之后实现的,并有硬件控制以保证正向的平滑的转换。慢速播放(SCSI START/STOP4—参数=速率)
该命令降低至MPEG芯片组(216,218)的输入速率,使它间歇地固定帧,模拟VCR的慢速播放功能。声音变哑以避免数字错误噪声。参数域指定一个从0到100的相对速度。一种替代性实现禁止解码芯片集(216,218)的错误处理,然后修改解码芯片集中的数据时钟速度到期望的播放速度。这依赖于视频适配器的时钟结构的灵活性。播放(SCSI START/STOP5—参数=缓冲器)该命令开始向MPEG芯片集(216,218)的数据提供过程,启动视频和声频输出。传送一个缓冲器选择号以确定从哪个缓冲器开始顺序播放,而一个0值指示使用当前的播放缓冲器(典型情况)。一个非0值只在适配器212处于停止模式(STOPPED mode)时才被接受,如果在暂停模式(PAUSED mode),缓冲器选择参数被忽略,而使用当前缓冲器选择号和位置来恢复播放。
当“播放”时,控制器226在各缓冲器之间顺序地轮转以保持一个稳定的数据流进入MPEG芯片集(216,218)。数据被以适当的速率从缓冲器读入MPEG总线,从地址0开始直到读出了N个字节,然后控制器226切换到下一个缓冲器并继续读数据。适配器总线和微码提供足够的带宽用于到适配器缓冲214的SCSI快速数据传输,还用于稳定地装入数据到供应MPEG解压缩芯片(216,218)的输出FIFO 224。快进(SCSI START/STOP6—参数=速率)该命令用来以模仿VCR的快进方式扫描数据。有两种操作模式由速率参数确定。速率为0意思是迅速地快进,视频和声频应当被变成空白和变哑,缓冲器被刷新,而且当从视频流中的一个向前的新位置收到数据时执行一个隐含的播放命令。1—10的整数指示输入流快进的速率。视频通过跳过数据块被“采样”,以获得指定的平均数据率。适配器212以接近正常的速率播放一部分数据,跳过,然后播放下一部分,以模拟快进动作。回绕(SCSI START/STOP7—参数=速率)该命令用来以模拟VCR的回绕方式向后扫描数据。有两种模式的操作,由速率参数确定。速率为0意思是快速回绕,视频和声频应当变为空白和变哑,缓冲器被刷新,当从视频流中的一个向前的新位置收到数据时,隐含执行一个播放命令。1—10的整数指示输入流回绕的速率。视频通过跳过数据块被“采样”,以获得指定的平均数据率。回绕数据流是通过把从早先的视频流位置“采样”到的小块数据装配起来而建立的。适配器卡212平滑地处理这些转换和同步以便以正常速率播放,跳回到下一个采样部分以模拟回绕扫描。K2.缓冲器管理数字视频服务器提供数据给很多并发的输出设备,但是数字视频数据解压缩和转换需要一个恒定的数据流。数据缓冲技术被用来利用SCSI的数据猝发模式传输,同时仍避免数据欠载和缓冲过载,允许媒体流分送器10用最少的干预来传输数据到很多个流。SCSI视频适配器卡(图21,22)包含一个大缓冲器214用于视频数据,以便充分利用SCSI猝发模式数据传输过程。一个例示的配置可以是768K的一个缓冲器214,由局部逻辑作为环绕式循环缓冲器来管理。循环缓冲器应该动态地处理不同的数据块大小,而不是固定长度缓冲,后者对于传输数字视频数据时的存储和管理开销来说都是低效的。
视频适配器卡212的微码支持多个缓冲器指针,保存上一个数据顶端以及当前长度和数据顶端。这允许再次重写失败了的传输,或者如果需要的话让一个指针定位在当前的缓冲器内的一个字节位置上。数据块的长度按传输的长度精确地保持(例如即使中间逻辑使用长字对齐,也针对字节或字)以确保到解码芯片集(216,218)的有效的数据分送。这一方法把稳定状态操作开销降到最低,同时还允许对数据缓冲的灵活控制。K2.1缓冲器选择和定位假设需要缓冲器的多个集合,则对于所有有关缓冲器的操作用到多个指针。例如,一个集合可能用于选择播放缓冲器和该缓冲器中的当前位置,第二个集合选择写缓冲器以及该缓冲器内的位置(一般为0)用于一个数据预装入操作。对收到的每一数据块保持一个当前长度和最大长度值,因为也支持变长的数据块。K2.2自动模式缓冲操作由视频适配器的控制器226管理,把N字节数据放在下一个准备好的缓冲空间中,从该缓冲器的地址0开始。控制器226跟踪每个缓冲器中数据的长度以及该数据是否已经“播出”。每当有了足够的空闲缓冲器空间,该卡便接受下一个写命令和DMA的数据进入该缓冲器。如果没有足够的空闲缓冲器空间以接受整个数据块(一般是慢速播放或暂停情况),便不接受写命令并返回一个缓冲器满的返回码。K2.3手动模式一个定位命令用来对每一个缓冲器访问命令(写,擦除等)选择一个“当前的”写缓冲器和该缓冲器中的位置(一般为0)。对于已成功传输的上一数据块,该缓冲器位置是对于数据的开始点。这最好是为视频流传输管理而做的,并尽快地重新激活自动模式,以尽量减少系统中的命令开销。K2.4差错管理数字视频数据传输的差错管理要求与通常使用SCSI于数据处理应用的随机数据访问不同。轻微的数据丢失不如传输中断严重,因此传统的重试和数据有效性策略被修改或禁止了。普通的SCSI差错处理过程是在完成每个命令时的状态阶段返回一个状态字节之后。状态字节或者指出一个GOOD(良好)(OO)状况,一个BUSY(忙)状况(8h)—如果目标SCSI芯片227不能接受命令,或者是一个CHECK CONDITION(检查)(02h)状况—如果发生一个差错。K2.5错误恢复SCSI视频适配器212的控制器226在得到一个CHECKCONDITION的响应时自动产生一个请求读出命令,来装入错误和状态信息,并确定是否可能执行一个恢复过程。普通的恢复过程是清除差错状态,抛弃被破坏的数据,并尽快恢复正常播放。在最坏情况下,适配器212可能只得复位,在恢复播放之前重装数据。差错状况用下一个INQUIRY(查询)或REQUESTSENSE SCSI请求读出SCSI)操作记录并上报给宿主系统。K2.6自动重试对缓冲器满或设备忙的情况,重试自动进行最多X次,其中X依赖于流数据率。这只是在下一个数据缓冲到达时才被允许。在那个时刻,如果状况出乎意料(即缓冲器满,却未处于暂停或慢放模式)便记录一个错误,可能有必要进行设备复位或清除,以恢复和继续视频播放。
虽然主要是对分送一个视频图象到用户的情况进行描述,但应当认识到可以使用双向视频适配器来接收一个视频图象,把视频图象数字化为一个数字表示,以及把这个数字表示沿总线210传输到通信结点14,把它通过低延迟开关12存贮在由控制结点18指定的存储结点16,17中。
应当明白前面的描述只是对本发明的说明性描述。精于此道的人士可以在不背离本发明的情况下设计出多种替代和修改。因此,本发明意在包容所有这些替代,修改和变化,它们都在所附的权利要求书的范围内。
权利要求
1.一种媒体流分送器,包含至少一个包括海量存储的存储结点,用来存储至少一个视频图象的数字表示,所述海量存储器包含多个海量存储单元,所述至少一个视频图象需要时间T来全部播出,并存为N个数据块,每个数据块存有相当于大约所述视频图象的T/N时间的数据;以及多个通信结点,每一个通信结点至少有一个输入端口耦合到所至少一个存储结点的一个输出,用以从那里接收一个视频图象的一个数字表示,所述每个通信结点的每一个还包含多个输出端口,其中每一个都分别把一个数字表示作为一个数据流传送到数字表示的一个消费者;其中所述数字表示的所述N块数据被划分为X条,其中数据块1,X+1,2*X+1…等与X条中的第一条相联,数据块2,X+2,2*X+2等与X条中的第二条相联,等等,其中所述X条中的每一条都分别存在所述多个海量单元中的不同单元上。
2.权利要求1所述的媒体流分送器,其特征在于所述多个海量存储单元存有一个视频图象的一个数字表示的单一的拷贝,而且所述X条以这种方式读出,使得多个数据流能同时传送所述N块数据中的同一块。
3.权利要求1所述的媒体流分送器,其特征在于所述多个海量存储单元存有一个视频图象的一个数字表示的单一的拷贝,而且所述X条以这种方式读出,使得多个数据流能同时传送所述N块数据中的不同的块。
4.权利要求1所述的媒体流分送器,其特征在于所述T/N的持续时间是在大约0.2秒到大约2秒的范围内。
5.权利要求1所述的媒体流分送器,其特征在于X的值根据这个表示式来确定X=最大值(r*n/d,r*m/d);其中r是一个数据流的标定数据率;n是以标定数据率同时输出的数据流的最大数目;d是一个所述海量存储单元的一个有效输出数据率;以及m是以标定数据率由存有所述N个数据单元中的至少一个的所有所述海量存储单元同时输出的数据流的最大数目。
6.一个媒体流分送器,包含至少一个包含海量存储器的存储结点,用来存储至少一个视频图象的一个数字表示,所述海量存储器由多个磁盘数据存储单元组成,所述至少一个视频图象需要时间T全部播出,并存为N个数据块,每个数据块存有相当于大约为所述视频图象的T/N时间的数据,以及多个通信结点,每个通信结点有至少一个输入端口耦合到所述至少一个存储结点的一个输出,以从那里接收一个视频图象的一个数字表示,所述多个通信结点中的每一个还有多个输出端口,每一个分别以一个数据流传输一个数字表示到数字表示的一个消费者;其中所述数字表示的所述N块数据被划分为X条,其中数据块1,X+1,2*X+1…等与X条中的第一条相联,数据块2,X+2,2*X+2…等与X条中的第二条相联,等等,其中所述X条中的每一条都各自存在所述多个盘数据存储单元中的不同的单元上;而且其中X值根据这一表达式确定X=最大值(r*n/d,r*m/d);其中r是一个数据流的标定数据率;n是以标定数据率同时输出的数据流的最大数目;d是一个所述盘数据存储单元的有效输出数据率;以及m是由存有所述N个数据单元中的至少一个的所有所述盘数据存储单元,以标定数据率同时输出的数据流的最大数目。
7.权利要求6所述的媒体流分送器,其特征在于所述多个盘数据存储单元存有一个视频图象的一个数字表示的单一拷贝,而且所述X条以这种方式读出,使得多个数据流能够同时传送所述N块数据中的同一块。
8.权利要求6所述的媒体流分送器,其特征在于所述多个盘数据存储单元存有一个视频图象的一个数字表示的单一拷贝,而且所述X条以这种方式读出,使得多个数据流能够同时传送所述N块数据中的不同的块。
9.权利要求6所述的媒体流分送器,其特征在于所述T/N的持续时间在大约0.2秒到大约2秒之间的范围内。
全文摘要
一个媒体流动器(10)包含至少一个包括海量存储的存储结点(16)来存储至少一个视频图像的一个数字表示。海量存储由多个海量存储单元组成。媒体流动器还包括多个通信结点(14),每个通信结点都有至少一个输入端口和多个输出端口,数字表示的N块数据分为X条,X条以这种方式读出,使得多个数据流能同时传送N块数据中的同一块,或者以这样的方式读出,使得多个数据流能同时传送N块数据中的不同的块。
文档编号H04N7/173GK1122985SQ9511532
公开日1996年5月22日 申请日期1995年8月2日 优先权日1994年9月8日
发明者小·L·发尔康, A·R·萨申纳 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1