Xvid ustawienia


Opis ustawień prowadzących do optymalnej
(najlepszej pod względem jakości) kompresji.
Na podstawie Xvid 1.1.0 z www.koepi.org
2006-04-03  




Strona główna   FFDshow   AC3 Filter   XviD   divx2dvd   dvd2divx   dvd2mp4




Aby ułatwić czytanie i korzystanie z tego dość obszernego dokumentu

jego poszczególne elementy sformatowano zależnie od ich treści
oraz od istotności poznania tej treści dla poznania sposobu kompresji
za pomocą enkodera mpeg-4 xvid.

Zwykłym tekstem opisano rzeczy podstawowe i właściwie niezbędne
do właściwej i świadomej konfiguracji enkodera.
Przeczytanie tej części w zasadzie powinno nam wystarczyć
do uzyskania zadowalających efektów kompresji, jak i do uniknięcia
niepewności co do zastosowania danego elementu.

Pismem pogrubionym zaznaczono hasła występujące w enkoderze
i słowa-klucze niezbędne do poznania istoty kompresji,
ułatwiając w ten sposób ich znalezienie i podkreślając ich wagę.

Kursywą opisano rzeczy nie związane bezpośrednio
z omawianym właśnie zagadnieniem, ale w sposób istotny wpływające
na ustawienia enkodera i będące kluczowe dla pożądanego efektu.

Kolorem zielonym opisano technologię działania kodeka.
Jej poznanie nie jest niezbędne, ale umożliwia
w pełni świadome korzystanie z danych opcji.

Kolorem szarym opisano ciekawostki związane pośrednio
z omawianym zagadnieniem, ale nie związane z kodekiem xvid.

Dodatkowo poniżej znajdzie się spis treści, który pozwali
na łatwe i szybkie odszukanie określonych zagadnień.
Albo zrobię okrojoną wersję tej strony - tak będzie najlepiej:)




Xvid jest jednym z najlepszych, dostępnym za darmo enkoderem mpeg-4
oferującym prawie pełną implementacje
ISO 14496-2 (video)
Moving Pictures Expert Group 4, chapter 9, level 5 :)
czyli Advanced Simple Profile (ASP)
(również Simple Profile i wszystkie profile Divx5)


Główne okno


Powyżej widzimy główne okno ustawień Xvida.

Profile @ level tutaj wybieramy jaki profil MPEG-4 będziemy używać.
Przycisk more... po prawej prowadzi do dodatkowych opcji.
Encoding Type - wybór liczby przebiegów kodowania.
Target bitrate / Target quantizer - ustawienie przepływności kbps
lub ustawienie stopnia degradacji obrazu (ustawienie quantizera).
Obok jest Kalkulator, który policzy nam
jaki bitrate powinien mieć film, aby wejść na CD.



Konfiguracja

Powyżej widzimy okno z dodatkowymi ustawieniami parametrów kompresji.
W zasadzie nie licząc tak podstawowych parametrów jak bitrate i liczba przebiegów
są to najważniejsze, podstawowe parametry.
Również tutaj mamy dostęp do profili mpeg i poziomów.
Profile są standardami określającymi nam możliwość użycia określonych metod kompresji
takich jak np. użycie GMC czy Qpel, ale również określają one poprzez swoje poziomy
maksymalną rozdzielczość, liczbę kletek na sekundę, bitrate* itp.
W zakładce Level widzimy dokładnie na co który poziom danego profilu pozwala.

* UWAGA! Aby enkoder zastosował się w pełni do standardów danego profilu
dotyczącego maksymalnej chwilowej i średniej przepływności bitów,
należy użyć trybu dwuprzebiegowego kompresji (2pass),
gdyż inaczej algorytmy vbv - video bufer verifier nie zostaną użyte!
Dodatkowo opcja ta jest dostępna od wersji kodeka 1.1,
przy czym dopiero w najnowszej jak na obecną chwili wersji beta 2
działają one prawidłowo w przypadku profili divx5.


Advanced Simple Profile - AS @ L5
W zasadzie podstawowy profil mpeg4,
często określany jako "divixy".
Polecam stosować jego poziom piąty,
co umożliwia nam uzyskanie filmów
w formacie PAL lub NTSC z wykorzystaniem
wszystkich standardowych opcji.

Simple Profile - mniejszy brat ASP,
mniejsza rozdzielczość, fps i bitrate'y

Advanced Realtime Simple Profile - ARTS
Profil do strumieniowania wideo w internecie.
Obecnie niedostępny, a dostępny w pierwszej becie xvida 1.1
Usunięto go ze względu na zerową przydatność
najczęściej stosowanego formatu przechowywania
strumienia wideo AVI do transmisji na żywo w internecie,
oraz ze względu na różnice miedzy nim, a profilem ASP.

Divx Networks Home Theatre Profile - DXN HT
Jest to profil umożliwiający uzyskanie filmów
w pełni zgodnych z divx5 (jednak o lepszej jakości),
przeznaczonych na stacjonarne odtwarzacze
z certyfikatem (logiem) divx.
Od profilu ASP różni się brakiem Qpel i GMC
oraz innymi wartościami przepływności bitów,
co jest wymuszone przez ograniczone możliwości
chipów dekodujących wideo w stacjonarnych odtwarzaczach.

Aby uzyskać pełną zgodność i wykorzystać mechanizm
video buffer verifier nalezy obraz kodować dwuprzebiegowo.

Z doświadczenia wiem jednak, że dane wartości 4000kbps
są w filmach na jednym lub dwóch CD rzadko przekraczane
i chwilowy bitrate nie "zapcha" nam buforów w odtwarzaczu,
a jeśli nawet to będzie to się objawiało kilkusekundowym
"przycinaniem" się obrazu, a nie niemożliwością odtworzenia filmu.
Dodatkowo w większości przypadków wystarczy zastosować profil ASP,
bez użycia GMC lub Qpel aby uzyskać materiał
odtwarzalny na stacjonarnych urządzeniach.

Inne profile Divx Networks - DXN
Handheld - profil do urządzeń typu komórki itp.
W zasadzie niewykorzystywany - nie przyjął się.
Jego główną cechą jest rozdzielczość 1/4 PAL,
15 klatek na sekundę i bitrate do 600kbps
Portable - profil do urządzeń przenośnych
zarówno NTSC jak i PAL, oferujący połowę
pełnej rozdzielczości i pełną liczbę klatek na sekundę.
HDTV - profil wysokiej rozdzielczości
w standardzie 720p - 720 poziomych linii
i progresywne skanowanie obrazu (bez przeplotu)
Na razie niedaleka przyszłość

Unrestricted - profil nieograniczony.
Można stosować dowolne rozdzielczości, bitrate'y
i dowolną liczbę klatek na sekundę,
jak i dowolne elementy i bajery kodeka;)

Jednak jak już wspomniałem optymalnym ustawieniem jest AS @ L5


Quantization type - rodzaj kwantyzacji. Od tego zależy jakość skompresowanego materiału.

Kompresja wideo za pomocą kodeka mpeg4 polega między innymi* na tym,
że
obraz dzielony jest na bloki, a następnie za pomocą algorytmu DCT -
Dicrete Cosine Transform dokonywana jest analiza częstotliwościowa tego obrazu.
Otrzymujemy w jej wyniku macierz o rozmiarach 8x8, której poszczególne elementy
wskazują na ilość składowych o danej częstotliwości.
Jest to więc charakterystyka częstotliwościowa danego bloku
opisująca dany obraz.

*inne elementy tej kompresji - np. kompresja ruchu - zostaną opisane dalej.

Podobnie działają kodeki MP3 np. LAME, które wykorzystują FFT -
szybką transformację Fouriera do opisywania fali dźwiękowej
nie w funkcji amplitudy, a w funkcji częstotliwości.

Zaletą częstotliwościowego opisu obrazu jest to,
że możemy zmniejszyć precyzję zapisu określonych,
mniej rozpoznawalnych przez ludzkie oko częstotliwości,
lub nawet usunąć całkowicie informacje o niektórych z nich,
podczas gdy zabiegi takie na obrazie w postaci amplitudowej są niemożliwe,
a wszelka ingerencja w precyzję zapisu ich wartości powodowała by
wyraźnie widoczną jego degradacje przy jednocześnie niewielkiej wydajności
(stopniu kompresji).

Wadą opisu obrazu za pomocą DCT jest to, że algorytm ten opisuje
stałe, powtarzające się wzory oraz to, że przy wyższych stopniach
kompresji z powodu braku części składowych obrazu
powstają charakterystyczne artefakty kompresji "śmiecie"
(zwłaszcza przy ostrych krawędziach gładkich powierzchni).

Powiekszony 4x obraz "śmieci"

Powyżej znajduje się powiększony 4x obraz "śmieci"
Zwróćcie uwagę na to, że wystające na białe tło "zęby"
mają dokładnie 8x8 pikseli.
Pierwotny obrazek zawierał tylko podstawowe kolory,
bez żadnych różnych odcieni i tekstur.

Kolejnym artefaktem wynikającym z kompresji jest to,
że przy płynnych gradacjach, czyli przejściach tonów,
brzegi sąsiednich bloków mogą nie pasować do siebie kolorystycznie
tworząc "bloki".
Dzieje się tak dlatego bo sąsiadujące ze sobą bloki
nie mają na siebie wpływu, ani się do siebie nie odwołują.

Powiększony 4x obraz "bloków"

Powyżej znajduje się wycięty obraz "bloków" w skali 1:1

Efekt bloków i śmieci można zmniejszyć
stosując postprocessing w dekoderze.

Istnieją algorytmy pozwalające zapisywać i kompresować obraz
bez tych artefaktów. Kompresja typu wavelet (falkowa)
pozwala na zapisywanie skończonych ciągów, podczas gdy DCT i FFT
opisują powtarzający się wycinek nieskończonego ciągu.
Jednak taka transformacja nie jest w standardzie mpeg4 opisana.
Stosuje ją mocno eksperymentalny kodek video "snow", oraz JPEG2000.

Jak już wcześniej wspomniano ludzkie oko różnie reaguje na różne częstotliwości,
to znaczy im wyższa częstotliwość, czyli im szczegóły są drobniejsze,
tym są mniej zauważalne przez oko.
Podobnie jest w przypadku obiektów poruszających się,
oraz drobnych szczegółów na tle dużych lub kontrastowych elementów.

Według słownika języka polskiego kwantyzacja oznacza
2. techn. «zastąpienie opisu ciągłego przebiegu danej wielkości
(np. sygnału elektrycznego) opisem nieciągłym
za pomocą tylko niektórych wartości
przyjmowanych przez przebieg ciągły; kwantowanie»

Według wikipedii proces kwantyzacji
aproksymuje poziomy analogowe najbliższymi poziomami cyfrowymi.
Liczba tych poziomów jest ograniczona,
dlatego aproksymacja może powodować błędy zwane błędami kwantyzacji.
Większa liczba poziomów zmniejsza te błędy.


Czyli podczas kwantyzacji dyskretne, o nieskończonej dokładności
wartości danych częstotliwości są zapisywane za pomocą określonej
liczby poziomów. Bezpośrednio po konwersji DCT liczba poziomów jest duża
i prawdopodobnie tak zapisany obraz mógłby zająć więcej miejsca niż oryginał.
Dlatego też uzyskane wartości dzieli się i zaokrągla do wartości całkowitej,
a następnie kompresuje bezstratnymi algorytmami kompresji.
Konkretne uzyskane wartości dzieli się przez odpowiadające im współczynniki
z danej macierzy kwantyzacji. W ten sposób kontrolujemy rozkład danych
pomiędzy niskie i wysokie częstotliwości obrazu,
a także ich ogólny poziom degradacji.
Standardowe wartości w macierzach kwantyzacji wynoszą
od 16 dla najniższych częstotliwości (8 w przypadku klatek kluczowych)
do około 40 w macierzy mpeg lub 100-150 w macierzach typu hvs*
Oznacza to, że liczba poziomów jakie może przyjąć dana częstotliwość
zmniejsza się 16 razy lub ponad 100krotnie!
Jeśli po procesie dzielenia i zaokrąglania wyjdzie nam zero
informacja danej częstotliwości jest całkowicie i nieodwracalnie usuwana.

* szczegółowe objaśnienie przy opisie macierzy mpeg-custom

Dodatkowo uzyskane wartości są dzielone przez współczynnik kwantyzacji - quantizer,
który przyjmuje wartości od 1 do 31 i to za jego pomocą reguluje się
stopień kompresji poszczególnych bloków, klatek jak i całego filmu.
Więcej informacji o quantizerze jest w dalszych częściach tekstu.

PRZYKŁAD:
Po konwersji DCT cztery kolejne elementy
otrzymanej macierzy mają następujące wartości:

128 135 135 140

Odpowiadające im dzielniki z macierzy kwantyzacji to:

16 16 17 18

I dodatkowo film kompresowany jest z quantizerem równym 4,
co po podzieleniu daje nam następujące wartości:

128/16/4=2,0000 co daje po zaokrągleniu 2
135/16/4=2,1093 co daje po zaokrągleniu 2
135/17/4=1,9852 co daje po zaokrągleniu 2
140/18/4=1,9444 co daje po zaokrągleniu 2

Czyli po procesie kwantyzacji dany szereg

128 135 135 140

zamienił się w następujący szereg:

2 2 2 2

Po zastosowaniu dalszych bezstratnych (huffman) sposobów kompresji
(podobnych do tych z kompresorów typu zip i rar)
zapisuje się to jako "cztery dwójki", "4x2"
a sekwencja zer, która zwykle powstaje na końcu takiego szeregu
zastępowana jest znakiem EOB - końca bloku.

Podczas dekodowania cały proces jest odwracany i otrzymujemy:

2*4*16=128
2*4*16=128
2*4*17=136
2*4*18=144

Czyli oryginalny ciąg:

128 135 135 140

Zmienia się w:

128 128 136 144

Błędy poszczególnych składowych wynoszą odpowiednio:

0  -7   1   4

Są to wartości małe w porównaniu do wartości pierwotnych,
wynoszą około 5% w tym przykładzie,
jednak to powodują właśnie "zachwiania" poziomu jasności
i odcienia pikseli widoczne jako "śmieci",
oraz niedopasowanie brzegów bloków, czyli "bloki".
Ogólnie określamy to mianem szumu kwantyzacji,
który jest tutaj dodatkowo spotęgowany przez kompresję.
(Oryginalne wartości nigdy nie były by całkowite i wynosiły by
np. 128,024212. Pewna degradacja jest tutaj efektem sposobu
oraz dokładności obliczeń jak i zapisu uzyskanych wartości)

Powyższy przykład jest sporym uproszczeniem,
(wg wikipedii po drodze jest jeszcze przesunięcie wartości o -128)
ale daje
pojęcie w jaki sposób dokonywana jest kompresja obrazu.



No więc przechodząc do rzeczy wybierając sposób kwantyzacji
wybieramy sposób traktowania danych uzyskanych po transformacji DCT.
Xvid daje nam tutaj trzy podstawowe możliwości:

H263 - jest to sposób kwantyzacji, który silnie wykorzystuje
właściwości adaptacyjne ludzkiego oka, mocniej kompresując
lub usuwając wyższe częstotliwości składowe z obrazu.
dzięki temu przy niskich bitrate'ach obraz jest lekko "wygładzony",
ale nie występuje w nim zbyt silnie efekt "bloków".
Ten typ kwantyzacji jest polecany dla filmów na 1CD
lub przy jakości (Qf) skompresowanego materiału poniżej 0,180 bitów na piksel
(GSpot 2.5 pokazuje parametr Qf zakodowanego już filmu)

Historycznie rzecz biorąc kwantyzacja H.263 pochodzi ze standardu
ITU H.263, który był pierwowzorem do stworzenia standardu MPEG4 ASP.
Natomiast kwantyzacja MPEG wywodzi się prawdopodobnie ze standardu H.262
który jest wspólnym standardem ITU i MPEG i znany jest jako MPEG-2

MPEG - jest to sposób kwantyzacji zaczerpnięty z formatu mpeg-2
Oferują on wyższą jakość poprzez niższą kompresję wysokich
częstotliwości składowych obrazu. Stosuje się go przy 2 CD
Jednak przy niskich bitrate'ach powoduje on występowanie bloków.
Dodatkowo jego wadą jest występowanie "śmieci" (są bardziej widoczne
niż w przypadku H.263)

Oba te rodzaje kwantyzacji oprócz różnego traktowania
poszczególnych częstotliwości składowych różnią się jeszcze
innym sposobem zapisu oraz otrzymywania danych.
Zaletą kwantyzacji MPEG jest możliwość określenia
macierzy z własnymi wartościami wagowymi
dla poszczególnych częstotliwości.

MPEG Custom - ten sposób kwantyzacji jest moim zdaniem najlepszy
i najbardziej uniwersalny. Jest on identyczny z MPEG,
z tą różnicą, że używa on innych macierzy kwantyzacji.
Dzięki temu możemy wybrać sami jak mają być traktowane
wysokie i niskie częstotliwości.

Istnieją płaskie macierze, gdzie są same 8 lub 16
i wszystkie częstotliwości traktowane są tak samo -
te macierze polecam do archiwizacji i zapisu wideo
przy niewielkich stratach - wystarczy wtedy ustawić
kompresje na stały quantizer równy 1 lub 2 i wyłączyć klatki B
oraz inne optymalizacje typu trellis, lumi masking itp (VHQ może zostać).

Istnieją również macierze gdzie wyższe częstotliwości
są kompresowane mocniej, np. macierze Andreasa lub Jawora,
a także macierze podobne do macierzy mpeg
gdzie stopień kwantyzacji parząc na główną przekątną macierzy
(od lewego górnego, do prawego dolnego rogu)
rośnie liniowo.
Są też macierze "high" compression" gdzie wysokie częstotliwości
(prawy dolny róg) lub prawa strona macierzy (2 lub 4 kolumny)
mają wartość o wiele wyższą (99-255) niż pozostałe wartości (16-32)

Najlepsze są jednak macierze HVS - Human Visual System
(...)


 
Adaptive Quantization - Dawniej zwane lumi masking.

Ludzkie oko ma taką właściwość, że oprócz "mniejszej czułości"
na wysokie częstotliwości składowe obrazu (ostre drobne szczegóły)
wykazuje również braki w postrzeganiu szczegółów
w jasnych i ciemnych partiach obrazu, zwłaszcza jeśli jasność tego obrazu
wykazuje spory kontrast. Podobnie nie jesteśmy w stanie zauważyć szczegółów
na szybko poruszających się obiektach.
Włączenie tego powoduje mocniejszą kompresję ciemnych i bardzo jasnych
obszarów klatki, oraz obszarów na których jest duży ruch.
Są to fragmenty obrazu na których ze względu na jasność lub duży ruch
nie jesteśmy w stanie dostrzec szczegółów obrazu.
Można je więc mocniej skompresować.
W praktyce wygląda to tak, że dane bloki otrzymują
większy quantizer (dzielnik) niż reszta klatki.

W praktyce stosowanie adaptive quantization zależy od preferencji
użytkownika, oraz charakteru kompresowanego materiału.
Przy wysokim bitracie adaptive quantization pozwoli nam
zmniejszyć wynikowy plik bez widocznej utraty jakości,
lub zaoszczędzić te bity na inne fragmenty filmu.
Jednak w takich plikach jakość jest i tak dobra,
więc nie zauważymy wiekzej róznicy.
Przy niskim bitrate teoretycznie korzyści
ze stosowania tej techniki powinny być większe
(i tutaj adaptive quantization byłoby najbardziej polecane),
jednak to zależy od konkretnego przypadku...

Raz mi się zdarzyło kompresować pewien krótki materiał
z bardzo dużym stopniem kompresji
(4 minuty, ~20MB z dźwiękiem przy zwykłej rozdzielczości -
testowałem możliwość uzyskania jak najmniejszego pliku
o zadowalającej mnie jakości).
Po włączeniu adaptive quantization okazało się,
że scena na której widać pokój w półmroku
została mocniej skompresowana i wyraźnie przekompresowana
w stosunku do kompresji bez tego...

Tak naprawdę nie jestem w stanie powiedzieć kiedy
adaptive quantization się sprawdzi, a kiedy nie -
należy zrobić testy i porównać wyniki.
Niektórzy mogą nawet nie zauważyć czegoś,
co inni uznają za wadę dyskwalifikującą.



Interlaced encoding - powoduje zakodowanie materiału z przeplotem.
Nie jest to filtr usuwający przeplot!
Włączenie tej opcji spowoduje jedynie oddzielne zakodowanie
poszczególnych pól obrazu. Niby kodowanie 50 pól na sekundę
powinno dać gorszy wynik niż kodowanie 25 klatek na sekundę,
ale należy pamiętać, że te pola mają tylko połowę pionowej rozdzielczości
klatek, oraz nie występują w nich artefakty przeplotu - grzebienie
z naprzemiennych przesuniętych wobec siebie poziomych linii, które
tworzyły by wzory o wysokiej częstotliwości, co znacznie utrudniało by kompresję.

Uwaga! nie należy zmieniać pionowej rozdzielczości materiału
z przeplotem przed jego usunięciem (decomb, TomsMoComp),
lub jeśli zamierzamy zachować jego strukturę
(np. film z kamery DV podczas przerabiania na DVD)

Przeplot spotykamy w materiałach pochodzących z tv
oraz kamer wideo. Nie powinien on natomiast występować
w filmach nagranych dla kina na celuloidzie,
również jeśli są puszczane w tv - wtedy jednak
należy sprawdzić jego obecność osobiście!
Można też sprawdzić strukturę wejściowego materiału w gspocie
(parametr I/L w sekcji Video -> time)

W systemie NTSC kinowy film, który ma 24 klatki na sekundę
jest spowalniany do 23,976fps, a następnie jest rozciągany
(proces ten nazywa się telecine) do 29,97fps.
Odbywa się to tak, że część klatek jest wyświetlana
przez "półtorej klatki" tj. następna klatka posiada jedno z pól
z poprzedniej i jedno z następnej klatki. Dzięki temu mamy 3 klatki
"progresywne" bez przeplotu a potem dwie klatki,
które zawierają pola z dwóch sąsiednich klatek,
przez co występuje w nich efekt przeplotu...
W ten sposób dostosowywują oni (amerykanie i japończycy)
24 klatki kinowe do swoich wyświetlających 30 klatek telewizorów.
Nie należy takiego materiału traktować filtrami do usuwania przeplotu,
lecz filtrami do inverse telecine - IVTC.
Filtry te odbudują nam progresywny materiał z 23,976 fps bez strat!
Filtr taki jest wbudowany w Virtual dub mod
(video -> frame rate -> 3:2 pulldown-> reconstruct from fields - adaptive)
Jednak nie jest on idealny (czasem się gubi i zostawia klatki z przeplotem,
zwłaszcza tam gdzie jest mało ruchu) i dlatego lepiej stosować
filtr decomb razem z avisynthem.
Szerszy opis wykonywania IVTC za pomocą decomb
opisałem w tutorialu mp4.



Quarter pixel motion estimation - Qpel ME
Opcja ta umożliwia kompresję ruchu używając
wektorów ruchu, których dokładność wynosi 1/4 piksela.
Dzięki wyższej dokładności zapisu ruchu poszczególnych bloków
otrzymujemy ostrzejszy obraz, gdyż w skutek niedokładności przesunięć
wraz z każda klatką początkowo zakodowany, ostry obraz rozmywa się.
Nigdy w naturze nie spotkamy się z takim ruchem, aby dany obiekt
przesunął się o całkowita liczbę pikseli.
Ponieważ w nowym położeniu bloki nie będą idealnie spasowane z obrazem,
wraz z każdą klatką ostrość ich obrazu będzie się degradować.
Użycie Qpel pozwoli zahamować ten proces.

Wg. tego co wyczytałem na forum.doom9.org qpel nie poprawia jakości wideo.
Użycie qpel powoduje powstawanie charakterystycznej ziarnistości filmu,
rośnie też współczynnik PSNR - wyrażona w decybelach róznica
miedzy oryginałem a skompresowanym materiałem.
Nie zwiększa też stopnia kompresji. Qpel używa do zapisu
każdego wektora ruchu dwóch bitów więcej.
Jednak końcowy efekt jest opłacalny na tyle,
że następca mpeg4 ASP - AVC, a konkretnie X264 używa qpel
nawet przy ustawionym najniższym poziomie poszukiwań ruchu.

Należy jednak pamiętać, że obecnie mało jest stacjonarnych odtwarzaczy divx,
które są w stanie zdekodować film skompresowany z Qpel,
Dlatego jeśli nasz film miałby być oglądany przy pomocy stacjonarnego
odtwarzacza divx, to należy Qpel wyłączyć!



GMC - Global motion compensation
Czyli globalna kompensacja ruchu:)
Ruch kamery prawo-lewo, góra-dół wszelkie skręty i powiększenia
powodują, że wektóry ruchu (które opiszę dalej) układają sie tak,
że można je razem wszystkie przewidzieć i zapisać w prosty sposób.
GMC działa tak, że określa prostokąt zawierajacy kilkanascie makrobloków,
których wektory ruchu można wyliczyć na podstawie wektórów bloków,
które znajują sie na rogach tego prostokąta.
Te wektory na rogach nazywane są warp pointami.
Jednak nie wszystkie cztery są zawsze wykorzystywane.
Dla prostszych ruchów wystarczy zapisać ich mniej -
obliczenia i kalkulacje prowadzące do zrekonstruowania wszystkich
wektorów ruchu dla wszystkich bloków są wtedy znacznie prostsze.
Xvid uzywa maksymalnie 3 warp pointów. Czasem używa dwóch.
Divx5 używa tylko jednego, a divx6 dwóch, co powoduje że:
- poprawa stopnia kompresji jest niewielka (i tak jest znikoma)
- nie zostało to więc uwzględnione w profilach sprzetowych divx
- wszelkie procesory odtważające divxy na stacjonarnych playerach
mają (jeśli w ogóle mają) wbudowana obsługę co ponajwyżej jednego warp pointa
(a co za tym idzie nie obsłużą 3 warp pointów z xvida)
Dodatkowo GMC xvida jest mało zpotymalizowane,
przy ustawieniu VHQ=1 włączenie klatek GMC powoduje u mnie
spadek wydajności z około 20fps do około 3fps
(przy kodowaniu klatek typu  S - sprite vob zawierające GMC)
Widać to wyraźnie, w oknie encoding status - trzeba na nie o wiele dłużej czekać.
Dlatego odradzam stosowania GMC przy zwykłej kompresji.





Kalkulator

Zaawansowana konfiguracja