ISP、VPU、MPP 关系梳理先看它们各自是什么ISPImage Signal Processor图像信号处理器专门处理从摄像头传感器出来的原始RAW数据把它变成人眼能看的正常图像。VPUVideo Processing Unit视频处理单元专门做视频的编码压缩和解码解压比如把YUV原始视频压成H.264码流。MPPMedia Process PlatformRockchip官方提供的软件库是操控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录像三者分工对比ISPVPUMPP本质硬件硬件软件库位置芯片内部芯片内部用户空间输入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压缩。