请推荐下大核传k_venc_stream流给小核的实现思路

Viewed 42

问题描述


目前参考https://github.com/kendryte/k230_sdk/tree/main/src/common/cdk/user/component/datafifo/sample这个例程,这里是没有用到sample_sys_init.elf那个方式都可以实现大核传帧,小核收了一些帧里面的较小部分的数据,并且能查看。一整个大帧超过了内存就传不过来了

image.png

因为受到内存限制不能把编码后的整帧直接拷贝到共享区域去,还有什么好的实现思路呢?除了拷贝帧数据到共享区域,别的传递就要考虑释放帧问题,不然释放慢了,编码器就堵住了

硬件板卡


01的k230开发板1G内存

软件版本


git log : commit 7e302f733311d284be255f0d81d3463b6ae6ee6d (HEAD -> main, tag: v2.0, origin/main, origin/HEAD) Author: wuwentao wuwentao@canaan-creative.com Date: Fri Sep 12 11:51:32 2025 +0800 k230 sdk release v2.0

1 Answers

拷贝物理地址。从 VB 缓存池获取一个 VB(视频缓冲区),用于存储编码后的数据流。待核间通信完成后,将该 VB 的引用计数清零,以释放缓冲区资源。

噢噢还能这样,就是用vb区域来存储帧数据,然后传递这个vb的物理地址+帧长度是吗?有相关例程吗?我看了一下api好像是 kd_mpi_vb_handle_to_phyaddr这个。还看到了一个什么公共缓冲kd_mpi_vb_init_mod_common_pool不知道是什么,有相关吗?大核申请的vb可以在小核上面使用后释放吗