我正在尝试使用 v4l2_buffer 的时间戳值(类型 timeval)来同步从UVC网络摄像头到外部事件。
但是时间戳与系统时间或正常运行时间等不同:
printf("image captured at %ld, %ld\n",
buffer->timestamp.tv_sec,
buffer->timestamp.tv_usec);
struct timeval tv;
gettimeofday(&tv, 0);
printf("current time %ld, %ld\n", tv.tv_sec, tv.tv_usec);
结果是
image captured at 367746, 476270
current time 1335083395, 11225
我的正常运行时间是 10 天。
根据http://comments.gmane.org/gmane.linux.drivers.video-input-infrastruct/39892 http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/39892一些 v4l2 驱动程序(包括 UVC 驱动程序)不使用实时时钟(wall time),而是使用从未指定时间点开始计数的单调时钟。在Linux上,这是启动时间(即正常运行时间),但是(我怀疑这是不匹配的原因)只是计算机实际运行的时间(即当计算机挂起时该时钟不运行)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)