@@ -95,6 +95,22 @@ enum {
95
95
+ 7 /* Endpoint */ \
96
96
)
97
97
98
+ #define TUD_VIDEO_CAPTURE_DESC_MJPEG_BULK_LEN (\
99
+ TUD_VIDEO_DESC_IAD_LEN \
100
+ /* control */ \
101
+ + TUD_VIDEO_DESC_STD_VC_LEN \
102
+ + (TUD_VIDEO_DESC_CS_VC_LEN + 1 /*bInCollection*/ )\
103
+ + TUD_VIDEO_DESC_CAMERA_TERM_LEN \
104
+ + TUD_VIDEO_DESC_OUTPUT_TERM_LEN \
105
+ /* Interface 1, Alternate 0 */ \
106
+ + TUD_VIDEO_DESC_STD_VS_LEN \
107
+ + (TUD_VIDEO_DESC_CS_VS_IN_LEN + 1 /*bNumFormats x bControlSize*/ )\
108
+ + TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN \
109
+ + TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN \
110
+ + TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN \
111
+ + 7 /* Endpoint */ \
112
+ )
113
+
98
114
/* Windows support YUY2 and NV12
99
115
* https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/usb-video-class-driver-overview */
100
116
@@ -216,4 +232,40 @@ enum {
216
232
TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING (VIDEO_COLOR_PRIMARIES_BT709 , VIDEO_COLOR_XFER_CH_BT709 , VIDEO_COLOR_COEF_SMPTE170M ), \
217
233
TUD_VIDEO_DESC_EP_BULK (_epin , _epsize , 1 )
218
234
235
+ #define TUD_VIDEO_CAPTURE_DESCRIPTOR_MJPEG_BULK (_stridx , _epin , _width , _height , _fps , _epsize ) \
236
+ TUD_VIDEO_DESC_IAD (ITF_NUM_VIDEO_CONTROL , /* 2 Interfaces */ 0x02 , _stridx ), \
237
+ /* Video control 0 */ \
238
+ TUD_VIDEO_DESC_STD_VC (ITF_NUM_VIDEO_CONTROL , 0 , _stridx ), \
239
+ TUD_VIDEO_DESC_CS_VC ( /* UVC 1.5*/ 0x0150 , \
240
+ /* wTotalLength - bLength */ \
241
+ TUD_VIDEO_DESC_CAMERA_TERM_LEN + TUD_VIDEO_DESC_OUTPUT_TERM_LEN , \
242
+ UVC_CLOCK_FREQUENCY , ITF_NUM_VIDEO_STREAMING ), \
243
+ TUD_VIDEO_DESC_CAMERA_TERM (UVC_ENTITY_CAP_INPUT_TERMINAL , 0 , 0 ,\
244
+ /*wObjectiveFocalLengthMin*/ 0 , /*wObjectiveFocalLengthMax*/ 0 ,\
245
+ /*wObjectiveFocalLength*/ 0 , /*bmControls*/ 0 ), \
246
+ TUD_VIDEO_DESC_OUTPUT_TERM (UVC_ENTITY_CAP_OUTPUT_TERMINAL , VIDEO_TT_STREAMING , 0 , 1 , 0 ), \
247
+ /* Video stream alt. 0 */ \
248
+ TUD_VIDEO_DESC_STD_VS (ITF_NUM_VIDEO_STREAMING , 0 , 1 , _stridx ), \
249
+ /* Video stream header for without still image capture */ \
250
+ TUD_VIDEO_DESC_CS_VS_INPUT ( /*bNumFormats*/ 1 , \
251
+ /*wTotalLength - bLength */ \
252
+ TUD_VIDEO_DESC_CS_VS_FMT_MJPEG_LEN \
253
+ + TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT_LEN \
254
+ + TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING_LEN ,\
255
+ _epin , /*bmInfo*/ 0 , /*bTerminalLink*/ UVC_ENTITY_CAP_OUTPUT_TERMINAL , \
256
+ /*bStillCaptureMethod*/ 0 , /*bTriggerSupport*/ 0 , /*bTriggerUsage*/ 0 , \
257
+ /*bmaControls(1)*/ 0 ), \
258
+ /* Video stream format */ \
259
+ TUD_VIDEO_DESC_CS_VS_FMT_MJPEG (/*bFormatIndex*/ 1 , /*bNumFrameDescriptors*/ 1 , \
260
+ /*bmFlags*/ 0 , /*bDefaultFrameIndex*/ 1 , 0 , 0 , 0 , /*bCopyProtect*/ 0 ), \
261
+ /* Video stream frame format */ \
262
+ TUD_VIDEO_DESC_CS_VS_FRM_MJPEG_CONT (/*bFrameIndex */ 1 , 0 , _width , _height , \
263
+ _width * _height * 16 , _width * _height * 16 * _fps , \
264
+ _width * _height * 16 / 8 , \
265
+ (10000000 /_fps ), (10000000 /_fps ), (10000000 /_fps )* _fps , (10000000 /_fps )), \
266
+ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING (VIDEO_COLOR_PRIMARIES_BT709 , VIDEO_COLOR_XFER_CH_BT709 , VIDEO_COLOR_COEF_SMPTE170M ), \
267
+ /* EP */ \
268
+ TUD_VIDEO_DESC_EP_BULK (_epin , _epsize , 1 )
269
+
270
+
219
271
#endif
0 commit comments