[XviD-devel] PlainC optmization

Michael Militzer michael at xvid.org
Wed Mar 5 22:58:15 CET 2003


Hi,

Quoting Christoph Lampert <chl at math.uni-bonn.de>:

[...]

> Hm, where is interpolate8x8 used btw.? 
> 
> I found it at  image_interpolate. Are we kidding? Do we really

It's not just there. It's used in image_interpolate to interpolate a full image 
plane. Then we do chroma interpolation (block based) in motion compensation and 
again block based interpolation in decoder (both luma and chroma).

> interpolate a 720x576 image by calling interpolate_8x8() almost 10000 
> times? And that again three times, for H/V/HV? 

yes, we once had image based interpolation functions (over one year back) but 
it was not really faster than 10000 times calling interpolate8x8. Maybe image 
based interpolation might be a bit faster (if done properly), however 
simplicity is also an issue in writing software. Having just the interpolate8x8 
functions for everything makes maintaining the code a lot simpler: there were a 
lot of changes in interpolation asm code during the past year and maintaining 
two code bases can be a source for errors...

Ah, and I remember that I have also a special version of the interpolate8x8_hv 
asm code at home that calculates both h and hv in one turn. So in result you 
only have to call interpolate8x8_hv and interpolate8x8_v then to interpolate 
all 3 planes. Unfortunately the speed-up isn't as big as I expected (that's 
also the reason why I didn't commit the stuff), because we're beginning to run 
out of registers...

> Then it's also in ChromaSAD (could of course be replaced/remove if we
> do image based chroma as it's already default for bframes). 

image interpolated chroma is slower. At least as long as no chroma ME (or b-
frames) is involved...

bye,
Michael

PS: Maybe you should create a small todo list for me with all the things I 
promised over the past days: I won't commit anything before my exams are over, 
and I'm sure I will have forgotten what I wanted to do until then ;-))


More information about the XviD-devel mailing list