Kompresja H.265/HEVC

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

Wyzwanie Wysokiej Rozdzielczości: Dlaczego H.264 Potrzebował Następcy

H.264/AVC był monumentalnym osiągnięciem w dziedzinie kompresji wideo. Przez prawie dekadę był niekwestionowanym królem, napędzającym wszystko, od płyt Blu-ray po eksplozję wideo online na platformach takich jak YouTube. Jednak technologia nigdy nie stoi w miejscu. W miarę postępu technologii wyświetlaczy świat zaczął przechodzić z Full HD (1920×10801920 \times 1080) na rozdzielczości ultra-wysokiej definicji, takie jak 4K (3840×21603840 \times 2160), a nawet 8K.

Ten skok w rozdzielczości stanowił ogromny problem z danymi. Klatka wideo 4K zawiera cztery razy więcej pikseli niż klatka 1080p. Klatka 8K zawiera szesnaście razy więcej. Chociaż H.264 technicznie mógłby obsłużyć te rozdzielczości, wymagane przepływności (bitrate) byłyby ogromne, co czyniłoby go niepraktycznym do strumieniowania przez istniejącą infrastrukturę internetową lub do transmisji telewizyjnej. Cyfrowy świat potrzebował nowego standardu kompresji, który mógłby dostarczyć oszałamiającą klarowność 4K i wyższych rozdzielczości bez konieczności czterokrotnego zwiększania przepustowości.

Wspólny Zespół ds. Kodowania Wideo (JCT-VC), wspólny wysiłek tych samych grup ekspertów ITU-T i ISO/IEC, które stworzyły H.264, został powołany do sprostania temu wyzwaniu. Ich celem było stworzenie następcy, który mógłby osiągnąć tę samą jakość percepcyjną co H.264, ale przy mniej więcej o połowę niższej przepływności. Wynikiem, ustandaryzowanym w 2013 roku, był , znany również jako H.265.

Podstawowa Innowacja: Od Sztywnych Makrobloków do Elastycznych Drzew Kodowania

Dramatyczna poprawa wydajności H.265 wynika z fundamentalnej zmiany w sposobie analizy i partycjonowania klatki wideo. Tam, gdzie H.264 opierał się na stosunkowo sztywnej koncepcji makrobloku o rozmiarze 16×1616 \times 16 pikseli, H.265 wprowadza znacznie bardziej elastyczną i potężną strukturę zwaną . Jest to najważniejsza pojedyncza różnica między tymi dwoma standardami.

Jednostka Drzewa Kodowania (CTU): Nowy Fundament

Zamiast stałych bloków 16×1616 \times 16, koder H.265 pracuje z znacznie większymi CTU. Koder może wybrać rozmiar CTU, który może wynosić 16×1616 \times 16, 32×3232 \times 32, lub nawet 64×6464 \times 64 pikseli. Większe rozmiary bloków są znacznie bardziej wydajne do kodowania dużych, płaskich lub o prostej teksturze obszarów, powszechnych w wideo o wysokiej rozdzielczości, jak czyste niebo czy gładka ściana.

Prawdziwa moc CTU leży w jego rekurencyjnej, drzewiastej strukturze. Koder może zdecydować się na zakodowanie całego CTU 64×6464 \times 64 jako jednej jednostki lub może go podzielić na cztery mniejsze jednostki 32×3232 \times 32. Każda z nich może być dalej dzielona i tak dalej, aż do minimalnego rozmiaru 4×44 \times 4. Ta struktura nazywa się drzewem czwórkowym (quadtree) i pozwala koderowi na dostosowanie rozmiaru bloku przetwarzania do złożoności treści obrazu z niewiarygodną precyzją.

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 decyduje, jak głęboko podzielić, w zależności od zawartości obrazu. Płaski, jednolity region może być zakodowany jako pojedynczy CU 64×6464 \times 64, podczas gdy bardzo szczegółowy obszar o złożonych teksturach może zostać podzielony na wiele mniejszych CU. Rozmiar CU dyktuje szczegółowość decyzji kodowania, które następują.
  • Jednostki Predykcji (PUs): Wewnątrz każdego CU koder musi zdecydować, jak przeprowadzić predykcję (wewnątrz- lub międzyklatkową). CU jest dzielone na jedną lub więcej . W przypadku predykcji ruchu, duży CU może być podzielony na asymetryczne PU (np. dwa prostokąty), aby lepiej dopasować się do kształtu i ruchu obiektu. Jest to bardziej elastyczne niż stałe podziały pod-makrobloków w H.264.
  • Jednostki Transformacji (TUs): Po predykcji rezydualna (różnica między oryginałem a przewidywaniem) musi zostać zakodowana. Odbywa się to za pomocą transformacji podobnej do DCT. CU jest dzielone na drzewo czwórkowe . HEVC pozwala na większe rozmiary transformacji niż H.264 (do 32×3232 \times 32 w porównaniu do 8×88 \times 8). Większe transformacje są bardziej skuteczne w kompaktowaniu energii rezydualnej w gładkich obszarach obrazu, co prowadzi do lepszej kompresji.

Ta struktura CTU daje koderowi H.265 ogromną elastyczność w mądrym wydatkowaniu swojego budżetu na dane, używając dużych, wydajnych bloków dla prostych obszarów i poświęcając więcej zasobów na małe, złożone szczegóły. Jest to największy pojedynczy czynnik przyczyniający się do jego ulepszonej wydajności kompresji.

Poniższy interaktywny przykład pozwala porównać sztywne makrobloki H.264 z adaptacyjnym drzewem CTU H.265 w różnych scenariuszach obrazu.

Plac zabaw quadtree CTU

Porównaj sztywne makrobloki 16×16 z adaptacyjnymi jednostkami CTU w typowych scenach.

Wzorce sceny

Duży jednorodny obszar – koder pozostawia CTU w całości i jedynie subtelnie dzieli transformacje.

Poziom analizy
CTU 64×64
Jednostki kodowania (CU)
64×64

Jak myśli koder: Zachowanie CU 64×64 eliminuje narzut nagłówków. Drzewo transformacji dzieli się jedynie, aby precyzyjniej skwantować niewielkie gradienty.

Siatka makrobloków H.264
16×161
16×162
16×163
16×164
16×165
16×166
16×167
16×168
16×169
16×1610
16×1611
16×1612
16×1613
16×1614
16×1615
16×1616

H.264 traktuje obszar 64×64 jako szesnaście makrobloków 16×16. Każdy blok niesie narzut nagłówków, nawet jeśli region jest zupełnie gładki.

Wpływ partycjonowania
Średnia głębokość drzewa
1.2
Liczba CU
1
Szacowana oszczędność bitrate względem H.264
48%

Zaawansowane Narzędzia Predykcji i Kodowania

Oprócz struktury CTU, H.265/HEVC wprowadza szereg innych ulepszeń, które udoskonalają procesy predykcji i kodowania, wyciskając jeszcze więcej redundancji.

  • 1. Ulepszona Predykcja Wewnątrzklatkowa

    W przypadku klatek I (oraz bloków kodowanych wewnątrzklatkowo w klatkach P/B), H.264 oferował 9 trybów predykcji. H.265 radykalnie rozszerza to do 35 trybów dla predykcji wewnątrzklatkowej. Obejmuje to stary tryb DC (uśrednianie), nowy tryb Planarny (tworzący gładki gradient powierzchni) oraz 33 tryby kątowe. Posiadanie znacznie drobniejszego wyboru kątów predykcji pozwala koderowi na dokładniejsze przewidywanie struktur kierunkowych, takich jak krawędzie i tekstury, co skutkuje znacznie mniejszą rezydualną do zakodowania.

  • 2. Poprawiona Predykcja Ruchu: Tryby Merge i AMVP

    W przypadku klatek P i B, H.265 ulepsza sposób kodowania samych wektorów ruchu. Wprowadza dwa zaawansowane tryby dla każdej Jednostki Predykcji:

    • Tryb Merge: Koder buduje listę kandydatów na wektory ruchu z sąsiednich bloków przestrzennych i czasowych. Jeśli jeden z tych kandydatów zapewnia dobre dopasowanie dla bieżącego bloku, koder może po prostu wysłać krótki indeks wskazujący na tego kandydata na liście. Nie musi wysyłać nowego wektora ruchu ani rezydualnej, co skutkuje niezwykle wydajnym kodowaniem dla obszarów o spójnym ruchu.
    • Zaawansowana Predykcja Wektorów Ruchu (AMVP): Działa podobnie do trybu Merge, wykorzystując sąsiednie wektory do przewidzenia bieżącego wektora ruchu. Jednak po użyciu przewidzianego wektora, wciąż udoskonala wynik i koduje małą różnicę (rezydualną) między przewidzianym wektorem a ostatecznym, optymalnym wektorem. Używa się tego, gdy ruch jest podobny do sąsiadów, ale nie identyczny.
  • 3. Adaptacyjne Przesunięcie Próbki (SAO)

    Jest to nowy filtr stosowany w pętli predykcji, podobnie jak filtr odblokowujący. SAO ma na celu zmniejszenie zniekształceń poprzez klasyfikację pikseli do kategorii (np. na podstawie kierunku krawędzi lub poziomu jasności), a następnie dodanie małej wartości przesunięcia do wszystkich pikseli w danej kategorii. Działa jako ostateczny krok czyszczący, korygując małe, spójne błędy wprowadzone przez proces kwantyzacji, poprawiając w ten sposób zarówno jakość percepcyjną, jak i dokładność klatki jako referencji dla przyszłych predykcji.

Zaprojektowany dla Równoległości: Kafelki i Fronty Falowe

Jedną z głównych krytyk H.264 była jego wysoce sekwencyjna natura, co utrudniało wydajne kodowanie i dekodowanie na nowoczesnych procesorach wielordzeniowych. H.265 został zaprojektowany od podstaw, aby rozwiązać ten problem, wprowadzając funkcje specjalnie umożliwiające masowe przetwarzanie równoległe.

  • Kafelki (Tiles): Koder może podzielić obraz na siatkę prostokątnych regionów zwanych kafelkami. Każdy kafelek można kodować i dekodować całkowicie niezależnie od pozostałych. Jest to potężna funkcja, ponieważ odtwarzacz wideo na komputerze z 8-rdzeniowym procesorem mógłby przypisać każdy kafelek do osobnego rdzenia i zdekodować je wszystkie równolegle, co radykalnie przyspiesza odtwarzanie. Filtry w pętli, takie jak filtr odblokowujący, są ograniczone do działania tylko w granicach kafelków.
  • Równoległe Przetwarzanie Frontem Falowym (WPP): Jest to inna, bardziej szczegółowa forma równoległości. Kodowanie i dekodowanie wierszy CTU może odbywać się równolegle, z niewielkim opóźnieniem. Pierwszy wiersz CTU jest przetwarzany normalnie. Gdy rozpoczyna się przetwarzanie drugiego wiersza, może on wykorzystywać informacje z CTU w wierszu powyżej jako kontekst. Przetwarzanie drugiego wiersza może się rozpocząć, zanim pierwszy wiersz zostanie w pełni zakończony, tworząc "front falowy" przetwarzania, który przesuwa się w dół i w poprzek obrazu. Pozwala to na zrównoleglenie, nawet gdy kafelki nie są używane.

Te cechy sprawiają, że H.265 jest znacznie lepiej dostosowany do sprzętu dzisiejszego i przyszłego, umożliwiając kodowanie i dekodowanie wideo 4K i 8K w czasie rzeczywistym na wszystkim, od wysokiej klasy serwerów po energooszczędne urządzenia mobilne.

Zobacz, jak wybór kafelków i harmonogram wavefront przekłada się na równoległość dekodera w praktyce korzystając z interaktywnej wizualizacji poniżej.

Planer kafelków i wavefront

Zobacz, jak HEVC wykorzystuje wielordzeniowość dzięki kafelkom i harmonogramowi wavefront.

Technika
Układy kafelków

Podział kadru na pół w pionie – dobry kompromis dla dekoderów 2-rdzeniowych.

Metryki kafelków
Liczba kafelków
2
Maks. równoległe dekodery
2
Największy kafelek (CTU)
12

Wskazówka kodera: Zachowuje wspólne referencje w obrębie połówek i podwaja przepustowość dekodera.

T1R1C1
T1R1C2
T1R1C3
T2R1C4
T2R1C5
T2R1C6
T1R2C1
T1R2C2
T1R2C3
T2R2C4
T2R2C5
T2R2C6
T1R3C1
T1R3C2
T1R3C3
T2R3C4
T2R3C5
T2R3C6
T1R4C1
T1R4C2
T1R4C3
T2R4C4
T2R4C5
T2R4C6

Siatka przedstawia obszar 6×4 zbudowany z CTU 64×64.

Podsumowanie: Cena i Obietnica Wydajności

H.265/HEVC z powodzeniem osiągnął swoje cele projektowe. Dostarcza niezwykłą poprawę wydajności kompresji, oferując zazwyczaj redukcję bitrate'u o 40-50% w porównaniu z H.264 przy tej samej percepcyjnej jakości wideo. To jest magia, która sprawia, że streaming 4K staje się rzeczywistością dla milionów ludzi. Pozwala nadawcom na transmisję kanałów UHD i umożliwia nam przechowywanie godzin wideo o wysokiej rozdzielczości na naszych urządzeniach.

Jednak ta wydajność ma swoją cenę. Elastyczne partycjonowanie i zaawansowane narzędzia predykcji wymagają od kodera podejmowania znacznie większej liczby decyzji dla każdego bloku. Musi on przetestować wszystkie możliwe podziały CU, PU i TU oraz wszystkie 35 trybów predykcji wewnątrzklatkowej, aby znaleźć najbardziej wydajną kombinację. To sprawia, że kodowanie H.265 jest znacznie bardziej kosztowne obliczeniowo niż H.264, czasami wymagając nawet 10 razy więcej mocy obliczeniowej. Dekodowanie jest również bardziej złożone, choć różnica jest mniej dramatyczna dzięki funkcjom równoległości.

H.265/HEVC stanowi kluczowy krok w ewolucji technologii wideo, zapewniając wydajność potrzebną do wprowadzenia ery wideo Ultra High Definition. Chociaż jeszcze nowsze standardy, takie jak VVC (H.266), nadal przesuwają granice, H.265 pozostaje dominującym i niezbędnym kodekiem do dostarczania wysokiej jakości wideo na całym świecie.

    Kompresja H.265/HEVC | Teleinf Edu