mcfw框架介绍
整体上mcfw框架如下图
从中可见其层次是清楚的,link实在基本的驱动之上的,而mcfw是在link之上的api,是通过link来实现相应的功能.可见link是框架中承上启下的层次,通过link来实现具体的功能,所以对link进行深入的学习和了解,对于理解mcfw以及扩展其功能是至关重要的.
link的主要功能包括视频的输入输出,视频的编解码,以及dsp算法等.
ezsdk与dvrrdk 要看你的应用了,如果是DVR、NVR,建议使用DVR RDK,里面去掉了OpenMax,改用专门针对多通道处理优化的MCFW。
另外DVR RDK也不是第三方开发的,其中只有Demo的应用层是第三方开发的,mcfw以及以下层次都是TI开发的。
“在A8和DSP之间建立ipc in/out link”,在usecase文件中就可以实现,不需要用户修改syslink或者调用syslink接口。当然本质上是ipc/syslink来做的。
DSP上的
算法本身应该是相对独立的,只是和A8之间的通信接口要与RDK保持一致。
/**************************************************************************************************/
DM8168集成图像算法
图像算法集成基于TI Davinci DM8168,开发平台SDK为DVRRDK3.0,实现框架为MCFW,算法引擎为TI 的XDAIS标准。下图分别为DM86168的软件开发框图(a),以及基于eXpressDSP算法开发框图(b)。 (a) 从图(a)中我们知道DM8168是一个多核架构的CPU。它集成了ARM A8核作为HOST CPU,用作主系统控制,图形界面,基本输入/输出IO,以及其他外设资源如硬盘,以太网等接口等控制。VPSS核用于视(音)频流的捕获,回放,缩放等前端处理。Video M3用于视(音)频流的编解码处理。DSP主要用于视频处理和视频分析。 (b)从图(b)中我们知道DSP端算法处理的框图。Algorithm:作为一个代码模块对视频数据进行处理,得出视频处理结果。Refrence Framework: 蓝 {MOD}部分包含了驱动部分Drivers,algorithms,DSP系统内核。作为整个框架对其所包含组件进行管理。DSP Kernel:属于硬件层(HAL)的软件实现,是对硬件资源的抽象管理,包括线程,中断,管道,信号以及其他函数。此外DSP/BIOS是一个实时性操作系统,提供应用程序的多任务实现,以及相关的日志和统计等功能。Application:用户程序。这些用户程序的运行需要DSP内核(dsp kernel)、算法(algorithms),框架(framework)等底层资源的支持。DSP代码模块运行于DM8168的C674x DSP核。DM8168的软件模块包括算法模块和DSP框架(MCFW)实现模块。算法模块包含了人数统计算法(PC)和移动侦测算法(VMD)。DSP代码模块实现了多通道视频输入算法处理,实现人数统计功能(PC)、动侦测功能(VMD)和画面叠加(SWOSD)功能。图(c)为功能描述框架。 图(c)C674x DSP核主要用于DSP算法处理,并将算法处理的结果返回给A8 ARM核。在整个框架中我们使用MCFW作为我们算法开发框架,这是一个多通道框架,它是DVRRDK中的一部分。DVRRDK的软件框架允许用户开发多通道的音视频数据流,包括视频捕获,视频编解码和视频转存回放等。软件本身的创建通过使用一个叫做链接链的多核框架,这个框架的接口称为LINK API。我们使用一个叫做AlgLink集成提图像算法(如车流统计,入侵侦测,跟踪算法)。AlgLink主要实现一个叫AlgLink_tskMain任务函数基于DSP
SYSBIOS实现,由于Alglink也是MCFW框架的一部分,所以使得AlgLink可以C674x DSP核与其他核之间相互通信,交换数据。从而实现多通道视频,多算法并行处理。我们可以把其他核看做前端,C674X DSP看做后端。前段负责视频流进行捕获缩放,编解码等处理,后端对视频流进行算法处理。