Comparison of H.264 and VC-1
# Comparison of H.264 and VC-1

H.264 and VC-1 are popular video compression standards gaining use in the industry as of 2007.

## Overview

| | VC-1 | H.264 |
| - | - | - |
| Goals | Designed to offer very high image quality with excellent compression efficiency | Designed to meet a variety of industry needs with many profiles and levels, allowing for varying compression, quality and CPU usage levels, where the lowest level is for portable devices, designed with low CPU usage in mind, while the high levels are designed with very high quality and compression efficiency in mind |
| Example industry use | Supports 4:2:0 compression / color space | Supports studio archiving requirements with 4:4:4 color space; separate black and white (BW) video mode |
| Licensing costs | Similar | Similar |
| Documentation | Not free. Reference decoder, comes with external documentation. | ? AVC/H264 Licensing costs and terms from MPEG LA. Reference encoder and decoder free as well. Additionally, JVT & M4IF mailing lists are available where one may receive answers on AVC related questions. |

## Terminology

All sources for the below information are from the respective specifications listed in the overview section.

| Feature | VC-1 | H.264 |
| - | - | - |
| Partition sizes | 16×16 and 8×8 | 16×16, 16×8, 8×16, 8×8, 8×4, 4×8, and 4×4 |
| Integer transform | 8×8, 4×8, 8×4, and 4×4 | 4×4; 8×8 available in High Profile only |
| Frame | Used for progressive or interlaced content | Used for progressive or interlaced content |
| Macroblock sizes | 16×16 only | 16×16 only |
| Motion vector | Two dimensional vector offset from current position to reference frame | Two dimensional vector offset from current position to reference frame |
| Picture | A field or frame | A field or frame |
| Skipped macroblock | No data is encoded for macroblock | No data is encoded for macroblock |

## Features

| | VC-1 | H.264 |
| - | - | - |
| Bitstream formats | single bit stream | NAL and byte stream |
| Bitstream format | In advanced profile, each Bitstream Data Unit has its own header. Simple and Main profile provide neither sequence nor entry point headers. | SPS (sequence parameter set), PPS (picture parameters set), slice header, macroblock |
| Deblocking filter | In-loop filter and overlap transform | In-loop only |
| CABAC | No | Only supported in Main and higher profiles |
| Variable transform size | Yes | Only in High profile and above |
| Slice | Contiguous (integer number of macroblock rows only) | Contiguous or non-contiguous |
| Sub-pixel interpolation methods | bicubic, bilinear | 6-tap filter for half pixels; averaging for quarter pixels |
| Variable Length Coding | Yes | Yes |
| B frame used for predicting other pictures | Yes | Yes |
