H.264
H.264, MPEG-4 Part 10, sau AVC (de la Codare Video Avansată), este un standard de codec video care se remarcă printr-o rată de compresie ridicată. Un encoder H.264 poate, fără a compromite calitatea imaginii, să reducă dimensiunea unui fișier video digital cu mai mult de 80% în comparație cu formatul Motion JPEG și cu 50% mai mult decât cu standardul MPEG-4. Acest lucru înseamnă că banda de transmisie devine mai încăpătoare, iar spațiul de stocare se reduce în mod semnificativ. Este de așteptat ca în următorii ani, H.264 să devină principalul standard de compresie video.
A fost scris de către Video Coding Experts Group (VCEG) de la Uniunea Internațională pentru Telecomunicații (UTI) împreună cu Moving Picture Experts Group (MPEG) de la ISO/IEC, (International Electrotechnical Commission - Comisia Electrotehnică Internațională), 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. [1]
Introducere
modificareH.264 este numele corespunzător linei de standarde video H.26x a ITU-T, iar AVC se înrudește cu partea MPEG a colaboră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
modificareStandardul include următoarele șapte seturi de capabilități, care sunt numite profile și au diferite aplicații:
- Baseline Profile (BP): În principal pentru aplicațiile cu un cost redus, cu resurse computaționale limitate, videoconferință și aplicații mobile.
- Main Profile (MP): Scopul original a fost un profil mainstream pentru aplicații de transmitere și stocare, importanța acestui profil a scăzut când profilul High profile a fost dezvoltat pentru acel tip de aplicații.
- Extended Profile (XP): Cu scopul de a fi un profil pentru transmitere video, acest profil are compresie relativ mare și protejat împotriva pierderilor de date.
- High Profile (HiP): Principalul profil pentru aplicații de transmitere și stocare pe disc, în particular pentru aplicații în televiziunea de înaltă definiție (de exemplu acest profil este folosit pentru stocarea filmelor pe discuri HD DVD și Blu-ray D).
- High 10 Profile (Hi10P): Acest profil depășește capabilitățile produselor destinate consumatorului obișnuit, având la bază High Profile — a adăugat suport pentru până la 10 biți per sample a preciziei imaginii decodate.
- High 4:2:2 Profile (Hi422P): Destinat aplicațiilor profesionale, folosește video interlaced.
- High 4:4:4 Predictive Profile (Hi444PP): Acest profil are la bază tot High 4:2:2 Profile — suportând un chroma sampling de 4:4:4 , până la 14 biți per sample, și în plus codare regională fără pierdere și codarea fiecărei imagini ca trei plane color separate.
Î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
modificareNumă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 |
Implementări și diferite produse
modificareComparație între programele de codare (encoder)
modificareQuickTime | 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 |
Note
modificare- ^ mpeg.chiariglione.org: mpeg-4/advanced-video-coding
Vezi și
modificareLegături externe
modificare- H.264/AVC overview paper including new FRExt enhancements (Sullivan, Topiwala, and Luthra)
- Various papers on H.264/AVC and related topics (Wiegand)
- More papers on H.264/AVC and related topics (Marpe)
- H.264/AVC Software Coordination (Suehring)
- H.264/MPEG-4 Part 10 Tutorials (Richardson) Arhivat în , la Wayback Machine.
- Book: H.264 and MPEG-4 Video Compression (Richardson) Arhivat în , la Wayback Machine.
- H.264/AVC Textbook (in Japanese: Okubo, Kadono, Kikuchi, and Suzuki) Arhivat în , la Wayback Machine.
- JVT Experts Group document archive Arhivat în , la Wayback Machine.
- MPEG LA Terms of H.264/MPEG-4 AVC Patent License Arhivat în , la Wayback Machine.
- MPEG Industry Forum
- AVC Alliance Arhivat în , la Wayback Machine.
- [1] Arhivat în , la Wayback Machine.
- ITU-T official publication page
- ISO official publication page
- W&W Communications H.264 Overview and IEEE Paper Arhivat în , la Wayback Machine.
- NVIDIA PureVideo - High-definition H.264
- Apple HD Gallery Using H.264 (requires QuickTime 7)
- Apple's HD Trailers Using H.264 (requires QuickTime 7)
- Annual MPEG-4 AVC/H.264 video codecs comparisons by Moscow State University:
- Overview and links on doom9
- List of H.264/AVC resources and codecs Arhivat în , la Wayback Machine.
- Video tutorial on how to encode h.264 with Megui Arhivat în , la Wayback Machine.