new loop filter functions for macroblock boundaries
authorYaowu Xu <yaowu@google.com>
Fri, 13 Jan 2012 22:37:17 +0000 (14:37 -0800)
committerYaowu Xu <yaowu@google.com>
Wed, 18 Jan 2012 17:51:29 +0000 (09:51 -0800)
commit5e7d7d3d95ecf2ce2b50ff4b8d5dbea0ae190e32
treec196cf857f0573969c82adfe1685281caebfc3b6
parent483b262bab7cae4387dae4d07d126fb9915cc6c8
new loop filter functions for macroblock boundaries

The commit adds a new set of loop filter for macroblock edge filtering.
The new loop filter has a mask to detect so-called "flat" regions. The
detection checks 5 pixels of each side of an edge. If the all pixels
have value with +/-1 from the edge pixel on the same side, the region
is treated as a "flat" region. For such case, a 7 tap filter is used
to change 3 pixel values on each side. The 7 taps are:
               [1, 1, 1, 2, 1, 1, 1]/8
The furthest away pixels used as input are +/-5 away from edge. For
non-flat region, we fall back to old filtering. It should be noted
here that the thresholds and filter taps may require more optimization
for best possible results.

Tests on a set of hd clips showed consistent gains:
http://www.corp.google.com/~yaowu/no_crawl/mblpf_hd.html
(avg psnr: .83% glb psnr: .77% ssim: .82%)

Tests on derf set also showed consistent gains:
http://www.corp.google.com/~yaowu/no_crawl/mblpf_derf.html
(avg psnr: .24% glb psnr: .22% ssim: .48%)

Change-Id: I0855b1ff48e79e1175c20b81967137e18b2af352
configure
vp8/common/loopfilter.c
vp8/common/loopfilter_filters.c