summaryrefslogtreecommitdiffstats
path: root/DOCS
diff options
context:
space:
mode:
authorboskicinek <boskicinek@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-07-12 14:03:19 +0000
committerboskicinek <boskicinek@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-07-12 14:03:19 +0000
commitd293461ef9c4b23d1ef7415e842200f36c9c60d3 (patch)
treed3119f8c3b38f279376c62986b4d64f753b09dbe /DOCS
parent5af60f000a40fe7dd83b3ecf574804d3b64e716e (diff)
downloadmpv-d293461ef9c4b23d1ef7415e842200f36c9c60d3.tar.bz2
mpv-d293461ef9c4b23d1ef7415e842200f36c9c60d3.tar.xz
- incomplete but we probably need this (because we updated mencoder.xml already)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19030 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'DOCS')
-rw-r--r--DOCS/xml/pl/encoding-guide.xml4418
1 files changed, 4418 insertions, 0 deletions
diff --git a/DOCS/xml/pl/encoding-guide.xml b/DOCS/xml/pl/encoding-guide.xml
new file mode 100644
index 0000000000..be0cf2d80f
--- /dev/null
+++ b/DOCS/xml/pl/encoding-guide.xml
@@ -0,0 +1,4418 @@
+<?xml version="1.0" encoding="iso-8859-2"?>
+<!-- synced with 1.32 -->
+<!-- Opiekun: Torinthiel -->
+<!-- INCOMPLETE!!!! -->
+<chapter id="encoding-guide">
+<title>Kodowanie przy użyciu <application>MEncodera</application></title>
+
+<sect1 id="menc-feat-dvd-mpeg4">
+<title>Rippowanie DVD do wysokiej jakości pliku MPEG-4 ("DivX")</title>
+
+<para>
+ Jednym z często zadawanych pytań jest "Jak zrobić rip najlepszej jakości
+ przy danej objętości?". Innym pytaniem jest "Jak zrobić najlepszy możliwy
+ rip? Nie ważne jaka będzie objętość, chcę najlepszej jakości."
+</para>
+
+<para>
+ To drugie pytanie jest przynajmniej źle postawione. W końcu, jeśli nie
+ przejmujesz się wielkością pliku, mógłbyć po prostu skopiować strumień
+ MPEG-2 z DVD. Pewnie, dostaniesz AVI wielkości około 5GB, ale jeśli chcesz
+ najlepszej jakości i nie przejmujesz się wielkością to jest to najlepsze
+ wyjście.
+</para>
+
+<para>
+ Tak na prawdę, powodem dla którego chcesz przekodować DVD na MPEG-4 jest to,
+ że <emphasis role="bold">przejmujesz</emphasis> się wielkością pliku.
+</para>
+
+<para>
+ Ciężko jest pokazać książkowy przepis na tworzenie ripu DVD bardzo wysokiej
+ jakości. Trzeba wziąć pod uwagę kilka czynników, i powinieneś rozumieć
+ szczegóły albo masz dużą szansę że nie będziesz zadowolony z wyników.
+ Poniżej zbadamy niektóre problemy i pokażemy przykład. Zakładamy że używasz
+ <systemitem class="library">libavcodec</systemitem> do kodowania obrazu,
+ chociaż ta sama teoria działą też przy innych kodekach.
+</para>
+
+<para>
+ Jeśli to wydaje Ci się za dużo, to pewnie powinieneś użyć jednej z wielu
+ nakładek dostępnych w
+ <ulink url="http://mplayerhq.hu/homepage/design7/projects.html#mencoder_frontends">sekcji MEncodera</ulink>
+ naszej strony z powiązanymi projektami.
+ W ten sposób, powinno się udać otrzymać ripy wysokiej jakości bez zbyt
+ myślenia za dużo, ponieważ te narzędzia są projektowane by podejmować za
+ Ciebie mądre decyzje.
+</para>
+
+<sect2 id="menc-feat-dvd-mpeg4-preparing-encode">
+<title>Przygotowanie do kodowania: Identyfikowanie materiału źródłowego
+i framerate</title>
+<para>
+ Zanim w ogóle zaczniesz myśleć o kodowaniu filmu, musisz podjąć kilka
+ początkowych kroków.
+</para>
+
+<para>
+ Pierwszym i najważniejszym krokiem przed kodowaniem powinno być
+ ustalenie jakim typem filmu się zajmujesz.
+ Jeśli Twój film jest z DVD albo telewizji (zwykłej, kablowej czy
+ satelitarnej), będzie w jednym z dwóch formatów: NTSC w Ameryce Północnej
+ i Japonii, PAL w Europie itp.
+ Trzeba sobie jednak zdawać sprawę z tego, że jest to tylko format do
+ prezentacji w telewizji, i często <emphasis role="bold">ne</emphasis> jest
+ oryginalnym formatem filmu.
+ Doświadczenie pokazuje że filmy NTSC są trudniejsze do kodowania, ponieważ
+ jest więcej elementów do zidentyfikowania w źródle.
+ Żeby zrobić odpowienie kodowanie musisz znać oryginalny format filmu.
+ Nieuwzględnienie tego skutkuje wieloma wadami wynikowego pliku, na przykład
+ brzydkie artefakty przeplotu i powtórzone albo zagubione klatki.
+ Poza tym że są pbrzydkie, artefakty są też szkodliwe dla kodowania:
+ Dostaniesz gorszą jakość na jednostkę bitrate.
+</para>
+
+<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-fps">
+<title>Ustalanie źródłowego framerate</title>
+<para>
+ Poniżej jest lista popularnych typów materiału źródłowego, gdzie można je
+ najczęściej znaleźć i ich własności:
+</para>
+<itemizedlist>
+<listitem><para>
+ <emphasis role="bold">Typowy film</emphasis>: Tworzony do wyświetlania przy
+ 24fps.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">Film PAL</emphasis>: Nagrywany kamerą video PAL
+ z prędkością 50 pól na sekundę.
+ Pole składa się tylko z parzystych albo nieparzystych linii klatki.
+ Telewizja była projektowana by odświerzać je naprzemiennie, jako tania forma
+ analogowej kompresji.
+ Ludzkie oko podobno kompensuje ten efekt, ale jeśli zrozumiesz przeplot
+ nauczysz się go widzieć też w telewizji i nigdy już nie będziesz z niej
+ zadowolony.
+ Dwa pola <emphasis role="bold">nie</emphasis> dają pełnej klatki, ponieważ
+ są uchwycone co 1/50 sekundy, więc nie pasują do siebie, chyba że nie ma
+ ruchu.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">Film NTSC</emphasis>: Nagrany kamerą NTSC z prędkością
+ 6000/1001 pól na sekundę, albo 60 pól na sekundę w erze przedkolorowej.
+ Poza tym podobny do PAL.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">Animacja</emphasis>: Zazwyczaj rysowana przy 24fps,
+ ale zdarzają się też z mieszanym framerate.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">Grafika komputerowa (CG)</emphasis>: Może być dowolny
+ framerate, ale niektóre są częstsze niż inne; wartości 24 i 30 klatek na
+ sekundę są typowe dla NTSC, a 25fps jest typowe dla PAL.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">Stary film</emphasis>: Rozmaite niższe framerate.
+</para></listitem>
+</itemizedlist>
+</sect3>
+
+<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-material">
+<title>Identyfikowanie materiału źródłowego</title>
+<para>
+ Filmy składające się z klatek nazywa się progresywnymi,
+ podczas gdy te składające się z niezależnych pól nazywa się
+ z przeplotem, albo filmem - chociaż ten drugi termin jest niejasny.
+</para>
+<para>
+ Żeby nie było za łatwo, niektóre filmy są kombinacją kilku powyższych typów.
+</para>
+<para>
+ Najważniejszą różnicą między tymi formatami, jest to że niektóre są oparte
+ na klatkach a inne na polach.
+ <emphasis role="bold">Zawsze</emphasis> gdy film jest przygotowywany do
+ wyświetlania w telewizji jest przekształcany na format oparty na polach.
+ Rozliczne metody którymi się tego dokonuje są wspólnie nazywane "pulldown",
+ a niesławne "3:2 telecine" z NTSC jest jednym z jego rodzajów.
+ Jeżeli oryginał nie był też oparty na polach (z tą samą prędkością),
+ dostajesz film w innym formacie niż oryginał.
+</para>
+
+<itemizedlist>
+<title>Jest kilka popularnych typów pulldown:</title>
+<listitem><para>
+ <emphasis role="bold">pulldown PAL 2:2</emphasis>: Najprzyjemniejszy z nich
+ wszystkich.
+ Każda klatka jest pokazywana przez czas dwóch pól, poprzez wydobycie
+ parzystych i nieparzystych linii i pokazywanie ich na przemian.
+ Jeśli oryginalny materiał miał 24fps, ten proces przyspiesza film o 4%.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">pulldown PAL 2:2:2:2:2:2:2:2:2:2:2:3</emphasis>:
+ Każda 12ta klatka jest pokazywana przez czas trzech pól zamiast tylko dwóch.
+ Dzięki temu nie ma przyspieszenia o 4%, ale proces jest o wiele trudniejszy
+ do odtworzenia.
+ Zazwyczaj występuje w produkcjach muzycznych, gdzie zmiana prędkości o 4%
+ poważnie by uszkodziła muzykę.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">NTSC 3:2 telecine</emphasis>: Klatki są pokazywane na
+ przemian przez czas 3ch albo 2ch pól.
+ To daje częstotliwość pól 2.5 raza większą niż oryginalna częstotliwość
+ klatek. Rezultat jest też lekko zwolniony z 60 pól na sekundę do 60000/1001
+ pól na sekundę by utrzymać częstotliwość pól w NTSC.
+</para></listitem>
+<listitem><para>
+ <emphasis role="bold">NTSC 2:2 pulldown</emphasis>: Używane do pokazywania
+ materiałów 30fps na NTSC.
+ Przyjemne, dokładnie jak pulldown 2:2 PAL.
+</para></listitem>
+</itemizedlist>
+
+<para>
+ Są też metody konwersji między filmami PAL i NTSC, ale ten temat
+ wykracza poza zakres tego podręcznika.
+ Jeśli natkniesz się na taki film, i chcesz go zakodować, to największe
+ szanse masz odnajdując kopię w oryginalnym formacie.
+ Konwersja między tymi dwoma formatami jest wysoce destrukcyjna i nie może
+ zostać czysto odwrócona, więc kodowanie będzie o wiele gorszej jakości jeśli
+ jest robione z przekonwertowanego źródła.
+</para>
+<para>
+ Gdy film jest zapisywany na DVD, kolejne pary pól są zapisywane jako klatka,
+ pomimo tego że nie są przezaczone do wyświetlania razem.
+ Standard MPEG-2 używany na DVD i w cyfrowej TV pozwala na zakodowanie
+ oryginalnej progresywnej klatki i na przechowanie w nagłówku klatki ilości
+ pól przez które ta klatka powinna być pokazana.
+ Filmy zrobione przy użyciu tej metody są często określane mianem "miękkiego
+ telecine" (soft-telecine), ponieważ proces ten tylko informuje odtwarzacz że
+ ma on zastosować pulldown, a nie stosuje go samemu.
+ Tak jest o wiele lepiej, ponieważ może to zostać łatwo odwrócone (a tak na
+ prawdę zignorowane) przez koder i ponieważ zachowuje możliwie najwyższą
+ jakość.
+ Niestety, wielu producentów DVD i stacji nadawczych nie stosuje prawidłowych
+ technik kodowania ale w zamian produkuje filmy przy użyciu "twardego
+ telecine" (hard-telecine), gdzie pola są faktycznie powtórzone
+ w zakodowanym MPEG-2.
+</para>
+<para>
+ Procedury radzenia sobie z takimi przypadkami będą omówione
+ <link linkend="menc-feat-telecine">w dalszej części przewodnika</link>.
+ Teraz podamy tylko kilka wskazówek jak identyfikować z jakim typem materiału
+ mamy do czynienia.
+</para>
+
+<itemizedlist>
+<title>Regiony NTSC:</title>
+<listitem><para>
+ Jeśli <application>MPlayer</application> wyświetla w trakcie oglądania filmu
+ że framerate zostało zmienione na 24000/1001, i nigdy nie powraca, to jest
+ to prawie na pewno progresywny materiał na którym zastosowano "miękkie
+ telecine".
+</para></listitem>
+<listitem><para>
+ Jeśli <application>MPlayer</application> pokazuje że framerate zmienia się
+ między 24000/1001 i 30000/1001 i czasami widzisz "grzebienie" to jest kilka
+ możliwości.
+ <!-- Torinthiel: grzebienie mi najlepiej pasują, ale może jest oficjalne tłumaczenie -->
+ Kawałki 24000/1001fps są prawie na pewno progresywne, poddane "miękkiemu
+ telecine", ale fragmenty 30000/1001 fps mogą albo być 24000/1001 poddanym
+ "twardemu telecine" albo filmem NTCS o 60000/1001 polach na sekundę.
+ Używaj tych samych metod co w następnych dwóch przypadkach żeby je odróżnić.
+</para></listitem>
+<listitem><para>
+ Jeśli <application>MPlayer</application> nigdy nie pokazuje informacji
+ o zmianie framerate i każda klatka z ruchem wygląda jak grzebień, to masz
+ film NTSC z 60000/1001 polami na sekundę.
+</para></listitem>
+<listitem><para>
+ Jeśli <application>MPlayer</application> nigdy nie pokazuje informacji
+ o zmianie framerate i dwie klatki z każdych pięciu mają grzebienie, to film
+ jest 24000/1001 fps poddanym "twardemu telecine".
+</para></listitem>
+</itemizedlist>
+
+<itemizedlist>
+<title>Regiony PAL:</title>
+<listitem><para>
+ Jeśli nie widzisz grzebieni, to jest to 2:2 pulldown.
+</para></listitem>
+<listitem><para>
+ Jeśli na przemian przez pół sekundy widzisz grzebienie a potem nie, to masz
+ 2:2:2:2:2:2:2:2:2:2:2:3 pulldown.
+</para></listitem>
+<listitem><para>
+ Jeśli zawsze widzisz grzebienie w trakcie ruchu, to film jest filmem PAL
+ wyświetlanym z 50 polami na sekundę.
+ <!-- Torinthiel: wyświetlanym czy nagranym? -->
+</para></listitem>
+</itemizedlist>
+
+<note><title>Podpowiedź:</title>
+<para>
+ <application>MPlayer</application> może zwolnić odtwarzanie filmu opcją
+ -speed albo odtwarzać klatka po klatce.
+ Spróbuj użyć opcji <option>-speed</option> 0.2 żeby oglądać film bardzo
+ wolno, albo naciskaj wielokrotnie klawisz "<keycap>.</keycap>" żeby
+ wyświetlać jedną klatkę na raz. Może to pomóc zidentyfikować wzorzec jeśli
+ nie możesz go dostrzec przy pełnej prędkości.
+</para>
+</note>
+</sect3>
+</sect2>
+
+<sect2 id="menc-feat-dvd-mpeg4-2pass">
+<title>Stały kwantyzator a tryb wieloprzebiegowy</title>
+
+<para>
+ Jest możliwe zakodowanie filmu z szeroką gamą jakości.
+ Z nowoczesnymi koderami i odrobiną kompresji przed kodekiem (zmniejszenie
+ rozdzielczości i usuwanie szumu), możliwe jest osiągnięcie bardzo dobrej
+ jakości przy 700 MB, dla 90-110 minutowego filmu kinowego.
+ Dodatkowo tylko najdłuższe filmy nie dają się zakodować na 1400 MB z prawie
+ doskonałą jakością.
+</para>
+
+<para>
+ Są trzy podejścia do kodowania video: stały bitrate (CBR),
+ stały kwantyzator i tryb wieloprzebiegowy (ABR, uśrednione bitrate).
+</para>
+
+<para>
+ Złożoność klatek filmu, a zatem i ilość bitów potrzebna na ich zakodowanie,
+ może się bardzo mocno zmieniać w zależności od sceny.
+ Nowoczesne kodery potrafią się dostosowywać do tych zmian i zmieniać
+ bitrate.
+ Jednak w prostych trybach, takich jak CBR, kodery nie znają zapotrzebowania
+ na bitrate w przyszłych scenach, więc nie mogą na długo przekraczać
+ wymaganego bitrate.
+ Bardziej zaawansowane tryby, takie jak kodowanie wieloprzebiegowe, potrafią
+ wziąć pod uwagę statystyki z poprzednich przebiegów; to naprawia wyżej
+ wymieniony problem.
+</para>
+
+<note><title>Uwaga:</title>
+<para>
+ Większość kodeków obsługujących kodowanie ABR obsługuje tylko kodowanie
+ dwuprzebiegowe, podczas gdy niektóre inne, na przykład
+ <systemitem class="library">x264</systemitem> albo
+ <systemitem class="library">XviD</systemitem> potrafią wykonywać wiele
+ przebiegów, z lekką poprawą jakości po każdym przebiegu. Jednak ta poprawa
+ nie jest zauważalna ani mierzalna po około 4tym przebiegu.
+ Dlatego też, w tej części, tryb dwuprzebiegowy i wieloprzebiegowy będą
+ używane zamiennie.
+</para>
+</note>
+
+<para>
+ W każdym z tych trybów, kodek video (na przykład
+ <systemitem class="library">libavcodec</systemitem>)
+ dzieli klatkę obrazu na makrobloki 16x16 pikseli i stosuje do każdego z nich
+ kwantyzator. Im niższy kwantyzator, tym lepsza jakość i tym wyższe bitrate.
+ Metody jakiej koder używa do ustalenia kwantyzatora są różne i można nimi
+ sterować. (Jest to straszliwe uproszczenie, ale wystarcza do zrozumienia
+ podstaw.)
+</para>
+
+<para>
+ Kiedy podajesz stałe bitrate, kodek koduje usuwając tyle szczegółów ile musi
+ i tak mało jak to tylko możliwe żeby pozostać poniżej podanego bitrate.
+ Jeśli na prawdę nie obchodzi cię wielkość pliku, możesz użyć CBR i podać
+ nieskończone bitrate (W praktyce oznacza to bitrate na tyle wysokie że nie
+ stanowi bariery, na przykład 10000Kbit.) Bez żadnego ograniczenia na bitrate
+ kodek użyje najniższego możliwego kwantyzatora do każdej klatki (ustalonego
+ dla <systemitem class="library">libavcodec</systemitem> opcją
+ <option>vqmin</option>, domyślnie 2).
+ Gdy tylko podasz bitrate na tyle niskie że kodek musi używać wyższego
+ kwantyzatora, to prawie na pewno niszczysz film.
+ Żeby tego uniknąć, powinieneś pewnie zmniejszyć rozdzielczość filmu, metodą
+ opisaną dalej.
+ Ogólnie, jeśli troszczysz się o jakość, powinieneś unikać CBR.
+</para>
+
+<para>
+ Przy stałym kwantyzatorze, kodek używa na każdym makrobloku tego samego
+ kwantyzatora, podanego opcją <option>vqscale</option>
+ (w przypadku <systemitem class="library">libavcodec</systemitem>).
+ Jeśli chcesz możliwie najlepszy efekt, znów ignorując bitrate, możesz użyć
+ <option>vqscale=2</option>. Da to ten sam bitrate i PSNR (peak
+ signal-to-noise ratio, szczytowa proporcja sygnału do szumu) co CBR
+ z <option>vbitrate</option>=nieskończoność i domyślnym
+ <option>vqmin</option>.
+</para>
+
+<para>
+ Problemem przy stałym kwantyzatorze jest to, że używa podanego kwantyzatora
+ niezależnie od tego czy makroblok tego wymaga czy nie. To znaczy że można by
+ było zastosować do makrobloku wyższy kwantyzator bez utraty postrzegalnej
+ jakości. Dlaczego marnować bity na niepotrzebnie niski kwantyzator?
+ Mikroprocesor ma tyle cykli ile jest czasu, ale jest tylko pewna ilość bitów
+ na twardym dysku.
+</para>
+
+<para>
+ Przy kodowaniu dwuprzebiegowym, pierwszy przebieg potraktuje film jak przu
+ ustawieniu CBR, ale zachowa informacje o własnościach każdej klatki. Te dane
+ są później używane przy drugim przebiegu do podejmowania słusznych decyzji
+ o używanym kwantyzatorze. Przy szybkich scenach albo niewielu szczegółach
+ pewnie użyje większego kwantyzatora, podczas gdy dla powolnych,
+ szczegółowych scen będzie niższy kwantyzator.
+</para>
+
+<para>
+ Jeśli używasz <option>vqscale=2</option> to marnujesz bity. Jeśli używasz
+ <option>vqscale=3</option> to nie dostajesz najlepszej możliwej jakości.
+ Załóżmy że zakodowałeś swoje DVD przy <option>vqscale=3</option>
+ i dostałeś bitrate 1800Kbit. Jeśli zrobisz dwa przebiegi
+ z <option>vbitrate=1800</option> ostateczny wynik będzie miał
+ <emphasis role="bold">wyższą jakość</emphasis> przy
+ <emphasis role="bold">tym samym bitrate</emphasis>.
+</para>
+
+<para>
+ Ponieważ jesteś już przekonany że prawidłowym wyborem są dwa przebiegi,
+ prawdziwym pytaniem jest jakiego bitrate użyć. Nie ma jednej odpowiedzi.
+ Idealnie chcesz wybrać bitrate będący najbliżej równowagi między jakością
+ a wielkością pliku. To się zmienia w zależności od filmu.
+</para>
+
+<para>
+ Jeśli wielkość nie ma znaczenia, dobrym punktem wyjściowym do bardzo
+ wysokiej jakości jest około 2000Kbit plus minus 200Kbit.
+ Jeśli jest dużo akcji albo szczegółów, albo po prostu masz bardzo wrażliwe
+ oko, możesz się zdecydować na 2400 albo 2600.
+ Przy niektórych DVD możesz nie zauważyć różnicy przy 1400Kbit. Dobrym
+ pomysłem jest poeksperymentowanie z kilkoma scenami i różnymi wartościami
+ bitrate żeby nabrać wyczucia.
+</para>
+
+<para>
+ Jeśli chcesz konkretnej wielkości, musisz jakoś obliczyć bitrare.
+ Ale zanim to zrobisz, musisz wiedzieć ile miejsca potrzebujesz na dźwięk,
+ więc powinieneś <link linkend="menc-feat-dvd-mpeg4-audio">ściągnąć go</link>
+ najpierw.
+ Możesz wyliczyć bitrate z następującego równania:
+ <systemitem>bitrate = (wielkość_docelowa_w_MBajtach - wielkość_dźwięku_w_MB)
+ * 1024 * 1024 / długość_w_sekundach * 8 / 1000</systemitem>
+ Na przykład by wcisność dwugodzinny film na płytkę 702MB, z 60MB ścieżki
+ dźwiękowej, bitrate video musi być:
+ <systemitem>(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000
+ = 740kbps</systemitem>
+</para>
+
+</sect2>
+
+
+<sect2 id="menc-feat-dvd-mpeg4-constraints">
+<title>Constraints for efficient encoding</title>
+
+<para>
+ Due to the nature of MPEG-type compression, there are various
+ constraints you should follow for maximal quality.
+ MPEG splits the video up into 16x16 squares called macroblocks,
+ each composed of 4 8x8 blocks of luma (intensity) information and two
+ half-resolution 8x8 chroma (color) blocks (one for red-cyan axis and
+ the other for the blue-yellow axis).
+ Even if your movie width and height are not multiples of 16, the
+ encoder will use enough 16x16 macroblocks to cover the whole picture
+ area, and the extra space will go to waste.
+ So in the interests of maximizing quality at a fixed filesize, it is
+ a bad idea to use dimensions that are not multiples of 16.
+</para>
+
+<para>
+ Most DVDs also have some degree of black borders at the edges. Leaving
+ these in place can hurt quality in several ways.
+</para>
+
+<orderedlist>
+<listitem>
+<para>
+ MPEG-type compression is also highly dependent on frequency domain
+ transformations, in particular the Discrete Cosine Transform (DCT),
+ which is similar to the Fourier transform. This sort of encoding is
+ efficient for representing patterns and smooth transitions, but it
+ has a hard time with sharp edges. In order to encode them it must
+ use many more bits, or else an artifact known as ringing will
+ appear.
+</para>
+
+<para>
+ The frequency transform (DCT) takes place separately on each
+ macroblock (actually each block), so this problem only applies when
+ the sharp edge is inside a block. If your black borders begin
+ exactly at multiple-of-16 pixel boundaries, this is not a problem.
+ However, the black borders on DVDs rarely come nicely aligned, so
+ in practice you will always need to crop to avoid this penalty.
+</para>
+</listitem>
+</orderedlist>
+
+<para>
+ In addition to frequency domain transforms, MPEG-type compression uses
+ motion vectors to represent the change from one frame to the next.
+ Motion vectors naturally work much less efficiently for new content
+ coming in from the edges of the picture, because it is not present in
+ the previous frame. As long as the picture extends all the way to the
+ edge of the encoded region, motion vectors have no problem with
+ content moving out the edges of the picture. However, in the presence
+ of black borders, there can be trouble:
+</para>
+
+<orderedlist continuation="continues">
+<listitem>
+<para>
+ For each macroblock, MPEG-type compression stores a vector
+ identifying which part of the previous frame should be copied into
+ this macroblock as a base for predicting the next frame. Only the
+ remaining differences need to be encoded. If a macroblock spans the
+ edge of the picture and contains part of the black border, then
+ motion vectors from other parts of the picture will overwrite the
+ black border. This means that lots of bits must be spent either
+ re-blackening the border that was overwritten, or (more likely) a
+ motion vector will not be used at all and all the changes in this
+ macroblock will have to be coded explicitly. Either way, encoding
+ efficiency is greatly reduced.
+</para>
+
+<para>
+ Again, this problem only applies if black borders do not line up on
+ multiple-of-16 boundaries.
+</para>
+</listitem>
+
+<listitem>
+<para>
+ Finally, suppose we have a macroblock in the interior of the
+ picture, and an object is moving into this block from near the edge
+ of the image. MPEG-type coding cannot say "copy the part that is
+ inside the picture but not the black border." So the black border
+ will get copied inside too, and lots of bits will have to be spent
+ encoding the part of the picture that is supposed to be there.
+</para>
+
+<para>
+ If the picture runs all the way to the edge of the encoded area,
+ MPEG has special optimizations to repeatedly copy the pixels at the
+ edge of the picture when a motion vector comes from outside the
+ encoded area. This feature becomes useless when the movie has black
+ borders. Unlike problems 1 and 2, aligning the borders at multiples
+ of 16 does not help here.
+</para>
+</listitem>
+
+<listitem>
+<para>
+ Despite the borders being entirely black and never changing, there
+ is at least a minimal amount of overhead involved in having more
+ macroblocks.
+</para>
+</listitem>
+</orderedlist>
+
+<para>
+ For all of these reasons, it is recommended to fully crop black
+ borders. Further, if there is an area of noise/distortion at the edge
+ of the picture, cropping this will improve encoding efficiency as
+ well. Videophile purists who want to preserve the original as close as
+ possible may object to this cropping, but unless you plan to encode at
+ constant quantizer, the quality you gain from cropping will
+ considerably exceed the amount of information lost at the edges.
+</para>
+</sect2>
+
+
+<sect2 id="menc-feat-dvd-mpeg4-crop">
+<title>Cropping and Scaling</title>
+
+<para>
+ Recall from the previous section that the final picture size you
+ encode should be a multiple of 16 (in both width and height).
+ This can be achieved by cropping, scaling, or a combination of both.
+</para>
+
+<para>
+ When cropping, there are a few guidelines that must be followed to
+ avoid damaging your movie.
+ The normal YUV format, 4:2:0, stores chroma (color) information
+ subsampled, i.e. chroma is only sampled half as often in each
+ direction as luma (intensity) information.
+ Observe this diagram, where L indicates luma sampling points and C
+ chroma.
+</para>
+
+<informaltable>
+<?dbhtml table-width="40%" ?>
+<?dbfo table-width="40%" ?>
+<tgroup cols="8" align="center">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<colspec colnum="7" colname="col7"/>
+<colspec colnum="8" colname="col8"/>
+<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
+<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
+<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
+<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
+ <tbody>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ <row>
+ <entry spanname="spa1-2">C</entry>
+ <entry spanname="spa3-4">C</entry>
+ <entry spanname="spa5-6">C</entry>
+ <entry spanname="spa7-8">C</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ <row>
+ <entry spanname="spa1-2">C</entry>
+ <entry spanname="spa3-4">C</entry>
+ <entry spanname="spa5-6">C</entry>
+ <entry spanname="spa7-8">C</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ </tbody>
+</tgroup>
+</informaltable>
+
+<para>
+ As you can see, rows and columns of the image naturally come in pairs.
+ Thus your crop offsets and dimensions <emphasis>must</emphasis> be
+ even numbers.
+ If they are not, the chroma will no longer line up correctly with the
+ luma.
+ In theory, it is possible to crop with odd offsets, but it requires
+ resampling the chroma which is potentially a lossy operation and not
+ supported by the crop filter.
+</para>
+
+<para>
+ Further, interlaced video is sampled as follows:
+</para>
+
+<informaltable>
+<?dbhtml table-width="80%" ?>
+<?dbfo table-width="80%" ?>
+<tgroup cols="16" align="center">
+<colspec colnum="1" colname="col1"/>
+<colspec colnum="2" colname="col2"/>
+<colspec colnum="3" colname="col3"/>
+<colspec colnum="4" colname="col4"/>
+<colspec colnum="5" colname="col5"/>
+<colspec colnum="6" colname="col6"/>
+<colspec colnum="7" colname="col7"/>
+<colspec colnum="8" colname="col8"/>
+<colspec colnum="9" colname="col9"/>
+<colspec colnum="10" colname="col10"/>
+<colspec colnum="11" colname="col11"/>
+<colspec colnum="12" colname="col12"/>
+<colspec colnum="13" colname="col13"/>
+<colspec colnum="14" colname="col14"/>
+<colspec colnum="15" colname="col15"/>
+<colspec colnum="16" colname="col16"/>
+<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
+<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
+<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
+<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
+<spanspec spanname="spa9-10" namest="col9" nameend="col10"/>
+<spanspec spanname="spa11-12" namest="col11" nameend="col12"/>
+<spanspec spanname="spa13-14" namest="col13" nameend="col14"/>
+<spanspec spanname="spa15-16" namest="col15" nameend="col16"/>
+ <tbody>
+ <row>
+ <entry namest="col1" nameend="col8">Top field</entry>
+ <entry namest="col9" nameend="col16">Bottom field</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry spanname="spa1-2">C</entry>
+ <entry spanname="spa3-4">C</entry>
+ <entry spanname="spa5-6">C</entry>
+ <entry spanname="spa7-8">C</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry spanname="spa9-10">C</entry>
+ <entry spanname="spa11-12">C</entry>
+ <entry spanname="spa13-14">C</entry>
+ <entry spanname="spa15-16">C</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry spanname="spa1-2">C</entry>
+ <entry spanname="spa3-4">C</entry>
+ <entry spanname="spa5-6">C</entry>
+ <entry spanname="spa7-8">C</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ <row>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry spanname="spa9-10">C</entry>
+ <entry spanname="spa11-12">C</entry>
+ <entry spanname="spa13-14">C</entry>
+ <entry spanname="spa15-16">C</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ <entry>L</entry>
+ </row>
+ </tbody>
+</tgroup>
+</informaltable>
+
+<para>
+ As you can see, the pattern does not repeat until after 4 lines.
+ So for interlaced video, your y-offset and height for cropping must
+ be multiples of 4.
+</para>
+
+<para>
+ Native DVD resolution is 720x480 for NTSC, and 720x576 for PAL, but
+ there is an aspect flag that specifies whether it is full-screen (4:3) or