Rockchip 音视频编解码

MPP

Posted by LXG on June 21, 2024

Rockchip_Developer_Guide_MPP_CN.pdf

WebRTC浏览器支持的各类视频编解码器

webrtc_encode_format

此图是2021年的情况, 目前chrome也是支持H265格式的, 2023年苹果最新最新版浏览器也开始支持VP9, AV1 格式了

  • VP8: google定义并开源的视频编解码标准和编解码库实现, VP8的优点是开源,没有H264/H265的专利版权风险, VP8几乎没有硬件加速,所以它在某些情况下会占用更多的CPU
  • VP9: google开源的用与比拼H265(HEVC)的编解码器, 苹果不支持VP9格式(2023年之后最新版浏览器也开始支持了)
  • H264(AVC): 思科(cisco)开源的openh264编解码库或者法国 videolan 开源组织维护的 libx264 编解码库, H.264在苹果设备、PC、安卓上有硬件加速。但有时你在WebRTC中不会有H.264的实现,因为无法获得硬件,软件实现也不存在(由于版权费等问题)
  • H265(HEVC): 法国 videolan 组织开源的 libx265 编解码库, FFmpeg 维护的 H265(HEVC)的编解码库openhevc
  • AV1: AV1 是 Google VP10、Mozilla Daala 以及 Cisco Thor 三款开源编码项目共同研发成果, 由 FFmpeg 和法国 videolan 开源组织共同维护的 dav1d 编解码库

对于Android Native webrtc客户端来说, 目前可用的仍然只有VP8, VP9(速度更快)

MPP 简介

瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的通用媒体处理软件平台。该平台对应用软件屏蔽了芯片相关的复杂底层处理,其目的是为了屏蔽不同芯片的差异,为使用者提供统一的视频媒体处理接口(Media Process Interface,缩写 MPI)。MPP提供的功能包括:

  • 视频解码 : H.265 / H.264 / H.263 / VP9 / VP8 / MPEG-4 / MPEG-2 / MPEG-1 / VC1 / MJPEG
  • 视频编码: H.264 / VP8 / MJPEG
  • 视频处理: 视频拷贝,缩放,色彩空间转换,场视频解交织(Deinterlace)

MPP 架构

rockchip_mpp_arch

硬件层

硬件层是瑞芯微系列芯片平台的视频编解码硬件加速模块,包括 VPU,rkvdec,rkvenc 等不同类型,不同功能的硬件加速器

内核驱动层 Kernel driver

rk3588_android_12/kernel-5.10/drivers/video/rockchip/mpp

Linux 内核的编码器硬件设备驱动,以及相关的 mmu,内存,时钟,电源管理模块等

MPP层

用户态的 MPP 层屏蔽了不同操作系统和不同芯片平台的差异,为上层使用者提供统一的 MPI 接口。MPP 层包括 MPI 模块,OSAL 模块,HAL 模块以及视频编解码器(Video Decoder / Video Encoder) 和视频处理功能模块(Video Process)。

操作系统层

MPP 用户态的运行平台,如 Android 以及 Debian 等 Linux 发行版

应用层

MPP 层通过 MPI 对接各种中间件软件,如 OpenMax,ffmpeg 和 gstreamer,或者直接对接客户的上层应用。