目前我在做的工作是,利用AM5728的ARM端读取视频流,获取图像像素并存入共享内存中,利用IPC方法调用单个DSP核对图像像素进行处理,再利用ARM端把处理好的图像显示出来。现在的问题如下:
1. 利用messageq进行数组头部传递,测试得知每次从开始传送数据->处理数据->返回数据,所用时间平均是0.25s,这样会导致视频FPS很低,算法是非常简单的操作,在arm上单独运行能够达到大概30帧每秒,请问是messageq本身传送数据时延大的原因吗?
2. 在论坛上看到DSP调用的几种办法,我现在使用的是IPC,还有一种办法是利用opencl。请问opencl有读取视频帧、显示图像的函数吗,能否读取图像的像素值呢?
3. 如果以上方法不合适,有没有其他的办法,能够利用DSP的数据处理能力对视频像素进行处理呢?
Denny%20Yang99373:
1,可以DSP空操作,直接IPC返回,看看IPC延时是否能接受。
2,IPC开销比较较大,可以一次传入尽可能多的数据来处理。
3,如果算法偏重逻辑运算,DSP对比ARM并没有什么优势。
4,DSP编译打开O2/3优化选项
yongqing wang:
建议你将传入的数据和传出的数据都放在共享内存中,数据的内存搬移是很耗时的
yongqing wang:
opencl是一个标准的计算接口,所以你可以用ARM 核获取数据,再将数据封装成opencl可以处理的格式