-
Notifications
You must be signed in to change notification settings - Fork 1
MPP_README
SweerItTer edited this page Feb 21, 2026
·
4 revisions
MPP 模块提供 Rockchip MPP(Media Process Platform)的封装,支持视频编码、图像编码等功能。
| 类 | 文档 | 说明 |
|---|---|---|
EncoderContext |
EncoderContext | 编码器上下文 |
EncoderCore |
EncoderCore | 编码器核心 |
JpegEncoder |
JpegEncoder | JPEG 编码器 |
StreamWriter |
StreamWriter | 流写入器 |
| 类 | 文档 | 说明 |
|---|---|---|
MppResourceGuard |
MppResourceGuard | 资源管理 |
| 类 | 文档 | 说明 |
|---|---|---|
FileTools |
FileTools | 文件工具 |
FormatTool |
FormatTool | 格式工具 |
- H.264/H.265 编码
- JPEG 编码
- 多种输入格式支持
- 质量控制
- JPEG 图像编码
- PNG 图像编码
- 图像压缩
- 质量调整
- 流式编码
- 文件写入
- 网络传输
JpegEncoder::Config cfg;
cfg.width = 1920;
cfg.height = 1080;
cfg.format = MPP_FMT_YUV420SP;
cfg.quality = 8; // 0-10,值越大质量越高
cfg.save_dir = "/tmp/jpeg"; // 保存目录
JpegEncoder encoder(cfg);
// 从 DMA-BUF 捕获并编码到文件
DmaBufferPtr dma_buffer = get_dmabuf_from_camera();
bool success = encoder.captureFromDmabuf(dma_buffer);
if (success) {
printf("JPEG 编码成功,文件已保存到 %s\n", cfg.save_dir.c_str());
}JpegEncoder::Config cfg;
cfg.width = 1920;
cfg.height = 1080;
cfg.format = MPP_FMT_YUV420SP;
cfg.quality = 10; // 最高质量
cfg.save_dir = "/tmp/high_quality_jpeg";
JpegEncoder encoder(cfg);
// 质量通过 Config 结构体设置,无法在编码后修改
// 如果需要不同质量,需要重新创建 Config 或使用 resetConfig()
DmaBufferPtr dma_buffer = get_dmabuf_from_camera();
encoder.captureFromDmabuf(dma_buffer);JpegEncoder::Config cfg;
cfg.width = 1920;
cfg.height = 1080;
cfg.format = MPP_FMT_YUV420SP;
cfg.quality = 8;
cfg.save_dir = "/tmp/batch_jpeg";
JpegEncoder encoder(cfg);
for (int i = 0; i < 100; ++i) {
DmaBufferPtr frame = get_dmabuf_frame(i);
encoder.captureFromDmabuf(frame);
printf("已编码第 %d 帧\n", i);
}YUV 数据 → MPP 编码器 → 编码数据 → 文件/网络
- JpegEncoder: 每个线程应该有自己的实例
- MPP 编码器本身是线程安全的
- 使用互斥锁保护共享资源
- 使用硬件加速
- 批量编码提高效率
- 合理设置质量参数
- 使用 DMA-BUF 零拷贝
- 检查初始化是否成功
- 检查编码是否成功
- 处理格式不支持的情况
- 记录错误日志
- 格式匹配: 输入格式必须与配置一致
- 硬件限制: 不同平台支持的编码格式不同
- 性能: 编码性能取决于硬件和参数
- 资源管理: 析构时自动清理 MPP 资源
- 线程安全: 每个线程应该有自己的实例
- 内存: 注意内存使用,大图像可能占用大量内存
- 质量: 质量参数影响文件大小和性能
- 依赖: 需要安装 Rockchip MPP 库
- v1.0 - 初始版本,支持 JPEG 编码
主页
API 文档
DMA 模块
DRM 模块
- DRM 模块总览
- DeviceController - DRM 设备控制器
- DrmLayer - DRM 图层管理
- PlanesCompositor - DRM 平面合成器
- DrmBpp - DRM 格式定义
NET 模块
- NET 模块总览
- TcpServer - TCP 服务器
- SocketConnection - Socket 连接管理
- CommandHandler - 命令处理器
- DataPacket - 数据包
V4L2 模块
- V4L2 模块总览
- CameraController - V4L2 摄像头控制器
- Frame - V4L2 帧数据结构
- FormatTool - V4L2 格式工具
- Exception - V4L2 异常类
V4L2Param 模块
- V4L2Param 模块总览
- ParamControl - 参数控制
- ParamLogger - 参数日志
- ParamProcessor - 参数处理器
RGA 模块
- RGA 模块总览
- RgaConverter - RGA 转换器
- RgaProcessor - RGA 处理器
- FormatTool - RGA 格式工具
MPP 模块
- MPP 模块总览
- EncoderContext - 编码器上下文
- EncoderCore - 编码器核心
- JpegEncoder - JPEG 编码器
- StreamWriter - 流写入器
- MppResourceGuard - MPP 资源守护
- FileTools - 文件工具
- FormatTool - 格式工具
Sys 模块
- Sys 模块总览
- CpuMonitor - CPU 监控器
- MemoryMonitor - 内存监控器
- Base - 基础类
Mouse 模块
- Mouse 模块总览
- Watcher - 鼠标监视器
Utils 模块
- Utils 模块总览
- AsyncThreadPool - 异步线程池
- ConcurrentQueue - 并发队列
- FdWrapper - 文件描述符包装器
- FenceWatcher - 围栏监视器
- FixedSizePool - 固定大小对象池
- Logger - 日志记录器
- ObjectsPool - 对象池
- OrderedQueue - 有序队列
- ProgressBar - 进度条
- SafeQueue - 安全队列
- SharedBufferState - 共享缓冲区状态
- SimpleVariant - 简单变体类型
- ThreadPauser - 线程暂停器
- ThreadUtils - 线程工具
- Types - 类型定义
- UdevMonitor - Udev 监视器