Global motion compensation

From Wikipedia, the free encyclopedia

Global motion compensation (GMC) is a technique used in video compression to reduce the bitrate required to encode video. It is most commonly used in MPEG-4 ASP, such as with the DivX and Xvid codecs.

Contents

[edit] Operation

Global motion compensation describes the motion in a scene based on a single affine transform instruction. Reference frame is panned, rotated and zoomed in accordance to GMC "warp points" to create a prediction of how following frame looks like. Since this operation works on individual pixels (rather than blocks), it's capable of creating predictions that aren't possible using regular block-based approach.

Each macroblock in such frame can be compensated using global motion (no further motion information is then signalled) or, alternatively, local motion (as if GMC was off). This choice, while costing an additional bit per macroblock, can improve prediction quality and therefore reduce residual.

Because the transforms used in global motion compensation are only added to the encoding stream when used, they do not have a constant bitrate overhead. A predicted frame which uses GMC is called an S-frame ("sprite" frame) while predicted frame encoded without GMC is called a P-frame.

[edit] Implementations

DivX has only one GMC "warp point" specified. This enables easier hardware implementation, but limits the global transform to panning operation only. Since panning can be described using blocks, this implementation rarely improves video quality.

Xvid allows up to 3 warp points, and as a result, has less hardware support. The DivX player, however, does support 3 warp point GMC, and thus will play GMC Xvid encoded streams.

[edit] Hardware compatibility

Due to the extra decoding CPU cost of global motion compensation, some hardware players do not support global motion compensation. One example is the Creative Zen Vision M, which supports Xvid and DivX encoded video, but only with GMC disabled.

[edit] See also

Languages