Niniejszy artykuł
opisuje tylko znaczenie poszczególnych opcji dostępnych w oknie
RealVideo 10/9 Codec Properties programu Easy RealMedia Producer. Instrukcję kompresji w tym programie
można znaleźć tutaj.
Słowo wstępne
Format kompresji obrazu RealVideo jest produktem firmy RealNetworks.
Wersja 10 (kryptonim Elysian) produkuje strumienie wideo
zgodne z wersją 9 (tzn. możliwe jest zastosowanie tego samego
dekodera), lecz zawiera nowe procedury detekcji ruchu zwane EHQ,
które umożliwiają bardziej optymalny opis ruchu kosztem
dłuższego czasu kompresji. Formaty kompresji obrazu i dźwięku
rozwijane przez RealNetworks nie mają charakteru open source (tzn.
kod źródłowy bibliotek służących do kompresji nie jest
upubliczniany) ani nie są opisane przez żadne otwarte standardy,
przez co szczegóły techniczne wewnętrznej budowy tych
formatów nie są znane. Wiadomo jednak, że RealVideo (podobnie
jak MPEG-1 / 2 / 4) używa klatek typów I,
P i B oraz że jego wewnętrzną przestrzenią
kolorów jest I420. Tak jak H.264 i VC-1 (standard
opisujący format kompresji Windows Media Video 9), RealVideo
umożliwia zastosowanie filtra usuwającego artefakty kompresji z
klatki referencyjnej jeszcze przed wykorzystaniem jej do
kompensacji ruchu (tzw. inloop filter), co może
zwiększyć jakość przy niskich wartościach bitrate. W
takich sytuacjach przydatna jest również (znana choćby z
kodeka VP6) możliwość kodowania klatek ze zmniejszoną
rozdzielczością.

I - sekcja Encoder General Options
EHQ MODE umożliwia wybór jednego z predefiniowanych
trybów encoder Complexity (patrz poniżej). Do wyboru
mamy High, Medium, Low (odpowiednio: wysoka,
średnia i niska precyzja poszukiwania ruchu) oraz Custom
(umożliwia samodzielny dobór parametrów 1st Pass Complexity
i encoder Complexity). Jeśli czas kompresji nie
odgrywa dużej roli, zaleca się pozostawienie wartości
domyślnej (High). 1st Pass
Complexity ma działanie identyczne do encoder Complexity
(patrz niżej), lecz dotyczy tylko pierwszego przebiegu kompresji
dwuprzebiegowej. Pierwszy przebieg jest tylko analizą materiału
źródłowego, nie zaś właściwą kompresją, dlatego wiele
drugorzędnych procedur poszukiwania ruchu można pominąć w
trakcie jego wykonywania uzyskując w ten sposób wyższą
prędkość. Dozwolone są wartości od 0 do 100. Domyślna
wartość to 65 (50, gdy zaznaczymy opcję Use
New Rate Control). Opcja dostępna tylko, gdy EHQ
MODE = Custom oraz przeprowadzamy
kompresję dwuprzebiegową. encoder Complexity -
stopień złożoności procedur poszukiwania ruchu i innych
procesów związanych z kompresją. Wyższe wartości dają
lepszą jakość kosztem dłuższego czasu kompresji. Dozwolone
są wartości od 0 do 100. Zalecane jest
pozostawienie wartości domyślnej (85). Opcja
dostępna tylko, gdy EHQ MODE = Custom.
Packet Size - rozmiar pojedynczego pakietu strumienia
wideo. Przekroczenie wartości 16000 spowoduje
niezgodność pliku wynikowego z dekoderem RealOne V2 oraz
starszymi. Zaleca się pozostawienie wartości domyślnej.
Reference Picture Resampling pozwala na zapis klatek ze
zmniejszoną rozdzielczością, gdy kodek unza, że brakuje
bitów na jej opisanie w rozdzielczości pierwotnej z
zadowalającą jakością. Użyteczne dla bardzo niskich bitrate
w zastosowaniach strumieniowych (media internetowe). Dla wysokich
bitrate zalecane jest odznaczenie tej opcji. Auto Key
Frames - zaznaczenie tej opcji powoduje dynamiczne wstawianie
klatek kluczowych (są one wstawiane, gdy zostanie wykryta zmiana
sceny). Zaleca się zaznaczenie tej opcji. encodeAllFrames
zabrania kodekowi porzucania klatek. Gdy odznaczymy tą opcję,
kodek może porzucić klatkę, gdy uzna, że zabrakło mu bitów
na jej opis - może się to zdarzyć przy bardzo niskim bitrate
W trybie kontroli bitrate opartym na kompresji krzywej (tzn.
gdy używamy opcji Use New Rate Control) nie musimy
zaznaczać opcji EncodeAllFrames - kodek w tym trybie
nigdy nie porzuca klatek. Use New Rate Control uaktywnia
nowy algorytm kontroli bitrate. Działa on tylko dla
kompresji dwuprzebiegowej. Umożliwia on kompresję krzywej bitrate
(jeszcze nie zaimplementowano opcji ją wykonujących), zmianę
docelowego średniego bitrate w drugim przebiegu oraz
wykonanie pierwszego przebiegu przy najszybszym trybie encoder
Complexity (50). Wartość Max Bitrate (określona
w oknie RealMedia Encode Settings programu Easy
RealMedia Producer) jest ignorowana. Use Two Pass -
wybór przebiegu kompresji dwuprzebiegowej. Mamy do wyboru 1st
& 2nd (wykonanie pierwszego, a zaraz potem drugiego
przebiegu), 1st pass (wykonanie tylko pierwszego przebiegu)
i 2nd pass (wykonanie tylko drugiego przebiegu).
Odznaczenie Use Two Pass powoduje użycie kompresji
dwuprzebiegowej. Kompresja jednoprzebiegowa powoduje
nieekonomiczne wykorzystanie dostępnych bitów, więc gdy
zależy nam ich optymalnym rozkładzie, zalecana jest kompresja
dwuprzebiegowa. Pierwszy przebieg kompresji dwuprzebiegowej
służy do analizy materiału źródłowego pod kątem
kompresowalności każdej klatki. Informacje te są zapisywane do
pliku statystyk (realvideo.pass, jest on tworzony w
katalogu, w którym znajduje się materiał źródłowy),
którego format jest zgodny z formatem statystyk kodeka XviD 1.x.x
i może być odczytywany przez program StatsReader 2.1,
należy jednak pamiętać, że wartości kwantyzatorów RealVideo
nie są zgodne z tymi ze standardu MPEG-4 Part 2. Drugi
przebieg kompresji dwuprzebiegowej korzysta z pliku statystyk
zapisanego podczas pierwszego przebiegu (co daje mu całościowe
spojrzenie na materiał źródłowy) aby optymalnie rozłożyć
dostępne bity w całym pliku wynikowym. Enable PSNR
włącza zapis dziennika kompresji w pliku rv9log.txt
zawierającego wartości PSNR i inne informacje statystyczne. Pliku
rv9log.txt nie należy mylić z plikiem
statystyk realvideo.pass używanym podczas
kompresji dwuprzebiegowej. Noisy Edge Filter - filtr
usuwający pojedyncze lub podwójne linie na brzegach obrazu (obramowujące
go), które spotykamy np. w materiałach przechwytywanych ze
źródeł analogowych. chromaModeDecision każe kodekowi
brać pod uwagę informacje o kolorze (płaszczyznę chrominancji)
w procesach poszukiwania i kompensacji ruchu oraz przy
podejmowaniu innych decyzji związanych z kompresją. Zalecane
jest zaznaczenie tej opcji. B Frames - klatki typu B,
czyli odwołujące się zarówno do poprzedniej, jak i do
następnej klatki. Dzięki posiadaniu dwóch klatek
referencyjnych oraz temu, że żadna klatka nie odwołuje się do
klatki typu B, klatka taka może wyglądać równie dobrze,
jak klatka typu P pomimo wyższego kwantyzatora. W ten
sposób użycie klatek typu B może oszczędzić wiele
bitów. Z listy rozwijanej wybieramy maksymalną dopuszczalną
długość sekwencji klatek typu B (0, 1 lub
3).
II - sekcja New RC Options
Target Video Size - docelowy rozmiar strumienia wideo. Nie
należy mylić z rozmiarem całego pliku wynikowego.
Ustawienie to ma wyższy priorytet, niż ustawienie AvgBitrate
w oknie RealMedia Encode Settings programu Easy
RealMedia Producer. Gdy używamy Target Video Size,
nie jest konieczne wypełnienie pola Source fps*1000. KeyFrameBoost
- "doinwestowanie" klatek kluczowych określonym
odsetkiem bitów. Na przykład wartość 10 zwiększa o 10%
ilość bitów, które zostały przydzielone klatce przez
algorytm kontroli bitrate. HighBitrateReduce -
procent degradacji scen z bitrate wyższym od średniego.
Podany odsetek bitów zostanie odebrany scenom o wysokim bitrate.
Następnie bity te zostaną równo rozdzielone pomiędzy
wszystkie klatki filmu. LowBitrateBoost - procent "doinwestowania"
scen z bitrate niższym od średniego. Obliczona zostanie
ilość bitów stanowiąca podany odsetek bitów przydzielonych
scenom o niskim bitrate. Ta ilość bitów zostanie
odebrana wszystkim klatkom filmu, a następnie bity te zostaną
dodane do scen o niskim bitrate. Source fps*1000 -
ilość klatek na sekundę (FPS) w materiale źródłowym
pomnożona przez 1000. Dla źródła o wartości FPS różnej
od 30 zaznaczenie tej opcji jest konieczne (chyba, że używamy Target
Video Size), aby obejść błąd w obliczeniach
rozmiaru docelowego strumienia wideo (jest on obliczany na
podstawie wartości FPS, która jest błędnie odczytywana,
jeśli nie wyspecyfikujemy jej w polu Source fps*1000). PFrameRefQuant
- kwantyzator, który zostanie użyty podczas pierwszego
przebiegu dla klatek typu P. Zaleca się pozostawienie
wartości domyślnej. BFrameRefQuant - kwantyzator,
który zostanie użyty podczas pierwszego przebiegu dla klatek
typu B. Zaleca się pozostawienie wartości domyślnej.
BestPSNRMode każe algorytmowi kontroli bitrate
dążyć do uzyskania możliwie najlepszej średniej wartości
PSNR zamiast do osiągnięcia stałego poziomu jakości całego
filmu. Zaznaczenie tej opcji nie jest
zalecane.
III - sekcja Inloop filter options
CutOffQuant - minimalny kwantyzator klatki, przy którym
uruchamiany jest filtr inloop (filtr likwidujący "efekt
blokowiska" w klatce referencyjnej zanim jeszcze zostanie
ona użyta przez kompresor do kompensacji ruchu w danej klatce).
Dla klatek o kwantyzatorze poniżej CutOffQuant filtr inloop
nie jest stosowany podczas kompresji, zaś dekoder otrzymuje
informację, aby również go nie używał. Wartość 0
powoduje uzycie filtra inloop dla wszystkich klatek,
wartość 31 całkowicie wyłącza filtr inloop (maksymalny
kwantyzator w RealVideo 10 to 30). Cut Off
Compatible sprawia, że minimalny kwantyzator klatki
uruchamiający filtr inloop (określony w polu CutOffQuant)
nie będzie stosowany dla klatek kluczowych (będą one
filtrowane z domyślnym progiem kwantyzatora równym 9). Opcja ta
służy do produkcji strumienia zgodnego ze starszymi dekoderami
(starszymi od RealPlayera 10 Gold). CutOffBUseRefQuant
uruchamia filtr inloop dla klatki typu B wtedy, gdy
kwantyzatory jej klatek referencyjnych są wyższe od wartości
progu (określonego CutOffQuant) lub jej równe.
Odznaczenie tej opcji powoduje, że filtr inloop jest
uruchamiany dla klatki typu B, gdy jej własny kwantyzator
jest wyższy od progu lub jemu równy.
IV - pozostałe opcje
OverFlowControlStrength - "agresywność"
algorytmu kontroli nadmiaru (czyli różnicy ilości bitów
przydzielonych danej klatce od ilości bitów, którą
należałoby jej przydzielić aby uzyskać żądany bitrate).
Ustawienie 0 nie wpływa na decyzje kodeka. Każda wyższa
wartość zwiększy precyzję osiągnięcia rozmiaru pliku
wynikowego (poprzez zwiększenie częstości interwencji
algorytmu kontroli nadmiaru), ale jednocześnie naruszy
dystrybucję kwantyzatorów. MaxOverflowImprovement -
określa, ile procent (maksymalnie) kodek może dodać do klatki,
gdy jej aktualny rozmiar jest poniżej wymaganego (tzn. takiego,
który daje prawidłowy rozmiar pliku wynikowego). Mechanizm ten
bezpośrednio wpływa na kwantyzator danej klatki. Wyższa
wartość lepiej zabezpieczy nas przed za małym plikiem
wynikowym, ale jednocześnie naruszy dystrybuję kwantyzatorów. MaxOverflowDegradation
- określa, ile procent (maksymalnie) kodek może odebrać klatce,
gdy jej aktualny rozmiar jest powyżej wymaganego (tzn. takiego,
który daje prawidłowy rozmiar pliku wynikowego). Mechanizm ten
bezpośrednio wpływa na kwantyzator danej klatki. Wyższa
wartość lepiej zabezpieczy nas przed za dużym plikiem
wynikowym, ale jednocześnie naruszy dystrybuję kwantyzatorów.
Artykuł dostępny jest również w formie dokumentu PDF
Aby ściągnąć plik skorzystaj z menu kontekstowego myszy i opcji Zapisz element docelowy jako... |