MPP
MPP (Multimedia Processing Platform,多媒体处理平台)开发指南。
1. 概述
1.1 编写目的
主要介绍 SpacemiT 的多媒体相关的框架层次结构,开放 API 接口等,方便开发者快速上手或者二次开发 。
1.2 适用范围
适用于 SpacemiT 的 K1 系列 SOC。
1.3 相关人员
- 应用开发工程师
- 多媒体中间件开发及维护工程师
1.4 文档结构
该文档首先介绍了多媒体整体框架结构及其简要说明,然后分别对 MPP 模块,VPU 模块,JPU 模块,ISP/CPP/MIPI-CSI 模块等进行详细的说明。
2 多媒体整体框架
2.1 框架层次图及说明

从框架结构上看分 4 层,从上到下依次为:
- APP层:包括第三方 APP 和自研 APP,第三方 APP 基本上是通过 GStreamer 和 FFmpeg 等开源框架来实现视频的编解码,例 如 Bianbu 默认集成的 mpv 播放器,还有我们常用的 Video(totem)等,自研 APP 目前主要是我们提供的对接 API 的参考 demo 或者 test。
- mpv:Bianbu 桌面系统默认本地播放器,对接了 K1 硬件解码器,支持 H.264/HEVC/VP8/VP9/MPEG-4/MPEG-2/MJPEG 等多种格式的硬件解码,最高支持到 4K60 视频的播放。
- totem:Ubuntu 桌面系统默认本地播放器,对接了 K1 硬件解码器,支持 H.264/HEVC/VP8/VP9/MPEG-4/MPEG-2/MJPEG 等多种格式的硬件解码,目前最高支持到 4K30 视频的播放。
- cheese:Bianbu/Ubuntu 桌面系统默认的 camera 应用,支持预览,拍照,录像等功能,目前已经对接了 K1 的硬件编解码器,实现 1080P30 流畅预览录像。
- chromium:Bianbu 桌面系统默认浏览器,对接了 K1 的硬件解码器,支持 H.264/HEVC 等多种格式的硬件解码,最高支持到 4K30 视频的播放。
- kodi:开发者和发烧友常用的开源播放器,对接了 K1 的硬件解码器,H.264/HEVC/VP8/VP9 等多种格式的硬件解码,最高支持 4K60 视频的播放。
- v2d-test:V2D 模块的测试程序,也可以作为参考 demo,V2D 模块主要是进行非压缩图像的格式转换,旋转,缩放等操作。
- mvx-player:VPU 模块的测试程序,也可以作为参考 demo,通过命令行进行视频的编解码操作,输出以文件的形式保存。
- jpu-test:JPU 模块的测试程序,也可以作为参考 demo,通过命令行进行视频的编解码操作,输出以文件的形式保存,JPU 模块主要进行 JPEG 图像的编解码操作。
- camera-test:CAMERA 通路的测试程序,也可以作为参考 demo,通过命令行进行图像的采集,该测试程序主要是针对 K1 的 CPP-ISP-MIPICSI 模块提供 的 API,不包括 USB camera,USB camera 请使用 v4l-utils 等开源标准测试程序。
- 开源多媒体框架层(FRAMEWORK):常见的就是 GStreamer,FFmpeg,GStreamer 和 FFmpeg 是完整的多媒体解决方案,全面包含了 muxer/demuxer/decoder/encoder/display 的各种实现,是可以直接使用的开源框架。这一层,我们实现了多个插件通过 MPP 把硬件编解码库对接上。
- FFmpeg:FFmpeg 对接了 K1 的硬件编解码器,支持 H.264/HEVC/VP8/VP9/MPEG-4/MPEG-2/MJPEG 等多种格式的硬件解码,最高支持到 4K60 视频的播放,同时支持 AV_PIX_FMT_DRM_PRIME 和 AV_PIX_FMT_NV12 的输出像素格式,支持 H.264/H.265/VP8/VP9/MJPEG 等多种格式的硬件编码,最高支持到 4K30 的编码。
- Gstreamer:Gstreamer 对接了 K1 的硬件编解码器,支持 H.264/HEVC/VP8/VP9/MPEG-4/MPEG-2/MJPEG 等多种格式的硬件解码,最高支持到 4K30 视频的播放,支持 H.264/H.265/VP8/VP9/MJPEG 等多种格式的硬件编码,最高支持到 1080P60 的编码。
- Openmax IL:编解码适配中
- MPP:对上提供统一多媒体 API,对下动态加载不同平台的编解码库插件来调用编解码库。
- Driver & Library:IP 厂商提供的驱动和 API 动态库。
2.2 概念术语
- VPU:(Video Processing Unit,视频处理单元)具有视频编解码功能的硬件,能够提高编解码效率并减少 CPU 负荷,K1 的 VPU 基于标准 V4L2 框架实现,支持 H.264/HEVC/VP8/VP9/MJPEG/MPEG4 等格式的解码和 H.264/HEVC/VP8/VP9/MJPEG 等格式的编码。
- V2D