红联Linux门户
Linux帮助

Video4Linux 2下的Camera驱动问题

发布时间:2009-05-12 17:43:18来源:红联作者:humanzt
小弟正在做一个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的驱动代码,不过没有方向,瞎找。
希望高手指教,非常感谢。
文章评论

共有 4 条评论

  1. humanzt 于 2009-05-15 09:25:36发表:

    uvcvideo和usbvideo的驱动都没有问题,
    应该是硬件需要专门的驱动,
    只能等厂家提供支持了。

  2. 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()
    继续解析

  3. humanzt 于 2009-05-13 10:45:04发表:

    高手给提供些USB摄像头驱动的资料也行呀。
    先表示感谢!

  4. 微宝贝 于 2009-05-12 18:33:50发表:

    目前没那个能力啊,精神上支持一下