ISP、VPU、MPP 关系梳理

先看它们各自是什么

ISP(Image Signal Processor)图像信号处理器 专门处理从摄像头传感器出来的原始RAW数据,把它变成人眼能看的正常图像。

VPU(Video Processing Unit)视频处理单元 专门做视频的编码(压缩)和解码(解压),比如把YUV原始视频压成H.264码流。

MPP(Media Process Platform) Rockchip官方提供的软件库,是操控VPU的编程接口,本身不是硬件。


三者的层次关系

┌─────────────────────────────────────────┐
│              RV1126B SoC 内部            │
│                                         │
│   ┌──────────┐        ┌──────────────┐  │
│   │   ISP    │        │     VPU      │  │
│   │ 硬件单元  │        │   硬件单元     │  │
│   │          │        │              │  │
│   │ RAW→YUV  │        │ YUV→H.264    │  │
│   └──────────┘        └──────────────┘  │
│                              ↑          │
│                         MPP库调用        │
└─────────────────────────────────────────┘

ISP和VPU都是芯片上独立的硬件模块,MPP是访问VPU的软件接口。


完整的数据流

从摄像头拍到最终生成H.264码流,经历了这几个阶段:

IMX415传感器
    │
    │  RAW10/RAW12 裸数据(拜耳格式)
    │  通过 MIPI CSI 接口传输
    ↓
┌─────────────────────────────┐
│           ISP               │  ← 硬件
│                             │
│  降噪 → 白平衡 → 色彩矫正      │
│  → 去马赛克 → HDR合成         │
│                             │
│  输出:YUV420 格式图像        │
└─────────────────────────────┘
    │
    │  YUV420 原始图像(未压缩,数据量很大)
    ↓
┌─────────────────────────────┐
│       MPP库(软件)          │  ← 软件接口
│                             │
│  mpp_create()               │
│  mpp_init()                 │
│  mpp_encode(yuv_frame)  ────┼──→ 驱动VPU工作
│  mpp_get_packet(h264)       │
└─────────────────────────────┘
    │
    ↓
┌─────────────────────────────┐
│           VPU               │  ← 硬件
│                             │
│  运动估计 → DCT变换           │
│  → 量化 → 熵编码             │
│                             │
│  输出:H.264码流             │
└─────────────────────────────┘
    │
    │  H.264码流
    ↓
 GStreamer → RTSP推流 / MP4录像

三者分工对比

ISP VPU MPP
本质 硬件 硬件 软件库
位置 芯片内部 芯片内部 用户空间
输入 RAW裸数据 YUV图像 开发者的API调用
输出 YUV图像 H.264/H.265码流 驱动VPU产生码流
处理阶段 采集阶段 编码阶段 编码阶段(控制层)
类比 洗胶卷的暗房 压缩打包机 打包机的操作说明书

关键理解

ISP和VPU没有直接关系,它们处理的是流水线上的不同阶段,ISP在前,VPU在后,中间的纽带是YUV图像数据。

MPP只管VPU,不管ISP。ISP有自己独立的控制接口,在RV1126B上通过Rockchip的RKisp驱动和媒体框架来控制,和MPP是两套体系。

为什么要把RAW转成YUV再编码? RAW数据是传感器的原始电信号,颜色信息不完整、噪点多、格式不标准,VPU无法直接处理,必须先经过ISP"整理成正常图像"再交给VPU压缩。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐