Hello,
If I compare two devices of the same price range ( and roughly the same decoder specs regarding max fps/resolution ) I notice a big difference between the performance of Snapdragon devices and your competitor (Exynos devices)
As an example, decoding the same h264 stream on a Snapdragon device takes ~92ms while the competitor decodes it in less than 5ms
E.g. if latency is the important metric for you, your competitor is 87ms quicker.
I would like to know if you can give me any information on how to configure a MediaCodec instance properly for qualcom / snapdragon devices, to bring the performance on your chipsets on-par with Exynos devices.
As an example, for the specific h264 stream I am dealing with,I found out that the decoding latency on Snapdragon devices can be reduced slighlty by adding the "VUI" parameter to he bitstream SPS with the value "max_dec_frame_buffering" set to 1. But I cannot set it to the required "0" aka "no decoder frame buffering".
Note that the exynos decoder shows that this specific stream can be decoded in less than 5ms (e.g. without decoder frame buffering), but I just cannot get the snapdragon decoder to do the same.
If you want to take a look at the issue yourself, I can show it to you using my test app:
https://github.com/Consti10/LiveVideo10ms/tree/master/VideoCore
Best regards,
Constantin
How to configure MediaCodec for decoding with low latency
Posted: Sun, 2021-01-24 09:39
Here you can find more / better formatted info:
https://github.com/google/ExoPlayer/issues/8514#issuecomment-769726637
Thank you for this solution!
Well, my workaround is an improvement but it is not really a solution, since the snapdragon still buffers frames in this case, but less frames compared to without.
Ideally it would buffer 0 frames, but so far only exynos can do that with streams for poc_type=0.