[XviD-devel] Re: qpel smearing/noise problem

Michael Niedermayer xvid-devel@xvid.org
Wed, 8 Jan 2003 10:07:40 +0100


Hi

On Wednesday 08 January 2003 00:23, Michael Militzer wrote:
[...]
> > > we need to replace our idct. the present mmx/xmm code (peter
> > > gubanov/mpeg2dec) produces errors, which become quite visibile in
> > > quarterpel mode. our current integer idct also produces qpels errors..
> > > which makes me curious about the sse2/ppc/ia64 stuff.
> > >
> > > anyway, i think we should switch to michael niedermayer/ffmpeg's
> > > simple_idct. it is fast and produces much less error.
> > > simple_idct_mmx is written in gas... so will anyone object to me
> > > commiting a nasm'd version?
> >
> > i retract my previous statement
> > it seems simple_idct is prone to h+v qpel interpolation error.
> > (where as the mpeg2dec idct was more prone to h qpel interpolation)
[...]

> I see the following ways to solve the problem:
> 1) use xvid for decoding xvid content (encoder+decoder share same idct = no
> problems)
do u have a C IDCT which has bit identical output to the MMX one? otherwise u 
would have to force C or MMX for qpel content, and the later would mean that 
the videos wouldnt be decodeable without artifacts on non x86 hardware

> 2) implement the 132 inter macroblocks limit and check if this helps
as the 132 check is done for co-located MBs there is some risk that due to 
motion the slightly messed up area isnt cleaned and accumulates more 
artifacts, but except this i would guess that a inter limit is the most 
reasonable solution for IDCT difference problems

> 3) reread the iso specs. I remember a sentence similar to this one: "idct
> has to meet IEEE1180 requirements with the following modifications: ..." -
> so our idct might be IEEE compliant but is maybe not compatible to the
> mpeg-4 standard...
hmm i doubt that, IIRC the extra rules are quite weak

> 4) try to agree on one idct implementation between all the various mpeg-4
> decoders (impossible, but at least xvid and ffmpeg could agree on one
> common idct, maybe divx also)
difficult because of different optimized IDCTs, (mlib, arm, ppc, ps2, alpha) 
IDCTs in ffmpeg, i doubt that their output is bit identical, and just 
disabling them and using the c IDCT would mean a speed loss for these 
platforms which would be unfair IMHO

btw, can someone share/(send me/upload) a qpel sample which decodes 
differently with different IDCTs? i havnt seen qpel-idct problems yet but i 
didnt really searched for them either

[...]

Michael