1. 环境准备与源码获取
RK3588S作为瑞芯微旗舰级处理器,在多媒体处理方面表现尤为出色。要开始Camera HDMI显示的开发,首先需要准备好基础环境。我建议使用Ubuntu 20.04作为开发环境,这个版本在兼容性方面最为稳定。
获取SDK源码后,重点关注external/rockit目录,这里包含了Rockit MPI框架的核心实现。Rockit是Rockchip自家推出的媒体处理框架,相比通用的MPP框架,它在RK3588S平台上的性能优化更加深入。我第一次接触这个框架时,发现它的API设计更加贴近实际应用场景,学习曲线相对平缓。
在开始编译前,确保安装了必要的依赖库:
sudo apt-get install build-essential cmake git libssl-dev
Rockit MPI的示例代码位于rk3588s/external/rockit/mpi/example/mod/目录下,这里包含了各种媒体处理的演示程序。特别要注意的是,SDK中的demo可能存在一些问题,需要根据实际使用情况进行修改,这也是我们后面要重点讨论的内容。
2. Rockit MPI框架解析
Rockit MPI框架为RK3588S平台提供了完整的媒体处理流水线。从Camera数据采集、ISP处理到最终的HDMI输出,每个环节都有相应的模块进行处理。我在实际项目中使用这个框架时,最大的感受就是它的模块化设计相当清晰,每个功能模块职责单一,调试起来相对容易。
核心组件包括:
- VI模块:负责视频输入处理,支持多路Camera输入
- ISP模块:进行图像信号处理,包括3A、降噪等算法
- VO模块:视频输出控制,支持HDMI、LVDS等显示接口
- VDEC/VENC模块:视频编解码处理
这些模块通过统一的MPI接口进行调用,开发者可以灵活组合各个模块构建完整的处理流水线。在实际使用中,我发现Rockit MPI的内存管理机制很值得关注,它采用了自己的内存池方案,能够有效减少内存碎片和提高内存使用效率。
3. test_mpi_vi编译与问题修复
编译test_mpi_vi示例程序需要修改CMakeLists.txt文件。找到对应的编译选项并取消注释:
set(RK_MPI_TEST_VI_SRC test_mpi_vi.cpp)
#--------------------------
#rk_mpi_vi_test
#--------------------------
add_executable(rk_mpi_vi_test ${RK_MPI_TEST_VI_SRC} ${RK_MPI_TEST_COMMON_SRC})
target_link_libraries(rk_mpi_vi_test ${ROCKIT_DEP_COMMON_LIBS})
install(TARGETS rk_mpi_vi_test RUNTIME DESTINATION "bin")
在实际编译过程中,我发现SDK中的demo存在几个需要修复的问题。第一个问题是fread函数的使用问题,需要注释掉这行代码:
<


733

被折叠的 条评论
为什么被折叠?



