Jump to content

Comparison of video codecs: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Tags: Reverted Visual edit
m External links: add WP:TEMPLATECAT to remove from template; genfixes
 
(36 intermediate revisions by 22 users not shown)
Line 1: Line 1:
{{short description|None}}

Α [[video codec]] is [[software]] or a device that provides [[encoding]] and [[Code|decoding]] for [[digital video]], and which may or may not include the use of [[video compression]] and/or decompression. Most codecs are typically implementations of [[video coding format]]s.
Α [[video codec]] is [[software]] or a device that provides [[encoding]] and [[Code|decoding]] for [[digital video]], and which may or may not include the use of [[video compression]] and/or decompression. Most codecs are typically implementations of [[video coding format]]s.


Line 4: Line 6:


== Introduction to comparison ==
== Introduction to comparison ==
The following characteristics are compared in video codecs comparisons:
The following characteristics are compared in [[video codec]]s comparisons:


* '''Video quality per bitrate''' (or range of [[bitrate]]s). Commonly [[video quality]] is considered the main characteristic of codec comparisons. Video quality comparisons can be ''subjective'' or ''objective''.
* '''Video quality per bitrate''' (or range of [[bitrate]]s). Commonly [[video quality]] is considered the main characteristic of codec comparisons. Video quality comparisons can be ''[[Subjective video quality|subjective]]'' or ''objective''.
* '''Performance characteristics''' such as compression/decompression speed, supported profiles/options, supported resolutions, supported rate control strategies, etc.
* '''Performance characteristics''' such as compression/decompression speed, supported profiles/options, supported resolutions, supported rate control strategies, etc.
* '''General software characteristics'''{{snd}} for example:
* '''General software characteristics'''{{snd}} for example:
Line 20: Line 22:
The quality the codec can achieve is heavily based on the compression format the codec uses. A codec is not a format, and there may be multiple codecs that implement the same compression specification{{snd}} for example, MPEG-1 codecs typically do not achieve quality/size ratio comparable to codecs that implement the more modern H.264 specification. But quality/size ratio of output produced by different implementations of the same specification can also vary.
The quality the codec can achieve is heavily based on the compression format the codec uses. A codec is not a format, and there may be multiple codecs that implement the same compression specification{{snd}} for example, MPEG-1 codecs typically do not achieve quality/size ratio comparable to codecs that implement the more modern H.264 specification. But quality/size ratio of output produced by different implementations of the same specification can also vary.


Each compression specification defines various mechanisms by which raw video (in essence, a sequence of full-resolution uncompressed digital images) can be reduced in size, from simple bit compression (like [[Lempel-Ziv-Welch]]) to psycho-visual and motion summarization, and how the output is stored as a bit stream. So long as the encoder component of the codec adheres to the specification it can choose any combination of these methods to apply different parts of the content. The decoder component of a codec that also conforms to the specification recognises each of the mechanisms used, and thus interprets the compressed stream to render it back into raw video for display (although this will not be identical to the raw video input unless the compression was lossless). Each encoder implements the specification according to its own algorithms and parameters, which means that the compressed output of different codecs will vary, resulting in variations in quality and efficiency between them.
Each compression specification defines various mechanisms by which raw video (in essence, a sequence of full-resolution uncompressed digital images) can be reduced in size, from simple bit compression (like [[Lempel-Ziv-Welch]]) to psycho-visual and motion summarization, and how the output is stored as a bit stream. So long as the encoder component of the codec adheres to the specification, it can choose any combination of these methods to apply different parts of the content. The decoder component of a codec that also conforms to the specification recognizes each of the mechanisms used, and thus interprets the compressed stream to render it back into raw video for display (although this will not be identical to the raw video input unless the compression was lossless). Each encoder implements the specification according to its own algorithms and parameters, which means that the compressed output of different codecs will vary, resulting in variations in quality and efficiency between them.


Prior to comparing codec video-quality, it is important to understand that every codec can give a varying degree of quality for a given set of frames within a video sequence. Numerous factors play a role in this variability. First, all codecs have a [[bitrate control]] mechanism that is responsible for determining the bitrate and quality on a per-frame basis. A difference between [[variable bitrate]] (VBR) and [[constant bitrate]] (CBR) creates a trade-off between a consistent quality over all frames, on the one hand, and a more constant bitrate, which is required for some applications, on the other. Second, some codecs differentiate between different types of frames, such as [[key frame]]s and non-key frames, differing in their importance to overall visual quality and the extent to which they can be compressed. Third, quality depends on prefiltrations, which are included on all present-day codecs. Other factors may also come into play.
Prior to comparing codec video-quality, it is important to understand that every codec can give a varying degree of quality for a given set of frames within a video sequence. Numerous factors play a role in this variability. First, all codecs have a [[bitrate control]] mechanism that is responsible for determining the bitrate and quality on a per-frame basis. A difference between [[variable bitrate]] (VBR) and [[constant bitrate]] (CBR) creates a trade-off between a consistent quality over all frames, on the one hand, and a more constant bitrate, which is required for some applications, on the other. Second, some codecs differentiate between different types of frames, such as [[key frame]]s and non-key frames, differing in their importance to overall visual quality and the extent to which they can be compressed. Third, quality depends on prefiltrations, which are included on all present-day codecs. Other factors may also come into play.


For a sufficiently long clip, it is possible to select sequences that have suffered little from the compression, and sequences that have suffered heavily, especially if [[Constant bitrate|CBR]] has been used, whereby the quality between frames can vary highly due to different amounts of compression needed to achieve a constant bitrate. So, in a given long clip, such as a full-length movie, any two codecs may perform quite differently on a particular sequence from the clip, while the codecs may be approximately equal (or the situation reversed) in quality over a wider sequence of frames. Press-releases and amateur forums may sometimes select sequences known to favor a particular codec or style of rate-control in reviews.
For a sufficiently long clip, it is possible to select sequences that have suffered little from the compression, and sequences that have suffered heavily, especially if [[Constant bitrate|CBR]] has been used, whereby the quality between frames can vary highly due to different amounts of compression needed to achieve a constant bitrate. So, in a given long clip, such as a full-length movie, any two codecs may perform quite differently on a particular sequence from the clip, while the codecs may be approximately equal (or the situation reversed) in quality over a wider sequence of frames. Press-releases and amateur forums may sometimes select sequences known to favor a particular codec or style of rate-control in reviews.

In the case of 3D video, the codec H.264-MPEG4/MVC is the one that give better result. This codec produces very clear images with no degradation. The use of MVC makes the video more robust against more aggressive settings of codding parameters.<ref>{{Cite journal|last=Sánchez|first=Almudena|title=Performance assessment of three-dimensional video codecs in mobile terminals|url=https://www.sciencedirect.com/science/article/pii/S0140366417312689?via%3Dihub|journal=Science Direct}}</ref>


=== Objective video quality ===
=== Objective video quality ===
{{Main|Video quality}}
{{Main|Video quality}}


Objective video evaluation techniques are mathematical models that seek to predict human judgments of picture quality, as often exemplified by the results of subjective quality assessment experiments. They are based on criteria and metrics that can be measured objectively and automatically evaluated by a computer program. Objective methods are classified based on the availability of an original pristine video signal, which is considered to be of high quality (generally not compressed). Therefore, they can be classified as:
Objective video evaluation techniques are mathematical models that seek to predict human judgments of picture quality, as often exemplified by the results of [[Subjective video quality|subjective]] quality assessment experiments. They are based on criteria and metrics that can be measured objectively and automatically evaluated by a computer program. Objective methods are classified based on the availability of an original pristine video signal, which is considered to be of high quality (generally not compressed). Therefore, they can be classified as:
* '''Full reference''' methods (FR), where the whole original video signal is available
* '''Full reference''' methods (FR), where the whole original video signal is available
* '''Reduced reference''' methods (RR), where only partial information of the original video is available, and
* '''Reduced reference''' methods (RR), where only partial information of the original video is available, and
Line 41: Line 41:
This is concerned with how video is perceived by a viewer, and designates their opinion on a particular video sequence. Subjective video quality tests are quite expensive with regard to time (preparation and running) and human resources.
This is concerned with how video is perceived by a viewer, and designates their opinion on a particular video sequence. Subjective video quality tests are quite expensive with regard to time (preparation and running) and human resources.


There are many ways of showing video sequences to experts and recording their opinions. A few of them have been standardized, mainly in [http://www.itu.int/rec/R-REC-BT.500-13-201201-I ITU-R Recommendation BT.500-13] and [https://www.itu.int/rec/T-REC-P.910/en ITU-T Recommendation P.910].
There are many ways of showing video sequences to experts and recording their opinions. A few of them have been standardized, mainly in ITU-R Recommendation BT.500-13 and ITU-T Recommendation P.910.


The reason for measuring subjective video quality is the same as for measuring the [[mean opinion score]] for audio. Opinions of experts can be averaged and the average mark stated as, or accompanied by, a given confidence interval. Additional procedures can be used for averaging. For example, experts whose opinions are considered unstable (such as if their correlation with average opinion is found to be low) may have their opinions rejected.
The reason for measuring subjective video quality is the same as for measuring the [[mean opinion score]] for audio. Opinions of experts can be averaged and the average mark stated as, or accompanied by, a given confidence interval. Additional procedures can be used for averaging. For example, experts whose opinions are considered unstable (such as if their correlation with average opinion is found to be low) may have their opinions rejected.


In the case of video codecs, this is a very common situation. When codecs with similar objective results show results with different subjective results, the main reasons can be:
In the case of [[video codec]]s, this is a very common situation. When codecs with similar objective results show results with different subjective results, the main reasons can be:
* '''Pre- and postfilters''' are widely used in codecs. Codecs often use prefilters such as [[video denoising]], deflicking, deshaking, etc. Denoising and deflicking normally maintain [[Peak signal-to-noise ratio|PSNR]] value while increasing visual quality (the best slow denoising filters also increase PSNR on medium and high bitrates). Deshaking greatly decreases PSNR, but increases visual quality. Postfilters show similar characteristics{{snd}} deblocking and deringing maintain PSNR, but increase quality; graining (suggested in [[H.264]]) essentially increases video quality, especially on big plasma screens, but decreases PSNR. All filters increase compression/decompression time, so they enhance visual quality but decrease the speed of coding and decoding.
* '''Pre- and postfilters''' are widely used in codecs. Codecs often use prefilters such as [[video denoising]], deflicking, deshaking, etc. Denoising and deflicking normally maintain [[Peak signal-to-noise ratio|PSNR]] value while increasing visual quality (the best slow denoising filters also increase PSNR on medium and high bitrates). Deshaking greatly decreases PSNR, but increases visual quality. Postfilters show similar characteristics{{snd}} deblocking and deringing maintain PSNR, but increase quality; graining (suggested in [[H.264]]) essentially increases video quality, especially on big plasma screens, but decreases PSNR. All filters increase compression/decompression time, so they enhance visual quality but decrease the speed of coding and decoding.
* '''Motion estimation (ME) search strategy''' can also cause different visual quality for the same PSNR. So-called ''true motion'' search commonly will not reach minimum [[sum of absolute differences]] (SAD) values in codec ME, but may result in better visual quality. Such methods also require more compression time.
* '''Motion estimation (ME) search strategy''' can also cause different visual quality for the same PSNR. So-called ''true motion'' search commonly will not reach minimum [[sum of absolute differences]] (SAD) values in codec ME, but may result in better visual quality. Such methods also require more compression time.
* '''Rate control strategy'''. VBR commonly cause better visual quality marks than CBR for the same average PSNR values for sequences.
* '''Rate control strategy'''. VBR commonly causes better visual quality marks than CBR for the same average PSNR values for sequences.


It is difficult to use long sequences for subjective testing. Commonly, three or four ten-second sequences are used, while full movies are used for objective metrics. Sequence selection is important{{snd}} those sequences that are similar to the ones used by developers to tune their codecs are more competitive.
It is difficult to use long sequences for subjective testing. Commonly, three or four ten-second sequences are used, while full movies are used for objective metrics. Sequence selection is important{{snd}} those sequences that are similar to the ones used by developers to tune their codecs are more competitive.
Line 60: Line 60:
The following issues should be considered when estimating probable codec performance differences:
The following issues should be considered when estimating probable codec performance differences:
* '''Decompression (sometimes compression) frame time uniformity'''{{snd}} Big differences in this value can cause annoyingly jerky playback.
* '''Decompression (sometimes compression) frame time uniformity'''{{snd}} Big differences in this value can cause annoyingly jerky playback.
* '''[[SIMD]] support''' by processor and codec{{snd}} E.g., [[MMX (instruction set)|MMX]], [[Streaming SIMD Extensions|SSE]], [[SSE2]], each of which change CPU performance on some kinds of tasks (often including those with which codecs are concerned).
* '''[[SIMD]] support''' by processor and codec{{snd}} e.g., [[MMX (instruction set)|MMX]], [[Streaming SIMD Extensions|SSE]], [[SSE2]], each of which changes CPU performance on some kinds of tasks (often including those with which codecs are concerned).
* '''Multi-threading support''' by processor and codec{{snd}} Sometimes{{When|date=June 2017}} turning on [[Hyper-threading]] support (if available on a particular CPU) causes codec speed to decrease.
* '''Multi-threading support''' by processor and codec{{snd}} Sometimes{{When|date=June 2017}} turning on [[Hyper-threading]] support (if available on a particular CPU) causes codec speed to decrease.
* '''[[Random-access memory|RAM]] speed'''{{snd}} generally important for most codec implementations
* '''[[Random-access memory|RAM]] speed'''{{snd}} generally important for most codec implementations.
* '''Processor cache size'''{{snd}} low values sometimes cause serious speed degradation, e.g. for CPUs with low cache such as several of the Intel [[Celeron]] series.
* '''Processor cache size'''{{snd}} low values sometimes cause serious speed degradation, e.g., for CPUs with low caches such as several of the Intel [[Celeron]] series.
* '''[[General-purpose computing on graphics processing units|GPU]] usage''' by codec{{snd}} some codecs can drastically increase their performance by taking advantage of GPU resources.
* '''[[General-purpose computing on graphics processing units|GPU]] usage''' by codec{{snd}} some codecs can drastically increase their performance by taking advantage of GPU resources.


Line 71: Line 71:
{{Main|H.264}}
{{Main|H.264}}


Modern standards define a wide range of features and require very substantial software or hardware efforts and resources for their implementation. Only selected ''profiles'' of a standard are typically supported in any particular product. (This is very common for H.264 implementations for example.)
Modern standards define a wide range of features and require very substantial software or hardware efforts and resources for their implementation. Only selected ''profiles'' of a standard are typically supported in any particular product. (This is very common for H.264 implementations, for example.)


The H.264 standard includes the following seven sets of capabilities, which are referred to as ''profiles'', targeting specific classes of applications:
The H.264 standard includes the following seven sets of capabilities, which are referred to as ''profiles'', targeting specific classes of applications:
Line 99: Line 99:


=== Supported rate control strategies ===
=== Supported rate control strategies ===
{{Main|Rate distortion theory}}
{{Main|Rate–distortion theory}}


Videocodecs' rate control strategies can be classified as:
Videocodecs' rate control strategies can be classified as:
Line 106: Line 106:
* [[Constant bitrate]] (''CBR'').
* [[Constant bitrate]] (''CBR'').


Variable bitrate (VBR) is a strategy to maximize the visual video quality and minimize the bitrate. On fast-motion scenes, a variable bitrate uses more bits than it does on slow-motion scenes of similar duration, yet achieves a consistent visual quality. For real-time and non-buffered video streaming when the available bandwidth is fixed{{snd}} e.g. in videoconferencing delivered on channels of fixed bandwidth{{snd}} a constant bitrate (CBR) must be used.
Variable bitrate (VBR) is a strategy to maximize the visual video quality and minimize the bitrate. On fast-motion scenes, a variable bitrate uses more bits than it does on slow-motion scenes of similar duration, yet achieves a consistent visual quality. For real-time and non-buffered video streaming when the available bandwidth is fixed{{snd}} e.g., in videoconferencing delivered on channels of fixed bandwidth{{snd}} a constant bitrate (CBR) must be used.


CBR is commonly used for videoconferences, satellite and cable broadcasting. VBR is commonly used for video CD/DVD creation and video in programs.
CBR is commonly used for videoconferences, satellite and cable broadcasting. VBR is commonly used for video CD/DVD creation and video in programs.


Bit rate control is suited to video streaming. For offline storage and viewing, it is typically preferable to encode at constant [[Video quality|quality]] (usually defined by [[Quantization (image processing)|quantization]]) rather than using bit rate control.<ref>[https://developers.google.com/media/vp9/bitrate-modes/ Google - VP9 Bitrate Modes in Detail]</ref>
Bit rate control is suited to video streaming. For offline storage and viewing, it is typically preferable to encode at constant [[Video quality|quality]] (usually defined by [[Quantization (image processing)|quantization]]) rather than using bit rate control.<ref>[https://developers.google.com/media/vp9/bitrate-modes/ Google - VP9 Bitrate Modes in Detail]</ref><ref>[https://slhck.info/video/2017/02/24/crf-guide.html Werner Robitza - CRF Guide]</ref>
<ref>[https://slhck.info/video/2017/02/24/crf-guide.html Werner Robitza - CRF Guide]</ref>


== Software characteristics ==
== Software characteristics ==
Line 136: Line 135:
| [[Alliance for Open Media]]
| [[Alliance for Open Media]]
| 2018-06-25
| 2018-06-25
| 1.0.0 Errata 1 (2019)<ref name="av1-spec">{{cite web|url=https://aomediacodec.github.io/av1-spec/av1-spec.pdf|title=AV1 Bitstream & Decoding Process Specification|publisher=The Alliance for Open Media|access-date=31 March 2019|archive-date=2 May 2019|archive-url=https://web.archive.org/web/20190502171552/https://aomediacodec.github.io/av1-spec/av1-spec.pdf|url-status=live}}</ref>
| 1.0.0
| {{free|[[BSD licenses#2-clause license ("Simplified BSD License" or "FreeBSD License")|2-clause BSD]]}}
| {{free|[[2-clause BSD]]}}
| {{free|Patented, but freely licensed}}
| {{free|Patented, but freely licensed}}
| [[Lossy]] / [[Lossless]]
| [[Lossy]] / [[Lossless]]
| rowspan="2" | [[Discrete cosine transform| DCT]]
| [[Discrete cosine transform|DCT]]
| rowspan="3" {{unk}}
| {{unk}}
| rowspan="3" {{unk}}
| {{unk}}
| rowspan="3" {{yes}}
| {{yes}}
| rowspan="3" {{yes}}
| {{yes}}
| rowspan="3" {{unk}}
| {{yes}}
|-
|-
! [[libtheora]] ([[Theora]])
! [[libtheora]] ([[Theora]])
Line 153: Line 152:
| {{Free|[[BSD licenses|BSD-style]]<ref name="theora">{{cite web|url=http://www.theora.org/theorafaq.html|title=Redirect|access-date=22 November 2016}}</ref>}}
| {{Free|[[BSD licenses|BSD-style]]<ref name="theora">{{cite web|url=http://www.theora.org/theorafaq.html|title=Redirect|access-date=22 November 2016}}</ref>}}
| {{Free|Patented, but freely licensed{{Ref label|theora_patent|*|*}}}}
| {{Free|Patented, but freely licensed{{Ref label|theora_patent|*|*}}}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{yes}}
| {{no}}
| {{unk}}
|-
|-
! dirac-research ([[Dirac (video compression format)|Dirac]])
! dirac-research ([[Dirac (video compression format)|Dirac]])
Line 161: Line 166:
| {{Free|[[Mozilla Public Licence|MPL 1.1]], [[GNU General Public License|GNU GPL]] 2, [[GNU Lesser General Public License|GNU LGPL]] 2.1}}
| {{Free|[[Mozilla Public Licence|MPL 1.1]], [[GNU General Public License|GNU GPL]] 2, [[GNU Lesser General Public License|GNU LGPL]] 2.1}}
| {{Free|none}}
| {{Free|none}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
|[[Discrete wavelet transform|DWT]]
| [[Discrete wavelet transform|DWT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{no}}
| {{unk}}
|-
|-
! [[CineForm]]
! [[CineForm]]
| [[GoPro]]
| [[GoPro]]
| 2001
| 2001
| 10.0.2a (2019)<ref name="cfhd">[https://gopro.github.io/cineform-sdk/ CineForm Introduction]</ref>
| 10.0.2 (2019)<ref name="cfhd">[https://github.com/gopro/cineform-sdk/releases Releases · gopro/cineform-sdk]</ref>
| {{Free|[[Apache License|Apache License 2.0]], [[MIT License]]}}
| {{Free|[[Apache License|Apache License 2.0]], [[MIT License]]}}
| {{Free|none}}
| {{Free|none}}
| Lossy
| [[Lossy]]
|[[Discrete wavelet transform|DWT]]
| [[Discrete wavelet transform|DWT]]
| {{no}}
| {{no}}
| {{no}}
| {{no}}
Line 184: Line 194:
| {{Free|[[Mozilla Public Licence|MPL 1.1]], [[GNU General Public License|GNU GPL]] 2, [[GNU Lesser General Public License|GNU LGPL]] 2, [[MIT License]]}}
| {{Free|[[Mozilla Public Licence|MPL 1.1]], [[GNU General Public License|GNU GPL]] 2, [[GNU Lesser General Public License|GNU LGPL]] 2, [[MIT License]]}}
| {{Free|none}}
| {{Free|none}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
| [[Discrete wavelet transform|DWT]]
| DWT
| {{Yes}}
| {{Yes}}
| {{Yes}}<!-- please see the source code of latest build of scho, where its source files of OGL and CUDA -->
| {{Yes}}<!-- please see the source code of latest build of scho, where its source files of OGL and CUDA -->
Line 195: Line 205:
| x264 team
| x264 team
| 2003
| 2003
| 2638(2015)<ref>[https://www.videolan.org/developers/x264.html x264 - a free h264/avc encoder], Retrieved on 2014-12-28</ref>
| r3079 (2021)<ref>[https://www.videohelp.com/software/x264-Encoder#changelog x264 Encoder 164 r3079 Free Download - VideoHelp], Retrieved on 2021-12-14</ref>
| {{Free|[[GNU General Public License|GNU GPL]]}}
| {{Free|[[GNU General Public License|GNU GPL]]}}
| {{nonfree|[[Advanced Video Coding|MPEG-4 AVC/H.264]]}}
| {{nonfree|[[Advanced Video Coding|MPEG-4 AVC/H.264]]}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{unk}}
| {{Yes}}
|-
|-
! [[x265]]
! [[x265]]
| x265 team
| x265 team
| 2013
| 2013
| 2.8 (2018)<ref>{{Cite web|url=https://x265.readthedocs.io/en/default/releasenotes.html#version-2-8|title=Release Notes — x265 documentation|website=x265.readthedocs.io|language=en|access-date=2018-07-07}}</ref>
| 3.5 (2021)<ref>{{cite web|url=https://x265.readthedocs.io/en/master/releasenotes.html#version-3-5|title=Release Notes — x265 documentation|website=x265.readthedocs.io|language=en|access-date=2021-12-14}}</ref>
| {{Free|[[GNU General Public License|GNU GPL]]}}
| {{Free|[[GNU General Public License|GNU GPL]]}}
| {{nonfree|[[High Efficiency Video Coding|HEVC/H.265]]}}
| {{nonfree|[[High Efficiency Video Coding|HEVC/H.265]]}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{no}}
| {{no}}
| {{no}}
| {{no}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{unk}}
| {{Yes}}
|-
|-
! [[Xvid]]
! [[Xvid]]
| Xvid team
| Xvid team
| 2001
| 2001
| 1.3.5 (2017)<ref>{{cite web |url=https://labs.xvid.com/ |title=Xvid.com|access-date=2015-12-27}}</ref>
| 1.3.7 (2019)<ref>{{cite web |url=https://labs.xvid.com/ |title=Xvid.com|access-date=2021-12-14}}</ref>
| {{Free|[[GNU General Public License|GNU GPL]]}}
| {{Free|[[GNU General Public License|GNU GPL]]}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]]}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]]}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
Line 237: Line 247:
| FFmpeg team
| FFmpeg team
| 2000
| 2000
| 3.4.0 (2017 Oct 15)<ref>[https://www.ffmpeg.org/ FFmpeg.org], Retrieved on 2018-02-10</ref>
| 4.4.1 (2021)<ref>[https://www.ffmpeg.org/ FFmpeg.org], Retrieved on 2021-12-14</ref>
| {{Free|[[GNU Lesser General Public License|GNU LGPL]]}}
| {{Free|[[GNU Lesser General Public License|GNU LGPL]]}}
| {{nonfree|[[MPEG-1]], [[MPEG-2]], MPEG-4 ASP, [[H.261]], [[H.263]], [[VC-3]], [[WMV7]], [[WMV8]], [[MJPEG]], MS-MPEG-4v3, [[DV]], [[Sorenson codec]], etc.}}
| {{nonfree|[[MPEG-1]], [[MPEG-2]], MPEG-4 ASP, [[H.261]], [[H.263]], [[VC-3]], [[WMV7]], [[WMV8]], [[MJPEG]], MS-MPEG-4v3, [[DV (video format)|DV]], [[Sorenson codec]], etc.}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
Line 251: Line 261:
| FFavs team
| FFavs team
| 2009
| 2009
| 0.0.3<ref>[http://www.ffavs.net FFavs] {{webarchive|url=https://web.archive.org/web/20091216173026/http://www.ffavs.net/ |date=2009-12-16 |accessdate=2009-08-08}}</ref>
| 0.0.3 (2009)<ref>[http://www.ffavs.net FFavs] {{webarchive|url=https://web.archive.org/web/20091216173026/http://www.ffavs.net/ |date=2009-12-16 |accessdate=2009-08-08}}</ref>
| {{Free|[[GNU Lesser General Public License|GNU LGPL]]}}
| {{Free|[[GNU Lesser General Public License|GNU LGPL]]}}
| {{nonfree|MPEG-1, MPEG-2, MPEG-4 ASP, etc.}}
| {{nonfree|MPEG-1, MPEG-2, MPEG-4 ASP, etc.}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
Line 265: Line 275:
| [[Cisco Systems]]
| [[Cisco Systems]]
| 2014-05
| 2014-05
| 2.0.0<ref>[https://github.com/cisco/openh264/releases OpenH264 Releases]</ref>
| 2.1.1 (2020)<ref>[https://github.com/cisco/openh264/releases OpenH264 Releases]</ref>
| {{free|[[BSD licenses#2-clause license ("Simplified BSD License" or "FreeBSD License")|2-clause BSD]]}}
| {{free|[[2-clause BSD]]}}
| {{nonfree|MPEG-4 AVC/[[H.264]]}}
| {{nonfree|MPEG-4 AVC/[[H.264]]}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{No}}
| {{No}}
| {{No}}
| {{No}}
Line 279: Line 289:
| Forbidden Technologies plc
| Forbidden Technologies plc
| 2006-01
| 2006-01
| 9 (2017)<ref>{{cite web|url=https://www.blackbird.video/news-articles/next-generation-of-blackbird-video-codec/|title=Next generation of Blackbird video codec - Blackbird|publisher=Blackbird plc.|access-date=14 December 2021}}</ref>
| 2
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|Blackbird}}
| {{nonfree|Blackbird}}
| Lossy
| [[Lossy]]
| [[Adaptive coding]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
Line 293: Line 303:
| [[DivX, Inc.]]
| [[DivX, Inc.]]
| 2001
| 2001
| DivX Plus (2010)<ref>{{cite web|url=http://www.divx.com/|title=DivX, Inc.|publisher=DivX, Inc.|access-date=19 May 2011}}</ref>
| DivX Software 11 (2024)<ref>{{cite web|url=https://divx.zendesk.com/hc/en-us/articles/360002132033-DivX-Software-Version-History|title=DivX Software Version History – DivX|publisher=DivX, LLC|access-date=14 December 2021}}</ref>
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]], H.264}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]], H.264}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
Line 305: Line 315:
|-
|-
! {{nowrap|[[DivX&nbsp;<!--THE SMILEY REALLY BELONGS HERE-->;-)<!--DO NOT REMOVE THE SMILEY-->]]}}
! {{nowrap|[[DivX&nbsp;<!--THE SMILEY REALLY BELONGS HERE-->;-)<!--DO NOT REMOVE THE SMILEY-->]]}}
| a hack of Microsoft's MPEG-4v3 codec<ref>VirtualDub [http://www.virtualdub.org/docs_codecs.html VirtualDub documentation: codecs], Retrieved on 2009-08-08</ref><ref>FOURCC.org [http://www.fourcc.org/codecs.php Video Codecs - Compressed Formats], Retrieved on 2009-08-08</ref>
| a hack of Microsoft's MPEG-4v3 codec<ref>VirtualDub [http://www.virtualdub.org/docs_codecs.html VirtualDub documentation: codecs], Retrieved on 2009-08-08</ref><ref>FOURCC.org [http://www.fourcc.org/codecs.php Video Codecs - Compressed Formats] {{Webarchive|url=https://web.archive.org/web/20090523080617/http://www.fourcc.org/codecs.php |date=2009-05-23 }}, Retrieved on 2009-08-08</ref>
| 1998
| 1998
| 3.20 alpha<ref>Tom's Hardware (2001-10-22) [http://www.tomshardware.com/reviews/mpeg,379-7.html A Tough Choice: DivX 3.20a Codec Still Better Than DivX 4.01 Codec], Retrieved on 2009-08-08</ref> (2000)
| 3.20 alpha<ref>Tom's Hardware (2001-10-22) [http://www.tomshardware.com/reviews/mpeg,379-7.html A Tough Choice: DivX 3.20a Codec Still Better Than DivX 4.01 Codec], Retrieved on 2009-08-08</ref> (2000)
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|Microsoft's MPEG-4v3 (not MPEG-4 compliant)}}
| {{nonfree|Microsoft's MPEG-4v3 (not MPEG-4 compliant)}}
| rowspan="12" | Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| rowspan="17" | DCT
| rowspan="23" {{unk}}
| {{unk}}
| rowspan="23" {{unk}}
| {{unk}}
| rowspan="23" {{unk}}
| {{unk}}
| rowspan="23" {{unk}}
| {{unk}}
| rowspan="23" {{unk}}
| {{unk}}
|-
|-
! [[3ivx]]
! [[3ivx]]
Line 324: Line 334:
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]]}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]]}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Nero Digital]]
! [[Nero Digital]]
| [[Nero AG]]
| [[Nero AG]]
| 2003
| 2003
| 1.5.4.0 (2010)
| {{unk}}
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]], [[H.264]]<ref>Nero AG [http://www.nero.com/eng/support-faq.html?s=sub&t=Nero%20Digital What is Nero Digital], Retrieved on 2009-08-08</ref>}}
| {{nonfree|[[MPEG-4 Part 2|MPEG-4 ASP]], [[H.264]]<ref>Nero AG [http://www.nero.com/eng/support-faq.html?s=sub&t=Nero%20Digital What is Nero Digital], Retrieved on 2009-08-08</ref>}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[ProRes 422]] / [[ProRes 4444]]
! [[ProRes 422]] / [[ProRes 4444]]
| [[Apple Inc.]]
| [[Apple Inc.]]
| 2007
| 2007
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|ProRes}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
Line 342: Line 373:
| Sorenson Media
| Sorenson Media
| 1998
| 1998
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|Sorenson Video}}
| {{nonfree|Sorenson Video}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Sorenson codec|Sorenson Spark]]
! [[Sorenson codec|Sorenson Spark]]
| Sorenson Media
| Sorenson Media
| 2002
| 2002
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|Sorenson Spark}}
| {{nonfree|Sorenson Spark}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[VP3]]
! [[VP3]]
| [[On2 Technologies]]
| [[On2 Technologies]]
| 2000
| 2000
| {{unk}}
|
| {{Free|[[BSD licenses|BSD-style]]<ref name="theora"/>}}
| {{Free|[[BSD licenses|BSD-style]]<ref name="theora"/>}}
| {{Free|Patented, but freely licensed{{Ref label|theora_patent|*|*}}}}
| {{Free|Patented, but freely licensed{{Ref label|theora_patent|*|*}}}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[VP4]]
! [[VP4]]
| [[On2 Technologies]]
| [[On2 Technologies]]
| 2001
| 2001
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|VP4}}
| {{nonfree|VP4}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[VP5]]
! [[VP5]]
| [[On2 Technologies]]
| [[On2 Technologies]]
| 2002
| 2002
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|VP5}}
| {{nonfree|VP5}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[VP6]]
! [[VP6]]
| [[On2 Technologies]]
| [[On2 Technologies]]
| 2003
| 2003
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|VP6}}
| {{nonfree|VP6}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[VP7]]
! [[VP7]]
| [[On2 Technologies]]
| [[On2 Technologies]]
| 2005
| 2005
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|VP7}}
| {{nonfree|VP7}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[libvpx]] ([[VP8]])
! [[libvpx]] ([[VP8]])
| [[On2 Technologies]] (now owned by [[Google]])
| [[On2 Technologies]] (now owned by [[Google]])
| 2008
| 2008
| 1.11.0 (2021)<ref name="chromium.googlesource.com">[https://chromium.googlesource.com/webm/libvpx/+/refs/tags/v1.11.0 refs/tags/v1.11.0 - webm/libvpx - Git at Google], Retrieved on 14 December 2021</ref>
| 1.1.0 (2012)
| {{Free|[[BSD licenses|BSD-style]]}}
| {{Free|[[BSD licenses|BSD-style]]}}
| {{free|Patented, but freely licensed}}
| {{free|Patented, but freely licensed}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[libvpx]] ([[VP9]])
! [[libvpx]] ([[VP9]])
| [[Google]]
| [[Google]]
| 2013
| 2013
| 1.11.0 (2021)<ref name="chromium.googlesource.com"/>
|
| {{Free|[[BSD licenses|BSD-style]]}}
| {{Free|[[BSD licenses|BSD-style]]}}
| {{free|Patented, but freely licensed}}
| {{free|Patented, but freely licensed}}
| Lossy / Lossless
| [[Lossy]] / [[Lossless]]
| [[Discrete cosine transform|DCT]]
| {{yes|Yes, not in libvpx but in proprietary VP9 OpenCL codecs by Luxoft and Ittiam}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[DNxHD codec|DNxHD]]
! [[DNxHD codec|DNxHD]]
| [[Avid Technology]]
| [[Avid Technology]]
| 2004
| 2004
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|VC-3}}
| {{nonfree|VC-3}}
| rowspan="4" | Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! Cinema Craft Encoder SP2
! Cinema Craft Encoder SP2
Line 417: Line 516:
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|MPEG-1, MPEG-2}}
| {{nonfree|MPEG-1, MPEG-2}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[TMPGEnc]] Free Version
! [[TMPGEnc]] Free Version
Line 424: Line 530:
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|MPEG-1, MPEG-2}}
| {{nonfree|MPEG-1, MPEG-2}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Windows Media Encoder]]
! [[Windows Media Encoder]]
Line 430: Line 543:
| 9 (2003) (WMV3 in [[Fourcc|FourCC]])
| 9 (2003) (WMV3 in [[Fourcc|FourCC]])
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|[[WMV]], [[VC-1]], (in early versions [[MPEG-4 Part 2]] and not MPEG-4 compliant MPEG-4v3, MPEG-4v2)}}
| {{nonfree|[[Windows Media Video|WMV]], [[VC-1]], (in early versions [[MPEG-4 Part 2]] and not MPEG-4 compliant MPEG-4v3, MPEG-4v2)}}
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Cinepak]]
! [[Cinepak]]
| Created by SuperMac, Inc.
| Created by SuperMac, Inc., acquired and patented by Radius, Inc.
Currently maintained by Compression Technologies, Inc.<ref>[http://www.cinepak.com/begin.html Compression Technologies, Inc.], current maintainer of Cinepak</ref>
Currently maintained by Compression Technologies, Inc.<ref>[http://www.cinepak.com/begin.html Compression Technologies, Inc.], current maintainer of Cinepak</ref>
| 1991
| 1991
| 1.10.0.26 (1999)
| 1.10.0.26 (1999)
| {{Proprietary}}
| {{Proprietary}}
| {{unk}}
| {{nonfree|Cinepak}}
| Lossy
| [[Lossy]]
| [[Vector quantization|VQ]]
| [[Vector quantization|VQ]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Indeo Video]]
! [[Indeo Video]]
| [[Intel Corporation]], currently offered by Ligos Corporation
| [[Intel Corporation]], currently offered by Ligos Corporation
| 1992
| 1992
| 5.2
| 5.11
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|Indeo Video}}
| {{nonfree|Indeo Video}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[TrueMotion S]]
! [[TrueMotion S]]
| [[The Duck Corporation]]
| [[On2 Technologies]]
| 1995
| 1995
| {{unk}}
|
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|TrueMotion S}}
| {{nonfree|TrueMotion S}}
| Lossy
| [[Lossy]]
| [[Intra-frame coding]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
Line 466: Line 601:
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|[[H.263]], RealVideo}}
| {{nonfree|[[H.263]], RealVideo}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Huffyuv]]
! [[Huffyuv]]
Line 475: Line 615:
| {{Free|[[GNU General Public License|GNU GPL]] 2}}
| {{Free|[[GNU General Public License|GNU GPL]] 2}}
| {{Free|none}}
| {{Free|none}}
| rowspan="2" | [[Lossless]]
| [[Lossless]]
| rowspan="2" | [[Huffman coding|Huffman]]
| [[Huffman coding|Huffman]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[Lagarith]]
! [[Lagarith]]
Line 484: Line 629:
| {{Free|[[GNU General Public License|GNU GPL]] 2}}
| {{Free|[[GNU General Public License|GNU GPL]] 2}}
| {{Free|none}}
| {{Free|none}}
| [[Lossless]]
| [[Huffman coding|Huffman]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
|-
|-
! [[MainConcept]]
! [[MainConcept]]
Line 491: Line 643:
| {{Proprietary}}
| {{Proprietary}}
| {{nonfree|MPEG-1, MPEG-2, H.264/AVC, H.263, VC-3, MPEG-4 Part 2, DV, MJPEG etc.}}
| {{nonfree|MPEG-1, MPEG-2, H.264/AVC, H.263, VC-3, MPEG-4 Part 2, DV, MJPEG etc.}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{yes}}<ref>{{cite web|url=http://www.mainconcept.com/products/sdks/gpu-acceleration/opencltm-h264avc.html|title=SDKs - Software Development Kits: MainConcept|first=MainConcept|last=GmbH|access-date=22 November 2016|archive-url=https://archive.is/20130128145115/http://www.mainconcept.com/products/sdks/gpu-acceleration/opencltm-h264avc.html|archive-date=28 January 2013|url-status=dead}}</ref>
| {{yes}}<ref>{{cite web|url=http://www.mainconcept.com/products/sdks/gpu-acceleration/opencltm-h264avc.html|title=SDKs - Software Development Kits: MainConcept|first=MainConcept|last=GmbH|access-date=22 November 2016|archive-url=https://archive.today/20130128145115/http://www.mainconcept.com/products/sdks/gpu-acceleration/opencltm-h264avc.html|archive-date=28 January 2013|url-status=dead}}</ref>
| {{yes}}<ref>{{Cite web |url=http://www.mainconcept.com/press/single-view/article/will-present-latest-gpu-cuda-encoding-at-nvidia-technology-conference.html |title=Archived copy |access-date=2010-10-26 |archive-url=https://web.archive.org/web/20101002090213/http://www.mainconcept.com/press/single-view/article/will-present-latest-gpu-cuda-encoding-at-nvidia-technology-conference.html |archive-date=2010-10-02 |url-status=dead }}</ref><ref>{{cite web|url=http://www.mainconcept.com/products/sdks/gpu-acceleration/cuda-h264avc.html|title=SDKs - Software Development Kits: MainConcept|first=MainConcept|last=GmbH|access-date=22 November 2016|archive-url=https://archive.is/20130128033736/http://www.mainconcept.com/products/sdks/gpu-acceleration/cuda-h264avc.html|archive-date=28 January 2013|url-status=dead}}</ref>
| {{yes}}<ref>{{cite web |url=http://www.mainconcept.com/press/single-view/article/will-present-latest-gpu-cuda-encoding-at-nvidia-technology-conference.html |title=MainConcept will present latest GPU CUDA Encoding at NVIDIA Technology Conference!: MainConcept |access-date=2010-10-26 |archive-url=https://web.archive.org/web/20101002090213/http://www.mainconcept.com/press/single-view/article/will-present-latest-gpu-cuda-encoding-at-nvidia-technology-conference.html |archive-date=2010-10-02 |url-status=dead }}</ref><ref>{{cite web|url=http://www.mainconcept.com/products/sdks/gpu-acceleration/cuda-h264avc.html|title=SDKs - Software Development Kits: MainConcept|first=MainConcept|last=GmbH|access-date=22 November 2016|archive-url=https://archive.today/20130128033736/http://www.mainconcept.com/products/sdks/gpu-acceleration/cuda-h264avc.html|archive-date=28 January 2013|url-status=dead}}</ref>
| {{unk}}
| {{unk}}
| {{Yes}}<ref>{{cite web|url=http://www.mainconcept.com/products/partner-products/intel/h264avc-encoder-sdk.html|title=SDKs - Adobe Plugins - Transcoding Software - MainConcept Products: MainConcept|first=MainConcept|last=GmbH|access-date=22 November 2016|archive-url=https://archive.today/20120906164918/http://www.mainconcept.com/products/partner-products/intel/h264avc-encoder-sdk.html|archive-date=6 September 2012|url-status=dead}}</ref>
|-
! [[CellB Video Encoding]]
| [[Sun Microsystems]]
| 1992<ref>{{cite web |last1=Speer |first1=Michael F. |last2=Don |first2=Hoffman |title=RTP Payload Format of Sun's CellB Video Encoding |url=http://www.cs.columbia.edu/~hgs/rtp/drafts/draft-ietf-avt-cellb-06.txt |website=cs.columbia.edu |archive-url=https://web.archive.org/web/20210810151703/http://www.cs.columbia.edu/~hgs/rtp/drafts/draft-ietf-avt-cellb-06.txt |archive-date=10 August 2021 |date=21 August 1995 |url-status=live}}</ref><ref>{{cite web|url=https://github.com/johnsokol/holiday_greeting_1992|title = Holiday_greeting_1992|website = [[GitHub]]|date = 11 February 2020}}</ref><ref>{{cite news|url=https://datatracker.ietf.org/doc/html/rfc2029|title=RTP Payload Format of Sun's CellB Video Encoding|date=October 1996|last1=Hoffman|first1=Don|last2=Speer|first2=Michael F.|newspaper=Ietf Datatracker }}</ref><ref>{{cite web |title=XIL Programmer's Guide |url=https://docs.oracle.com/cd/E19504-01/802-5863/802-5863.pdf |website=docs.oracle.com |publisher=Sun Microsystems |archive-url=https://web.archive.org/web/20221017013451/https://docs.oracle.com/cd/E19504-01/802-5863/802-5863.pdf |archive-date=17 October 2022 |language=en |date=1997 |url-status=live}}</ref>
| <ref>{{cite web|url=https://github.com/ronf/nv|title = Network Video tool|website = [[GitHub]]|date = 14 October 2021}}</ref>
| {{Free|[[BSD licenses|BSD-style]]}}
| {{Free|none}}
| [[Lossy]]
| [[Vector quantization|VQ]]
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{unk}}
| {{Yes}}<ref>{{cite web|url=http://www.mainconcept.com/products/partner-products/intel/h264avc-encoder-sdk.html|title=SDKs - Adobe Plugins - Transcoding Software - MainConcept Products: MainConcept|first=MainConcept|last=GmbH|access-date=22 November 2016|archive-url=https://archive.is/20120906164918/http://www.mainconcept.com/products/partner-products/intel/h264avc-encoder-sdk.html|archive-date=6 September 2012|url-status=dead}}</ref>
|-
|-
! [[Elecard Group|Elecard]]
! Elecard
| [[Elecard Group|Elecard]]
| Elecard
| 2008
| 2008
| G4 (2010)<ref name="elecard.com">{{cite web|url=https://www.elecard.com/products/sdks/directshow-codec-sdk|title=Elecard Group - Codec SDK G4 - h.264 codec, Codec SDK, software development kit, mpeg2 decoder, mpeg-2 decoder, avc codec, MPEG Decoder, MPEG Encoder, MPEG Multiplexer, MPEG Audio Decoder, Graph Viewer, AVC Encoder, AAC Decoder, AAC encoder, mpeg-4, API, sample application, source code|access-date=10 February 2018}}</ref>
| G4 (2010)<ref name="elecard.com">{{cite web|url=https://www.elecard.com/products/sdks/directshow-codec-sdk|title=Elecard Group - Codec SDK G4 - h.264 codec, Codec SDK, software development kit, mpeg2 decoder, mpeg-2 decoder, avc codec, MPEG Decoder, MPEG Encoder, MPEG Multiplexer, MPEG Audio Decoder, Graph Viewer, AVC Encoder, AAC Decoder, AAC encoder, mpeg-4, API, sample application, source code|access-date=10 February 2018}}</ref>
| {{Proprietary}}
| {{Proprietary}}
| {{Nonfree|MPEG-1, MPEG-2, MPEG-4, AVC}}
| {{Nonfree|MPEG-1, MPEG-2, MPEG-4, AVC}}
| Lossy
| [[Lossy]]
| [[Discrete cosine transform|DCT]]
| DCT
| {{No}}
| {{No}}
| {{Yes}}<ref name="elecard.com"/>
| {{Yes}}<ref name="elecard.com"/>
Line 512: Line 678:
| {{Yes}}<ref name="elecard.com"/>
| {{Yes}}<ref name="elecard.com"/>
| {{Yes}}<ref name="elecard.com"/>
| {{Yes}}<ref name="elecard.com"/>
|-class="sortbottom"
|- class="sortbottom"
! [[Video codec|Codec]]
! [[Video codec|Codec]]
! Creator/Maintainer
! Creator/Maintainer
Line 597: Line 763:
| {{yes}}
| {{yes}}
|-
|-
| [[Elecard Group|Elecard]]
| Elecard
| {{yes}}
| {{yes}}
| {{no}}
| {{no}}
Line 655: Line 821:
| {{yes}}
| {{yes}}
|-
|-
| [[Elecard Group|Elecard]]
| Elecard
|Lossy compression
|Lossy compression
| Unknown
| Unknown
Line 664: Line 830:


{{note label|theora_vfr|*|*}} Theora streams with different frame rates can be chained in the same file, but each stream has a fixed frame rate.<ref name="theora spec"/>
{{note label|theora_vfr|*|*}} Theora streams with different frame rates can be chained in the same file, but each stream has a fixed frame rate.<ref name="theora spec"/>



== Freely available codecs comparisons ==
== Freely available codecs comparisons ==
Line 677: Line 842:
! Comments
! Comments
|-
|-
| [https://web.archive.org/web/20080223010804/http://www.doom9.org/codec-comparisons.htm Series of Doom9 codec comparisons]
| Series of Doom9 codec comparisons
| Series of '''subjective''' comparison of popular codecs
| Series of '''subjective''' comparison of popular codecs
|
|
Line 688: Line 853:
| Subjective comparison with convenient visualization
| Subjective comparison with convenient visualization
|-
|-
| [http://compression.ru/video/codec_comparison/index_en.html Series of MSU annual video codecs comparisons]
| Series of MSU annual video codecs comparisons
| Series of '''objective''' HEVC/AV1 codecs comparisons
| Series of '''objective''' HEVC/AV1 codecs comparisons
|
|
Line 702: Line 867:
| Detailed objective comparisons
| Detailed objective comparisons
|-
|-
| [http://compression.ru/video/codec_comparison/index_en.html Series of MSU annual H.264 codecs comparisons]
| Series of MSU annual H.264 codecs comparisons
| Series of '''objective''' H.264 codecs comparisons with MPEG-4 ASP reference
| Series of '''objective''' H.264 codecs comparisons with MPEG-4 ASP reference
|
|
Line 726: Line 891:
| Detailed objective comparisons
| Detailed objective comparisons
|-
|-
| [http://compression.ru/video/codec_comparison/index_en.html Series of Lossless Video Codecs Comparison]
| Series of Lossless Video Codecs Comparison
| Two '''size and time comparisons''' of lossless codecs (with lossless checking)
| Two '''size and time comparisons''' of lossless codecs (with lossless checking)
|
|
Line 736: Line 901:
| in 2007{{snd}} more detailed report with new codecs including first standard H.264 (x264)
| in 2007{{snd}} more detailed report with new codecs including first standard H.264 (x264)
|-
|-
| [http://compression.ru/video/codec_comparison/mpeg-4_en.html MSU MPEG-4 codecs comparison]
| MSU MPEG-4 codecs comparison
| '''Objective''' comparison of MPEG-4 codecs
| '''Objective''' comparison of MPEG-4 codecs
|
|
Line 743: Line 908:
| Different versions of DivX were also compared. The Xvid results may be erroneous, as deblocking was disabled for it while used for DivX.
| Different versions of DivX were also compared. The Xvid results may be erroneous, as deblocking was disabled for it while used for DivX.
|-
|-
| [http://www.compression.ru/video/codec_comparison/subjective_codecs_comparison_en.html Subjective Comparison of Modern Video Codecs]
| Subjective Comparison of Modern Video Codecs
| Scientifically accurate '''subjective''' comparison using 50 experts and SAMVIQ methodology
| Scientifically accurate '''subjective''' comparison using 50 experts and SAMVIQ methodology
|
|
Line 750: Line 915:
| PSNR via VQM via SSIM comparison was also done
| PSNR via VQM via SSIM comparison was also done
|-
|-
| [http://www.compression.ru/video/codec_comparison/mpeg-2_2006_en.html MPEG-2 Video Decoders Comparison]
| MPEG-2 Video Decoders Comparison
| '''Objective''' MPEG-2 '''Decoders''' comparison
| '''Objective''' MPEG-2 '''Decoders''' comparison
|
|
Line 757: Line 922:
| Objectly tested (100 times per stream) decoders "crash test" (test on damaged stream{{snd}} like scratched DVD or satellite samples)
| Objectly tested (100 times per stream) decoders "crash test" (test on damaged stream{{snd}} like scratched DVD or satellite samples)
|-
|-
| Codecs comparison
| [https://web.archive.org/web/20070823063012/http://people.csail.mit.edu/tbuehler/video/codecs/ Codecs comparison]
| Personal '''subjective''' opinion
| Personal '''subjective''' opinion
|
|
Line 764: Line 929:
| Sometimes comparison is short (up to one text line per codec)
| Sometimes comparison is short (up to one text line per codec)
|-
|-
| [https://web.archive.org/web/20090620051634/http://etill.net/projects/dirac_theora_evaluation/ Evaluation of Dirac and Theora]
| Evaluation of Dirac and Theora
| Scientific paper
| Scientific paper
|
|
Line 771: Line 936:
| Quite detailed comparison of software available in Q2-2008; However, a buggy version of ffmpeg2Theora was used
| Quite detailed comparison of software available in Q2-2008; However, a buggy version of ffmpeg2Theora was used
|-
|-
| VP8 versus x264
| [https://web.archive.org/web/20110719095845/http://www.tkn.tu-berlin.de/research/evalvid/EvalVid/vp8_versus_x264.html VP8 versus x264]
| Objective and subjective quality comparison of VP8 and x264
| Objective and subjective quality comparison of VP8 and x264
|
|
Line 781: Line 946:
== See also ==
== See also ==
{{Portal|Free and open-source software}}
{{Portal|Free and open-source software}}
* [[Comparison of video player software|Comparison of media players]]
* [[Comparison of video player software]]
* [[List of video players (software)]]
* [[List of codecs]]
* [[List of codecs]]
** [[Open source codecs and containers]]
** [[List of open-source codecs]]
* [[SSIM]]
* [[Structural similarity]]
* [[MOVIE Index]]
* [[MOVIE Index]]
* [[Comparison of audio coding formats]]
* [[Comparison of audio coding formats]]
* [[Comparison of container formats]]
* [[Comparison of video container formats]]
* [[Comparison of video editing software]]
* [[Comparison of video editing software]]


Line 805: Line 969:
[[Category:Multimedia software comparisons|Video Codecs]]
[[Category:Multimedia software comparisons|Video Codecs]]
[[Category:Video codecs|Video codecs]]
[[Category:Video codecs|Video codecs]]
[[Category:Data compression]]

Latest revision as of 23:53, 5 December 2024

Α video codec is software or a device that provides encoding and decoding for digital video, and which may or may not include the use of video compression and/or decompression. Most codecs are typically implementations of video coding formats.

The compression may employ lossy data compression, so that quality-measurement issues become important. Shortly after the compact disc became widely available as a digital-format replacement for analog audio, it became feasible to also store and use video in digital form. A variety of technologies soon emerged to do so. The primary goal for most methods of compressing video is to produce video that most closely approximates the fidelity of the original source, while simultaneously delivering the smallest file-size possible. However, there are also several other factors that can be used as a basis for comparison.

Introduction to comparison

[edit]

The following characteristics are compared in video codecs comparisons:

  • Video quality per bitrate (or range of bitrates). Commonly video quality is considered the main characteristic of codec comparisons. Video quality comparisons can be subjective or objective.
  • Performance characteristics such as compression/decompression speed, supported profiles/options, supported resolutions, supported rate control strategies, etc.
  • General software characteristics – for example:
    • Manufacturer
    • Supported OS (Linux, macOS, Windows)
    • Version number
    • Date of release
    • Type of license (commercial, free, open source)
    • Supported interfaces (VfW, DirectShow, etc.)
    • Price (value for money, volume discounts, etc.)

Video quality

[edit]

The quality the codec can achieve is heavily based on the compression format the codec uses. A codec is not a format, and there may be multiple codecs that implement the same compression specification – for example, MPEG-1 codecs typically do not achieve quality/size ratio comparable to codecs that implement the more modern H.264 specification. But quality/size ratio of output produced by different implementations of the same specification can also vary.

Each compression specification defines various mechanisms by which raw video (in essence, a sequence of full-resolution uncompressed digital images) can be reduced in size, from simple bit compression (like Lempel-Ziv-Welch) to psycho-visual and motion summarization, and how the output is stored as a bit stream. So long as the encoder component of the codec adheres to the specification, it can choose any combination of these methods to apply different parts of the content. The decoder component of a codec that also conforms to the specification recognizes each of the mechanisms used, and thus interprets the compressed stream to render it back into raw video for display (although this will not be identical to the raw video input unless the compression was lossless). Each encoder implements the specification according to its own algorithms and parameters, which means that the compressed output of different codecs will vary, resulting in variations in quality and efficiency between them.

Prior to comparing codec video-quality, it is important to understand that every codec can give a varying degree of quality for a given set of frames within a video sequence. Numerous factors play a role in this variability. First, all codecs have a bitrate control mechanism that is responsible for determining the bitrate and quality on a per-frame basis. A difference between variable bitrate (VBR) and constant bitrate (CBR) creates a trade-off between a consistent quality over all frames, on the one hand, and a more constant bitrate, which is required for some applications, on the other. Second, some codecs differentiate between different types of frames, such as key frames and non-key frames, differing in their importance to overall visual quality and the extent to which they can be compressed. Third, quality depends on prefiltrations, which are included on all present-day codecs. Other factors may also come into play.

For a sufficiently long clip, it is possible to select sequences that have suffered little from the compression, and sequences that have suffered heavily, especially if CBR has been used, whereby the quality between frames can vary highly due to different amounts of compression needed to achieve a constant bitrate. So, in a given long clip, such as a full-length movie, any two codecs may perform quite differently on a particular sequence from the clip, while the codecs may be approximately equal (or the situation reversed) in quality over a wider sequence of frames. Press-releases and amateur forums may sometimes select sequences known to favor a particular codec or style of rate-control in reviews.

Objective video quality

[edit]

Objective video evaluation techniques are mathematical models that seek to predict human judgments of picture quality, as often exemplified by the results of subjective quality assessment experiments. They are based on criteria and metrics that can be measured objectively and automatically evaluated by a computer program. Objective methods are classified based on the availability of an original pristine video signal, which is considered to be of high quality (generally not compressed). Therefore, they can be classified as:

  • Full reference methods (FR), where the whole original video signal is available
  • Reduced reference methods (RR), where only partial information of the original video is available, and
  • No-reference methods (NR), where the original video is not available at all.

Subjective video quality

[edit]

This is concerned with how video is perceived by a viewer, and designates their opinion on a particular video sequence. Subjective video quality tests are quite expensive with regard to time (preparation and running) and human resources.

There are many ways of showing video sequences to experts and recording their opinions. A few of them have been standardized, mainly in ITU-R Recommendation BT.500-13 and ITU-T Recommendation P.910.

The reason for measuring subjective video quality is the same as for measuring the mean opinion score for audio. Opinions of experts can be averaged and the average mark stated as, or accompanied by, a given confidence interval. Additional procedures can be used for averaging. For example, experts whose opinions are considered unstable (such as if their correlation with average opinion is found to be low) may have their opinions rejected.

In the case of video codecs, this is a very common situation. When codecs with similar objective results show results with different subjective results, the main reasons can be:

  • Pre- and postfilters are widely used in codecs. Codecs often use prefilters such as video denoising, deflicking, deshaking, etc. Denoising and deflicking normally maintain PSNR value while increasing visual quality (the best slow denoising filters also increase PSNR on medium and high bitrates). Deshaking greatly decreases PSNR, but increases visual quality. Postfilters show similar characteristics – deblocking and deringing maintain PSNR, but increase quality; graining (suggested in H.264) essentially increases video quality, especially on big plasma screens, but decreases PSNR. All filters increase compression/decompression time, so they enhance visual quality but decrease the speed of coding and decoding.
  • Motion estimation (ME) search strategy can also cause different visual quality for the same PSNR. So-called true motion search commonly will not reach minimum sum of absolute differences (SAD) values in codec ME, but may result in better visual quality. Such methods also require more compression time.
  • Rate control strategy. VBR commonly causes better visual quality marks than CBR for the same average PSNR values for sequences.

It is difficult to use long sequences for subjective testing. Commonly, three or four ten-second sequences are used, while full movies are used for objective metrics. Sequence selection is important – those sequences that are similar to the ones used by developers to tune their codecs are more competitive.

Performance comparison

[edit]

Speed comparison

[edit]

Number of frames per second (FPS) commonly used for compression/decompression speed measurement.

The following issues should be considered when estimating probable codec performance differences:

  • Decompression (sometimes compression) frame time uniformity – Big differences in this value can cause annoyingly jerky playback.
  • SIMD support by processor and codec – e.g., MMX, SSE, SSE2, each of which changes CPU performance on some kinds of tasks (often including those with which codecs are concerned).
  • Multi-threading support by processor and codec – Sometimes[when?] turning on Hyper-threading support (if available on a particular CPU) causes codec speed to decrease.
  • RAM speed – generally important for most codec implementations.
  • Processor cache size – low values sometimes cause serious speed degradation, e.g., for CPUs with low caches such as several of the Intel Celeron series.
  • GPU usage by codec – some codecs can drastically increase their performance by taking advantage of GPU resources.

So, for example, codec A (being optimized for memory usage – i.e., uses less memory) may, on modern computers (which are typically not memory-limited), give slower performance than codec B. Meanwhile, the same pair of codecs may give opposite results if running on an older computer with reduced memory (or cache) resources.

Profiles support

[edit]

Modern standards define a wide range of features and require very substantial software or hardware efforts and resources for their implementation. Only selected profiles of a standard are typically supported in any particular product. (This is very common for H.264 implementations, for example.)

The H.264 standard includes the following seven sets of capabilities, which are referred to as profiles, targeting specific classes of applications:

  • Baseline Profile (BP): Primarily for lower-cost applications with limited computing resources, this profile is used widely in videoconferencing and mobile applications.
  • Main Profile (MP): Originally intended as the mainstream consumer profile for broadcast and storage applications, the importance of this profile faded when the High profile (HiP) was developed for those applications.
  • Extended Profile (XP): Intended as the streaming video profile, this profile has relatively high compression capability and some extra tricks for robustness to data losses and server stream switching.
  • High Profile (HiP): The primary profile for broadcast and disc storage applications, particularly for high-definition television applications. (This is the profile adopted into HD DVD and Blu-ray Disc, for example.)
  • High 10 Profile (Hi10P): Going beyond today's mainstream consumer product capabilities, this profile builds on top of the High Profile, adding support for up to 10 bits per sample of decoded picture precision.
  • High 4:2:2 Profile (Hi422P): Primarily targeting professional applications that use interlaced video, this profile builds on top of the High 10 Profile, adding support for the 4:2:2 chroma sampling format while using up to 10 bits per sample of decoded picture precision.
  • High 4:4:4 Predictive Profile (Hi444PP): This profile builds on top of the High 4:2:2 Profile, supporting up to 4:4:4 chroma sampling, up to 14 bits per sample, and additionally supporting efficient lossless region coding and the coding of each picture as three separate color planes.
  • Multiview High Profile: This profile supports two or more views using both inter-picture (temporal) and MVC inter-view prediction, but does not support field pictures and macroblock-adaptive frame-field coding.

The standard also contains four additional all-Intra profiles, which are defined as simple subsets of other corresponding profiles. These are mostly for professional (e.g., camera and editing system) applications:

  • High 10 Intra Profile: The High 10 Profile constrained to all-Intra use.
  • High 4:2:2 Intra Profile: The High 4:2:2 Profile constrained to all-Intra use.
  • High 4:4:4 Intra Profile: The High 4:4:4 Profile constrained to all-Intra use.
  • CAVLC 4:4:4 Intra Profile: The High 4:4:4 Profile constrained to all-Intra use and to CAVLC entropy coding (i.e., not supporting CABAC).

Moreover, the standard now also contains three Scalable Video Coding profiles.

  • Scalable Baseline Profile: A scalable extension of the Baseline profile.
  • Scalable High Profile: A scalable extension of the High profile.
  • Scalable High Intra Profile: The Scalable High Profile constrained to all-Intra use.

An accurate comparison of codecs must take the profile variations within each codec into account.

See also MPEG-2 Profiles and Levels.

Supported rate control strategies

[edit]

Videocodecs' rate control strategies can be classified as:

Variable bitrate (VBR) is a strategy to maximize the visual video quality and minimize the bitrate. On fast-motion scenes, a variable bitrate uses more bits than it does on slow-motion scenes of similar duration, yet achieves a consistent visual quality. For real-time and non-buffered video streaming when the available bandwidth is fixed – e.g., in videoconferencing delivered on channels of fixed bandwidth – a constant bitrate (CBR) must be used.

CBR is commonly used for videoconferences, satellite and cable broadcasting. VBR is commonly used for video CD/DVD creation and video in programs.

Bit rate control is suited to video streaming. For offline storage and viewing, it is typically preferable to encode at constant quality (usually defined by quantization) rather than using bit rate control.[1][2]

Software characteristics

[edit]

Codecs list

[edit]
General video codec information – creator/company, license/price, etc.
Codec Creator/Maintainer First public release date Latest stable version License Patented compression formats Compression method Basic algorithm OpenCL support nVidia CUDA support Intel SSE Support Intel AVX support Intel Quick Sync Video support
AOM Video 1 (AV1) Alliance for Open Media 2018-06-25 1.0.0 Errata 1 (2019)[3] 2-clause BSD Patented, but freely licensed Lossy / Lossless DCT Un­known Un­known Yes Yes Yes
libtheora (Theora) Xiph.org 2002-09-25 1.1.1 (2009)[4] BSD-style[5] Patented, but freely licensed[*] Lossy DCT Un­known Un­known Yes No Un­known
dirac-research (Dirac) BBC Research Department 2008-09-17 1.0.2 (2009)[6] MPL 1.1, GNU GPL 2, GNU LGPL 2.1 none Lossy / Lossless DWT Un­known Un­known Un­known No Un­known
CineForm GoPro 2001 10.0.2 (2019)[7] Apache License 2.0, MIT License none Lossy DWT No No Yes No No
Schrödinger (Dirac) David Schleef 2008-02-22 1.0.11 (2012)[6] MPL 1.1, GNU GPL 2, GNU LGPL 2, MIT License none Lossy / Lossless DWT Yes Yes Un­known Un­known Un­known
x264 x264 team 2003 r3079 (2021)[8] GNU GPL MPEG-4 AVC/H.264 Lossy / Lossless DCT Yes No Yes Yes Yes
x265 x265 team 2013 3.5 (2021)[9] GNU GPL HEVC/H.265 Lossy / Lossless DCT No No Yes Yes Yes
Xvid Xvid team 2001 1.3.7 (2019)[10] GNU GPL MPEG-4 ASP Lossy DCT Un­known Un­known Un­known Un­known Un­known
FFmpeg (libavcodec) FFmpeg team 2000 4.4.1 (2021)[11] GNU LGPL MPEG-1, MPEG-2, MPEG-4 ASP, H.261, H.263, VC-3, WMV7, WMV8, MJPEG, MS-MPEG-4v3, DV, Sorenson codec, etc. Lossy / Lossless DCT Yes Yes Yes Yes Yes
FFavs (libavcodec) FFavs team 2009 0.0.3 (2009)[12] GNU LGPL MPEG-1, MPEG-2, MPEG-4 ASP, etc. Lossy / Lossless DCT Un­known Un­known Un­known Un­known Un­known
OpenH264 Cisco Systems 2014-05 2.1.1 (2020)[13] 2-clause BSD MPEG-4 AVC/H.264 Lossy DCT No No Yes No No
Blackbird Forbidden Technologies plc 2006-01 9 (2017)[14] Proprietary Blackbird Lossy Adaptive coding Un­known Un­known Un­known Un­known Un­known
DivX DivX, Inc. 2001 DivX Software 11 (2024)[15] Proprietary MPEG-4 ASP, H.264 Lossy DCT Un­known Un­known Un­known Un­known Yes[16]
DivX ;-) a hack of Microsoft's MPEG-4v3 codec[17][18] 1998 3.20 alpha[19] (2000) Proprietary Microsoft's MPEG-4v3 (not MPEG-4 compliant) Lossy DCT Un­known Un­known Un­known Un­known Un­known
3ivx 3ivx Technologies Pty. Ltd. 2001 5.0.5 (2012)[20] Proprietary MPEG-4 ASP Lossy DCT Un­known Un­known Un­known Un­known Un­known
Nero Digital Nero AG 2003 1.5.4.0 (2010) Proprietary MPEG-4 ASP, H.264[21] Lossy DCT Un­known Un­known Un­known Un­known Un­known
ProRes 422 / ProRes 4444 Apple Inc. 2007 Un­known Proprietary ProRes Lossy DCT Un­known Un­known Un­known Un­known Un­known
Sorenson Video Sorenson Media 1998 Un­known Proprietary Sorenson Video Lossy DCT Un­known Un­known Un­known Un­known Un­known
Sorenson Spark Sorenson Media 2002 Un­known Proprietary Sorenson Spark Lossy DCT Un­known Un­known Un­known Un­known Un­known
VP3 On2 Technologies 2000 Un­known BSD-style[5] Patented, but freely licensed[*] Lossy DCT Un­known Un­known Un­known Un­known Un­known
VP4 On2 Technologies 2001 Un­known Proprietary VP4 Lossy DCT Un­known Un­known Un­known Un­known Un­known
VP5 On2 Technologies 2002 Un­known Proprietary VP5 Lossy DCT Un­known Un­known Un­known Un­known Un­known
VP6 On2 Technologies 2003 Un­known Proprietary VP6 Lossy DCT Un­known Un­known Un­known Un­known Un­known
VP7 On2 Technologies 2005 Un­known Proprietary VP7 Lossy DCT Un­known Un­known Un­known Un­known Un­known
libvpx (VP8) On2 Technologies (now owned by Google) 2008 1.11.0 (2021)[22] BSD-style Patented, but freely licensed Lossy DCT Un­known Un­known Un­known Un­known Un­known
libvpx (VP9) Google 2013 1.11.0 (2021)[22] BSD-style Patented, but freely licensed Lossy / Lossless DCT Yes, not in libvpx but in proprietary VP9 OpenCL codecs by Luxoft and Ittiam Un­known Un­known Un­known Un­known
DNxHD Avid Technology 2004 Un­known Proprietary VC-3 Lossy DCT Un­known Un­known Un­known Un­known Un­known
Cinema Craft Encoder SP2 Custom Technology Corporation 2000 1.00.01.09 (2009)[23] Proprietary MPEG-1, MPEG-2 Lossy DCT Un­known Un­known Un­known Un­known Un­known
TMPGEnc Free Version Pegasys Inc. 2001 2.525.64.184 (2008)[24] Proprietary MPEG-1, MPEG-2 Lossy DCT Un­known Un­known Un­known Un­known Un­known
Windows Media Encoder Microsoft 1999 9 (2003) (WMV3 in FourCC) Proprietary WMV, VC-1, (in early versions MPEG-4 Part 2 and not MPEG-4 compliant MPEG-4v3, MPEG-4v2) Lossy DCT Un­known Un­known Un­known Un­known Un­known
Cinepak Created by SuperMac, Inc., acquired and patented by Radius, Inc.

Currently maintained by Compression Technologies, Inc.[25]

1991 1.10.0.26 (1999) Proprietary Cinepak Lossy VQ Un­known Un­known Un­known Un­known Un­known
Indeo Video Intel Corporation, currently offered by Ligos Corporation 1992 5.11 Proprietary Indeo Video Lossy DCT Un­known Un­known Un­known Un­known Un­known
TrueMotion S On2 Technologies 1995 Un­known Proprietary TrueMotion S Lossy Intra-frame coding Un­known Un­known Un­known Un­known Un­known
RealVideo RealNetworks 1997 RealVideo 10[26] Proprietary H.263, RealVideo Lossy DCT Un­known Un­known Un­known Un­known Un­known
Huffyuv Ben Rudiak-Gould 2000 2.1.1 (2003)[27] GNU GPL 2 none Lossless Huffman Un­known Un­known Un­known Un­known Un­known
Lagarith Ben Greenwood 2004-10-04 1.3.27 (2011-12-08)[28] GNU GPL 2 none Lossless Huffman Un­known Un­known Un­known Un­known Un­known
MainConcept MainConcept GmbH 1993 8.8.0 (2011) Proprietary MPEG-1, MPEG-2, H.264/AVC, H.263, VC-3, MPEG-4 Part 2, DV, MJPEG etc. Lossy DCT Yes[29] Yes[30][31] Un­known Un­known Yes[32]
CellB Video Encoding Sun Microsystems 1992[33][34][35][36] [37] BSD-style none Lossy VQ Un­known Un­known Un­known Un­known Un­known
Elecard Elecard 2008 G4 (2010)[38] Proprietary MPEG-1, MPEG-2, MPEG-4, AVC Lossy DCT No Yes[38] No Yes[38] Yes[38]
Codec Creator/Maintainer First public release date Latest stable version License Patented compression formats Compression method Basic algorithm OpenCL support nVidia CUDA support Intel SSE Support Intel AVX support Intel Quick Sync Video support

  • The Xiph.Org Foundation has negotiated an irrevocable free license to Theora and other VP3-derived codecs for everyone, for any purpose.[39]

  • DivX Plus is also known as DivX 8. The latest stable version for Mac is DivX 7 for Mac.

Native operating system support

[edit]

Note that operating system support does not mean whether video encoded with the codec can be played back on the particular operating system – for example, video encoded with the DivX codec is playable on Unix-like systems using free MPEG-4 ASP decoders (FFmpeg MPEG-4 or Xvid), but the DivX codec (which is a software product) is only available for Windows and macOS.

Encoder Operating System Support
Codec macOS other Unix & Unix-like Windows
3ivx Yes Yes Yes
Blackbird Yes Yes Yes
Cinepak Yes No Yes
DivX Yes No Yes
FFmpeg Yes Yes Yes
RealVideo Yes Yes Yes
Schrödinger (Dirac) Yes Yes Yes
Sorenson Video 3 Yes No Yes
Theora Yes Yes Yes
x264 Yes Yes Yes
Xvid Yes Yes Yes
Elecard Yes No Yes

Technical details

[edit]
Codec Compression type Basic algorithm Highest supported bitrate Highest supported resolution Variable frame rate
Blackbird Lossy compression Un­known Un­known 384×288 (PAL), 320×240 (NTSC) Yes
Cinepak Lossy compression Vector quantization[40] Un­known Un­known Un­known
Dirac Lossy / Lossless compression Wavelet compression Unlimited[41] Unlimited[41] Yes
Sorenson 3 Lossy compression Discrete cosine transform Un­known Un­known Un­known
Theora Lossy compression Discrete cosine transform Gibit/s 1,048,560×1,048,560[42][43] Via chaining[*]
RealVideo Lossy compression Discrete cosine transform Un­known Un­known Yes
Elecard Lossy compression Unknown Unlimited 16k Yes

  • Theora streams with different frame rates can be chained in the same file, but each stream has a fixed frame rate.[42]

Freely available codecs comparisons

[edit]

List of freely available comparisons and their content description:

Name of comparison Type of comparison Date(s) of publication List of compared codecs Comments
Series of Doom9 codec comparisons Series of subjective comparison of popular codecs
  • 2002
  • 2003
  • 2005
  • DivX4.12, On2 VP3, XviD 1/25 and WMV8 and DivX5.01, XviD 3/27 and ON2 VP4 – at first version
  • Dirac, Elecard AVC HP, libavcodec MPEG-4, NeroDigital ASP, QuickTime 7, Snow, Theora, VideoSoft H.264 HP, XviD 1.1 beta 2 – in last one
Subjective comparison with convenient visualization
Series of MSU annual video codecs comparisons Series of objective HEVC/AV1 codecs comparisons
  • 2015 Oct.
  • 2016 Aug.
  • 2017 Sept.
  • 2018 Sept.
  • 2015: f265 H.265 Encoder, Intel MSS HEVC GAcc, Intel MSS HEVC Software, Ittiam HEVC Hardware Encoder, Ittiam HEVC Software Encoder, Strongene Lentoid HEVC Encoder, SHBP H.265 Real time encoder, x265, InTeleMax TurboEnc, SIF Encoder, VP9 Video Codec, x264
  • 2016: Chips&Media HEVC Encoder, Intel MSS HEVC Encoder, Kingsoft HEVC Encoder, nj265, SHBPH.265 Real time encoder, x265, nj264, x264
  • 2017: Kingsoft HEVC Encoder, nj265, NVIDIA NVENC SDK, Telecast, x265, AV1, nj264, SIF encoder, uAVS2, VP9, x264
  • 2018: HW265, Intel MFX (GA), Intel MFX (SW), Kingsoft HEVC Encoder, sz265, Tencent Shannon Encoder, UC265, VITEC HEVC GEN2+, x265, AV1, SIF encoder, sz264, VP9, x264
Detailed objective comparisons
Series of MSU annual H.264 codecs comparisons Series of objective H.264 codecs comparisons with MPEG-4 ASP reference
  • 2004
  • 2005 Jan.
  • 2005 Dec.
  • 2006 Dec.
  • 2007 Dec.
  • 2009 May
  • 2010 Apr.
  • 2011 May
  • 2012 May
  • 2013 Dec.
  • 2005 (Jan.): Mpegable AVC, Moonlight H.264, MainConcept H.264, Fraunhofer IIS, Ateme MPEG-4 AVC/H.264, Videosoft H.264, DivX Pro 5.1.1 (Not 264! Used for comparison with H.264 codecs as well tuned codec from previous generation MPEG-4 ASP)
  • 2005 (Dec.): DivX 6.0 (MPEG-4 ASP reference), ArcSoft H.264, Ateme H.264, ATI H.264, Elecard H.264, Fraunhofer IIS H.264, VSS H.264, x264
  • 2006: DivX 6.2.5 (MPEG-4 ASP reference), MainConcept H.264, Intel H.264, VSS H.264, x264, Apple H.264, (partially), Sorenson H.264 (partially)
  • 2007: XviD (MPEG-4 ASP codec), MainConcept H.264, Intel H.264, x264, AMD H.264, Artemis H.264
  • 2009: XviD (MPEG-4 ASP codec), Dicas H.264, Elecard H.264, Intel IPP H.264, MainConcept H.264, x264
  • 2010: XviD (MPEG-4 ASP codec), DivX H.264, Elecard H.264, Intel MediaSDK AVC/H.264, MainConcept H.264, Microsoft Expression, Encoder, Theora, x264
  • 2011: DivX H.264, Elecard H.264, Intel SandyBridge Transcoder (GPU encoder), MainConcept H.264 (software), MainConcept H.264 (CUDA based encoder), Microsoft Expression Encoder, DiscretePhoton, x264, VP8 (WebM project), XviD (MPEG-4 ASP codec)
  • 2012: DivX H.264, Elecard H.264, Intel Ivy Bridge QuickSync (GPU encoder), MainConcept H.264 (software), MainConcept H.264 (CUDA based encoder), MainConcept H.264 (OpenCL based encoder), DiscretePhoton, x264, XviD (MPEG-4 ASP codec)
Detailed objective comparisons
Series of Lossless Video Codecs Comparison Two size and time comparisons of lossless codecs (with lossless checking)
  • 2004 Oct.
  • 2007 Mar.
  • 2004 (14 codecs): Alpary v2.0, AVIzlib v2.2.3, CamStudio GZIP v1.0, CorePNG v0.8.2, FFV1 ffdshow 08/08/04, GLZW v1.01, HuffYUV v2.1.1, Lagarith v1.0.0.1, LEAD JPEG v1.0.0.1, LOCO v0.2, MindVid v1.0 beta 1, MSUlab beta v0.2.4, MSUlab v0.5.2, PicVideo JPEG v.2.10.0.29, VBLE beta
  • 2007 (16 codecs): Alpary, ArithYuv, AVIzlib, CamStudio GZIP, CorePNG, FastCodec, FFV1, Huffyuv, Lagarith, LOCO, LZO, MSU Lab, PICVideo, Snow, x264, YULS
in 2007 – more detailed report with new codecs including first standard H.264 (x264)
MSU MPEG-4 codecs comparison Objective comparison of MPEG-4 codecs
  • 2005 Mar.
DivX 5.2.1, DivX 4.12, DivX 3.22, MS MPEG-4 3688 v3, XviD 1.0.3, 3ivx D4 4.5.1, OpenDivX 0.3 Different versions of DivX were also compared. The Xvid results may be erroneous, as deblocking was disabled for it while used for DivX.
Subjective Comparison of Modern Video Codecs Scientifically accurate subjective comparison using 50 experts and SAMVIQ methodology
  • 2006 Feb.
DivX 6.0, Xvid 1.1.0, x264, WMV 9.0 (2 bitrates for every codec) PSNR via VQM via SSIM comparison was also done
MPEG-2 Video Decoders Comparison Objective MPEG-2 Decoders comparison
  • 2006 May.
bitcontrol MPEG-2 Video Decoder, DScaler MPEG2 Video Decoder, Elecard MPEG-2 Video Decoder, ffdshow MPEG-4 Video Decoder (libavcodec), InterVideo Video Decoder, Ligos MPEG Video Decoder, MainConcept MPEG Video Decoder, Pinnacle MPEG-2 Decoder Objectly tested (100 times per stream) decoders "crash test" (test on damaged stream – like scratched DVD or satellite samples)
Codecs comparison Personal subjective opinion
  • 2003 Nov.
3ivx, Avid AVI 2.02, Cinepak, DivX 3.11, DivX 4.12, DivX 5.0.2, DV, Huffyuv, Indeo 3.2, Indeo 4.4, Indeo 5.10, Microsoft MPEG-4 v1, Microsoft MPEG-4 v2, Microsoft RLE, Microsoft Video 1, XviD, 3ivx, Animation, Blackmagic 10-bit, Blackmagic 8-bit, Cinepak, DV, H.261, H.263, Motion-JPEG, MPEG-4 Video, PNG, Sorenson Video, Sorenson Video 3 Sometimes comparison is short (up to one text line per codec)
Evaluation of Dirac and Theora Scientific paper
  • 2009 Mar.
Dirac, Dirac Pro, Theora I, H.264, Motion JPEG2000 (the tested codecs are from Q2-2008) Quite detailed comparison of software available in Q2-2008; However, a buggy version of ffmpeg2Theora was used
VP8 versus x264 Objective and subjective quality comparison of VP8 and x264
  • 2010 Jun.
VP8, x264 VQM, SSIM and PSNR for 19 CIF video clips with bitrates of 100, 200, 500 and 1000 kbit/s

See also

[edit]

Notes and references

[edit]
  1. ^ Google - VP9 Bitrate Modes in Detail
  2. ^ Werner Robitza - CRF Guide
  3. ^ "AV1 Bitstream & Decoding Process Specification" (PDF). The Alliance for Open Media. Archived (PDF) from the original on 2 May 2019. Retrieved 31 March 2019.
  4. ^ Xiph.Org Foundation (2009) Theora development website - news, Retrieved 2009-10-06
  5. ^ a b "Redirect". Retrieved 22 November 2016.
  6. ^ a b Dirac Video Compression Archived 2008-11-07 at the Wayback Machine
  7. ^ Releases · gopro/cineform-sdk
  8. ^ x264 Encoder 164 r3079 Free Download - VideoHelp, Retrieved on 2021-12-14
  9. ^ "Release Notes — x265 documentation". x265.readthedocs.io. Retrieved 2021-12-14.
  10. ^ "Xvid.com". Retrieved 2021-12-14.
  11. ^ FFmpeg.org, Retrieved on 2021-12-14
  12. ^ FFavs Archived 2009-12-16 at the Wayback Machine
  13. ^ OpenH264 Releases
  14. ^ "Next generation of Blackbird video codec - Blackbird". Blackbird plc. Retrieved 14 December 2021.
  15. ^ "DivX Software Version History – DivX". DivX, LLC. Retrieved 14 December 2021.
  16. ^ "HEVC - DivX Labs". Archived from the original on 11 January 2017. Retrieved 22 November 2016.
  17. ^ VirtualDub VirtualDub documentation: codecs, Retrieved on 2009-08-08
  18. ^ FOURCC.org Video Codecs - Compressed Formats Archived 2009-05-23 at the Wayback Machine, Retrieved on 2009-08-08
  19. ^ Tom's Hardware (2001-10-22) A Tough Choice: DivX 3.20a Codec Still Better Than DivX 4.01 Codec, Retrieved on 2009-08-08
  20. ^ 3ivx, Retrieved on 2014-12-27
  21. ^ Nero AG What is Nero Digital, Retrieved on 2009-08-08
  22. ^ a b refs/tags/v1.11.0 - webm/libvpx - Git at Google, Retrieved on 14 December 2021
  23. ^ Custom Technology Corporation CINEMA CRAFT - Download, Retrieved on 2009-08-11
  24. ^ Pegasys Inc. What Is New, Retrieved on 2009-08-11
  25. ^ Compression Technologies, Inc., current maintainer of Cinepak
  26. ^ RealNetworks Products - Codecs Archived 2004-08-04 at the Wayback Machine
  27. ^ Huffyuv v2.1.1, Retrieved on 2009-08-09
  28. ^ Lagarith Lossless Video Codec, Retrieved on 2018-02-10
  29. ^ GmbH, MainConcept. "SDKs - Software Development Kits: MainConcept". Archived from the original on 28 January 2013. Retrieved 22 November 2016.
  30. ^ "MainConcept will present latest GPU CUDA Encoding at NVIDIA Technology Conference!: MainConcept". Archived from the original on 2010-10-02. Retrieved 2010-10-26.
  31. ^ GmbH, MainConcept. "SDKs - Software Development Kits: MainConcept". Archived from the original on 28 January 2013. Retrieved 22 November 2016.
  32. ^ GmbH, MainConcept. "SDKs - Adobe Plugins - Transcoding Software - MainConcept Products: MainConcept". Archived from the original on 6 September 2012. Retrieved 22 November 2016.
  33. ^ Speer, Michael F.; Don, Hoffman (21 August 1995). "RTP Payload Format of Sun's CellB Video Encoding". cs.columbia.edu. Archived from the original on 10 August 2021.
  34. ^ "Holiday_greeting_1992". GitHub. 11 February 2020.
  35. ^ Hoffman, Don; Speer, Michael F. (October 1996). "RTP Payload Format of Sun's CellB Video Encoding". Ietf Datatracker.
  36. ^ "XIL Programmer's Guide" (PDF). docs.oracle.com. Sun Microsystems. 1997. Archived (PDF) from the original on 17 October 2022.
  37. ^ "Network Video tool". GitHub. 14 October 2021.
  38. ^ a b c d "Elecard Group - Codec SDK G4 - h.264 codec, Codec SDK, software development kit, mpeg2 decoder, mpeg-2 decoder, avc codec, MPEG Decoder, MPEG Encoder, MPEG Multiplexer, MPEG Audio Decoder, Graph Viewer, AVC Encoder, AAC Decoder, AAC encoder, mpeg-4, API, sample application, source code". Retrieved 10 February 2018.
  39. ^ Theora.org FAQ: isn't VP3 a patented technology?
  40. ^ Technical description of the Cinepak codec Archived 2007-02-05 at the Wayback Machine
  41. ^ a b Frame rate, resolution, etc. are coded as variable length data.
  42. ^ a b "Theora format specification" (PDF). (827 KB)
  43. ^ Requires about 3 terabytes per uncompressed frame at maximum resolution (pg 37, Theora I Specification. March 7, 2006)
[edit]