[FFmpeg-devel] Loop filter questions

Kostya kostya.shishkov
Sun Jan 6 13:21:10 CET 2008


Here's what I was able to find out about loop filters employed in RV30/40.

RV30 loop filter:
 if subblocks on both sides of edge are coded, then
  deblock them with LIM=some parameter derived from top/left subblock
  of this pair
 I suspect it uses this table and quantizer to set strength:
   0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5
   0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4
   0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5
   0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6
   0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7
   0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8
   0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9

 filter is weak loop filter taken from some H.264 draft:
  t = ((SRC[-2] - SRC[1]) - (SRC[-1] - SRC[0])*4) >> 3;
  d = clip(t, -LIM, LIM);
  SRC[-1] = SRC[-1] + d;
  SRC[ 0] = SRC[ 0] - d;


RV40 loop filter:
 this filter uses clip table, alpha and beta parameter tables from
 early H.264 draft (A003r1),
 loop filter is applied to the edges of coded blocks and depending
 on where neighbouring block is coded or not, some limit parameters
 are chosen (ClipTable[0][quant], ClipTable[1][quant] or ClipTable[2][quant])

filter code is in http://svn.mplayerhq.hu/soc/rv40/rv40.c?revision=1487&view=markup
 it's adaptive and depending of pixel difference will use either
 weak filtering similar to one employed in RV30, or stronger one, for up to
 4 border pixels with coefficients [25 26 26 26 25] or [25 26 51 26]


Can somebody point me to something similar? It's hard to me to search all
H.264 drafts to find out where those things are proposed.  




More information about the ffmpeg-devel mailing list