Hello friends

After my Pi 2 broke recently I decided to get the new Pi 3 Model B+. After a few modifications OpenADK is now running on it really well.

So I thought I would run some video performance tests to see how well it can play back 1080p material. As a reference I also looked tried libreelec. I guess this should show 'what is possible' on the device.

First of all, blu-ray style 1080p is working really well in adk! :-) With the license keys for VC-1 and MPEG2 purchased and installed, all the relevant codecs, H264, VC-1 and MPEG2 play smoothly with negligible CPU load.

Kodi shows what codec is being used for decoding. So here is what it is showing in adk (with the license keys installed!):

H264: mmal-mvc (HW)
VC-1: mmal-vc1 (HW)
MPEG2: mmal-mpeg2 (HW)

Not that in libreelec, the same codecs are shown with the exception of H264, where 'mmal-h264 (HW) is shown. Playback is smooth for all cases.

Let's look at H264 a little more closely. This site offers test files with various bitrates.

It turns out the files with bitrates up to 70 mbps play smoothly on adk. At 80 mbps it begins to stutter, anything higher is hopeless. CPU load stays low though, so this might be related to memory bandwidth.
Libreelec can play even the 80 mbps smoothly, but beyond that it gets very stuttery. Maybe the difference between the two is due to a different codec being used. However I don't think this difference is relevant in practise, as most 1080p material has much lower bitrates. Maybe it gets some more importance with 4k material (which I didn't test).

So my conclusion for H264 is that the Pi3B+ plays it really, really well both on adk and on libreelec.

Now what about H265?

Unfortunately the Raspberry Pi does not support hardware acceleration for decoding H265. From googling and reading some forum posts I learned that it support for using some neon features for H265 decoding is apparently implemented in newer versions of openelec and libreelec, though I could not find the details.

Luckily the site linked above also offers the test files in H265, so I tested these as well.

On adk none of the H265 files play anywhere near smooth (revision 44cbb78fa that includes ffmpeg libx265 support). The decoder shown by kodi is:
ff-hevc-mmal (HW)
which can't be right, because hardware decoding is not supported. The CPU load is at 100% constantly on one core and not much on the others.
So at the time of writing, H265 playback is not possible in adk-kodi.

How about libreelec (8.2.4)?

On libreelec both the 3 and 5 mbps files play smoothly! The latter with significant CPU load (40-70%) on all cores. The 10 mbps sample is not smooth anymore, with 90%+ load on all cores.
The decoder shown is:
ff-hevc-mmal (SW) which makes sense.

So bottom line it seems possible to play moderate-bitrate H265 material in the B+.

From what I read online the Pi3B also works relatively well when overclocked, but is likely to run into thermal problems then, while the B+ works well and has much less thermal problems (having a higher clock than the 3B from stock). I don't now if this information is trustworthy, and I did not look at temperature at all (but I do have a heat sink on the CPU).

What's next?

Obviously it would be great to have kodi on adk use the decoder as does libreelec. Does anybody have an idea how to do this/where to look?

Other test results, e.g. from a Pi3B or a Pi2 would also be interesting, and any ideas or comments are highly welcome! :-)

Hope to have inspired some folks!

All the best

Oliver

P.S.

Please note I did not (yet) do any long term playback testing or look at dropped frames etc. What I did was rather a first test using the files mentioned and a few more judging the playback quality by eye.