kd_mpi_vo_chn_insert_frame插到layer成功,插到osd就报错

Viewed 40

问题描述


开了三个线程处理三摄像头流,不走vi->bind->vo路线(已经测试三摄像头正常出图)
目前走vi-> thread -> dump_frame ->insert->vo路线
因为layer0不能用,使用layer1和2+一路osd
2个layer线程能正常运行出图(撕裂感严重,可能要配置双pool_id ?)
然后使用osd就报错
image.png

复现步骤


其中layer线程(代码如下)
从kd_mpi_vb_create_pool函数拿到内存池一个id,接着配置k_video_frame_info数据,拿到一个虚拟地址与k_vb_blk_handle block,然后dump一帧进行映射,拷贝到虚拟地址,调用kd_mpi_vo_chn_insert_frame。请问流程对吗,虽然目前能出图
image.png

下面是osd的,同理的配方就报错了
image.png

硬件板卡


01的k230开发板

软件版本


git log : commit 66dd75f0a8b87b081f1bee31e641be738841be0b (HEAD -> main, tag: v1.9, origin/main, origin/HEAD) Author: wuwentao wuwentao@canaan-creative.com Date: Fri Mar 14 18:21:29 2025 +0800 k230 sdk release v1.9

其他信息


内存应该是足够的,这是在原有的vi->bind->vo上添加的
image.png

1 Answers

先简化流程:从vicap dump出一帧后,把该帧直接传输到vo layer/osd层。去掉使用vf_info 拷贝的操作。这样操作的目的是和vi bind vo 效果一致。不参杂任何其他流程。