H.264
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.
Översikt
[redigera | redigera wikitext]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.
Profiler
[redigera | redigera wikitext]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:
- Constrained Baseline Profile (CBP)
- Används främst av lågkostnadsapplikationer. Profilen används typiskt för videokonferensapplikationer och inom mobila applikationer. CBP motsvarar ett subset av funktioner som är gemensamt mellan Baseline, Main och High Profiler som beskrivs nedan.
- Baseline Profile (BP)
- Används främst av lågkostnadsapplikationer som kräver ytterligare robusthet vid förlust av data. BP används i vissa videokonferensapplikationer och mobila applikationer. Denna profil innehåller alla funktioner som stöds i Constrained Baseline Profile, plus tre ytterligare funktioner som kan användas för förlust-robusthet. Betydelsen av denna profil har minskat något sedan definitionen av Constrained Baseline Profile 2009. Alla CBR-bitströmmar anses också vara Baseline Profile-bitströmmar eftersom dessa två profiler delar samma profilvärdeidentifieringskod.
- Main Profile (MP)
- Denna profil används för standard definition (SD) digitala TV-sändningar som använder MPEG-4-format enligt DVB-standarden. Den används dock inte normalt för HD-TV-sändningar; denna profils betydelse minskade när High Profile utvecklades 2004 för HD-TV.
- Extended Profile (XP)
- Avsedd som strömmande video-profil har denna profil relativt hög kompressionsförmåga och lite extra knep för robusthet vid dataförluster och serverväxling.
- High Profile (HiP)
- Den främsta profilen för sändningstillämpningar och disklagringstillämpningar, särskilt för HDTV (till exempel är detta den profil som antagits av Blu-ray Disc-lagringsformatet och DVB HDTV broadcast Service).
- High 10 Profile (Hi10P)
- Bortom typiska produkter för vanliga konsumentprodukter; denna profil bygger på HiP. Den lägger till stöd för precision upp till 10 bitar per sampling av den avkodade bilden.
- High 422 Profile (Hi422P)
- Riktar sig främst till professionella tillämpningar som använder interlaced (sammanflätad) video och profilen bygger på Hi10P. Den lägger till stöd för 4:2:2 chroma delsampling-formatet samtidigt som precision på 10 bitar per sampling av den avkodade bilden används.
- High 444 Predictive Profile (Hi444PP)
- Denna profil bygger på Hi422P. Den ger stöd för upp till 4:4:4-färg och upp till 14 bitar per sampling. Dessutom stöds effektivt förlustfri regionkodning och kodning av varje bild som tre separata färgplan.
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:
- High 10 Intra Profile
- Hi10P begränsad till enbart intraanvändning.
- High 4
- 2:2 Intra Profile: Hi422P begränsad till enbart intraanvändning.
- High 4
- 4:4 Intra Profile: Hi444PP begränsad till enbart intraanvändning.
- CAVLC 4
- 4:4 Intra Profile: Hi444PP begränsad till enbart intraanvändning och CAVLC entropy-kodning (stödjer alltså inte CABAC).
Som ett resultat av Scalable Video Coding (SVC)-utökningen, innehåller standarden ytterligare tre scalable-profiler:
- Scalable Baseline Profile
- Scalable High Profile
- Scalable High Intra Profile
Som ett resultat av Multiview Video Coding (MVC)-utökningen, innehåller standarden ytterligare två multiview-profiler:
- Stereo High Profile
- Multiview High Profile
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 |
Nivåer / Levels
[redigera | redigera wikitext]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) |