Lepszy niż DivX

W wyścigu o laur dla najlepszego kodeka H.264 bierze udział kilka firm. Zajmują się nim m.in. spółki MainConcept i Vanguard. Również Sony planuje integrację H.264 z konsolą PlayStation 3. Boom związany z nowym standardem kompresji wideo spowodowany jest zwiększeniem się liczby potencjalnych zastosowań, do których dotychczasowe kodeki niespecjalnie się nadawały. Dotyczy to między innymi wideotelefonii i telewizji HDTV. W czym zatem H.264 jest lepszy? Jego przewaga tkwi w algorytmach kompresji, które przy takiej samej jakości obrazu są efektywniejsze niż w MPEG-4.

Standard H.264 opracowany został na bazie swojego przodka – MPEG-a, jednak z zastosowaniem pewnych modyfikacji. H.264 dzieli bowiem obraz na mniejsze elementy i wykorzystuje zmienne wielkości bloków oraz wektory przesunięcia. Pozwala to uzyskać znacznie lepszą jakość obrazu przy takiej samej wielkości danych. Korzyści te okupione są, niestety, większymi wymaganiami sprzętowymi. Zgodnie z informacjami udostępnianymi przez Vanguard do kodowania obrazu w czasie rzeczywistym potrzebny jest przynajmniej trzygigahercowy procesor! Dekodowanie wymaga mniejszej mocy obliczeniowej – do odtwarzania wideo w rozdzielczości telewizyjnej wystarczy procesor z zegarem dwugigahercowym.

Zrozumienie zasady działania H.264 wymaga znajomości podstaw kodowania wideo. Poniżej publikujemy więc ogólne informacje na temat kompresji obrazu z wykorzystaniem standardu MPEG.

Jak działa enkoder MPEG

Film wideo jest sekwencją obrazów zwanych ramkami (ang. frame). Zgodnie z obowiązującym w Polsce standardem telewizyjnym PAL w sekundzie przesyłanych jest 25 ramek obrazu. Enkodery MPEG zapisują takie zbiory klatek w pakietach nazywanych Group of Pictures (GOP). Na jedną GOP składa się zazwyczaj od 12 do 15 ramek.

Dodatkowo enkoder MPEG dzieli każdą ramkę na makrobloki o rozmiarach 16516 punktów. Dla każdego makrobloku enkoder wyznacza wartości koloru oraz jasności i zapisuje je w kilku blokach. Dla standardu MPEG-2 informacje o jasności zawarte są w blokach o rozmiarze 858. Oznacza to, że do pokrycia jednego makrobloku (16516) potrzeba czterech takich bloków. Kodowanie informacji zawartych w każdym bloku odbywa się z wykorzystaniem technik intra- i interkodowania.

Intrakodowanie:

pierwsza ramka, zwana kluczową (Intra Frame), w pakiecie GOP zawsze podlega intrakodowaniu. Oznacza to, że enkoder, podobnie jak w przypadku kompresji JPEG, wykonuje przekształcenia wyłącznie na bazie informacji zawartych w tej ramce. Kodowanie odbywa się za pośrednictwem dyskretnej transformaty cosinusowej (DCT), która oblicza rozkład częstotliwości odpowiadający obrazowi. Następnie w wyniku kwantyzacji wartości poszczególnych częstości zaokrąglane są do liczb całkowitych, przy czym w obszarze wysokich częstotliwości część wartości jest usuwana. Otrzymany w ten sposób zbiór wartości może być później bezstratnie skompresowany, podobnie jak plik ZIP (więcej na ten temat poniżej w akapicie o kodowaniu entropii).

Interkodowanie:

w każdej grupie GOP występuje tylko jedna ramka kluczowa (I-Frame). Wszystkie pozostałe ramki pośrednie (Predicted- i Bidirectional-Frame, w skrócie P- i B-Frame) są interkodowane. Oznacza to, że algorytm kompresji ramek P i B wykorzystuje informacje z poprzednich lub z następnych obrazów. Różnice pomiędzy bieżącą ramką a ramkami sąsiednimi wyrażane są za pośrednictwem wektorów przesunięcia.

Wektory zawsze odnoszą się do bloków, które zostały wcześniej zakodowane w innych ramkach. Wektory przesunięcia ramek P opisują zmiany w stosunku do poprzedniej ramki I-Frame. Z kolei ramki B obliczane są na podstawie informacji pochodzących z wcześniejszych ramek I i P oraz z późniejszych ramek P. Te same metody, aczkolwiek znacznie ulepszone (patrz: “Wektory przesunięcia”), wykorzystywane są w standardzie H.264.

Od ramki do plastra

Podobnie jak w standardzie MPEG-2, enkoder H.264 grupuje ramki w plastry (ang. slice), które podczas odtwarzania dekodowane są niezależnie od siebie. Jednak podczas gdy MPEG-2 dokładnie definiuje strukturę plastra, H.264 może pracować z plastrami o zmiennej wielkości. W sumie H.264 wykorzystuje pięć typów plastrów. Najpopularniejsze trzy typy: I, P i B, pełniące takie same funkcje jak zbieżne typy w przypadku ramek. Do tego dochodzą jeszcze dwa nowe rodzaje plastrów: SP (Switching P) i SI (Switching I), stosowane rzadko i wprowadzone dla zapewnienia bardziej efektywnego przetwarzania strumieni wideo o zmiennej przepływności.

Więcej:bezcatnews