- 1 -
基于异构双核处理器的网络视频服务器
秦云川,古吉方,艾彦迪
湖南大学计算机与通信学院,长沙 (410082)
E-mail:qinyunchuan@163.com
摘 要:针对构建高清晰数字视频监控系统,本文采用H.264 视频编码标准,分析了异构双
核处理器DM6446 结构的特点和开发方式,研究了视频服务器的硬件结构、软件设计、算
法优化和视频数据网络传输等主要技术,实现了基于DM6446 处理器的嵌入式网络视频服
务器。结果表明,该方案实现灵活,对视频图像的压缩编码效果良好,满足监控系统视频清
晰度和实时性需求。
关键词:H.264, DM6446, 视频服务器, 算法优化
中图法分类号:TP368 文献标识码:A
0. 引言
嵌入式视频服务器需要很高的数字信
号处理能力才能完成高效的压缩工作。同
时,视频服务器还要实现网络协议栈,响应
用户请求,完成控制工作。文献[1]单纯采用
DSP 的方式不能很好处理控制型任务。文献
[2]采用的ARM+DSP 的实现方案复杂,成
本较高。本文采用基于达芬奇技术的片上异
构多核处理器——TMS320DM6446 实现嵌
入式视频服务器,具有成本低、方案灵活的
特点。
1. 系统硬件结构
基于DM6446 的嵌入式网络视频服务
器的主要硬件功能模块为:视频输入模块
(tvp5146)、核心的DM6446、网络输出模块
(lxt971)、外部存储模块(DDR2 和Nand flash )
以及仿真调试接口(JTAG)模块。
图1 系统组成结构图
图1 为该系统组成结构图。tvp5146 的
视频输出与象素、行、场等同步信号连接到
DM6446 的视频输入前端逻辑,DM6446 通
过I2C 总线对芯片进行控制。DM6446 的
EMIF 接口能够连接DDR 存储器,其速率比
传统数字视频服务器采用SDRAM 有明显
提高。本文采用LXT971 物理层芯片与
DM6446 的MAC 控制器相连,为系统提高
网络功能。BootLoader、操作系统内核映像
和文件系统存放在Nand Flash 当中。开发人
员通过JTAG 接口对系统进行调试与仿真。
2. 系统的软件结构与算法优化
DM6446 处理器包含一个高达300MHz
的ARM926EJ-S 内核和一个运行在600MHz
的基于C64x+增强型DSP 内核。两个内核
共享存储总线,能够相互访问L2 级的
Cache。通过共享存储的方式交换数据,使
其保持低成本的同时又有较高的通信效率。
基于DM6446 开发软件, 首先要将软
件划分成模块, 根据模块和2 个处理器核
特点把模块划分到不同的处理器核上, 然
后分别为ARM子系统和DSP 子系统进行开
发。 ARM 子系统的ARM 核是RISC 结构,
运算能力相对较弱, 适合完成控制类型的
任务. DSP 子系统是超长指令集的处理器
核, 8 个并行处理部件适合处理运算需求
高, 算法并行友好性好的任务.
视频服务器根据功能模块可以划分为
应用程序、RTP/RTCP 协议栈、外设驱动程
本课题得到江苏省图形与图像重点实验室的资助。
http://www.paper.edu.cn
- 2 -
序和视频编码。应用程序的任务是响应网络
请求, 根据请求完成相应的控制操作。
RTP/RTCP 协议栈则负责数据的发送,网络
情况的统计。外设驱动程序负责相应外设和
应用程序请求, 完成数据的搬移工作。这
些任务并行度不高, 属于控制密集型, 我
们把这些任务划分在ARM 子系统执行。视
频编码任务的运算量大, 指令并行度较高,
我们将它划分到DSP 子系统。
软件框架如图2 所示, ARM 子系统我
们采用Linux 操作系统, DSP 子系统采用
DSP/BIOS 操作系统。两个处理器核通过
codec Engine 和DSP Link 模块来屏蔽通信细
节。
图2 软件系统框图
2.1 ARM 子系统的设计
ARM 子系统采用嵌入式Linux 操作系
统。该操作系统基于GPL 协议开放源代码,
可以有效减少系统成本。完整的网络协议栈
以及丰富的系统软件,减少了系统软件开发
时间。本文所采用的2.6.16 内核优化了系统
的实时性和线程机制,更加适合嵌入式系统
领域的应用。基于Linux 的软件开发主要包
括以下三个方面。
2.1.1 视频采集驱动程序
DM6446 的视频前端处理器提供对视频
输入的控制。视频采集驱动程序的主要工作
就是初始化视频输入控制器和tvp5146(通
过I2C 总线)。初始化完成之后,tvp5146 对
视频进行解码,通过视频总线结合同步信号
发送到DM6446 的视频收入控制器。驱动程
序通过DMA 将CCD 控制器处理后的数据
传送到内存当中,给应用程序使用。
2.1.2 RTP 协议
RTP 在UDP 的上层,主要提供同步和
排序服务[6]。本文采用Linux 系统上普遍使
用的RTP 库――LiveMedia。该库实现了自
己的消息循环机制,方便了应用程序开发。
但是该消息循环机制并不适应本文所实现
的视频服务器。本文使用一个线程把
LiveMedia 的消息循环封装起来,在应用程
序与RTP 之间通过一个线程安全的队列进
行数据交换,简化了系统的设计。
2.1.3 应用程序设计
本文采用TI 提供的Codec Engine
进行应用程序设计。该Engine 封装了与
DSP 上的数字信号处理算法之间的调用与
通信过程[8]。Codec Engine 的使用过程如
下:
使用CERuntime_init 函数初始化Codec
Engine。
使用Engine_open 函数装载dsp engine
使用VIDENC_create 函数创建视频编
码算法,在参数中指定采用h264enc 编码。
调用VIDENC_control 接口函数设置编
码算法所用的参数。
反复调用VIDENC_process 函数,将采
集的一帧视频数据进行编码处理。
调用VIDENC_delete 函数关闭算法,释
放算法占用的资源。
调用Engine_close 关闭Codec Engine,
释放系统资源。
应用程序使用V4L2 接口与视频采集驱
动程序通信,获取视频数据,然后调用Codec
Engine 的接口与H.264 编码算法通信,将数
据压缩成H.264 格式,再通过RTP 协议传送
给客户机。
客户机采用Direct Show,它为多媒体处
理提供了统一而高效的处理架构。本文为架
构添加了H.264 解码模块和RTP 接收模块。
http://www.paper.edu.cn
- 3 -
应用程序将这些模块插入到directshow 架构
中,启动Directshow 框架,客户端就可以看
到解码之后的视频图像。
2.2 H.264 视频编码
相对于以往的标准,H.264 除增强了网
络适应能力外,大幅度提高了压缩编码效
率,在相同的码率下能够获得更高的主客观
质量[7]。当前已经有很多的H.264 标准的实
现代码,比较典型的是ITU 组织发布的JM
和开源的x264 代码,JM 代码的实现比较完
整,框架清晰,便于移植,但是效率较低,
实时性不高,本文则采用x264 代码为基础
进行开发。
2.2.1 算法封装
ARM 侧的应用程序如果通过codec
engine 接口使用算法,算法就需要采用TI
的xDM 接口进行封装。该标准规范了内存
使用、函数调用接口等内容。使用该标准封
装的算法可以不用考虑ARM与DSP 的通信
细节,只需专注于算法的实现和优化。参考
TI 的说明[9],我们将H.264 算法封装为如
下接口:
x264_numAlloc 函数,该函数按照此算
法需要,返回给codec engine 此算法需要使
用的存储块的数目。
x264_alloc 函数。该函数设定每块内存
的大小和类型,类型主要分为片内存储器和
片外存储器。片内存储器资源有限,速度快;
片外存储器资源充足,而速度较片内存储器
慢。正在被编码的宏块、部分参考帧数据、
整数DCT 和IDCT、宏块重建和ZigZag 扫
描等所需要的存储区需要安排在片内。而片
外则安排参考帧、帧重建和当前编码帧等所
需的存储空间。
x264_init 函数,该函数初始化算法需要
的全局变量。
x264_active 函数。由于片内资源紧张,
算法不活跃的时候需要释放片内空间,把数
据存储到片外。该函数调用时负责恢复上次
片内内存的数据。
x264_process 函数对一帧数据进行编
码。
x264_control 函数用来获取获取和改变
编码参数。
x264_deactive 函数负责保存片内内存
中的必要的数据到片外空间。
x264_moved 函数。系统对存储空间进
行重定位后,该函数被调用。算法在这个函
数中更新内存地址。
x264_delete 函数在应用程序不需要该
算法时调用,负责释放内存。
2.2.2 关键算法优化
跟TI 公司的其它DSP 相比,C64 系列
的CPU有很多的专用指令,包括8bit 和16bit
扩展,非对齐字的装载和保存以及数据的打
包和解包等操作。使用这些指令可以显著提
升编码器的性能。
虽然C64 系列DSP 核有高度并行结构,
算法的开发仍然需要对程序的并行性进行
充分的发掘才可以最大化提升编码器的性
能。如何采用C64 系列的高性能指令集来减
少编码时间是优化的主要目标。整数余弦变
换和反变换、SAD、像素插值以及运动向量
搜索等编码器中的计算复杂度高的模块都
要根据C64+DSP 核的特性进行专门的优
化。
2.2.3 算法优化举例
H.264 采用亚像素搜索来提高运动预测
的准确性。算法先搜索到宏块的非常好的匹配整
像素点,然后进行第一次插值得到此整像素
点最近的1/2 像素点;再次搜索得到非常好的匹
配1 /2 像素点,进行第二次插值得到此半像
素点最近的1/4 像素点;最后搜索得到非常好的
匹配1 /4 像素点。因此,插值算法的速度在
H.264 中大量进行的运动向量的搜索速度中
起着关键作用,下面以该插值算法为例,介
绍本文在DM6446 的C64+ DSP 核上进行优
化的过程。
http://www.paper.edu.cn
- 4 -
H.264 进行半像素插值所采用的6 抽头
滤波运算复杂,不利于DM6446 并行实现。
文献[5]认为可以采用双线性滤波代替6 抽
头滤波可以显著提高并行度,同时保持较高
的运动补偿性能。本文对半像素和1/4 像素
的插值都采用的双线性滤波来实现,编码速
度得到了显著提升。
使用CCS 的编译器对8x8 的宏块插值
代码进行自动优化,需要600 多个时钟周期
才能完成一个宏块的插值运算。宏块的插值
代码很显然的是一个双重循环,可以使用软
件流水线进行优化,这样优化之后只需要88
个时钟周期。
进一步优化则使用了C64+系列的专用
指令, LDNDW 指令可以一次将8 个象素
值从内存装载带寄存器对中而不需要64bit
对齐,AVGU4 指令则可以同时进行4 对像
素的平均值求取动作。经过优化后的一次宏
块插值可以在30 个时钟周期内完成。
3. 实现结果
本文对tvp5146 采集的实验室工作场景
的视频序列进行测试,实验结果在表1 中列
出。
表1 实验结果
帧率 25fps 30fps
图像大小 D1 CIF
编码后码率 893kbps 286kbps
DSP 负载 83% 34%
ARM 负载 10% 9%
PSNR 范围 35.17-36.76 34.17-36.81
由实验结果可知,基于DM6446 的嵌
入式网络视频服务器对视频图像的压缩编
码效果良好,并且通过客户端软件解码恢复
后的视频图像清晰、流畅、没有抖动现象。
系统处理器能力仍然有剩余,对用户的请求
响应速度快,还可以在视频服务器上面为用
户添加Webserver 等个性的功能。
4. 结束语
本文提出的基于TMS320DM6446 的
嵌入式网络视频服务器的设计方案已成功
实现,目前应用于数字视频监控系统中。由
于充分发挥了DM6446 双核结构的强大多
媒体处理能力和控制能力,系统方案灵活,
构造简单,运行效率高,相应速度快。文中
论述的有关硬件设计及系统软件的一些编
写思路对DM6446 的其它方面的应用也有
借鉴作用。
参考文献
[1] 鹿宝生,陈启美,丁胜军. 基于TMS320DM642
的嵌入式网络视频服务器的实现[J]. 计算机工程与
设计,2006,(27)13:2362-2364.
[2] 孙彦景,李世银,董杨. 基于RTP 的嵌入式网
络化视频采集压缩系统[J]. 计算机工程与设计,
2006,27(16):2939-2942.
[3] 裘英,王库. 基于RTP 协议的网络视频监控系
统的实现[J]. 微计算机应用, 2006 , 27(4):
436-439.
[4] 李洛,张剑. 基于整数变换的H. 264 标准量化
过程[J]. 计算机应用研究,2006,5:31-33.
[5] 鹿宝生,陈启美. H.264 高性能视频编码器的
DSP 实现[J].计算机应用,2005,25(12):2824-2828
[6]LIVE.COM Streaming Media. LIVE555 Streaming
Media[OL].(2006-8-1)[2006-12-21].
http://live555.com/liveMedia/.
[7] T. Wiegand et al. Overview of the H.264 /AVC
video coding standard[J]. IEEE Transaction on
Circuits Systems for video technology. 2003 ,
13:560-576.
[8] Texus Instruments. Codec engine algorithm creator
user's guild [OL]. http://www.ti.com
[9] Texus Instruments. TMS320 DSP Algorithm
Standard Developer’s Guide[OL]. http://www.ti.com
http://www.paper.edu.cn
- 5 -
Video server based on heterogeneous dual-core processor
Qin Yunchuan, Gu Jifang, Ai Yandi
School of computer and communication,Hunan University,Changsha Hunan (410012)
Abstract
Aimed at the design of video monitor system in high resolution, the architecture and the design
method of the heterogeneous dual-core chip DM6446 were analyzed, and the hardware structure, the
software design scheme, the algorithm optimization and the internet transport were studied. An
embedded network video server based on H.264 was designed, which is running on DM6446. The
results show that this scheme performs an excellent efficiency on compression, and is feasible with
the need of real time video monitor systems in high resolution.
Keywords:H.264,TMS320DM6446,embedded network video server,algorithm optimization