H.264/MPEG-4 AVC
AVC (ang. Advanced Video Coding) – standard kodowania sekwencji wizyjnych przyjęty w roku 2003 jako 10. część standardu ISO MPEG-4 oraz jako rekomendacja ITU-T H.264. Projekt x264 zajmuje się stworzeniem otwartej implementacji tego standardu w postaci kodera. Istnieje również OpenH264 autorstwa Cisco na licencji Simplified BSD License[1].
Efektywność kompresji formatu AVC dzięki wprowadzeniu nowych rozwiązań jest o wiele większa niż poprzednich standardów: MPEG-1, MPEG-2 czy MPEG-4 część 2 (którego popularne implementacje to DivX i Xvid).
Innowacje
edytujDo najważniejszych innowacji AVC można zaliczyć:
- predykcja międzyobrazowa z adaptacyjnym podziałem obrazu na bloki o rozmiarze 4×4, 4×8, 8×4, 8×8, 8×16, 16×8 lub 16×16 punktów,
- transformacja całkowitoliczbowa,
- predykcyjne kodowanie wewnątrzobrazowe,
- estymacja wektorów ruchu z dokładnością do 1/4 odstępu próbkowania,
- długookresowa pamięć obrazów,
- kodowanie entropijne uniwersalnymi kodami o zmiennej długości (UVLC) lub adaptacyjne kodowanie arytmetyczne (CABAC).
Profile kompresji
edytuj- Profil Podstawowy – Baseline Profile (BP) Głównie dla aplikacji o najniższym wykorzystaniu kodera, ten profil wykorzystywany jest przede wszystkim do wideokonferencji oraz urządzeń i aplikacji przenośnych.
- Profil Główny – Main Profile (MP) Uniwersalny dla klientów przekazów strumieniowych np. satelitarnych DVB-S2 oraz naziemnych DVB-T i DVB-T2 o rozdzielczości nieprzekraczającej 720×576 pikseli.
- Profil Wysoki – High Profile (HiP) Głównie wykorzystywany dla klientów przekazów strumieniowych o wysokiej rozdzielczości np. satelitarnych DVB-S2 oraz naziemnych DVB-T i DVB-T2. Skuteczniejszy od Main Profile, ponieważ jest w stanie w pełni skorzystać z rozdzielczości 1280×720i, 1280×720p oraz 1920×1080i. Stosowany jest również do kompresji filmów na dyskach HD DVD i Blu-ray.
Charakterystyka
edytujOgraniczony
Podstawowy |
Podstawowy | Rozszerzony | Główny | Wysoki | Wysoki 10 | Wysoki 4:2:2 | Wysoki 4:4:4
Predykcyjny | |
---|---|---|---|---|---|---|---|---|
I and P Slices | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
B Slices | Nie | Nie | Tak | Tak | Tak | Tak | Tak | Tak |
SI and SP Slices | Nie | Nie | Tak | Nie | Nie | Nie | Nie | Nie |
Multiple Reference Frames | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
In-Loop Deblocking Filter | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
CAVLC Entropy Coding | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
CABAC Entropy Coding | Nie | Nie | Nie | Tak | Tak | Tak | Tak | Tak |
Flexible Macroblock Ordering (FMO) | Nie | Tak | Tak | Nie | Nie | Nie | Nie | Nie |
Arbitrary Slice Ordering (ASO) | Nie | Tak | Tak | Nie | Nie | Nie | Nie | Nie |
Redundant Slices (RS) | Nie | Tak | Tak | Nie | Nie | Nie | Nie | Nie |
Data Partitioning | Nie | Nie | Tak | Nie | Nie | Nie | Nie | Nie |
Interlaced Coding (PicAFF, MBAFF) | Nie | Nie | Tak | Tak | Tak | Tak | Tak | Tak |
4:2:0 Chroma Format | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
Monochrome Video Format (4:0:0) | Nie | Nie | Nie | Nie | Tak | Tak | Tak | Tak |
4:2:2 Chroma Format | Nie | Nie | Nie | Nie | Nie | Nie | Tak | Tak |
4:4:4 Chroma Format | Nie | Nie | Nie | Nie | Nie | Nie | Nie | Tak |
8 Bit Sample Depth | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
9 and 10 Bit Sample Depth | Nie | Nie | Nie | Nie | Nie | Tak | Tak | Tak |
11 to 14 Bit Sample Depth | Nie | Nie | Nie | Nie | Nie | Nie | Nie | Tak |
8x8 vs. 4x4 Transform Adaptivity | Nie | Nie | Nie | Nie | Tak | Tak | Tak | Tak |
Quantization Scaling Matrices | Nie | Nie | Nie | Nie | Tak | Tak | Tak | Tak |
Separate Cb and Cr QP control | Nie | Nie | Nie | Nie | Tak | Tak | Tak | Tak |
Separate Color Plane Coding | Nie | Nie | Nie | Nie | Nie | Nie | Nie | Tak |
Predictive Lossless Coding | Nie | Nie | Nie | Nie | Nie | Nie | Nie | Tak |
Ograniczony
Podstawowy |
Podstawowy | Rozszerzony | Główny | Wysoki | Wysoki 10 | Wysoki 4:2:2 | Wysoki 4:4:4
Predykcyjny |
Poziomy
edytujNumer poziomu | Max liczba makrobloków na sekundę | Max rozmiar klatki (makrobloków) | Max bit rate wideo (VCL) dla profili Podstawowego, Rozszerzonego i Głównego | Max bit rate wideo (VCL) dla profilu Wysokiego | Max bit rate wideo (VCL) dla profilu Wysokiego 10 | Max bit rate wideo (VCL) dla profili Wysoki 4:2:2 i Wysoki 4:4:4 Predykcyjny | Przykłady najwyższych możliwych rozdzielczości @ liczby klatek (max pomieszczenie klatek) w Poziomie |
---|---|---|---|---|---|---|---|
1 | 1485 | 99 | 64 kbit/s | 80 kbit/s | 192 kbit/s | 256 kbit/s | 128×96@30.9 (8) 176×144@15.0 (4) |
1b | 1485 | 99 | 128 kbit/s | 160 kbit/s | 384 kbit/s | 512 kbit/s | 128×96@30.9 (8) 176×144@15.0 (4) |
1.1 | 3000 | 396 | 192 kbit/s | 240 kbit/s | 576 kbit/s | 768 kbit/s | 176×144@30.3 (9) 320×240@10.0 (3) 352×288@7.5 (2) |
1.2 | 6000 | 396 | 384 kbit/s | 480 kbit/s | 1152 kbit/s | 1536 kbit/s | 320×240@20.0 (7) 352×288@15.2 (6) |
1.3 | 11880 | 396 | 768 kbit/s | 960 kbit/s | 2304 kbit/s | 3072 kbit/s | 320×240@36.0 (7) 352×288@30.0 (6) |
2 | 11880 | 396 | 2 Mbit/s | 2.5 Mbit/s | 6 Mbit/s | 8 Mbit/s | 320×240@36.0 (7) 352×288@30.0 (6) |
2.1 | 19800 | 792 | 4 Mbit/s | 5 Mbit/s | 12 Mbit/s | 16 Mbit/s | 352×480@30.0 (7) 352×576@25.0 (6) |
2.2 | 20250 | 1620 | 4 Mbit/s | 5 Mbit/s | 12 Mbit/s | 16 Mbit/s | 352×480@30.7(10) 352×576@25.6 (7) 720×480@15.0 (6) 720×576@12.5 (5) |
3 | 40500 | 1620 | 10 Mbit/s | 12.5 Mbit/s | 30 Mbit/s | 40 Mbit/s | 352×480@61.4 (12) 352×576@51.1 (10) 720×480@30.0 (6) 720×576@25.0 (5) |
3.1 | 108000 | 3600 | 14 Mbit/s | 14 Mbit/s | 42 Mbit/s | 56 Mbit/s | 720×480@80.0 (13) 720×576@66.7 (11) 1280×720@30.0 (5) |
3.2 | 216000 | 5120 | 20 Mbit/s | 25 Mbit/s | 60 Mbit/s | 80 Mbit/s | 1280×720@60.0 (5) 1280×1024@42.2 (4) |
4 | 245760 | 8192 | 20 Mbit/s | 25 Mbit/s | 60 Mbit/s | 80 Mbit/s | 1280×720@68.3 (9) 1920×1080@30.1 (4) 2048×1024@30.0 (4) |
4.1 | 245760 | 8192 | 50 Mbit/s | 62.5 Mbit/s | 150 Mbit/s | 200 Mbit/s | 1280×720@68.3 (9) 1920×1080@30.1 (4) 2048×1024@30.0 (4) |
4.2 | 522240 | 8704 | 50 Mbit/s | 62.5 Mbit/s | 150 Mbit/s | 200 Mbit/s | 1920×1080@64.0 (4) 2048×1080@60.0 (4) |
5 | 589824 | 22080 | 135 Mbit/s | 168.75 Mbit/s | 405 Mbit/s | 540 Mbit/s | 1920×1080@72.3 (13) 2048×1024@72.0 (13) 2048×1080@67.8 (12) 2560×1920@30.7 (5) 3680×1536@26.7 (5) |
5.1 | 983040 | 36864 | 240 Mbit/s | 300 Mbit/s | 720 Mbit/s | 960 Mbit/s | 1920×1080@120.5 (16) 4096×2048@30.0 (5) 4096×2304@26.7 (5) |
5.2 | 2073600 | 36864 | 240 Mbit/s | 300 Mbit/s | 720 Mbit/s | 960 Mbit/s | 1,920×1,080@172.0 (16)
3,840×2,160@66.8 (5) 4,096×2,160@60.0 (5) |
Numer poziomu | Max liczba makrobloków na sekundę | Max rozmiar klatki (makrobloków) | Max bit rate wideo (VCL) dla profili Podstawowego, Rozszerzonego i Głównego | Max bit rate wideo(VCL) dla profilu Wysokiego | Max bit rate wideo(VCL) dla profilu Wysokiego 10 | Max bit rate wideo(VCL) dla profili Wysokiego 4:2:2 i Wysokiego 4:4:4 Predykcyjny | Przykłady najwyższych możliwych rozdzielczości @ liczby klatek (max pomieszczenie klatek) w Poziomie |
Współczesność
edytujObecnie standard kodowania H.264/AVC wykorzystywany jest do transmisji telewizji wysokiej rozdzielczości w wielu cyfrowych platformach satelitarnych, oraz, między innymi, jako jeden z podstawowych formatów w oprogramowaniu QuickTime.
Głównym konkurentem H.264/AVC jest WMV firmy Microsoft, przyjęty przez amerykańskie stowarzyszenie SMPTE jako standard VC-1, oraz AVS opracowany przez konsorcjum stworzone przez rząd chiński.
W wyniku rezultatów badań nad udoskonalaniem formatu H.263, grupa JVT (Joint Video Team), łącząca zespoły ekspertów z organizacji ISO oraz ITU, rozpoczęła prace nad standardem kodowania H.26L, który uległ tak dalekim modyfikacjom w porównaniu do algorytmu H.263, że został następnie przemianowany na H.264.
Polski Komitet Normalizacyjny opracował polskie tłumaczenie normy ISO/IEC 14496-10:2004 (standardu kodowania H.264/AVC)[2].
Patenty
edytujOstatni patent wygasa 29 listopada 2027[3]. Dlatego też istnieją kampanie promujące porzucenie tego formatu na rzecz Ogg Theora i WebM. Powodem jest także fakt, że o ile użycie do transmisji niekomercyjnej filmu zapisanego w tym formacie w Internecie jest bezpłatne, to samo oprogramowanie do odtworzenia musi pokryć opłatę licencyjną. Inną propozycją (np. Nokii)[4] jest wykorzystanie formatu ITU h.261, którego część została zdefiniowana w lub przed listopadem 1988. Definicja z 1990 H.261 miała pozostałe fragmenty niezawarte w definicji z 1988[5].
Przypisy
edytuj- ↑ OpenH264. www.openh264.org. [dostęp 2017-11-23].
- ↑ PN-ISO/IEC 14496-10:2009: Technika informatyczna -- Kodowanie obiektów audiowizyjnych -- Część 10: Zaawansowane kodowanie wizji.
- ↑ OSNews.com. www.osnews.com. [dostęp 2017-11-23].
- ↑ Use software and functionality from 20 years ago – software patents wiki (en.swpat.org). en.swpat.org. [dostęp 2017-11-23]. (ang.).
- ↑ MPEG LA – software patents wiki (en.swpat.org). en.swpat.org. [dostęp 2017-11-23]. (ang.).
Linki zewnętrzne
edytuj- Zalecenia ITU-T serii H
- Serwer ftp z archiwalnymi dokumentami grupy JVT. ftp3.itu.int. [zarchiwizowane z tego adresu (2010-07-20)].