Content deleted Content added
No edit summary Tag: Reverted |
Rescuing 4 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(44 intermediate revisions by 36 users not shown) | |||
Line 1:
{{Short description|
{{Redirect-confused|AVC1|AV1|VC-1}}
{{Lead too long|date=May 2023}}
{{Use mdy dates|date=February 2015}}
{{Infobox technology standard
| title
| long_name
| year_started = {{Start date and age|2003|p=y}}
▲| status = In force
|
▲| version = 14.0
▲| version_date = {{Start date|2021|08|22|df=y}}
| base_standards
▲| organization = [[ITU-T]], [[ISO]], [[International Electrotechnical Commission|IEC]]
▲| committee = [[ITU-T Study Group 16|SG16]] ([[VCEG]]), [[MPEG]]
▲| base_standards = [[H.261]], [[H.262]] (aka [[MPEG-2 Video]]), [[H.263]], [[MPEG-1]]
| related_standards = [[H.265]] (aka HEVC), [[H.266]] (aka VVC)
|
|
| abbreviation =
| license = [[MPEG LA]]<ref>{{cite tech report |publisher=Library of Congress |___location=Washington, D.C. |series=Sustainability of Digital Formats |type=Full draft |title=MPEG-4, Advanced Video Coding (Part 10) (H.264) |date=5 December 2011 |url=https://www.loc.gov/preservation/digital/formats/fdd/fdd000081.shtml |access-date=1 December 2021}}</ref>▼
| ___domain = [[Video compression]]
| website = {{URL|https://www.itu.int/rec/T-REC-H.264}}▼
▲| license
}}
[[File:H.264 block diagram with quality score.jpg|thumb|Block diagram of video coding layer of H.264 encoder with perceptual quality score]]
'''Advanced Video Coding''' ('''AVC'''), also referred to as '''H.264''' or '''MPEG-4 Part 10''', is a [[video compression standard]] based on block-oriented, [[motion compensation|motion-compensated]] coding.<ref>{{Cite web|url=https://www.itu.int/rec/T-REC-H.264|title=H.264 : Advanced video coding for generic audiovisual services|website=www.itu.int|url-status=live|archive-url=https://web.archive.org/web/20191031100750/https://www.itu.int/rec/T-REC-H.264|archive-date=2019-10-31|access-date=2019-11-22}}</ref> It is by far the most commonly used format for the recording, compression, and distribution of video content, used by
The intent of the H.264/AVC project was to create a standard capable of providing good video quality at substantially lower [[bit rate]]s than previous standards (i.e., half or less the bit rate of [[H.262/MPEG-2 Part 2|MPEG-2]], [[H.263]], or [[MPEG-4 Part 2]]), without increasing the complexity of design so much that it would be impractical or excessively expensive to implement. This was achieved with features such as a reduced-complexity integer [[discrete cosine transform]] (integer DCT),<ref name="apple"/> variable block-size segmentation, and multi-picture [[inter frame|inter-picture prediction]]. An additional goal was to provide enough flexibility to allow the standard to be applied to a wide variety of applications on a wide variety of networks and systems, including low and high bit rates, low and high
H.264 was standardized by the [[ITU-T]] [[Video Coding Experts Group]] (VCEG) of [[ITU-T Study Group 16|Study Group 16]] together with the [[ISO/IEC JTC 1]] [[Moving Picture Experts Group]] (MPEG). The project partnership effort is known as the Joint Video Team (JVT). The ITU-T H.264 standard and the ISO/IEC [[MPEG-4]] AVC standard (formally, ISO/IEC 14496-10 – MPEG-4 Part 10, Advanced Video Coding) are jointly maintained so that they have identical technical content. The final drafting work on the first version of the standard was completed in May 2003, and various extensions of its capabilities have been added in subsequent editions. [[High Efficiency Video Coding]] (HEVC), a.k.a. H.265 and MPEG-H Part 2 is a successor to H.264/MPEG-4 AVC developed by the same organizations, while earlier standards are still in common use.
H.264 is perhaps best known as being the most commonly used video encoding format on [[Blu-ray Disc]]s. It is also widely used by streaming Internet sources, such as videos from [[Netflix]], [[Hulu]], [[Amazon Prime Video]], [[Vimeo]], [[YouTube]], and the [[iTunes Store]], Web software such as the [[Adobe Flash Player]] and [[Microsoft Silverlight]], and also various [[HDTV]] broadcasts over terrestrial ([[
H.264 is restricted by [[patent]]s owned by various parties. A license covering most (but not all{{cn|date=February 2024}}) patents essential to H.264 is administered by a [[patent pool]] formerly administered by [[MPEG LA]]. Via Licensing Corp acquired MPEG LA in April 2023 and formed a new patent pool administration company called [[Via-LA|Via Licensing Alliance]].<ref>{{citation |url=https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=158547 |title=Via LA's Heath Hoglund Talks MPEG LA/Via Licensing Patent Pool Merger |first=Jan |last=Ozer |date=2023-05-08 |publisher=StreamingMedia.com}}</ref> The commercial use of patented H.264 technologies requires the payment of royalties to
== Naming ==
The H.264 name follows the [[ITU-T]] [[ITU-T#Recommendation categorization|naming convention]], where Recommendations are given a letter corresponding to their series and a recommendation number within the series. H.264 is part of "H-Series Recommendations: Audiovisual and
== History ==
=== Overall history ===
In early 1998, the [[Video Coding Experts Group]] (VCEG – ITU-T SG16 Q.6) issued a call for proposals on a project called H.26L, with the target to double the coding efficiency (which means halving the bit rate necessary for a given level of fidelity) in comparison to any other existing video coding standards for a broad variety of applications. [[VCEG]] was chaired by [[Gary Sullivan (engineer)|Gary Sullivan]] ([[Microsoft]], formerly [[PictureTel]], U.S.). The first draft design for that new standard was adopted in August 1999. In 2000, [[Thomas Wiegand]] ([[
In December 2001, VCEG and the Moving Picture Experts Group ([[MPEG]] – [[ISO/IEC JTC 1/SC 29]]/WG 11) formed a Joint Video Team (JVT), with the charter to finalize the video coding standard.<ref name=JVTsite>[http://www.itu.int/en/ITU-T/studygroups/com16/video/Pages/jvt.aspx Joint Video Team], [[ITU-T]] Web site.</ref> Formal approval of the specification came in March 2003. The JVT was (is) chaired by [[Gary Sullivan (engineer)|Gary Sullivan]], [[Thomas Wiegand]], and Ajay Luthra ([[Motorola]], U.S.: later [[Arris Group|Arris]], U.S.). In July 2004, the Fidelity Range Extensions (FRExt) project was finalized. From January 2005 to November 2007, the JVT was working on an extension of H.264/AVC towards scalability by an Annex (G) called [[Scalable Video Coding]] (SVC). The JVT management team was extended by [[Jens-Rainer Ohm]] ([[RWTH Aachen University]], Germany). From July 2006 to November 2009, the JVT worked on [[Multiview Video Coding]] (MVC), an extension of H.264/AVC towards [[3D television]] and limited-range [[free-viewpoint television]]. That work included the development of two new profiles of the standard: the Multiview High Profile and the Stereo High Profile.
Throughout the development of the standard, additional messages for containing supplemental enhancement information (SEI) have been developed. SEI messages can contain various types of data that indicate the timing of the video pictures or describe various properties of the coded video or how it can be used or enhanced. SEI messages are also defined that can contain arbitrary user-defined data. SEI messages do not affect the core decoding process, but can indicate how the video is recommended to be post-processed or displayed. Some other high-level properties of the video content are conveyed in video usability information (VUI), such as the indication of the [[color space]] for interpretation of the video content. As new color spaces have been developed, such as for [[High-dynamic-range video|high dynamic range]] and [[wide color gamut]] video, additional VUI identifiers have been added to indicate them.
=== Fidelity range extensions and professional profiles ===
The standardization of the first version of H.264/AVC was completed in May 2003. In the first project to extend the original standard, the JVT then developed what was called the Fidelity Range Extensions (FRExt). These extensions enabled higher
Five other new profiles (see version 7 below) intended primarily for professional applications were then developed, adding extended-gamut color space support, defining additional aspect ratio indicators, defining two additional types of "supplemental enhancement information" (post-filter hint and tone mapping), and deprecating one of the prior FRExt profiles (the High 4:4:4 profile) that industry feedback{{By whom|date=December 2016}} indicated should have been designed differently.
=== Scalable video coding ===
The next major feature added to the standard was [[Scalable Video Coding]] (SVC). Specified in Annex G of H.264/AVC, SVC allows the construction of bitstreams that contain ''layers'' of sub-bitstreams that also conform to the standard, including one such bitstream known as the "base layer" that can be decoded by
=== Multiview video coding ===
The next major feature added to the standard was [[Multiview Video Coding]] (MVC).
=== 3D-AVC and MFC stereoscopic coding ===
Line 71 ⟶ 73:
* Version 8 (Edition 3): (November 22, 2007) Major addition to H.264/AVC containing the amendment for [[Scalable Video Coding]] (SVC) containing Scalable Baseline, Scalable High, and Scalable High Intra profiles.<ref name=AVCV3November2007ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (11/2007) |publisher=ITU |url=http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=9226 |date=2007-11-22 |access-date=2013-04-18}}</ref>
* Version 9 (Edition 3.1): (January 13, 2009) Corrigendum containing minor corrections.<ref name=AVCV3January2009ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (2007) Cor. 1 (01/2009) |publisher=ITU |url=http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=9519 |date=2009-01-13 |access-date=2013-04-18}}</ref>
* Version 10 (Edition 4): (March 16, 2009) Amendment containing
* Version 11 (Edition 4): (March 16, 2009) Major addition to H.264/AVC containing the amendment for [[Multiview Video Coding]] (MVC) extension, including the Multiview High profile.<ref name=AVCV4March2009ITURecommendations/>
* Version 12 (Edition 5): (March 9, 2010) Amendment containing
* Version 13 (Edition 5): (March 9, 2010) Corrigendum containing minor corrections.<ref name=AVCV5March2010ITURecommendations/>
* Version 14 (Edition 6): (June 29, 2011) Amendment specifying a new level (Level 5.2) supporting higher processing rates in terms of maximum macroblocks per second, and a new profile (the Progressive High profile) supporting only the frame coding tools of the previously specified High profile.<ref name=AVCV6June2011ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (06/2011) |publisher=ITU |url=http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=11293 |date=2011-06-29 |access-date=2013-04-18}}</ref>
* Version 15 (Edition 6): (June 29, 2011) Corrigendum containing minor corrections.<ref name=AVCV6June2011ITURecommendations/>
* Version 16 (Edition 7): (January 13, 2012) Amendment containing
* Version 17 (Edition 8): (April 13, 2013) Amendment with additional SEI message indicators.<ref name=AVC8June2013ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (04/2013) |publisher=ITU |url=http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=11830 |date=2013-06-12 |access-date=2013-06-16}}</ref>
* Version 18 (Edition 8): (April 13, 2013) Amendment to specify the coding of depth map data for 3D stereoscopic video, including a Multiview Depth High profile.<ref name=AVC8June2013ITURecommendations/>
* Version 19 (Edition 8): (April 13, 2013) Corrigendum to correct an error in the sub-bitstream extraction process for multiview video.<ref name=AVC8June2013ITURecommendations/>
* Version 20 (Edition 8): (April 13, 2013) Amendment to specify additional [[color space]] identifiers (including support of [[
* Version 21 (Edition 9): (February 13, 2014) Amendment to specify the Enhanced Multiview Depth High profile.<ref name=AVC9February2014ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (02/2014) |publisher=ITU |url=http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=12063 |date=2014-11-28 |access-date=2016-02-28}}</ref>
* Version 22 (Edition 9): (February 13, 2014) Amendment to specify the multi-resolution frame compatible (MFC) enhancement for 3D stereoscopic video, the MFC High profile, and minor corrections.<ref name=AVC9February2014ITURecommendations/>
Line 87 ⟶ 89:
* Version 24 (Edition 11): (October 14, 2016) Amendment to specify additional levels of decoder capability supporting larger picture sizes (Levels 6, 6.1, and 6.2), the green metadata SEI message, the alternative depth information SEI message, and additional color-related VUI codepoint identifiers.<ref name=AVC14October2016ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (10/2016) |publisher=ITU |url=http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=12904 |date=2016-10-14 |access-date=2017-06-14}}</ref>
* Version 25 (Edition 12): (April 13, 2017) Amendment to specify the Progressive High 10 profile, [[hybrid log–gamma]] (HLG), and additional color-related VUI code points and SEI messages.<ref name=AVC13April2017ITURecommendations>{{cite news |title=ITU-T Recommendation H.264 (04/2017) |publisher=ITU |url=https://www.itu.int/ITU-T/recommendations/rec.aspx?rec=13189 |date=2017-04-13 |access-date=2017-06-14 |at=See Tables A-1, A-6 and A-7 for the tabulated level-dependent capabilities.}}</ref>
* Version 26 (Edition 13): (June 13, 2019) Amendment to specify additional SEI messages for ambient viewing environment, content light level information, content color volume, equirectangular projection,
*Version 27 (Edition 14): (August 22, 2021) Amendment to specify additional SEI messages for annotated regions and shutter interval information, and miscellaneous minor corrections and clarifications.<ref>{{Cite web|date=August 22, 2021|title=H.264: Advanced video coding for generic audiovisual services - Version 27 (Edition 14)|url=https://handle.itu.int/11.1002/1000/14659|url-status=live|archive-url=https://web.archive.org/web/20211104103832/https://www.itu.int/ITU-T/recommendations/rec.aspx?rec=14659&lang=en|archive-date=2021-11-04|access-date=2021-11-03|website=www.itu.int}}</ref>
*Version 28 (Edition 15): (August 13, 2024) Amendment to specify additional SEI messages for neural-network postfilter characteristics, neural-network post-filter activation, and phase indication, additional colour type identifiers, and miscellaneous minor corrections and clarifications.<ref>{{Cite web|date=August 13, 2024|title=H.264: Advanced video coding for generic audiovisual services - Version 28 (Edition 15)|url=https://handle.itu.int/11.1002/1000/15935|access-date=2025-02-12|website=www.itu.int}}</ref>
== Applications ==
{{Further|List of video services using H.264/MPEG-4 AVC}}
The H.264 video format has a very broad application range that covers all forms of digital compressed video from low bit-rate Internet streaming applications to HDTV broadcast and Digital Cinema applications with nearly lossless coding. With the use of H.264, bit rate savings of 50% or more compared to [[MPEG-2 Part 2]] are reported. For example, H.264 has been reported to give the same Digital Satellite TV quality as current MPEG-2 implementations with less than half the bitrate, with current MPEG-2 implementations working at around 3.5
To ensure compatibility and problem-free adoption of H.264/AVC, many standards bodies have amended or added to their video-related standards so that users of these standards can employ H.264/AVC. Both the [[Blu-ray Disc]] format and the now-discontinued [[HD DVD]] format include the H.264/AVC High Profile as one of three mandatory video compression formats. The Digital Video Broadcast project ([[
The [[Advanced Television Systems Committee]] (ATSC) standards body in the United States approved the use of H.264/AVC for broadcast television in July 2008, although the standard is not yet used for fixed ATSC broadcasts within the United States.<ref>{{cite web |url=http://www.atsc.org/cms/standards/a_72_part_1.pdf |title=ATSC Standard A/72 Part 1: Video System Characteristics of AVC in the ATSC Digital Television System |access-date=2011-07-30 |url-status=dead |archive-url=https://web.archive.org/web/20110807103348/http://www.atsc.org/cms/standards/a_72_part_1.pdf |archive-date=August 7, 2011 |df=mdy-all }}</ref><ref>{{cite web |url=http://www.atsc.org/cms/standards/a_72_part_2.pdf |title=ATSC Standard A/72 Part 2: AVC Video Transport Subsystem Characteristics |access-date=2011-07-30 |archive-url=https://web.archive.org/web/20110807103411/http://www.atsc.org/cms/standards/a_72_part_2.pdf |archive-date=August 7, 2011 |url-status=dead |df=mdy-all }}</ref> It has also been approved for use with the more recent [[ATSC-M/H]] (Mobile/Handheld) standard, using the AVC and SVC portions of H.264.<ref>{{cite web |url=http://atsc.org/cms/standards/a153/a_153-Part-7-2009.pdf |title=ATSC Standard A/153 Part 7: AVC and SVC Video System Characteristics |access-date=2011-07-30 |url-status=dead |archive-url=https://web.archive.org/web/20110726151422/http://atsc.org/cms/standards/a153/a_153-Part-7-2009.pdf |archive-date=July 26, 2011 |df=mdy-all }}</ref>
The [[
Many common [[DSLR]]s use H.264 video wrapped in QuickTime MOV containers as the native recording format.
Line 115 ⟶ 110:
[[AVC-Intra]] is an [[Video compression#Encoding theory|intraframe]]-only compression format, developed by [[Panasonic]].
[[XAVC]] is a recording format designed by Sony that uses level 5.2 of H.264/MPEG-4 AVC, which is the highest level supported by that video standard.<ref name=SonyXAVCrecordingformat>{{cite news |title=Sony introduces new XAVC recording format to accelerate 4K development in the professional and consumer markets |publisher=Sony |url=http://www.sony.co.uk/pro/article/broadcast-xavc-codec-1012 |date=2012-10-30 |access-date=2012-11-01}}</ref><ref name=SonyXAVCrecordingformatpdf>{{cite news |title=Sony introduces new XAVC recording format to accelerate 4K development in the professional and consumer markets |publisher=Sony |url=http://www.xavc-info.org/resource/1351573070000/xavcsite/share/data/XAVC_30-Oct-2012_NewsRelease.pdf |
== Design ==
Line 121 ⟶ 116:
=== Features ===
[[File:H.264 block diagram with quality score.jpg|thumb|150px|Block diagram of H.264]]
H.264/AVC/MPEG-4 Part 10 contains
* Multi-picture [[inter frame|inter-picture prediction]] including the following features:
Line 128 ⟶ 123:
** The ability to use multiple motion vectors per macroblock (one or two per partition) with a maximum of 32 in the case of a B macroblock constructed of 16 4×4 partitions. The motion vectors for each 8×8 or larger partition region can point to different reference pictures.
** The ability to use any macroblock type in [[Video compression picture types#Bi-directional predicted frames/slices (B-frames/slices)|B-frames]], including I-macroblocks, resulting in much more efficient encoding when using B-frames. This feature was notably left out from [[MPEG-4 ASP]].
** Six-tap filtering for
** [[Qpel|Quarter-pixel]] precision for motion compensation, enabling precise description of the displacements of moving areas. For
** Weighted prediction, allowing an encoder to specify the use of a scaling and offset when performing motion compensation, and providing a significant benefit in performance in special cases—such as fade-to-black, fade-in, and cross-fade transitions. This includes implicit weighted prediction for B-frames, and explicit weighted prediction for P-frames.
* Spatial prediction from the edges of neighboring blocks for [[Intra-frame|"intra"]] coding, rather than the "DC"-only prediction found in MPEG-2 Part 2 and the transform coefficient prediction found in H.263v2 and MPEG-4 Part 2. This includes luma prediction block sizes of 16×16, 8×8, and 4×4 (of which only one type can be used within each [[macroblock]]).
* Integer [[discrete cosine transform]] (integer DCT),<ref name="Wang">{{cite journal |last1=Wang |first1=Hanli |last2=Kwong |first2=S. |last3=Kok |first3=C. |s2cid=2060937 |title=Efficient prediction algorithm of integer DCT coefficients for H.264/AVC optimization |journal=IEEE Transactions on Circuits and Systems for Video Technology |date=2006 |volume=16 |issue=4 |pages=547–552 |doi=10.1109/TCSVT.2006.871390}}</ref><ref name="Stankovic">{{cite journal |last1=Stanković |first1=Radomir S. |last2=Astola |first2=Jaakko T. |title=Reminiscences of the Early Work in DCT: Interview with K.R. Rao |journal=Reprints from the Early Days of Information Sciences |date=2012 |volume=60 |page=17 |url=http://ticsp.cs.tut.fi/reports/ticsp-report-60-reprint-rao-corrected.pdf#page=18 |access-date=13 October 2019}}</ref><ref>{{cite book |last1=Kwon |first1=Soon-young |last2=Lee |first2=Joo-kyong |last3=Chung |first3=Ki-dong |title=Image Analysis and Processing – ICIAP 2005 |chapter=Half-Pixel Correction for MPEG-2/H.264 Transcoding |series=Lecture Notes in Computer Science |date=2005 |volume=3617 |pages=576–583 |doi=10.1007/11553595_71 |publisher=Springer Berlin Heidelberg|isbn=978-3-540-28869-5 |doi-access=free }}</ref> a type of discrete cosine transform (DCT)<ref name="Stankovic"/> where the transform is an integer approximation of the standard DCT.<ref name="Britanak2010">{{cite book |last1=Britanak |first1=Vladimir |last2=Yip |first2=Patrick C. |last3=Rao |first3=K. R. |author3-link=K. R. Rao |title=Discrete Cosine and Sine Transforms: General Properties, Fast Algorithms and Integer Approximations |date=2010 |publisher=[[Elsevier]] |isbn=9780080464640 |pages=ix, xiii, 1, 141–304 |url=https://books.google.com/books?id=iRlQHcK-r_kC&pg=PA141}}</ref> It has selectable block sizes<ref name="apple">{{cite web |last1=Thomson |first1=Gavin |last2=Shah |first2=Athar |title=Introducing HEIF and HEVC |url=https://devstreaming-cdn.apple.com/videos/wwdc/2017/503i6plfvfi7o3222/503/503_introducing_heif_and_hevc.pdf |publisher=[[Apple Inc.]] |year=2017 |access-date=5 August 2019}}</ref> and exact-match integer computation to reduce complexity, including:
** An exact-match integer 4×4 spatial block transform, allowing precise placement of [[residual frame|residual]] signals with little of the "[[ringing artifact|ringing]]" often found with prior codec designs. It is similar to the standard DCT used in previous standards, but uses a smaller block size and simple integer processing. Unlike the cosine-based formulas and tolerances expressed in earlier standards (such as H.261 and MPEG-2), integer processing provides an exactly specified decoded result.
** An exact-match integer 8×8 spatial block transform, allowing highly correlated regions to be compressed more efficiently than with the 4×4 transform. This design is based on the standard DCT, but simplified and made to provide exactly specified decoding.
** Adaptive encoder selection between the 4×4 and 8×8 transform block sizes for the integer transform operation.
Line 139 ⟶ 134:
* [[Lossless]] macroblock coding features including:
** A lossless "PCM macroblock" representation mode in which video data samples are represented directly,<ref>{{cite web|url=http://www.fastvdo.com/spie04/spie04-h264OverviewPaper.pdf |title=The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions |access-date=2011-07-30}}</ref> allowing perfect representation of specific regions and allowing a strict limit to be placed on the quantity of coded data for each macroblock.
** An enhanced lossless macroblock representation mode
* Flexible [[Interlaced video|interlace]]d-scan video coding features, including:
** Macroblock-adaptive frame-field (MBAFF) coding, using a macroblock pair structure for pictures coded as frames, allowing 16×16 macroblocks in field mode (compared with MPEG-2, where field mode processing in a picture that is coded as a frame results in the processing of 16×8 half-macroblocks).
** Picture-adaptive frame-field coding (PAFF or PicAFF)
* A quantization design including:
** Logarithmic step size control for easier bit rate management by encoders and simplified inverse-quantization scaling
** Frequency-customized quantization scaling matrices selected by the encoder for perceptual-based quantization optimization
* An in-loop [[
* An [[
** [[Context-adaptive binary arithmetic coding]] (CABAC), an algorithm to losslessly compress syntax elements in the video stream knowing the probabilities of syntax elements in a given context. CABAC compresses data more efficiently than CAVLC but requires considerably more processing to decode.
** [[Context-adaptive variable-length coding]] (CAVLC), which is a lower-complexity alternative to CABAC for the coding of quantized transform coefficient values. Although lower complexity than CABAC, CAVLC is more elaborate and more efficient than the methods typically used to code coefficients in other prior designs.
** A common simple and highly structured [[
* Loss resilience features including:
** A [[Network Abstraction Layer]] (NAL) definition
** [[Flexible macroblock ordering]] (FMO), also known as slice groups, and arbitrary slice ordering (ASO), which are techniques for restructuring the ordering of the representation of the fundamental regions (''macroblocks'') in pictures. Typically considered an error/loss robustness feature, FMO
** Data partitioning (DP), a feature providing the ability to separate more important and less important syntax elements into different packets of data, enabling the application of unequal error protection (UEP) and other types of improvement of error/loss robustness.
** Redundant slices (RS), an error/loss robustness feature that lets an encoder send an extra representation of a picture region (typically at lower fidelity) that can be used if the primary representation is corrupted or lost.
** Frame numbering, a feature that allows the creation of "sub-sequences", enabling temporal scalability by optional inclusion of extra pictures between other pictures, and the detection and concealment of losses of entire pictures, which can occur due to network packet losses or channel errors.
* Switching slices, called SP and SI slices,
* A simple automatic process for preventing the accidental emulation of [[start code]]s, which are special sequences of bits in the coded data that allow random access into the bitstream and recovery of byte alignment in systems that can lose byte synchronization.
* Supplemental enhancement information (SEI) and video usability information (VUI), which are extra information that can be inserted into the bitstream for various purposes such as indicating the color space used the video content or various constraints that apply to the encoding. SEI messages can contain arbitrary user-defined metadata payloads or other messages with syntax and semantics defined in the standard.
Line 163 ⟶ 158:
* Support of monochrome (4:0:0), 4:2:0, 4:2:2, and 4:4:4 [[chroma sampling]] (depending on the selected profile).
* Support of sample bit depth precision ranging from 8 to 14 bits per sample (depending on the selected profile).
* The ability to encode individual color planes as distinct pictures with their own slice structures, macroblock modes, motion vectors, etc., allowing encoders to be designed with a simple parallelization structure (supported only in the three 4:4:4-capable profiles).
* Picture order count, a feature that serves to keep the ordering of the pictures and the values of samples in the decoded pictures isolated from timing information, allowing timing information to be carried and controlled/changed separately by a system without affecting decoded picture content.
These techniques, along with several others, help H.264 to perform significantly better than any prior standard under a wide variety of circumstances in a wide variety of application environments. H.264 can often perform radically better than MPEG-2 video—typically obtaining the same quality at half of the bit rate or less, especially on high bit rate and high
Like other ISO/IEC MPEG video standards, H.264/AVC has a reference software implementation that can be freely downloaded.<ref>{{cite web|author=Karsten Suehring |url=http://iphome.hhi.de/suehring/tml/download/ |title=H.264/AVC JM Reference Software Download |publisher=Iphome.hhi.de |access-date=2010-05-17}}</ref> Its main purpose is to give examples of H.264/AVC features, rather than being a useful application ''per se''. Some reference hardware design work has also been conducted in the [[Moving Picture Experts Group]].
The above-mentioned aspects include features in all profiles of H.264. A profile for a codec is a set of features of that codec identified to meet a certain set of specifications of intended applications. This means that many of the features listed are not supported in some profiles. Various profiles of H.264/AVC are discussed in
=== Profiles ===
Line 180 ⟶ 175:
;Extended Profile (XP, 88): 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.
;Main Profile (MP, 77): This profile is used for standard-definition digital TV broadcasts that use the MPEG-4 format as defined in the DVB standard.<ref>{{cite web|url=http://www.etsi.org/deliver/etsi_ts/101100_101199/101154/01.09.01_60/ts_101154v010901p.pdf |title=TS 101 154 – V1.9.1 – Digital Video Broadcasting (DVB); Specification for the use of Video and Audio Coding in Broadcasting Applications based on the MPEG-2 Transport Stream |access-date=2010-05-17}}</ref> It is not, however, used for high-definition television broadcasts, as the importance of this profile faded when the High Profile was developed in 2004 for that application.
;High Profile (HiP, 100): The primary profile for broadcast and disc storage applications, particularly for high-definition television applications (for example, this is the profile adopted by the [[Blu-ray Disc]] storage format and the [[
;Progressive High Profile (PHiP, 100 with constraint set 4): Similar to the High profile, but without support of field coding features.
;Constrained High Profile (100 with constraint
;High 10 Profile (Hi10P, 110): Going beyond typical 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, 122): 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.
Line 189 ⟶ 184:
For camcorders, editing, and professional applications, the standard contains four additional [[Intra-frame]]-only 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 (110 with constraint set 3): The High 10 Profile
;High 4{{!:}}2{{!:}}2 Intra Profile (122 with constraint set 3): The High 4:2:2 Profile constrained to all-Intra use.
;High 4{{!:}}4{{!:}}4 Intra Profile (244 with constraint set 3): The High 4:4:4 Profile
;CAVLC 4{{!:}}4{{!:}}4 Intra Profile (44): The High 4:4:4 Profile
As a result of the [[Scalable Video Coding]] (SVC) extension, the standard contains five additional ''scalable profiles'', which are defined as a combination of
;Scalable Baseline Profile (83): Primarily targeting video conferencing, mobile, and surveillance applications, this profile builds on top of the Constrained Baseline profile to which the base layer (a subset of the bitstream) must conform. For the scalability tools, a subset of the available tools is enabled.
Line 235 ⟶ 230:
|-
! [[Color depth|Bit depth]] (per sample)
| {{Yes|8}}
|-
! [[Chroma subsampling|Chroma]] formats
| {{Yes|4:2:0<br /><br /> }}
|-
! [[Flexible macroblock ordering|Flexible macroblock ordering (FMO)]]
| {{no}}
|-
! [[Arbitrary slice ordering|Arbitrary slice ordering (ASO)]]
| {{no}}
|-
! Redundant slices (RS)
| {{no}}
|-
! Data Partitioning
| {{no}}
|-
! SI and SP slices
| {{no}}
|-
! Interlaced coding (PicAFF, MBAFF)
| {{no}}
|-
! B slices
| {{no}}
|- style="display:none"
! Multiple reference frames
Line 271 ⟶ 266:
|-
! [[CABAC|CABAC entropy coding]]
| {{no}}
|-
! 4:0:0 ([[
| {{no}}
|-
! 8×8 vs. 4×4 transform adaptivity
| {{no}}
|-
! Quantization scaling matrices
| {{no}}
|-
! Separate C<sub>B</sub> and C<sub>R</sub> QP control
| {{no}}
|-
! Separate color plane coding
| {{no}}
|-
! Predictive lossless coding
| {{no}}
|}
=== Levels ===
As the term is used in the standard, a "''level''" is a specified set of constraints that indicate a degree of required decoder performance for a profile.
<!-- Please don't change the default state of the table to collapsed using the mw-collapsed option since that causes problems with some web browsers, such as making the customtoggle in the table not work when the page is refreshed or revisited. -->
{| class="wikitable" style="text-align:right;"
Line 425 ⟶ 420:
|}
The maximum bit rate for the High Profile is 1.25 times that of the Constrained Baseline, Baseline, Extended
The number of luma samples is 16×16=256 times the number of macroblocks (and the number of luma samples per second is 256 times the number of macroblocks per second).
=== Decoded picture buffering ===
Previously encoded pictures are used by H.264/AVC encoders to provide predictions of the values of samples in other pictures.
: {{mono|''DpbCapacity'' {{=}} min(floor(''MaxDpbMbs'' / (''PicWidthInMbs'' * ''FrameHeightInMbs'')), 16)}}
Line 486 ⟶ 481:
For example, for an HDTV picture that is 1,920 samples wide ({{samp|1=PicWidthInMbs = 120}}) and 1,080 samples high ({{samp|1=FrameHeightInMbs = 68}}), a Level 4 decoder has a maximum DPB storage capacity of {{samp|floor(32768/(120*68))}} = 4 frames (or 8 fields). Thus, the value 4 is shown in parentheses in the table above in the right column of the row for Level 4 with the frame size 1920×1080.
== Implementations ==
[[File:YouTube H264 video with Opus audio stat screenshot.png|upright=1.2|thumb|A YouTube video statistics with AVC (H.264) video codec and [[Opus (audio format)|Opus]] audio format]]
In 2009, the [[WHATWG|HTML5 working group]] was split between supporters of Ogg [[Theora]], a free video format
On March 18, 2012, [[Mozilla]] announced support for H.264 in Firefox on mobile devices, due to
On October 30, 2013, [[Rowan Trollope]] from [[Cisco Systems]] announced that Cisco would release both binaries and source code of an H.264 video codec called [[OpenH264]] under the [[Simplified BSD license]], and pay all royalties for its use to MPEG LA for any software projects that use Cisco's precompiled binaries, thus making Cisco's OpenH264 ''binaries'' free to use. However, any software projects that use Cisco's source code instead of its binaries would be legally responsible for paying all royalties to MPEG LA. Target CPU architectures include x86 and ARM, and target operating systems include Linux, Windows XP
Although iOS was not supported by the 2013 Cisco software release, Apple updated its Video Toolbox Framework with [[iOS 8]] (released in September 2014) to provide direct access to hardware-based H.264/AVC video encoding and decoding.<ref name=OpenH264faq/>
Line 549 ⟶ 544:
=== Hardware <span class="anchor" id="HW-BASED"></span>===
{{See also|H.264/MPEG-4 AVC products and implementations}}
Because H.264 encoding and decoding requires significant computing power in specific types of arithmetic operations, software implementations that run on general-purpose CPUs are typically less power efficient. However, the latest{{when|date=January 2020}} quad-core general-purpose x86 CPUs have sufficient computation power to perform real-time SD and HD encoding. Compression efficiency depends on video algorithmic implementations, not on whether hardware or software implementation is used. Therefore, the difference between hardware and software
CPU
The 2nd generation [[Intel]] "[[Sandy Bridge]]" [[Intel Core|Core i3/i5/i7]] processors introduced at the January 2011 CES ([[Consumer Electronics Show]]) offer an on-chip hardware full HD H.264 encoder, known as [[Intel Quick Sync Video]].<ref>{{cite web |url=http://software.intel.com/en-us/articles/quick-reference-guide-to-intel-integrated-graphics/ |title=Quick Reference Guide to generation Intel Core Processor Built-in Visuals |publisher=Intel Software Network |date=2010-10-01 |access-date=2011-01-19}}</ref><ref>{{cite web |url=http://www.intel.com/content/www/us/en/architecture-and-technology/quick-sync-video/quick-sync-video-general.html |title=Intel Quick Sync Video|publisher=www.intel.com |date=2010-10-01 |access-date=2011-01-19}}</ref>
A hardware H.264 encoder can be an [[
ASIC encoders with H.264 encoder functionality are available from many different semiconductor companies, but the core design used in the ASIC is typically licensed from one of a few companies such as [[Chips&Media]], Allegro DVT, [[On2]] (formerly Hantro, acquired by Google), [[Imagination Technologies]], NGCodec. Some companies have both FPGA and ASIC product offerings.<ref>{{cite web |url=http://www.design-reuse.com/sip/?q=H.264+encoder |title=Design-reuse.com |publisher=Design-reuse.com |date=1990-01-01 |access-date=2010-05-17}}</ref>
Texas Instruments manufactures a line of ARM + DSP cores that perform DSP H.264 BP encoding 1080p at
== Licensing ==
{{see also|Microsoft Corp. v. Motorola Inc.|Qualcomm Inc. v. Broadcom Corp.}}
In countries where [[software patent|patents on software algorithms]] are upheld, vendors and commercial users of products that use H.264/AVC are expected to pay patent licensing royalties for the patented technology that their products use.<ref>{{cite web |url=http://www.mpegla.com/main/programs/AVC/Documents/avcweb.pdf |title=Briefing portfolio |website=www.mpegla.com |access-date=December 1, 2016 |archive-date=November 28, 2016 |archive-url=https://web.archive.org/web/20161128050907/http://www.mpegla.com/main/programs/AVC/Documents/avcweb.pdf |url-status=dead }}</ref> This applies to the Baseline Profile as well.<ref>{{cite web|url=http://blogs.sun.com/openmediacommons/entry/oms_video_a_project_of|title=OMS Video, A Project of Sun's Open Media Commons Initiative|access-date=2008-08-26|archive-url=https://web.archive.org/web/20100511060302/http://blogs.sun.com/openmediacommons/entry/oms_video_a_project_of|archive-date=May 11, 2010|url-status=dead|df=mdy-all}}</ref>
A private organization known as [[MPEG LA]], which is not affiliated in any way with the MPEG standardization organization, administers the licenses for patents applying to this standard, as well as other [[patent pool]]s, such as for MPEG-4 Part 2 Video, HEVC
On August 26, 2010, MPEG LA announced that royalties
Since the first version of the standard was completed in May 2003 ({{age|month=May|year=2003}} years ago) and the most commonly used profile (the High profile) was completed in June 2004{{Citation needed|date=December 2023}} ({{age|month=June|year=2004}} years ago),
In 2005, Qualcomm sued Broadcom in
In October 2023 [[Nokia]] sued [[HP Inc.|HP]] and [[Amazon (company)|Amazon]] for H.264/H.265 patent infringement in USA, UK and other locations.<ref>{{Cite web |title=nokia h264 |url=https://www.nokia.com/blog/nokia-seeks-compensation-for-amazons-use-of-our-patented-multimedia-inventions/}}</ref>
Line 594 ⟶ 589:
== Further reading ==
{{Refbegin}}
* {{Cite journal |url = http://ip.hhi.de/imagecom_G1/assets/pdfs/csvt_overview_0305.pdf |first1 = Thomas |last1 = Wiegand |first2 = Gary J. |last2 = Sullivan |first3 = Gisle |last3 = Bjøntegaard |first4 = Ajay |last4 = Luthra |title = Overview of the H.264/AVC Video Coding Standard |journal = IEEE Transactions on Circuits and Systems for Video Technology |date = July 2003 |volume = 13 |issue = 7 |pages = 560–576 |doi = 10.1109/TCSVT.2003.815165 |access-date = January 31, 2011 |archive-date = April 29, 2011 |archive-url = https://web.archive.org/web/20110429013301/http://ip.hhi.de/imagecom_G1/assets/pdfs/csvt_overview_0305.pdf |url-status = dead }}
* {{Cite journal |url = http://www.fastvdo.com/spie04/spie04-h264OverviewPaper.pdf |first1 = Pankaj |last1 = Topiwala |first2 = Gary J. |last2 = Sullivan |first3 = Ajay |last3 = Luthra |editor1-first = Andrew G |editor1-last = Tescher |s2cid = 2308860 |title = The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions |journal = SPIE Applications of Digital Image Processing XXVII |series = Applications of Digital Image Processing XXVII |date = August 2004 |volume = 5558 |page = 454 |doi = 10.1117/12.564457 |bibcode = 2004SPIE.5558..454S |access-date = January 31, 2011 }}
* {{Cite
* {{Cite journal |url = https://archive.org/download/video-coding-using-the-h.-264-mpeg-4-avc-compression-standard/Video%20coding%20using%20the%20H.264%3AMPEG-4%20AVC%20compression%20standard.pdf |first1 = Atul |last1 = Puri |first2 = Xuemin |last2 = Chen |first3 = Ajay |last3 = Luthra |title = Video coding using the H.264/MPEG-4 AVC compression standard |journal = Signal Processing: Image Communication |date = October 2004 |volume = 19 |issue = 9 |pages = 793–849 |access-date = March 30, 2011 |doi = 10.1016/j.image.2004.06.003 }}
* {{Cite journal |url = http://ip.hhi.de/imagecom_G1/assets/pdfs/pieee_sullivan_wiegand_2005.pdf |first1 = Gary J. |last1 = Sullivan |first2 = Thomas |last2 = Wiegand |s2cid = 1362034 |title = Video Compression—From Concepts to the H.264/AVC Standard |journal = Proceedings of the IEEE |date = January 2005 |volume = 93 |issue = 1 |pages = 18–31 |access-date = January 31, 2011 |doi = 10.1109/jproc.2004.839617 }}
* {{cite web |url=http://www.vcodex.com/h264.html |title=Learn about video compression and H.264 |work=VCODEX |publisher=Vcodex Limited |first1=Iain E. G. |last1=Richardson |access-date=January 31, 2011 |date=January 2011 |archive-date=January 28, 2011 |archive-url=https://web.archive.org/web/20110128164552/http://www.vcodex.com/h264.html |url-status=dead }}
{{Refend}}
== External links ==
* {{Official website|http://www.itu.int/rec/T-REC-H.264|ITU-T publication page: H.264: Advanced video coding for generic audiovisual services}}
* [
* [https://web.archive.org/web/20040603025720/http://www.vcodex.com/h264.html H.264/MPEG-4 Part 10 Tutorials (Richardson)]
* {{cite web|url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=56538|work=ISO publication page: ISO/IEC 14496-10:2010 – Information technology — Coding of audio-visual objects | title = Part 10: Advanced Video Coding}}
* {{cite web|url=http://iphome.hhi.de/suehring/tml/|work=IP Homepage | title = H.264/AVC JM Reference Software|access-date=2007-04-15}}
Line 614 ⟶ 609:
* {{cite web|url=http://www.networkwebcams.com/ip-camera-learning-center/2009/04/03/using-h264-video-compression-in-ip-video-surveillance-systems/| title=Discussion on H.264 with respect to IP cameras in use within the security and surveillance industries| date=April 3, 2009}} (dated April 2009)
* {{cite web|url=http://compression.ru/video/codec_comparison/h264_2010/| title=Sixth Annual H.264 video codecs comparison | publisher = [[Moscow State University]]}} (dated May 2010)
* {{cite web|url=https://support.etcconnect.com/ETC/FAQ/SMPTE_QuickGuide/ | title= SMPTE QuickGuide | date= May 14, 2018 | publisher = ETC}}
{{Compression formats}}
|