210#define tusb_desc_video_control_header_nitf_t(_nitf) \
211 struct TU_ATTR_PACKED { \
213 uint8_t bDescriptorType; \
214 uint8_t bDescriptorSubType; \
216 uint16_t wTotalLength; \
217 uint32_t dwClockFrequency; \
218 uint8_t bInCollection; \
219 uint8_t baInterfaceNr[_nitf]; \
230 uint8_t bDescriptorType;
231 uint8_t bDescriptorSubType;
233 uint16_t wTerminalType;
234 uint8_t bAssocTerminal;
276#define tusb_desc_video_streaming_input_header_nbyte_t(_nb) \
277 struct TU_ATTR_PACKED { \
279 uint8_t bDescriptorType; \
280 uint8_t bDescriptorSubType; \
281 uint8_t bNumFormats; \
282 uint16_t wTotalLength; \
283 uint8_t bEndpointAddress; \
285 uint8_t bTerminalLink; \
286 uint8_t bStillCaptureMethod; \
287 uint8_t bTriggerSupport; \
288 uint8_t bTriggerUsage; \
289 uint8_t bControlSize; \
290 uint8_t bmaControls[_nb]; \
302 uint8_t bDescriptorType;
303 uint8_t bDescriptorSubType;
305 uint16_t wTotalLength;
307 uint8_t bTerminalLink;
308 uint8_t bControlSize;
309 uint8_t bmaControls[];
375#define tusb_desc_video_frame_uncompressed_nint_t(_nint) \
376 struct TU_ATTR_PACKED { \
378 uint8_t bDescriptorType; \
379 uint8_t bDescriptorSubType; \
380 uint8_t bFrameIndex; \
381 uint8_t bmCapabilities; \
384 uint32_t dwMinBitRate; \
385 uint32_t dwMaxBitRate; \
386 uint32_t dwMaxVideoFrameBufferSize; \
387 uint32_t dwDefaultFrameInterval; \
388 uint8_t bFrameIntervalType; \
389 uint32_t dwFrameInterval[_nint]; \
407 uint8_t bDescriptorType;
408 uint8_t bDescriptorSubType;
409 uint8_t bFormatIndex;
410 uint8_t bNumFrameDescriptors;
412 uint8_t bDefaultFrameIndex;
413 uint8_t bAspectRatioX;
414 uint8_t bAspectRatioY;
415 uint8_t bmInterlaceFlags;
416 uint8_t bCopyProtect;
543#define TUD_VIDEO_DESC_IAD_LEN 8
544#define TUD_VIDEO_DESC_STD_VC_LEN 9
545#define TUD_VIDEO_DESC_CS_VC_LEN 12
546#define TUD_VIDEO_DESC_INPUT_TERM_LEN 8
547#define TUD_VIDEO_DESC_OUTPUT_TERM_LEN 9
548#define TUD_VIDEO_DESC_CAMERA_TERM_LEN 18
549#define TUD_VIDEO_DESC_STD_VS_LEN 9
550#define TUD_VIDEO_DESC_CS_VS_IN_LEN 13
551#define TUD_VIDEO_DESC_CS_VS_OUT_LEN 9
552#define TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN 27
553#define TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN 11
554#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN 38
555#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_DISC_LEN 26
556#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN 38
557#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_DISC_LEN 26
558#define TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN 6
561#define TUD_VIDEO_GUID_YUY2 0x59,0x55,0x59,0x32,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
562#define TUD_VIDEO_GUID_NV12 0x4E,0x56,0x31,0x32,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
563#define TUD_VIDEO_GUID_M420 0x4D,0x34,0x32,0x30,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
564#define TUD_VIDEO_GUID_I420 0x49,0x34,0x32,0x30,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71
566#define TUD_VIDEO_DESC_IAD(_firstitf, _nitfs, _stridx) \
567 TUD_VIDEO_DESC_IAD_LEN, TUSB_DESC_INTERFACE_ASSOCIATION, \
568 _firstitf, _nitfs, TUSB_CLASS_VIDEO, VIDEO_SUBCLASS_INTERFACE_COLLECTION, \
569 VIDEO_ITF_PROTOCOL_UNDEFINED, _stridx
571#define TUD_VIDEO_DESC_STD_VC(_itfnum, _nEPs, _stridx) \
572 TUD_VIDEO_DESC_STD_VC_LEN, TUSB_DESC_INTERFACE, _itfnum, 0x00, \
573 _nEPs, TUSB_CLASS_VIDEO, VIDEO_SUBCLASS_CONTROL, VIDEO_ITF_PROTOCOL_15, _stridx
576#define TUD_VIDEO_DESC_CS_VC(_bcdUVC, _totallen, _clkfreq, ...) \
577 TUD_VIDEO_DESC_CS_VC_LEN + (TU_ARGS_NUM(__VA_ARGS__)), TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VC_HEADER, \
578 U16_TO_U8S_LE(_bcdUVC), U16_TO_U8S_LE((_totallen) + TUD_VIDEO_DESC_CS_VC_LEN + (TU_ARGS_NUM(__VA_ARGS__))), \
579 U32_TO_U8S_LE(_clkfreq), TU_ARGS_NUM(__VA_ARGS__), __VA_ARGS__
582#define TUD_VIDEO_DESC_INPUT_TERM(_tid, _tt, _at, _stridx) \
583 TUD_VIDEO_DESC_INPUT_TERM_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VC_INPUT_TERMINAL, \
584 _tid, U16_TO_U8S_LE(_tt), _at, _stridx
587#define TUD_VIDEO_DESC_OUTPUT_TERM(_tid, _tt, _at, _srcid, _stridx) \
588 TUD_VIDEO_DESC_OUTPUT_TERM_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VC_OUTPUT_TERMINAL, \
589 _tid, U16_TO_U8S_LE(_tt), _at, _srcid, _stridx
592#define TUD_VIDEO_DESC_CAMERA_TERM(_tid, _at, _stridx, _focal_min, _focal_max, _focal, _ctls) \
593 TUD_VIDEO_DESC_CAMERA_TERM_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VC_INPUT_TERMINAL, \
594 _tid, U16_TO_U8S_LE(VIDEO_ITT_CAMERA), _at, _stridx, \
595 U16_TO_U8S_LE(_focal_min), U16_TO_U8S_LE(_focal_max), U16_TO_U8S_LE(_focal), 3, \
596 TU_U32_BYTE0(_ctls), TU_U32_BYTE1(_ctls), TU_U32_BYTE2(_ctls)
599#define TUD_VIDEO_DESC_STD_VS(_itfnum, _alt, _epn, _stridx) \
600 TUD_VIDEO_DESC_STD_VS_LEN, TUSB_DESC_INTERFACE, _itfnum, _alt, \
601 _epn, TUSB_CLASS_VIDEO, VIDEO_SUBCLASS_STREAMING, VIDEO_ITF_PROTOCOL_15, _stridx
604#define TUD_VIDEO_DESC_CS_VS_INPUT(_numfmt, _totallen, _ep, _inf, _termlnk, _sticaptmeth, _trgspt, _trgusg, ...) \
605 TUD_VIDEO_DESC_CS_VS_IN_LEN + (_numfmt) * (TU_ARGS_NUM(__VA_ARGS__)), TUSB_DESC_CS_INTERFACE, \
606 VIDEO_CS_ITF_VS_INPUT_HEADER, _numfmt, \
607 U16_TO_U8S_LE((_totallen) + TUD_VIDEO_DESC_CS_VS_IN_LEN + (_numfmt) * (TU_ARGS_NUM(__VA_ARGS__))), \
608 _ep, _inf, _termlnk, _sticaptmeth, _trgspt, _trgusg, (TU_ARGS_NUM(__VA_ARGS__)), __VA_ARGS__
611#define TUD_VIDEO_DESC_CS_VS_OUTPUT(_numfmt, _totallen, _ep, _inf, _termlnk, ...) \
612 TUD_VIDEO_DESC_CS_VS_OUT_LEN + (_numfmt) * (TU_ARGS_NUM(__VA_ARGS__)), TUSB_DESC_CS_INTERFACE, \
613 VIDEO_CS_ITF_VS_OUTPUT_HEADER, _numfmt, \
614 U16_TO_U8S_LE((_totallen) + TUD_VIDEO_DESC_CS_VS_OUT_LEN + (_numfmt) * (TU_ARGS_NUM(__VA_ARGS__))), \
615 _ep, _inf, _termlnk, (TU_ARGS_NUM(__VA_ARGS__)), __VA_ARGS__
618#define TUD_VIDEO_GUID(_g0,_g1,_g2,_g3,_g4,_g5,_g6,_g7,_g8,_g9,_g10,_g11,_g12,_g13,_g14,_g15) _g0,_g1,_g2,_g3,_g4,_g5,_g6,_g7,_g8,_g9,_g10,_g11,_g12,_g13,_g14,_g15
620#define TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR(_fmtidx, _numfrmdesc, \
621 _guid, _bitsperpix, _frmidx, _asrx, _asry, _interlace, _cp) \
622 TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FORMAT_UNCOMPRESSED, \
623 _fmtidx, _numfrmdesc, TUD_VIDEO_GUID(_guid), \
624 _bitsperpix, _frmidx, _asrx, _asry, _interlace, _cp
627#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT(_frmidx, _cap, _width, _height, _minbr, _maxbr, _maxfrmbufsz, _frminterval, _minfrminterval, _maxfrminterval, _frmintervalstep) \
628 TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FRAME_UNCOMPRESSED, \
629 _frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
630 U32_TO_U8S_LE(_maxfrmbufsz), U32_TO_U8S_LE(_frminterval), 0, \
631 U32_TO_U8S_LE(_minfrminterval), U32_TO_U8S_LE(_maxfrminterval), U32_TO_U8S_LE(_frmintervalstep)
634#define TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_DISC(_frmidx, _cap, _width, _height, _minbr, _maxbr, _maxfrmbufsz, _frminterval, ...) \
635 TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_DISC_LEN + (TU_ARGS_NUM(__VA_ARGS__)) * 4, \
636 TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FRAME_UNCOMPRESSED, \
637 _frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
638 U32_TO_U8S_LE(_maxfrmbufsz), U32_TO_U8S_LE(_frminterval), (TU_ARGS_NUM(__VA_ARGS__)), __VA_ARGS__
641#define TUD_VIDEO_DESC_CS_VS_FMT_MJPEG(_fmtidx, _numfrmdesc, _fixed_sz, _frmidx, _asrx, _asry, _interlace, _cp) \
642 TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FORMAT_MJPEG, \
643 _fmtidx, _numfrmdesc, _fixed_sz, _frmidx, _asrx, _asry, _interlace, _cp
646#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT(_frmidx, _cap, _width, _height, _minbr, _maxbr, _maxfrmbufsz, _frminterval, _minfrminterval, _maxfrminterval, _frmintervalstep) \
647 TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN, TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FRAME_MJPEG, \
648 _frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
649 U32_TO_U8S_LE(_maxfrmbufsz), U32_TO_U8S_LE(_frminterval), 0, \
650 U32_TO_U8S_LE(_minfrminterval), U32_TO_U8S_LE(_maxfrminterval), U32_TO_U8S_LE(_frmintervalstep)
653#define TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_DISC(_frmidx, _cap, _width, _height, _minbr, _maxbr, _maxfrmbufsz, _frminterval, ...) \
654 TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_DISC_LEN + (TU_ARGS_NUM(__VA_ARGS__)) * 4, \
655 TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_FRAME_MJPEG, \
656 _frmidx, _cap, U16_TO_U8S_LE(_width), U16_TO_U8S_LE(_height), U32_TO_U8S_LE(_minbr), U32_TO_U8S_LE(_maxbr), \
657 U32_TO_U8S_LE(_maxfrmbufsz), U32_TO_U8S_LE(_frminterval), (TU_ARGS_NUM(__VA_ARGS__)), __VA_ARGS__
660#define TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING(_color, _trns, _mat) \
661 TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN, \
662 TUSB_DESC_CS_INTERFACE, VIDEO_CS_ITF_VS_COLORFORMAT, \
666#define TUD_VIDEO_DESC_EP_ISO(_ep, _epsize, _ep_interval) \
667 7, TUSB_DESC_ENDPOINT, _ep, (uint8_t) (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS),\
668 U16_TO_U8S_LE(_epsize), _ep_interval
671#define TUD_VIDEO_DESC_EP_BULK(_ep, _epsize, _ep_interval) \
672 7, TUSB_DESC_ENDPOINT, _ep, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), _ep_interval
AUDIO Channel Cluster Descriptor (4.1)
struct TU_ATTR_PACKED::@56::@58 input
uint16_t wObjectiveFocalLengthMin
uint8_t bStillCaptureMethod
uint8_t bAssocTerminal
Terminal ID of the Terminal that is associated with this Clock Source.
struct TU_ATTR_PACKED::@56::@59 output
uint32_t dwFrameInterval[]
uint32_t dwMaxVideoFrameSize
uint8_t bmControls
See: audio_cs_ac_interface_control_pos_t.
uint32_t dwMaxPayloadTransferSize
uint8_t bDescriptorSubType
Descriptor SubType. Value: AUDIO_CS_AC_INTERFACE_HEADER.
uint16_t wTotalLength
Total number of bytes returned for the class-specific AudioControl interface descriptor....
uint8_t bTerminalID
Constant uniquely identifying the Terminal within the audio function. This value is used in all reque...
uint8_t bSourceID
ID of the Unit or Terminal to which this Terminal is connected.
uint32_t dwMaxVideoFrameBufferSize
uint16_t wTerminalType
Constant characterizing the type of Terminal. See: audio_terminal_type_t for USB streaming and audio_...
struct TU_ATTR_PACKED::@64::TU_ATTR_PACKED Hint
struct TU_ATTR_PACKED::@67::TU_ATTR_PACKED FramingInfo
uint8_t bDefaultFrameIndex
uint32_t dwClockFrequency
uint8_t bTerminalLink
The Terminal ID of the Terminal to which this interface is connected.
uint8_t bFrameIntervalType
uint8_t iTerminal
Index of a string descriptor, describing the Input Terminal.
uint8_t bNumFrameDescriptors
uint8_t bMaxNumberOfRefFramesPlus1
uint8_t bDescriptorType
Descriptor Type. Value: TUSB_DESC_CS_INTERFACE.
uint8_t bMatrixCoefficients
uint32_t dwDefaultFrameInterval
uint8_t bLength
Size of this descriptor in bytes: 9.
uint16_t wOcularFocalLength
uint8_t bTransferCharacteristics
uint8_t SourceClockReference
uint16_t bmRateControlModes
uint8_t bFormatType
Constant identifying the Format Type the AudioStreaming interface is using. See: audio_format_type_t.
uint64_t bmLayoutPerStream
uint16_t wObjectiveFocalLengthMax
video_cs_vc_interface_subtype_t
@ VIDEO_CS_ITF_VC_INPUT_TERMINAL
@ VIDEO_CS_ITF_VC_OUTPUT_TERMINAL
@ VIDEO_CS_ITF_VC_ENCODING_UNIT
@ VIDEO_CS_ITF_VC_EXTENSION_UNIT
@ VIDEO_CS_ITF_VC_UNDEFINED
@ VIDEO_CS_ITF_VC_SELECTOR_UNIT
@ VIDEO_CS_ITF_VC_PROCESSING_UNIT
video_interface_streaming_selector_t
@ VIDEO_VS_CTL_UPDATE_FRAME_SEGMENT
@ VIDEO_VS_CTL_STILL_IMAGE_TRIGGER
@ VIDEO_VS_CTL_STREAM_ERROR_CODE
@ VIDEO_VS_CTL_STILL_PROBE
@ VIDEO_VS_CTL_STILL_COMMIT
@ VIDEO_VS_CTL_GENERATE_KEY_FRAME
@ VIDEO_VS_CTL_SYNCH_DELAY_CONTROL
struct TU_ATTR_PACKED tusb_desc_video_format_mjpeg_t
struct TU_ATTR_PACKED tusb_desc_video_format_framebased_t
@ VIDEO_ETT_COMPOSITE_CONNECTOR
@ VIDEO_ETT_SVIDEO_CONNECTOR
@ VIDEO_ETT_COMPONENT_CONNECTOR
@ VIDEO_OTT_VENDOR_SPECIFIC
@ VIDEO_TT_VENDOR_SPECIFIC
@ VIDEO_ITT_MEDIA_TRANSPORT_INPUT
@ VIDEO_OTT_MEDIA_TRANSPORT_OUTPUT
@ VIDEO_ITT_VENDOR_SPECIFIC
@ VIDEO_ETT_VENDOR_SPEIFIC
@ VIDEO_COLOR_PRIMARIES_SMPTE170M
@ VIDEO_COLOR_PRIMARIES_SMPTE240M
@ VIDEO_COLOR_PRIMARIES_BT470_2M
@ VIDEO_COLOR_PRIMARIES_BT709
@ VIDEO_COLOR_PRIMARIES_BT470_2BG
@ VIDEO_COLOR_PRIMARIES_UNDEFINED
struct TU_ATTR_PACKED tusb_desc_video_control_camera_terminal_t
struct TU_ATTR_PACKED tusb_desc_video_streaming_output_header_t
tusb_desc_video_frame_uncompressed_t tusb_desc_video_frame_mjpeg_t
video_color_transfer_characteristics_t
@ VIDEO_COLOR_XFER_CH_BT470_2M
@ VIDEO_COLOR_XFER_CH_SRGB
@ VIDEO_COLOR_XFER_CH_BT470_2BG
@ VIDEO_COLOR_XFER_CH_SMPTE170M
@ VIDEO_COLOR_XFER_CH_UNDEFINED
@ VIDEO_COLOR_XFER_CH_SMPTE240M
@ VIDEO_COLOR_XFER_CH_LINEAR
@ VIDEO_COLOR_XFER_CH_BT709
tusb_desc_video_frame_uncompressed_1int_t tusb_desc_video_frame_mjpeg_1int_t
tusb_desc_video_frame_uncompressed_4int_t tusb_desc_video_frame_mjpeg_4int_t
tusb_desc_video_frame_uncompressed_3int_t tusb_desc_video_frame_uncompressed_continuous_t
struct TU_ATTR_PACKED tusb_desc_video_format_dv_t
video_cs_vs_interface_subtype_t
@ VIDEO_CS_ITF_VS_STILL_IMAGE_FRAME
@ VIDEO_CS_ITF_VS_UNDEFINED
@ VIDEO_CS_ITF_VS_FORMAT_H264
@ VIDEO_CS_ITF_VS_FORMAT_FRAME_BASED
@ VIDEO_CS_ITF_VS_FORMAT_VP8
@ VIDEO_CS_ITF_VS_FORMAT_UNCOMPRESSED
@ VIDEO_CS_ITF_VS_FORMAT_MJPEG
@ VIDEO_CS_ITF_VS_FRAME_H264
@ VIDEO_CS_ITF_VS_FORMAT_VP8_SIMULCAST
@ VIDEO_CS_ITF_VS_FORMAT_DV
@ VIDEO_CS_ITF_VS_FORMAT_H264_SIMULCAST
@ VIDEO_CS_ITF_VS_FORMAT_MPEG2TS
@ VIDEO_CS_ITF_VS_FRAME_FRAME_BASED
@ VIDEO_CS_ITF_VS_FRAME_UNCOMPRESSED
@ VIDEO_CS_ITF_VS_FRAME_MJPEG
@ VIDEO_CS_ITF_VS_FORMAT_STREAM_BASED
@ VIDEO_CS_ITF_VS_INPUT_HEADER
@ VIDEO_CS_ITF_VS_COLORFORMAT
@ VIDEO_CS_ITF_VS_FRAME_VP8
@ VIDEO_CS_ITF_VS_OUTPUT_HEADER
struct TU_ATTR_PACKED tusb_desc_video_frame_framebased_t
tusb_desc_video_frame_uncompressed_2int_t tusb_desc_video_frame_mjpeg_2int_t
video_color_matrix_coefficients_t
@ VIDEO_COLOR_COEF_UNDEFINED
@ VIDEO_COLOR_COEF_SMPTE170M
@ VIDEO_COLOR_COEF_SMPTE240M
@ VIDEO_COLOR_COEF_BT470_2BG
struct TU_ATTR_PACKED video_probe_and_commit_control_t
@ VIDEO_REQUEST_SET_CUR_ALL
@ VIDEO_REQUEST_GET_DEF_ALL
@ VIDEO_REQUEST_UNDEFINED
@ VIDEO_REQUEST_GET_CUR_ALL
@ VIDEO_REQUEST_GET_MIN_ALL
@ VIDEO_REQUEST_GET_RES_ALL
@ VIDEO_REQUEST_GET_MAX_ALL
struct TU_ATTR_PACKED tusb_desc_video_control_output_terminal_t
tusb_desc_video_frame_uncompressed_3int_t tusb_desc_video_frame_mjpeg_3int_t
struct TU_ATTR_PACKED tusb_video_payload_header_t
typedef tusb_desc_video_frame_uncompressed_nint_t() tusb_desc_video_frame_uncompressed_t
video_interface_protocol_code_t
@ VIDEO_ITF_PROTOCOL_UNDEFINED
typedef tusb_desc_video_control_header_nitf_t() tusb_desc_video_control_header_t
tusb_desc_video_frame_mjpeg_3int_t tusb_desc_video_frame_mjpeg_continuous_t
@ VIDEO_SUBCLASS_UNDEFINED
@ VIDEO_SUBCLASS_INTERFACE_COLLECTION
@ VIDEO_SUBCLASS_STREAMING
TU_VERIFY_STATIC(sizeof(tusb_desc_video_control_input_terminal_t)==8, "size is not correct")
typedef tusb_desc_video_streaming_input_header_nbyte_t() tusb_desc_video_streaming_input_header_t
@ VIDEO_ERROR_INVALID_UNIT
@ VIDEO_ERROR_INVALID_REQUEST
@ VIDEO_ERROR_WRONG_STATE
@ VIDEO_ERROR_INVALID_VALUE_WITHIN_RANGE
@ VIDEO_ERROR_INVALID_CONTROL
@ VIDEO_ERROR_OUT_OF_RANGE
struct TU_ATTR_PACKED tusb_desc_video_streaming_inout_header_t
struct TU_ATTR_PACKED tusb_desc_video_control_input_terminal_t
video_interface_control_selector_t
@ VIDEO_VC_CTL_VIDEO_POWER_MODE
@ VIDEO_VC_CTL_REQUEST_ERROR_CODE
struct TU_ATTR_PACKED tusb_desc_video_streaming_color_matching_t
struct TU_ATTR_PACKED tusb_desc_video_format_uncompressed_t