[XviD-devel] Anime and medium noise material prefilter

Christoph Lampert xvid-devel@xvid.org
Sun, 18 Aug 2002 19:49:43 +0200 (CEST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---595374472-602488645-1029692983=:15844
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,

I was testing with a prefilter mode that tries to reduce the encoding of
pure noise in otherwise non-changing material blocks. It's similar to the 
"zero frames" discussed earlier, but it works on 8x8 block level and uses 
DCT to detect identical blocks.

My first version is the attached modified  encoder.c

Actually the changes are just a couple of lines, marked by 

/* Here the modified bit starts */
...
/* Here the modified bit ends */

but I was too lazy to create a real patch and most Windows users might 
not know what to do with it, anyway. 

You have to compile with 

_DEBUG_PSNR
and
_SOURCESKIP

otherwise nothing will happen.  So please test, in particular with
Cartoon/Anime etc. or with "real life" material that has static
background, but a little bit of noise. 

Yes, it's slower, and don't expect PSNR to get better, this is very
unlikely. 
But the _visual impression_ should be better... whatever that means. 

Have fun and tell me the results,

Christoph

-- 
Christoph H. Lampert chl@math,uni-bonn,de | Diese Signature wurde maschi-     
Beringstr. 6, Raum 14 Tel. (0228) 73-2948 | nell erstellt und bedarf
Sprechstunden: keine, aber meistens da    | keiner Unterschrift. AZ 27B-6 

---595374472-602488645-1029692983=:15844
Content-Type: APPLICATION/zip; name="encoder-sourceskip.zip"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.21.0208181949430.15844@lieb.math.uni-bonn.de>
Content-Description: 
Content-Disposition: attachment; filename="encoder-sourceskip.zip"

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
---595374472-602488645-1029692983=:15844--