DVPP中的VDEC功能模块,实现H264码流格式的视频解码。
样例中的关键接口调用流程如下:
├──————CMakeLists.txt // 编译脚本
├──————src/VdecDemo.cpp // 示例代码文件
├──————src/Vdec.cpp // 示例代码文件
├──————src/Vdec.h // 头文件
操作系统及架构:Ubuntu 18.04 x86_64、Ubuntu 18.04 aarch64、EulerOS aarch64
编译器:g++ 或 aarch64-linux-gnu-g++
芯片:Atlas 推理系列产品(Ascend 310P处理器)、Atlas 200/500 A2推理产品。
已完成昇腾AI软件栈在开发环境、运行环境上的部署。
请单击以下链接,获取该样例的测试图片数据。
dvpp_vdec_h264_1frame_bp_51_1920x1080.h264
以运行用户登录开发环境,编译代码。此时存在以下两种情况:
当开发环境与运行环境的操作系统架构相同时,例如两者都是X86架构,或者都是AArch64架构,此时编译流程参考如下:
设置环境变量。
如下示例,$HOME/Ascend表示编译环境runtime标准形态安装包的安装路径,latest对应安装包版本号,请根据实际情况替换。
export DDK_PATH=$HOME/Ascend/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub/
切换到vdec_sample目录,依次执行如下命令执行编译。
mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
make
在“vdec_sample/build/“目录下会生成可执行程序vdec_demo。
当开发环境与运行环境的操作系统架构不同时,例如开发环境是X86架构、运行环境是AArch64架构,此时涉及交叉编译,需要在开发环境安装包含AArch64工具链的软件包,并将相关环境变量指向AArch64版本路径,具体编译流程参考如下:
提前在x86_64编译环境安装x86_64版本的CANN-toolkit包
设置环境变量。
如下示例,$HOME/Ascend表示编译环境runtime标准形态安装包的安装路径,latest对应安装包版本号,请根据实际情况替换。
export DDK_PATH=$HOME/Ascend/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub/aarch64
切换到vdec_sample目录,依次执行如下命令执行编译。
mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=$HOME/Ascend/latest/toolkit/toolchain/hcc/bin/aarch64-target-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE
make
在“vdec_sample/build/“目录下会生成可执行程序vdec_demo。
以运行用户将开发环境的“vdec_sample/build“目录下的可执行程序vdec_demo以及准备测试数据中测试数据拷贝到运行环境(Host)的同一目录下,例如“$HOME/dvpp/vdec_sample“。
运行应用。
切换到可执行文件vdec_demo所在的目录,例如“$HOME/dvpp/vdec_sample“,给该目录下的vdec_demo文件加执行权限。
chmod +x vdec_demo
设置环境变量。“$HOME/Ascend“表示runtime标准形态安装包的安装路径,请根据实际情况替换。
export LD_LIBRARY_PATH=$HOME/Ascend/runtime/lib64
运行可执行文件的命令示例及说明请参见单路H264码流解码~单路H264码流解码+缩放。
使用demo进行性能测试时不能保存解码结果,需要配置--write_file 0。使用demo进行多路性能测试时,为了多路同时并发,需要设置启动延迟时间--delay_time 20,以保证码流发送线程在同一时刻开始发送码流。
运行可执行文件的参数说明如下所示:
./vdec_demo --in_image_file ./dvpp_vdec_h264_1frame_bp_51_1920x1080.h264 --img_width 1920 --img_height 1080 --in_format 0 --in_bitwidth 8 --chn_num 1 --out_width 1920 --out_height 1080 --width_stride 1920 --height_stride 1080 --out_format 0 --out_image_file ./yuv_1920x1080_1frames_h264 --ref_frame_num 5 --dis_frame_num 3 --write_file 1
./vdec_demo --in_image_file ./dvpp_vdec_h264_1frame_bp_51_1920x1080.h264 --img_width 1920 --img_height 1080 --in_format 0 --in_bitwidth 8 --chn_num 16 --out_width 1920 --out_height 1080 --width_stride 5760 --height_stride 1080 --out_format 2 --out_image_file ./yuv_1920x1080_1frames_h264 --ref_frame_num 5 --dis_frame_num 3 --write_file 1
./vdec_demo --in_image_file ./dvpp_vdec_h264_1frame_bp_51_1920x1080.h264 --img_width 1920 --img_height 1080 --in_format 0 --in_bitwidth 8 --chn_num 1 --out_width 128 --out_height 128 --width_stride 128 --height_stride 128 --out_format 0 --out_image_file ./yuv_1920x1080_1frames_h264 --ref_frame_num 5 --dis_frame_num 3 --write_file 1
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。