80
基于DM365的多线程视频采集和网络传输
基于D
M365的多线程视频采集和网络传输
MuIti—thread
Video AcquisitiOn
and
NetwOrk
Transmission
Based
On
DM365
孔姗姗
杨
刚
金立左
(东南大学自动化学院,江苏南京210096)
摘
要
以DaVinci系列的TMS320DM365开发板为平台,从前端摄像头采集视频数据,通过L』nux操作系统的V4L2编写驱
动程序从而实现视频的采集,并将采集的图像利用OSD技术进行显示,经过TCP/lP协议将视频传输给上位机,在上位机
上,将YUV格式的图像转化为RGB格式的图像,并利用Qt显示,得到了清晰流畅的视频图像。
关键词:Davinci,TMS320DM365,V4L2,Qt
Abstract
This
paper
uses TMS320DM365
basing
0n
DaVinci
se—es
as
the
pIatfOrm
which
captures
the
vlde0
data from
frOnt
camera.The
paper
uses
V4L2
driVer
from
Linux
Operation
System
to
reaIize
the
capturing,and
uses
OSD
tO
display
the
ve-
diO,then
uses
TCP/lP
t0
transmit
the
vediO
data
tO
PC.In
PC,it
transfOrms
YUV
lO
RGB.and
uses
Qt
to
display,obtains
the
cIear
and
sm00th
videO
images.
Keywords:DaVinci.TMS320DM365,V4L2,Qt
视频传输在视频传输系统在智能交通、智能楼宇等领域内
得到了广泛的应用。系统前端朝着一体化、数字化、网络化、集成
化的方向发展,其中嵌入式因体积小、功耗低、功能强大等优点
而受到重视。本文实现了一种基于DM365平台的视频采集和传
输系统。
1硬件系统介绍
1.1
TMS320DM365的处理器
TMS320DM365是一款基于DaVinci技术的数字多媒体处
理器。DM365的处理器核是ARM9框架的处理器,同时支持产
品级的压缩算法其中包括:H.264、MPEG一4、MPEG一2、MJPEG
和VCl刖MV9算法,用户可以根据自己的应用选择合适的视
频算法。DM365支持多种摄像头接口、多种格式的视频。
TMS320DM365内部结构主要包括:ARM920EJ—S核、视频处
理子系统VPSS、2个视频图像协处理器(HDVlCP/MJCP)。
VPSS子系统包括视频处理前端VPFE与视频处理后端VPBE。
VPFE提供了ISIF/CMOS模块的接口与视频解码单元。
1
2
TI的达芬奇平台
达芬奇技术是由TI的高性能的视频/音频组件集合。它包
括处理器、软件、开发工具与组件以及第三方服务支持。其中
DM365是Tl的新一代的数字多媒体解决方案,能满足大多数
视/音频应用场合。达芬奇技术使用可定制核、可编程的基于
DSP的媒体处理器,包括ARM和DSP为核心的带有计数器和
外围设备的片上系统。同时,Tl构件了一套完整的达芬奇软件平
台,使得在各种DaVinci【2]处理器的软件能够遵循统一的标准架
构。DaVinci软件平台提供了统一的应用程序接口API,这样不
仅屏蔽了操作系统的差异,也使程序的移植性大大增强。
这里我们选择达芬奇平台的重要原因是其升级换代的代价
较小,能够不断的积累开发经验,专注于图像视频方面的应用。
2软件框架构建
系统的视频采集模块负责从摄像头中读取视频流数据,将
读到的视频图像李并OSD技术在LCD中显示,并将读出的图
像数据交给传输模块将其传送给上位机,在上位机中实现视频
格式的转换和显示。在视频采集模块中采用的是Vide04Linux
模块提供的编程接口从摄像头设备中获取图像帧。
2.1基于V4L2的视频编程
V4L2叫Vide04Ljnux2)现已成为Ljnu×中对视频设备的标
准方法,其较V4L改动了很多,性能上有了较大的改善。V4L2
采用流水线的方式,操作简单直观,基本遵循打开视频设备、设
置格式、处理数据、关闭设备的程式,更多的具体操作通过joctJ
函数来实现的。对视频采集设备的基本操作流程如下:
1)打开视频设备open;
2)获取视频设备的具备的功能VIDlOC—QUERYCAP;
3)设置一个可用视频通道VIDIOC-sJNPUT;
4)设置通道的视频制式VIDIOC-s—STD;
5)设置原始视频信号的矩形边框VIDIOC—S—CROP;
6)设置每帧的格式格式VlDlOC—S—FMT;
7)申请内存空间(V4L2-MEMORY—MMAP方式)VIDIOC—RE—
QBUFS:
』
/
8)将申请到内存到的内存空间映射到用户刭问;
9)将视频帧放到缓冲队列VlDlOC—DQBUF;
10)启动视频流开始采集VlDlOC—STREAMON;
1
1)从设备中取出一帧VIDIOC—QBUF;
12)进行相关操作,再将视频帧放回设备中VIDl0C—DQBUF;
13)采集完毕关闭采集流V
JD
JOC—STREAMOFF;
14)释放分配的内存帧;
15)关闭设备文件。
VIDIOC-s—STD设置视频制式,比如PAL制与NTSC制
等。VIDIOC—S—CROP是对原始的视频的矩形裁剪,不涉及缩
放。VlDIOC—S—FMT是设置像素格式、用户看见的视频尺寸。像
素的格式包括:颜色空间、像素分量的内存分布、行长、一帧空间
大小等。这里摄像头的内存帧采用内存映射V4L2一MEMO-
RY_MMAP方式,是驱动中动态分配连续的物理内存。有两种方
法来处理这些数据,一是read()直接读取:另一种是mmap()内
存映射㈨。实际上,分配内存是在VFS的mmap方法中,同时将
万方数据