保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于PCI总线的MPEG-1压缩卡软硬件设计及实现


WDM作为微软的最新驱动程序模型与传统的Win3.x和Win95使用的VxD驱动完全不同。WDM可支持电源管理、自动配置和热插拔等。WDM驱动的设计可以采用DriverStudio?DS?、Windriver、DDK?DriverDeviceKit?等。本系统驱动采用Windows2000DDK借助VC6.0设计。
  
  3.1.1MPEG-I压缩部分
  
  在驱动中,重置SZ1510后,就可以装载相应工作模式的微码;根据需要,设置好相应寄存值后就可以启动SZ1510对视频数据进行MPEG-1编码。每当产生的压缩数据超过SZ1510内部的FIFO门限后,SZ1510产生相应中断,内核调用中断例程,在中断例程中调用中断延迟例程?DPC?,在中断延迟例程中接收产生的压缩数据。SZ1510提供两种方式提取数据,一种用I2C总线接口方式,另一种用DEBI方式。
  
  在本系统中,采用DEBI进行压缩数据的传输。考虑到压缩数据产生的速度,本系统开了32页大小的缓冲区,在中断延迟例程中填充该缓冲区。每当填满8页大小后,产生一个事件通知应用层进行数据读取。通过这种方式,可以避免压缩数据的丢失。
  
  其流程图如图3所示。
  
  在驱动中,压缩数据的提取方式将极大地影响生成MPEG文件的质量。如果处理不当,将导致马赛克、跳帧等现象。
  
  3.1.2驱动程序中用户缓冲区的访问
  
  驱动程序访问用户内存主要通过缓冲I/O和直接I/O。缓冲I/O?I/O管理器创建一个内核模式拷贝缓冲区,并把用户缓冲区的内容拷贝到该缓冲区中,并在IRP首部的AssociateIrp.SystemBuffer域中存储该非分页内存地址。驱动程序可简单地读写该块内存。直接I/O,I/O管理器为输入数据提供一个内核模式拷贝缓冲区,对输出数据提供一个内存描述符(MDL)。为了使用缓冲I/O或直接I/O?在创建设备时,必须设置设备对象的Flags域中的DO_BUFFERED_IO标志位来使用缓冲I/O或设置DO_DIRECT_IO标志位来使用直接I/O。
  
  在本驱动中由于缓冲I/O和直接I/O都被使用,DO_BUFFERED_IO标志位和DO_DIRECT_IO标志位都被设置。
  
  在定义IOCTL码中,对缓冲I/O使用METHOD_BUFFEERED?对直接I/O使用METHOD_OUT_DIRECT。
  
  3.2应用层API设计
  
  应用层对驱动程序的访问通过调用Win32I/O函数(如ReadFile、WriteFile和DeviceIoControl)访问。当应用层调用Win32I/O函数
  
  
  
  以请求I/O后,该请求由内核的I/O系统服务接收,I/O管理器对该请求构造合适的IRP包,并将其传给驱动程序栈,IRP在栈中进行传递,传到驱动程序进行处理,并将结果返回给应用程序。
  
  通过应用层API,在其上面可进一步开发各类应用程序。
  
  本系统达到了预期的要求,能够在音视频采集过程中对视频、音频进行实时预览、监听。压缩生成的文件可在标准媒体播放器上播放,并可对生成的VCD文件进行刻录,然后由VCD机播放.
  
  
  
 

《基于PCI总线的MPEG-1压缩卡软硬件设计及实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/140730.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。