香橙派Pi5视频通过Qt5硬编码编译
文章目录
前言
香橙派新推出了Pi5的电脑,但是官方教程还不是很完善。但是Pi5的电脑使用的是RK3588S的芯片我想应该和RK3588视频硬编码差不多,所以就用RK官方的mpp编码跑一下在RK3588S上Qt的编译
一、RKMpp和RKMpi是什么?
RKMpp是RK(瑞芯微)公司提供的一个视频硬件便解码库,RKMPI通过RKMPP提供底层接口实现媒体的操作处理。在目前最新的RK3588系列芯片上最高可以达到8K60fps的视频编解码。
二、编译RKMPP
1.下载地址
git clone https://github.com/rockchip-linux/mpp.git
2.文件结构
如果觉得太长了还是不用拉开看吧
mpp-develop
├── build
│ ├── android
│ │ ├── aarch64
│ │ │ ├── fix
│ │ │ │ ├── libc.so
│ │ │ │ └── readme.txt
│ │ │ └── make-Android.bash
│ │ ├── Android.mk
│ │ ├── android.toolchain.cmake
│ │ ├── arm
│ │ │ └── make-Android.bash
│ │ ├── env_setup.sh
│ │ ├── ndk_links.md
│ │ ├── README.md
│ │ ├── update.sh
│ │ └── x86
│ │ └── make-Android.bash
│ ├── cmake
│ │ └── version.in
│ ├── linux
│ │ ├── aarch64
│ │ │ ├── arm.linux.cross.cmake
│ │ │ └── make-Makefiles.bash
│ │ ├── arm
│ │ │ ├── arm.linux.cross.cmake
│ │ │ └── make-Makefiles.bash
│ │ ├── x86
│ │ │ └── sofia-3gr
│ │ │ ├── make-Makefiles.bash
│ │ │ └── sofia-3gr.linux.cross.cmake
│ │ └── x86_64
│ │ └── make-Makefiles.bash
│ ├── vc10-x86_64
│ │ ├── build-all.bat
│ │ └── make-solutions.bat
│ └── vc12-x86_64
│ ├── build-all.bat
│ └── make-solutions.bat
├── CMakeLists.txt
├── debian
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── docs
│ ├── librockchip-mpp1.install
│ ├── librockchip-mpp-dev.install
│ ├── librockchip-vpu0.install
│ ├── README.Debian
│ ├── README.source
│ ├── rockchip-mpp-demos.install
│ ├── rules
│ └── source
│ └── format
├── doc
│ ├── design
│ │ ├── 1.mpp_design.txt
│ │ ├── 2.kernel_driver.txt
│ │ ├── 3.mpp_buffer.txt
│ │ └── 4.mpp_task.txt
│ └── readme.txt
├── inc
│ ├── mpp_buffer.h
│ ├── mpp_compat.h
│ ├── mpp_err.h
│ ├── mpp_frame.h
│ ├── mpp_log_def.h
│ ├── mpp_log.h
│ ├── mpp_meta.h
│ ├── mpp_packet.h
│ ├── mpp_rc_api.h
│ ├── mpp_rc_defs.h
│ ├── mpp_task.h
│ ├── rk_hdr_meta_com.h
│ ├── rk_mpi_cmd.h
│ ├── rk_mpi.h
│ ├── rk_type.h
│ ├── rk_vdec_cfg.h
│ ├── rk_vdec_cmd.h
│ ├── rk_venc_cfg.h
│ ├── rk_venc_cmd.h
│ ├── rk_venc_rc.h
│ ├── rk_venc_ref.h
│ ├── vpu_api.h
│ └── vpu.h
├── LICENSE.md
├── mpp
│ ├── base
│ │ ├── CMakeLists.txt
│ │ ├── inc
│ │ │ ├── mpp_2str.h
│ │ │ ├── mpp_bitput.h
│ │ │ ├── mpp_bitread.h
│ │ │ ├── mpp_bitwrite.h
│ │ │ ├── mpp_buffer_impl.h
│ │ │ ├── mpp_buf_slot.h
│ │ │ ├── mpp_cluster.h
│ │ │ ├── mpp_dec_cb_param.h
│ │ │ ├── mpp_dec_cfg_impl.h
│ │ │ ├── mpp_enc_cb_param.h
│ │ │ ├── mpp_enc_cfg_impl.h
│ │ │ ├── mpp_enc_ref.h
│ │ │ ├── mpp_enc_refs.h
│ │ │ ├── mpp_frame_impl.h
│ │ │ ├── mpp_meta_impl.h
│ │ │ ├── mpp_packet_impl.h
│ │ │ ├── mpp_task_impl.h
│ │ │ └── mpp_trie.h
│ │ ├── mpp_2str.c
│ │ ├── mpp_bitput.c
│ │ ├── mpp_bitread.c
│ │ ├── mpp_bitwrite.c
│ │ ├── mpp_buffer.cpp
│ │ ├── mpp_buffer_impl.cpp
│ │ ├── mpp_buf_slot.cpp
│ │ ├── mpp_cfg.cpp
│ │ ├── mpp_cluster.cpp
│ │ ├── mpp_dec_cfg.cpp
│ │ ├── mpp_dec_hdr_meta.c
│ │ ├── mpp_enc_cfg.cpp
│ │ ├── mpp_enc_ref.cpp
│ │ ├── mpp_enc_refs.cpp
│ │ ├── mpp_frame.cpp
│ │ ├── mpp_meta.cpp
│ │ ├── mpp_packet.cpp
│ │ ├── mpp_task.cpp
│ │ ├── mpp_task_impl.cpp
│ │ ├── mpp_trie.cpp
│ │ └── test
│ │ ├── CMakeLists.txt
│ │ ├── mpp_bit_read_test.c
│ │ ├── mpp_bit_test.c
│ │ ├── mpp_buffer_test.c
│ │ ├── mpp_cluster_test.c
│ │ ├── mpp_dec_cfg_test.c
│ │ ├── mpp_enc_cfg_test.c
│ │ ├── mpp_enc_ref_test.c
│ │ ├── mpp_meta_test.c
│ │ ├── mpp_packet_test.c
│ │ ├── mpp_task_test.c
│ │ └── mpp_trie_test.c
│ ├── CMakeLists.txt
│ ├── codec
│ │ ├── CMakeLists.txt
│ │ ├── dec
│ │ │ ├── av1
│ │ │ │ ├── av1d_api.c
│ │ │ │ ├── av1d_cbs.c
│ │ │ │ ├── av1d_cbs.h
│ │ │ │ ├── av1d_codec.h
│ │ │ │ ├── av1d_common.h
│ │ │ │ ├── av1d_parser2_syntax.c
│ │ │ │ ├── av1d_parser.c
│ │ │ │ ├── av1d_parser.h
│ │ │ │ ├── av1d_probs.c
│ │ │ │ ├── av1_entropymode.c
│ │ │ │ ├── av1_entropymode.h
│ │ │ │ ├── av1.h
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── avs
│ │ │ │ ├── avsd_api.c
│ │ │ │ ├── avsd_parse.c
│ │ │ │ ├── avsd_parse.h
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── avs2
│ │ │ │ ├── avs2d_api.c
│ │ │ │ ├── avs2d_dpb.c
│ │ │ │ ├── avs2d_dpb.h
│ │ │ │ ├── avs2d_global.h
│ │ │ │ ├── avs2d_parse.c
│ │ │ │ ├── avs2d_parse.h
│ │ │ │ ├── avs2d_ps.c
│ │ │ │ ├── avs2d_ps.h
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── CMakeLists.txt
│ │ │ ├── dummy
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── dummy_dec_api.c
│ │ │ ├── h263
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── h263d_api.c
│ │ │ │ ├── h263d_parser.c
│ │ │ │ └── h263d_parser.h
│ │ │ ├── h264
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── h264d_api.c
│ │ │ │ ├── h264d_dpb.c
│ │ │ │ ├── h264d_dpb.h
│ │ │ │ ├── h264d_fill.c
│ │ │ │ ├── h264d_fill.h
│ │ │ │ ├── h264d_global.h
│ │ │ │ ├── h264d_init.c
│ │ │ │ ├── h264d_init.h
│ │ │ │ ├── h264d_parse.c
│ │ │ │ ├── h264d_parse.h
│ │ │ │ ├── h264d_pps.c
│ │ │ │ ├── h264d_pps.h
│ │ │ │ ├── h264d_scalist.c
│ │ │ │ ├── h264d_scalist.h
│ │ │ │ ├── h264d_sei.c
│ │ │ │ ├── h264d_sei.h
│ │ │ │ ├── h264d_slice.c
│ │ │ │ ├── h264d_slice.h
│ │ │ │ ├── h264d_sps.c
│ │ │ │ └── h264d_sps.h
│ │ │ ├── h265
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── h265d_codec.h
│ │ │ │ ├── h265d_defs.h
│ │ │ │ ├── h265d_parser2_syntax.c
│ │ │ │ ├── h265d_parser.c
│ │ │ │ ├── h265d_parser.h
│ │ │ │ ├── h265d_ps.c
│ │ │ │ ├── h265d_refs.c
│ │ │ │ └── h265d_sei.c
│ │ │ ├── jpeg
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── jpegd_parser.c
│ │ │ │ └── jpegd_parser.h
│ │ │ ├── m2v
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── m2vd_api.c
│ │ │ │ ├── m2vd_codec.h
│ │ │ │ ├── m2vd_com.h
│ │ │ │ ├── m2vd_parser.c
│ │ │ │ └── m2vd_parser.h
│ │ │ ├── mpg4
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── mpg4d_api.c
│ │ │ │ ├── mpg4d_parser.c
│ │ │ │ └── mpg4d_parser.h
│ │ │ ├── vp8
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── vp8d_api.c
│ │ │ │ ├── vp8d_codec.h
│ │ │ │ ├── vp8d_data.h
│ │ │ │ ├── vp8d_parser.c
│ │ │ │ └── vp8d_parser.h
│ │ │ └── vp9
│ │ │ ├── CMakeLists.txt
│ │ │ ├── vp9d_api.c
│ │ │ ├── vp9data.h
│ │ │ ├── vp9d_codec.h
│ │ │ ├── vp9d_parser2_syntax.c
│ │ │ ├── vp9d_parser.c
│ │ │ ├── vp9d_parser.h
│ │ │ ├── vp9.h
│ │ │ ├── vpx_rac.c
│ │ │ └── vpx_rac.h
│ │ ├── enc
│ │ │ ├── CMakeLists.txt
│ │ │ ├── dummy
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── dummy_enc_api.c
│ │ │ ├── h264
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── h264e_api_v2.c
│ │ │ │ ├── h264e_debug.h
│ │ │ │ ├── h264e_dpb.c
│ │ │ │ ├── h264e_dpb.h
│ │ │ │ ├── h264e_pps.c
│ │ │ │ ├── h264e_pps.h
│ │ │ │ ├── h264e_sei.c
│ │ │ │ ├── h264e_sei.h
│ │ │ │ ├── h264e_slice.c
│ │ │ │ ├── h264e_slice.h
│ │ │ │ ├── h264e_sps.c
│ │ │ │ └── h264e_sps.h
│ │ │ ├── h265
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── h265e_api.c
│ │ │ │ ├── h265e_codec.h
│ │ │ │ ├── h265e_context_table.h
│ │ │ │ ├── h265e_dpb.c
│ │ │ │ ├── h265e_dpb.h
│ │ │ │ ├── h265e_enctropy.c
│ │ │ │ ├── h265e_enctropy.h
│ │ │ │ ├── h265e_header_gen.c
│ │ │ │ ├── h265e_header_gen.h
│ │ │ │ ├── h265e_ps.c
│ │ │ │ ├── h265e_ps.h
│ │ │ │ ├── h265e_slice.c
│ │ │ │ ├── h265e_slice.h
│ │ │ │ ├── h265e_stream.c
│ │ │ │ ├── h265e_stream.h
│ │ │ │ └── h265e_syntax.c
│ │ │ ├── jpeg
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── jpege_api_v2.c
│ │ │ │ └── jpege_debug.h
│ │ │ └── vp8
│ │ │ ├── CMakeLists.txt
│ │ │ ├── vp8e_api_v2.c
│ │ │ ├── vp8e_debug.h
│ │ │ ├── vp8e_rc.c
│ │ │ └── vp8e_rc.h
│ │ ├── enc_impl.cpp
│ │ ├── inc
│ │ │ ├── av1d_api.h
│ │ │ ├── avs2d_api.h
│ │ │ ├── avsd_api.h
│ │ │ ├── dummy_dec_api.h
│ │ │ ├── dummy_enc_api.h
│ │ │ ├── enc_impl_api.h
│ │ │ ├── enc_impl.h
│ │ │ ├── h263d_api.h
│ │ │ ├── h264d_api.h
│ │ │ ├── h264e_api_v2.h
│ │ │ ├── h265d_api.h
│ │ │ ├── h265e_api.h
│ │ │ ├── jpegd_api.h
│ │ │ ├── jpege_api_v2.h
│ │ │ ├── m2vd_api.h
│ │ │ ├── mpg4d_api.h
│ │ │ ├── mpp_dec.h
│ │ │ ├── mpp_dec_impl.h
│ │ │ ├── mpp_dec_normal.h
│ │ │ ├── mpp_dec_no_thread.h
│ │ │ ├── mpp_enc.h
│ │ │ ├── mpp_enc_impl.h
│ │ │ ├── mpp_parser.h
│ │ │ ├── mpp_rc.h
│ │ │ ├── parser_api.h
│ │ │ ├── rc
│ │ │ │ ├── rc_vepu540.h
│ │ │ │ └── rc_vepu.h
│ │ │ ├── rc_data_base.h
│ │ │ ├── rc_data.h
│ │ │ ├── rc_data_impl.h
│ │ │ ├── rc.h
│ │ │ ├── rc_hal.h
│ │ │ ├── vp8d_api.h
│ │ │ ├── vp8e_api_v2.h
│ │ │ └── vp9d_api.h
│ │ ├── mpp_dec.cpp
│ │ ├── mpp_dec_debug.h
│ │ ├── mpp_dec_normal.cpp
│ │ ├── mpp_dec_no_thread.cpp
│ │ ├── mpp_enc_debug.h
│ │ ├── mpp_enc_impl.cpp
│ │ ├── mpp_enc_v2.cpp
│ │ ├── mpp_parser.cpp
│ │ ├── mpp_rc.cpp
│ │ └── rc
│ │ ├── CMakeLists.txt
│ │ ├── h264e_rc.c
│ │ ├── h264e_rc.h
│ │ ├── h265e_rc.c
│ │ ├── h265e_rc.h
│ │ ├── jpege_rc.c
│ │ ├── jpege_rc.h
│ │ ├── rc_base.cpp
│ │ ├── rc_base.h
│ │ ├── rc.cpp
│ │ ├── rc_ctx.h
│ │ ├── rc_data_base.cpp
│ │ ├── rc_data.cpp
│ │ ├── rc_data_impl.cpp
│ │ ├── rc_debug.h
│ │ ├── rc_impl.cpp
│ │ ├── rc_impl.h
│ │ ├── rc_model_v2.c
│ │ ├── rc_model_v2.h
│ │ ├── rc_model_v2_smt.c
│ │ ├── rc_model_v2_smt.h
│ │ ├── test
│ │ │ ├── CMakeLists.txt
│ │ │ ├── rc_api_test.c
│ │ │ └── rc_base_test.c
│ │ ├── vp8e_rc.c
│ │ └── vp8e_rc.h
│ ├── codecs.cmake
│ ├── common
│ │ ├── av1d_syntax.h
│ │ ├── avs2d_syntax.h
│ │ ├── avsd_syntax.h
│ │ ├── dxva_syntax.h
│ │ ├── h263d_syntax.h
│ │ ├── h264d_syntax.h
│ │ ├── h264e_syntax.h
│ │ ├── h264_syntax.h
│ │ ├── h265d_syntax.h
│ │ ├── h265e_syntax.h
│ │ ├── h265e_syntax_new.h
│ │ ├── h265_syntax.h
│ │ ├── jpegd_syntax.h
│ │ ├── jpege_syntax.h
│ │ ├── m2vd_syntax.h
│ │ ├── mpg4d_syntax.h
│ │ ├── vp8d_syntax.h
│ │ ├── vp8e_syntax.h
│ │ └── vp9d_syntax.h
│ ├── hal
│ │ ├── CMakeLists.txt
│ │ ├── common
│ │ │ ├── CMakeLists.txt
│ │ │ ├── h264
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_h264e_api_v2.c
│ │ │ │ ├── hal_h264e_debug.h
│ │ │ │ ├── hal_h264e_stream_amend.c
│ │ │ │ └── hal_h264e_stream_amend.h
│ │ │ ├── h265
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_h265e_api_v2.c
│ │ │ │ └── hal_h265e_debug.h
│ │ │ ├── hal_bufs.c
│ │ │ ├── hal_bufs.h
│ │ │ ├── hal_info.c
│ │ │ ├── hal_info.h
│ │ │ └── jpeg
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_jpege_api_v2.c
│ │ │ ├── hal_jpege_debug.h
│ │ │ ├── hal_jpege_hdr.c
│ │ │ └── hal_jpege_hdr.h
│ │ ├── dummy
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_dummy_dec_api.c
│ │ │ └── hal_dummy_enc_api.c
│ │ ├── hal_task.cpp
│ │ ├── inc
│ │ │ ├── hal_av1d_api.h
│ │ │ ├── hal_avs2d_api.h
│ │ │ ├── hal_avsd_api.h
│ │ │ ├── hal_dec_task.h
│ │ │ ├── hal_dummy_dec_api.h
│ │ │ ├── hal_dummy_enc_api.h
│ │ │ ├── hal_enc_task.h
│ │ │ ├── hal_h263d_api.h
│ │ │ ├── hal_h264d_api.h
│ │ │ ├── hal_h264e_api_v2.h
│ │ │ ├── hal_h265d_api.h
│ │ │ ├── hal_h265e_api_v2.h
│ │ │ ├── hal_jpegd_api.h
│ │ │ ├── hal_jpege_api_v2.h
│ │ │ ├── hal_m2vd_api.h
│ │ │ ├── hal_mpg4d_api.h
│ │ │ ├── hal_task.h
│ │ │ ├── hal_vp8d_api.h
│ │ │ ├── hal_vp8e_api_v2.h
│ │ │ ├── hal_vp9d_api.h
│ │ │ ├── mpp_enc_hal.h
│ │ │ └── mpp_hal.h
│ │ ├── mpp_enc_hal.cpp
│ │ ├── mpp_hal.cpp
│ │ ├── rkdec
│ │ │ ├── avs2d
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_avs2d_api.c
│ │ │ │ ├── hal_avs2d_global.h
│ │ │ │ ├── hal_avs2d_rkv.c
│ │ │ │ ├── hal_avs2d_rkv.h
│ │ │ │ ├── hal_avs2d_vdpu382.c
│ │ │ │ └── hal_avs2d_vdpu382.h
│ │ │ ├── avsd
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_avsd_api.c
│ │ │ │ ├── hal_avsd_base.c
│ │ │ │ ├── hal_avsd_base.h
│ │ │ │ ├── hal_avsd_plus.c
│ │ │ │ ├── hal_avsd_plus.h
│ │ │ │ ├── hal_avsd_plus_reg.h
│ │ │ │ ├── hal_avsd_vdpu1.c
│ │ │ │ ├── hal_avsd_vdpu1.h
│ │ │ │ ├── hal_avsd_vdpu1_reg.h
│ │ │ │ ├── hal_avsd_vdpu2.c
│ │ │ │ ├── hal_avsd_vdpu2.h
│ │ │ │ └── hal_avsd_vdpu2_reg.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── h264d
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_h264d_api.c
│ │ │ │ ├── hal_h264d_global.h
│ │ │ │ ├── hal_h264d_rkv_reg.c
│ │ │ │ ├── hal_h264d_rkv_reg.h
│ │ │ │ ├── hal_h264d_vdpu1.c
│ │ │ │ ├── hal_h264d_vdpu1.h
│ │ │ │ ├── hal_h264d_vdpu1_reg.h
│ │ │ │ ├── hal_h264d_vdpu2.c
│ │ │ │ ├── hal_h264d_vdpu2.h
│ │ │ │ ├── hal_h264d_vdpu2_reg.h
│ │ │ │ ├── hal_h264d_vdpu34x.c
│ │ │ │ ├── hal_h264d_vdpu34x.h
│ │ │ │ ├── hal_h264d_vdpu382.c
│ │ │ │ ├── hal_h264d_vdpu382.h
│ │ │ │ ├── hal_h264d_vdpu_com.c
│ │ │ │ └── hal_h264d_vdpu_com.h
│ │ │ ├── h265d
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_h265d_api.c
│ │ │ │ ├── hal_h265d_com.c
│ │ │ │ ├── hal_h265d_com.h
│ │ │ │ ├── hal_h265d_ctx.h
│ │ │ │ ├── hal_h265d_debug.h
│ │ │ │ ├── hal_h265d_rkv.c
│ │ │ │ ├── hal_h265d_rkv.h
│ │ │ │ ├── hal_h265d_rkv_reg.h
│ │ │ │ ├── hal_h265d_vdpu34x.c
│ │ │ │ ├── hal_h265d_vdpu34x.h
│ │ │ │ ├── hal_h265d_vdpu382.c
│ │ │ │ └── hal_h265d_vdpu382.h
│ │ │ ├── inc
│ │ │ │ ├── vdpu34x_avs2d.h
│ │ │ │ ├── vdpu34x_com.h
│ │ │ │ ├── vdpu34x.h
│ │ │ │ ├── vdpu34x_h264d.h
│ │ │ │ ├── vdpu34x_h265d.h
│ │ │ │ ├── vdpu34x_vp9d.h
│ │ │ │ ├── vdpu382_avs2d.h
│ │ │ │ ├── vdpu382_com.h
│ │ │ │ ├── vdpu382.h
│ │ │ │ ├── vdpu382_h264d.h
│ │ │ │ ├── vdpu382_h265d.h
│ │ │ │ └── vdpu382_vp9d.h
│ │ │ ├── vdpu34x_com.c
│ │ │ ├── vdpu382_com.c
│ │ │ └── vp9d
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_vp9d_api.c
│ │ │ ├── hal_vp9d_com.c
│ │ │ ├── hal_vp9d_com.h
│ │ │ ├── hal_vp9d_ctx.h
│ │ │ ├── hal_vp9d_debug.h
│ │ │ ├── hal_vp9d_rkv.c
│ │ │ ├── hal_vp9d_rkv.h
│ │ │ ├── hal_vp9d_rkv_reg.h
│ │ │ ├── hal_vp9d_vdpu34x.c
│ │ │ ├── hal_vp9d_vdpu34x.h
│ │ │ ├── hal_vp9d_vdpu382.c
│ │ │ └── hal_vp9d_vdpu382.h
│ │ ├── rkenc
│ │ │ ├── CMakeLists.txt
│ │ │ ├── common
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── rkv_enc_def.h
│ │ │ │ ├── vepu540c_common.c
│ │ │ │ ├── vepu540c_common.h
│ │ │ │ ├── vepu541_common.c
│ │ │ │ ├── vepu541_common.h
│ │ │ │ ├── vepu580_tune.h
│ │ │ │ ├── vepu5xx_common.c
│ │ │ │ ├── vepu5xx_common.h
│ │ │ │ └── vepu5xx.h
│ │ │ ├── h264e
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_h264e_vepu540c.c
│ │ │ │ ├── hal_h264e_vepu540c.h
│ │ │ │ ├── hal_h264e_vepu540c_reg.h
│ │ │ │ ├── hal_h264e_vepu541.c
│ │ │ │ ├── hal_h264e_vepu541.h
│ │ │ │ ├── hal_h264e_vepu541_reg.h
│ │ │ │ ├── hal_h264e_vepu541_reg_l2.h
│ │ │ │ ├── hal_h264e_vepu580.c
│ │ │ │ ├── hal_h264e_vepu580.h
│ │ │ │ ├── hal_h264e_vepu580_reg.h
│ │ │ │ └── hal_h264e_vepu580_tune.c
│ │ │ ├── h265e
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── hal_h265e_vepu540c.c
│ │ │ │ ├── hal_h265e_vepu540c.h
│ │ │ │ ├── hal_h265e_vepu540c_reg.h
│ │ │ │ ├── hal_h265e_vepu541.c
│ │ │ │ ├── hal_h265e_vepu541.h
│ │ │ │ ├── hal_h265e_vepu541_reg.h
│ │ │ │ ├── hal_h265e_vepu54x_reg_l2.h
│ │ │ │ ├── hal_h265e_vepu580.c
│ │ │ │ ├── hal_h265e_vepu580.h
│ │ │ │ ├── hal_h265e_vepu580_reg.h
│ │ │ │ └── hal_h265e_vepu580_tune.c
│ │ │ └── jpege
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_jpege_vepu540c.c
│ │ │ ├── hal_jpege_vepu540c.h
│ │ │ └── hal_jpege_vepu540c_reg.h
│ │ └── vpu
│ │ ├── av1d
│ │ │ ├── av1d_common.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── film_grain_noise_table.c
│ │ │ ├── film_grain_noise_table.h
│ │ │ ├── hal_av1d_api.c
│ │ │ ├── hal_av1d_common.h
│ │ │ ├── hal_av1d_vdpu.c
│ │ │ ├── hal_av1d_vdpu.h
│ │ │ └── hal_av1d_vdpu_reg.h
│ │ ├── CMakeLists.txt
│ │ ├── common
│ │ │ ├── CMakeLists.txt
│ │ │ ├── vepu_common.c
│ │ │ └── vepu_common.h
│ │ ├── h263d
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_h263d_api.c
│ │ │ ├── hal_h263d_base.h
│ │ │ ├── hal_h263d_vdpu1.c
│ │ │ ├── hal_h263d_vdpu1.h
│ │ │ ├── hal_h263d_vdpu1_reg.h
│ │ │ ├── hal_h263d_vdpu2.c
│ │ │ ├── hal_h263d_vdpu2.h
│ │ │ └── hal_h263d_vdpu2_reg.h
│ │ ├── h264e
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_h264e_vepu1_reg_tbl.h
│ │ │ ├── hal_h264e_vepu1_v2.c
│ │ │ ├── hal_h264e_vepu1_v2.h
│ │ │ ├── hal_h264e_vepu2_reg_tbl.h
│ │ │ ├── hal_h264e_vepu2_v2.c
│ │ │ ├── hal_h264e_vepu2_v2.h
│ │ │ ├── hal_h264e_vepu_v2.c
│ │ │ ├── hal_h264e_vepu_v2.h
│ │ │ ├── hal_h264e_vpu_tbl.c
│ │ │ ├── hal_h264e_vpu_tbl.h
│ │ │ └── hal_h264e_vpu_tbl_v2.h
│ │ ├── jpegd
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_jpegd_api.c
│ │ │ ├── hal_jpegd_base.h
│ │ │ ├── hal_jpegd_common.c
│ │ │ ├── hal_jpegd_common.h
│ │ │ ├── hal_jpegd_rkv.c
│ │ │ ├── hal_jpegd_rkv.h
│ │ │ ├── hal_jpegd_rkv_reg.h
│ │ │ ├── hal_jpegd_vdpu1.c
│ │ │ ├── hal_jpegd_vdpu1.h
│ │ │ ├── hal_jpegd_vdpu1_reg.h
│ │ │ ├── hal_jpegd_vdpu2.c
│ │ │ ├── hal_jpegd_vdpu2.h
│ │ │ └── hal_jpegd_vdpu2_reg.h
│ │ ├── jpege
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_jpege_base.c
│ │ │ ├── hal_jpege_base.h
│ │ │ ├── hal_jpege_vepu1_v2.c
│ │ │ ├── hal_jpege_vepu1_v2.h
│ │ │ ├── hal_jpege_vepu2_v2.c
│ │ │ └── hal_jpege_vepu2_v2.h
│ │ ├── m2vd
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_m2vd_api.c
│ │ │ ├── hal_m2vd_base.h
│ │ │ ├── hal_m2vd_vdpu1.c
│ │ │ ├── hal_m2vd_vdpu1_reg.h
│ │ │ ├── hal_m2vd_vdpu2.c
│ │ │ ├── hal_m2vd_vdpu2_reg.h
│ │ │ ├── hal_m2vd_vpu1.h
│ │ │ └── hal_m2vd_vpu2.h
│ │ ├── mpg4d
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_m4vd_api.c
│ │ │ ├── hal_m4vd_com.c
│ │ │ ├── hal_m4vd_com.h
│ │ │ ├── hal_m4vd_vdpu1.c
│ │ │ ├── hal_m4vd_vdpu1.h
│ │ │ ├── hal_m4vd_vdpu1_reg.h
│ │ │ ├── hal_m4vd_vdpu2.c
│ │ │ ├── hal_m4vd_vdpu2.h
│ │ │ └── hal_m4vd_vdpu2_reg.h
│ │ ├── vp8d
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hal_vp8d_api.c
│ │ │ ├── hal_vp8d_base.h
│ │ │ ├── hal_vp8d_vdpu1.c
│ │ │ ├── hal_vp8d_vdpu1.h
│ │ │ ├── hal_vp8d_vdpu1_reg.h
│ │ │ ├── hal_vp8d_vdpu2.c
│ │ │ ├── hal_vp8d_vdpu2.h
│ │ │ └── hal_vp8d_vdpu2_reg.h
│ │ └── vp8e
│ │ ├── CMakeLists.txt
│ │ ├── hal_vp8e_api_v2.c
│ │ ├── hal_vp8e_base.c
│ │ ├── hal_vp8e_base.h
│ │ ├── hal_vp8e_debug.h
│ │ ├── hal_vp8e_entropy.c
│ │ ├── hal_vp8e_entropy.h
│ │ ├── hal_vp8e_putbit.c
│ │ ├── hal_vp8e_putbit.h
│ │ ├── hal_vp8e_table.c
│ │ ├── hal_vp8e_table.h
│ │ ├── hal_vp8e_vepu1_reg.h
│ │ ├── hal_vp8e_vepu1_v2.c
│ │ ├── hal_vp8e_vepu1_v2.h
│ │ ├── hal_vp8e_vepu2_reg.h
│ │ ├── hal_vp8e_vepu2_v2.c
│ │ └── hal_vp8e_vepu2_v2.h
│ ├── inc
│ │ ├── mpi_impl.h
│ │ ├── mpp_cfg.h
│ │ ├── mpp_dec_cfg.h
│ │ ├── mpp_enc_cfg.h
│ │ ├── mpp.h
│ │ ├── mpp_impl.h
│ │ └── mpp_info.h
│ ├── legacy
│ │ ├── CMakeLists.txt
│ │ ├── ppOp.cpp
│ │ ├── ppOp.h
│ │ ├── rk_list.cpp
│ │ ├── rk_list.h
│ │ ├── vpu_api.cpp
│ │ ├── vpu_api_legacy.cpp
│ │ ├── vpu_api_legacy.h
│ │ ├── vpu_api_mlvec.cpp
│ │ ├── vpu_api_mlvec.h
│ │ ├── vpu.c
│ │ ├── vpu_mem_legacy.c
│ │ └── vpu_mem_legacy.h
│ ├── mpi.cpp
│ ├── mpp.cpp
│ ├── mpp_impl.cpp
│ ├── mpp_info.cpp
│ ├── vproc
│ │ ├── CMakeLists.txt
│ │ ├── iep
│ │ │ ├── CMakeLists.txt
│ │ │ ├── iep.cpp
│ │ │ ├── iep.h
│ │ │ └── test
│ │ │ ├── CMakeLists.txt
│ │ │ ├── iep_dei.cfg
│ │ │ └── iep_test.cpp
│ │ ├── iep2
│ │ │ ├── CMakeLists.txt
│ │ │ ├── iep2.c
│ │ │ ├── iep2_ff.c
│ │ │ ├── iep2_ff.h
│ │ │ ├── iep2_gmv.c
│ │ │ ├── iep2_gmv.h
│ │ │ ├── iep2.h
│ │ │ ├── iep2_osd.c
│ │ │ ├── iep2_osd.h
│ │ │ ├── iep2_pd.c
│ │ │ ├── iep2_pd.h
│ │ │ ├── iep2_roi.c
│ │ │ ├── iep2_roi.h
│ │ │ └── test
│ │ │ ├── CMakeLists.txt
│ │ │ └── iep2_test.c
│ │ ├── inc
│ │ │ ├── iep2_api.h
│ │ │ ├── iep_api.h
│ │ │ ├── iep_common.h
│ │ │ ├── mpp_dec_vproc.h
│ │ │ └── rga_api.h
│ │ ├── mpp_dec_vproc.cpp
│ │ ├── mpp_vproc_dev.cpp
│ │ └── rga
│ │ ├── CMakeLists.txt
│ │ ├── rga.cpp
│ │ ├── rga.h
│ │ └── test
│ │ ├── CMakeLists.txt
│ │ └── rga_test.cpp
│ └── vproc.cmake
├── osal
│ ├── allocator
│ │ ├── allocator_dma_heap.c
│ │ ├── allocator_dma_heap.h
│ │ ├── allocator_drm.c
│ │ ├── allocator_drm.h
│ │ ├── allocator_ext_dma.c
│ │ ├── allocator_ext_dma.h
│ │ ├── allocator_ion.c
│ │ ├── allocator_ion.h
│ │ ├── allocator_std.c
│ │ ├── allocator_std.h
│ │ └── ion.h
│ ├── android
│ │ ├── os_allocator.c
│ │ ├── os_env.c
│ │ ├── os_log.c
│ │ └── os_mem.c
│ ├── CMakeLists.txt
│ ├── driver
│ │ ├── inc
│ │ │ ├── mpp_device_debug.h
│ │ │ └── mpp_service_impl.h
│ │ ├── mpp_device.c
│ │ ├── mpp_server.cpp
│ │ ├── mpp_service.c
│ │ └── vcodec_service.c
│ ├── inc
│ │ ├── mpp_allocator.h
│ │ ├── mpp_callback.h
│ │ ├── mpp_common.h
│ │ ├── mpp_compat_impl.h
│ │ ├── mpp_debug.h
│ │ ├── mpp_dev_defs.h
│ │ ├── mpp_device.h
│ │ ├── mpp_env.h
│ │ ├── mpp_eventfd.h
│ │ ├── mpp_hash.h
│ │ ├── mpp_list.h
│ │ ├── mpp_lock.h
│ │ ├── mpp_mem.h
│ │ ├── mpp_mem_pool.h
│ │ ├── mpp_platform.h
│ │ ├── mpp_queue.h
│ │ ├── mpp_runtime.h
│ │ ├── mpp_server.h
│ │ ├── mpp_service_api.h
│ │ ├── mpp_service.h
│ │ ├── mpp_soc.h
│ │ ├── mpp_thread.h
│ │ ├── mpp_time.h
│ │ ├── mpp_trace.h
│ │ ├── osal_2str.h
│ │ ├── vcodec_service_api.h
│ │ └── vcodec_service.h
│ ├── linux
│ │ ├── drm.h
│ │ ├── drm_mode.h
│ │ ├── os_allocator.c
│ │ ├── os_env.c
│ │ ├── os_log.cpp
│ │ └── os_mem.c
│ ├── mpp_allocator.cpp
│ ├── mpp_allocator_impl.h
│ ├── mpp_callback.cpp
│ ├── mpp_common.cpp
│ ├── mpp_compat.cpp
│ ├── mpp_env.cpp
│ ├── mpp_eventfd.cpp
│ ├── mpp_list.cpp
│ ├── mpp_lock.cpp
│ ├── mpp_log.cpp
│ ├── mpp_mem.cpp
│ ├── mpp_mem_pool.cpp
│ ├── mpp_platform.cpp
│ ├── mpp_queue.cpp
│ ├── mpp_runtime.cpp
│ ├── mpp_soc.cpp
│ ├── mpp_thread.cpp
│ ├── mpp_time.cpp
│ ├── mpp_trace.cpp
│ ├── osal_2str.c
│ ├── os_allocator.h
│ ├── os_env.h
│ ├── os_log.h
│ ├── os_mem.h
│ ├── test
│ │ ├── CMakeLists.txt
│ │ ├── mpp_env_test.c
│ │ ├── mpp_eventfd_test.c
│ │ ├── mpp_log_test.c
│ │ ├── mpp_mem_pool_test.c
│ │ ├── mpp_mem_test.c
│ │ ├── mpp_platform_test.c
│ │ ├── mpp_runtime_test.c
│ │ ├── mpp_thread_test.c
│ │ ├── mpp_time_test.c
│ │ └── mpp_trace_test.c
│ └── windows
│ ├── os_allocator.c
│ ├── os_env.c
│ ├── os_log.c
│ ├── os_mem.c
│ ├── pthread
│ │ ├── dll
│ │ │ ├── x64
│ │ │ │ ├── pthreadGC2.dll
│ │ │ │ └── pthreadVC2.dll
│ │ │ └── x86
│ │ │ ├── pthreadGC2.dll
│ │ │ ├── pthreadGCE2.dll
│ │ │ ├── pthreadVC2.dll
│ │ │ ├── pthreadVCE2.dll
│ │ │ └── pthreadVSE2.dll
│ │ ├── inc
│ │ │ ├── pthread.h
│ │ │ ├── sched.h
│ │ │ └── semaphore.h
│ │ └── lib
│ │ ├── x64
│ │ │ └── pthreadVC2.lib
│ │ └── x86
│ │ ├── pthreadVC2.lib
│ │ ├── pthreadVCE2.lib
│ │ └── pthreadVSE2.lib
│ └── stdint.h
├── pkgconfig
│ ├── rockchip_mpp.pc.cmake
│ └── rockchip_vpu.pc.cmake
├── readme.txt
├── test
│ ├── CMakeLists.txt
│ ├── mpi_dec_mt_test.c
│ ├── mpi_dec_multi_test.c
│ ├── mpi_dec_nt_test.c
│ ├── mpi_dec_test.c
│ ├── mpi_enc_mt_test.cpp
│ ├── mpi_enc_test.c
│ ├── mpi_rc2_test.c
│ ├── mpi_rc.cfg
│ ├── mpp_event_trigger.c
│ ├── mpp_event_trigger.h
│ ├── mpp_info_test.c
│ ├── mpp_parse_cfg.c
│ ├── mpp_parse_cfg.h
│ ├── README.md
│ └── vpu_api_test.c
├── tools
│ ├── astyle
│ ├── AStyle.exe
│ ├── astylerc
│ ├── hooks
│ │ └── pre-commit
│ ├── mpp_astyle.bat
│ ├── mpp_astyle.sh
│ ├── mpp_doxyfile
│ ├── TextEncoding.exe
│ └── yuvplay
└── utils
├── camera_source.c
├── camera_source.h
├── CMakeLists.txt
├── dictionary.c
├── dictionary.h
├── iniparser.c
├── iniparser.h
├── mpi_dec_utils.c
├── mpi_dec_utils.h
├── mpi_enc_utils.c
├── mpi_enc_utils.h
├── mpp_enc_roi_utils.c
├── mpp_enc_roi_utils.h
├── mpp_opt.c
├── mpp_opt.h
├── utils.c
└── utils.h
111 directories, 820 files
3.开始编译
我们挂载进入mpp-develop下的build/linux/aarch64/文件目录里面
cd ./mpp-develop/build/linux/aarch64/
我们会看到这样绿色的字体
虽然说官方的Make文件写的不太标准但是能运行就够了,接下来执行命令
./make-Makefiles.bash
4.编译MPI环境
在上一次操作后输入命令,一般香橙派官方下载的系统版本都不会报错,如果是ubuntu上下载的系统版本有可能会报错
sudo make -j4
编译完成
5.执行安装MPI环境
在上一部操作后,执行此步骤。
sudo make install
这里说一下为什么要执行install的操作,因为很多人的习惯是make完了之后就觉得可以使用编译后的函数库了,其实上我们的函数库并没有编译到我们的/usr目录下也就是说我们需要在编译的目录下找到我们的编译项目才可以更方便导入函数,但是install这个步骤包含make的过程和将函数库、动态库和静态库安装到/usr的过程,但是这个速度太慢也就是等同于make -j1的速度,这也就是我们前面为什么会执行make -j4利用多线程编译更快一些,之后再执行install速度就会很快。
安装完成
我们看到我们的函数库确实被安装到我们的/usr目录下面去了
6.执行安装MPP环境
1.我们在执行了MPI接口安装后会发现我们的MPP接口并没有完全编译到我们的/usr文件目录下面去,一些内存拷贝的函数还在我们的mpp_develop目录下,我们知道MPI接口是针对的是ffmpeg和gstreameer等推流媒体工具使用的,但是没有MPP接口情况下内存拷贝实属不易,所以我们手动把MPP接口完善到/usr目录下
2.MPP缺少的部分是mpp_devlop目录下的osal文件夹内的所有函数
复制osal到/usr下:
sudo cp -r ./mpp-develop/osal /usr/local/include/rockchip/
至此我们的MPI和MPP安装完成
三、安装Qt
我用的系统是Ubuntu22.04的系统但是这个系统的qt5-default安装
已经失效了,在新版ubuntu安装Qt方法如下:
sudo apt install qtbase5-dev qt5-qmake qtcreator
之后在/usr目录下查找qmake的文件具体位置,之后配置qtcreator里面的kits就行了,如图的Qt Version的选项,配置好了之后会有具体版本号和qmake具体路径出现
四、Qt项目配置RKMpp和RKMpi
我们新建一个qt工程是不是GUI工程无所谓都可以配置
我这里放出我的.pro、.pri文件和依赖文件的配置
1.导入依赖文件
我把mpp编译后.a的依赖文件分类统一放在了一个文件夹内,虽然说有很多没有用到以后有需要可以方便扩展,这里是我依赖文件夹的libs文件目录:
libs
├── mpp
│ ├── base
│ │ └── libmpp_base.a
│ ├── codec
│ │ ├── dec
│ │ │ ├── av1
│ │ │ │ └── libcodec_av1d.a
│ │ │ ├── avs
│ │ │ │ └── libcodec_avs2d.a
│ │ │ ├── avs2
│ │ │ │ └── libcodec_avsd.a
│ │ │ ├── dummy
│ │ │ │ └── libcodec_dummy_dec.a
│ │ │ ├── h263
│ │ │ │ └── libcodec_h263d.a
│ │ │ ├── h264
│ │ │ │ └── libcodec_h264d.a
│ │ │ ├── h265
│ │ │ │ └── libcodec_h265d.a
│ │ │ ├── jpeg
│ │ │ │ └── libcodec_jpegd.a
│ │ │ ├── m2v
│ │ │ │ └── libcodec_mpeg2d.a
│ │ │ ├── mpg4
│ │ │ │ └── libcodec_mpeg4d.a
│ │ │ ├── vp8
│ │ │ │ └── libcodec_vp8d.a
│ │ │ └── vp9
│ │ │ └── libcodec_vp9d.a
│ │ ├── enc
│ │ │ ├── dummy
│ │ │ │ └── libcodec_dummy_enc.a
│ │ │ ├── h264
│ │ │ │ └── libcodec_h264e.a
│ │ │ ├── h265
│ │ │ │ └── libcodec_h265e.a
│ │ │ ├── jpeg
│ │ │ │ └── libcodec_jpege.a
│ │ │ └── vp8
│ │ │ └── libcodec_vp8e.a
│ │ ├── libmpp_codec.a
│ │ ├── libmpp_rc.a
│ │ └── rc
│ │ └── libenc_rc.a
│ ├── hal
│ │ ├── common
│ │ │ ├── h264
│ │ │ ├── h265
│ │ │ ├── jpeg
│ │ │ │ └── libhal_jpege.a
│ │ │ └── libhal_common.a
│ │ ├── dummy
│ │ │ └── libhal_dummy.a
│ │ ├── libmpp_hal.a
│ │ ├── rkdec
│ │ │ ├── avs2d
│ │ │ │ └── libhal_avs2d.a
│ │ │ ├── avsd
│ │ │ │ └── libhal_avsd.a
│ │ │ ├── h264d
│ │ │ │ └── libhal_h264d.a
│ │ │ ├── h265d
│ │ │ │ └── libhal_h265d.a
│ │ │ ├── libvdpu34x_com.a
│ │ │ └── vp9d
│ │ │ └── libhal_vp9d.a
│ │ ├── rkenc
│ │ │ ├── common
│ │ │ │ └── libhal_vepu541_common.a
│ │ │ ├── h264e
│ │ │ │ ├── libhal_h264e.a
│ │ │ │ └── libhal_h264e_rkv.a
│ │ │ ├── h265e
│ │ │ │ ├── libhal_h265e.a
│ │ │ │ └── libhal_h265e_vepu541.a
│ │ │ └── jpege
│ │ │ └── libhal_jpege_rkv.a
│ │ └── vpu
│ │ ├── av1d
│ │ │ └── libhal_av1d.a
│ │ ├── common
│ │ │ └── libhal_vepu_common.a
│ │ ├── h263d
│ │ │ └── libhal_h263d.a
│ │ ├── h264e
│ │ │ └── libhal_h264e_vpu.a
│ │ ├── jpegd
│ │ │ └── libhal_jpegd.a
│ │ ├── jpege
│ │ │ └── libhal_jpege_vpu.a
│ │ ├── m2vd
│ │ │ └── libhal_mpeg2d.a
│ │ ├── mpg4d
│ │ │ └── libhal_mpeg4d.a
│ │ ├── vp8d
│ │ │ └── libhal_vp8d.a
│ │ └── vp8e
│ │ └── libhal_vp8e.a
│ └── vproc
│ ├── iep
│ │ └── libvproc_iep.a
│ ├── iep2
│ │ └── libvproc_iep2.a
│ ├── libmpp_vproc.a
│ └── rga
│ └── libvproc_rga.a
├── osal
│ └── libosal.a
└── utils
└── libutils.a
57 directories, 53 files
① 通过项目导入
我们右键选择我们的项目
② 导入外部依赖
③ 选择依赖
只选择Linux外部依赖就行其他系统不用勾选,之后点击Browse就可以了导入了
④ 依赖管理
很显然我们的主工程文件.pro是可以不需要依赖的,因为Qt外部依赖只能导入到.pro文件中去,我们希望把依赖文件放到.pri文件中去
复制这一段配置代码粘贴到我们指定的.pri下:
2.配置.pro文件
#如果是gui工程请把-换成+
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS +=
#这里是pri文件,所有的类和接口都在里面方便项目管理
include(./encoder/encoder.pri)
include(./V4L2/V4L2.pri)
3.配置.pri文件
我的编码管理的模块叫encoder.pri,也可以右键单击工程导入外部依赖,我这里导入的外部依赖只有两个一个是libosal.a一个是libutils.a,pri文件的内容:
HEADERS += \
$$PWD/encoder.h
SOURCES += \
$$PWD/encoder.cpp
#载入MPP和MPI的库
INCLUDEPATH=/usr/local/include/rockchip/ \
/usr/local/include/rockchip/ \
/usr/local/include/rockchip/osal \
/usr/local/include/rockchip/osal/inc
#载入MPP和MPI的依赖文件
unix:!macx: LIBS += -L$$PWD/../libs/osal/ -losal
INCLUDEPATH += $$PWD/../libs/osal
DEPENDPATH += $$PWD/../libs/osal
unix:!macx: PRE_TARGETDEPS += $$PWD/../libs/osal/libosal.a
unix:!macx: LIBS += -L$$PWD/../libs/utils/ -lutils
INCLUDEPATH += $$PWD/../libs/utils
DEPENDPATH += $$PWD/../libs/utils
unix:!macx: PRE_TARGETDEPS += $$PWD/../libs/utils/libutils.a
4.测试代码
在encoder.pri代码如下:
在main.cpp中引用encoder函数
5.运行代码看看效果
编译通过,效果如下:
总结
经过官方代码的测试在开启图形界面下最高可以达到8k30fps 左右的H265编码,如果关掉图形界面估计还可以更高,网上也有人说需要对RK3588锁频可以提高其gpu性能,不过我还没试过,有感兴趣的可以去试试。