香橙派rk3588编程mpp解码rga转格式opengles渲染的视频播放器

演示效果

https://www.bilibili.com/video/BV1URLFzzEvS

1080p@30 码率2721kbps 
注意 这是远程桌面 会比实际接屏幕效果差一些 

 

性能 
cpu 14.6%
gpu 20%
rga 2%

 


实现方案 
ffmpeg拉流rtsp获得h264 为了传输稳定配置rtsp over tcp 
mpp解码h264获得nv12 注意解码器会有帧长度对齐 
rga转换nv12成rgb 将解码帧裁剪掉对齐的多余部分 
opengles对接X11渲染rgb 使用pbo双缓冲提高内存加载到GPU的效率 


为了减少图像帧拷贝 图像格式转换和渲染串行处理 
不用pbo双缓冲时 图像格式转换+渲染100帧耗1386ms 平均13.86ms 
使用pbo双缓冲时 图像格式转换+渲染100帧耗 845ms 平均8.45ms 
在1080p@30下pbo双缓冲提升的效率约是39.03% 


不同的gpu内存加载方式会影响图像格式转换耗时 
不用pbo双缓冲时 图像格式转换100帧耗时132ms 
使用pbo双缓冲时 图像格式转换100帧耗时484ms 
为什么不同的方式会影响图像格式转换耗时?因为输出的内存不同 使用pbo双缓冲时 图像格式转换输出的内存是经过映射的 是从cpu用的内存映射到gpu的内存上 而不用pbo双缓冲时的 图像格式转换的输出内存不是映射gpu的内存 所以耗时不同 


环境 
主控 rk3588 
板卡 香橙派5 ultra 
系统 ubuntu桌面 ​

 

posted @ 2025-04-20 17:46  逸俊晨晖  阅读(353)  评论(1)    收藏  举报