[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