In Convention Block Motion Compensation (CBMC), you have a set of MVs, and each is associated with a block of pixels. You compensate the whole block with that one MV, and there is no relation between adjacent blocks. Equivalently, CBMC predicts each pixel based on only the nearest MV. In Overlapped Block Motion Compensation (OBMC), the blocks overlap (hence the name). You compensate the whole block, and then take a weighted average of the 4 overlapping blocks at any point. Equivalently, each pixel is predicted based on each of the 4 nearest MVs, and then those predictions are weighted based on the distance to the respective MVs. The 3rd option is MeshMC: Take a weighted average of the MVs, and then do one compensation based on that new MV. While this is fewer mathematical operations than OBMC, it's harder to SIMD. And empirically it's not as good as OBMC. But Mesh and OBMC can be combined, for an extra ~1-5% compression at the cost of adding together both their decoder complexities. mpeg4's GMC is a special case of Mesh with only 3 motion vectors for the whole frame. CBMC is used in mpeg*, h26*, vp*, wmv*, and probably any codec not on the list. OBMC is used in Snow, Dirac, h263+. Mesh is used in no codec that I know of (except as GMC). I have a patch to add it to Snow, but it doesn't help much.