Vero V Mjpeg hardware decoding crash

Hi there. The Vero V has been running great and it’s a great little machine. However, it seems that it’s unable to hardware decode mjpeg.

I’ve a motion camera that only streams in mjpeg format. To view the stream I’ve to manually to disable hardware acceleration in the kodi player settings. This is a bit cumbersome as I’ll need to turn it off to view the motion camera stream and then turn it back on to view regular hvec or av1 content.

Moreover, trying to play mjpeg with hardware acceleration crashes the video decoder. After this, no other video plays and the Vero needs rebooting.

From a hardware perspective the S905X4 SoC claims “MJPEG and JPEG unlimited pixel resolution decoding (ISO/IEC-10918)”.

Two options seem available: 1) have the Vero force software rendering on the mjpeg decoding or 2) enable the hardware decoding for mjpeg.

Assuming 1) is easier than 2) would this be possible to implement or this case so niche it’s not worth dedicating development time?

Many thanks in advance

Hi,

Do you have a Vero 4K / 4K +? It would be good to know if this is a new regression.

To be honest, coming across MJPEG material in the wild is quite rare and I wouldn’t be surprised if the AMLogic implementation in Kodi is just not complete.

Can you share a video sample that is problematic so I can check it here?

In the worst case scenario, we can use software decoding for this codec, but I’ll see what can be done on the hardware decode side of things

Sam

Hi Sam

Unfortunately I don’t have a previous version of the Vero so it’s unclear whether it’s a regression. I’m moving from a raspberry pi 3+ where the issue wasn’t present.

Please see a link to a page including an mjpeg sample file - http://jjc.freeshell.org/turning_pages.html.

I tested it and it behaves the same way as the motion mjpeg stream, i.e. video codec crashes when hardware accelerated requiring a reboot to have hardware acceleration for video again. Restarting Kodi plays media with software decoding only.
Thanks

Hi

Hopefully the issue is now addressed.

To test this update:

  1. Login via the command line
  2. Run the following command to add the staging repository:
    echo 'deb http://apt.osmc.tv bullseye-devel main' | sudo tee /etc/apt/sources.list.d/osmc-devel.list
  3. Run the following commands to update: sudo apt-get update && sudo apt-get dist-upgrade && reboot
  4. Your system should have have received the update.

Please see if the issue is resolved.

I also recommend you remove /etc/apt/sources.list.d/osmc-devel.list after updating.

This will deactivate the staging repository. You can do so with the following command:
sudo rm /etc/apt/sources.list.d/osmc-devel.list.

Please note that we will automatically disable this update channel after 14 days on your device in case you forget to do so to ensure that your system reverts to the stable update channel.

Hi Sam

Thanks for the update. After running it, the mjpeg stream doesn’t load and the image is all black. I can see the decoder information as am-mjpeg (HW) but no image is displayed. After stopping the stream, other videos don’t load as well, black image. The Kodi log shows an error

2023-10-04 02:44:02.708 T:4070 error : DVDVideoCodecAmlogic: Failed to open Amlogic Codec
2023-10-04 02:44:02.708 T:4070 error : AMLInsecureVideoCodec::addData: packet too big: 25915, probably corrupted

Were you able to view the sample mjpeg file? It only displays a black image for me.

Thanks

EDIT: ran the development branch update again to ensure it wasn’t user error. It updated again and I can now view the stream. It’s a software renderer but it works. Thanks!