/* * Copyright 2011, Haiku Inc. All Rights Reserved. * Copyright 2009, Ithamar Adema, . * Distributed under the terms of the MIT License. */ #ifndef _USB_VIDEO_H #define _USB_VIDEO_H #define VC_CONTROL_UNDEFINED 0x0 #define VC_VIDEO_POWER_MODE_CONTROL 0x1 #define VC_REQUEST_ERROR_CODE_CONTROL 0x2 typedef struct usbvc_class_descriptor { uint8 length; uint8 descriptorType; uint8 descriptorSubtype; } _PACKED usbvc_class_descriptor; typedef uint8 usbvc_guid[16]; struct usbvc_format_descriptor { uint8 length; uint8 descriptorType; uint8 descriptorSubtype; uint8 formatIndex; uint8 numFrameDescriptors; union { struct { usbvc_guid format; uint8 bytesPerPixel; uint8 defaultFrameIndex; uint8 aspectRatioX; uint8 aspectRatioY; uint8 interlaceFlags; uint8 copyProtect; } uncompressed; struct { uint8 flags; uint8 defaultFrameIndex; uint8 aspectRatioX; uint8 aspectRatioY; uint8 interlaceFlags; uint8 copyProtect; } mjpeg; }; } _PACKED; struct usbvc_interface_header_descriptor { uint8 length; uint8 descriptorType; uint8 descriptorSubtype; uint16 version; uint16 totalLength; uint32 clockFrequency; uint8 numInterfacesNumbers; uint8 interfaceNumbers[0]; } _PACKED; struct usbvc_input_terminal_descriptor { uint8 length; uint8 descriptorType; uint8 descriptorSubtype; uint8 terminalID; uint16 terminalType; uint8 associatedTerminal; uint8 terminal; } _PACKED; #endif /* _USB_VIDEO_H */