H.264
| Den här artikeln eller avsnittet kan behöva språkvård eller korrekturläsning. Motivering: särskrivningar, stavning, verkar maskinöversatt från enwp? Hjälp gärna till att förbättra texten om du kan, och diskutera saken på diskussionssidan. Se fler artiklar med samma problem. |
| Den här artikeln saknar källhänvisningar och kan därför inte verifieras. (2011-11) Förbättra artikeln genom att lägga till pålitliga källor (fotnoter). Information som inte verifieras, blir ifrågasatt och kan tas bort. Diskutera på diskussionssidan. |
H.264 är ett videokodningsformat som ingår i ISO-standarden MPEG-4 del 10. Denna codec 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 video spelare, som VLC, QuickTime-video och i Flash-video. En populär öppen implementation på standarden är x264.
Innehåll |
[redigera] Översikt
Meningen med H.264/AVC projektet var att skapa en standard, som kunde ge bra videokvalite 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.
H.264 namn följer ITU-T namnkonvention, där standarden är medlem i H.26x gruppen av VCEG videokodningsteknik, MPEG-4 AVC namnet avser namnkonventionen i ISO / IEC MPEG, där standarden är del 10 av ISO / IEC 14.496, vilket är den svit 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 är det också kallad "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 ökad 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, såsom adaptiv växling mellan 4 × 4 och 8 × 8 heltalstransformeringar, kodar specificerade perceptuella-baserade 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 ytterligare senare utökningar av standarden ingick också att lägga till ytterligare fem nya profiler i första hand avsedd för professionellt bruk, lägga utökade stöd för gamut färgrymd, definiera ytterligare indikatorer för bildförhållande, definiera ytterligare två typer av "kompletterande förstärkning information" (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 lagts 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. Den Scalable Video Coding utökningen avslutades i november 2007.
Nästa stora funktion som lagts till i standarden var Multiview Video Coding (MVC). MVC specificerad i bilaga H H.264/AVC, MVC tillåter konstruktionen av bitströmmar som representerar mer än en vy av en video scen. Ett viktigt exempel på denna funktionalitet är stereoskopisk 3D video kodning. 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.
[redigera] Profiler
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 skalbar 2D video tillämpningar inkluderar följande:
- Constrained Baseline Profile (CBP)
- Används främst av lågkostnads applikationer. Typiskt används profilen 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ågkostnads applikationer 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 bleknat något sedan definitionen av det Constrained Baseline Profile under 2009. Alla CBR bitströmmar anses också vara Baseline Profile bitströmmar, eftersom dessa två profiler delar samma profilvärde identifieringskod.
- 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, som betydelsen har denna profil bleknade 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 kompressions förmåga och lite extra knep för robusthet vid data förluster och server växling.
- High Profile (HiP)
- Den främsta profilen för sändnings tillämpningar och disc lagrings tillämpningar, särskilt för HDTV (till exempel, är detta den profil som antagits av Blu-ray Disc lagringsformat och DVB HDTV broadcast Service).
- High 10 Profile (Hi10P)
- Bortom typiska produkter för vanliga konsument produkter, denna 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, bygger profil bygger på Hi10P. Den lägger till stöd för 4:2:2 chroma delsampling format 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 effektiv förlustfria region kodning och kodning av varje bild som tre separata färgplan.
För videokameror, redigering och professionella applikationer innehåller standarden ytterligare fyra Intra-frame enbart profiler, som definieras som enkelt delmängder av andra motsvarande profiler. Dessa är främst för professionella (t.ex. kamera och redigeringsystem) applikationer:
- High 10 Intra Profile
- Hi10P begränsad till enbart intra användning.
- High 4
- 2:2 Intra Profile: Hi422P begränsad till enbart intra användning.
- High 4
- 4:4 Intra Profile: Hi444PP begränsad till enbart intra användning.
- CAVLC 4
- 4:4 Intra Profile: Hi444PP begränsad till enbart intra anvä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 |
|---|---|---|---|---|---|---|---|---|
| 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 |
| 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 |
[redigera] Nivåer / Levels
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 en dekodern kan använda. Av 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 for 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) |
[redigera] References
http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC