Dowolna kolejność plasterków

Arbitralne porządkowanie fragmentów ( ASO ) w cyfrowym wideo to algorytm zapobiegający stratom. Służy do restrukturyzacji uporządkowania reprezentacji podstawowych regionów ( makrobloków ) na obrazach. Ten typ algorytmu pozwala uniknąć konieczności czekania na pełny zestaw scen, aby uzyskać wszystkie źródła. Zwykle uważana za funkcję odporności na błędy/utraty.

Ten typ algorytmu jest zawarty jako narzędzie w profilu bazowym kodera H.264/MPEG-4 AVC z I Slices , P Slices , Context Adaptative Variable Length Coding ( CAVLC ), grupowaniem plasterków (Slice Group), arbitralną kolejnością plasterków (ASO ) i Wycinki nadmiarowości .

Aplikacje

Głównie w przypadku tańszych aplikacji z ograniczonymi zasobami obliczeniowymi, ten profil jest szeroko stosowany w wideokonferencjach , aplikacjach mobilnych i aplikacjach bezpieczeństwa.

Arbitrary Slice Ordering (ASO) zmniejsza ograniczenie polegające na tym, że wszystkie makrobloki muszą być sekwencjonowane w kolejności dekodowania, a tym samym zwiększa elastyczność w zakresie wydajności o niskim opóźnieniu, co jest ważne w aplikacjach do telekonferencji i interaktywnych aplikacjach internetowych .

Problemy

Jeśli ASO na obrazach jest obsługiwane w AVC, pojawiają się poważne problemy: plasterki z różnych obrazów są przeplatane. Jednym z możliwych sposobów rozwiązania tych problemów jest ograniczenie ASO w obrazie, tj. wycinki z różnych obrazów nie są przeplatane.

Jednak nawet jeśli ograniczymy ASO w obrazie, złożoność dekodera znacznie wzrośnie. Ponieważ elastyczna kolejność makrobloków FMO rozszerza koncepcję segmentów, umożliwiając przynależność makrobloków nienastępujących po sobie do tego samego segmentu , w tej sekcji omówiono również złożoność dekodera wprowadzoną przez (FMO).

Rodzaje dekodowania ASO

Skojarzenie makrobloków z krojeniem

  • Wpływ ASO na złożoność dekoderów AVC

Przykład tego, jak makrobloki mogą być powiązane z różnymi segmentami , pokazano na rysunku 1. Gdy obsługiwane jest ASO, cztery wycinki z tego przykładu mogą być odbierane przez dekoder w losowej kolejności. Rysunek 2 przedstawia następującą kolejność odbioru: wycinek nr 4, wycinek nr 3, wycinek nr 1 i wycinek nr 2. Ten sam rysunek przedstawia bloki dekodera AVC wymagane do obsługi dekodowania ASO.

ASO 1.JPG

Rysunek 1: Przykład przypisania makrobloku do czterech warstw . Każdy kawałek jest reprezentowany przez inną teksturę.

Bloques descodificador AVC.JPG

Rysunek 2: Bloki dekodera AVC muszą obsługiwać dekodowanie ASO.

Dla każdego wycinka długość wycinka i adres makrobloku (tj. indeks w odniesieniu do kolejności skanowania rastrowego ) pierwszego makrobloku (MB) wycinka wyodrębniane przez parser wycinka (figura 2). Informacje te, wraz z plasterkiem , są przechowywane w pamięci (pokazanej jako DRAM). Ponadto należy wygenerować listę wskaźników (Rysunek 2, wskaźnik dla każdego wycinka i każdy wskazujący na miejsce w pamięci, w którym przechowywany jest wycinek ). Lista wskaźników wraz z adresem pierwszego makrobloku wycinka posłuży do poruszania się po nie uporządkowanych wycinkach . Długość wycinka zostanie wykorzystana do przesłania danych wycinka z pamięci DRAM do pamięci wewnętrznej dekodera.

W obliczu konieczności dekodowania nie uporządkowanych wycinków dekoder może:

  • 1) poczekaj na przybycie wszystkich wycinków każdego obrazu przed rozpoczęciem dekodowania i odblokowania obrazu.
  • 2) dekodować plastry w kolejności, w jakiej docierają do dekodera.

Pierwsza metoda zwiększa opóźnienie, ale umożliwia równoległe wykonywanie dekodowania i usuwania bloków. Jednak zarządzanie dużą liczbą wskaźników (w najgorszym przypadku jeden wskaźnik na każdy MB) i zwiększanie inteligencji jednostki dostępowej DRAM zwiększa złożoność dekodera.

Druga metoda znacząco obniża wydajność dekodera. Ponadto, przeprowadzając odblokowanie w drugim przebiegu, zwiększa się przepustowość pamięci DRAM do procesora.

Dekodowanie wycinków w kolejności, w jakiej są odbierane, może spowodować dodatkowe zużycie pamięci lub nałożyć na dekoder i pamięć lokalną wyższe wymagania dotyczące przepustowości, aby działały z wyższą częstotliwością zegara. Rozważmy aplikację, w której operacja wyświetlania odczytuje obrazy do wyświetlenia bezpośrednio z sekcji pamięci, w której dekoder przechowywał obrazy.

Skojarzenie makrobloków z plasterkami i plasterków z grupą plasterków

  • Wpływ ASO i FMO na złożoność dekoderów AVC

Przykład tego, w jaki sposób wycinki mogą być powiązane z różnymi grupami wycinków , pokazano na fig. 3. Gdy obsługiwane są ASO i FMO, cztery wycinki z tego przykładu mogą być odbierane przez dekoder w losowej kolejności. Rysunek 2 przedstawia następującą kolejność: wycinek nr 4, wycinek nr 2, wycinek nr 1 i wycinek nr 3. Ten sam rysunek przedstawia bloki dekodera AVC wymagane do obsługi dekodowania ASO i FMO.

Slice Group.JPG

Rysunek 3: Przykład przypisania makrobloku do czterech wycinków i do dwóch grup „Wycinek” (SG na rysunku). Każdy plasterek jest reprezentowany przez inną teksturę, a każda plasterków jest reprezentowana przez inny kolor.

Bloques descodificador AVC2.JPG

Rysunek 4: Bloki dekodera AVC muszą obsługiwać dekodowanie ASO i FMO.

Oprócz długości wycinka i adresu makrobloku pierwszego makrobloku (MB) wycinka , parser wycinka (Rysunek 4) musi wyodrębnić grupę wycinka (SG) każdego wycinka . Informacje te, wraz z plasterkiem , są przechowywane w pamięci DRAM. Podobnie jak w przypadku ASO należy wygenerować listę wskaźników (Rysunek 4).

Lista wskaźników, wraz z adresem pierwszego MB segmentu , SG i mb_allocation_map (przechowywanymi w pamięci lokalnej procesora), będzie używana do poruszania się po plasterkach . Długość wycinka zostanie wykorzystana do przesłania danych wycinka z pamięci DRAM do pamięci lokalnej procesora.

Podobnie jak w przypadku ASO, w połączonym przypadku ASO i FMO dekoder może:

  • 1) poczekaj na przybycie wszystkich wycinków każdego obrazu przed rozpoczęciem dekodowania i odblokowania obrazu.
  • 2) dekodować plastry w kolejności, w jakiej docierają do dekodera.

Pierwsze podejście jest nadal preferowane. Ze względu na FMO, dekodowanie makrobloków w kolejności skanowania rastrowego może wymagać przełączania pomiędzy różnymi plasterkami i/lub grupami plasterków . Aby przyspieszyć dostęp do DRAM, należy użyć jednego bufora dla każdej Grupy Wycinków (Rysunek 4). Ta dodatkowa inteligencja jednostki dostępowej DRAM jeszcze bardziej zwiększa złożoność dekodera. Ponadto przełączanie pomiędzy różnymi segmentami i/lub grupami segmentów wymaga zamiany informacji o stanie dekodera entropijnego (ED). W najgorszym przypadku zamiana następuje po zdekodowaniu każdego makrobloku. Jeśli cała informacja o stanie dekodera entropijnego jest zbyt duża, aby mogła być przechowywana w pamięci lokalnej procesora, każdy status ED musi być załadowany z pamięci DRAM i przechowywany w niej, co dodatkowo zwiększa przepustowość pamięci DRAM do pamięci procesora (Rysunek 4 ) .

Zobacz też

  • Iole Moccagatta, LSI Logic (2002). „Dowolna kolejność wycinków i elastyczna kolejność makrobloków Wpływ zgodności z AVC i złożoności implementacji”