达芬奇技术课程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号 14112220267 成绩
《Davinci技术原理及应用》课程论文题目:基于达芬奇技术的
作者向灿群班级11-1BF
院别信息与通信工程专业电信工程实验完成时间2014年5月12日
1 达芬奇技术概述
达芬奇技术是一种数字图像、视频、语音、音频信号处理的新平台,以其为基础的应用开发层出不穷。
该技术是一种内涵丰富的综合体,包含达芬奇处理器、软件、开发环境、算法库和其他技术支持等。
正因为涉及的技术面广,因此有比较高的技术门槛。
2 视频设备驱动
TMS320DM6446中的视频处理子系统有两个接口,分别为用于视频输入的视频前端输入(VPFF)接口和用于图像输出的视频末端输出(VPBE)接口。
视频前端输入(VPFE)接口由1个CCD控制器(CCDC)、1个预处理器、柱状模块、自动曝光/白平衡/聚焦模块(H3A)和寄存器组成。
CCD 控制器可以与视频解码器、CMOS传感器或电荷耦合装置连接;预处理器是一个实时的图形处理器,它把CMOS或CCD得到的原始图形从RGB(三原色)转变为YUV4:2:0编码;柱状模块和H3A模块则提供原始图形信息。
视频末端输出(VPBE)接口由1个在线视频显示处理器(OSD)和1个视频编码器组成。
在线视频显示处理器既能够显示两组独立的视频窗口或两组独立的OSD窗口,还可以以1个视频窗口、1个OSD窗口和1个属性窗口的形式显示。
视频解码器以54MHz进行D/A转换,可以提供NTSC/PAL、S等格式的视频或音频输出。
3 编解码引擎框架
DaVinci是DSP和ARM双核架构的SOC芯片。
对芯片与外界的交互通过ARM端的Montavista Linux和相关驱动与应用程序来管理,DSP端只处理编解码相关的算法。
DSP和ARM之间的通讯和交互是通过引擎(Engine)和服务器(Server)来完成的。
编解码引擎(Codec Engine)
a. 核心引擎API
从应用来说,CE就是用来调用xDAIS算法的一组API的集合,用户可以通过这些API来实例化和调用xDAIS算法。
达芬奇提供了一组VISA接口,用于给应用程序与xDM兼容的xDAIS算法相交互。
需要注意,不管算法是运行在本地(ARM端),还是远端(DSP端),也不管硬件体系是只有ARM 或是只有DSP或两者都有,也不管OS是Linux、VxWorks、DSP/BIOS,还是WinCE,对算法的接口调用都是一致的。
这点通过引擎的配置文件*.cfg 可以看出来,而且通过配置文件可以决定自己的codec是运行在ARM端还是DSP端。
CE包括核心引擎API和VISA API ,核心引擎API相关接口模块为: 初始化模块(CERuntime_)、CE 运行时模块(Engine_)、抽象层内存模块(Memory_); VISA API 的接口模块我们常用的有: 视频编码接口(VIDENCx_)、视频解码接口(VIDDECx_)、音频编码接口(AUDENCx_)、音频解码接口(AUDDECx_),各模块分别包含在对应的头文件中。
应用程序必须使用CE 的核心引擎的三个相关模块去打开和关闭编解码引擎的实例。
需要注意的是引擎的句柄是非线程保护的,对单独使用CE 的每个线程来说,必须执行Engine_open 并管理好自己的引擎句柄,而对多线程应用来说,也可以顺序的访问一个共享的引擎实例,我们目前采用的就是后者,只定义了一个引擎句柄,多个解码器共用。
编解码引擎同时还提供相关的API用以访问系统的内存使用状况和CPU的负载信息,接口如下:
>Engine_open: 打开一个编解码引擎;
>Engine_close: 关闭一个编解码引擎,通常是在删除算法实例后调用之来释放相关资源;
>Engine_getCpuLoad: 获取CPU的使用百分比;
>Engine_getLastError: 获取最后一个失败操作所引发的错误代码;
>Engine_getUsedMem: 获取内存使用状况
b. VISA API
@创建一个算法实例: *_create()
编解码引擎ceHandle_264创建完毕后,可以通过它来创建自己的算法实例,需要调用*_create(),其中*可以是VIDEO 或AUDIO的相应编解码模块的名字。
@关闭一个算法实例: *_delete()
VIDDEC_delete(264Handle); /*注意:只有当与算法相关的内存片清除后,才可以调用之删除算法实例*/
@控制一个算法实例: *_control()
VIDDEC_control(264Handle, XDM_SETPARAME, dynamicParamsPtr,
&encStatus);
第一个参数是已经打开的算法实例句柄; 第二个参数是一整型的command id,它定义在xdm.h中; 第三个参数是需要动态改变算法的参数; 第四个
参数是一个结构体变量,不同模块具有不同的结构。
@通过算法实例处理数据: *_process()
status = VIDDEC_process(264Handle &inBufDesc,&outBufDesc, &inArgs, &outArgs);
第二和第三个参数是XDM_BufDesc类型的结构体,其中包含了内存片段的数目和开始地址以及长度信息;第四第五个参数分别为算法实例提供输入和输出地址。
c. 编译"一个"编解码引擎----引擎配置文件(ceapp.cfg)
引擎的配置文件是以*.cfg文件形式存储的,目前我们工程里面含两个*.cfg: app里面含ceapp.cfg,里面包含对引擎的配置,还有一个是video_copy.cfg,在serve下,是对服务器的配置文件之一,后面会讲到。
ceapp.cfg通过Makefile文件使用package.xdc来产生一个*.c文件和一个链接命令脚本文件。
一个引擎配置文件包含如下内容: 引擎的名字以及包含在引擎内的编解码器和它们的名字。
从这里可以看出,前面定义
"h264dec"等名字的作用,用于应用程序中标识算法类别,也可以看出一个引擎是可以由几个编解码器模块共用的。
4 系统设计与实现(来自网络)
1、系统方案设计
针对目前机器人系统存在的不足,本文以全自主移动机器人为背景,设计了一种基于嵌入式RTLinux的移动机器人平台。
该平台具有体积小、模块化设计、功耗低、实时性强、可靠性高、软件的可裁减性和可移植性等优点,并且具有以下功能:
①采用轮式行走机构,控制性能好,速度快,最大速度为2.5m/s;
②视觉系统采用全景摄像头,可以实现目标的识别、跟踪和定位;
③选用红外传感器和超声波传感器,可以实现避障功能;
④具有无线网络功能,可以通过计算机对机器人发送指令,读取传感器信息,实时显示图像信息;
⑤具有盘球、射门装置,可以完成带球和射门动作;
⑥具有简单的语音控制系统,通过语音识别、接受指令并执行相应的动作;
⑦具有LCD触摸屏交互功能,便于信息的交互和确认。
为了简化设计,把系统分为软件和硬件两个部分。
每个部分都按照模块化和可扩展性的设计思想进行设计。
2、系统硬件设计
3、系统软件设计
5 总结
达芬奇(DaVinci)技术是消费类电子产品领域的重大里程碑,能够促进新型数字视频应用市场的增长并使现有应用更加简单易用。
达芬奇(DaVinci)技术将充分满足众多新兴的数字视频创新产品对实时视频的需求。
这些应用领域包括:视频安全监控系统、IP机顶盒、视频会议、车载信息娱乐系统、便携式媒体以及数码像机等。
参考文献
[1] 张起贵, 张胜,张刚. 最新DSP技术—达芬奇系统、框架和组件[M]. 国防工业出版社,2009.
[2] 谷湘煜,郑小龙.数字视频系统设计中的集成新概念(上)[J].电子产品世界,2006.
[3] 张广立,付莹,杨汝清,等.基于Windows NT的开放式机器人实时控制系统[J].上海交通大学学报,2003.
[4] 宋磊,方向忠.达芬奇技术的视频应用分析[J].电路与应用,2006.
[5]TI.DaVinciTM Products simplify digital video innovation [EB/OL]:TI官方网站SPRT378A, 2005.。