X264
{{short description|Encoder for the video coding format H.264}}
{{Lowercase title}}
{{Infobox software
| logo = X264.png
| logo size = 225px
| name = x264
| author = Laurent Aimar
| developer = x264 team
| programming language = C, Assembly
| operating_system =
| genre = Video encoder
| license = GPL-2.0-or-later{{cite web|url=https://code.videolan.org/videolan/x264/-/blob/master/x264.c|title=x264.c · master · VideoLAN / x264 · GitLab|publisher=VideoLAN|access-date=2021-07-05|quote=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.}} (a proprietary licensing scheme is also available){{cite web|url=https://www.videolan.org/developers/x264.html|title=x264, the best H.264/AVC encoder - VideoLAN|publisher=VideoLAN|access-date=2021-07-01|quote=In addition to being free to use under the GNU GPL, x264 is also available under a commercial license. Contact x264licensing@videolan.org for more details.}}
| website = {{URL|https://www.videolan.org/developers/x264.html}}
}}
x264 is a free and open-source software library and a command-line utility developed by VideoLAN for encoding video streams into the H.264/MPEG-4 AVC video coding format. It is released under the terms of the GNU General Public License.
History
x264 was originally developed by Laurent Aimar, who stopped development in 2004 after being hired by ATEME.{{cite web|url=https://www.techex.co.uk/codecs/x264|title=x264|access-date=2012-07-14|url-status=dead|archive-url=https://web.archive.org/web/20180731191941/https://techex.co.uk/codecs/x264|archive-date=2018-07-31}}{{Circular reference|date=April 2022}} Loren Merritt then took over development. Later, in 2008, Fiona Glaser joined the project. They both stopped contributing in 2014. Today, x264 is primarily developed by Anton Mitrofanov and Henrik Gramner.
Capabilities
x264 provides a command line interface as well as an API. The former is used by many graphical user interfaces, such as Staxrip and MeGUI. The latter is used by many other interfaces, such as HandBrake{{cite web|url=http://handbrake.fr/details.php|title=Handbrake Details|publisher=Handbrake Project|access-date=2011-03-11|url-status=dead|archive-url=https://web.archive.org/web/20110727011550/http://handbrake.fr/details.php|archive-date=2011-07-27}} and FFmpeg.{{cite web|url=https://ffmpeg.org/general.html#x264|title=FFmpeg General Documentation|publisher=FFmpeg Team|access-date=2021-07-01}}
x264 implements a large number of features compared to other H.264 encoders.
{{Further|H.264/MPEG-4 AVC#Software encoders}}
x264 contains some psychovisual enhancements which aim to increase the subjective video quality of the encoded video.
- 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.{{cite web|url=https://forum.doom9.org/showthread.php?t=132760|title=Variance AQ Megathread (AQ v0.48 update--defaults changed)|access-date=2021-07-01|date=2007-02-15|url-status=live|archive-url=https://web.archive.org/web/20210614195724/https://forum.doom9.org/showthread.php?t=132760|archive-date=2021-06-14}}
- Psychovisual rate–distortion optimization which attempts to maintain a similar complexity. The complexity is measured using a combination of sum-of-squares optimization (SSD) and sum of absolute transformed differences (SATD).{{cite web|url=https://forum.doom9.org/showthread.php?t=138293|title=Psy RDO: Official testing thread (version 0.6 out!)|access-date=2021-07-01|date=2008-05-31|url-status=live|archive-url=https://web.archive.org/web/20210506170948/https://forum.doom9.org/showthread.php?t=138293|archive-date=2021-05-06}}
- Macroblock-tree rate control, which controls the quality by tracking how often parts of the frame are used for predicting future frames.{{cite web|url=https://forum.doom9.org/showthread.php?t=148686|title=x264 "Macroblock Tree Ratecontrol" testing (committed)|access-date=2021-07-01|date=2009-08-03|url-status=live|archive-url=https://web.archive.org/web/20180529072218/https://forum.doom9.org/showthread.php?t=148686|archive-date=2018-05-29}}
x264 has won awards in the following codec comparisons:
- Third Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, 2006{{cite web|url=https://www.compression.ru/video/codec_comparison/mpeg-4_avc_h264_2006_en.html|title=Third Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison|access-date=2010-12-28}}
- Fourth Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, 2007{{cite web|url=https://www.compression.ru/video/codec_comparison/mpeg-4_avc_h264_2007_en.html|title=Fourth Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison|access-date=2010-12-28}}
- Fifth Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, 2009{{cite web|url=https://compression.ru/video/codec_comparison/mpeg-4_avc_h264_2009_en.html|title=Fifth MSU MPEG-4 AVC/H.264 Video Codec Comparison|access-date=2010-12-28}}
- Sixth Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, 2010{{cite web|url=https://compression.ru/video/codec_comparison/h264_2010|title=MSU Sixth MPEG-4 AVC/H.264 Video Codecs Comparison|access-date=2010-12-28}}
- Seventh Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, 2011{{cite web|url=https://compression.ru/video/codec_comparison/h264_2011|title=MSU Seventh MPEG-4 AVC/H.264 Video Codecs Comparison|access-date=2011-05-26}}
- Eighth Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, 2012{{cite web|url=https://compression.ru/video/codec_comparison/h264_2012|title=MSU Eighth MPEG-4 AVC/H.264 Video Codecs Comparison|access-date=2012-06-22}}
x264 has SIMD assembly code acceleration on x86, PowerPC (using AltiVec), and ARMv7 (using NEON) platforms.
x264 is able to use Periodic Intra Refresh instead of 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 keyframes by using a column of intra blocks that move across the video from one side to the other, thereby "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.
In April 2010, the x264 project announced full Blu-ray compliant video encoding capability making x264 the first free Blu-ray compliant software H.264 encoder.{{cite web |url=http://x264dev.multimedia.cx/archives/328|title=Announcing the first free software Blu-ray encoder|access-date=2010-12-28|date=2010-04-25|url-status=dead|archive-url=https://web.archive.org/web/20140221000717/http://x264dev.multimedia.cx:80/archives/328|archive-date=2014-02-21}} x264 has always had the ability to create video streams that are playable on most Blu-ray devices. However, it was up to the user to choose appropriate conversion settings. The default x264 preset chooses adequate compatibility for Blu-ray players but it is now possible to choose more complex conversion settings while simply maintaining compatibility by explicitly enabling Blu-ray compatibility mode. Blu-ray compatibility can be useful when striving for cross device compatibility, especially in the realm of high definition hardware media players.
x264 has been used to author commercial Blu-ray Disc titles released by Warner Bros.{{cite web|url=https://sites.google.com/site/x264bluray/x264-encoded-releases|archive-url=https://web.archive.org/web/20201023163903/https://sites.google.com/site/x264bluray/x264-encoded-releases|archive-date=2020-10-23|title=x264 encoded discs — Authoring a professional Blu-ray Disc with x264}}
Tandberg controversy
In November 2010, Fiona Glaser, an x264 developer, published information in which she claims that one of Tandberg Telecom's (a Cisco Systems subsidiary) patent applications from December 2008 contains a step-by-step description of an algorithm she committed to the x264 codebase around two months earlier.{{cite web|url=http://x264.nl/developers/Dark_Shikari/tandberg.html|title=Original Tandberg blog post|publisher=x264.nl|quote=So why the deja vu? Because this patent application was an exact, step-by-step description of the algorithm I came up with for decimate_score (and later coeff_level_run) in x264 in 2008!|author=Fiona Glaser|date=2010-11-25|access-date=2010-11-28|url-status=dead|archive-url=https://web.archive.org/web/20101129163947/http://x264.nl/developers/Dark_Shikari/tandberg.html|archive-date=2010-11-29}}{{cite web|url=http://x264dev.multimedia.cx/archives/589|title=Patent skullduggery: Tandberg rips off x264 algorithm|author=Fiona Glaser|date=2010-11-25|access-date=2010-11-28|url-status=dead|archive-url=https://web.archive.org/web/20101128061519/http://x264dev.multimedia.cx/archives/589|archive-date=2010-11-28}} This was relayed by media, which remarked that the company who filed the patent was following the x264 project IRC development channel and was known to the project developers,{{cite web |date=2010-11-26 |title=Tandberg coder accused of open source theft |url=https://usave.co.uk/2010/11/26/tandberg-accused-open-source-theft/ |url-status=dead |archive-url=https://web.archive.org/web/20210711143410/https://usave.co.uk/2010/11/26/tandberg-accused-open-source-theft/ |archive-date=2021-07-11 |access-date=2010-11-28 |website=usave.co.uk}}{{cite web|url=http://www.theinquirer.net/inquirer/news/1906887/tanberg-rips-source-project?WT.rss_f=News&WT.rss_a=Tanberg+rips+off+an+open+source+project|title=Tandberg rips off an open source project|publisher=The Inquirer|date=2010-11-26|quote=Tandberg hardly employed any subtlety. The company has one of its employers following the x264 project's IRC development channel and the guy who registered the patent is known to the X264 project.|access-date=2010-11-28|url-status=unfit|archive-url=https://web.archive.org/web/20101128115209/https://www.theinquirer.net/inquirer/news/1906887/tanberg-rips-source-project?WT.rss_f=News&WT.rss_a=Tanberg+rips+off+an+open+source+project|archive-date=2010-11-28}} leading to Tandberg claiming that they discovered the algorithm independently.{{cite web|url=https://www.zdnet.com/article/tandberg-illustrates-stupidity-of-software-patent-policy/|title=Tandberg illustrates stupidity of software patent policy|publisher=ZDNet|date=2010-11-27|access-date=2021-07-01}}
x264 frontends
{{div col|colwidth=30em}}
- Avidemux
- FFmpeg
- HandBrake
- OpenShot
- Gstreamer
- MediaCoder
- MeGUI{{cite web|url=https://forum.doom9.org/showthread.php?t=96032|title=MeGUI - x264/XviD/lavc/Snow encoder with MP4/MKV/AVI output & audio|date=2005-06-18|access-date=2010-12-28}}
- MEncoder{{cite web|url=http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html|title=Selecting Codecs and Container Formats|publisher=MPlayer|access-date=2011-03-11}}
- RipBot264{{cite web|url=https://www.videohelp.com/software/RipBot264|title=RipBot264 1.16.3 - VideoHelp.com Downloads|access-date=2010-12-28}}
- SUPER
- StaxRip{{cite web|url=https://github.com/staxrip/staxrip|title=staxrip/staxrip: 🎞 Video encoding GUI for Windows.|website=GitHub |access-date=2021-07-01}}
- Telestream Episode
- TMPGEnc Video Mastering Works 5{{cite web|url=https://tmpgenc.pegasys-inc.com/en/endproduct/tvmw5_new.html#x264|title=TMPGEnc Video Mastering Works 5: New Features|access-date=28 September 2012}}
- Harmonic Rhozet Workflow System{{cite web|url=http://www.harmonicinc.com/sites/default/files/KB-WFS-007_Xpressx264Compilation.pdf|title=Compiling x264 for ProMedia Xpress|publisher=Harmonic Inc.|date=2014|access-date=2014-09-22}}{{Dead link|date=March 2018|fix-attempted=yes}}
{{div col end}}
See also
References
{{Reflist}}
External links
- {{official website|https://www.videolan.org/developers/x264.html}}
{{Compression formats}}
{{Compression software}}
Category:C (programming language) libraries
Category:Free software primarily written in assembly language