《达芬奇技术课程.doc》由会员分享,可在线阅读,更多相关《达芬奇技术课程.doc(6页珍藏版)》请在三一办公上搜索。
1、学号 14112220267 成绩 Davinci技术原理及应用课程论文题目: 基于达芬奇技术的 作 者 向灿群 班 级 11-1BF 院 别 信息与通信工程 专 业 电信工程实验完成时间 2014年5月12日 1 达芬奇技术概述达芬奇技术是一种数字图像、视频、语音、音频信号处理的新平台,以其为基础的应用开发层出不穷。该技术是一种内涵丰富的综合体,包含达芬奇处理器、软件、开发环境、算法库和其他技术支持等。正因为涉及的技术面广,因此有比较高的技术门槛。2 视频设备驱动TMS320DM6446中的视频处理子系统有两个接口,分别为用于视频输入的视频前端输入(VPFF)接口和用于图像输出的视频末端输出
2、(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个属性窗口的形式显示。视频解码器以
3、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兼容的xD
4、AIS算法相交互。需要注意,不管算法是运行在本地(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 的接口模块我们常用的有: 视频编码接口(V
5、IDENCx_)、视频解码接口(VIDDECx_)、音频编码接口(AUDENCx_)、音频解码接口(AUDDECx_),各模块分别包含在对应的头文件中。应用程序必须使用CE 的核心引擎的三个相关模块去打开和关闭编解码引擎的实例。需要注意的是引擎的句柄是非线程保护的,对单独使用CE 的每个线程来说,必须执行Engine_open 并管理好自己的引擎句柄,而对多线程应用来说,也可以顺序的访问一个共享的引擎实例,我们目前采用的就是后者,只定义了一个引擎句柄,多个解码器共用。编解码引擎同时还提供相关的API用以访问系统的内存使用状况和CPU的负载信息,接口如下:Engine_open: 打开一个编解码
6、引擎;Engine_close: 关闭一个编解码引擎,通常是在删除算法实例后调用之来释放相关资源;Engine_getCpuLoad: 获取CPU的使用百分比;Engine_getLastError: 获取最后一个失败操作所引发的错误代码;Engine_getUsedMem: 获取内存使用状况b. VISA API创建一个算法实例: *_create()编解码引擎ceHandle_264创建完毕后,可以通过它来创建自己的算法实例,需要调用*_create(),其中*可以是VIDEO 或AUDIO的相应编解码模块的名字。关闭一个算法实例: *_delete()VIDDEC_delete(264H
7、andle); /*注意:只有当与算法相关的内存片清除后,才可以调用之删除算法实例*/控制一个算法实例: *_control()VIDDEC_control(264Handle, XDM_SETPARAME, dynamicParamsPtr, &encStatus);第一个参数是已经打开的算法实例句柄; 第二个参数是一整型的command id,它定义在xdm.h中; 第三个参数是需要动态改变算法的参数; 第四个参数是一个结构体变量,不同模块具有不同的结构。通过算法实例处理数据: *_process()status = VIDDEC_process(264Handle &inBufDesc,
8、&outBufDesc, &inArgs, &outArgs);第二和第三个参数是XDM_BufDesc类型的结构体,其中包含了内存片段的数目和开始地址以及长度信息;第四第五个参数分别为算法实例提供输入和输出地址。c. 编译一个编解码引擎-引擎配置文件(ceapp.cfg) 引擎的配置文件是以*.cfg文件形式存储的,目前我们工程里面含两个*.cfg: app里面含ceapp.cfg,里面包含对引擎的配置,还有一个是video_copy.cfg,在serve下,是对服务器的配置文件之一,后面会讲到。ceapp.cfg通过Makefile文件使用package.xdc来产生一个*.c文件和一个链
9、接命令脚本文件。一个引擎配置文件包含如下内容: 引擎的名字以及包含在引擎内的编解码器和它们的名字。从这里可以看出,前面定义h264dec等名字的作用,用于应用程序中标识算法类别,也可以看出一个引擎是可以由几个编解码器模块共用的。4 系统设计与实现(来自网络)1、系统方案设计 针对目前机器人系统存在的不足,本文以全自主移动机器人为背景,设计了一种基于嵌入式RTLinux的移动机器人平台。该平台具有体积小、模块化设计、功耗低、实时性强、可靠性高、软件的可裁减性和可移植性等优点,并且具有以下功能:采用轮式行走机构,控制性能好,速度快,最大速度为2.5m/s;视觉系统采用全景摄像头,可以实现目标的识别
10、、跟踪和定位;选用红外传感器和超声波传感器,可以实现避障功能;具有无线网络功能,可以通过计算机对机器人发送指令,读取传感器信息,实时显示图像信息;具有盘球、射门装置,可以完成带球和射门动作;具有简单的语音控制系统,通过语音识别、接受指令并执行相应的动作;具有LCD触摸屏交互功能,便于信息的交互和确认。为了简化设计,把系统分为软件和硬件两个部分。每个部分都按照模块化和可扩展性的设计思想进行设计。2、 系统硬件设计3、 系统软件设计5 总结达芬奇(DaVinci)技术是消费类电子产品领域的重大里程碑,能够促进新型数字视频应用市场的增长并使现有应用更加简单易用。达芬奇(DaVinci)技术将充分满足
11、众多新兴的数字视频创新产品对实时视频的需求。这些应用领域包括:视频安全监控系统、IP机顶盒、视频会议、车载信息娱乐系统、便携式媒体以及数码像机等。参考文献1 张起贵, 张胜,张刚. 最新DSP技术达芬奇系统、框架和组件M. 国防工业出版社,2009.2 谷湘煜,郑小龙.数字视频系统设计中的集成新概念(上)J.电子产品世界,2006.3 张广立,付莹,杨汝清,等.基于WindowsNT的开放式机器人实时控制系统J.上海交通大学 学报,2003.4 宋磊,方向忠.达芬奇技术的视频应用分析J.电路与应用,2006.5TI.DaVinciTM Products simplify digital video innovation EB/OL:TI官方网站SPRT378A,2005.