APP下载

基于DM36X医用高清DVR系统的设计

2014-12-18陈文艺

电子科技 2014年11期
关键词:移动硬盘大容量分辨率

陈 鹏,陈文艺,杨 辉,李 昂

(1.西安邮电大学通信与信息系统学院,陕西西安 710061;2.西安邮电大学物联网与两化融合研究院,陕西西安 710061)

随着嵌入式视频设备的广泛应用,尤其是基于TI公司达芬奇视频处理技术的DM365芯片在网络摄像机(IP Camera)视频监控方面的成功运用,使得DM36x芯片相比其他同类芯片在功耗、扩展性、编码效率、画质等方面的性能均具有一定优势[1]。特别是DM368芯片的推出,实现了包括H.246编解码在内。多格式的1080P/30 fip·s-1压缩且在画质和编码方面也有了进一步的提升。目前在医疗领域,大部分视频处理设备体积庞大并对PC机的依赖性较强,携带不便。而基于DM36x芯片具有扩展性强、接口丰富的特点,通过外接USB移动硬盘,既保证了便携性的要求,又实现了大容量数据存储的需要,使得这种医用高清DVR系统在国内医用领域具有广阔的发展前景。

本系统在IP Camera方案的基础上,以TI公司基于达芬奇技术的TMS320DM365处理器为核心,其可无缝连接外接数字摄像头,也可通过A/D转换外接模拟摄像头,将采集到的视频图像数据经系统前端处理及H.264、MPEG4、JPEG等标准压缩后,通过以太网接口传送到TCP/IP网络或通过USB接口存储到本地设备中,从而完成用户通过远程PC主机上的客户端软件对1 280×1 024分辨率每秒30帧视频的实时观看,以及USB移动硬盘的挂载,并将某一时间段内的视频数据以文件的形式保存在本地移动硬盘中。

1 总体方案设计

系统架构如图1所示,在TI公司基于达芬奇技术的TMS320DM365处理器IP Camera方案的基础上,通过外接 MT9P031数字摄像头或模拟摄像头,完成DM365下1 280×1 024分辨率图像的每秒30帧视频采集、压缩编码和网络传输;使用SAMSUNG的500 GB USB移动硬盘作为存储设备,通过USB移动硬盘的挂载实现大容量视频录像的本地存放;用户可远程登录本机的Web服务器网页,利用VLC视频播放器播放本机实时拍摄视频图像或回放本地硬盘存储的视频录像。

图1 系统架构

2 视频处理前端

系统以驱动的角度,通过1 280×1 024分辨的实现过程,分析并完成了视频处理前端中对各硬件的控制。

2.1 视频处理前端的硬件组成

在DM365的片上系统中,视频处理前端(VPFE)是整个系统中最重要的模块之一,其是由多个硬件模块完成对数字视频图像的采集与处理,而各硬件模块工作方式通过寄存器配置。VPFE由以下部分组成:图像传感器接口(ISIF)、图像管道接口(IPIPEIF)、图像管道(IPIPE)和硬件3A统计发生器(H3A)。除上述外设之外,还有一个缓冲器,以确保对DDR2带宽的有效充分使用[2]。在对图像的采集与处理中,本文主要用到了ISIF模块和IPIPE模块,如图2所示。

图2 ISIF和IPIPE模块

ISIF模块主要向图像传感器和数字视频源提供接口,其实现的功能包括选择像素数据位宽、色彩空间转换、黑电平补偿及A-law/DPCM压缩等;IPIPE模块则主要完成对RAW数据的白平衡处理、彩色插值(CFA),即RGB颜色还原、伽马校正、RGB转YUV、边缘增强、色度抑制以及尺寸变换等操作[3]。以RGB转YUV为例,此操作是为了视频数据的存储及H.264编码传输的需求。YUV是一种色彩空间的表示方式,通过亮度信号Y和色度信号UV来表示色彩。视频处理前端通过内部硬件电路处理可直接将RGB数据转换为YUV的偏移形式YCbCr格式数据,其转换过程满足

对不同分辨率的输入视频,各硬件模块寄存器设置不同,原IPCamera方案中不支持1 280×1 024分辨率格式。

2.2 1 280×1 024分辨率的实现过程

视频处理前端是通过配置寄存器的硬件方式对图像进行采集与处理的,需有相应的驱动来实现。针对上述各种硬件驱动是在用户空间实现,由此开发人员在实现不同分辨率的输入视频时无需修改内核空间的程序。该种通过用户空间驱动的实现过程,如图3所示。

图3 用户空间驱动实现过程

(1)打开相关硬件设备,获得相关硬件配置参数。因涉及到的参数较多,故为了有效管理各参数,除采用合理的数据结构外,所有与分辨率相关的参数均是在UIset_config()函数下进行设置的,如下所示:

imgsConfig→sensorMode=DRV_IMGS_SENSOR_MODE_1 280×1 024;;//对摄像头分辨率模式配置;

imgsConfig→sensorFps=30;//对摄像头帧率配置;

isifConfig→sensorMode=imgsConfig→sensor-Mode;//对isif分辨率模式配置;

ipipeConfig→sensorMode=imgsConfig→sensor-Mode;//对ipipe分辨率模式配置;

ipipeConfig→captureYuvFormat=DRV_DATA_FORMAT_YUV420;;//对YUV格式配置。

(2)进行使能操作,启动各硬件设备。

(3)对相关硬件寄存器进行设置。除摄像头内部寄存器的配置是通过I2C进行操作的,其他模块均是通过相关sensorMode参数调用其配置文件,并最终通过CSL_HwSetup()函数对寄存器进行真正配置。

(4)取消使能操作,关闭相应的硬件设备。

由此说明,实现1 280×1 024分辨率每秒30帧的视频图像只需在UIset_config()函数下对相应模块分辨率模式配置和帧率配置作出修改即可。

3 USB大容量存储设备

由于IP Camera方案中只支持SD存储,所以为了实现本系统中大容量数据存储和便携性的要求,需外接USB移动硬盘。系统的CPU集成了OTG规范的主机控制器,OTG是USB2.0规范的补充,其适用于具有主机功能和更小体积的便携式设备,同时使外设可在主机和设备之间相互转换[4]。DM365上OTG接口原理图,如图4所示。

图4 OTG接口原理图

本文要实现在DM365开发板上使用USB移动硬盘,其属于大容量存储设备类[6],在Linux系统下,USB移动硬盘被作为一个SCSI设备[7],且需使DM365的内核支持FAT和NTFS文件系统。因此,在内核主目录下执行make menuconfig命令分别对SCSI device support、USB support以及File systems进行配置,如图5(a)~图5(c)所示。将配置好的内核用交叉编译器arm_v5t_le-编译成内核压缩文件uImage,同文件系统一并烧写到DM365开发板上运行,再接USB移动硬盘,打印结果如图5(d)所示,则说明硬盘挂载成功。

图5 USB配置和显示结果

4 实时传输和本地存储

CMOS采集到的RAW数据经视频处理前端输出YUV格式数据,并在协处理器中进行H.264及MPEG4压缩编码。流媒体传输模块和存储模块则将编码后的视频以流的方式实时的传送至客户端的播放器或存储在本地硬盘。

图6 实时传输和本地存储结构图

获得采集的视音频编码流主要接口是GetAVData()函数,其形式为:int GetAVData(unsigned int field,int serial,AV_DATA*ptr)。

其中第1个参数代表要获取的编码流形式,是音频流、JPEG视频流或MPEG4视频流等;第2个参数指的是帧序列号;第3个参数表示获取的编码流存放结构体AV_DATA指针。以下是AV_DATA结构体的数据结构:

Typedef struct_av_data

{

unsigned int serial;//帧序列号

unsigned int size;//帧长

河北销售围绕加油站3.0时代的建设要求,在服务中注重跨界合作,联合不同领域的服务厂家,提供更加便捷的服务。目前,已与上汽汽车合作成立“车享家”,在加油站即可完成汽车检测维修保养等“后汽车服务”;在便利店与正大食品合作,提供快餐业务;与当地银行合作,开展加满减、加够减活动,为顾客节约省钱。

unsigned int width;//帧的宽度

unsigned int height;//帧的高度

unsigned int frameType;//帧类型

unsigned int timestamp;//时间戳

unsigned int temporal Id;//临时id

int ref_serial[FMT_MAX_NUM];//记录的参考帧序列号

unsigned char*ptr;//获取的数据域

}AV_DATA。

本系统通过基于Live555的开源项目,实现了对传输模块的支持,平台视频流直播部分通过 wisstream实现。在Live555官网上有wis-stream的代码下载,将其修改,并在framedsource中加入了GetAVdata接口,从而实现远程实时观看[8]。

此外,存储模块也是通过GetAVdata接口实现视频流的本地存储,其是一个独立的进程,实现过程如图7所示。

图7 存储模块实现过程

(1)av_register_all()负责初始化libavcodec库,并注册所有的编解码器和格式。

(2)guess_format()根据文件名自动获取输出文件格式,默认为mpeg。

(3)av_alloc_format()分配输出媒体内容。

(4)av_set_parameters()设置输出参数,若无参数,则仍会被调用,以提醒用户输入参数。

(5)open_video()打开视频编解码器并分配必要的编码缓存,默认分配的缓存约为200 kB。

(6)write_video_frame()向输出媒体文件写入一个包,该包会包含一个视频帧和相应的文件格式,这一视频帧就是通过GetAVData接口得到的。

(7)close_video()和av_free()关闭每个编解码器,并释放资源。

Web服务器用于与客户端浏览器进行通信,响应客户端的连接请求,并将系统的各项参数传输至客户端浏览器中并以网页的形式呈现给用户。由此,用户在Web服务器网页界面使用存储命令,系统内部就会通过调用存储模块的应用程序Appro_avi_save,将编码后的视频流以文件的形式保存在相应路径的媒体文件中,即USB移动硬盘所挂载的目录下。

在客户端下用VLC实时观看1 280×1 024分辨率视频,如图8所示。

图8 VLC实时观看1 280×1 024分辨率视频

5 结束语

本文基于TI公司达芬奇技术的TMS320DM365处理器IPCamera方案,设计了一种医用高清DVR系统,能对1 280×1 024分辨率每秒30帧的视频图像进行实时视频采集、网络传输和播放,并通过外接移动硬盘实现大容量视频录像及回放功能,满足了便携式医疗视频设备对高分辨率和大容量视频的存储与播放要求。此外,也为下一阶段基于DM368处理器实现更高性能的高清DVR系统研发打下了基础。

[1]马洪蕊,蒋心晓,刘绍南.嵌入式视频应用系统设计与实现[M].北京:北京航空航天大学出版社,2011.

[2]Texas Instruments.LSP2.10 Davinci linux drivers data manual[M].Tex USA:Texas Instruments 2007.

[3]Texas Instruments.Video processing front end(VPFE)[M].Tex USA:Texas Instruments,2007.

[4]仲伟峰,李全利,徐军.基于ARM的嵌入式USB主机系统设计[J].哈尔滨理工大学学报,2010,15(6):42-46.

[5]龚跃玲,汪玲彦.基于STM32的USB OTG数据通信的实现[J].微型机与应用,2011,30(10):32 -34,37.

[6]季春志.基于Linux平台USB视频设备驱动技术的研究与实现[D].合肥:合肥工业大学,2009.

[7]张义栋,孙未.Linux下USB大容量存储设备驱动分析与实现[J].电子世界,2013(1):9-11.

[8]王雅,陈文艺,叶欣.基于DM365的嵌入式监控平台研究[J].保密科学技术,2013(2):33 -38.

猜你喜欢

移动硬盘大容量分辨率
SSD移动硬盘大降价,可以考虑了
EM算法的参数分辨率
原生VS最大那些混淆视听的“分辨率”概念
航空用大容量锂离子电池研究
12-20升大容量PET瓶装式吹瓶机
一种提高CCD原理绝对值传感器分辨率的方法
基于深度特征学习的图像超分辨率重建
能变出雨衣的18升大容量背包
基于大容量指纹识别的实时身份认证系统
让移动硬盘使用更方便