美文网首页嵌入式系统中的图形图像
libuvc与webcam的开发(四) - 嵌入式设备端(on

libuvc与webcam的开发(四) - 嵌入式设备端(on

作者: phoenixmy | 来源:发表于2018-10-17 13:10 被阅读0次

下面内容来自Linux项目源码中的Documentation/usb/gadegt-testing.txt:

18. UVC function
================
The function is provided by usb_f_uvc.ko module.
Function-specific configfs interface
------------------------------------
The function name to use when creating the function directory is "uvc".
The uvc function provides these attributes in its function directory:
    streaming_interval - interval for polling endpoint for data transfers
    streaming_maxburst - bMaxBurst for super speed companion descriptor
    streaming_maxpacket - maximum packet size this endpoint is capable of
                  sending or receiving when this configuration is
                  selected
There are also "control" and "streaming" subdirectories, each of which contain
a number of their subdirectories. There are some sane defaults provided, but
the user must provide the following:
    control header - create in control/header, link from control/class/fs
            and/or control/class/ss
    streaming header - create in streaming/header, link from
            streaming/class/fs and/or streaming/class/hs and/or
            streaming/class/ss
    format description - create in streaming/mjpeg and/or
            streaming/uncompressed
    frame description - create in streaming/mjpeg/<format> and/or in
            streaming/uncompressed/<format>
Each frame description contains frame interval specification, and each
such specification consists of a number of lines with an inverval value
in each line. The rules stated above are best illustrated with an example:
# mkdir functions/uvc.usb0/control/header/h
# cd functions/uvc.usb0/control/header/h
# ln -s header/h class/fs
# ln -s header/h class/ss
# mkdir -p functions/uvc.usb0/streaming/uncompressed/u/360p
# cat <<EOF > functions/uvc.usb0/streaming/uncompressed/u/360p/dwFrameInterval
666666
1000000
5000000
EOF
# cd $GADGET_CONFIGFS_ROOT
# mkdir functions/uvc.usb0/streaming/header/h
# cd functions/uvc.usb0/streaming/header/h
# ln -s ../../uncompressed/u
# cd ../../class/fs
# ln -s ../../header/h
# cd ../../class/hs
# ln -s ../../header/h
# cd ../../class/ss
# ln -s ../../header/h


Testing the UVC function
------------------------
device: run the gadget, modprobe vivid
# uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>
where uvc-gadget is this program:
http://git.ideasonboard.org/uvc-gadget.git
with these patches:
http://www.spinics.net/lists/linux-usb/msg99220.html
host: luvcview -f yuv

这段描述中提到了uvc-gadget这个程序,可以去下载:
git clone git://git.ideasonboard.org/uvc-gadget.git
这个程序是个简单的测试程序,用于测试uvc的协议,类似于libuvc中的test.c。

linux源码中关于uvc的代码分布在两处:
drivers/media/usb/uvc
drivers/usb/gadget/function/uvc*

ipcuvc 编译自 uvc-gadget.c

uvc-gadget-ift.c中含有针对主机侧多个request的处理

相关文章

网友评论

    本文标题:libuvc与webcam的开发(四) - 嵌入式设备端(on

    本文链接:https://www.haomeiwen.com/subject/rzolzftx.html