天天看點

mtk平台androidl usb uvc camera 調試記錄

USB video class(又稱為USB video device class or UVC)就是USB device class視訊産品在不需要安裝任何的驅動程式下即插即用,包括攝像頭、數字攝影機、模拟視訊轉換器、電視卡及靜态視訊相機。

Linux核心之中,已經內建了對UVCCamre的支援。

核心代碼路徑: \kernel-3.10\drivers\media\usb\uvc

若需要打開UVC CAMERA 需要在核心中配置:

MEDIA_SUPPORT = y

MEDIA_USB_SUPPORT = y

USB_VIDEO_CLASS = y

USB_VIDEO_CLASS_INPUT_EVDEV = y

如何檢視目前的Camera是否支援UVC

插入攝像頭,通過lsusb指令,找到目前UVCCamera的PID和VID

[email protected]:~/reyn/k86m/k86m_debug/kernel-3.10$ lsusb

Bus 001 Device 002: ID 8087:8008 Intel Corp. 

Bus 002 Device 002: ID 8087:8000 Intel Corp. 

Bus 003 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse

Bus 003 Device 049: ID 058f:3842 Alcor Micro Corp. 

然後執行一下指令lsusb -d 058f:3842 -v | grep "14 Video", 若支援UVC Camera則你會看到如下資訊:

[email protected]:~/reyn/k86m/k86m_debug/kernel-3.10$ lsusb -d 058f:3842 -v | grep "14 Video"

Couldn't open device, some information will be missing

      bFunctionClass         14 Video

      bInterfaceClass        14 Video

      bInterfaceClass        14 Video

      bInterfaceClass        14 Video

      bInterfaceClass        14 Video

      bInterfaceClass        14 Video

      bInterfaceClass        14 Video

在UVC Camrera遇到問題時,可以通過以下指令,打開trace

sudo echo 0xffff > /sys/module/uvcvideo/parameters/trace    打開

sudo echo 0 > /sys/module/uvcvideo/parameters/trace    關閉

dmesg | grep uvc -a     -a 指令是将起作為一個文本檔案裝置對待

若目前Camera不支援UVC ,可以通過以下指令,或許目前Camrea的詳細配置描述符:

lsusb -d 058f:3842 -v

下面介紹一下USB協定關于攝像頭的相關知識!

V4L2:

Video4Linux或V4L是一個視訊截取及裝置輸出API,以及Linux的驅動程式架構,支援很多USB攝像頭、電視調諧卡以及其他裝置。

簡單的講V4L2就是用來管理UVC裝置的并且能夠提供視訊相關的一些API。那麼這些API怎麼使用或者能被誰使用呢。在Linux系統上有很多的開源軟體能夠支援V4L2。常見的又FFmpeg、opencv、Skype、Mplayer等等。

VideoClass裝置描述位于USB協定的Interface級,每個裝置的Interface分為兩類VideoControlInterface(僅僅隻用一個)和VideoStreamingInterface(可以具有多個),而與裝置的一個相關的所有的USB Interface被稱作為一個VideoInterface Collection使用IAD(Interface Association Deor)描述符來描述。

目前核心支援的UVC camera的類型有 :

YUV 4:2:2 (YUYV)

YUV 4:2:0 (NV12)

MJPEG

YVU 4:2:0 (YV12)

YUV 4:2:0 (I420)

YUV 4:2:0 (M420)

YUV 4:2:2 (UYVY)

Greyscale 8-bit (Y800)

Greyscale 8-bit (Y8  )

Greyscale 10-bit (Y10 )

Greyscale 16-bit (Y16 )

RGB Bayer

RGB565

H.264

插入攝像頭,如果在裝置節點下出現/dev/video0; 則證明你的uvc camera在核心的驅動已經加載了,然後就可以用測試工具開始測試你的uvc攝像頭了。

常用的linux測試工具為: luvcview

未完 待續...