随着计算机技术、多媒体和数据通信技术的高速发展,人们生活水平的提高,对计算机视频的需求和应用越来越多,如视频监控、视频会议、计算机视觉等。计算机视频提供给人的信息很多,但是视频的数据量很大,不利于传输和存储,使其应用受到不少限制。为解决视频数据的存储和传输,唯一途径就是对视频数据进行压缩。
目前常见的视频压缩方法有MPEG-1、MPEG-2、MPEG-4、H.261、H.263等。考虑压缩技术的成熟度和该压缩卡的主要用途,本文采用MPEG-1作为压缩标准,研制了基于PCI总线的MPEG-I压缩卡。该卡适用于视频监控、视频会议等多种应用场合。该卡加上一台主机、摄像头和软件可构成一个完整的视频采集压缩系统。
1 、系统特点
(1)支持BNC、RCA、S-VIDEO视频接口;
(2)支持PAL和NTSC制式;
(3)可对视频实时预览,最大分辨率可达720×576×32;
(4)可对声音进行同步监听;
(5)可对音、视频信号进行MPEG-I压缩,生成MPEG文件和VCD文件;
(6)用户可编程MPEG-1编码设置,可支持CBR和VBR;
(7)可一机多卡同时工作;
(8)可从动态影像中捕获单帧,生成JPG和BMP文件;
(9)支持Win98/Win2000。
2 、系统硬件设计
2.1 系统组成
该系统主要由视频解码、音频解码、压缩核心和PCI接口等组成,其总体框图如图1所示。
2.2 视频解码设计
视频解码部分主要完成模拟视频到数字视频的处理,以供后面预览、压缩用。视频解码芯片常用的有SAA7110、SAA7113和SAA7114等。本方案中采用Philips公司的SAA7114。SAA7114有六路模拟输入,内置模拟源选择器可构成6×CVBS、2×Y/C2×CVBS、1×Y/C和4 ×CVBS;两路模拟预处理通道,内有抗混迭滤波器;CVBS或Y/C通道含完全可编程静态增益控制或自动增益控制功能,对CVBS、Y/C通道可进行自动钳位控制;能自动检测50Hz/60Hz场频,并可自动在PAL和NTSC制式进行切换;能将PAL、NTSC和SECAM信号解码及模数变换得到符合ITU-601/ITU-656的数字电视信号。该芯片是目前视频解码芯片中接收视频源的宽容性及视频解码图像质量最好的一种。其通过I2C接口,进行初始化设置。
本系统采用Image Port作为数字视频输出端口,数字视频格式采用ITU-656AI11(PIN 20)作为BNC/RCA输入脚,AI12、AI22作为S-VIDEO输入脚。
2.3 音频解码设计
音频解码的数据一部分提供给SAA7146A作声音监听用,另一部分用于压缩。考虑到成本,本系统采用BURR-BROWN公司的PCM1800E。该芯片是双声道单片ΔΣ型20 位ADC单+5V电源供电,信噪比为95dB(典型值),动态范围95dB(典型值),内嵌高通滤波器,支持四种接口方式和四种数据格式。其采样频率为32kHz、44.1kHz和48kHz可选。
本系统采用从模式,20位I2S数据格式。主时钟由SAA7114提供。
2.4 MPEG-1压缩部分设计
本系统中MPEG-I压缩芯片选用ZAPEX公司的SZ1510。该芯片基于TI的TMS320C54x DSP内核,能对ITU-601/ITU-656数字电视信号和PCM音频流进行MPEG-1实时压缩,可生成多种流,如音频基本流、视频基本流、音视频复合流等。
该芯片外接27MHz晶振,可支持多种主机接口,可工作在复用或非复用、Intel或Motorola类型总线。通过输入管脚HCONFIG1:0和SysConfig寄存器可设置成六种总线接口类型:Intel 8051类型的数据/地址复用的8位总线、Motorola类型的数据/地址复用的8位总线、Intel 8051类型的非复用的8位数据总线、Motorola类型的非复用的8位数据总线、Intel 8051类型的非复用的16位数据总线和Motorola类型的非复用的16位数据总线。支持I2S声音接口。
本系统中采用Intel 8051类型的非复用的16位数据总线。
2.5 PCI接口部分设计
本系统中PCI接口芯片选用SAA7146A,该芯片并不是通用的PCI接口芯片,而是一个多媒体桥(MulTImedia Bridge)。方框图如图2。该芯片符合PCI2.1规范。它有八个DMA通道,三个视频,四个音频,一个DEBI(Data Expansion Bus Interface)。还具有两路视频通道,可对视频数据进行缩放,一路可无级缩放HPS(High Performace Scaler,其纵向可达1:1024、横向可达1:256;另一路有级缩放BRS(Binary RaTIo Scaler支持CIF和QCIF格式。
音频接口以I2S为基础,通过编程控制以支持MSB-FIRST的不同格式及不同的时序格式。
本系统中该部分主要实现功能如下:
(1)通过DEBI接收SZ1510产生的MPEG-1数据,传输到内存;
(2)通过视频接口,接收SAA7114输出的视频解码信号,并进行亮度、色度、饱和度的控制,并实现无级缩放功能实现视频预览功能;
(3)通过音频接口,接收PCM1800E输出的PCM编码信号,传输到内存,实现声音监听功能;
(4)提供符合PCI2.1规范的接口,将板上数据传输到主机内存。
3、 软件设计
软件设计主要包括驱动程序设计和应用层的API设计。
驱动程序主要负责与硬件打交道,应用层API主要负责与驱动程序接口。由于设计了应用层的API,应用程序可很容易在上面进行开发。
3.1 驱动程序设计
为了支持Windows2000和Windows98采用WDMWindows Driver Model 驱动程序。WDM 作为微软的最新驱动程序模型与传统的Win3.x和Win95使用的VxD驱动完全不同。WDM可支持电源管理、自动配置和热插拔等。WDM驱动的设计可以采用Driver StudioDS、Windriver、DDKDriver Device Kit等。本系统驱动采用Windows 2000 DDK借助VC6.0设计。
3.1.1 MPEG-I压缩部分
在驱动中,重置SZ1510后,就可以装载相应工作模式的微码;根据需要,设置好相应寄存值后就可以启动SZ1510对视频数据进行MPEG-1编码。每当产生的压缩数据超过SZ1510内部的FIFO门限后,SZ1510产生相应中断,内核调用中断例程,在中断例程中调用中断延迟例程DPC,在中断延迟例程中接收产生的压缩数据。SZ1510提供两种方式提取数据,一种用I2C总线接口方式,另一种用DEBI方式。
在本系统中,采用DEBI进行压缩数据的传输。考虑到压缩数据产生的速度,本系统开了32页大小的缓冲区,在中断延迟例程中填充该缓冲区。每当填满8页大小后,产生一个事件通知应用层进行数据读取。通过这种方式,可以避免压缩数据的丢失。
其流程图如图3所示。
在驱动中,压缩数据的提取方式将极大地影响生成MPEG文件的质量。如果处理不当,将导致马赛克、跳帧等现象。
3.1.2 驱动程序中用户缓冲区的访问
在本驱动中由于缓冲I/O和直接I/O都被使用,DO_BUFFERED_IO标志位和DO_DIRECT_IO标志位都被设置。
在定义IOCTL码中,对缓冲I/O使用METHOD_BUFFEERED对直接I/O使用METHOD_OUT_DIRECT。
3.2 应用层API设计
应用层对驱动程序的访问通过调用Win32 I/O函数(如ReadFile、WriteFile和DeviceIoControl)访问。当应用层调用Win32 I/O函数以请求I/O后,该请求由内核的I/O系统服务接收,I/O管理器对该请求构造合适的IRP包,并将其传给驱动程序栈,IRP在栈中进行传递,传到驱动程序进行处理,并将结果返回给应用程序。
通过应用层API,在其上面可进一步开发各类应用程序。
本系统达到了预期的要求,能够在音视频采集过程中对视频、音频进行实时预览、监听。压缩生成的文件可在标准媒体播放器上播放,并可对生成的VCD文件进行刻录,然后由VCD机播放。
责任编辑:gt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)