[FFmpeg-soc] [soc]: r1043 - rv40/rv40.c

Loren Merritt lorenm at u.washington.edu
Tue Aug 21 09:18:46 CEST 2007


On Mon, 20 Aug 2007, Kostya wrote:
> On Mon, Aug 20, 2007 at 02:46:54PM +0200, Michael Niedermayer wrote:
>
>> your code looks odd
>> that what you call RV40_MB_B_INTERP looks like DIRECT, that what you call
>> direct looks like bidirectional
>>
>> direct uses the motion vectors from another frame (not the surrounding blocks)
>> (that is in early h264 and mpeg4 later h264 can use the surrounding blocks
>> too IIRC)
>
> Well, here's what I know:
> Both interpolated and direct(or bidirectional) are known to me since VC-1,
> interpolated block just have zero motion vectors and acts as skip type block.

direct != bidirectional

> Motion vectors on B-frames are predicted only from other vectors on that frame
> (and interpolated counts as no vectors). I've verified this on real data and
> this scheme is correct.
>
> During motion compensation interpolated blocks (not sure about bidirectional)
> reuse vectors from previous/next frame and even may perform 8x8 compensation
> if previous frame has such partitioning. But they add vectors only for
> compensation, actual value is not modified. I will try to implement this soon.

In h264, the terms are:
predicted: block contains 1 coded mv
bidirectionally predicted: block contains 2 coded mvs
direct: block contains no coded mvs, instead 1 or 2 mvs are derived from 
neighboring blocks (can be spatial or temporal neighbors).
skip: a direct block that also has no nonzero dct coefficients.

--Loren Merritt



More information about the FFmpeg-soc mailing list