小弟正在做一个camera应用程序,但是遇到些问题,估计需要修改driver代码才能够解决。
但是,对V4L2的结构不是很清楚。希望得到高手指点,非常感谢!
我的做法是:
1.采用block方式打开usb camera(/dev/video1)(O_RDWR)
2.Set picture format:2048x1536,V4L2_PIX_FMT_YUYV(VIDIOC_S_FMT)
3.采用mmap方式,VIDIOC_QBUF 2个buf
4.Start video stream (VIDIOC_STREAMON)
5.Get a frame(VIDIOC_DQBUF)
6.Queue buffer back (VIDIOC_QBUF)
7.Stop video stream (VIDIOC_STREAMOFF)
遇到问题:
在上述第5步中取得的数据有时显示异常(大约20%的概率)
异常图片中出现大块地“错位”
由于YUYV数据无法判断其有效性,后来我改用MJPEG格式抓取图像,
但是VIDIOC_DQBUF出来的数据有时格式错误(无效的MJPEG头)。
====================================
请各位大侠多题宝贵意见!
我现在开始查看usbcamera的驱动代码,不过没有方向,瞎找。
希望高手指教,非常感谢。
humanzt 于 2009-05-15 09:25:36发表:
uvcvideo和usbvideo的驱动都没有问题,
应该是硬件需要专门的驱动,
只能等厂家提供支持了。
humanzt 于 2009-05-14 15:27:10发表:
[i=s] 本帖最后由 humanzt 于 2009-5-14 15:30 编辑 [/i]
怎么没人说话呀?
自己追记一下进展:
我用的是ubuntu,camera的驱动代码应该在uvcvideo.ko中
相关module列表如下:
Module Used by
uvcvideo (camera应用程序)
videodev uvcvideo
v4l2_common uvcvideo,videodev
目前怀疑是uvc_video.c中组合urb数据时出错,
uvc_video_decode_start()
uvc_video_decode_data()
uvc_video_decode_end()
继续解析
humanzt 于 2009-05-13 10:45:04发表:
高手给提供些USB摄像头驱动的资料也行呀。
先表示感谢!
微宝贝 于 2009-05-12 18:33:50发表:
目前没那个能力啊,精神上支持一下