微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 yavta 源代码捕获帧时如何提高 fps?

如何解决使用 yavta 源代码捕获帧时如何提高 fps?

-> 我正在使用 yavta 源代码从基于 MIPI 的相机 (https://github.com/6by9/yavta/blob/master/yavta.c) 捕获帧。 -> 我修改代码,使其使用 VIdioC_EXPBUF IOCTL(https://www.kernel.org/doc/html/v4.9/media/uapi/v4l/vidioc-expbuf.html#vidioc-expbuf) 将缓冲区导出为 DMA Buf 文件描述符。我调用了 int buffer_export_mp(int v4lfd,enum v4l2_buf_type bt,int index,int dmafd[],int n_planes) 在链接中提到,就在 VIdioC_REQBUFS IOCTL 调用之后。它正在导出 dma buf fd。 -> 之后我将这个 dma buf fd 传递给 openCL 和其他需要的参数到 openCL 内核中,最后将 openCL 内核的输出通过 PCIe 传递给主机。

我可以看到过滤后的输出。事实上,我能够从相机实时捕获帧并能够在 pcie 主机上显示。但是视频反应不是很灵敏,滞后太多。我的目标是提高输出的响应能力。

-> 我在 VIdioC_DQBUF ioctl 之后调用 openCL 相关的处理函数,在那里它应用过滤器并通过 PCIe 发送。如果我将缓冲区导出为 dma buf 文件描述符,是否需要对缓冲区进行 De-Queue(VIdioC_DQBUF)?也就是说,调用openCL相关处理函数的地方合适吗?如果没有,我应该在哪里调用函数,以便能够将帧正确传递给 openCL 内核?这就是fps很低的原因吗?

-> 我正在考虑实现线程。但不确定哪些函数要保留在线程中。我认为 yavta.c 中的 video_do_capture() 函数和 openCL 处理函数要保存在线程中。这会提高fps吗?

请提出任何可以使用 yavta 源代码提高 fps 的建议。我的代码与上面共享的 yavta.c 不完全相同,但与此类似。

谢谢, 阿迪亚。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。