达芬奇技术之Codec Engine学习(一)

简介: <h2 align="center">Codec Engine学习</h2> <h3>1、Codec Engine概述</h3> <p>对于达芬奇(DAVINCI)平台的开发,所有的工程师都面临着如何实现ARM和DSP或协处理器的通信和协同工作。而TI的数字视频软件开发包(DVSDK)提供了Codec Engine这样一个软件模块来实现ARM和DSP或协处理器的协同工作。</p> <

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 - The Codec Engine runtime.
  • ti.sdo.ce.video2 - The Codec Engine video component (supporting the XDM IVIDDEC2 interface).
  • ti.sdo.ce.video1 - The Codec Engine video component (supporting the XDM IVIDDEC1 and IVIDENC1 interfaces).
  • ti.sdo.ce.image1 - The Codec Engine image component (supporting the XDM IIMGDEC1 and IIMGENC1 interfaces).
  • ti.sdo.ce.speech1 - The Codec Engine speech component (supporting the XDM ISPHDEC1 and ISPHENC1 interfaces).
  • ti.sdo.ce.audio1 - The Codec Engine audio component (supporting the XDM IAUDDEC1 and IAUDENC1 interfaces).
  • ti.sdo.ce.osal - The Codec Engine OS Abstraction Layer. This package insulates CE from the OS it's running on, and provides a few Modules for customers to use (e.g. Memory).
  • ti.sdo.ce.utils.trace - The Codec Engine utility package for trace. This includes the TraceUtils module. This makes tracing features easier to use by an application. It will be supported in this release, but may be replaced in a future release with an incompatible implementation.

    还包含过时的包,主要有:

  • ti.sdo.ce.video - The Codec Engine video component (supporting the XDM IVIDDEC and IVIDENC interfaces).
  • ti.sdo.ce.image - The Codec Engine image component (supporting the XDM IIMGDEC and IIMGENC interfaces).
  • ti.sdo.ce.speech - The Codec Engine speech/voice component (supporting the XDM ISPHDEC and ISPHENC interfaces).

    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

    常用的参考资料有:

     兼容性信息:

    • 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:

  • DM365 EVM:
    • 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.

     

    • 目录
      相关文章
      |
      7月前
      |
      Web App开发 编解码 定位技术
      Google Earth Engine(GEE)——土壤属性Soil Properties 800m分辨率
      Google Earth Engine(GEE)——土壤属性Soil Properties 800m分辨率
      62 0
      |
      传感器 编解码 知识图谱
      Google Earth Engine ——MOD17A2H V6总初级生产力(GPP)产品是一个具有500米分辨率的8天累积综合数据产品
      Google Earth Engine ——MOD17A2H V6总初级生产力(GPP)产品是一个具有500米分辨率的8天累积综合数据产品
      1279 0
      Google Earth Engine ——MOD17A2H V6总初级生产力(GPP)产品是一个具有500米分辨率的8天累积综合数据产品
      |
      7月前
      |
      数据采集 人工智能 PyTorch
      极智AI | 昇腾CANN ATC模型转换
      大家好,我是极智视界,本文介绍一下 昇腾 CANN ATC 模型转换。
      382 0
      |
      7月前
      |
      UED
      首批类Sora竞争对手出现,Snap Video效果优于Pika、不输Gen-2
      【2月更文挑战第13天】首批类Sora竞争对手出现,Snap Video效果优于Pika、不输Gen-2
      98 3
      首批类Sora竞争对手出现,Snap Video效果优于Pika、不输Gen-2
      |
      7月前
      |
      机器学习/深度学习 人工智能 前端开发
      极智AI | 谈谈昇腾auto tune
      大家好,我是极智视界,本文介绍一下 谈谈昇腾 auto tune。
      152 0
      |
      7月前
      |
      存储 机器学习/深度学习 人工智能
      极智AI | 再谈昇腾auto tune
      大家好,我是极智视界,本文 再来谈谈昇腾 auto tune。
      127 0
      |
      7月前
      |
      存储 人工智能
      极智AI | 三谈昇腾auto tune
      大家好,我是极智视界,本文 再来谈谈昇腾 auto tune。
      163 0
      |
      7月前
      |
      人工智能
      极智AI | 讲解TensorRT Constant算子
      大家好,我是极智视界,本文讲解一下 TensorRT Constant 算子。
      86 0
      |
      编解码 Linux 对象存储
      荔枝派Zero(全志V3S)开启alsa,测试codec
      ALSA 是 Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。
      355 0
      |
      机器学习/深度学习 并行计算 算法
      阿里开源 支持10万亿模型的自研分布式训练框架EPL(Easy Parallel Library)
      最近阿里云机器学习PAI平台和达摩院智能计算实验室一起发布“低碳版”巨模型M6-10T,模型参数已经从万亿跃迁到10万亿,规模远超业界此前发布的万亿级模型,成为当前全球最大的AI预训练模型。同时做到了业内极致的低碳高效,使用512 GPU在10天内即训练出具有可用水平的10万亿模型。