diff options
Diffstat (limited to 'DOCS/xml/pl/encoding-guide.xml')
-rw-r--r-- | DOCS/xml/pl/encoding-guide.xml | 5516 |
1 files changed, 0 insertions, 5516 deletions
diff --git a/DOCS/xml/pl/encoding-guide.xml b/DOCS/xml/pl/encoding-guide.xml deleted file mode 100644 index f6fcee54f9..0000000000 --- a/DOCS/xml/pl/encoding-guide.xml +++ /dev/null @@ -1,5516 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- synced with 27843 --> -<!-- 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 procesu, albo jest duża szansa ż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 przejść kilka - wstępnych 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">nie</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ą brzydkie, 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, w charakterze - taniej formy 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ą - 60000/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 "telecine", - a niesławne "3:2 pulldown" 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, tak 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 robiąc kopię w oryginalnym formacie. - Konwersja między tymi dwoma formatami jest wysoce destrukcyjna i nie może - zostać ładnie 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ć klatka po klatce. - 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, co naprawia ten 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 zależy Ci na jakości, 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 ograniczona 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 najlepszym kompromisem 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_MBajtach) - * 1024 * 1024 / długość_w_sekundach * 8 / 1000</systemitem> - Na przykład by wcisnąć 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>Ograniczenia efektywnego kodowania</title> - -<para> -Ze względu na naturę kodowania typu MPEG istnieją różne ograniczenia których -warto się trzymać żeby osiągnąć najlepszą jakość. -MPEG dzieli obraz na kwadraty 16x16 pikseli nazywane makroblokami, -każdy z nich składa się z 4 bloków 8x8 informacji o jasności (luminancja, luma) -i dwóch 8x8 z połową rozdzielczości (jeden na składową czerwono-morską, drugi -na niebiesko-żółtą). -Nawet jeśli wysokość i szerokość filmu nie są wielokrotnościami 16, -koder użyje tyle makrobloków żeby przykryć cały obszar obrazu, -dodatkowa przestrzeń zostanie zmarnowana. -Zatem w interesie zwiększenai jakości przy utrzymaniu wielkości pliku kiepskim -pomysłem jest używanie wymiarów które nie są wielokrotnością 16. -</para> - -<para> -Większość DVD ma też jakieś czarne ramki na brzegach. -Zostawienie ich tam <emphasis role="bold">mocno</emphasis> zaszkodzi jakości -na kilka sposobów. -</para> - -<orderedlist> -<listitem> - <para> - Kompresje typu MPEG są zależne od transformat przestrzeni częstotliwości, - a dokładniej Dyskretnej Transformaty Cosinusowej (DCT), która jest podobna do - transformaty Fouriera. - Ten sposób kodowania jest efektywny przy wzorach i gładkich przejściach, ale - kiepsko sobie radzi z ostrymi krawędziami. - Żeby je zakoować, musi używać o wiele większej liczby bitów, albo wystąpią - artefakty znane jako pierścienie. - </para> - - <para> - Transformacja częstotliwości (DCT) jest stosowana osobno do każdego - makrobloku (tak na prawdę do każdego bloku), więc ten problem istnieje tylko - gdy ostra krawędź jest wewnątrz bloku. - Jeśli czarna ramka zaczyna się dokładnie na krawędzi 16-pikselowego bloku, - nie stwarza problemów. - Jednakże, rzadko kiedy takie ramki są ładnie wyrównane, więc zazwyczaj będzie - trzeba przyciąć obraz żeby tego uniknąć. - </para> -</listitem> -</orderedlist> - -<para> -Poza transformatami przestrzeni częstotliwości, kompresje typu MPEG używają -wektorów ruchu, by reprezentować zmiany między sąsiednimi klatkami. -Oczywiście wektory ruchu są mniej efektywne w stosunku do nowej treści -przychodzącej z brzegów obrazka, ponieważ nie było jej na poprzedniej klatce. -Jeśli obraz rozciąga się do krawędzi zakodowanego regionu, -wektory ruchu radzą sobie z treścią wychodzącą poza krawędzie. -Jednak jeśli są ramki, mogą być kłopoty: -</para> - -<orderedlist continuation="continues"> -<listitem> - <para> - Dla każdego makrobloku, kompresja typu MPEG przechowuje wektor opisujący - która część poprzedniej klatki powinna być skopiowana do tego makrobloku jako - podstawa do przewidzenia następnej klatki. - Zakodowane wtedy muszą być tylko różnice. - Jeśli makroblok zawiera fragment ramki, to wektory ruchu z pozostałych cześci - obrazu zamażą obramowanie. - Oznacza to że dużo bitów będzie zużytych albo na jej powtórne zaczernienie - albo (co bardziej prawdopodobne), wektor ruchu w ogóle nie będzie użyty - i wszystkie zmiany w tym makrobloku będzie trzeba zakodować bezpośrednio. - W obu przypadkach, bardzo cierpi na tym efektywność kodowania. - </para> - - <para> - Powtórnie, ten problem występuje tylko jeśli ramki nie są na krawędziach - 16-pikselowych bloków. - </para> -</listitem> - -<listitem> - <para> - W końcu, przypuśćmy że mamy makroblok wewnątrz obrazu i obiekt dostaje się do - niego z okolic krawędzi. - Kodowanie typu MPEG nie potrafi powiedzieć "skopiuj część która jeest - wewnątrz obraka, ale nie czarne obramowanie." Dlatego obramowanie też - zostanie skopiowane i trzeba będzie zużyć sporo bitów żeby zakodować fragment - obrazu który powinien tam być. - </para> - - <para> - Jeśli obraz sięga do krawędzi zakodowanego obszaru, MPEG ma specjalne - optymalizacje do wielokrotnego kopiowania ostatniego rzędu pikseli jeśli - wektor ruchu przychodzi z poza zakodoanego obszaru. - Staje się to bezużyteczne gry obraz ma czarne obramowanie. - W odróżnieniu od problemów 1 i 2 tutaj nic nie pomoże ustawienie obramowania - w odpowiednim miejscu. - </para> -</listitem> - -<listitem><para> - Mimo tego, że obramowanie jest całkowicie czarne i nigdy się nie zmienia, - zawsze jest pewien narzut związany z większą ilością makrobloków. -</para></listitem> -</orderedlist> - -<para> -Ze wszystkich tych powodów zalecane jest całkowite wycięcie czarnych obramowań. -Dodatkowo, jeśli przy krawędziach jest obszar zakłóceń/zniekształceń, obcięcie -go również poprawi efektywność kodowania. -Puryści, którzy chcą możliwie dokładnie zachować oryginał mogą się sprzeciwiać, -ale jeśli nie planujesz używać stałego kwantyzatora to jakość uzyskana dzięki -skadrowaniu znacząco przewyższy utratę informacji przy brzegach. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-crop"> -<title>Kadrowanie i skalowanie</title> - -<para> -Przypomnijmy z poprzedniej części że ostateczna wielkość (wysokość i szerokość) -obrazu do kodowania powinna być wielokrotnością 16. -Można to osiągnąć kadrowaniem, skalowaniem albo kombinacją obydwu. -</para> - -<para> -Przy kadrowaniu, jest kilka reguł których musimy przestrzegać by uniknąć -uszkodzenia filmu. -Zwykły format YUV, 4:2:0, przechowuje wartości koloru podpróbkowane, czyli -kolor jest próbkowany o połowę rzadziej w każdym kierunku niż jasność. -Spójrzmy na diagram, na którym L oznacza punkty próbkowania jasności (luma) -a C koloru (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> -Jak widać, wiersze i kolumny obrazu w sposób naturalny łączą się w pary. -Dlatego przesunięcia i wymiary kadrowania <emphasis>muszą</emphasis> być -liczbami parzystymi. -Jeśli nie są, barwa nie będzie już dobrze dopasowana do jasności. -Teoretycznie możliwe jest kadrowanie z nieparzystym przesunięciem, ale wymaga -to przepróbkowania kolorów, co jest potencjalnie stratną operacją nie -obsługiwaną przez filtr kadrowania. -</para> - -<para> -Dalej, film z przeplotem jest kodowany jak poniżej: -</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">Górne pole</entry> - <entry namest="col9" nameend="col16">Dolne pole</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> -Jak widać, wzór powtarza się dopiero po 4 liniach. -Dlatego przy filmie z przeplotem, pionowa współrzędna i wysokość kadrowania -muszą być wielokrotnościami 4. -</para> - |