首页 > 代码库 > 第一章 Codec Engine概要
第一章 Codec Engine概要
本文翻译自TI的手册,该手册是学习GPP+DSP开发的金典文档,希望对各位入门有所帮助,有理解不当之处望请赐教。 Codec Engine Application Developer User‘s Guide Literature Number: SPRUE67D Codec Engine 应用开发使用手册原文参见: http://blog.csdn.net/dyzok88/article/details/42154487 后期会更新《第二章 Codec Engine安装和设置》。 // 正文 Chapter 1 Codec Engine Overview第一章 Codec Engine概要
This chapter introduces the Codec Engine. 1.5 Where Can I Get More Information? 本章介绍Codec Engine。 1.1 什么是Codec Engine? 1.2 为什么要使用Codec Engine? 1.3 Codec Engine在什么地方融入到我的体系结构? 1.4 什么是用户角色? 1.5 在哪获得更多的信息?
1.1 What is the Codec Engine?1.1 什么是Codec Engine? From the application developer’s perspective, the Codec Engine is a set of APIs that you use to instantiate and run xDAIS algorithms. A VISA interface is provided as well for interacting with xDM-compliant xDAIS algorithms. 从应用程序开发者的角度来看,Codec Engine是一组用来实例化和运行xDAIS算法的API的集合。达芬奇编解码引擎Codec Engine(CE)提供了一组VISA接口,用于给应用程序与xDM兼容的xDAIS算法相交互。
The API is the same for all of the following situations: ? All supported operating systems have the same API. For example, Linux, PrOS, VxWorks, DSP/BIOS, and WinCE. 1. 通过 Codec Engine API 调用的算法可以运行在本地 (ARM 侧 ) 或者远端 (DSP 侧 ) ; 2. Codec Engine 可以基于 ARM + DSP 、 DSP 或 ARM 上运行; 3. 无论 Codec Engine 运行在 ARM 还是 DSP 上,对应的 Codec Engine API 都是完全一致的; 4. Codec Engine 的 API 与操作系统无关。比如 Linux 、 VxWorks 和 WinCE 环境下的 Codec Engine API 都是完全一致的。
This manual uses an icon like the one to the left to identify information that is specific to a particular type of system. For example, this icon identifies information that applies if you are using Codec Engine on a dual-processor GPP+DSP system. 本手册使用一个放在左边的图标,以确定特定于特定类型的系统的信息。例如,该图标表明,如果你在一个双处理器 GPP + DSP系统中使用Codec Engine应用的信息。
xDM is the eXpressDSP Algorithm Interface Standard for Digital Media. It is sometimes referred to as xDAIS-DM. xDM(eXpress DSP Algorithm Interface Standard for Digital Media),有时也被称为xDAIS-DM。
Any xDM algorithm is compliant with the eXpressDSP Algorithm Interface Standard (xDAIS). Additionally, it implements the xDAIS-DM (xDM) interface, an extension to the xDAIS standard that provides support for digital media encoders, decoders, and codecs. The xDM specification defines APIs for digital media codecs by class, with extensions defined for video, imaging, speech, and audio codec classes. 任何XDM算法是符合的eXpressDSP算法接口标准(xDAIS) 。此外,它实现了的xDAIS -DM (XDM) 的接口,一个扩展的xDAIS标准,它为数字媒体编码器,解码器,和编解码器的支持。
The xDM interfaces divide codec algorithms into four classes: Video, Image, Speech, and Audio (VISA). VISA reflects this xDM interface. One set of APIs is provided per codec class. Thus, MP3 can be replaced with WMA without changing the application source code. Only the configuration needs to be changed. 该 XDM 接口划分 codec 算法分为四类:视频,图像,语音和音频 (VISA),VISA 反映了 xDM 接口,每类 codec 提供一组 API。因此, MP3 可以更换为 WMA,仅需要改变配置,而无需更改应用程序源代码。
The Codec Engine also supports real-time, non-intrusive visibility into codec execution. It provides APIs for accessing memory and overall CPU usage statistics and execution trace information. Codec Engine 还支持实时,非侵入性的可视性编解码器执行。它提供的 API 可用来访问内存和 CPU 整体使用情况统计和执行跟踪信息。
The Codec Engine runtime is supplied in binary form. Thus, application libraries built with same Codec Engine release are always compatible. Codec Engine 运行时以二进制形式提供。因此,建有相同的 Codec Engine 版本的应用程序库总是兼容。
1.2 Why Should I Use It?1.2 为什么要使用Codec Engine?
The Codec Engine is designed to solve some common problems associated with developing system-on-a-chip (SoC) applications. The most significant problems include: ? Programmers with a GPP (general-purpose processor) view typically don’t want to have to learn to be DSP programmers. And, they don’t want to have to worry about a DSP’s complex memory management and DSP real-time issues. Codec Engine 旨在解决与开发系统级芯片 (SoC) 的应用程序相关的一些常见问题。最显著的问题包括: 1. 在异构处理器环境有多种调试和复杂的引导,这是件痛苦的事情。 2. 同样的算法有不的同实现,如 MP3 就具有不同的 API 。如果更改为更高效的算法,就涉及重要的重新编码。 3. 有两个处理器的移植性问题很复杂,您可能需要把功能移植到具有新的 DSP 或新的 GPP 的不同电路板上。 4. 一些算法可能运行在 GPP 或者 DSP 上。为了平衡系统负载,“低复杂性”算法可以在 GPP 运行,但“低”变化的定义随着时间的推移。如果改变了位置,该算法运行很容易,那么相对于改变应用程序的难度,你就不会权衡性能问题。 5. 对于市场上的成功,大多数应用程序需要支持多种编解码器来处理相同类型的多媒体。例如,应用程序可能需要支持三个或四个音频格式。 6. 具有 GPP (通用处理器)观念的程序员,他们通常不希望必须学习 DSP 编程。而且,他们不希望有担心 DSP 复杂的内存管理和 DSP 的实时性问题。
The Codec Engine addresses these problems by providing a standard software architecture and interfaces for algorithm execution. The Codec Engine is: ? Easy-to-use. Application developers specify what algorithm needs to be run, not how or where. Codec Engine 通过为算法执行提供了一个标准的软件架构和接口的方式解决以上的问题。Codec Engine是: 1. 易使用。应用程序开发人员只需指定需要运行什么样的算法,而不用知道如何或在哪里运行算法。 2. 可扩展和可配置。使用标准工具和技术,任何人都可以添加新的算法。 3. 可移植性。这些API与目标,平台,甚至编解码器独立。
1.3 Where Does the Codec Engine Fit into My Architecture?1.3 Codec Engine在什么地方融入到我的体系结构?
The application code (or the middleware it uses) calls the Codec Engine APIs. Within the Codec Engine, the VISA APIs use stubs and skeletons to access the core engine and the actual codecs, which may be local or remote. 应用程序代码(或使用的中间件)调用 Codec Engine 的 API,在 Codec Engine 内, VISA 的 API 使用客户指代 (stubs) 和骨架 (skeletons) 来访问核心引擎和实际的编解码器,其可以是本地的或远程的。
The following figure shows the general architecture of an application that uses the Codec Engine. It also shows the user roles involved in creating various portions of the application. See Section 1.4, What Are the User Roles? for more on user roles. 下图显示了使用的 Codec Engine 的应用程序的总体架构,它还显示参与创建该应用程序的各部分的用户角色。参见1.4节,什么是用户角色?更多的任务在用户角色上。
The application (or middleware it uses) calls the core Engine APIs and the VISA APIs. The VISA APIs use stubs to access the core engine SPIs (System Programming Interfaces) and the skeletons. The skeletons access the core engine SPIs and the VISA SPIs. The VISA SPIs access the underlying algorithms. 该应用程序(或它使用的中间件)调用核心引擎API和VISA API,VISA的API使用客户指代 (stubs) 访问核心引擎的SPI(系统编程接口)和骨架 (skeletons),skeletons 访问核心引擎的SPI和VISA SPI,而VISA SPI访问底层算法。
The following figure is a modification of the previous diagram that shows how this architecture is distributed in a GPP+DSP system. In this example, yellow portions run on the GPP, and grey portions run on the DSP. That is, the video encoder skeleton and the video encoder codecs are on the DSP and the application and video encoder stubs are on the GPP. 下图是上图的修改,它显示了该架构怎样分布在 GPP + DSP 系统中。在本实例中,黄色部分代表在GPP上运行,而灰色部分代表在DSP中运行。即,视频编码器骨架 (skeletons) 和视频编码器的编解码器都在DSP上,而应用程序和视频编码器客户指代 (stubs) 都在GPP上。
Since Codec Engine is flexible, alternate diagrams could be shown for GPP-only and DSP-only systems. 由于Codec Engine是灵活的,备用图表可以显示为只有 GPP 和 只有DSP 系统。
1.4 What Are the User Roles?1.4 什么是用户角色?
The Codec Engine has several customer use cases, from application developers to codec authors. In some cases, these roles may be played by a single person. In other development environments, a different developer may be assigned each role. This topic describes the primary roles that Codec Engine users will play. Codec Engine 有几个客户使用的情况下,从应用程序开发人员到编解码器作者。在某些情况下,这些角色可以由一个人顶替,在其他开发环境,可能每个角色由不同的开发者扮演。本节介绍了 Codec Engine 使用者,这一主要的角色。
Because Codec Engine is very portable and configurable and can run in many different environments, the descriptions of these roles are intentionally generalized. When applicable, specific hardware and software environments are described after the general descriptions. 因为Codec Engine是可移植和可配置的,并且可以在许多不同的环境中运行,这些角色的描述可能偏向广义。所以,在描述完一般性描述后,在适用描述特定的硬件和软件环境。
This document describes the APIs available to the Application Author. Other documents are referenced for the other roles. 本文档介绍的 API 适用于应用程序开发者,其他角色请参考其他文档。
1.4.1 Algorithm Creator1.4.1 算法工程师
The Algorithm Creator is responsible for creating an xDAIS algorithm and providing the necessary packaging to enable these algorithms to be consumed and configured by Codec Engine. 算法工程师负责创建xDAIS算法,并提供必要的封装,以使这些算法能被 Codec Engine 使用和进行配置。
If the codec is xDM-compliant, Codec Engine‘s VISA APIs support remote execution without additional support. However, if the codec is not xDM-compliant and the codecs support remote execution, the Algorithm Creator should supply Codec Engine skeletons and stubs. 如果编解码器兼容 xDM,Codec Engine 的 VISA API 无需额外的支持就可以远程执行。但是,如果该编解码器不兼容 xDM 并且编解码器支持远程执行,算法工程师应提供 Codec Engine 骨架 (skeletons) 和客户指代 (stubs)。
The Algorithm Creator uses xDAIS and the XDC Tools. Using these, the Algorithm Creator generates a codec library with the IALG and optional IDMA3 interface symbols exported. This person also creates an XDC module that implements the ti.sdo.ce.ICodec interface. 算法工程师主要使用 xDAIS 与 XDC 工具,通过这些工具,算法工程师生成带有 IALG 和可选 IDMA3 接口符号导出功能的编解码器库,工程师还创建出实现ti.sdo.ce.ICodec接口的XDC模块。
The Algorithm Creator hands a released Codec package to the Server Integrator. This package includes a module that implements ti.sdo.ce.ICodec, as well as the libraries that contain the algorithm‘s implementation. 算法工程师提交一个发行版的编解码器包给系统工程师,该软件包包括一个模块实现 ti.sdo.ce.ICodec,以及包含该算法的实现的库。
The Algorithm Creator uses the following resources: 算法工程师主使用使用以下资源: 1. Codec Engine 算法工程师使用手册 (SPRUED6)。 2. Codec Engine SPI 参考手册。 CE_INSTALL_DIR/docs/spi/html/index.html 3. xDAIS-DM (Digital Media) 用户手册 (SPRUEC8)。 4. xDM API 参考手册。 XDAIS_INSTALL_DIR/docs/html/index.html 5. TMS320 DSP 算法标准规则和指南 (SPRU352)。 6. TMS320 DSP 算法标准 API 参考 (SPRU360)。 7. TMS320 DSP 算法标准开发手册 (SPRU424)。 8. 编解码器例程。
1.4.2 Server Integrator1.4.2 服务器集成工程师
To support Engines with remote codecs, a Codec Server must be created. The Codec Server integrates and configures the various components necessary to house the codecs (e.g. DSP/BIOS, Framework Components, DSP/BIOS Link drivers, codecs, Codec Engine, etc.) and generates an executable. 为了支持带有远程编解码器的引擎,必须创建 Codec 服务器, Codec 服务器集成并配置各种部件,使其必需容纳编解码器(例如 DSP/BIOS ,框架组件, DSP/BIOS Link 驱动程序,编解码器,编解码器引擎等)并产生一个可执行程序。
There are two configuration steps that the Codec Server Integrator must perform, one to configure DSP/BIOS (through a Tconf script) and one to configure "the rest" of the components (through XDC configuration of Framework Components, DSP/BIOS Link, Codec Engine, etc). 编解码器服务器集成工程师必须执行两个配置步骤,一是配置 DSP/BIOS (通过一个 Tconf 脚本),另一个是配置的组件的“剩下部分”(框架组件的XDC配置,DSP/BIOS 链接, Codec Engine,等等)
The Server Integrator receives the various Codec packages from Algorithm Creators. This person uses Codec Engine and its dependent packages (DSP/BIOS, DSKT2, etc) along with the XDC Tools to create the following: ? A DSP executable created by executing the configuration scripts and compiling the output. This executable is a Codec Server. 服务器集成工程师从算法工程师那儿收到各种编解码器包,服务器集成工程师使用 Codec Engine 和它依赖的包( DSP/BIOS,DSKT2, 等等),利用XDC工具创建以下文件: 1. 服务器配置文件 (.cfg)。 2. 服务器 DSP/BIOS 配置文件 (.tcf)。 3. 一个简单的main()函数并做最小的初始化。 4. 通过执行配置脚本创建DSP可执行文件并编译输出。此可执行文件便是一个编解码器服务器。
The Server Integrator hands the DSP executable to the Engine Integrator (preferably as a Codec Server package. The Server Integrator should also provide a list of the codecs in the Codec Server, as well as documentation about how they‘ve been configured (for example, thread priorities and resource configuration). 服务器集成工程师把DSP的执行程序交给引擎集成工程师(最好以编解码器服务器包的形式提交,该服务器集成工程师还应提供在编解码器服务器中包含的codecs列表,以及有关如何配置的文档(例如,线程优先级和资源配置)。
The Server Integrator uses the following resources: On GPP-only and DSP-only platforms the Codec Server is not used, so this role is not required. 服务器集成工程师使用了以下资源: 1. Codec Engine 服务器集成工程师手册 (SPRUED5) 2. 配置参考指南。 CE_INSTALL_DIR/xdoc/index.html 3. 解码器服务器的例程。
1.4.3 Engine Integrator1.4.3 引擎集成工程师
The Engine Integrator defines various Engine configurations. This includes the names of the Engines, as well as the codecs and their names within each Engine, whether each codec is local or remote relative to the application, which groups each codec should be integrated into (for environments which support resource sharing), the name of the Codec Server image if a particular Engine contains remote codecs, etc. This is done via an XDC configuration script (*.cfg). 引擎集成工程师定义出不同的引擎配置,包括引擎的名称,以及编解码器和在每个引擎中的名字。相对于应用程序,每一个编解码器是本地的还是远程,每个编解码器(对于支持资源共享的环境)应当集成到一组。如果一个特定的引擎包含远程编解码器等,统一为编解码器服务器映像名称,这是通过XDC配置脚本 (*.cfg) 完成的。
This script, when run, generates code and build instructions appropriate for the configuration. 该脚本运行时生成代码,并建立相应的配置说明。
The Engine Integrator receives the name of a Codec Server and a list of the codecs it contains from the Server Integrator. Using these, this person creates an Engine configuration file (.cfg) that may reference a Codec Server. 引擎集成工程师收到编解码器服务器 (Codec Server) 的名称和包含来自服务器集成工程师的编解码器的列表。利用这些,引擎集成工程师创建一个引擎配置文件 (.cfg),可参考个编解码器服务器。
On DSP-only and/or GPP-only platforms, the Codec Server is not used, and all codecs will be configured to run locally (that is "local:true"). 在仅有DSP上和/或仅有GPP的平台,该编解码器服务器不能使用,所有的编解码器将配置为在本地运行(即 "local:true")。
The Engine Integrator hands the Engine configuration file to the Application Author. 该引擎集成工程师将引擎配置文件交给应用程序工程师。
The Engine Integrator uses the following resources: 引擎工程师使用以下资源: 1. 本手册的第5章,集成引擎。 2. 配置参考指南。 CE_INSTALL_DIR/xdoc/index.html 3. 例程的创建和运行指导。 CE_INSTALL_DIR/examples/build_instructions.html 4. 配置示例脚本 (*.cfg)。
1.4.4 Application Author1.4.4 应用程序工程师
The application uses the Codec Engine APIs (Engine_, VISA, and other utility APIs) to create/delete preconfigured Engine instances, create/delete and interact with codecs, acquire buffers appropriate for the codecs, etc. 应用程序使用 Codec Engine 的API (Engine_,VISA 和其他公用的 API) 来创建/删除预配置的引擎实例,对 codecs 进行创建/删除和交互,获取相应的编解码器的缓冲区等。
Since Codec Engine doesn‘t perform any I/O, the application is responsible for handling I/O. This includes such task as file access (for example, open/read/write/seek/close) and driver interaction (for example, open/close/ioctl and buffer management). 由于 Codec Engine 不执行任何 I/O操作,应用程序负责处理 I/O。包括文件访问的任务(例如,open/read/write/seek/close)和驱动程序交互(例如,open/close/ioctl和缓冲管理)。
The Application Author is responsible for building the application code and for linking "the appropriate content" into the executable image. 应用程序工程师负责创建应用程序代码和链接“合适的内容”到可执行映像。
The Application Author receives the following: ? An Engine config file (.cfg) from the Engine Integrator 应用程序工程师会接触以下文件: 1. 从算法工程师那儿提供的,不同的编解码器包。 2. 从服务器集成工程师那儿提供的,运行在 DSP 上的编解码器服务器 DSP 可执行程序。 3. 从引擎集成工程师那么提供的,引擎配置文件 (.cfg)。
The Application Author writes application code, generates output from the Engine configuration file (.c and .xdl output files) using the XDC Tools, and compiles the application code and generated files. This person then links the files, including the generated linker command file (.xdl) into an executable. The end result is the application executable. 应用程序工程师编写应用程序代码,使用XDC工具生成输出的引擎配置文件(.c和.xdl输出文件),并编译应用程序代码和生成文件。然后链接文件,将生成的链接器命令文件( .xdl )包含到可执行文件中,最终的结果便是可执行的应用程序文件。
The process for generating an application executable is highly dependant on the application‘s operating system. If the application runs on the DSP using DSP/BIOS, for example, a .tcf file is needed to configure the DSP/BIOS kernel as well. If the application runs on Linux, the application does not need to configure the operating system. 产生可执行的应用程序过程中,高度依赖于应用程序的操作系统。例如,如果应用程序运行在DSP上的 DSP/BIOS系统,还需要一个 .tcf 文件配置 DSP/BIOS 内核,如果应用程序运行在Linux上,应用程序就不需要配置操作系统。
In addition to this manual, the Application Author uses the following resources: 除了本手册中,应用程序作者采用了以下资源: 1. Codec Engine API参考。 CE_INSTALL_DIR/docs/html/index.html 2. 例程的创建和运行指导。 CE_INSTALL_DIR/examples/build_instructions.html
1.4.4.1 Editing a DSP/BIOS Configuration Script1.4.4.1 编辑 DSP/BIOS 配置脚本
For DSP-only applications, the Application Author creates a static DSP/BIOS configuration in a .tcf file, as described in the DSP/BIOS Tconf User’s Guide (SPRU007) and the DSP/BIOS online help. The syntax used in Tconf configurations is based on JavaScript. 针对仅有 DSP 的应用程序,正如 DSP/BIOS Tconf 用户指南( SPRU007 )和 DSP/BIOS 的在线帮助说明描述的一样,应用程序工程师通过创建在一个 .tcf 文件来配置静态的 DSP/BIOS。在Tconf配置中使用的语法是基于JavaScript的。
To create a .tcf file for an application, follow these steps: 1) Copy local.tcf from one of the example applications located at CE_INSTALL_DIR/examples/apps. This configuration file, in combination with the app_common.tci and bios.tci files that it imports, statically configures several aspects of the DSP/BIOS kernel, such as: 要创建一个应用程序 .tcf 文件,请按照下列步骤操作: 1) 复制位于 CE_INSTALL_DIR/examples/apps z中的某一个示例应用程序的 local.tcf 文件,与app_common.tci和它导出的 bios.tci 文件组合,静态配置 DSP/BIOS 内核的几个方面,如: 1. 基本的 DSP/BIOS 内核。 2. 内存部分的名称,大小和位置。 3. 平台特定的属性,如时钟速率。 4. 任务管理和动态堆分配。 5. ’C64x+ L1高速缓存和其对应的内存段。 您可以了解更多关于这些模块和属性信息,通过 DSP/BIOS 在线帮助或者 C6000 DSP/BIOS API 参考 (SPRU403)。 2) 可选一个文本编辑器打开这个.tcf文件。 3) 根据应用程序需要所作出的任何更改都要保存 .tcf 文件。如果你需要为你的应用程序添加自己的功能,你可以 .tcf 中添加您自己的非编解码器引擎的配置项。
1.5 Where Can I Get More Information?1.5 在哪获得更多的信息?
The release_notes*.html file at the top of the Codec Engine installation provides general information, information about changes in the latest version, devices supported and validation information, known issues, and links to online documentation provided with the Codec Engine. The online documentation provided with the Codec Engine is as follows: 在 Codec Engine 安装在顶部的release_notes*.html文件提供一般信息:关于最新版本变化的信息,支持的设备和验证信息,已知问题,链接到提供 Codec Engine 信息的在线文档,在线文档提供的 Codec Engine 信息如下: 1. Codec Engine API参考。 CE_INSTALL_DIR/docs/html/index.html 2. Codec Engine SPI 参考指南。 CE_INSTALL_DIR/docs/spi/html/index.html 3. 配置参考指南。 CE_INSTALL_DIR/xdoc/index.html 4. 示例的建立和运行说明。 CE_INSTALL_DIR/examples/build_instructions.html
For information about xDM, see the xDAIS-DM (Digital Media) User Guide (SPRUEC8).
有关XDM信息,请参考xDAIS-DM (Digital Media)使用手册 (SPRUEC8)。 对于特定平台的帮助,请参考平台入门指南。 |
第一章 Codec Engine概要