H264 Decoder speedup skip frame

H264 Decoder speedup skip frame

Hi all, I was looking to the documentation of the UMC::H264Decoder class (IPP version 7.0.7) and I found that there's a new function that I never notice in the old version

ChangeVideoDecodingSpeed

The H264 decoder it's sometime very heavyespeciallyon FULL HD or higher streams. So I found that function and I would use it for make decoding process waste less CPU time,especiallywhen I have to decode a lot of streams at the same time (like a lot of IP camera): this way I can have a more scalable system.

I think that function was coded for that reason. The problem is that I have done a test on my PC (a quite old Intel Q6600) and I found no difference using 0 or 7 as decoding speed: I notice only poor quality (as I expected) with speed of 7, but the CPU consumed by the decoding process is the same in 0 or 7. (CPU decoding load was for example 10% in all cases)

Did you do some test with that function at different speed? could you notice some difference? what king of CPU?

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Good day.

This function allows decoder to skip frames to speedup decoding, but only for non-reference frames. If there is many reference frames in the stream it may be not very effective.

I just run simple_player with this function on i5 M540 CPU and 1920x1080p_25.00_25mb_h264_cabac_180s stream:
0 - 60-70% CPU load
4 - 40-50% CPU load
7 - 25-35% CPU load - about half of frames were skipped in this mode.

In mode 7 it skips all non-reference frames, so I don't think it could be any faster.

ok thanks, I'll do some other tries. Probably the CPU/RAM I'm using it's quite out dated

Hello,

I would like to add that I just tried using this function and the most I could get was 2x speedup, even tho the CPU was at 50%. Can you please investigate this?

Thanks!

Anyone from Intel to comment on this?

I set ChangeVideoDecodingSpeed(7) and GetSkipInfo() returns 6 once the decoding process starts and then it increments the counter only by two for each frame it emits. So I get: 6, 8, 10, 12, etc. So the playback speed is around 2X instead of 8X. Can you give us some pointers as what to try to make this work? I should say that the CPU usage is around 50-60%, so there's still plenty of space for the decoder to do faster decoding.

I also noticed "dbPlaybackRate" in Params struct. What is it for?

Thanks in advance.

Leave a Comment

Please sign in to add a comment. Not a member? Join today