在以下说明中使用的一些术语解释如下:
AAL-5异步传输方式自适应层一5(ATM ADAPTATIONLAYER-5):指一适合数据传送的ATM服务的多级。
ATM:异步传输方式(ASYNCRONOUS TRAWSFERMODE):一种在局域网或广域网(或同时两种网)中使用的高速转接与传送技术。它既可以传送数据也可以传送视频/音频。
Betacam:一种专业质量的模拟视频格式。
CCIR601:一种用于数字电视的标准分辨率。720×840(如NTSC)或720×576(如PAL)亮度,水平色度二次采样2∶1。
CPU:中央处理单元(CENTRAL PROCESSING UNIT):在计算机结构中,处理计算机指令的主使。
CRC:循环冗余校验(CYCLIC REDUNDANCY CHECK)。一种数据错误检测模式。
D1:符合CCIR601的数字视频记录格式,在19mm视频带上记录。
D2:符合SMPTE244M的数字视频记录格式,在19mm视频带上记录。
D3:符合SMPTE 244m的数字视频记录格式。在1/2“视频带上记录。
DASD:直接存取存储设备(DIRECT ACCESS STORAGEDEVICE):任何可编址的联机数据存储设备或CD-ROM播放器都可以是一DASD。可以与磁盘驱动器同义使用。
DMA:直接存储器存取(DIRECT MEMORY ACCESS):一种在计算机结构中传送数据的方法,它不需要CPU来传送数据。
DVI:一种相对低质量的数字视频压缩格式,通常用于将CD-ROM盘的视频播放到计算机屏幕上。
E1:相当于T1的欧洲标准。
FIFO:先进先出(FIRSTIN FIRST OUT):一种按先进先服务原则处理的队列处理方法。
Genlock:指与另一视频信号同步的过程。在计算机捕捉视频以使数字化处理与视频信号扫描参数相同步时需要它。
I/O:输入/输出(INPUT/OUTPUT)
Isochronans:用于描述时间敏感并且不间断地发送的信息,实时发送的视频与音频都是等时的。
JPEG:照像专家联合组(JOINT PHOTOGRAPHICEXPERT GROUP):由国际标准化组织主办的一工作委员会,提出一用于计算机系统中静止图像数字压缩的建议性通用标准。
KB:千字节(KILO BYTES):1024个字节。
LAN:局域网(LOCAL AREA NETWORK):将一英里或一英里内的终端、计算机和外设用双绞线、同轴电缆或光纤电缆连接,并在其上能够高速传送数据。
LRU:最近最少使用(LEAST RECENTLY USED)。
MPEG:活动图像专家组(NOVING PCTURE EXPERTSGROUP):由目标标准化组织主办的一个工作团体,定义动画视频/音频的数字压缩/解压缩标准。MPEG-1是最初的并且正在使用的标准。MPEG-2将是下一个支持数字化,灵活的和按比例视频传送的标准。它将覆盖多分辨率、多位速率(比特率)和多种传送机制。
MEPG-1,MEPG2:参见MEPG
MRU:最近最多使用(MOST RECENTLY USED)。
MTNU:下次使用前最长时间(MOST TIME TO NEXTUSE。
NTSC format:国家电视标准组织(NATIONALTELEVISION STRNDARDS COMMITTEE):在美国和日本所使用的彩色电视格式标准。
PAL format:逐行倒相制(PHASE ALTE RNATIONLINE):在欧洲除法国以外所有国家所使用的彩色电视格式标准。
PC:个人计算机(PERSONAL COMPUTER):一种可在家庭或公司中使用的、价格相比较低的计算机。
RAID:廉价盘冗余阵列(REDUNDANT ARRAY OFINEXPENSIVE DISKS):一种存储排列方式,它使几个磁盘或光盘按串连方式工作,从而增加带宽输出,并且提供冗余备份。
SCSI:小型计算机系统接口(SMALL COMPUTERSYSTEM INTERFACE):一种将外设和其控制器连到计算机上的工业标准。
SIF:源输入格式(SOURCE INPUT FORMAT):CCIR 601分辨率的四分之一。
SMPTE:动画图像与电视工程师协会(SOCIETY OFMOTION PICTURE & TELEVISIOW ENGINEERS)。
SSA:串行存储器结构(SERIAL STORAGEARCHITECTORE):一种将外设和其控制器连到计算机的标准。可能替代SCSI。
T1:比特率为1.544兆位/秒的与电话网络的数字接口。
TCP/IP:发送控制协议/网间程序(TRANSMISSIOWCONTROL PROTOCOL/INTERNET PROGRAM):由美国国防部提出的一组用于通过网络连接不相似的计算机的协议。
VHS:垂直螺旋式扫描(VERTICAL HELICAL SCAN):一种用于在磁带上记录模拟视频的通用格式。
VTR:磁带录像机(VIDEO TAPE RECORDER):一种在磁带上记录视频的设备。
VCR:盒式录像机(VIDEO CASSETTE RECOROER):同VTR。
A.总结构
图1给出了一视频优化流服务器系统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通过一平面板互连图中未示意性地示出这种互连。平面与一单个卡20构成一带有16个节点端口的低等待时间交叉型转接器。可以通过增加辅加卡20构成辅加节点端口,并且如果需要的话,还可以配置高适应性的活动冗余节点端口。低等待时间转接器12的每一端口可以成为一个每秒25MB全双工通信信道。
信息按包通过转接器12传送。每一包包含一头部,用于控制每一交换芯片中单个交叉型转接点的转接状态。控制节点18为其它节点(存储节点16、17和通信节点14)提供通过低等待转接器12进行同层对等操作所需的信息。
图1B描述了一磁带存储节点17内部结构。稍后会清楚看到,磁带存储节点17为存储视频图像的数字表示提供大容量存储能力。
所述的视频图像可以包括一个或多个适于显示和/或处理的图像。一视频图像可以包括一音频部分。一个或多个图像可以是逻辑上相关连的,例如可以是一胶片、影片或动画片的顺序帧。最初的图像可以由摄像机、数字计算机或摄像机与数字计算机共同产生。音频部分可以与连续显示的图像同步。所述的视频图像的数据表示可以是任何适合表示一个或多个图像和音频的数字化数据格式。可以对数字数据编码与/或压缩。
再次参见图1B,一磁带存储点节17包括一可以访问包含在一磁带库26中的多个磁带记录的磁带库控制器接口24。另一接口28可以通过一SCSI总线互连访问其它磁带库。一内部系统存储器30可以用来缓存来自接口24或28中任意一个接口或经过DMA数据传送路径32的视频数据。系统存储块30可以是一包含有用于磁带库和文件管理功能的软件36的PC机34的一部分。一转接器接口与缓存模块38(也用于盘式存储节点16,通信节点14和控制节点18)可用于连接磁带存储节点17与低等待时间转接器12。也即:模块38负责将数据传送到包,并且给每一包加上转接器12为包选择路由时使用的头部分。当从转接器12接收一包时,模块38负责在局部缓存或处理所接收数据之前去掉头部。
来自磁带库26的视频数据可在一个第一缓冲动作中进入系统存储器30。接着,响应于控制节点18的初始方向,通过低等待时间转接器12将视频数据发送到一盘存储节点16,以便在需要时可以立即存取。
图1C表示了一盘存储节点16的内部详细结构。每个盘存储节点16包括一个转接器接口与缓冲模块40,它可以将数据传送自/至-RAID视频高速缓存与存储接口模块42。接口42将所接收的视频数据传送给多个盘45,以准RAID方式在盘间分布数据。现有技术中已有关于RAID的存储技术,在Acm SIGMODEConference,Chicago II,June 1-3,1988第109-116页披露了Patterson的“一个廉价盘冗余阵列的例子”
盘存储节点16进一步包括一内部PC机44,该PC机44包括的软件模块46和48分别用于控制存储节点,控制视频文件与盘,以及为存储在盘45上的数据提供RAID映像。实质上,每个盘存储节点16提供一个比磁带存储节点17更直接的视频数据适用级。每个盘存储节点16进一步可以在转接器接口与缓冲模块40的半导体存储器中缓冲存储(按高速缓存方式)视频数据,从而在接收到一个请求时能够更快地提供可用的视频数据。
一般地说,一存储节点包括一海量存储单元(或一海量存储单元的接口)并且能够局部缓存从海量存储器中读出或向其中写入的数据。存储节点可以包括一个或几个磁带机和/或磁盘机等顺序存取的海量存储器,也可以包括一个或更多可以随机存取方式访问的随机存取存储器和/或半导体存储器。
图1D是一表示通信节点14的内部部件的框图。与上述节点相似,通信节点14包括一转接器接口和缓冲模块50,它可以按前述方式通过低等待时间转接器12通信。视频数据可以直接在转接器接口与缓冲模块50之间进行传送,并进一步送到流缓存与通信接口52中以送到一用户终端(未在图中表示)。PC机54包括软件模块56和58,它们分别提供通信节点控制(即:流开始/停止动作),并允许随后产生一等时数据流。流缓冲器与通信接口52的一辅加输入60使输出数据帧同步。从自动控制设备62中接收数据,而自动控制设备62又受一控制整个流服务器10(参见图1)的系统控制器64的控制。系统控制器64根据来自用户控制机顶盒(set topboxes)65的输入,产生允许媒体流部件10访问一所请求的视频表示的命令。系统控制器64还提供一用户接口(UI)与显示器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 Clock等)。
应用程序命令通过控制接口送到媒体流部件10。当发出的是数据装入命令时,控制节点将到来的数据文件分段(即:数据块)并将其分布到一个或多个存储节点上。数据资料的密度及数据的同时用户的数量影响存储节点16和17上数据的布局。增加密度和/或同时用户数意谓着使用更多的存储节点以提高容量及带宽。
当通过控制接口发出打开通向一最终用户的数据流命令时,控制节点18选择并激活一合适的通信节点14并将控制信息传送给它,指示出在存储节点16,17上数据文件段的位置。通信节点激活有关的存储节点16,17并通过低等待时间转接器12发送的命令包与这些节点通信,以开始传送数据。
数据通过低等待时间转接器12与“准时”(just in time)调度算法在磁盘存储节点16与17间传送。下面描述一下调度和数据流控制的技术。从通信节点14发出的数据流被多路传送至/自磁盘存储节点16,以使单个通信节点流只使用每一磁盘存储节点16的一部分容量和带宽。这样,多个通信节点14就可以将对磁盘存储节点16上相同或不同数据的访问加以多路转换。例如,媒体流部件10可以提供1500个来自通信节点14的动态存储区的受控终端用户流,每一个都多路访问一个分布在磁盘节点16上的多媒体文件。这种能力被称之为“单备份多流”。
通过控制接口接收的命令被以两类独特方式执行。那些用于管理数据并且与数据流控制无直接关系的命令按“低优先级”执行。这样一装入新数据到媒体流部件的申请就不会影响向终端用户传送数据流。那些影响流传送(即:输出)的命令按“高优选级”执行。
图2给出了控制接口命令。用于在媒体流部件10中装入和管理数据的低优先级数据管理命令包括VS-CREATE,VS-OPEN,VS-READ,VS-WRITE,VS-GET-POSITION,VS-SET-POSITION,VS-CLOSE,VS-RENAME,VS-DELETE,GET-ATTRIBUTES,与VS-GET-NAME。
用于启动与管理流输出的高优先级流控制命令包括VS-CONNECT,VS-PLAY,VS-RECORD,VS-SEEK,VS-PAUSE,VS-STOP和VS-DISCONNECT。控制结点18监视流控制命令以确保请求能被执行。当超出媒体流部件10的能力时,控制节点18中的“容许控制(admission control)”部件驳回一启动流的请求。这可能出现在以下情形中:
1)当系统中一些部件失效,阻碍最大限度的运行时;
2)当访问一数据文件的同时流的数量超出一特定值(例如由VS-CREATE命令的参数所指定)时,与;
3)当来自系统的同时流的数量超出一特定值时。该值可由安装配置程序指定。
通信节点14可以按多相群方式管理,每一个都具有潜在的不同的带宽(流)能力和物理定义。VS-CONNECT命令指示媒体流部件10分配一通信节点14和一些或所有与之相关的带宽以保证等时数据流的传送。例如媒体流部件10能够通过通信节点14以比特率为270兆位/秒的速度播放压缩数据流,同时在其它通信节点14上以较低的数据率(通常是1-16兆位/秒)播放压缩数据流。
存储节点16、17按多相群方式管理,每一个都具有潜在的不同的带宽(流)能力和物理定义。VS-CREATE命令指示媒体流部件10为一个多媒体文件和相应的元数据在一个或多个存储节点上分配存储器。VS-CREATE命令要同时指定用户希望的流密度和最大所需同时用户数量。
三个辅加命令用于支持广播业中的自动控制系统,它们是:VS-CONNECT-LIST,VS-PLAY-AT-SIGNAL与VS-RECORD-AT-SIGNAL。VS-CONNECT-LIST允许应用程序在一单个命令中为子系统指定一系列播放命令。除了在两流之间无缝传送时,媒体流部件10将执行每一个播放命令时,就好象它是通过控制接口发出的一样。一个样本序列如下:
1)控制节点18接收一带有播放命令的VS-COWWECT-LIST命令,子命令指示按顺序播放全部或部分FILE1、FILE2和FILE3。控制节点18确定一通信节点14上文件的最大数据速率并分配资源。被分配的通信节点14收到详细的播放清单并且启动等时流的传送。
2)在FILE1的传送将要结束时,通信节点14启动FILE2的传送,但并不将它送到节点的输出端口。当FILE1播完或出现了来自自动控制接口的信号时,通信节点14将输出端口从第一流换接到第二流。这种换接可在1/30秒内,或在标准的视频帧时间内完成。
3)通信节点14释放与FILE1有关的资源。
VS-PLAY-AT-SIGNAL与VS-RECORD-AT-SIGNAL允许来自外部自动控制接口的信号将用于播放和记录的数据准确地传送到一视频帧边界。在前一例子中,包含有PLAY-AT-SIGNAL子命令的VS-CONNECT-LIST可根据外部自动控制接口信号完成从FILE1到FILE2的切换。如果子命令是VS-PLAY,只有当FILE1传送完成时,才进行切换。
媒体流部件10的其它命令具有管理存储器分级体系的能力。它们是:VS-DUMP,VS-RESTORE,VS-SEND,VS-RECEIVE和VS-RECEIVE-AND-PLAY。每一命令都可以使一个或多个多媒体文件在存储节点16和两个外部定义的分级实体之间被传送。
1)VS-DUMP和VS-RESTORE可以使数据在控制节点18可访问到的磁盘存储节点16和磁带存储节点17之间被传送。数据传送可由控制用应用程序启动,或由控制节点18自动启动。
2)VS-SEND和VS-RECEIVE提供一种将一多媒体文件发送给另外一个媒体流部件的方法。负责接收的媒体流部件可以有选择地在一预先分配好的通信节点上立即播放到来的文件,而不必等整个文件全部达到。
媒体流部件的体系结构除了采用模块化设计和定义一组功能外,用于等时数据传送的数据流进行优化以便显著地降低费用。具体是:
1)低等待转接器的带宽超出了所接节点的带宽;节点间的通信近似于不被封锁。
2)避免将数据送到处理器的存储器中,提供更高的带宽;
3)不必处理数据,省去昂贵的处理单元;和
4)有效地调度数据的传送,从而避免使用大的数据高速缓存。
按传统的计算机术语来说,媒体流部件10用作一互连的适配器系统,它可以通过低待转接器仅在适配器之间进行同级对等的数据传送。低等待转接器12访问数据存储器并且在没有“主机”干预的情况下将数据段从一适配器的存储器中传送到另一适配器的存储器中。
B.用于等时传送的数字压缩视频数据的分级管理
媒体流部件10提供分级存储单元。其设计方案可以从一个非常小的视频系统到一个大的视频系统。它还提供一种灵活的存储管理方式,以满足点播电视、准点播电视、广告播入、高质量非压缩视频存储和跟踪与重播的不同需要。
B1.磁带存储
在媒体流部件10中,将视频图像从高性能的数字带传送到盘上,以按终端用户的要求,用低得多的数据速率播放。按照这种方式,只有一最少的视频时间被储存在磁盘子系统中。如果系统是一“准点播电视”,那么在任一时刻,每个影片只有例如5分钟的部分需要存在磁盘上。对于每个通常是2小时的电影片来说,只需22段每段5分钟。由于在任一时刻并不是将所有的视频图像保存在磁盘文件中,这样视频图像所需的总的磁盘存储空间就降低了。只需将正在播放的图像部分放在磁盘文件中。
换句话说,如果一视频图像需要时间T来播放其全部,并且用有N个数据块的数字表示来存储,那么每一数据块存储视频图像的大约T/N周期那部分。N个数据块中的最后一块存储的视频图像可能少于T/N周期。
随着对系统的要求的增高和流的数量的增加,统计表明,除了在不同的亚秒时间间隔之外,平均大约有25%的视频流请求是对同一影片的,并且图像的分布可以使这些亚秒要求的大于50%的部分落在一组15个影片段中。
本发明的一个方面是使用最合适的技术满足这种要求。一随机存取盒式装入器(例如IBM公司生产的)是一种每个带具有高存储容量,每个抽屉中可以自动机械地装入100个磁带并且每一抽屉最多有两个磁带驱动器的数字磁带系统。这样就可以为点播电视系统提供有效的磁带库。本发明还可以用低成本的数字磁带存储库系统提供影片的海量存储,还可使那些点播率较低的影片直接从磁带转到速度匹配的缓存中,然后转到解压与分配信道上直接播放。
在视频系统中加入分级带存储的另外一个优点是:在磁盘不工作时,将磁盘上的任何影片快速备份。典型系统中一般保留一“备用”磁盘,这样如果某一盘坏了,影片可从带上重新装入。这通常与RAID或类似RAID的系统相结合。
B2.磁盘存储系统
当对视频流的要求达到一较高层次时,更有效的方法是将整个影片存储在磁盘上并且能够免除系统用于持续从带到盘上传送视频数据的性能开销。由于磁带库中通常影片的数量一般是10x-100x,大于任一时刻播放的数量,所以典型的系统仍保留一存储在带上的影片库。当用户请求播放一特定影片时,该影片的各段被装到一磁盘存储节点16并且从那开始播放。
当许多用户想看同一影片时,最好是将影片保留在磁盘上。这些影片一般是本星期内的热门影片;并且在高峰收看时间之前把它们从带装到盘上。这可以减小系统在高峰期的负载。
B3.高速缓存的影片输出。
随着对热门影片的要求增高,媒体流部件10根据基于MRU算法决定将关键影片传送到高速缓存中。这需要较大的高速缓存,但就价格/活动流数比率来说,高速缓存有高输出降低了媒体流部件10的整体成本。
由于视频数据的属性,以及系统总是预先就已知道要播放哪些视频,下次需要哪些数据以及使用多长时间,所以可以采用各种方法使高速缓存、内部缓存、磁盘存储器、磁带装入器和总线性能等的使用达到最优化。
在各个存储介质间放置和分配数据的算法使等时数据的传送满足一个很宽的带宽要求。由于等时数据的传送实际上是100%可预测的,所以它的算法与用于计算机业其它段的传统算法完全不同,其中用户对高速缓存数据的访问并不都能预测。
C.媒体流部件中数据流结构
如上所述,媒体流部件10可以通过网络(如局域网、异步传输方式等)将视频流传送给各种与网相连的输出端如电视机和机顶盒。为了满足对存储容量和同时流数量的要求,发明人一种包含多个存储与通信节点的分布式结构。数据存储在存储节点16、17上并且通过通信节点进行传送。一通信节点14从合适的存储节点16、17中获得数据。控制节点18将一单个系统图像提供给外界。节点通过交叉相连的低等待时间转接器12相联。
对于每个流来说,数据的速率与待传送的数据都是可预测的。本发明利用这种可预测性构造一种可以充分利用资源并能确保每一流的数据在每一阶段需要时都已准备好的数据流结构。
存储节点16、17与通信节点14之间的数据流可以用一些不同的方式建立。
通信节点14一般用于传送多个流。它可能有对于每个流的未完成的数据请求,并且所需数据可能来自不同存储节点16、17。如果不同存储节点同时准备向同一通信节点发送数据,那么只有一个存储节点能够发送数据,而其它存储节点将被封锁。封锁将促使这些存储节点重试发送数据,并且降低了交换的使用,同时不能立即响应存储节点向通信节点发送数据的请求。在本发明中,不会出现不同存储节点争用一个通信节点14的一个输入端口的情况。
所需缓存的容量可用以下方法确定:通信节点14确定发送一请求至存储节点16,17和接收到该数据所需的平均时间。为确定该时间,可将向存储节点发送一请求的时间、接收到响应的时间与到存储节点处理该请求所需的时间相加。然后存储节点通过将从磁盘中读取数据所需的平均时间与处理请求时发生的任何延迟相加来确定处理请求的平均时间。这是处理请求中的等待。所需缓存容量是按流数据速率覆盖等待所需的存储器容量。以下描述的方案在媒体流部环境下具有减少等待,从而降低对资源要求等待特殊条件的优点。通过在数据的每一级(即:在通信节点与存储节点之间)使用一正好准时(just-in-time)调度算法与预测来自前一级的数据请求来减少等待。
通过使用以下两个准则消除存储节点16、17对一通信节点14的输入端口的争用:
1)存储节点16,17只有在收到一特定请求时才向一通信节点14发送数据。
2)一指定的通信节点14将所有准备从存储节点中读取数据的请求排序,这样在任意时刻都只有一个从通信节点14接收数据的请求是未决的,与通信节点14正在传送的流的数量无关。
如上所述,等待的减少与每一级的“正好准时”调度算法有关。基本原则是在一个流(stream)的数据流每一级中,当对该数据的请求到来时,数据就可以用。这可以减少发送请求和完成任何数据传送所需时间上的等待。于是,当控制节点18向存储节点16发出对一特定流的数据请求时,存储节点16几乎能立即向应该请求。该特性对于解决前述的争用问题是非常重要的。
由于在媒体流部件环境下,对数据的访问是顺序的,并且一流的数据速率是可预测的,所以存储节点16可以预测对于一特定流的下一数据请求什么时刻到来。根据请求对数据加什么标识也是已知的,存储节点16也知道数据存放在什么地方,以及期待的对其它流的请求。在给出这些信息和处理从一盘上读请求的期待时间后,存储节点16调度读操作,以使数据正好在请求从通信节点14到来之前可以使用。例如,如果流数据速率是250KB/秒,存储节点16包含一视频的每个第四段,那么,对该流的数据请求每隔4秒将到达。如果处理一读请求的时间是500微秒(确信读请求将在500微秒内完成),那么,在收到预测的来自通信节点14的请求之前,该请求至少被安排500微秒。
C1.控制节点18的函数
控制节点18的函数是在媒体流部件10与外界之间提供一个用于控制流的接口。即使媒体流部件10本身成为一分布式系统,对外界来说它也表示一单个系统图像。控制节点函数可以通过一已定义的应用程序界面(API)实现。API提供在媒体流部件10中产生视频内容的函数,以及诸如播放/记录视频数据等一些实时函数。控制节点18将播放或停止播放视频的实时请求传送给通信节点。
C2.通信节点14
通信节点14具有下述用于处理一实时视频接口的调度组(同一过程中):一处理联接/断开请求的调度组,一处理播放/停止播放和暂停/重新开始请求的调度组和一处理转移请求(向前找或向后找)的调度组。此外,它还具有为一流从存储节点16读数据的输入调度组和将数据写到输出端口的一输出调度组。
图3描述了在播放一视频期间在通信节点14上用于处理数据的一数据流结构。数据流结构包括从一存储节点16获取数据的一输入调度组100。输入调度组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用于支持一流播放的数据流结构。存储节点16有一包含视频数据的动态存储区。它还有一个用于每一逻辑盘驱动器的一输入调度组110和通过转接器将数据写到通信节点14的一输出调度组112。它还有一个被输入与输出调度组110、112使用调度功能114,调度各种操作。它还有一处理来自请求数据的通信节点14的请求的报文调度组116。
当从一请求数据的通信节点14接收到一报文时,正常情况下,报文调组116将发现所请求的数据已在缓存中,并将该请求送到输出调度组的队列(队列118),将请求按时间顺序排列。输出调度组112将清空缓存并将它加到一空闲缓存表中。每个输入调度组110有自己的请求队列。对于每一在相关盘驱动器上有视频数据的活动流,都保持一个按填充下一缓存的请求时间(基于数据速率,线程等级)排序的队列120。该调度组从队列120中取出第一请求,分配一空闲缓存并且发出一用盘中数据填充缓存的I/O请求。当缓存满时,将其加入到满载缓存表中。报文调度组116接收到有关流的数据请求时,检查该满载缓存表。当从一通信节点14收到一数据报文并且所需缓存不满时,这种情况被认为是一漏极限。
C4.“正好准时”调度
一种“正好准时”调度技术被用在通信节点14和存储节点16上。该技术使用下列参数:
bc=通信节点14的缓存大小;
bs=存储节点16的缓存大小;
r=视频流数据速率;
n=包含视频流数据视频的线程数;
Sr=线程数据速率;和
Sr=r/n
使用的算法如下:
(1)sfc=在通信节点上对一个流的请求频率
=r/bc;和
(2)dfc=在存储节点上磁盘读请求的频率
=sr/bs。
在H节将详细描述视频数据的“线程”。
根据以上公式确定的频率对请求进行调度,以便在需要数据之前即已完成请求。这可以通过在播放一视频流开始时用数据注入数据管道来实现。
在连接时刻计算在播放流的通信节点14与包含视频数据的存储节点16上的sfc与dfc。频率(或其倒数,即周期)被用于调度来自存储节点16(参见图4)盘的输入和调度通信节点14(参见图3)端口的输出(以及来自存储节点的输入)。
正好准时调度的例子是:
以2.0兆位/秒(250,000字节/秒)播放按线程分割在四个存府节点上的一视频流。并假设通信节点上的缓冲区大小是50,000个字节、盘节点上的缓冲区大小是250,000个字节,同时假设按250,000字节/秒的段将数据分割成线程。
“正好准时”算法由各参数的值如下:
bc=250,00字节(通信节点14的缓冲区大小);
bs=250,000字节(存储节点16的缓冲区大小);
r=250,000字节/秒(流数据速率);
n=4(视频流被分割成线程的数);
Sr=r/n=6250字节/秒或250,000/4秒,即:每4秒250,000字节;
sfc=r/bc=1/秒,(通信节点14上的请求频率);和
dfc=r/bs=1秒,(存储节点16上的请求频率)。
负责播放流的通信节点14的按每秒1次的频率或1.0秒间隔对输入和输出请求进行调度。假定通信节点1 4有两个用于该流的缓存,通信节点14要保证在开始输出视频流之前,将两个缓存装满。
在连接时刻,通信节点14将已把报文发送到四个包含一个视频数据线程的存储节点16上。前两个存储节点将能预测到对线程第一段的请求并且调度盘请求来填充缓存。通信节点14将调度输入请求(参见图3)将前两段读进缓存中,每个缓存大小都是250,000字节。当一播放请求到来时,通信节点14将首先保证这两个缓存是满的,然后通知所有的存储节点16播放将开始。之后,它开始播放该流。当第一缓存已经开始输出时(按2兆位/秒或250,000字节/秒的速率,将需要1秒),通信节点14请求来自一存储节点16的数据。然后,通信节点14按顺序每隔1秒请求来自每一存储节点的数据,即:它将每隔四秒请求来自一特定存储节点的数据。它每次都请求250,000个字节。通信节点14在联接时刻计算通信节点请求来自存储存节16的数据的频率。
存储节节16按以下方式预测对流数据的请求。包含线程3的存储节点16(参见H节)在播放开始后一秒能够预测对下一250,000字节段的请求以及每隔4秒进行一次。包含线程4的存储节点16能够在播放开始2秒后预测一请求并且每隔4秒进行一次。也即:每个存储节点16从开始时刻起以每隔4秒250,000个字节的频率对来自盘的输入进行调度。在接收到一播放命令之后以及一流的缓存已被输出之后,在存储节点16上的调度完成。计算请求的频率是在接收到联接请求时进行的。
在通信节点14和存储节点16上也可以使用不同大小的缓存。例如,通信节点14的缓存可以是50,000字节,而存储节点16的缓存是250,000字节。在这种情况下,通信节点14的请求频率将是(250,000/50,000)5次/秒或每隔0.2秒一次,而存储节点16的请求频率仍是1次/秒。通信节点14从包含第一线程的存储节点中读前两个缓存(100,000字节)(注意:段的大小是250,000字节并且包含第一段的存储节点16将在联接时刻对来自盘的输入进行调度)。当播放开始时,通信节点14通知该存储节点16并且将其第一缓存中数据输出。当缓存为空时,通信节点14调度下一输入。缓存将每隔0.2秒就空,并且通信节点按此频率请求来自存储节点16的输入,同时也按此频率调度输出。
在本例中,存储节点16能够预测即将在0.2秒间隔里到来的5个请求(除了第一段的100,000字节已读到外,在播放开始后,每隔4秒前三个请求将到达,即:在前一序列的最后一请求的四秒之后,下一组五个请求(每个为50,000字节)序列将到达)。由于存储节点的缓存大小是250,000字节,存储节点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)通信节点然后向控制节点18发回一应答。
9)控制结点18结用户发回一流正在播放的应答。
输入与输出调度组继续向特定端口传送该视频图像,直到接收到一停止/暂停命令或视频播完。
D.媒体流部件与用户和应用程序的接口
媒体流部件10是一被动型服务器,它只有在接收到来自一外部控制系统的控制命令时才进行视频服务操作。图7描述了媒体流部件10的应用程序的系统配置及该系统提供的接口。
媒体流部件10为用户和应用程序提供两级接口,以控制其操作:
-用户接口(图7的(A));和
-应用程序接口(图7中的(B))。
两级接口都提供在客户控制系统上,它们可以通过一远程程序调用(RPC)机制与媒体流部体10通信。通过在客户控制系统上而不是在媒体流部件10上提供接口,可使应用软件与媒体流部件分离。这便于媒体流部件10的升级与更换,因为不需要改变或替换客户控制系统上的应用软件。
D1.用户通信
媒体流部件提供两类用户接口:
-命令行接口;和
-图形用户接口。
D1.1.命令行接口
命令行接口在用户控制台或接口(图1中的65、66)上显示一提示符。在命令提示符之后,用户可以输入一以命令关键词开始、后面跟着参数的命令。在执行完命令之后,接口又显示一提示符并且等待下一命令的输入。媒体流部件命令行接口特别适用于下列两种操作:
批处理控制:批处理控制用于开始执行一包含一系列视频控制命令的命令串。例如,在广播业中,可以提前将命令串准备好,包括可用在一较长时间周期里的预先录制的并已排定的节目。在排定的开始时刻,通过一单个批命令执行该命令串,开始播送而无需人工干预。
自动控制:自动控制用于执行由一程序产生的一命令表,以更新/播放存储在媒体流部件10中的资料。例如,一新闻社可能每天都将新的资料装到媒体流件10。管理这些新资料的一应用控制程序可以产生用新资料更新媒体流部件的媒体流部件命令(例如:装入、删除、转储)。可将这些命令送到命令行接口立即执行。
D1.2.图形用户接口
图8是媒体流部件图形用户接口的一个例子。该接口模拟一视频带式录像机的控制板,它拥有诸如播放、暂停、例带及停止等控制按钮。此外,当一操作需用户进行选择时,它还提供选择板(例如;“装入”需用户选择欲装入的视频图像)。图形用户接口非常适用于直接的用户交互。
在图形用户接口中还包括一“批处理”按钮130和一“转入/转出”按钮132。将在后面描述它们的功能。
D2.用户函数
媒体流部件10提供三类通用型用户函数:
转入/转出;
类似VCR的播放控制;和
高级用户控制。
D2.1转入/转出
转入/转出函数被用于将视频数据传送到媒体流部件10中和从媒体流部件10传送出视频数据。当将一视频从客户控制系统传送到媒体流部件10中(转入)时,可以将一文件或客户控制系统的一设备指定为视频数据源。在媒体流部件10中用一唯一的名字指定视频数据的目标。当将一视频从媒体流部件10中传出(转出)送到一客户控制系统时,那么在媒体流部件内用其自己名字作为视频数据源,并且将视频数据的目标指定为一文件或客户控制系统的一设备。
在转入/转出类用户函数中,媒体流部件10还提供一用于去掉一视频的“删除”函数和一用于获得有关存储的视频的信息(如名字、数据速率获得属性(get attributes)”函数。
为了通过图形用户接口调用转入/转出函数,用户可以按“转入/转出”软键132(图8)。这样可以调出一新的包含“转入”、“转出”、删除”、获得属性”等按钮的屏,从而可以调用各个函数。
D2.2类似VCR的播放控制
媒体流10提供一组类似VCR的播放控制。图8中的媒体流部件图形用户接口表示出下列可以使用的函数:装入、弹出、播放、慢速、暂停、停止、例带、快速向前和无声。可以通过按图形用户接口上的相应软键激活这些函数。媒体流部件命令行接口提供一组类似的函数:
建立(setup)-为一特定输出端口建立一视频。类似于将视频带装入一VCR。
播放-启动播放一已建立的视频或重新播发一已暂停的视频。
暂停-暂停播放一视频。
卸掉-模拟从-VCR中弹出一视频带。
状态-显示诸如正在播放哪一视频,已用了多少播放时间等端口状态。
D2.3高级用户控制
为了支持特定应用程序例如广播业中的需要,本发明提供了一些用户控制:
播放表(play list)-在一端口上建立多个待播放的视频及其队列。
播放长度(play length)-限制将要播放的视频的时间。
批操作(Batch operation)-完成储存在一命令文件中的一系列操作。
可以通过图形用户接口上的“装入”按钮134来完成播放表和播放长度的控制。每个“建立”命令将指定一将加入到用于一特定端口的播放表中的视频。该命令还为待播放的视频指定一时间限制。图9表示出在图形用户接口上按“装入”软键之后出现的屏幕,可用于选择一将加入到播放表中的视频和指定播放该视频的时间限制。当用户在“文件”框136中选一文件名,该文件名将进入“文件名”框138。当用户按下“加”按钮140,在“文件名”框138中的文件名及其时间限制将附加到“播放表”框142中,并且显示当前的播放表(以及播放表中每个视频的时间限制)。
通过使用图形用户接口(参见图8)上的一“批处理”软键,可完成批处理操作。
当“批处理”按钮130被激活时,将出现一个用户可以选择或输入命令文件名的批处理选择屏(参见图10)。按下该批处理选择屏上的一“执行”按钮144,开始执行所选命令文件中的命令。图10是图形用户接口上“批处理”与“执行”操作的一个例子。例如,首先用户已在C:/batchcmd目录下建立了一个包含一命令串的文件“batch2”。然后用户在图8所示的图形用户接口上按下“批处理”按钮130,出现批处理选择屏。之后,用户在批处理选择屏的“目录”框中选中“C:/batchcmd”,这样就在“文件”框148中显示文件清单。在“文件”框148中选中“batch2”,将其送到“文件名”框150中。最后,用户接下“执行”按钮144,从而顺序执行存储在batch2”文件中的命令。
D3.应用程序接口
媒体流部件10提供以上所述的应用程序接口(API),从而使应用控制程序能够与媒体流部件10相互作用并且控制其操作(可再参见图7)。
API由一些基于远程过程调用(PRC)的过程组成。应用控制程序通过过程调用激活API函数。过程调用的参数用于指定欲执行的函数。应用控制程序在调用API函数时无需考虑媒体流部件10的逻辑与物理位置。提供视频服务的一媒体流部件10的标识既可以在客户控制系统启动时,也可以在应用控制程序初始化时建立。一旦媒体流部件10的标识被建立,过程调用即被送到正确的媒体流部件10提供服务。
除了以下指出的之外,API函数是按同步方式处理的,即:一旦一函数调用返回到调用者,那么该函数已完成并且在媒体流部件10中不需要辅加处理。通过将API函数设置为同步操作,就可以免除用于文本交换、异步信令和反馈的辅加处理开销。由于对实时的严格要求,这种性能对于视频服务器应用是非常重要的。
对API函数的处理是按接收请求的顺序进行的。这样就可以保证按正确的顺序处理用户操作。例如,一视频在被播放之前应先联接(建立)。另一例子是如果将一后面跟着“暂停”请求的“播放”请求的顺序改变了,那么,对用户来说将产生完全不同的结果。
VS-PLAY函数启动视频的播放并且立即将控制返回给调用者(不需等待视频播放完)。这种结构的合理之处在于:通常播放一视频的所需的时间都很长(几分钟至几小时)并且无法预测(有可能有暂停或停止命令),所以通过按异步方式执行,VS-PLAY函数可以使它尽快释放资源,否则的话无法对这些资源进行预测,它们将被长时间地占用。
在视频播放完成时,媒体流部件10向由应用控制程序指定的一系统/端口地址发出一异步调用,通知应用控制程序视频播完。应用控制程序在调用API的VS-CONNECT函数联接视频时指定系统/端口地址。应注意,VS-PLAY的调用返回系统/端口地址是在各个视频级上指定的。这意谓着应用控制程序可自由地将视频完成报文发送给任意一控制点。例如,某一应用程序可能希望使用一个中央系统/端口很多或所有的客户控制系统处理视频完成报文。而在另一应用程序中,可能使用几个不同的系统/端口地址为一个客户控制系统处理视频完成报文。
API的这种结构可以使媒体流部件10能够支持多个并行的具有异型硬件和软件平台的客户控制系统,能有效地同时处理同步与异步操作,同时还能保证操作请求的正确顺序。例如,媒体流部件10可以使用运行在PS/2系统上的IBM OS/2操作系统,而客户控制系统使用的是运行在RS/6000系统上的IBM AIX操作系统(IBM,OS/2、PS/2,AIX和RS/6000都是国际商业机械公司的商标)。
D4.客户/媒体流部件间的通信
可以通过,例如,已知的远程过程调用(PRC)机制来进行一客户控制系统与媒体流部件间的通信,图11给出了用于一客户控制系统11与媒体流部件10之间通信的PRC结构。在调用媒体流部件函数中,客户控制系统11作为PRC客户,而媒体流部件10则作为PRC服务器。这在图11中表示为(A)。然而,诸如VS-PLAY等异步函数的完成会使媒体流部件10产生一个对客户控制系统11的调用。在这种情况下,客户控制系统11作为PRC服务器,而媒体流部件10是PRC客户。这在图11中表示为(B)。
D4.1客户控制系统11
在客户控制系统11中,用户命令行接口由三个内部并行处理的进程(调度组)组成。第一进程对一用户命令行输入进行语言分析并且通过调用API函数完成所请求的操作,其中调用API函数会导致对媒体流部件10的PRC调用(图11中的(A))。该进程还可以跟踪各输出端口上正在建立和播放的视频的状态。第二进程周期地对照指定的时间期限检验每一视频已用的播放时间。如果一视频已达到其时间期限,该视频将被停止和断开,并且开始播放该输出端口等待队列中的下一视频(如果有的话)。客户控制系统11中的第三进程作为一PRC服务器接收来自媒体流部件10的VS-PLAY异步中断通知(图11中的(B))。
D4.媒体流部件10
在媒体流部件10启动期间,有两个并行进程(调度组)被唤醒以支持客户控制系统11与媒体体流部件10之间的RPC。第一进程作为一PRC服务器(图11中的(A))。用于来自客户控制系统11的API函数调用的该第一进程接收PRC调用并且调度合适的过程完成所请求的函数(如VS-CONNECT,VS-PLAYVS-DISCONNECT)。第二进程作为一PRC客户,用于调用合适的客户控制系统地址用异步结束事件通知应用控制程序。该进程将其自己封锁在一内部管道上等待,该管道由其它处理视频播放的进程写入。当视频播完或出现一非正常终止状态时,处理视频播放的进程;向该管道中写入一报文。被锁住的进程读该报文并将一PRC调用(图11中的(B))送到合适的客户控制系统11的端口地址上,从而使客户控制系统能够更新其状态并采取相应的动作。
E.用于视频传送的媒体流部件的存储管理及优化
本发明的一个方面是提供能够在视频传送环境里融入高速缓存管理与相关I/O操作的集成机制。下面对本发明的这方面进行详细描述。
在高速缓存控制器和操作系统的文件子系统中都加入了用于高速缓存管理的现有技术机制,它们适用于一般目的,但无法满足视频传送的需要。
图12描述了一种把传统的高速缓存管理机制用于视频传送的方法。该技术使用了一被分割成两个磁盘文件160,162(因为对于一个文件来说太大)的视频和一包含一文件系统164、一媒体流服务器168和一视频驱动器170的处理器。它还描述两个用于两视频流的适配器端口172,174。图12还描述了将盘文件160的一段读到主存储器并接着将其写入第一视频端口172的数据流,以读相同的段并将其写入一第二视频端口174的数据流。图12用于描述现有技术中存在的而本发明的媒体流体件10可解决或克服的问题。
图12中步骤A1-A12的描述
A1.媒体服务器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中还叙述以下问题:
d.磁盘和视频输入/输出端口都是按相对较小段配置的,以满足一般的文件系统的需要。这将比按视频段大小来设计花费更多的处理时间、盘查找开销及总线开销。
b.在文件系统高速缓存与媒体服务器缓存之间及在媒体服务器缓存与视频驱动器缓存之间备份数据所需的处理时间是一不希望出现的开销,应消除它。
c.如使用两个视频缓存(即172、174)在相同时刻包含相同视频段的备份),则没有充份利用主存储器。当同样数据既存储在文件系统高速缓存中也存储也视频驱动器的缓存中时会更浪费。
E2.视频优化高速缓存的管理
根据本发明的高速缓存的管理主要分三个方面:通过流共享段长度的高速缓存;预测的高速缓存;同步以优化高速缓存。
E2.1通过流共享段长度的高速缓存
按固定大小段存储与管理视频。将段按顺序编号,这样,例如段5与段6相比,段5更靠近一视频的开始部分。对段的大小进行选择以优化盘的I/O、视频的I/O、总线的使用和处理器的使用。一个视频段具有固定的内容,它只与视频名称与段的序号有关。所有到盘上和视频输出端的I/O,以及所有高速缓存操作都根据段界对齐。
本发明的这一方面根据底层硬件是否支持同层对等操作采取两种模式,其中同层对等操作是指能在一通信节点14中,直接在盘与视频输出卡之间传送数据,而无须经过通信节点中的高速缓存。对于同层对等操作,高速缓存在磁盘存储单元16中。对于不支持同层对等操作的硬件,直接将数据按段大小设计的块读进按页对齐连续的高速缓存中(在通信节点14中),以使I/O操作和数据移动最小。(参见以下的视频优化数字存储分配)。
数据一直保留在同一地址上,并且直接从该地址写,直到不再需要该视频段为止。当视频段存在高速缓存中时,所有需要输出视频段的视频流访问相同的高速缓冲。于是,许多用户只使用一单个视频段的拷贝,从而避免使用用于读相同视频段拷贝的额外I/O,处理器和缓冲存储器。对于同层对等操作,在通信节点14上可省去一半的I/O及几乎所有的处理器和主存储器。
图13描述了本发明的一个实施例,用于不具有同层对等操作的系统。将视频数据在磁盘存储节点16上分割成线程,从而将偶数段分在第一般存储节点180上,奇数段分配至第二盘存储节点182上(参见H节)。
图13亦描述了这种配置的数据流。正如能见到的,将段SK从盘182中读出,送到通信节点186的一高速缓冲中,然后再将其写到视频输出端口1和2。通过一I/O操作将视频数据段SK直接读入高速缓存184,然后写进端口1。接着通过I/O操作将视频数据段SK从高速缓存184写到端口2。
可以看出,图13描述的系统可完全克服图12描述的传统方式带来的问题。
图14描述一用于包含支持一盘存储节点和一视频输出卡之间同层对等操作的配置的数据流。一对盘驱动器190、192包含一被分割成线程的视频图像,可以不通过一插入的通信节点14的主存储器而直接将其直接馈送到一对视频端口194、196中。
这种配置的数据流是直接从盘192中将段SK经过盘高速缓存198读到端口1(一个I/O操作)。
如果接着是一将段SK读到端口2的调用,那么,段SK将直接从盘高速缓存198被读到端口2(一个I/O操作)。
当用于端口1的被读进盘高速缓存器198的数据仍存在供写至端口2时,使用存储器,总线和处理器等资源的最佳方法是将视频段传送到端口1和端口2。
可以将同层对等操作和主存储器高速缓存机制结合起来,例如,对于只在通信节点14一端口上播放的视频图像使用同层对等操作,而对在通信节点14多端口上播放的视频图像使用通信节点14的高速缓存。
一种在盘存储节点与通信节点之间分配高速缓存的策略是使一给定硬件配置所支持的视频流的数量达到最大。如果支持的视频流数已知,那么就可以确定高速缓存的大小与布局。
E2.2可预测的高速缓存。
一种可预测的高速缓存机制可以满足视频传送的需要。视频图一般来说是可预测的。通常是从开始部分开始播放,按一固定速率在一预定期间内播放,只有到达结束部分才停下来。媒体流部件10的高速缓存策略利用这种可预测性使在任一时刻高速缓存的视频段组达到最优。
这种可预测性既可用来调度一读操作以填充一高速缓存,也可以驱动用于重新由请高速缓存的算法。那些其存储内容无法预测的缓存在其期满之前将被立即重新申请,释放空间以用于较高优先级。那些其存储内容在一合理时间内正在线上使用的缓存将不被重新申请,即使其最后一次使用是在很长时间之前也不重新申请。
更具体说,给定视频V1,V2……,与播放这些视频的流S1,S2……每个流sj播放一视频V(sj)并且写V(sj)的R-th段的预定时间是一线性函数:
t(sj,k)=a(sj)+r(sj)k,
其中a(sj)与开始时间和开始段号有关,r(sj)是播放一段所需的恒定时间,并且t(sj,k)是播放流sj的k-th段的预定时间。
这些信息被用于调度一读操作以填充一高速缓存和驱动高速缓存再使用算法。一些管理高速缓存操作的算法的例子如下:
例子A
在重新使用任何其播放是可预测的缓存之前,重新使用包含一无法预测其播放的视频段的高速缓存。满足这个限制之后,播放视频的频率和段号被用于确定保持视频段被高速缓冲存储的优先级。将组内的最高保留优先级分配给在一频率播放视频中最早出现的视频段。
例子B.
对于包含一可预测其播放的视频段的高速缓冲,预测的下一播放时间和该视频还剩下的未播放的流的数量被用于确定保持视频段被高速缓存的优先级。这种确定优先级的标准可以使一高速缓存的保留优级被设置或重新使用的高速缓存缓冲器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.视频优化数字存储器的分配
数字视频数据具有与正常数据处理的数据不同的属性,它是非随机的,顺序的、大量的并且在时间上比内容上更严格。多数据流必须按高比特率传送,并将数据路径上所有非必要开销减到最小。需要采用好的缓存管理方法,以使媒体流部件10的效率和容量最大。存储器分配、释放和访问是这种处理中的关键因素,不正确的使用会使存储器分成小的碎片,降低效率,延迟或损坏视频数据。
本发明的媒体流部件10使用了一种存储分配过程,它可以使高层应用程序为数字视频数据分配和释放不可交换的、页面对齐、连续的存储段(块)。该过程为视频传送应用程序提供一简单的、高层接口,并且使用低层操作系统模块与低码段按要求大小分配存储块。在物理存储器上这些存储块是连续的和固定的,可以消除虚拟存储中交换或分页带来的延迟与损坏,并能消除在数据传送软件中不得不使用聚焦/分散程序而带来的复杂性。
该高层接口还送回各种有关被请求存储块的编址方式值,从而不需要成本较高的动态地址转换以适应媒体流环境中各种同时运行着的存储模块的需要。其它设备驱动器(如一硬盘驱动器)可以直接访问其物理地址、以及由各种应用程序使用的进程线性地址与进程分段地址。一释放程序可以将一存储块返回给系统,这样由于整个存储器是作为一单个块返回的,就消除了存储碎片问题。
H.用于存储分配的命令
1.分配物理存储器:
按请求大小分配存储块,返回一具有存储区的各个存储模块地址以及块的长度的控制块。
2.释放物理存储器:
将存储块返回给操作系统并释放相关的存储器指针。
F2应用程序接口
在系统配置文件中定义一设备驱动器并在系统启动时自动将其初始化。一应用程序然后打开该设备驱动器,将其作为一伪设备,并获取其标记,接着使用接口以传送命令与参数。所支持的命令是分配存储器和释放存储器,参数是存储器大小及逻辑存储器的地址指针。这些地址在分配存储器的物理块时被指定并将物理地址转化成逻辑地址。如果分配失败,则返回零值。
图15表示一组使用本过程的应用程序。一32位应用程序向缓存1发出数据请求,将数据修改之后放到缓存2中。一个使用分段地址的16位应用程序或一物理设备(例如-硬盘驱动器),可以直接使用该缓存。通过使用这种分配模式预分配固定的、物理的和连续的缓存,每个应用程序可以使用其自己的直接地址访问数据,而不需要地址转换并消除由动态存储分配所引起的延迟。一视频应用程序可以使用这种方法,通过从物理盘中直接将视频数据放到缓存中,然后直接将其传送到输出设备,不需要在处理中多次移动,从而使数据移动减至最小。
G.用于视频应用的盘驱动最优化
将视频流等时地传送到其目的地是非常重要的,即:不带有任何人眼能感觉到的图象移动不连续和人耳能感觉到的声音的间断。当前的盘技术涉及周期性行为,例如运行可在数据访问中引起延迟的可预测错误分析。尽管大多数I/O操作能在100微秒内完成,100微秒的周期性延迟是常见的并且可能发生整整3秒的延迟。
媒体流部件10能够有效地维持高数据传送速率。如果一用于常规数据存储与检索的盘驱动器没有为视频服务器应用程序优化,那么对于存储器盘缓存,SCSI总线及盘容量的使用上都不够有效。
根据本发明一个方面的盘驱动器能够通过优化盘参数平滑、等时地传送大量数据。这些参数可以在制造专用于视频服务器的盘驱动器时加入,或者它们是可以通过一命令机制设置的变量。
设置控制周期性动作的参数以消除延迟或使延迟最小。设置影响缓存使用的参数以在一单个读或写操作中传送大量的数据。调整影响一SCSI总线与一处理器总线之间速度匹配的参数以使数据传送既不太快也不太慢。磁盘媒体本身按一扇区大小格式化以使有效容量与带宽最大。
为了完成最优化:
按最大物理扇区大小格式化物理盘媒体。这种格式化方式可以使在扇区之间的间隙中所浪费的空间最小,并且使设备的容量和脉冲串数据速率最大,一最佳方案是744字节的扇区。
磁盘可以有一相关联的缓存。该缓存被用于从磁盘媒体中读数据,并将其异步地送到总线上用于数据传送的。同样,该缓存还被用于保存来自于总线的数据,并将其异步地送到盘媒体中。该缓存可被分成一些段,而段的数量是由一参数控制的。如果分的段数太多,那么每一段太小无法容纳在单个传送中所请求的数据量。当缓存满时,设备必须启动再联接并且开始传送,如果总线/设备在该时刻没有准备好,将循环等待。在最佳实施例中,设定该值,以使每一缓存段至少与数据传送大小一样,即:设定成1。
在读操作中,当一缓存段开始填充时,盘试图与总线再联接,以将数据传送到主机。盘试图再联接的时刻影响总线使用的效率。总线与盘的相对速度确定了在填充操作期间开始向主机传送数据的最佳时刻。同样,在写操作时,缓存将被来自于主机的数据填充,在填充过程的某一时刻,盘应试图与总线再联接。准确的速度匹配可以减少在SCSI总线的断开/再选择循环次数,从而产生较高的吞吐量。
控制试图再联接的时刻的参数被称之为“读缓存满率”与“写缓存空率”,对于视频数据来说,用于计算这些值的较佳算法是256×(瞬时SCSI数据传送率-持续磁盘数据传送率)/瞬时SCSI数据传送率。目前用于缓存满率和缓存空率的较佳值是204。
一些磁盘驱动器的设计需要随温度变化周期地重新标定磁头位置。对一些类型磁盘还可以进一步控制:是在同一时间对在一个装配中的所有磁头做热补偿,还是在一时刻只对一磁头做热补偿。如果在同一时间对所有磁头做热补偿,则在视频数据读操作过程中会出现几百毫秒的延迟。读数据操作期间的较长延迟会需求较大的主存储器缓存,以使数据流平滑及消除多媒体图像中的人工痕迹。将磁头热补偿控制函数编程的较好方法是同一时刻对一个头补偿。
错误日志的保存及可预测故障的分析都需几秒钟才能完成。如果没有较大的主存储器缓存平滑数据、消除多媒体图像中的人工痕迹,则视频服务器应用将无法忍受这种延迟。空闲时间限制函数的参数可被用于阻止错误日志的保存和空闲时间函数的运行。最佳实施例设置了一参数来限制这些函数。
H.用于视频数据的数据线程
在视频应用程序中,有必要传送来自相同数据(例如影片)的多个流。这种需要可以转化成需要以高的数据速率读数据;该数据速率等于传送一个流所需的数据速率和以同时访问相同数据的流数。通常可以通过保存数据的多个备份来解决这个问题,但这会增加系统的额外费用。本发明的媒体流部件10使用一种可服多于来自一单个数据备份的多个同时流的技术。该项技术考虑了一单个流的数据速率以及可能同时访问数据的流的数量。
上述数据线程涉及一逻辑文件的概念。逻辑文件的数据被分块存储在多个文件部分,称之为线程。每一线程可以存在不同的磁盘卷上,所以允许逻辑文件跨过多个物理盘。盘既可以是本地的,也可以是远程的。
当数据被写到逻辑文件时,它被分解成逻辑长度(即,段)并顺序地放置到线程中。图16描述了一个用于视频1的逻辑文件,它被分成m段或块,每一段的大小是一特定值,例如是256KB。最后一段可能只填有部分数据。将一数据段放置到第一线程中,并将在该数据段之后的下一段放置到第二线程中,等等。当每一线程中都已有一数据段时,则将下一段写到第一线程中。于是,如果一个文件被分割成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段和4个线程,线程1是一包含视频文件1的段1,5,9等的文件;线程2是一包含视频文件1的2,6,10段、等的文件;线程3是一包含视频文件1的3,7,11段等的文件并且线程4是一包含视频文件1的4,8,12段,等的文件,直到视频文件1的所有m段都被包含在4个线程文件之一。
下面给出所描述的线程分割策略以及参数的计算,从而使每个视频的线程分割得以完善。
首先,选择段的大小,以从盘上获得一合理有效的数据速率。但它不能太大,反过来影响等时性。此外,它应足够小,以便能缓存/高速缓存在存储器中。一个较佳段的大小是256KB,并且当视频图像数据速率变化范围从128KB/秒至512kB/秒时是恒定的。如果视频数据速率较高,最好使用较大的段。段的大小与用于存储在相同媒体上的视频图像区的I/O操作的基本单位有关。所用原则是使用-包含大约0.5-2秒的视频数据的段。
接着,确定线程数,即:在其上分布着视频数据的盘的个数。该值应足够大,以维持所需要的总的数据速率。可以根据一预定的使用速率分别为每个视频图像计算该值。此外,每一盘有一与之相关的逻辑卷。将每个视频图像分解成一些组成文件,组成文件数与所需的线程数相等。每个组成文件被存储在不同的逻辑卷上。例如,如果必须按每流250KB/秒的数据速率传送视频数据,并且该视频有30个同时流,例如每隔15秒开始,那么可以获得一个至少是7.5MB/秒的总的数据速率。如果,一盘驱动器平均能支持3MB/SEC,那么视频图像至少需要3个线程。
从盘中读数据的有效速率受到读操作大小的影响。例如,如果从盘中按4KB块读数据(在盘上的一随机位置),有效数据速率可能是1MB/秒,而如按256KB块读数据,数据速率将是3MB/秒。但是,如果按非常大的块读数据,所需的缓存也将增大,并且因为在数据被访问之前读操作必须完成,所以会增加等待与延迟。于是在选择数据传送的大小时存在一折衷。要根据设备的属性及存储器的配置选择传送的大小。最好,将数据传送的大小等于所选段的大小。对于一给定段的大小,设备的有效数据速率是确定的。例如,对于一些盘设备,一大小为256KB的段是有效使用盘驱动器(有效数据速率3MB/秒)和缓存大小(256MB)的好的均衡值。
如果不使用线程,所能支持的最大流数将受到盘的有效数据速率的限制,例如,如果有效数据速率是3MB/秒并且-流的数据速率是200KB/秒,那么从盘中来的流最多不能超过15个。例如如果需要同一视频的60个流,那么必须将数据复制在4个盘上。然而,如果使用根据本发明的线程,只需使用1/4容量的4个盘。在总共来自视频数据一单个备份的60个流中,可以同时播放来自4个线程的每一个的15个流,错开流的开播时间以保证对60个流的请求能被均匀地分布在线程上。如果流开播的时间彼此相近,可以使用高速缓存中的视频数据以降低对I/O的需要。
对于一给定视频,线程数受两个因素影响;第一因素是在任意一时刻需要提供的来自视频的最大流数,另一个因素是在任意一时刻需要提供的来自所有作为视频被存在相同盘上的视频的总的流数。
可以按以下方式确定一视频的线程数:
S=maximum(r*n/d,r*m/d),
其中:
r=流播放的额定数据速率;
n=在额定速率下,来自于该视频图像的同时流的最大数量;
d=来自盘的有效数据速率;
(注意:盘的有效数据速率受段的大小影响)
m=在额定速率下,来自的所有包含该视频表示的任何部分的盘的同时流的最大数量;和
S=一个视频图像的线程数。
其上一个视频图像数据被线程分割的盘可作为一组进行管理,并且可以将其视为一很大的物理盘。线程可以使一视频文件的大小超出一系统的物理文件系统所能允许的最大文件一般来说,视频数据所需的盘空间在组内所有盘上并不完相同。为了均衡使用磁盘,在对一视频进行线程分割时,线程分割应从有最大的空闲空间的盘开始。
可以参照这样一个例子:一视频图形需要用2兆位/秒(250,000字节/秒)的速率播放,即:r等于250,000字节/秒,并假设需要从该视频最多同时传送30个流,即:n等于30。在该例子中还假设m亦等于30,即:从所有盘上传送的总流数是30。此外,还假设按250,000字节段大小分割数据,并且对于给定段的大小(250,000个字节)来自一盘的有效数据速率是3,000,000字节/秒。则所需m线程数n等于(250,000×30//3,000,000),取整为3(S=最大值(r*n/d))。
例如,如果来自所有包含该数据的盘的最大流数是45,那么需要250,000*45/3,000,000或3,75个线程,取整是4。
即使将该视频分割成3个线程也可以满足传送来自视频的单个备份的0个流的需要,如果包含该视频的盘还包含其它内容,并且所支持来自该视频的总流数是45,那么需要4个盘驱动器(线程分割4级)。
按如下方式在媒体流部件10中使用该算法。将存储器(盘驱动器数)划分成磁盘组。每组具有一定存储容量与存储能力,用以传送一给定数量的同时流(按基于一预定段的大小的每盘有效数据速率)。每组段的大小是恒定的。不同组可以选择不同的段大小(于是具有不同的有效数据速率)。当对一视频图像进行线程分割时,首先使用下述准则选择一组。
段的大小与视频的数据速率相一致,即:如果流的数据速率是250,000字节/秒,段的大小应在125KB至500KB之间。下一准则是要保证组内的盘数应足以支持最大同时流数,即:流数据速率是“r”,最大的同时流数是“n”,组中一盘的有效数据速率是“d”的组中的盘数。最后要保证盘组中所支持的来自于所有视频的同时流数量的总和不能超过盘组的容量。即:如果“m”是组的容量,则“m-n”应大于或等于能被同时播放的来自己存储在组中的视频的所有流数的总和。
在将视频数据装入到媒体流部件10时,在控制节点18中进行以上计算。最简单的情况是所有盘在一单个动态存储区中,该动态存储区限定了媒体流部件10总的容量,即:用于存储和所支持的流数。在本例中,可以从公式:m*r/d中计算出用于支持一给定的同时流数的盘数,其中m是流数,r是流的数据速率,d是一般的有效数据速率。注意,如果流的数据速率不同,则上述公式中的m*r应由所有同时流的数据速率之和的最大值来代替。
使用该项用于写数据的技术可以使数据能够被读出,以用于按一定速率传送的多个流,而不需要视频图像数字表示的多个备份。通过在多个盘卷上将数据分割成线程,可以使对用于传送一个流的文件的一部分的读操作不干扰对用于传送另一个流的文件的其它部分的读操作。
I.媒体流部件的数据传送与转过程
I1用于向转接器8进行视频传送的动态带宽的分配
通常视频服务器只能满足两个方面中的一个。它们或者使用PC技术建立一低费用(但也低带宽)的视频服务器,或者使用超计算技术建立一高带宽(也昂贵)的视频服务器。本发明的目的是以高带宽传送视频,但不需要超计算技术那么高的费用。
一种以低成本获得高带带的较佳方式是使用低等待转接器(交叉型电路转接矩阵)18将低成本PC点互联成一视频服务器(如图1所示)。媒体流部件结构的一个重要方面是有效使用每一存储节点16及通信节点14的可用的视频流带宽。通过将视频数据的特殊属性(一次写、多次读)与一低成本转接技术的动态的、实时带宽分配能力相结合使带宽达到最大值。
图18表示了在一转接器接口与一存储节点之间的一种传统的逻辑联接。转接器接口必须是全双工的(即信息可以在任一方向上同时发送)以使视频(及控制信息)即可以传送到存储节点,亦可从存储节点中传送出。因为视频内容是被一次写到存储节点,然后多次被读出,所以存储节点所需的大多数带宽是在朝着转接器方向上的。在一典型的转接器接口例子中,存储节点的带宽处于低使用状态,因为一半用于写的带宽很少使用。
图19表示了一个根据本发明的转接器接口。该接口动态而实时地将总的带宽分配给转接器18的进方向或者出方向,以满足节点的当前需要。(将存储节点16用作一例子)。通信节点14有类似的需求,但它们带宽的大部分是在转接器18的出口方向上。
通过使用合适的用于转接器18的路由标题将两个或多个物理转接器接口组合为一个逻辑转接器接口18a,以达到动态分配的目的。然后在两个物理接口之间分割视频数据(例如,在一读操作作时)。可以通过按前述的方法在多个存储设备上将数据分割成线段,以使其更容易实现。接收节点将视频数据组合回来成一单个逻辑流。
例如,将图18中的转接器接口速率定为2XMB/秒全双工,即每一方向上XMB/秒。但是视频数据通常只在一个方向上发送(以存储节点到转接器)。于是,即使节点有双倍的容量(2X)的视频带宽用于从存储节点传送数据。存储节点处于低使用状态。图19的转接器接口动态地分配整个2×MB/秒带宽,用以从存储节点向转接器发送视频。这样可以增加来自节点的带宽,来自视频服务器的带宽并能降低每一视频流的贵用。
J.使用通信适配器的等时视频数据的传送
数字视频数据具有顺序性、连续性及量大等特点,同时在时间上的要求比内容上的要求严格。必须以较高的比特率等时地传送视频据流,要求将数据路径上所有不必要的开销减到最小。通常用于接收的硬件是一视频机顶盒或一些其它合适的视频数据接收器。标准的串行通信协议通常在硬件级将数据的辅加位或字节插到流中,以用于同步和数据检验。如果接收器不能透明地从辅加数据移去,这会损坏视频数据流。由这些位或字节带来的额外开销会降低有效数据速率,产生视频解压和转换错误。
人们已认识到,如果通过标准通信适配器传送视频数据,为了保证将其等时地传送到用户,则需要禁止大多数的标准的串行通信信协议的属性。达到此目的的方法与所使用的通信适配器有关,但下面描述一下基本概念。在图20中,一通信节点14上的一串行通信芯片200禁止格式化和完整性信息,如奇偶校验、开始与结束位、循环冗余校验代码与同步字节,并阻止空闲字符的产生。FIFO输入缓存202,204,206等被用于保证在允许总线的装入数据块周期的同时视频流能恒定(等时)地输出。一个1000字节的FIFO缓存208可以简化CPU与总线装入逻辑。
如果通信输出芯片200不允许禁止一初始同步字节的产生,则应通过程序将同步字节的值变成每一数据块的第一字节值(并且将数据块指针加1指向第二个字节)。必须使用字节对齐管理真实数据,因为任何衬垫位如果不是实际压缩的视频数据,它们会损坏数据流。
为了达到高质量的压缩视频数据所需要的恒定,高速串行数据输出,应或者使用一环形缓存或多个大容量缓存(例如,202,204,206)。这对于在从一先前装满数据的缓存中输出数据时,以便有充分的时间填充一输入缓存是非常必要的。除非在视频数据流路径上早些进行缓存打包,否则,视频结束状态会产生一非常小的缓存,它将在下一缓存传送完成之前被输出,这样将产生一数据负载运行。这最少需要三个大的、独立的缓存。在双重方式存储器中的一环形缓存(读时也可以写)也是一合适的实施例。
J1将视频图像或影片从MPEG-1,1+或MPEG-2数字数据压缩格式转换成工业标准电视格式(NTSC或PAL)
正如以上所述,可以将数字视频数据从盘中移到缓冲存储器中。一旦缓冲存储器中的数据足够,则将它们从存储器移到一通信节点的一接口适配器中。使用的接口是SCSI 20MB/秒快/宽接口或SSA串行SCSI接口。可以将SCSI接口扩展成能处理15个地址,而SSA结构支持最多256。其它适用的是RS422、V、35、V、36,但不只是这些。
正如图21所示,来自接口中的视频数据从一通信节点14经过一通信总线210被传送到NTSC适配器212(也参见图20),在此数据被缓存。适配器212从一本地缓存214从取数据,在本地缓存中存储多个数据块,以使总线性能最佳。适配器212的根本目的是维持一个从存储器212到MPEG芯片216、218再到NTSC芯片及D/H222的等时数据流,以保证视频或/与音频的不间断传送。
MPEG逻辑模块216,218将数字(压缩)视频数据转化成元素级的视频与音频。一个NTSC编码器220将信号转化成NTSC基带模拟信号。MPEG音频解码器216将数字音频转换成并行数字数据,该数据然后通过一数字/模拟转换器222传送与滤波以产生音频左和右输出。
产生一解决速度匹配与等时传送问题的方案的目的不只为了使系统传送带宽最大,亦为了使对系统性能限制最小。
应用程序开发人员通常使用诸如SSA和SCSI等总线结构在处理器与机械存储设备(例如磁盘元件,磁带元件,光存储部件等)之间控制和传送数据。如果采取一些措施控制速度与视频数据的等时传送,这两种总线包含一些适用于视频数据交带宽传送的属性。
SCSI总线允许以20M字节/秒速率成组发送数据,这可以使任何视频信号从缓冲存储器到一特定NTSC适配器的传送时间最少。适配卡212包含一大的缓存214,它具有以高的峰值速率将数据从总线210成组发送到存储器和以非常低的传送速率将数据从缓存214传送到NTSC释码芯片216,218中。进一步将缓存214按段划分成较小的缓存并通过软件控制其连接,以形成一个按环形方式连接的多个缓存。
这样,系统就能将可变数据块大小的数据分别传送到缓存并控制播出的顺序。该方法的优点是能够在任何需要视频数据之前,释放系统软件并以很高的传送速率传送视频数据块。这可以使媒体流部件10能够根据动态输出要求管理许多视频流。当一通信节点上的一处理器有时间时,它能传送将按顺序播放的几个大数据块。一旦完成这点,该处理器可自由地控制其它流而不需立即将低速连续、等时数据传送到每一端口。
为了进一步改进译码器系统的性能/价格比,将一小的FIFO存储器224安插在大的译码器缓存214与MPEG译码器216,218之间。FIFO存储器224能够使控制器226将较小的块,通常是512字节的数据,从缓存214传送到FIFO存储器224中,接着,FIFO224将数据转换成串行位流以便传送到MPEG译码器216,218。音频与视频译码芯片218,216两者都能从相同的串行数据流中获得输入,也能在内部对所需数据进行分解与译码。对来自FIFO存储器224输出端数据的传送是按等时方式或基本上等时方式进行的,以保证将不间断的视频图像传送给视频图像的用户或消费者。
K.数字视频到SCSI设备的传送
如图22所示,设备级软件将来自缓冲存储器的压缩数字视频数据与命令流转换成SCSI命令与数据流,并将其按SCSI II快速数据速率通过SCSI总线210发送给一目标适配器212。然后,将该数据缓冲存储并按要求内容输出速率将其馈送到MPEG逻辑,以便解压并转换成模拟视频与音频数据。通过SCSI总线210提供与数据流同步并保证恰当管理缓存的反馈。
SCSI NTSC/PAL适配器212提供一个与SCSI总线210的高级接口,支持标准SCSI协议的一个子集。正常工作方式是打开适配器212,向其写数据(视频与音频)流并且只在完成时才关闭适配器212。为了保证其缓存满,适配器212以尽可能快的速率提取数据,而由通信节点14与存储节点16提供数据块,其中数据块的大小应使总线数据传送最优并使总线开销最小。
如果需要的话,可以使用一SCSI的选择方式命令通过控制包改写系统糁数。视频/音频同步是在适配器212内部进行的,不需要外部控制。通过自动再同步与持续音频/视频输出使错误减至最少。
K1 SCSI级命令说明
使用一组混合的直接存取设备与顺序设备命令以及标准通用命令来满足SCSI视频输出适配器的功能要求。所有SCSI命令在每条命令执行完之后返回一有效状态字节,并且如果返回一校验状态,检测数据区中装有错误状态。使用的标准SCSI命令包括:RESET,INQUIRY,REQUEST,SENSE,MODE SELECT,MOOE SENSE,READ,WRITE,RESETVE,RELEASE,TESTUNIT READ1/。
视频命令:
视频控制命令是用户级视频输出控制命令并且是上面所列出的标准命令的扩展。它们提供一简单的低级操作系统或SCSI命令的用户级前端,其中SCSI命令直接与SCSI视频输出适配器212接口。每一命令通过使用微码模拟必要的视频设备函数来实现,并且避免了由无效控制状态引起的音频与视频异常。可以使用一单个SCSI命令,START/STOP UNIT为目标SCSI视频输出适配器翻译视频控制命令以及随该命令传送的必要的参数。这既能简化用户应用程序接口,也能简化适配卡212的微代码。使用下列命令:
停止(SCSI START/STOP1-参数=方式)
如果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)馈送数据的过程,允许视频与音频输出。传送一选择的缓存序号,以决定从哪个缓存开始播放;如果序号为零值,则应使用当前的播放缓存(典型操作)。如果适配器212处于STOPPED模式,则只接收非零值;如果适配器212处于PAUSED模式,则不考虑缓存序号这一参数,而选择当前的缓存及其位置重新开始播放。
当正在播放时,控制器226顺序地循环通过各缓存以维持一进入到MPEG芯片组(216,218)的稳定的数据流。以合适的速率将数据以缓存读到MPEG总线,从地址需开始直到将N个字节读完,然后控制器226转到下一缓存并继续读数据。适配器总线与微代码既可以为SCSI到适配器缓存214的快速数据传送提供充足的带宽,也能为稳定地将数据装到输出FIFO224提供充足的带宽,其中输出FIFO224将数据馈送到MPEG解压芯片(216,218)。
快进(SCSI START/STOP6-参数=速率)
该命令用于模拟VCR上的快进功能。速率参数可以定义两种操作模式。速率零表示快进过程中视频与音频都应空白并无声,缓存充满,并且在从视频流向前的一新位置上接收到数据时,执行一隐含播放。1-10的整数表示输入流正在快进的速率。通过跳过几个数据块对视频“采样”以达到指定的平均数据速率。适配器212接近正常的速率播放数据的一部分,向前跳跃,然后播放下一部分,从而模拟快速向前动作。
倒带(SCSI START/STOP7-参数=缓存)
该命令用于模拟VCR上的倒带功能。速率参数可以定义两种操作模式。速率零表示在快速倒带过程中视频与音频应空白与无声,缓存充满,并且在从视频流向前的一新位置上接收到数据时,执行一隐含播放。个1-10之间的整数表示输入流正在回卷的速率。通过跳过几个数据块对视频“采样”以达到指定的平均数据速率。通过对一些小数据块组合形成倒带数据流,其中对小的数据块采样是在视频流连续较早位置上进行的。适配卡212平滑地处理转换与同步,以按正常速率播放,向后跳到下一采样位置以模拟倒带扫描。
K2.缓存的管理
数字视频服务器为许多并行输出设备提供数据,但数字视频数据解压与转换需要一恒定的数据流。使用数据缓冲技术可以吸取SCSI数据成组发送模式发送的优点,同时还避免数据负载或缓存过载,并能使媒体流部件10在很小干预情况下将数据发送给许多流。SCSI视频适配卡212(图21、22)包括一个用于视频数据的大缓存214,以更充分地利用SCSI成组发送模式数据传送过程。在示意性配置中,缓存214的大小是768K,一局部逻辑将其处理成一环绕式环形缓存。在传送数字视频数据时,环形缓存适于管理可变长数据块,而不适用于管理固定长缓存。无论从管理开销,还是从存储开销上考虑,固定长缓冲器都不够有效。
视频适配卡212的微码支持一些缓存指针,指向上一个顶端数据以及当前长度和顶端数据。这样就可将失败的发送重写,或者在需要的情况下,将指针指向当前缓存的字节位置。(也就是使中间逻辑按长字对齐,位或字特定为偶数)以保证到译码芯片组(216,218)的有效数据传送。该方法可以使稳定状态操作的开销最小,同时还可以灵活数据缓存。
K2.1缓存选择与定位
假设需要多组,并且有多个指针可用于所有与缓有关的操作。例如,可以使用一组来选择播放缓存以及该缓存的当前位置;使用一第二组选择写缓存以及该缓存的一用于数据预装入操作位置(通常是零)。因为也支持可变长度数据块,应保接收的每一数据块的当前长度与最大长度值。
K2.2自动方式
缓存的操作可由视频适配器的控制器226来管理,将N个字节的数据放到起始地址为零的下一个可用的缓存中。控制器226保持跟踪每一缓存中数据的长度以及数据是否已被“播放”。只要有足够缓存空间,该卡就接收下一个写命令和将DMA的数据送到空间缓存中。如果没有足够的空闲空间接收整个数据块(通常是一慢速播放或暂停状态),则不接收写命令并且返回一缓存满的返回代码。
K2.3手工方式
使用一“定位”命令为每一缓存访问命令(写,删等)选择一“当前”写缓存及在该缓冲器中的位置(通常是零)。缓存的位置与被成功发送的上一数据块的起始位置有关。这样做有助于视频流转换的管理,并且能很快地激活自动方式以使系统中的命令开销最小。
K2.4错误的管理
数字视频据发送对错误管理的要求与随机数据访问不同,在随机数据访问中,SCSI正常地用在数据处理应用程序中。小的数据丢失没有发送间断那么重要。正常的SCSI错误处理过程在每个命令完成的状态阶段返回状态字节。如果一错误已经发出,目标SCSI芯片227不能接收一命令或一检验状态,则状态字节或处于“好”(00)状态,或“忙”(8h)状态。
K2.5错误恢复
SCSI视频适配器212的控制器226根据一对装入错误与状态信息的检验状态应答自动产生一请求检测命令,并确定是否可能进行一恢复过程。正常的恢复过程是清除错误状态,除去任何损坏的数据并尽快重新开始播放。在最坏情况下,适配器212可能要重新启动,并且在重新播放之前,重新装入数据。在下一个查询或请求检测的SCSI操作中记录错误并报告给主机系统。
K26自动重试
在缓存满或设备忙条件下,要自动重试最多X次,其中X与流数据速率有关。这只允许在下一数据缓存到达时刻之前对该点进行。在该点,如果状态是非预料的(即:缓存满,但又不是处于暂停或慢速播放模式),则记录错误,并且可能需要重新启动或清除设备以恢复并继续播放视频。
尽管在前面的说明书中已描述了将一视频图像传送给一用户,应该认识到的是,可以使用双向视频适配器接一视频图像,并将视频图像数字化成一数字表示,并通过总线210将数据表示发送给一通信节点14,然后经过低等待转接器18存储在由控制节点18指定的一存储节点或多个存储节点16、17中。
应认识到前述说明只是本发明的一个描述。本领域的技术人员在不偏离本发明的条件下可以进行各种替换和修改。因此,本发明将包括所有包含在所附权利要求书范围内的各种替换、修改和变化。