x264 is a free software library for encoding video streams into the H.264/MPEG-4 AVC format. It is released under the terms of the GNU General Public License.
x264 was originally developed by Laurent Aimar, who stopped development in 2004 after being hired by Ateme, Loren Merritt then took over development. Today, x264 is primarily developed by Loren Merritt, Jason Garrett-Glaser, Steven Walters, Anton Mitrofanov, Henrik Gramner and Daniel Kang.
x264 has some notable psychovisual enhancements which help to increase the perceived visual quality.
- Adaptive quantisation in two modes using VAQ. The second mode, a later addition, adapts the strength per frame in an attempt to improve the quality.
- Psychovisual Rate–distortion optimization which attempts to maintain a similar complexity. The complexity is measured using a combination of SSD and SATD.
- Macroblock-tree rate control which controls the quality by tracking how often parts of the frame are used for predicting future frames.
x264 is also capable of achieving astonishingly low latencies. As low as 10ms is claimed!
X264 is able to use Periodic Intra Refresh instead of keyframes keyframes which enables each frame to be capped to the same size enabling each slice to be immediately transmitted in a single UDP or TCP packet and on arrival immediately decoded.
Periodic Intra Refresh can replace key frames by using a column of intra blocks that move across the video from one side to the other, “refreshing” the image. In effect, instead of a big keyframe, the keyframe is “spread” over many frames. The video is still seekable: a special header, called the SEI Recovery Point, tells the decoder to “start here, decode X frames, and then start displaying the video” this hides the “refresh” effect from the user while the frame loads. Motion vectors are restricted so that blocks on one side of the refresh column don’t reference blocks on the other side, effectively creating a demarcation line in each frame.