RV: present state

If you are interested in what’s going with my RV decoder from GSoC 2007 then here are your answers.

What works:

  • RV30 decoding mostly works
  • RV40 decoding mostly works
  • Pictures are quite recognizable

What needs to be resolved:

  • RV40 loop filter
  • RV30 loop filter (a bit easier)
  • RV30 motion vectors in B-frames (sometimes they are a bit jumpy)
  • RV30 chroma problems (colours are always moving to the upper left corner of the frame – incorrect rounding?)
  • RV30 slice uniting problem (some splitted slices should be united by decoder – at least I know how and when to do this)

If you want to help with loop filter then loop at
loop filter work scheme (SVG, ~128Kb) and give your proposals on how it works.
Legend (macroblock is 4×4 subblocks, no borders as they will ruin this scheme):

  • numbers at the top and left eddge – macroblock numbers
  • black lines – subblock edges where loop filtering took place
  • hex number at the top left corner of macroblock – coded block pattern, it’s red for intra types macroblocks and for P macroblocks with DC coeffs coded separately
  • blue square – coded subblock

Any suggestions (and pointers to the information about H.264 loop filtering explained clearer than in standard) are welcome.

I’d like to finish it before starting my work on AAC encoder…

BTW, you can use ffmpeg-rv.patch from soc/rv40 repository to enable RV30/40 decoding in ffmpeg.

4 Responses to “RV: present state”

  1. Ed says:

    Dear Kostya

    It is so great to see you have a blog. Checking Mailing List everyday on FFmpeg for your news is getting very tiring.

    People has mentioned donation as fuel to speed up the project also to help you buy a better computer.

    You have previously rejected such idea, I am wondering if you accept such donation again?

    Having Proper RV40 decoder would be a BIG step in getting rid of RealPlayer.

  2. Kostya says:

    There are three components of successfully completing RV project – time, equipment and will. I want to complete it, I’ve got x86 where I can obtain debug data (used it it to fix B-frames motion compensation). So it leaves the last component – time. Maybe in a few weeks I will have dealt with formal requirements at the university and will have enough time to work on GSoC projects.
    Stay tuned 😉

  3. Elohe says:

    In this page don’t have much about AVC: http://www.vcodex.com/h264.html but for me they put the “loop filter” base more clear to me and then help me to understand the standard.

    And about the “loop filter work scheme” I only saw it a little but the 4 less significative digits in the coded macroblock numbers are a direct reference to the subblock.

  4. Elohe says:

    In this page don’t have much about AVC: http://www.vcodex.com/h264.html but for me they put the “loop filter” base more clear to me and then help me to understand the standard.

    And about the “loop filter work scheme” I only saw it a little but the 4 less significative digits in the coded macroblock numbers are a direct reference to the subblock. And the decision on boundaries can be similar to the one in h.264.