UVC相机拓扑结构配置要点总结
2023-03-18
23
0
欢迎加入官方QQ群:952873936或联系站长进行技术交流。
做UVC相机开发的人经常是需要编写UVC相机配置描述符的,这个USB配置描述符包括两部分的内容,分别为视频控制接口部分和视频流接口部分。
视频控制部分包括的内容主要描述了UVC相机的拓扑结构。
一般情况下的相机拓扑结构是这样子的:
不过有的时候,我们也需要扩展单元,所以加上扩展单元描述符就如下:
这里可以根据需要,进行扩展单元级联,但实际在测试过程中,扩展单元也可以不参数据流,如下:
所以从这里来看,UVC规范对于USB相机的拓扑结构的实现,可以由开发者自行定义,比较灵活:
不过本人在实际开发过程中,踩了一个坑,效果竟然是虚拟摄像头不创建,或者启动失败。经过实际测试:
当视频流输入头描述符中的bTerminalLink有关系:
typedef struct _USB_VS_INTERFACE_INPUT_HEADER_DESCRIPTOR
{
UINT8 bLength;
UINT8 bDescriptorType;
UINT8 bDescriptorSubtype;
UINT8 bNumFormats;
UINT16 wTotalLength;
UINT8 bEndpointAddress;
UINT8 bmInfo;
UINT8 bTerminalLink;
UINT8 bStillCaptureMethod;
UINT8 bTriggerSupport;
UINT8 bTriggerUsage;
UINT8 bControlSize;
UINT8 bmaControl[2];
} USB_VS_INTERFACE_INPUT_HEADER_DESCRIPTOR;
bTerminalLink从规范上来讲,一般是UVC输出终端描述符,但如果一不小心。