1、outline,Davinci技术平台软件架构,ARM为主处理器:用户应用程序在ARM实现移植操作系统OS:LINUX、WinCE 用户用下列3个APIs来构建自己的应用程序:EPSI:Easy Peripheral Software Interface设备驱动程序VISA:Video, Imaging, Speech and Audio应用层音视频编解码引擎接口xDM:xDAIS for Digital Media具体的音视频编解码算法接口,由VISA调用DSP为从处理器:主要用来实现视频图像处理ARM与DSP之间用DSP/BIOS LINK来通信DSP主要用来实现视频图像编解码算法xDM,
2、Davinci技术平台软件架构,总体开发流程框图,制定算法标准的出发点和目标,制定算法标准的出发点和目标,制定算法标准的出发点和目标,DSP软件的结构,状态,运行支持,算法,算法,系统架构,系统架构之间的差异是很大的,DSP算法要在不同的系统架构下使用,必须满足DSP算法标准对系统架构的限制很小,系统架构,算法能够被c语言程序调用算法可重用算法独立于输入输出外设算法必须提供所使用的存储器资源和MIPS(million instructions per second)等性能指标,满足各种系统架构的算法共同点有:,遵循规范和建议能够使得编程标准化,增强程序的可使用性,但是具体的实现还得通过接口实现
3、!接口可以理解为由抽象方法和常量组成的特殊类,算法标准的实现,算法标准的实现,鸟,燕子,鸽子,天鹅,算法标准的实现,XDAIS定义的抽象接口包括两部分的内容:IALG:定义独立于软件架构的抽象接口,完成算法实例对象的创建。所有算法必须实现IDMA:定义算法使用DMA资源的接口。需要使用DMA资源时才实现,算法标准的实现,DSP算法标准中,接口在头文件中定义,每一个头文件定义一个接口。模块的头文件所定义的接口称为实用接口,抽象接口是由一种特殊的接口头文件定义的。除了定义一个函数指针结构如:123_Fxns外,上述特殊头文件与普通头文件相同。IALG接口的主要任务是让算法定义其使用的存储器资源,以
4、便实现更高效的片内存储器的利用。,VISA API是音视频编解码的用户接口VISA用来处理视频Video、图像Imaging、语音Speech、音频Audio编码与解码的API组相互独立,所以总有8组API:VIDENC、IMGENC、SPHENC、AUDENCVIDDEC、IMGDEC、SPHDEC、AUDDEC每个VISA组中关键的API有:xxx_createxxx_processxxx_controlxxx_delete,接口图例,算法标准的实现抽象接口,IALG_Fxns结构中定义的函数可以分为以下三类:用于创建初始化和删除实例对象的函数;算法处理的函数;用于控制和重定位实例对象的函
5、数。,算法标准的实现抽象接口,algActivate():在数据处理之前,实现临时存储器的初始化algAlloc():得到算法对象对于存储器的需求情况algControl():算法的控制和状态信息的提取algDeactivate():保存所有的持久数据到非临时存储器中algFree():获得算法对象的存储器资源algInit():初始化算法实例对象algMoved():重新定位算法实例的存储器资源algNumAlloc():返回需要分配的存储器项数目,算法标准的实现抽象接口,IALG函数的调用次序,IALG接口程序,#define IALGFXNS &BINARY_LPRIS_IALG, NU
6、LL, activate BINARY_LPRIS_alloc, NULL, control NULL, deactivate BINARY_LPRIS_free, BINARY_LPRIS_initObj, NULL, moved NULL numAlloc,IIMGDEC_Fxns BINARY_LPRIS_BINARY = IALGFXNS, BINARY_LPRIS_process,;#ifdef _LPRIS_asm(_BINARY_LPRIS_IALG.set _BINARY_LPRIS_BINARY);#elseIALG_Fxns BINARY_LPRIS_IALG = IALGFXNS; #endif,源程序文件binary_lpris.h binary_lpris_priv.h binary.c源程序定义文件Binary.xdc binary.xsPackage 定义文件Package.xdc package.xsPaceage build 文件Package.bldMakefile 文件makefile,