|
H.264, MPEG-4 Part 10, sau AVC (de la Codare Video Avansată), este un standard de codare video digitală care se remarcă printr-o rată de compresie ridicată. A fost scris de către Video Coding Experts Group (VCEG) de la ITU împreună cu Moving Picture Experts Group (MPEG) de la ISO/IEC, ca produs colectiv al parteneriatului cunoscut sub numele de Joint Video Team (JVT). Standardul ITU-T H.264 şi standardul ISO/IEC MPEG-4 Part 10 (fostul, ISO/IEC 14496-10) sunt identice din punct de vedere tehnic. Documentul final pentru prima versiune a standardului a fost finalizat în mai 2003.
Introducere
H.264 este numele corespunzător linei de standarde video H.26x a ITU-T, iar AVC se înrudeşte cu partea MPEG a colaborărării care a definitivat standardul, şi asta după ce eforturile iniţiale din ITU-T denumeau standardul H.26L. De obicei, standardul este numit H.264/AVC (sau AVC/H.264 sau H.264/MPEG-4 AVC sau MPEG-4/H.264 AVC) pentru a sublinia moştenirea comună. Numele H.26L, care face referinţă la istoria ITU-T, este mult mai puţin cunoscut, dar se foloseşte totuşi. Ocazional, el mai este numit şi "codecul JVT", evocând organzaţia JVT care l-a dezvoltat. (Acest parteneriat şi multiplele denumiri nu sunt un lucru nou, pentru că şi codecul video cunoscut sub numele de MPEG-2 a apărut de asemenea din parteneriatul dintre MPEG şi ITU-T, iar codecul video MPEG-2 este cunoscut în comunitatea ITU-T drept H.262).
Scopul proiectului H.264/AVC a fost acela de a crea un standard care să asigure o bună calitate a imaginii în condiţiile unor rate de codare a informaţiei net inferioare (ex: jumătate sau chiar mai puţin) faţă de ceea ceea ce necesitau standardele anterioare (ex: faţă de MPEG-2, H.263, sau MPEG-4 Part 2), şi asta fară să mărească prea mult complexitatea implementărilor care ar fi dus la preţuri ridicate pentru implementările practice. Un scop adiacent a fost acela de a asigura un mecanism flexibil care să permită standardului să fie utilizat pentru o gamă largă de aplicaţii (pentru transmisii cu rate de transfer atât reduse cât şi înalte, pentru rezoluţii video înalte sau joase) şi de a funcţiona bine cu o plajă cât mai largă de reţele şi sisteme (ex: transmisii broadcast, stocări pe suport DVD, reţele cu comutare RTP/IP, şi sisteme telefonice multimedia ITU-T).
JVT a încheiat recent munca de dezvoltare a unor extensii faţă de standardul original cunoscute sub numele de Fidelity Range Extensions (FRExt). Aceste extensii au menirea de a suporta codarea video la o rezoluţie şi mai înaltă prin mărirea acurateţei probelor (incluzând codarea pe 10 biti şi cea pe 12 biti) şi informaţie de culoare la o rezoluţie şi mai înalta (incluzând structuri de probe cunoscute drept YUV 4:2:2 şi YUV 4:4:4). Mai multe caracteristici noi au fost de asemenea introduse în proiectul Fidelity Range Extensions (precum comutaţia adaptativă între transformatele pe întreg între 4×4 şi 8×8, matrice de cuantizare cu pondere perceptuală specifică pentru codări, codare eficientă fără pierderi între imagini, suport pentru spaţii de culori adiţionale, şi o transformată de culoare reziduală). Munca de proiectare pentru Fidelity Range Extensions a fost încheiată în iulie 2004, iar documentul a fost finalizat în septembrie 2004.
Profiluri
Standardul include următoarele şapte seturi de capabilităţi, care sunt numite profile şi au diferite aplicaţii:
În plus, standardul conţine acum patru profile adiţionale all-Intra profiles, care sunt definite ca subseturi simple ale profilelor corespunztoare. Sunt folosite pentru aplicaţii profesionale :
- High 10 Intra Profile
- High 4:2:2 Intra Profile
- High 4:4:4 Intra Profile
- CAVLC 4:4:4 Intra Profile
| Baseline | Extended | Main | High | High 10 | High 4:2:2 | High 4:4:4
Predictive
|
| I and P Slices |
Da |
Da |
Da |
Da |
Da |
Da |
Da |
| B Slices |
Nu |
Da |
Da |
Da |
Da |
Da |
Da |
| SI and SP Slices |
Nu |
Da |
Nu |
Nu |
Nu |
Nu |
Nu |
| Multiple Reference Frames |
Da |
Da |
Da |
Da |
Da |
Da |
Da |
| In-Loop Deblocking Filter |
Da |
Da |
Da |
Da |
Da |
Da |
Da |
| CAVLC Entropy Coding |
Da |
Da |
Da |
Da |
Da |
Da |
Da |
| CABAC Entropy Coding |
Nu |
Nu |
Da |
Da |
Da |
Da |
Da |
| Flexible Macroblock Ordering (FMO) |
Da |
Da |
Nu |
Nu |
Nu |
Nu |
Nu |
| Arbitrary Slice Ordering (ASO) |
Da |
Da |
Nu |
Nu |
Nu |
Nu |
Nu |
| Redundant Slices (RS) |
Da |
Da |
Nu |
Nu |
Nu |
Nu |
Nu |
| Data Partitioning |
Nu |
Da |
Nu |
Nu |
Nu |
Nu |
Nu |
| Interlaced Coding (PicAFF, MBAFF) |
Nu |
Da |
Da |
Da |
Da |
Da |
Da |
| 4:2:0 Chroma Format |
Da |
Da |
Da |
Da |
Da |
Da |
Da |
| Monochrome Video Format (4:0:0) |
Nu |
Nu |
Nu |
Da |
Da |
Da |
Da |
| 4:2:2 Chroma Format |
Nu |
Nu |
Nu |
Nu |
Nu |
Da |
Da |
| 4:4:4 Chroma Format |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
Da |
| 8 Bit Sample Depth |
Da |
Da |
Da |
Da |
Da |
Da |
Da |
| 9 and 10 Bit Sample Depth |
Nu |
Nu |
Nu |
Nu |
Da |
Da |
Da |
| 11 to 14 Bit Sample Depth |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
Da |
| 8x8 vs. 4x4 Transform Adaptivity |
Nu |
Nu |
Nu |
Da |
Da |
Da |
Da |
| Quantization Scaling Matrices |
Nu |
Nu |
Nu |
Da |
Da |
Da |
Da |
| Separate Cb and Cr QP control |
Nu |
Nu |
Nu |
Da |
Da |
Da |
Da |
| Separate Color Plane Coding |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
Da |
| Predictive Lossless Coding |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
Da |
| Baseline | Extended | Main | High | High 10 | High 4:2:2 | High 4:4:4
Predictive
|
Niveluri
| Număr Nivel | Macroblocks maxim per secundă | Frame size maxim(macroblocks) | Bit rate video maxim (VCL) pentru Baseline, Extended şi Main Profiles | Bit rate video maxim (VCL) pentru High Profile | Bit rate video maxim (VCL) pentru High 10 Profile | Bit rate video maxim (VCL) pentru High 4:2:2 and High 4:4:4 | Exemple pentru o rezoluţie mare @ frame rate (număr de frame-uri maxim stocat) pe nivel |
| 1 |
1485 |
99 |
64 kbit/s |
80 kbit/s |
192 kbit/s |
256 kbit/s |
128x96@30.9 (8) 176x144@15.0 (4) |
| 1b |
1485 |
99 |
128 kbit/s |
160 kbit/s |
384 kbit/s |
512 kbit/s |
128x96@30.9 (8) 176x144@15.0 (4) |
| 1.1 |
3000 |
396 |
192 kbit/s |
240 kbit/s |
576 kbit/s |
768 kbit/s |
176x144@30.3 (9) 320x240@10.0 (3) 352x288@7.5 (2) |
| 1.2 |
6000 |
396 |
384 kbit/s |
480 kbit/s |
1152 kbit/s |
1536 kbit/s |
320x240@20.0 (7) 352x288@15.2 (6) |
| 1.3 |
11880 |
396 |
768 kbit/s |
960 kbit/s |
2304 kbit/s |
3072 kbit/s |
320x240@36.0 (7) 352x288@30.0 (6) |
| 2 |
11880 |
396 |
2 Mbit/s |
2.5 Mbit/s |
6 Mbit/s |
8 Mbit/s |
320x240@36.0 (7) 352x288@30.0 (6) |
| 2.1 |
19800 |
792 |
4 Mbit/s |
5 Mbit/s |
12 Mbit/s |
16 Mbit/s |
352x480@30.0 (7) 352x576@25.0 (6) |
| 2.2 |
20250 |
1620 |
4 Mbit/s |
5 Mbit/s |
12 Mbit/s |
16 Mbit/s |
352x480@30.7(10) 352x576@25.6 (7) 720x480@15.0 (6) 720x576@12.5 (5) |
| 3 |
40500 |
1620 |
10 Mbit/s |
12.5 Mbit/s |
30 Mbit/s |
40 Mbit/s |
352x480@61.4 (12) 352x576@51.1 (10) 720x480@30.0 (6) 720x576@25.0 (5) |
| 3.1 |
108000 |
3600 |
14 Mbit/s |
17.5 Mbit/s |
42 Mbit/s |
56 Mbit/s |
720x480@80.0 (13) 720x576@66.7 (11) 1280x720@30.0 (5) |
| 3.2 |
216000 |
5120 |
20 Mbit/s |
25 Mbit/s |
60 Mbit/s |
80 Mbit/s |
1280x720@60.0 (5) 1280x1024@42.2 (4) |
| 4 |
245760 |
8192 |
20 Mbit/s |
25 Mbit/s |
60 Mbit/s |
80 Mbit/s |
1280x720@68.3 (9) 1920x1088@30.1 (4) 2048x1024@30.0 (4) |
| 4.1 |
245760 |
8192 |
50 Mbit/s |
62.5 Mbit/s |
150 Mbit/s |
200 Mbit/s |
1280x720@68.3 (9) 1920x1088@30.1 (4) 2048x1024@30.0 (4) |
| 4.2 |
522240 |
8704 |
50 Mbit/s |
62.5 Mbit/s |
150 Mbit/s |
200 Mbit/s |
1920x1088@64.0 (4) 2048x1088@60.0 (4) |
| 5 |
589824 |
22080 |
135 Mbit/s |
168.75 Mbit/s |
405 Mbit/s |
540 Mbit/s |
1920x1088@72.3 (13) 2048x1024@72.0 (13) 2048x1088@67.8 (12) 2560x1920@30.7 (5) 3680x1536/26.7 (5) |
| 5.1 |
983040 |
36864 |
240 Mbit/s |
300 Mbit/s |
720 Mbit/s |
960 Mbit/s |
1920x1088@120.5 (16) 4096x2048@30.0 (5) 4096x2304@26.7 (5) |
| Număr Nivel | Macroblocks maxim per secundă | Frame size maxim(macroblocks) | Bit rate video maxim (VCL) pentru Baseline, Extended şi Main Profiles | Bit rate video maxim (VCL) pentru High Profile | Bit rate video maxim (VCL) pentru High 10 Profile | Bit rate video maxim (VCL) pentru High 4:2:2 and High 4:4:4 | Exemple pentru o rezoluţie mare @ frame rate (număr de frame-uri maxim stocat) pe nivel |
Comparaţie între programele de codare (encoder)
| QuickTime | Nero Digital | x264 | Mainconcept | Elecard | Telestream |
| I and P Slices |
Da |
Da |
Da |
Da |
Da |
Da |
| B Slices |
Da |
Da |
Da |
Da |
Da |
Da |
| SI and SP Slices |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| Multiple Reference Frames |
Da |
Da |
Da |
Da |
Da |
Da |
| In-Loop Deblocking Filter |
Da |
Da |
Da |
Da |
Da |
Da |
| CAVLC Entropy Coding |
Da |
Da |
Da |
Da |
Da |
Da |
| CABAC Entropy Coding |
Nu |
Da |
Da |
Da |
Da |
Da |
| Flexible Macroblock Ordering (FMO) |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| Arbitrary Slice Ordering (ASO) |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| Redundant Slices (RS) |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| Data Partitioning |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| Interlaced Coding (PicAFF, MBAFF) |
Nu |
Nu |
Da |
Da |
Da |
Nu |
| 4:2:0 Chroma Format |
Da |
Da |
Da |
Da |
Da |
Da |
| Monochrome Video Format (4:0:0) |
Nu |
Nu |
Nu |
Nu |
Da |
Nu |
| 4:2:2 Chroma Format |
Nu |
Nu |
Nu |
Nu |
Nu |
Da |
| 4:4:4 Chroma Format |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| 8 Bit Sample Depth |
Da |
Da |
Da |
Da |
Da |
Da |
| 9 and 10 Bit Sample Depth |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| 11 to 14 Bit Sample Depth |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| 8x8 vs. 4x4 Transform Adaptivity |
Nu |
Da |
Da |
Da |
Da |
Da |
| Quantization Scaling Matrices |
Nu |
Nu |
Da |
Nu |
Nu |
Nu |
| Separate Cb and Cr QP control |
Nu |
Nu |
Da |
Da |
Da |
Nu |
| Separate Color Plane Coding |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| Predictive Lossless Coding |
Nu |
Nu |
Da |
Nu |
Da |
Nu |
| Film Grain Modelling |
Nu |
Nu |
Nu |
Nu |
Nu |
Nu |
| QuickTime | Nero Digital | x264 | Mainconcept | Elecard | Telestream |
|