基于OMAP3530 的嵌入式网络视频服务器

2013-07-19 09:27蒋华龙黄学达
实验室研究与探索 2013年4期
关键词:视频信号内核编码器

张 帅,蒋华龙,黄学达

(1.南阳师范学院,物理与电子工程学院,河南 南阳473061;2.重庆重邮信科通信技术有限公司,重庆400065)

0 引 言

数字视频服务器(Digital Video Server,DVS)是一个复杂的系统,它以流媒体技术、视频编解码技术、因特网通讯技术为基础,以视频信号采集、压缩、存储、传输和播放为核心,以图像分析为特色,是以后视频采集压缩设备发展的新方向,广泛地应用于安全生产、楼宇安防、火灾监控、视频会议等场合。它的主要作用是对采集的视频图像信号进行压缩,在确保一定的重建质量的基础上,使用尽量少的比特数来代表视频信息,从而降低视频信号对传输带宽和存储容量的要求。

为了实现上述目标,必须解决以下问题:①需要有支持实时多媒体处理的硬件平台;②需要有先进的视频压缩标准。由TI 公司推出的新一代的OMAP 3530 嵌入式多媒体处理器,采用ARM+DSP 双内核及3D 加速设计,具备一流的数字信号处理性能和微处理器功能,支持MPEG4、H.264/AVC,并能实现与ITU-R 656 视频编解码器的无缝连接,使用该处理器能够很方便地构建视频服务器系统,加快产品的开发速度,降低成本。

本文讨论和分析了基于OMAP3530[1]处理器和Linux 操作系统的嵌入式网络视频服务器的基本结构及具体的实现方法。

1 系统总体结构

该网络视频服务器具有以下3 个特点:①整体方案采用ARM + DSP 的双核结构;②采用H.264 标准作为视频压缩编码标准;③采用开放的Linux 操作系统。系统总体结构如图1 所示,主要由视频输入/输出模块、音视频信号处理模块、音频输入/输出模块、以太网通信模块、存储模块构成。具体工程流程:首先服务器端OMAP3530 的ARM 内核通过驱动程序启动摄像头进行视频采集→由CCD 摄像头获得的模拟视频信号经视频解码器转换为数字视频信号→ARM 内核利用DSP/BIOS Link 将得到的视频信号传送给DSP 内核→OMAP3530 的DSP 内核利用优化后的H.264 编码器对视频流进行H.264 编码→再把编码后的视频流回送给ARM 内核→最后ARM 内核通过嵌入式Linux操作系统的RTP/RTCP 协议栈,将数据打包,并运行Web 服务器,等待客户端通过网络访问数据流。另外系统可以通过以太网接口获取远程终端的控制数据,对摄像头进行控制及参数设置。考虑到进程监控的需要,可同时将数字视频信号直接输出到TV 或LCD 等显示设备上。

图1 视频服务器的结构框图

2 系统硬件设计

系统的视频输入模块采用模拟CCD 摄像头,由于CCD 摄像头输出信号为模拟信号,处理器不能直接处理,因此需要视频解码器完成视频信号的数字化,考虑到产品的兼容性,视频解码芯片选择TI 公司的视频解码器TVP5158[2],它具有以下的优点:①在同一芯片上集成了4 个独立的视频解码器,可接收4 路复合输入或8 路独立的摄像输入[3];②能够与OMAP 器件直接连接;③4 个集成视频解码器通过I2C 总线可同时或单独编程;④采用TVP5158 可以构建多通道系统,对多个TVP5158 进行级联,可以实现多路视频输入,大大减少板级空间与布局复杂性;⑤TVP5158 具备内置独立视频缩放器,承担了缩放功能,从而为视频处理器节省了宝贵的处理能力。在该系统中OMAP3530通过I2C 接口对TVP5158 进行相应的配置并启动,TVP5158 负责将摄像头输出的PAL/NTSC 格式的模拟复合视频信号转换成BT656 格式的数字视频信号,然后通过CAM 接口送给OMAP3530 进行相应的处理。如果系统采用的是数字摄像头,则不需要进行转换,可直接连接到 OMAP3530 的 CAM 接口。由于OMAP3530 的内部集成了DAC,可以将数字视频信号直接转换为PAL/NTSC Video,所以外部监控显示设备可以直接连接到OMAP3530 的TV/DSI 输出接口。

系统的视频信号处理模块采用TI 公司的OMAP3530,该处理器集成了600MHz 的ARM Cortex-A8 内核与430MHz 的TMS320C64x +的DSP 内核,内置图形加速器,支持数字高清1080p 视频播放,广泛应用于便携式消费类产品、视频监控、多媒体智能设备、医疗影像、工业控制等领域。该处理器的特点在于把需要大量计算的数据进行合理的分配,数据送到DSP内核中进行单独处理,而不需要占用到ARM 内核的太多运算资源,因此当系统需要即时处理数据时,ARM 内核就可以承担即时运算任务进行数据处理,这种分配的优点在于大幅提高了系统的工作效率,避免了大量数据都堆积到同一个微处理器核心进行处理的资源等待时间。ARM 内核与DSP 内核之间的数据传输是通过OMAP3530 中的DSP/BIOS Link 来实现的。在该系统中OMAP3530 的ARM 内核负责音/视频解码器控制、数据交换、网络传输;而DSP 内核运行优化后的H.264 压缩编码算法对采集进来的视频信号进行处理及音频信号的处理。

系统的存储器模块采用的是一块Micron 公司的MT29C1G24MADLAJA-6 IT[4],该存储芯片内部集成了128 MB 的DDR 和128 MB 的NandFlash,它通过OMAP3530 的SDRC 与GPMC 接口与之进行连接。NandFlash 用于固化程序,每次上电都从Flash 启动;DDR 用于作为整个硬件系统的工作内存,分配给ARM和DSP 使用。该系统还使用了MMC/SD Interface 用来外接SD 卡,用来存储Linux 操作系统的图形界面和应用程序。另外系统还通过OMAP3530 的MMC 接口外扩了一块硬盘(Hard Disk),可以将压缩后的视频数据保存到硬盘设备上,等待客户端读取。

系统的以太网通信模块选用SMSC 公司的LAN9211[5],该芯片支持多种嵌入式CPU 或SoC 接口,支持快速以太网10/100 Mbps 网络传输速度。LAN9211 内部用于接收和发送数据的存储有16kB,LAN9211 芯片还集成了CSMA/CD 协议的MAC 和PHY,符 合 IEEE 802. 3/802. 3u 标 准。因 为OMAP3530 的GPMC 接口同时外接了两个器件,一个Flash,一个LAN9211,就是说它们共用了数据线和地址线,所以必须用总线隔离器将它们隔离开,该系统使用两片Philips 公司的74ALVC164245 芯片作为总线隔离器,连 接 在 Flash 和 OMAP3530、LAN9211 和OMAP3530 中间,通过GPMC 的控制总线,如NCS6、NOE,和地址总线配合起来进行控制,从而使处理器在访问其中一个器件的时候另一个器件对外呈现高阻态。

系 统 采 用 电 源 管 理 芯 片 TPS65930[6]配 合OMAP3530 工作并承担一定的任务,它们之间通过I2C总线进行通信。TPS65930 功能强大,内部集成了众多组件,不但提供系统所需要的时钟、各种电源,还提供双通道音频编解码器与驱动器、各种监控特性、电池充电器、LED 驱动器、10 位3 输入模数转换器、带集成5V 电源的高速USB 收发器、I2C 通信接口等。因为TPS65930 内置了Audio 编解码器,所以系统输入/输出的Audio 信号的编解码工作由其完成。由于OMAP3530 内部集成有Audio 接口,所以外部SPK 与MIC 可直接与Audio 接口连接。

3 系统软件设计

系统的软件开发分为两大部分,即ARM 内核与DSP 内核两部分。ARM 内核软件主要处理人机交互、网络通信等非实时多任务请求,采用嵌入式Linux 作为底层操作系统,针对视频解码模块/存储模块/网络通信模块等外围器件分别编写驱动程序、为DSP 分配引导与工作内存、设置的DSP MMU 以及ARM 与DSP之间的Mailbox 中断服务,同时通过DSP/BIOS Link 来使用DSP 的各种资源,从而控制DSP 进行H.264 编码,移植Qt Embedded 作为系统的GUI 库,DSP 内核软件主要完成对音视频信号编解码,采用TI 公司提供的DSP/BIOS 作为操作系统。系统软件结构如图2 所示。

图2 系统软件结构

3.1 ARM 内核软件设计

系统上电开机后首先执行Flash 中的ARM 引导程序,完成对系统程序的引导,完成对硬件系统的初始化工作,包括设置OMAP3530 及外围硬件;接着启动Linux,加载各种设备,对于ARM 上的Linux 操作系统而言,DSP 相当于它的外设,对DSP 的控制与控制操作系统中的任一个普通外设是一样的。这里将DSP当作Linux 下的一个字符类型设备来对待,在驱动程序内通过配置Mailbox 的一系列寄存器,实现ARM 与DSP 中断方式的通信[8-9]。由于Mailbox 中断方式仅适用于在数据量较小的情况下使用,而在该系统中需要处理的视频数据量较大,所以还需要采用ARM 与DSP 之间通信的另外一种方式:DSP 的MMU 方式,即配置DSP 的MMU,把一块属于DSP 的内存映射到外部共享的内存单元中;同时结合两者共享DDR SDRAM 内存的方式,实现ARM 和DSP 之间的通信与数据交换。一旦操作系统加载DSP 驱动,在应用程序中就可以通过Linux 统一的系统调用接口open,close,read,write,ioctl 等等来使用和控制DSP。

图3 ARM 内核软件结构

由于在Linux 操作系统中集成了一个视频采集的API 函数Video4Linux(V4L2),该函数很有用,可以提供open、write、read、ioctl 等功能,用户可以通过修改control word 来获取视频设备的信息、帧缓冲的参数、获取图像[10-12],因此程序中的视频信号采集通过调用该API 来实现,采集到的视频数据(以帧为单位),存入ARM 和DSP 的共享内存中,同时设置对应的全局变量标志,ARM 循环检测这些变量标志,一旦发现缓冲区有数据时,通过ioctl 函数,通知DSP 进行H.264编码。ARM 与DSP 之间的共享内存是通过DSP/BIOS Link 来分配,为了防止两者之间的读写冲突,使用MailBox 中断方式。OMAP3530 中有两个的MailBox,分别对应ARM 与DSP,ARM 与DSP 都可以通过各自的MailBox 向对方发起中断,同时传递参数并设置状态,以通知对方自己的状态和请求类别。当编码完成后,DSP 产生MailBox 中断,通知ARM 端从共享内存中取走编码后的H.264 数据。如果有客户端提出请求,则通过网络发送出去;反之则将数据暂时存储到硬盘中,等待客户端提出请求。

3.2 DSP 内核软件设计

DSP 内核软件设计主要是对传送过来的视频流进行H.264 压缩编码。首先DSP 准备就绪,接着等待ARM 通过MailBox 向其发送中断信号,一旦收到中断信号,DSP 就从共享内存中读取视频流,然后执行H.264 编码,数据编码完毕,DSP 向ARM 发送MailBox 中断信号,同时将编码数据发送至共享内存等待ARM进行相应的处理。具体流程如图4 所示。

图4 DSP 内核软件结构

H.264 编码的控制与使用是通过调用TI 公司的Codec Engine 中的API 来实现的,并且在DVSDK 软件提供了工具可以使用兼容XDM/XDAIS 的用户算法创建自己的编解码器服务[13-14]。Codec Engine 中的有一类专用于实现视频、图像、音频等算法的 API(VIDENCx_、VIDDECx_)用以实现音视频信号的编解码,这里仅使用编码API-VIDENCx_,在该API 中定义了几个主要函数:VIDENC_create()、VIDENC_process()、VIDENC_control()、VIDENC_dqbuf()、VIDENC_delete(),分别用来实现创建编码器、处理编码器、传递控制编码器的动态参数、驱动视频数据入列、删除编码器(释放占用的系统资源)。H.264 编码器的设计框图如图5 所示。

4 网络传输

由于流媒体(音频、视频)传输要求低延时、高实时性、QOS 保证等等,所以TCP/UDP 协议不能满足它的要求[15-16]。这里网络传输采用RTP/RTCP 传输协议来实现,其中RTP 协议负责视频流数据的传输,RTCP 协议负责传输控制协议。经过视频采集/编码后的视频数据通过网络进行传输,首先在RTP/RTCP层上进行包封装,添加定时、同步信息、包序号等信息,然后把这些打包的RTP 数据流传送到UDP/TCP 层和IP 层,获得的IP 包在网络上传输。在实际的设计过程中,在Linux 系统中采用了开源的RTP 库-JRTPLIB。由于JRTPLIB 是一个高度封装后的RTP 库,用户在使用它时不需要关心RTCP 数据报是如何被发送和接收的,因为这些都可以由JRTPLIB 自己来完成。只要PollData()或者SendPacket()方法被成功调用,JRTPLIB 就能够自动对到达的RTCP 数据报进行处理,并且还会在需要的时候发送RTCP 数据报,从而能够确保整个RTP 会话过程的正确性。

图5 H.264 编码器的设计框图

5 结 语

本文重点介绍了基于OMAP3530 双核处理器的网络视频服务器的设计结构,结合DSP 计算复杂算法的高效率和ARM 精于并行处理数据的优点,为网络视频服务器的快速实现提供了高效、灵活的设计方案。该设计具有体积小、成本低、稳定性高、可扩展性强等特点,将在数字视频服务与监控领域有着广阔的应用前景。

[1] Texas.OMAP35x Application Processor Technical Reference Manual[CP/OL]. www.ti.com,2010.04.

[2] Texas.TVP5158 Data Manual[CP/OL].www.ti.com,2009.07.

[3] 范斐斐.基于OMAP5912 的H_264 编解码器的实现[D].武汉理工大学,2008.5.

[4] MICRO. MT29C2G48MAKAMAKC-5 IT Data Manual[CP/OL].www.micro.com,2007.05.

[5] SMSC.LAN9211 Data Manual[CP/OL]. www. smsc. com,2003.01.

[6] Texas.TPS65930 Integrated Power Management Data Manual[CP/OL]. www.ti.com,2009.10.

[7] 林 林.基于OMAP5910 的无线流媒体系统的设计与实现[D].天津大学,2007.1.

[8] 于雪莲,陈 钱,顾国华. 基于i_MX27 的H_264 网络视频监控系统设计[J].电视技术,2009(5):119-121.

[9] 鹿宝生,陈启美,丁胜军.基于TMS320DM642 的嵌入式网络视频服务器的实现[J].计算机工程与设计,2006(7):2362-2364.

[10] 杨明极,刘 冰,吕鑫磊. 基于TMS320DM6467 的移动视频服务器的硬件设计[J].电视技术,2011(23):51-54.

[11] 沈 骞,娄淑琴,宿金华,等.基于VW2010 芯片的网络视频压缩编解码器设计与实现[J]. 计算机测量与控制,2007(12):1814-1816.

[12] 李 锋,秦嘉凯. 基于嵌入式Linux 的实时网络视频监控系统[J].电视技术,2011(23):145-148.

[13] 黄 璞,蒋 挺,周 正.基于OMAP 平台的嵌入式流媒体传输系统设计[C]//中国通信学会第五届学术年会论文集,2008.1:209-213.

[14] 薛 漪,马伍新.基于TMS320DM642 芯片H.264 编码器的设计[J].计算机工程与设计,2005(5):1158-1160.

[15] 刘恩虹,周 兵,葛宝珊,等. 基于H.264 的嵌入式视频编码器[J].计算机工程,2009(9):227-229.

[16] 刘 源,朱善安,叶旭东.基于DM642 的嵌入式视频监控系统硬件设计[J].电子器件,2008(9):907-908.

猜你喜欢
视频信号内核编码器
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
基于FPGA的同步机轴角编码器
浅析新一代视频信号ICtCp
基于双增量码道的绝对式编码器设计
短距视频信号无线通信网络
微生物内核 生态型农资
JESD204B接口协议中的8B10B编码器设计
多总线式光电编码器的设计与应用