H.264 är ett videokodningsformat som ingår i ISO-standarden MPEG-4 del 10. Denna kodek används av Blu-Ray och även av HDTV-sändningar i Europa. H.264, kallas även Advanced Video Coding (AVC). H.264 spelas i populära videospelare, som VLC, QuickTime-video och i Flash-video. En populär öppen implementation på standarden är x264.
Meningen med H.264/AVC-projektet var att skapa en standard som kunde ge bra videokvalité med mycket lägre bithastighet än tidigare standarder utan att öka komplexiteten. H.264-standarden kan ses som en familj av standarder, där medlemmarna är profiler. En decoder kan avkoda minst en profil, men inte nödvändigtvis alla profiler. Avkodarens specifikation beskriver vilken profil som kan avkodas.
Namnet H.264 följer ITU-T-namnkonventionen, där standarden är medlem i H.26x-gruppen av VCEG videokodningsteknik. Namnet MPEG-4 AVC avser namnkonventionen i ISO/IEC MPEG, där standarden är del 10 av ISO / IEC 14.496 vilket är sviten av standarder känd som MPEG-4. Standarden har utvecklats gemensamt i ett partnerskap för VCEG och MPEG, efter tidigare utvecklingsarbete i ITU-T som ett VCEG-projekt som kallas H.26L. Det är därför vanligt att hänvisa till standarden med namn som H.264/AVC, AVC/H.264, H.264/MPEG-4 AVC, eller MPEG-4/H.264 AVC, för att betona det gemensamma arvet. Ibland kallas den också "JVT codec", med hänvisning till det gemensamma Video Team (JVT - Joint Video Team) som utvecklade den.
Standardiseringen av den första versionen av H.264/AVC avslutades i maj 2003. I det första projektet att förlänga den ursprungliga standarden utvecklade JVT det som kallades Fidelity Range Extensions (FRExt). Dessa utökningar har aktiverat högre bildkvalitetskodning genom att stödja ökat samplingsbitdjup och mer färginformation, inklusive stöd för färgformaten Y'CbCr 04:02:02 (= YUV 4:2:2) och Y "CbCr 04:04:04. Flera andra funktioner som också ingår i Fidelity Range Extensions projekt är adaptiv växling mellan 4 × 4 och 8 × 8 heltalstransformeringar, koda specificerade perceptuell-baserad kvantisering och viktning av matriser, effektiv interbild, förlustfri kodning och stöd för extra färgrymder. Designarbetet med Fidelity Range Extensions slutfördes i juli 2004, och utkastsarbetet avslutades i september 2004.
I senare utökningar av standarden ingick också att lägga till ytterligare fem nya profiler i första hand avsedda för professionellt bruk, lägga utökat stöd för gamut färgrymd, definiera ytterligare indikatorer för bildförhållande, definiera ytterligare två typer av "kompletterande förstärkningsinformation" (post-filter tips och tonmappning) och borttagning (deprecering) av en av de tidigare FRExt-profiler som industrin ansett borde ha utformats annorlunda.
Nästa stora funktion som lades till i standarden var Scalable Video Coding (SVC). SVC specificeras i bilaga G H.264/AVC; SVC tillåter konstruktion av bitströmmar som innehåller sub-bitströmmar som också överensstämmer med standarden. Scalable Video Coding-utökningen avslutades i november 2007.
Nästa stora funktion som därefter lades till i standarden var Multiview Video Coding (MVC). MVC är specificerat i bilaga H H.264/AVC; MVC tillåter konstruktionen av bitströmmar som representerar mer än en vy av en videoscen. Ett viktigt exempel på denna funktionalitet är stereoskopisk 3D-videokodning. Två profiler utvecklades i MVC-arbetet: Multiview High Profile stöder ett godtyckligt antal vyer, och Stereo High Profile är utformad särskilt för två-vy stereoskopisk video. Multiview Video Coding-utökningen avslutades i november 2009.
Standarden definierar 17 uppsättningar av förmågor, som kallas profiler, varav en med inriktning på särskilda klasser av tillämpningar.
Profiler för icke skalbara 2D video-tillämpningar inkluderar följande:
För videokameror, redigering och professionella applikationer innehåller standarden ytterligare fyra profiler för enbart Intra-frame, vilka definieras som enkla delmängder av andra motsvarande profiler. Dessa är främst för professionella (till exempel kamera och redigeringsystem) applikationer:
Som ett resultat av Scalable Video Coding (SVC)-utökningen, innehåller standarden ytterligare tre scalable-profiler:
Som ett resultat av Multiview Video Coding (MVC)-utökningen, innehåller standarden ytterligare två multiview-profiler:
Funktion | CBP | BP | XP | MP | HiP | Hi10P | Hi422P | Hi444PP |
---|---|---|---|---|---|---|---|---|
I and P slices | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Chroma formats | 4:2:0 | 4:2:0 | 4:2:0 | 4:2:0 | 4:2:0 | 4:2:0 | 4:2:0/4:2:2 | 4:2:0/4:2:2/4:4:4 |
Sample depths (bits) | 8 | 8 | 8 | 8 | 8 | 8 to 10 | 8 to 10 | 8 to 14 |
Flexible macroblock ordering (FMO) | Nej | Ja | Ja | Nej | Nej | Nej | Nej | Nej |
Arbitrary slice ordering (ASO) | Nej | Ja | Ja | Nej | Nej | Nej | Nej | Nej |
Redundant slices (RS) | Nej | Ja | Ja | Nej | Nej | Nej | Nej | Nej |
Data Partitioning | Nej | Nej | Ja | Nej | Nej | Nej | Nej | Nej |
SI and SP slices | Nej | Nej | Ja | Nej | Nej | Nej | Nej | Nej |
B slices | Nej | Nej | Ja | Ja | Ja | Ja | Ja | Ja |
Interlaced coding (PicAFF, MBAFF) | Nej | Nej | Ja | Ja | Ja | Ja | Ja | Ja |
Multiple reference frames | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
In-loop deblocking filter | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
CAVLC entropy coding | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
CABAC entropy coding | Nej | Nej | Nej | Ja | Ja | Ja | Ja | Ja |
8×8 vs. 4×4 transform adaptivity | Nej | Nej | Nej | Nej | Ja | Ja | Ja | Ja |
Quantization scaling matrices | Nej | Nej | Nej | Nej | Ja | Ja | Ja | Ja |
Separate Cb and Cr QP control | Nej | Nej | Nej | Nej | Ja | Ja | Ja | Ja |
Monochrome (4:0:0) | Nej | Nej | Nej | Nej | Ja | Ja | Ja | Ja |
Separate color plane coding | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Ja |
Predictive lossless coding | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Ja |
Som termen nivå/level används i standarden innebär en "nivå/level" en viss uppsättning begränsningar som visar vilken nivå/level som krävs av dekodern för en specifik profil. Till exempel kommer en nivå/level av stöd inom en profil ange maximal bildupplösning, bildhastighet och bithastighet som dekodern kan använda. En dekoder som säger sig klara en given nivå/level måste kunna avkoda alla bitstreams som är kodade för den nivån och alla lägre nivåer/levels.
Level | Max macroblocks | Max video bithastighet (video coding layer – VCL) | Exempel för hög upplösning @ frame rate (max lagrade frames) | ||||
---|---|---|---|---|---|---|---|
per sekund | per frame | BP, XP, MP (kbit/s) |
HiP (kbit/s) |
Hi10P (kbit/s) |
Hi422P, Hi444PP (kbit/s) | ||
1 | 1,485 | 99 | 64 | 80 | 192 | 256 | 128×96@30.9 (8) 176×144@15.0 (4) |
1b | 1,485 | 99 | 128 | 160 | 384 | 512 | 128×96@30.9 (8) 176×144@15.0 (4) |
1.1 | 3,000 | 396 | 192 | 240 | 576 | 768 | 176×144@30.3 (9) 320×240@10.0 (3) 352×288@7.5 (2) |
1.2 | 6,000 | 396 | 384 | 480 | 1,152 | 1,536 | 320×240@20.0 (7) 352×288@15.2 (6) |
1.3 | 11,880 | 396 | 768 | 960 | 2,304 | 3,072 | 320×240@36.0 (7) 352×288@30.0 (6) |
2 | 11,880 | 396 | 2,000 | 2,500 | 6,000 | 8,000 | 320×240@36.0 (7) 352×288@30.0 (6) |
2.1 | 19,800 | 792 | 4,000 | 5,000 | 12,000 | 16,000 | 352×480@30.0 (7) 352×576@25.0 (6) |
2.2 | 20,250 | 1,620 | 4,000 | 5,000 | 12,000 | 16,000 | 352×480@30.7(10) 352×576@25.6 (7) 720×480@15.0 (6) 720×576@12.5 (5) |
3 | 40,500 | 1,620 | 10,000 | 12,500 | 30,000 | 40,000 | 352×480@61.4 (12) 352×576@51.1 (10) 720×480@30.0 (6) 720×576@25.0 (5) |
3.1 | 108,000 | 3,600 | 14,000 | 17,500 | 42,000 | 56,000 | 720×480@80.0 (13) 720×576@66.7 (11) 1280×720@30.0 (5) |
3.2 | 216,000 | 5,120 | 20,000 | 25,000 | 60,000 | 80,000 | 1,280×720@60.0 (5) 1,280×1,024@42.2 (4) |
4 | 245,760 | 8,192 | 20,000 | 25,000 | 60,000 | 80,000 | 1,280×720@68.3 (9) 1,920×1,080@30.1 (4) 2,048×1,024@30.0 (4) |
4.1 | 245,760 | 8,192 | 50,000 | 62,500 | 150,000 | 200,000 | 1,280×720@68.3 (9) 1,920×1,080@30.1 (4) 2,048×1,024@30.0 (4) |
4.2 | 522,240 | 8,704 | 50,000 | 62,500 | 150,000 | 200,000 | 1,920×1,080@64.0 (4) 2,048×1,080@60.0 (4) |
5 | 589,824 | 22,080 | 135,000 | 168,750 | 405,000 | 540,000 | 1,920×1,080@72.3 (13) 2,048×1,024@72.0 (13) 2,048×1,080@67.8 (12) 2,560×1,920@30.7 (5) 3,680×1,536@26.7 (5) |
5.1 | 983,040 | 36,864 | 240,000 | 300,000 | 720,000 | 960,000 | 1,920×1,080@120.5 (16) 4,096×2,048@30.0 (5) 4,096×2,304@26.7 (5) |