Codec Engine学习
1、Codec Engine概述
对于达芬奇(DAVINCI)平台的开发,所有的工程师都面临着如何实现ARM和DSP或协处理器的通信和协同工作。而TI的数字视频软件开发包(DVSDK)提供了Codec Engine这样一个软件模块来实现ARM和DSP或协处理器的协同工作。
如上图所示,Codec Engine是连接ARM和DSP或协处理器的桥梁,是介于应用层(ARM侧的应用程序)和信号处理层(DSP侧的算法)之间的软件模块。ARM应用程序调用Codec Engine的VISA (Video, Image, Speech, Audio)API,如图中VIDENC_process(a, b, c )。Codec Engine的stub (ARM侧)会把参数a, b, c以及要调用DSP侧process这个信息打包,通过消息队列(message queue)传递到DSP。Codec Engine的skeleton(DSP侧)会解开这个参数包,把参数a, b, c转换成DSP侧对应的参数x, y, z(比如ARM侧传递的是虚拟地址,而DSP只能认物理地址),DSP侧的server(优先级较低,负责和ARM通信的任务)会根据process这一信息创建一个DSP侧的process(x, y, x)任务最终实现VIDENC_process(a, b, c)的操作。
2、codec_engine_2_24_ReleaseNotes
Codec Engine入门第一步,从Codec Engine发布说明文档(release notes)开始,开发包中都有提供这个网址。本人手中的说明文档如下所示:
后面的1_00、1_01、...、2_23等代表版本。
下面给出2.24版本的页面。
下面重点学习2.24版本的说明文档。
该Codec Engine的发布适应于DaVinci 和OMAP 平台,使用户能够实例化和利用本地和远程编解码器。 除了异构设备(如DM644x, DM6467, OMAP2530, OMAP3530, 等.)之外,还支持单处理器环境, 特别是C64+器件(如DM643x, and DM648),ARM器件(如DM355, DM365, OMAP3503) 和x86器件去运行Linux.系统。
Codec Engine是算法执行的软件平台,满足以下高层次的目标:
- Robust - drives pre-integrated components with fully characterized performance.
- Easy to use - app developers specify what needs to be run, but nothow orwhere.
- Extensible and Configurable - new algorithms can be added by anyone, using standard tools and techniques.
- Portable - API's are target, platform, and in many cases even codec independant.
对于我手中的DVS365的资料,Codec Engine资料位于:....\dvsdk_2_10_00_17\codec_engine_2_24\packages\ti\sdo\ce
主要的包有:
还包含过时的包,主要有:
ti.sdo.ce.audio - The Codec Engine audio component (supporting the XDM IAUDDEC and IAUDENC interfaces).
Codec Engine的工具主要有:
- XDAIS 6.24
- EDMA3 Resource Manager 1.06.00.01 (from the EDMA3 Low Level Driver product).
- Framework Components 2.24
- Linux Utils 2.24.01
- WinCE Utils 1.00
- LPM 1.24
常用的参考资料有:
- Codec Engine Application Developer User's Guide
- Codec Engine Server Integrator User's Guide (local copy |latest)
- Codec Engine Algorithm Creator User's Guide (local copy |latest)
- Codec Engine Application Programming Interface (API) Reference Guide (HTML |CHM)
- Codec Engine System Programming Interface (SPI) Reference Guide (HTML |CHM)
- Package Reference Guide - includes configuration details
- Using Adapters to Run Existing XDAIS Algorithms with Codec Engine App Note
兼容性信息:
- ti.dsplink.utils.lad - This package is incompatibile with the previous release. (Compatibility key:2,0,0 -> 2,0,0)
- ti.dsplink.utils.ladclient - This package is compatibile with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
- ti.sdo.ce - This package is compatible with the previous release. (Compatibility key:1,0,6 -> 1,0,6)
- ti.sdo.ce.alg - This package is compatible with the previous release. (Compatibility key:1,0,1 -> 1,0,1)
- ti.sdo.ce.audio - This package is compatible with the previous release. (Compatibility key:1,0,2 -> 1,0,2)
- ti.sdo.ce.audio1 - This package is compatible with the previous release. (Compatibility key:1,0,1 ->1,0,1)
- ti.sdo.ce.bioslog - This package is compatible with the previous release. (Compatibility key:1,0,1 -> 1,0,1)
- ti.sdo.ce.global - This package is compatible with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
- ti.sdo.ce.image - This package is compatible with the previous release. (Compatibility key:1,0,3 -> 1,0,3)
- ti.sdo.ce.image1 - This package is compatible with the previous release. (Compatibility key:1,0,1 -> 1,0,1)
- ti.sdo.ce.ipc - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.ipc.bios - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.ipc.dsplink - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.ipc.dsplink.dsp - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.ipc.linux - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.ipc.noOS - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.node - This package is compatible with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
- ti.sdo.ce.osal - This package is compatible with the previous release. (Compatibility key:2,0,2 -> 2,0,2)
- ti.sdo.ce.osal.bios - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.osal.linux - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.osal.noOS - This package is compatible with the previous release. (Compatibility key:2,0,1 -> 2,0,1)
- ti.sdo.ce.speech - This package is compatible with the previous release. (Compatibility key:1,0,2 -> 1,0,2)
- ti.sdo.ce.speech1 - This package is compatible with the previous release. (Compatibility key:1,0,1 -> 1,0,1)
- ti.sdo.ce.trace - This package is compatible with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
- ti.sdo.ce.utils - This package is compatible with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
- ti.sdo.ce.utils.trace - This package is compatible with the previous release. (Compatibility key:1,0,1 -> 1,0,1)
- ti.sdo.ce.utils.xdm - This package is compatible with the previous release. (Compatibility key:1,0,2 -> 1,0,2)
- ti.sdo.ce.video - This package is compatible with the previous release. (Compatibility key:1,0,3 -> 1,0,3)
- ti.sdo.ce.video1 - This package is compatible with the previous release. (Compatibility key:1,0,2 -> 1,0,2)
- ti.sdo.ce.video2 - This package is compatible with the previous release. (Compatibility key:1,0,2 -> 1,0,2)
- ti.sdo.ce.video2.split - This package is compatible with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
- ti.sdo.ce.vidtranscode - This package is compatible with the previous release. (Compatibility key:1,0,1 -> 1,0,1)
- ti.sdo.ce.wizards.genserver - This package is compatible with the previous release. (Compatibility key:1,0,0 -> 1,0,0)
The following packages are beta quality, and therefore compatibility keys are not maintained.
- ti.sdo.ce.universal
- ti.sdo.ce.vidanalytics
Validation:
This release was built and validated against using the following software components:
- Framework Components 2.24
- XDAIS 6.24
- Linux Utils 2.24.01
- WinCE Utils 1.00
- XDCtools 3.10.05.61
- DSP/BIOS Link 1.61.03 (Linux)/1.61.04 (WinCE) - see the Codec Engine Link Config wiki article for more details
- DSP/BIOS 5.33.05
- EDMA3 Resource Manager 1.06.00.01
- LPM 1.24
- gnu.targets.Linux86 - 4.1.0
- gnu.targets.UCArm9 - 4.2.1
- gnu.targets.arm.GCArmv5T - 4.2.1
- microsoft.targets.arm.WinCE - 14.01.60511
- ti.targets.C64P - 6.0.16
- ti.targets.C674 - 6.1.5
This release was validated using the following hardware platforms:
- single-processor ARM configuration, running MV 5.0 MV Linux (gcclib or uClibc)
Examples:
Codec Engine examples and instructions are located in the "examples" directory.
- Codec Engine Examples Overview
- Example Build Instructions (Linux/BIOS)
- Example Build Instructions (WinCE)