Linux&UVC驱动
+ -

LINUX&UVC驱动视频流接口描述符与视频控制接口描述符的解析关系

2024-03-25 10 0

UVC控制接口描述符包其下的子各类描述符代表着UVC设备的拓扑结构,关于UVC设备的控制一般都是通过UVC控制接口描述符各个终端,实例的特定类请求来实现的,其中也包括用于用户自定义通讯的扩展单元描述符
与UVC控制接口描述符相对的是UVC视频流接口描述符,UVC规范可以有0个或者多个。至于有多少个,这是由UVC视频控制接口描述符头的bInCollection来决定的。详见UVC 类特定视频控制接口头描述符 https://www.usbzh.com/article/detail-4.html
在LINUX&UVC驱动代码uvc_parse_standard_control函数中,其相关的代码如下:

        n = buflen >= 12 ? buffer[11] : 0;
        /* Parse all USB Video Streaming interfaces. */
        for (i = 0; i < n; ++i) {
            intf = usb_ifnum_to_if(udev, buffer[12+i]);
            if (intf == NULL) {
                uvc_trace(UVC_TRACE_DESCR, "device %d "
                    "interface %d doesn't exists\n",
                    udev->devnum, i);
                continue;
            }

            uvc_parse_streaming(dev, intf);
        }

这里的n就是UVC视频控制接口描述符头的bInCollection,其后的字段baInterfaceNr为一个数组,大小为n,其每项代表着其对应的视频接口描述符的接口描述符id.

   UINT8  bInCollection;    //视频流接口描述符的个数
   UINT8  baInterfaceNr[bInCollection]; //数量由bInCollection决定。

通过usb_ifnum_to_if函数,依据参数接口描述符的id,就可以定位该接口描述符的位置,这样通过uvc_parse_streaming函数即可解析该接口描述符下的视频流相关的信息。这些信息包括该接口(相机)支持的视频格式,分辨率大小等。

0 篇笔记 写笔记

UAC 标准音频流接口描述符
UAC音频流接口描述符包含与音频数据流相关的描述符信息。标准音频流接口描述符,Standard AS Interface Descriptor是音频流接口描述符的第一个描述符。该描述符是标准的接口描述符,故数据结构定义如下:typedef struct _USB_INTERFACE_DESCRIPT......
UVC 视频流接口描述符
频流接口描述符包含了所有完整的视频流接口信息。视频流接口信息以标准的视频流接口开头。视频流接口描述符由标准视频控制接口描述符以及各控制相关描述符组成。标准视频流接口描述符使用通用USB设备接口描述符数据结构。struct _INTERFACE_DESCRIPTOR_STRUCT; { BY......
UAC 类特定音频流接口描述符
类特定音频流接口描述符:Class-Specific AS Interface Descriptor.UAC类特定音频流接口描述符 - UVC1.0结构体定义如下:typedef struct _USB_ASI_DESCRIPTOR{ UINT8 bLength; UINT8......
UVC 标准视频控制接口描述符
视频控制接口描述符由标准视频控制接口描述符以及各控制相关描述符组成。标准视频控制接口描述符使用通用USB设备接口描述符数据结构。struct _INTERFACE_DESCRIPTOR_STRUCT; { BYTE bLength; //设备描述符的字节数大小,为0x09......
UAC麦克风音频流接口描述符
UAC麦克风音频流接口描述符使用普通用USB接口描述符结构,该描述符是音频流描述符集合的开始。UAC音频流描述符的组织结构如下图:UAC麦克风音频流接口描述符的数据配置如下:接口描述符的各字段的解释详见:USB接口描述符 http://www.usbzh.com/article/detail......
UAC麦克风类特定音频流接口描述符
UAC麦克风类特定音频流接口描述符数据组织如下图:该描述符包含了音频数据流的相关信息。关于该描述符的字段解释详见:http://www.usbzh.com/article/detail-158.html/* 4.5.2 Class-Specific AS Interface Descript......
Win10 x64下USB-UAC虚拟麦克风的实现
对于虚拟的UAC设备,实现了虚拟的UAC扬声器,总是想着再一个USB虚拟的UAC麦克风。因为这样,才算完美。本着完了完美的结果,自己又忍不住给自己找了一个活-USB虚拟麦克风虚拟麦克风的大体开发和USB虚拟扬声器类似,只是一个是输入设备,另一个是输出设备而已。所以参考UAC规范,基于UAC虚拟扬声......
USB摄像头UVC视频流描述符中的bFormatIndex和bFrameIndex
bFormatIndexUSB摄像头一般支持多种视频格式,比如MJPG,H264,YUY2,NV12,RGB等,这些不同的视频格式代表着传输的视频图像的数据组织方式。这些视频格式通过UVC视频流各视频流相关的类型描述符来进行描述符。在Windows系统下,我们可以通过PotPlayer来查看摄像头......
LINUX&UVC驱动视频流接口描述符视频控制接口描述符的解析关系
UVC控制接口描述符包其下的子各类描述符代表着UVC设备的拓扑结构,关于UVC设备的控制一般都是通过UVC控制接口描述符各个终端,实例的特定类请求来实现的,其中也包括用于用户自定义通讯的扩展单元描述符。与UVC控制接口描述符相对的是UVC视频流接口描述符,UVC规范可以有0个或者多个。至于有多少个,......
uvc_parse_streaming分析
除过usb_driver_claim_interface函数功能有之外,uvc_parse_streaming主要是对申请的内存结构体struct uvc_streaming 进行初始化,其数据来源于对UVC视频流接口描述符的解析。视频流接口描述符的内存布局大致如下:视频流对应的接口描述符视频......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!