-
Notifications
You must be signed in to change notification settings - Fork 630
Corrupted JPEG Stream #1354
Description
Describe the bug
We are experiencing a rather strange bug with the color stream of the kinect.
On an AMD EPYC 7302 machine, the color stream is corrupted.
This is reproducible using the k4aviewer and the ros wrapper.
I patched in a better debug message in case the MJPEG decoding fails and
it gave me this:
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Not a JPEG file: starts with 0xfe 0x77
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Not a JPEG file: starts with 0xf8 0x54
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Corrupt JPEG data: premature end of data segment
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Corrupt JPEG data: 1283 extraneous bytes before marker 0xd3
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Corrupt JPEG data: 161 extraneous bytes before marker 0xd4
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Not a JPEG file: starts with 0xfb 0xbf
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Corrupt JPEG data: 9005 extraneous bytes before marker 0xd6
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Corrupt JPEG data: found marker 0xd5 instead of RST3
DecodeMJPEGtoBGRA32(). MJPEG decode failed, dropping image: Corrupt JPEG data: 841 extraneous bytes before marker 0xd6
This then leads to the error :
replace_sample(). capturesync_drop, releasing capture early due to full queue TS: 57300211 type:Depth
as there is no color image available for the depth measurement.
Note usbfs_memory_mb is set to 1024
To Reproduce
On an AMD EPYC 7302 :
- Start k4aviewer
- Enable color camera
- Disable all other streams
- Choose any resolution / fps (720p / 5 FPS also fails)
- Start
- Log shows a bunch of MJPEG decode failed, dropping image messages
- After a few seconds a popup 'Camera failure : timed out!' appears
Desktop
- OS with Version: Ubuntu 18.04
- Kernel : 5.4.0-47-generic
- SDK Version: 1.4.1
- Firmware version: 1.6.110079014
- GPU : NVidia 2070 Super
- CPU AMD EPIC 7302
- Mainboard : Supermicro Mainboard H11DSi-NT
Additional context
Note, on our normal desktop machines everything is working fine.
We also tried using an external PCI-E USB Host Controller (DeLock 90492)
but this did not work either. The controller also gave us a bunch of wired
kernel warnings, so it might be a driver issue with this card.
Is there any PCI-E USB Host Controller with at least two ports, that is known
to work under linux ?
Grabbing only the depth stream seems to work. Out of curiosity, is there some
sort of CRC on the depth data, to detect corruption ?