summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-10-06 16:24:08 +0800
committersakumisu <[email protected]>2022-10-06 16:24:08 +0800
commit4a0f1826446c5e12827d0b92a01adb34950262a9 (patch)
tree71932e961df4a857ad22fa37dd955fb26f0a0a36
parent2fd13b362ebc4844954aaed17c7760f05620b594 (diff)
do not reset bufoffset when len=0 or len=buf[0]
-rw-r--r--class/video/usbh_video.c42
1 files changed, 16 insertions, 26 deletions
diff --git a/class/video/usbh_video.c b/class/video/usbh_video.c
index 14fd3786..a8c1cd23 100644
--- a/class/video/usbh_video.c
+++ b/class/video/usbh_video.c
@@ -422,23 +422,18 @@ void usbh_videostreaming_parse_mjpeg(struct usbh_urb *urb, struct usbh_videostre
uint8_t errorBit : 1U;
uint8_t endOfHeader : 1U;
*/
- if (iso_packet[i].actual_length == 0) { /* skip */
- stream->bufoffset = 0;
+ if (iso_packet[i].actual_length == 0) { /* skip no data */
continue;
}
- if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) {
- stream->bufoffset = 0;
- continue;
- }
- if ((iso_packet[i].transfer_buffer[0] > 12) || (iso_packet[i].transfer_buffer[0] == 0)) {
- stream->bufoffset = 0;
- continue;
+ if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) { /* do not be illegal */
+ while (1) {
+ }
}
- if (iso_packet[i].transfer_buffer[1] & (1 << 6)) {
- stream->bufoffset = 0;
- continue;
+ if ((iso_packet[i].transfer_buffer[0] > 12) || (iso_packet[i].transfer_buffer[0] == 0)) { /* do not be illegal */
+ while (1) {
+ }
}
- if (iso_packet[i].actual_length == iso_packet[i].transfer_buffer[0]) { /* skip frame header */
+ if (iso_packet[i].transfer_buffer[1] & (1 << 6)) { /* error bit, re-receive */
stream->bufoffset = 0;
continue;
}
@@ -491,23 +486,18 @@ void usbh_videostreaming_parse_yuyv2rgb565(struct usbh_urb *urb, struct usbh_vid
uint8_t endOfHeader : 1U;
*/
- if (iso_packet[i].actual_length == 0) { /* skip */
- stream->bufoffset = 0;
+ if (iso_packet[i].actual_length == 0) { /* skip no data */
continue;
}
- if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) {
- stream->bufoffset = 0;
- continue;
- }
- if ((iso_packet[i].transfer_buffer[0] > 12) || (iso_packet[i].transfer_buffer[0] == 0)) {
- stream->bufoffset = 0;
- continue;
+ if (iso_packet[i].actual_length < iso_packet[i].transfer_buffer[0]) { /* do not be illegal */
+ while (1) {
+ }
}
- if (iso_packet[i].transfer_buffer[1] & (1 << 6)) {
- stream->bufoffset = 0;
- continue;
+ if ((iso_packet[i].transfer_buffer[0] > 12) || (iso_packet[i].transfer_buffer[0] == 0)) { /* do not be illegal */
+ while (1) {
+ }
}
- if (iso_packet[i].actual_length == iso_packet[i].transfer_buffer[0]) { /* skip frame header */
+ if (iso_packet[i].transfer_buffer[1] & (1 << 6)) { /* error bit, re-receive */
stream->bufoffset = 0;
continue;
}