rk mpp架构文档翻译

2 篇文章 1 订阅

mpp设计:
mpp是Rockchip SoC的跨平台媒体处理器的中间件库。mpp的主要目标是在多媒体(主要是视频和图像)处理器上提供高性能,高灵活性和扩展性。
mpp设计的主要目标是链接不同的Rockchip硬件内核驱动和不同的用户应用。
Rockchip有两套硬件内核驱动程序
第一套是vcodec_service/vpu_service/mpp_service,是一种高性能五状态帧基础硬件内核驱动。这一驱动支持所有硬件能够提供的有效解码器。这一驱动目前应用于Android/Linux。
第二套是为ChromeOS开发的v4l2驱动。他现在支持H.264/H.265/vp8/vp9。这一驱动用于ChomeOS/Linux。
Mpp计划支持多种用户层应用包括OpenMax, FFmpeg,
gstreamer, libva。
深度解析:
1、跨平台
目标应用平台包括Android, Linux, ChromeOS and windows。Mpp使用cmake在不同的平台编译。
2、高性能
Mpp支持同步或异步接口以减少阻塞时间。并且mpp内部使硬件和软件平行运行。当硬件正在运行时软件将会在同一时间调度下一次硬件任务。
3、高灵活性
MPI(媒体处理器接口)可以很简单的被不同的控制函数扩展。输入\输出要素packet/frame/buffer也更容易扩展不同的组件。
系统示意图:

            +---------------------------------------+
            |                                       |
            | ffmpeg / OpenMax / gstreamer / libva  |
            |                                       |
            +---------------------------------------+

        +-------------------- MPP ----------------------+
        |                                               |
        |   +-------------------------+    +--------+   |
        |   |                         |    |        |   |
        |   |        MPI / MPP        |    |        |   |
        |   |   buffer queue manage   |    |        |   |
        |   |                         |    |        |   |
        |   +-------------------------+    |        |   |
        |                                  |        |   |
        |   +-------------------------+    |        |   |
        |   |                         |    |        |   |
        |   |          codec          |    |  OSAL  |   |
        |   |    decoder / encoder    |    |        |   |
        |   |                         |    |        |   |
        |   +-------------------------+    |        |   |
        |                                  |        |   |
        |   +-----------+ +-----------+    |        |   |
        |   |           | |           |    |        |   |
        |   |  parser   | |    HAL    |    |        |   |
        |   |  control  | |  reg_gen  |    |        |   |
        |   |           | |           |    |        |   |
        |   +-----------+ +-----------+    +--------|   |
        |                                               |
        +-------------------- MPP ----------------------+

            +---------------------------------------+
            |                                       |
            |                kernel                 |
            |       RK vcodec_service / v4l2        |
            |                                       |
            +---------------------------------------+

Mpp由四个主要的子模块组成。
OSAL(Operation System Abstraction Layer)操作系统抽象层
此模块屏蔽了不同操作系统的差异并且提供基础的组件包括内存,时间,线程,时间,日志以及硬件内存分配器。
MPI(Media Process Interface)/MPP 媒体处理接口
该模块负责与外部用户的交互。Mpi层有两种方式供用户使用。简单方式:用户直接使用put/get packet/frame 函数集。先进方式:用户需要配置MppTask并且使用dequeue/enqueue函数集来调度mpp。MppTask能够搬运不同的元数据并且完成复杂的任务。
Codec (encoder / decoder)编解码器
该模块实现了高效的内部工作流程。编解码器模块提供不同视频格式的通用调用流。软件过程将与硬件指定过程分离。软件将通过一个共同的任务接口与硬件进行通信,该接口结合了缓冲区信息和编解码器指定的信息。
Parser/Controller and hal (Hardware Abstraction Layer) 硬件抽象层
该层提供了不同视频格式、不同硬件的实现功能调用。解码器解析器为hal提供视频流解析功能和输出格式相关的语法结构。hal将语法结构转换为不同硬件上的寄存器集。当前的hal支持vcodec\ u服务内核驱动程序,并计划后续支持v4l2驱动程序。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值