Log in

View Full Version : how to improve the decoding speed of xvid?


drowsyboy
26th April 2006, 05:21
hello,all! I am newbie to xvid.
Now I am working on a project that we use xvid library to decode xvid avi. But the decoding speed is too slow in my system. I want to ask whether there is any way to improve the speed of decoding?
any advice will be helpful!

Manao
26th April 2006, 08:11
Check that asm functions are indeed used ( what is your system, btw ? ). If yes, then use ffmpeg instead.

drowsyboy
26th April 2006, 09:01
hi~
Thank you for reply. I have tried "-asm", but it seems that doesn't work........
My system is arm9-linux. I want to develop a decoder using xvid library in my embedding system, so that I can watch some movie:)

Thank you again.

sysKin
26th April 2006, 09:39
Yeah XviD has no ARM assembler at all. There was once some work done to make ARM decoding a bit better. Check http://www.lonelycatgames.com/index.php?chapter=smartmovie and source code under "xvid" part.

I don't know how much these help, because as far as I know ARM doesn't have SIMD instructions (someone correct me if this is wrong) and video decoding really needs these.

Maybe libav has ARM assembler? Or maybe its C implementation is faster? Check it out and compare.

drowsyboy
27th April 2006, 02:30
I have checked the wed that you give. It only introduce some products......
It is little useful to my work. Do you think I need to rewrite some part of Decode Lib with ARM assemble language? or any other solutions?

:(

foxyshadis
27th April 2006, 03:17
You can try gcc 4.1 with its most agressive optimization and vectorizing turned on, if it works it might get it watchable, perhaps at a reduced size (it's a cell phone anyway, right?). I doubt PP will be possible though.

Manao
27th April 2006, 08:02
Libavcodec's c implementation is faster and is likely to already have some ARM code ( not sure though ). I wouldn't expect gcc to vectorize any loops for ARM.

akupenguin
27th April 2006, 10:40
Yes, lavc has arm simd for hpel motion compensation (not qpel) and idct.