第一代的DVI系统软件如图5-3所示,图5-3给出了DVI运行软件的所有模块及它们的相互关系。图中最下层是DVI系统的硬件。较早的一型DVI硬件系统包括:DVI视频板,音响板,多功能板以及IBM PC/AT的硬件。直接和硬件打交道的软件叫驱动器,它也是一个软件模块。初始化时在引导程序作用下,把它安装到系统RAM中常驻内存。一种多媒体硬件设备需要一个驱动器模块,这里有:为视频板设计的视频驱动器,为音响板设计的音响驱动器以及为多功能板设计的多功能驱动器。
  再上一层是驱动接口模块,驱动接口模块建立了为高层应用软件所使用的虚拟设备。驱动接口的调用是应用程序最低层的存取功能。虚拟设备是软件的实体,它规定实际设备的接口特性。虚拟设备的描述与实际设备不同,从软件操作的角度来看,它可以描述得更详尽,例如中断,通道接口以及更复杂的软件操作。连接驱动器的是驱动器接口模块,在DVI系统中共有四个  驱动器接口模块
  (1)微码接口模块[Mc]:它是82750 PA的接口模块,负责微码的加载和执行,同时也负责主机系统对VRAM的存取。
  (2) 视频接口模块[Vid]:它是82750 DA的接口模块,负责82750 DA的初始化。同时,它还包含了视频信号数字化器的接口软件。
  (3) 多功能接口模块[Ut1]:它提供CD-ROM和操纵杆的接口软件。
  (4) 音响接口模块:它是音响板和音响数字化器的接口软件。
  在同一层次上还有两个IBM PC/DOS的扩展模块:
  (1) 实时执行模块[Rtx]:它为DVI应用软件提供实时多任务操作环境。
  (2) Microsoft CD-ROM扩展模块[MSCDEX]:它是DOS扩展模块,它能够使满足ISO 9660的CD-ROM文件用一般的方法在硬盘和软件上自由存取。
  在DVI软件系统中还有两个高层次的软件包,如图所示一个是图形软件包[Gr],一个是音频视频支撑软件AVSS[Av]:
  (1) 图形软件包[Gr]:它提供图像处理,图形绘图基元以及视频管理功能。图形软件包是一组管理位映射信息的子程序。图形子程序可以用结构图形、图像和文本三种不同形式进行操作。
  (2) 音频视频支撑系统AVSS[Av]:AVSS软件可管理用AVSS格式写的视频、音频文件。它也能播放从CD-ROM、硬盘或RAM中读出的视频、音频数据。AVSS文件格式比一般的文件复杂得多,它支持多数据流。例如,它可包括一个视频数据及两个立体声的音响数据,能够较好地解决视频信息和音频信息的同步问题。
  最上面是应用层,它可以提供大量的应用程序,例如:导游、销售点、教育培训以及文档管理系统等等。在应用层下面还有两个高层的DVI系统的接口:
  (1) DVI系统生产工具软件:它能够获取、压缩和显示静态图像,同时能完成静态图像各种格式的转换。它能够实时获取、压缩运动的视频图像和音频数据,建立、拷贝、编辑以及播放  AVSS音频和视频文件,记录、编辑和播放音响文件。完成上述功能它不需要用C语言编程,它能够在DOS提示符下解释执行各种工具命令,而不需要象C语言那样的编译和连接。
  (2) 多媒体编程工具著作语言,用著作语言编制应用程序,它能够把应用程序构造成流程图或者故事板(Story board)的形式。它能够用简单的语言描述所有不同的屏幕和序列,然后著作软件建立应用码,同时允许开发者根据经验交互式地改善和修改应用程序运行结果。上述过程结束,应用程序就生产出来了,应用者可以完全不了解C语言和DVI系统的详细情况。

  AVSS模块
  播放DVI系统中运动的视频和音频数据,使用了叫做音频视频支撑系统软件子程序模块,简称AVSS(Audio/Video Support System)。AVSS需要视频和音频特殊格式的数据,叫做AVSS文件格式。下面将介绍AVSS操作的基本概念,例如,AVSS播放运动视频,运动视频加上音频,单独的音频以及静态图像。AVSS也允许应用程序同步播放视频数据。
  (1)AVSS文件格式
  像图像文件格式一样,AVSS文件格式(扩展名为.avs)能够提供较多的灵活性和扩展性。它比图像文件更复杂,它能够支撑多数据流同时操作,例如一个AVSS文件可以包括一个视频数据流和两个立体声音频数据流。更复杂的情况,一个AVSS文件可以包括4个视频数据流和4个音频数据流,以一个多窗口的视听效果播放,或者是应用程序希望播放4个视频数据流中的一个,需要时立即切换到另一个。
  每个文件多个数据流的方法在多媒体软件系统中是非常需要的,当使用较慢的存储设备时,如CD-ROM,一次能够连续播放运动的视听数据一定要采用这种方案。AVSS系统曾经尝试过用并行的方案同时播放两个不同的AVSS文件,这需要较大的缓存和较快的存储设备。
  根据音频和视频流的类型,AVSS文件中又提供了三种附加数据流的类型:底层数据,数据和图像。底层数据是任意一种类型的数据,它必须同视频和音频信息一起实时提供,例如一种底层数据是时间码,它与AVSS文件的每一帧一起存储。数据流是由计算机常用的数据序列组成,直到全部数据流存储到存储器之前,应用程序不能使用该数据。AVSS系统有责任把视频、音频和图像流转换成声音和图像。AVSS系统允许应用程序使用底层数据,并为其提供方便,例如当底层数据到达时,存取底层数据;从数据流收集底层数据并把它存到由应用程序规定的缓存区中;当数据流到达时,通知应用程序。
  保存AVSS文件的介质,如CD-ROM,硬盘的RAM盘,只能使用二进制代码的单数据流。因此在AVSS文件中的多数据流只能采用如图5-6所示方法将多数据流交叉变成单数据流文件,这是AVSS文件最基本的格式。AVSS文件可能是相同的视频帧信息,也可能不是。它们是一束数据,该数据包含一块从有用的数据流开始的完整的数据。通常在AVSS帧中一个视频块应该是单个图像或一个定义完整的视频帧(虽然视频帧可能是一个帧到一帧压缩码数据,但是它假设提供的帧数据是可用的),这个文件格式也能够表示不完整的图像的一个视频块的数据。

  AVSS一帧单独的一块也可能没有固定的尺寸,特别是经过压缩编码的视频数据,某些帧可能比另外一些帧多些或少些数据。播放时要保持一定的平均速率,对于慢速的存储设备是非常重要的。要播放一个长序列数据必须克服CD-ROM需要的寻找时间,一圈的寻找时间至少要引进几百毫秒的延迟,也可能更多,或许它可能引进不能接受的数据中断。因此,AVSS文件常常包含一些缓冲衬垫数据,为了控制平均字节速率,通常附加一些空位的数据流,与其他有用的数据流交织在一起。
  (2)AVSS文件的操作
  通过DVI系统中的实时执行模块RTX操作AVSS文件。为了说明AVSS,我们将引进一些RTX的概念。RTX是运行DVI应用程序中的多任务形式。RTX的基本工作单元是任务;建立PC AT的中断结构,因此,很多RTX任务能够"同时"操作。具体是每秒钟中断80286 CPU 30次来实现上述的"同时"。应用程序中任务的执行取决于中断优先排队的结构,RTX调度将给每个任务顺序运行的机会。各个任务通过系统事件标志能够完成相互的通信。
  当运行AVSS文件时,它将激活三个优先RTX任务:几个从外存送到RAM的数据传送任务;VDP1任务,处理控制像素处理器82750 PA的任务;VDP2任务,处理图像显示任务。这三个任务完成了播放视频和音频全部工作。
  图5-7给出了与AVSS有关的数据流方框图,在图的左下角读入数据,从硬盘,CD-ROM或RAM读入数据。第一步是数据的语法分析,如前所述,把数据分解成单个的数据流:视频数据送到VRAM,音频数据送到音频板的RAM中,底层数据送到应用程序在系统DRAM中建立的缓冲区。图5-7的中心部分给出AVSS用VRAM所作的工作,最左边是输入缓冲区,它存放经过压缩编码的视频位数据流。右边下一个是为VDP1(82750 PA)存放显示命令表的VRAM区,图形软件模块使用视频的空间,通常在VRAM顶部的位置。再右边是一些显示缓存区,用来解压缩视频帧数据。显示缓存区典型数据是六个,当然有些情况需要更多一些。AVSS的VDP1任务负责通知VDP1解压缩位数据流,并且把结果放到图上特殊的缓冲区,解压缩数据缓冲区DBn+1。当然,VDP1也可能存取前一帧数据DBn,同时通过显示表得到操作命令。如图所示,在同一时间,VDP2任务告诉VDP2(显示处理器82750 DA)显示再上一帧DBn-1中已经完成了解压缩的数据。因此,在当前显示使用的一个缓冲区之前,已经有几个缓冲区正在使用。
   5-7 AVSS数据流图

  当AVSS文件正在运行时应用程序要做的另外其他事情是可能的,这是因为AVSS中有一个Hook子程序的概念。Hook子程序是一种C语言功能,应用程序能够为每个视频帧在AVSS进程的特殊点建立Hook子程序调用。图5-8给出了在AVSS流水处理时,三个Hook子程序调用点。图中从左向右也说明视频帧数据在系统中的处理过程。三个方块表示语法分析、解压缩以及显示激活的三个AVSS任务。在任何时间,每个任务的前面都要把某些东西存到缓冲区中。Hook子程序能够在图上Hook符号表示的点建立Hook子程序的调用。当任何一帧压缩编码数据在压缩编码缓冲区完成压缩编码并且开始解压缩处理时,第一个Hook(0)能够被调用。如果Hook子程序在这里激活,它标明了子程序将被调用、通过的帧数以及帧缓冲区的位置。
  介绍的应用中,AVSS播放的背景音乐是从RAM盘中调入,播放的视频数据是从CD-ROM中调入的。RAM盘中的音响数据,作为单独的音响数据文件或者是伴随导游介绍视频信息,较早地从CD-ROM中读到RAM盘中。在同一时间播放视频流,另一种办法是一个视频数据流来自CD-ROM,另一个视频数据流来自硬盘。如果运行多个AVSS视频处理,则必须注意要为每个视频处理提供充足的缓冲区。
  AVSS是为播放运动视频DVI的运行时软件。正如前面所说,我们称VDP芯片组(82750 PA和82750 DA)是DVI硬件系统的心脏,在这里我们应该称AVSS是DVI软件系统的心脏。AVSS是演示DVI技术中所有视频和音频计算机能力的软件,它允许应用设计者在同一时间单独或混合使用DVI技术中所有的演示模式。

  在学习AVSS的文件格式和文件操作之前,先从DVI系统运行的软件结构图出发,学习AVSS在系统中所处的层次。更好的理解其功能和作用。DVI系统运行的软件结构图如下:图5.3--2。
   5.3--2

  AVSS位于高层次模块层,其主要功能是:
  AVSS软件可管理用AVSS格式写的视频、音频文件。它也能播放从CD-ROM、硬盘或RAM中读出的视频、音频数据。AVSS文件格式比一般的文件复杂得多,它支持多数据流。例如,它可包括一个视频数据及两个立体声的音响数据,能够较好地解决视频信息和音频信息的同步问题。
  (1) AVSS文件格式
  ·AVSS文件格式(扩展名为.avs)
  能够提供较多的灵活性和扩展性。它比图像文件更复杂,它能够支撑多数据流同时操作,例如一个AVSS文件可以包括一个视频数据流和两个立体声音频数据流。更复杂的情况,一个AVSS文件可以包括4个视频数据流和4个音频数据流,以一个多窗口的视听效果播放,或者是应用程序希望播放4个视频数据流中的一个,需要时立即切换到另一个。
  ·AVSS提供的三种数据类型
  底层数据
  数据
  图像:
  ·多数流转换为短换单数据流
  如图5.3--3所示。图中将两个视频流、2个音频流的的第一侦按顺序变成一维的据流。
  图5.3--3 多数流交叉变成单数据流文件
   5.3--3 多数流交叉变成单数据流文件
  
  (2) AVSS文件的操作
  通过DVI系统中的实时执行模块RTX操作AVSS文件。为了说明AVSS,我们将引进一些RTX的概念。RTX是运行DVI应用程序中的多任务形式。RTX的基本工作单元是任务;建立PC AT的中断结构,因此,很多RTX任务能够"同时"操作。具体是每秒钟中断80286 CPU 30次来实现上述的"同时"。应用程序中任务的执行取决于中断优先排队的结构,RTX调度将给每个任务顺序运行的机会。各个任务通过系统事件标志能够完成相互的通信。
  ·当运行AVSS文件时,它将激活哪三个优先RTX任务:
  几个从外存送到RAM的数据传送任务;
  VDP1任务,处理控制像素处理器82750 PA的任务;
  VDP2任务,处理图像显示任务。
  这三个任务完成了播放视频和音频全部工作。