[FFmpeg-devel] VP8 decoder optimization status

Jason Garrett-Glaser darkshikari
Tue Jun 29 04:09:04 CEST 2010


Here's a rough guide to what's done and what needs to be done before
ffmpeg's VP8 decoder is as fast as a politician running away from an
ethics committee.

x86 asm:

Done:
6-tap motion compensation
bilinear motion compensation
dc-only iDCT
luma dc WHT
i16x16 intra pred
i4x4 intra pred (V, DC, TM)

TODO:
Normal loopfilter
Simple loopfilter
regular iDCT (patch by Ronald is on ML)
i4x4 intra pred (DDL, DDR, VR, HD, VL, HU)

ARM/PPC asm: nothing done yet

C:

Fully convert vp5/6/7/8 arithmetic coder to bytestream: eliminate the
looped renormalization.
Port all of x264's and ffh264's optimizations once the above is done
(since they'll now be relevant).
Convert vp5/6/7/8 arithmetic coder to use a larger cache size (maybe
16-bit or 32-bit?) for fewer bytestream reads.
Optimize decode_block_coeffs (it can surely be made faster).
Improve edge emulation handling (we currently have the worst of both
worlds -- we require padding on the edges, yet we use the slow
ff_emulated_edge_mc -- we should pick one method or the other).
Optimize cache handling (mvs and nnz).
Optimize MV prediction.
Probably lots of other stuff I haven't thought of, feel free to
contribute ideas.

The current top priority for x86 speed is by far and away the Normal
loopfilter -- it's something like 60-70%+ of the total time, since
we've SIMD-optimized nearly everything else of note.

Dark Shikari



More information about the ffmpeg-devel mailing list