@@ -79,6 +79,22 @@ enum {
79
79
+ 7 /* Endpoint */ \
80
80
)
81
81
82
+ #define TUD_VIDEO_CAPTURE_DESC_UNCOMPR_BULK_LEN (\
83
+ TUD_VIDEO_DESC_IAD_LEN\
84
+ /* control */ \
85
+ + TUD_VIDEO_DESC_STD_VC_LEN \
86
+ + (TUD_VIDEO_DESC_CS_VC_LEN + 1 /*bInCollection*/ )\
87
+ + TUD_VIDEO_DESC_CAMERA_TERM_LEN \
88
+ + TUD_VIDEO_DESC_OUTPUT_TERM_LEN \
89
+ /* Interface 1, Alternate 0 */ \
90
+ + TUD_VIDEO_DESC_STD_VS_LEN \
91
+ + (TUD_VIDEO_DESC_CS_VS_IN_LEN + 1 /*bNumFormats x bControlSize*/ )\
92
+ + TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN \
93
+ + TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN \
94
+ + TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN \
95
+ + 7 /* Endpoint */ \
96
+ )
97
+
82
98
/* Windows support YUY2 and NV12
83
99
* https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/usb-video-class-driver-overview */
84
100
@@ -165,4 +181,39 @@ enum {
165
181
/* EP */ \
166
182
TUD_VIDEO_DESC_EP_ISO (_epin , _epsize , 1 )
167
183
184
+
185
+ #define TUD_VIDEO_CAPTURE_DESCRIPTOR_UNCOMPR_BULK (_stridx , _epin , _width , _height , _fps , _epsize ) \
186
+ TUD_VIDEO_DESC_IAD (ITF_NUM_VIDEO_CONTROL , /* 2 Interfaces */ 0x02 , _stridx ), \
187
+ /* Video control 0 */ \
188
+ TUD_VIDEO_DESC_STD_VC (ITF_NUM_VIDEO_CONTROL , 0 , _stridx ), \
189
+ TUD_VIDEO_DESC_CS_VC ( /* UVC 1.5*/ 0x0150 , \
190
+ /* wTotalLength - bLength */ \
191
+ TUD_VIDEO_DESC_CAMERA_TERM_LEN + TUD_VIDEO_DESC_OUTPUT_TERM_LEN , \
192
+ UVC_CLOCK_FREQUENCY , ITF_NUM_VIDEO_STREAMING ), \
193
+ TUD_VIDEO_DESC_CAMERA_TERM (UVC_ENTITY_CAP_INPUT_TERMINAL , 0 , 0 ,\
194
+ /*wObjectiveFocalLengthMin*/ 0 , /*wObjectiveFocalLengthMax*/ 0 ,\
195
+ /*wObjectiveFocalLength*/ 0 , /*bmControls*/ 0 ), \
196
+ TUD_VIDEO_DESC_OUTPUT_TERM (UVC_ENTITY_CAP_OUTPUT_TERMINAL , VIDEO_TT_STREAMING , 0 , 1 , 0 ), \
197
+ /* Video stream alt. 0 */ \
198
+ TUD_VIDEO_DESC_STD_VS (ITF_NUM_VIDEO_STREAMING , 0 , 1 , _stridx ), \
199
+ /* Video stream header for without still image capture */ \
200
+ TUD_VIDEO_DESC_CS_VS_INPUT ( /*bNumFormats*/ 1 , \
201
+ /*wTotalLength - bLength */ \
202
+ TUD_VIDEO_DESC_CS_VS_FMT_UNCOMPR_LEN \
203
+ + TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT_LEN \
204
+ + TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN ,\
205
+ _epin , /*bmInfo*/ 0 , /*bTerminalLink*/ UVC_ENTITY_CAP_OUTPUT_TERMINAL , \
206
+ /*bStillCaptureMethod*/ 0 , /*bTriggerSupport*/ 0 , /*bTriggerUsage*/ 0 , \
207
+ /*bmaControls(1)*/ 0 ), \
208
+ /* Video stream format */ \
209
+ TUD_VIDEO_DESC_CS_VS_FMT_YUY2 (/*bFormatIndex*/ 1 , /*bNumFrameDescriptors*/ 1 , \
210
+ /*bDefaultFrameIndex*/ 1 , 0 , 0 , 0 , /*bCopyProtect*/ 0 ), \
211
+ /* Video stream frame format */ \
212
+ TUD_VIDEO_DESC_CS_VS_FRM_UNCOMPR_CONT (/*bFrameIndex */ 1 , 0 , _width , _height , \
213
+ _width * _height * 16 , _width * _height * 16 * _fps , \
214
+ _width * _height * 16 , \
215
+ (10000000 /_fps ), (10000000 /_fps ), (10000000 /_fps )* _fps , (10000000 /_fps )), \
216
+ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING (VIDEO_COLOR_PRIMARIES_BT709 , VIDEO_COLOR_XFER_CH_BT709 , VIDEO_COLOR_COEF_SMPTE170M ), \
217
+ TUD_VIDEO_DESC_EP_BULK (_epin , _epsize , 1 )
218
+
168
219
#endif
0 commit comments