mpp设计:
mpp是Rockchip SoC跨平台媒体处理器的中间件库。 mpp的主要目标是在多媒体(主要是视频和图像)处理器上提供高性能、高灵活性和可扩展性。
mpp设计的主要目标是将不同的Rockchip硬件内核驱动程序链接到不同的用户APP应用程序。
Rockchip有两个硬件内核驱动程序
第一组是vcodec _ service/vpu _ service/MPP _ service,它是高性能的基于五状态框架的硬件内核驱动。 此驱动程序支持所有硬件都可以提供的有效解码器。 此驱动程序当前已应用于Android/Linux。
第二套是为ChromeOS开发的v4l2驱动程序。 他目前支持H.264/H.265/vp8/vp9。 此驱动器用于wrdxf/Linux。
Mpp计划支持多种用户层APP应用程序,包括OpenMax和FFmpeg。
gstreamer,libva。
深度分析:
1、跨平台
目标APP应用程序平台包括安卓、Linux和ChromeOS and windows。 Mpp使用cmake在不同的平台上编译。
2、高性能
Mpp支持同步或异步接口以减少块时间。 然后,mpp内部使硬件和软件平行动作。 在硬件运行期间,软件将在同一时间安排下一项硬件任务。
3、高灵活性
MPI )媒体处理器接口)可以很容易地扩展到不同的控制函数。 输入输出元素packet/frame/buffer也易于扩展不同的组件。
系统映像:
-----------|| ffmpeg/open max/gstreamer/lib va|||----------- MPP|||MPI/MPP|| | |解码器/编码器||||||||||----------------------|||||||||||
操作系统抽象层(osal )操作系统抽象层
此模块可屏蔽操作系统中的差异,并提供基本组件,如内存、时间、线程、时间、日志和硬件内存分配器。
介质处理接口(MPI )/MPP介质处理接口
此模块负责与外部用户进行交互。 Mpi层有两种可供用户使用的方法。 简单方法:用户直接使用put/get packet/frame函数集。 高级方法:用户必须配置MppTask,并使用dequeue/enqueue函数集调度mpp。 MppTask可以承载不同的元数据并完成复杂的任务。
编码/解码器(codec )编解码器
该模块实现了高效的内部工作流程。 编解码模块提供不同视频格式的公共调用流。 软件进程与硬件指定进程分离。 软件通过一个通用的任务接口与硬件进行通信,该接口结合了缓冲区信息和编解码器中指定的信息。
硬件抽象层(parser/controllerandhal )
该层提供不同的视频格式、不同硬件的实现功能调用。 解码器为hal提供关于视频流的分析功能和输出格式的语法结构。 hal将语法结构转换为不同硬件上的寄存器集。 当前的hal支持vcodec u服务内核驱动程序,今后将支持v4l2驱动程序。