|
沙发
楼主 |
发表于 2019-10-10 16:51:28
|
只看该作者
本帖最后由 shopping 于 2019-10-11 08:45 编辑
找了一下,目前发现一个问题:L240的 memcpy((void*)srcBuffer , buffers[buf.index].start , buf.length) ,buf.length 与 buf.index 总是为 0.
把程序改了一下之后,发现这个问题不仅没消失。还出现新的问题,ioctl(fd, VIDIOC_DQBUF, &buf) 这里会阻塞,程序不能往下运行。
将 fd = open(FILE_VIDEO, O_RDWR) 改为 fd = open(FILE_VIDEO, O_RDWR | O_NONBLOCK) 阻塞模式改为非阻塞模式,程序虽然可以继续运行,但由于没有获取到视频就返回数据,使得结果显示为全屏绿。
总结一下:如果设为阻塞模式,程序由于不能正常DQBUF而被卡住,不能向前执行;
如果设为非阻塞模式,程序没有获取到视频帧就返回缓存指针,所以buf.length 与 buf.index 总是为 0,使得显示不正常。
|
|