improves uvc information dump

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41070 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2011-03-21 19:32:58 +00:00
parent cf9f46bc60
commit f2df488aec
2 changed files with 23 additions and 7 deletions

View File

@ -190,7 +190,7 @@ struct usbvc_still_image_frame_descriptor {
usbvc_image_size_pattern imageSizePatterns[0]; usbvc_image_size_pattern imageSizePatterns[0];
uint8 NumCompressionPatterns() const { return *(CompressionPatterns() - 1); } uint8 NumCompressionPatterns() const { return *(CompressionPatterns() - 1); }
const uint8* CompressionPatterns() const { const uint8* CompressionPatterns() const {
return (const uint8*)(imageSizePatterns + sizeof(usbvc_image_size_pattern) return ((const uint8*)imageSizePatterns + sizeof(usbvc_image_size_pattern)
* numImageSizePatterns + sizeof(uint8)); * numImageSizePatterns + sizeof(uint8));
} }
} _PACKED; } _PACKED;

View File

@ -45,10 +45,16 @@ usbvc_guid kNV12Guid = {0x4e, 0x56, 0x31, 0x32, 0x00, 0x00, 0x10, 0x00, 0x80,
static void static void
print_guid(const usbvc_guid guid) print_guid(const usbvc_guid guid)
{ {
printf("%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:" if (!memcmp(guid, kYUY2Guid, sizeof(usbvc_guid)))
"%02x:%02x:%02x", guid[0], guid[1], guid[2], guid[3], guid[4], guid[5], printf("YUY2");
guid[6], guid[7], guid[8], guid[9], guid[10], guid[11], guid[12], else if (!memcmp(guid, kNV12Guid, sizeof(usbvc_guid)))
guid[13], guid[14], guid[15]); printf("NV12");
else {
printf("%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:"
"%02x:%02x:%02x:%02x", guid[0], guid[1], guid[2], guid[3], guid[4],
guid[5], guid[6], guid[7], guid[8], guid[9], guid[10], guid[11],
guid[12], guid[13], guid[14], guid[15]);
}
} }
@ -330,8 +336,9 @@ UVCCamDevice::ParseVideoControl(const usbvc_class_descriptor* _descriptor,
{ {
const usbvc_interface_header_descriptor* descriptor = const usbvc_interface_header_descriptor* descriptor =
(const usbvc_interface_header_descriptor*)_descriptor; (const usbvc_interface_header_descriptor*)_descriptor;
printf("VC_HEADER:\tUVC v%04x, clk %lu Hz\n", descriptor->version, printf("VC_HEADER:\tUVC v%x.%02x, clk %.5f MHz\n",
descriptor->clockFrequency); descriptor->version >> 8, descriptor->version & 0xff,
descriptor->clockFrequency / 1000000.0);
for (uint8 i = 0; i < descriptor->numInterfacesNumbers; i++) { for (uint8 i = 0; i < descriptor->numInterfacesNumbers; i++) {
printf("\tStreaming Interface %d\n", printf("\tStreaming Interface %d\n",
descriptor->interfaceNumbers[i]); descriptor->interfaceNumbers[i]);
@ -347,6 +354,15 @@ UVCCamDevice::ParseVideoControl(const usbvc_class_descriptor* _descriptor,
descriptor->associatedTerminal); descriptor->associatedTerminal);
printf("\tDesc: %s\n", printf("\tDesc: %s\n",
fDevice->DecodeStringDescriptor(descriptor->terminal)); fDevice->DecodeStringDescriptor(descriptor->terminal));
if (descriptor->terminalType == 0x201) {
const usbvc_camera_terminal_descriptor* desc =
(const usbvc_camera_terminal_descriptor*)descriptor;
printf("\tObjectiveFocalLength Min/Max %d/%d\n",
desc->objectiveFocalLengthMin,
desc->objectiveFocalLengthMax);
printf("\tOcularFocalLength %d\n", desc->ocularFocalLength);
printf("\tControlSize %d\n", desc->controlSize);
}
break; break;
} }
case VC_OUTPUT_TERMINAL: case VC_OUTPUT_TERMINAL: