Kompresja

Kompresja H.265/HEVC

Wysokoefektywne kodowanie wideo z ulepszoną kompresją w porównaniu z H.264.

Rosnące Rozdzielczości: Następca H.264

H.264/AVC przez lata był szeroko stosowany w dystrybucji wideo, między innymi na płytach Blu-ray i w usługach internetowych. Wraz z rozwojem wyświetlaczy i kamer rosło znaczenie rozdzielczości wyższych niż Full HD (1920×10801920 \times 1080), takich jak 4K (3840×21603840 \times 2160) oraz 8K. Większa liczba próbek obrazu zwiększa wymagania dotyczące przepływności i pamięci.

Przejście na wyższą rozdzielczość zwiększa ilość danych. Przy porównaniu 4K 3840×21603840 \times 2160 z 1080p 1920×10801920 \times 1080 liczba pikseli jest czterokrotnie większa, a 8K ma ich szesnaście razy więcej niż 1080p. H.264 może kodować takie obrazy w odpowiednich profilach i poziomach, lecz wymagany bitrate może ograniczać streaming i transmisję. Potrzebny był standard, który poprawiałby efektywność bez prostego czterokrotnego zwiększania przepustowości. Zwiększenie rozdzielczości wpływa też na pamięć bufora, przepustowość dekodera i czas przetwarzania, dlatego sam bitrate nie opisuje całego kosztu. Ta sama rozdzielczość może wymagać różnych przepływności dla ziarna filmu, szybkiego ruchu, szumu kamery i zmian sceny. Porównanie kodeków wymaga określenia formatu obrazu, liczby klatek, miary jakości i konfiguracji kodera.

Wspólny Zespół ds. Kodowania Wideo (JCT-VC), utworzony przez grupy ekspertów ITU-T i ISO/IEC, opracował następcę H.264. Celem projektowym było osiągnięcie podobnej jakości percepcyjnej przy mniej więcej o połowę niższej przepływności, lecz rzeczywisty wynik zależy od treści, ustawień i kryterium jakości. Rezultatem, ustandaryzowanym w 2013 roku, był , znany również jako H.265. HEVC rozdziela decyzje dotyczące predykcji, transformacji i kodowania entropijnego, więc koder może wymieniać czas obliczeń na przepływność i jakość. Dekoder korzysta ze składni strumienia oraz zrekonstruowanych próbek referencyjnych.

Główna Zmiana: Od Makrobloków do Drzew Kodowania

Jedną z głównych zmian w H.265 jest sposób partycjonowania klatki. H.264 używa makrobloków o rozmiarze 16×1616 \times 16, natomiast HEVC wprowadza o rozmiarze do 64×6464 \times 64 próbek. CTU można dzielić zgodnie ze złożonością obrazu, co wpływa na decyzje o predykcji i transformacji. Maksymalny rozmiar jest sygnalizowany w parametrach sekwencji, więc dekoder zna granice drzewa przed przetwarzaniem obrazu. CTU jest jednostką składni i przetwarzania, lecz jego maksymalny rozmiar nie oznacza użycia największego bloku w każdej części obrazu. Płaskie obszary mogą korzystać z płytkiego drzewa, a granice ruchu i drobna tekstura zwykle prowadzą do mniejszych jednostek.

Jednostka Drzewa Kodowania (CTU)

W HEVC rozmiar CTU może wynosić 16×1616 \times 16, 32×3232 \times 32 lub 64×6464 \times 64 próbek, zgodnie z parametrami sekwencji. Większy blok może efektywnie opisać rozległy, płaski obszar, taki jak niebo lub ściana, podczas gdy treść szczegółowa wymaga dalszego podziału. Rozmiar CTU jest ustawieniem struktury obrazu, natomiast rozmiary CU wynikają z rekurencyjnego podziału tego obszaru.

CTU ma strukturę rekurencyjnego drzewa czwórkowego. Całe 64×6464 \times 64 może pozostać jednym blokiem albo zostać podzielone na cztery jednostki 32×3232 \times 32, które można dzielić dalej do minimalnego CU 8×88 \times 8. Transformacja może mieć mniejszy rozmiar, między innymi 4×44 \times 4. Rozdzielenie CU i TU pozwala koderowi dobrać podział kodowania do złożoności treści. CU określa obszar decyzji, PU opisuje predykcję, a TU wyznacza obszar transformacji rezydualnej. Jednostki te mogą mieć różne granice. Rozróżnienie jest ważne przy analizie strumienia: CU niesie decyzje kodowania, PU decyzje predykcji, a TU współczynniki transformacji. Pomylenie minimalnego CU z minimalnym rozmiarem transformacji zmienia znaczenie wymiarów bloku.

Gałęzie Drzewa: CU, PU i TU

W ramach CTU koder podejmuje decyzje na trzech różnych poziomach partycjonowania, z których każdy służy określonemu celowi:

  • Jednostki Kodowania (CUs): CU to wynik głównego podziału CTU na drzewo czwórkowe. Koder dobiera głębokość podziału do zawartości obrazu. Płaski region może być zakodowany jako pojedynczy CU 64×6464 \times 64, podczas gdy szczegółowa tekstura może zostać podzielona na mniejsze CU. Rozmiar CU określa obszar, dla którego podejmowane są dalsze decyzje o predykcji i transformacji.
  • Jednostki Predykcji (PUs): Wewnątrz CU koder wybiera predykcję wewnątrz- lub międzyklatkową i partycjonowanie na jedną albo więcej , zgodnie z dozwolonym trybem. W predykcji ruchu duży CU może otrzymać asymetryczne PU, na przykład dwa prostokąty, aby lepiej dopasować się do kształtu i ruchu obiektu. To rozszerza możliwości względem stałych podziałów podmakrobloków H.264. Predykcja międzyklatkowa wykorzystuje kompensację ruchu z obrazów referencyjnych, a kształt PU określa obszar opisu ruchu.
  • Jednostki Transformacji (TUs): Po predykcji rezydualna, czyli różnica między oryginałem i przewidywaniem, jest transformowana oraz kwantyzowana. CU może zostać podzielone na drzewo . HEVC używa transformacji całkowitoliczbowych o rozmiarach do 32×3232 \times 32, podczas gdy H.264 stosuje do 8×88 \times 8. Większa transformacja lepiej skupia energię rezydualnej w gładkich obszarach, lecz także zwiększa koszt obliczeń i sygnalizacji. Kwantyzacja usuwa mniej widoczną precyzję współczynników, a koder entropijny opisuje pozostałe niezerowe współczynniki i ich położenia.

Struktura CTU pozwala użyć dużych bloków dla prostych obszarów i mniejszych dla szczegółów. Podział wpływa na liczbę decyzji, sygnalizację i rozmiar rezydualnej, więc jest jednym z istotnych elementów efektywności HEVC, lecz nie jedynym.

Interaktywny przykład porównuje makrobloki H.264 z adaptacyjnym drzewem CTU HEVC dla scen o różnej złożoności.

Narzędzia Predykcji i Kodowania

Oprócz struktury CTU H.265/HEVC wprowadza narzędzia predykcji, filtracji i kodowania entropijnego, które ograniczają rezydualną oraz koszty sygnalizacji. Ich zyski oddziałują na siebie: dokładniejsza predykcja może zmniejszyć rezydualną, a inny podział zmienia koszt predykcji i liczbę elementów składni. O przepływności całej sekwencji nie decyduje pojedyncze narzędzie.

  • 1. Ulepszona Predykcja Wewnątrzklatkowa

    Dla bloków luminancji 4×44 \times 4 H.264 oferował 9 trybów predykcji wewnątrzklatkowej. H.265 udostępnia 35 trybów dla luminancji, w tym tryb DC, tryb Planarny oraz 33 tryby kątowe. Większy wybór kierunków pomaga przewidywać krawędzie i tekstury, co może zmniejszyć rezydualną. Liczba trybów zależy od rodzaju próbki i nie oznacza, że każdy blok używa wszystkich możliwości. Koder wybiera tryb na podstawie kosztu predykcji, sygnalizacji i kwantyzacji. Wybrany tryb jest sygnalizowany zwięźle i korzysta z sąsiednich zrekonstruowanych próbek, więc koder i dekoder mogą wykonać tę samą predykcję.

  • 2. Poprawiona Predykcja Ruchu: Tryby Merge i AMVP

    W klatkach P i B H.265 usprawnia kodowanie wektorów ruchu. Dwa tryby stosowane dla Jednostek Predykcji to:

    • Tryb Merge: Koder buduje listę kandydatów na wektory ruchu z sąsiednich bloków przestrzennych i czasowych. Gdy kandydat pasuje do bieżącego bloku, koder przekazuje indeks zamiast nowego wektora lub różnicy wektora. Rezydualna może nadal zostać zakodowana. Tryb ogranicza sygnalizację przy spójnym ruchu, ponieważ dekoder odtwarza wektor z tej samej listy kandydatów.
    • Zaawansowana Predykcja Wektorów Ruchu (AMVP): Tryb wykorzystuje sąsiednie wektory do wyznaczenia predykcji, lecz dodatkowo koduje różnicę między predykowanym i wybranym wektorem. Stosuje się go, gdy ruch jest podobny do ruchu sąsiadów, lecz nie identyczny.
    Oba tryby ograniczają sygnalizowanie wektora na różne sposoby: Merge ponownie wykorzystuje pełnego kandydata, a AMVP przekazuje korektę predykcji kandydata.
  • 3. Adaptacyjne Przesunięcie Próbki (SAO)

    SAO jest filtrem w pętli rekonstrukcji, stosowanym obok filtra odblokowującego. Klasyfikuje próbki według pasma wartości albo krawędzi, a następnie dodaje do kategorii określone przesunięcie. Koryguje powtarzalne błędy kwantyzacji i wpływa na jakość obrazu oraz na próbki używane jako referencje w kolejnych predykcjach. Parametry SAO są sygnalizowane w strumieniu, więc dekoder stosuje te same klasy i przesunięcia bez dostępu do obrazu źródłowego. SAO należy więc do ścieżki rekonstrukcji referencji i wpływa na próbki przekazywane do dalszego dekodowania.

Równoległe Przetwarzanie: Kafelki i WPP

Zależności między blokami ograniczają równoległe kodowanie i dekodowanie. HEVC wprowadza kafelki oraz Wavefront Parallel Processing (WPP), aby podzielić część pracy między rdzenie przy zachowaniu wymaganych kontekstów. Narzędzia równoległe zmieniają harmonogram i dostęp do pamięci, lecz nie usuwają potrzeby analizowania strumienia zgodnie ze składnią ani respektowania zależności obrazów referencyjnych.

  • Kafelki (Tiles): Koder dzieli obraz na prostokątne regiony. Kafelki mają niezależne kodowanie entropijne i ograniczenia zależności przestrzennych, więc mogą być przydzielane różnym rdzeniom. Odtwarzacz na komputerze z 8-rdzeniowym procesorem może przetwarzać kilka kafelków równolegle. Przepływ filtrów przez granice kafelków zależy od odpowiednich flag, więc nie każdy filtr jest zawsze ograniczony do wnętrza kafelka. Zwiększenie liczby kafelków może jednak zwiększyć narzut sygnalizacji i zmniejszyć skuteczność predykcji między sąsiednimi regionami. Wymiary i liczba kafelków są sygnalizowane w informacjach o parametrach obrazu, a implementacja potrzebuje odpowiedniej ilości pracy w każdym kafelku, aby planowanie równoległe przyniosło korzyść.
  • Równoległe Przetwarzanie Frontem Falowym (WPP): WPP pozwala przetwarzać wiersze CTU równolegle z opóźnieniem potrzebnym do uzyskania kontekstu z wiersza powyżej. Kolejny wiersz może rozpocząć pracę przed zakończeniem poprzedniego, tworząc przesuwający się front. Metoda daje równoległość także wtedy, gdy obraz nie jest dzielony na kafelki. Zależność od kontekstu ogranicza jednak stopień równoległości przy krótkich wierszach lub niewielkim obrazie. WPP może zachować więcej wspólnego kontekstu obrazu niż niezależne kafelki, lecz dostępna równoległość zależy od długości wiersza i narzutu planowania dekodera.

Te narzędzia ułatwiają wykorzystanie procesorów wielordzeniowych przy kodowaniu i dekodowaniu 4K oraz 8K. Osiągnięcie czasu rzeczywistego zależy jednak od sprzętowego dekodera, implementacji, ustawień i złożoności materiału. Koder programowy może wybrać szybsze ustawienia wyszukiwania, natomiast koder sprzętowy często udostępnia mniejszy zbiór decyzji o partycjach i predykcji. Wpływa to na zmierzoną przepływność i jakość.

Interaktywna wizualizacja pokazuje, jak układ kafelków i harmonogram WPP przekładają się na równoległość dekodera.

Podsumowanie: Zysk i Koszt Obliczeń

H.265/HEVC został zaprojektowany z myślą o poprawie efektywności. W wielu porównaniach raportuje się redukcję bitrate'u o 40-50% względem H.264 przy podobnej jakości percepcyjnej, lecz wartość zależy od treści, ustawień i metody pomiaru. Mniejszy bitrate może ułatwić transmisję UHD oraz ograniczyć przestrzeń potrzebną do przechowywania wideo. Nie jest to stała relacja dla każdego kodera, profilu ani materiału. Procent opisuje porównanie przy równoważnym poziomie jakości, nie gwarantuje zmniejszenia pliku źródłowego o 40-50%. Narzut kontenera, dźwięk, napisy i tryb kontroli przepływności wpływają na wynikowy plik.

Efektywność ma koszt obliczeniowy. Elastyczne partycjonowanie oraz narzędzia predykcji zwiększają liczbę decyzji kodera dotyczących CU, PU i TU. Koder może oceniać różne podziały i 35 trybów predykcji wewnątrzklatkowej. W zależności od implementacji, ustawień i materiału kodowanie może wymagać nawet 10 razy większej mocy obliczeniowej niż H.264. Dekodowanie również jest bardziej złożone, choć kafelki i WPP mogą ułatwić jego równoległe wykonanie. Wartość 10 razy opisuje górny rząd spotykanych porównań, nie uniwersalny narzut każdej implementacji. Pomiar powinien określać kodowanie jedno- lub wieloprzebiegowe, implementację programową albo sprzętową oraz użyte ustawienia H.264 i HEVC. Bez tych warunków współczynnik szybkości nie jest przenośny między systemami.

H.265/HEVC jest standardem przeznaczonym między innymi do treści Ultra High Definition i pozostaje szeroko wdrożony. Nowsze standardy, takie jak VVC (H.266), rozwijają efektywność kodowania, lecz wybór kodeka zależy od sprzętu, licencji, ekosystemu i wymagań usługi. W praktyce wdrożenie zależy także od dostępności dekoderów, obsługi formatu przez usługę transmisji oraz budżetu obliczeniowego urządzeń docelowych.

Powiązane artykuły