Skip to content
This repository was archived by the owner on Aug 22, 2024. It is now read-only.
This repository was archived by the owner on Aug 22, 2024. It is now read-only.

Corrupted JPEG Stream #1354

@jmachowinski

Description

@jmachowinski

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 :

  1. Start k4aviewer
  2. Enable color camera
  3. Disable all other streams
  4. Choose any resolution / fps (720p / 5 FPS also fails)
  5. Start
  6. Log shows a bunch of MJPEG decode failed, dropping image messages
  7. 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 ?

Metadata

Metadata

Assignees

Labels

BugSomething isn't workingInvestigatingDev team needs to Investigate

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions