我正在为 Windows Mobile 平台编写相机驱动程序。
我有一个应用程序可以正确显示预览但速度非常低(可能是 1 或 2 帧/秒)的问题。
经过调查,我可以看到来自传感器的帧正常(每 45 毫秒),但是当发生硬件事件以存储该帧时,没有可用的缓冲区,然后帧被丢弃。
在我们的例子中,缓冲区由应用程序通过 IOCTL_CS_BUFFERS/CS_ENQUEUE API 提供。问题是缓冲区以非常低的速率提供,这就是预览无法正常工作的原因。
问题是我无法调查为什么这个 API 以这个速率给出,因为 PIN_IOControl 是从 Directshow 固件调用的。
我之前描述的问题涉及测试应用程序。
现在,如果我使用的是 Windows Mobile Camera 应用程序,则在图片模式下可以预览(大约 15 帧/秒)。但是当视频模式打开时,预览仅显示每秒大约 2 帧(就像在我们使用的测试应用程序中一样)。
我可以看到这两种模式之间的唯一区别是视频模式预览使用 QCIF 格式,而捕获模式(图片)预览使用 QVGA 格式。
感谢您的帮助。
法布里斯。