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

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

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
Funktionsstöd i specifika profiles
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

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.

Nivåer med maximala egenskapsvärden
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)

Källor

redigera

Externa länkar

redigera
  NODES
3d 1
coding 13
mac 2
OOP 1
os 8
server 1