@@ -419,6 +419,8 @@ static bool _update_streaming_parameters(videod_streaming_interface_t const *stm
419419 uint_fast32_t interval_ms = interval / 10000 ;
420420 TU_ASSERT (interval_ms );
421421 uint_fast32_t payload_size = (frame_size + interval_ms - 1 ) / interval_ms + 2 ;
422+ if (CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE < payload_size )
423+ payload_size = CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE ;
422424 param -> dwMaxPayloadTransferSize = payload_size ;
423425 return true;
424426}
@@ -478,10 +480,10 @@ static bool _negotiate_streaming_parameters(videod_streaming_interface_t const *
478480 break ;
479481 default : return false;
480482 }
481- param -> bFrameIndex = (uint8_t ) frmnum ;
483+ param -> bFrameIndex = (uint8_t )frmnum ;
482484 /* Set the parameters determined by the frame */
483485 tusb_desc_cs_video_frm_uncompressed_t const * frm = _find_desc_frame (tu_desc_next (fmt ), end , frmnum );
484- param -> dwMaxVideoFrameSize = (uint32_t ) (frm -> wWidth * frm -> wHeight * fmt -> bBitsPerPixel / 8 );
486+ param -> dwMaxVideoFrameSize = (uint32_t )(frm -> wWidth * frm -> wHeight * fmt -> bBitsPerPixel / 8 );
485487 return true;
486488 }
487489
@@ -536,11 +538,15 @@ static bool _negotiate_streaming_parameters(videod_streaming_interface_t const *
536538 param -> dwMaxPayloadTransferSize = 0 ;
537539 } else {
538540 uint_fast32_t frame_size = param -> dwMaxVideoFrameSize ;
541+ uint_fast32_t payload_size ;
539542 if (!interval_ms ) {
540- param -> dwMaxPayloadTransferSize = frame_size + 2 ;
543+ payload_size = frame_size + 2 ;
541544 } else {
542- param -> dwMaxPayloadTransferSize = (frame_size + interval_ms - 1 ) / interval_ms + 2 ;
545+ payload_size = (frame_size + interval_ms - 1 ) / interval_ms + 2 ;
543546 }
547+ if (CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE < payload_size )
548+ payload_size = CFG_TUD_VIDEO_STREAMING_EP_BUFSIZE ;
549+ param -> dwMaxPayloadTransferSize = payload_size ;
544550 }
545551 return true;
546552 }
0 commit comments