- 修改
CMakeLists.txt
有关 duo sdk 路径 - 设置toolchain变量,cmake编译
export RISCV_ROOT_PATH=/home/nihui/osd/host-tools/gcc/riscv64-linux-musl-x86_64
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../riscv64-unknown-linux-musl.toolchain.cmake ..
make
$RISCV_ROOT_PATH/bin/riscv64-unknown-linux-musl-strip testmilkv
make install
- 由于rpath原因,需要 install 后把 install/bin/testmilkv 拷贝到 milkv-duo 上运行,否则会找不到 libvdec.so 等等...
- 读图片
- 解析文件头获取 w h pixel_format 等
- 初始化 vbpool
- 初始化 vdec vpss旋转 vpss转rgb
- 发送jpg数据,vdec拿到yuv
- 发送yuv给vpss旋转,拿到旋转后的nv12
- 发送nv12给vpss转rgb,拿到rgb
- map,拷贝rgb,unmap
- 清理frame
- 清理 vpss vdec vbpool
- stb存出结果图像
因为vpss不支持rgb旋转,所以只能额外使用单独的vpss,先在nv12上旋转,再转rgb
- 1920x1080 90/270旋转图像有区域内容错误
- 很多分辨率的图片解码失败,尤其是 milkv-duo 运行时间长之后或多次失败,再次运行导致失败率大幅上升,主要错误在 vpss旋转/转rgb c006800e c0068003 两种
[root@milkv]~# ./testmilkv
stFrameInfo 1 120 x 90 13
CVI_VPSS_GetChnFrame rgb failed c006800e
decode failed 120x90.jpg 1
stFrameInfo 1 160 x 120 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 160x120.jpg 1
stFrameInfo 1 320 x 240 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 320x240.jpg 1
stFrameInfo 1 400 x 300 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 400x300.jpg 1
stFrameInfo 1 800 x 600 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 800x600.jpg 1
stFrameInfo 1 800 x 800 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 800x800.jpg 1
stFrameInfo 1 960 x 540 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 960x540.jpg 1
stFrameInfo 1 1080 x 1080 13
CVI_VPSS_SendFrame rgb failed c0068003
decode failed 1080x1080.jpg 1
-
CVI_SYS_Bind 将vdec和vpss自动串起来不起作用,CVI_VPSS_GetChnFrame 超时失败
-
vpss 似乎总是会用 common vb pool,即便我已经 attach 自己的 vbpool,common 不够大依然会失败