<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r21612 -->
<!-- Opiekun: Emdej -->
<chapter id="cd-dvd">
<title>Używanie CD/DVD</title>

<sect1 id="drives">
<title>Napędy CD/DVD</title>

<para>
Nowoczesne napędy CD-ROM osiągają bardzo duże prędkości. Niektóre z nich są
dodatkowo zdolne do pracy przy zredukowanych prędkościach. Oto kilka powodów,
dla których powinniśmy zastanowić się czy nie należy zredukować prędkości
naszego napędu:
</para>

<itemizedlist>
<listitem><para>
  Istnieją doniesienia o błędach odczytu przy dużych prędkościach, szczególnie
  podczas używania uszkodzonych bądź wadliwie wytłoczonych/nagranych płyt CD.
  Redukcja prędkości odczytu może uchronić nas przed utratą danych w takich
  przypadkach.
</para></listitem>

<listitem><para>
  Wiele napędów CD jest dokuczliwie głośnych. Redukcja prędkości może zmniejszyć
  natężenie hałasu.
</para></listitem>
</itemizedlist>

<!-- ********** -->

<sect2 id="drives_linux">
<title>Linux</title>

<para>
Możesz zredukować prędkość napędu CD z interfejsem IDE korzystając
z <command>hdparm</command>, <command>setcd</command> lub
<command>cdctl</command>.
Działają one w następujący sposób:
<screen>hdparm -E <replaceable>[prędkość]</replaceable> <replaceable>[urządzenie cdrom]</replaceable></screen>
<screen>setcd -x <replaceable>[prędkość]</replaceable> <replaceable>[urządzenie cdrom]</replaceable></screen>
<screen>cdctl -bS <replaceable>[speed]</replaceable></screen>
</para>

<para>
Jeśli używasz emulacji SCSI, możesz musieć zastosować ustawienia do prawdziwego
urządzenia IDE a nie emulowanego SCSI.
</para>

<para>
Jeżeli masz uprawnienia roota, to pomóc może także następująca komenda:
<screen>echo file_readahead:2000000 &gt; /proc/ide/<replaceable>[urządzenie cdrom]</replaceable>/settings</screen>
</para>


<para>
Ustawiamy w ten sposób wielkość bufora odczytu na 2MB, co pomaga przy odczycie
porysowanych płyt. Jeżeli ustawimy zbyt dużą wielkość tego bufora, napęd będzie
stale rozkręcał się i zwalniał, co spowoduje bardzo znaczny spadek wydajności.
Zaleca się również dostrojenie napędu CD-ROM przy użyciu
<command>hdparm</command>:
<screen>hdparm -d1 -a8 -u1 <replaceable>[urządzenie cdrom]</replaceable></screen>
</para>

<para>
Włączamy w ten sposób dostęp DMA do dysku, czytanie z wyprzedzeniem i
odmaskowanie IRQ (IRQ unmasking) (więcej przeczytasz na stronach man do
<command>hdparm</command>)
</para>

<para>
Proszę sprawdzić
"<filename>/proc/ide/<replaceable>[urządzenie cdrom]</replaceable>/settings</filename>"
by dostroić swój napędu CD-ROM.
</para>

<para>
Dla napędów SCSI nie istnieje jednolity sposób ustawiawiania tych parametrów
(jeżeli znasz jakiś to napisz nam o nim). Istnieje narzędzie które działa z
<ulink url="http://das.ist.org/~georg/">napędami SCSI Plextor</ulink>.
</para>
</sect2>

<!-- ********** -->

<sect2 id="drives_freebsd">
<title>FreeBSD</title>

<para>Prędkość:
<screen>
cdcontrol [-f <replaceable>urządzenie</replaceable>] speed <replaceable>[prędkość]</replaceable>
</screen>
</para>

<para>DMA:
<screen>
sysctl hw.ata.atapi_dma=1
</screen>
</para>
</sect2>

</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="dvd">
<title>Odtwarzanie DVD</title>

<para>
Aby poznać pełną listę dostępnych opcji, proszę przeczytać odpowiednie strony
man. Składnia do odtwarzania standardowego DVD jest następująca:
<screen>
mplayer dvd://<replaceable>&lt;ścieżka&gt;</replaceable> [-dvd-device <replaceable>&lt;urządzenie&gt;</replaceable>]
</screen>
</para>

<para>
Przykład:
<screen>mplayer dvd://1 -dvd-device /dev/hdc</screen>
</para>

<para>
Jeśli skompilowałeś <application>MPlayera</application> z obsługą dvdnav,
składnia jest taka sama, tylko musisz użyć dvdnav:// zamiast dvd://.
</para>

<para>
Domyślnym urządzeniem (device) DVD jest <filename>/dev/dvd</filename>. Jeżeli
Twoje ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie
urządzenie (device) w linii polecenia korzystając z opcji
<option>-dvd-device</option>.
</para>

<para>
<application>MPlayer</application> używa <systemitem>libdvdread</systemitem>
oraz <systemitem>libdvdcss</systemitem> do odtwarzania i dekodowania DVD.
Te dwie biblioteki są zawarte
w głównym drzewie źródłowym <application>MPlayera</application>, nie trzeba
instalować ich osobno.
Możesz też użyć systemowych wersji tych bibliotek, ale nie jest to zalecane,
ponieważ może spowodować błędy, niekompatybilności bibliotek oraz zmniejszenie
prędkości.
</para>

<note><para>
Jeśli występują problemy z dekodowaniem DVD, spróbuj wyłączyć supermount lub
inne tego typu usługi. Niektóre napędy RPC-2 mogą również wymagać ustawienia
kodu regionu DVD.
</para></note>

<formalpara>
<title>Struktura dysku DVD</title>
<para>
Dyski DVD mają po 2048 bajtów na sektor z ECC/CRC. Zwykle posiadają system
plików UDF na pojedynczej ścieżce zawierającej różnorakie pliki (małe pliki .IFO
i .BUK oraz duże (1GB) pliki .VOB).
Są one rzeczywistymi plikami i mogą być kopiowane/odtwarzane z podmontowanego
systemu plików niezakodowanego DVD.
</para>
</formalpara>

<para>
Pliki .IFO zawierają informacje nawigacyjne filmu (mapa
rozdziałów/tytułów/kątów kamery, tablica języków, itp) i są konieczne do
odczytu i interpretacji zawartości pliku .VOB (filmu).
Pliki .BUK są kopiami zapasowymi plików .IFO.
Używają <emphasis role="bold">sektorów</emphasis> wszędzie, więc aby
zaimplementować nawigację na DVD lub rozszyfrować zawartość, należy używać
adresowania sektorów dysku w trybie raw.
</para>

<para>
Z tego powodu obsługa DVD wymaga
dostępu do urządzenia w trybie raw bazującym na sektorach. Niestety wymagane
jest (pod Linuksem) posiadanie uprawnień roota aby móc korzystać z sektorowego
adresowania pliku.
Dlatego też nie w ogóle używamy sterownika systemu plików pochodzącego
z jądra, ale reimplementujemy to w przestrzeni użytkownika.
Zajmuje się tym biblioteka <systemitem>libdvdread</systemitem> 0.9.x.
Sterownik
systemu plików UDF zawarty w jądrze nie jest wymagany ponieważ wspomniane
biblioteki zawierają własny, wbudowany sterownik systemu plików UDF. DVD nie
musi być podmontowany, bowiem używany jest jedynie dostęp w trybie raw.
</para>

<para>
Czasami <filename>/dev/dvd</filename> nie może być czytany przez użytkowników,
zatem autorzy <systemitem>libdvdread</systemitem> zaimplementowali warstwę
emulacji, która tłumaczy adresowanie sektorowe na nazwy plików i offsety, aby
emulować dostęp w trybie raw na podmontowanym systemie plików albo nawet na
twardym dysku.
</para>

<para>
<systemitem>libdvdread</systemitem> równie dobrze akceptuje miejsce
podmontowania (mountpoint) jak i nazwę urządzenia przy dostępie w trybie raw i
sprawdza <filename>/proc/mounts</filename> w celu odnalezienia odpowiedniej
nazwy urządzenia (device). Zostało to napisane z myślą o systemie Solaris, gdzie
nazwy urządzeń są przydzielane automatycznie.
</para>

<formalpara>
<title>Deszyfrowanie DVD</title>
<para>
Do deszyfrowania DVD jest używana biblioteka
<systemitem>libdvdcss</systemitem>. Metoda jej działania może być określona
poprzez zmienna środowiskową <envar>DVDCSS_METHOD</envar>,
co jest dokładniej opisane na stronie man.
</para>
</formalpara>

<para>
Napędy DVD RPC-1 zabezpieczają ustawienia regionu jedynie poprzez
oprogramowanie. Napędy RPC-2 mają sprzętowe zabezpieczenie, które pozwala na co
najwyżej 5 zmian. Jeżeli posiadamy napęd DVD RPC-2 wymagana/zalecana jest
aktualizacja firmware'u do RPC-1. 
Nowe wersje firmware'ów można znaleźć w internecie. 
Poszukiwania radzimy rozpocząć od 
<ulink url="http://forum.rpc-1.com/dl_all.php">forum firmware'ów</ulink>.
Jeżeli nie ma tam nowej wersji firmware'u dla naszego urządzenia, użyj
<ulink url="http://linvdr.org/projects/regionset/">regionset tool
(narzędzia do zmiany regionów)</ulink> aby ustawić kod regionu na swoim napędzie
DVD (pod Linuksem). <emphasis role="bold">Ostrzeżenie</emphasis>: Możesz
ustawić region tylko 5 razy.
</para>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="vcd">
<title>Odtwarzanie VCD</title>

<para>
Pełna lista dostępnych opcji znajduje się na stronie man. Składnia dla
standardowego Video CD (VCD) jest następująca:
<screen>mplayer vcd://<replaceable>&lt;ścieżka&gt;</replaceable> [-cdrom-device <replaceable>&lt;urządzenie&gt;</replaceable>]</screen>
Przykład:
<screen>mplayer vcd://2 -cdrom-device /dev/hdc</screen>
Domyślnym urządzeniem VCD jest <filename>/dev/cdrom</filename>. Jeśli
Twoje ustawienia są inne, utwórz dowiązanie symboliczne
lub podaj prawidłowe urządzenie w linii poleceń za pomocą opcji
<option>-cdrom-device</option>
</para>

<note><para>
Przynajmniej napędy CD-ROM SCSI firmy Plextor i niektóre modele Toshiby
mają beznadziejną wydajność przy odczycie VCD. Jest to spowodowane
niekompletną implementacją <systemitem>ioctl</systemitem>'a CDROMREADRAW dla
tych urządzeń. Jeśli masz jakieś pojęcie o programowaniu SCSI,
<ulink url="../../tech/patches.txt">pomóż nam</ulink> zaimplementować ogólną
obsługę SCSI dla VCD.
</para></note>

<para>
W międzyczasie możesz wyciągać dane z VCD za pomocą
<ulink url="http://ftp.ntut.edu.tw/ftp/OS/Linux/packages/X/viewers/readvcd/">readvcd</ulink>
i odtwarzać plik wynikowy za pomocą <application>MPlayera</application>
</para>

<formalpara>
<title>Struktura VCD</title>
<para>
Video CD (VCD) składa się z sektorów CD-ROM XA, tzn. ścieżek CD-ROM 
mode 2 form 1 i form 2:
<itemizedlist>
<listitem><para>
  Pierwsza ścieżka jest w formacie mode 2 form 2, który oznacza użycie korekcji
  błędów L2. Ścieżka ta zawiera system plików ISO-9660 o gęstości 2048
  bajtów/sektor.  Ten system plików z kolei zawiera metainformacje VCD, a także
  nieruchome klatki, często używane w menu. Segmenty MPEG dla menu mogą także
  być składowane w tejże pierwszej ścieżce, ale MPEGi muszą być podzielone na
  kawałki po 150 sektorów. System plików ISO-9660 może zawierać inne pliki bądź
  programy, niekonieczne dla eksploatacji VCD.
</para></listitem>

<listitem><para>
  Druga i pozostałe ścieżki są zwykle ścieżkami video MPEG typu raw o gęstości 
  2324 bajtów/sektor, zawierającymi jeden pakiet danych MGEG PS na sektor.
  Ścieżki te są w formacje mode 2 form 1, więc przechowują one więcej danych na
  sektor, w zamian za słabszą korekcję błędów. Możliwe są też ścieżki CD-DA na
  VCD poza pierwszą ścieżką. Niektóre systemy operacyjne używają pewnych
  trików aby ścieżki nie zawierające systemu plików ISO-9660 były widoczne
  w systemie plików. W pozostałych systemach, jak na przykład w systemie
  GNU/Linux, nie ma takiej możliwości (jeszcze). W takim przypadku dane MPEG
  <emphasis role="bold">nie mogą być montowane</emphasis>. 
  Jako że większość filmów znajduje się na tego typu ścieżce,
  powinieneś spróbować na początek opcji <option>vcd://2</option>.
</para></listitem>

<listitem><para>
  Istnieją również płyty VCD bez pierwszej ścieżki (pojedyncza ścieżka i
  brak systemu plików w ogóle). Je również da się odtwarzać, ale nie da
  się ich montować.
</para></listitem>

<listitem><para>
  Definicja standardu Video CD, nazywana "Białą Księgą" Phillipsa,
  generalnie nie jest dostępna online, musi być zakupiona u Phillipsa. 
  Bardziej szczegółowe informacje na temat Video CD można znaleźć na 
  <ulink url="http://www.vcdimager.org/pub/vcdimager/manuals/0.7/vcdimager.html#SEC4">stronie dokumentacji vcdimagera</ulink>.
</para></listitem>
</itemizedlist>
</para>
</formalpara>

<formalpara>
<title>O plikach .DAT</title>
<para>
Plik o rozmiarze ok. 600 MB widoczny na pierwszej ścieżce zamontowanego VCD
nie jest prawdziwym plikiem ! Jest on tzw. bramką ISO, utworzoną by
Windows mógł obsługiwać takie ścieżki (Windows w ogóle nie zezwala aplikacjom
na dostęp do urządzeń w trybie raw). Pod Linuksem nie możesz kopiować ani
odtwarzać tych plików (zawierają "śmieci"). Pod Windows jest to możliwe, gdyż
jego sterownik iso9660 symuluje odczyt ścieżek w trybie raw za pomocą tego
pliku. By móc odtwarzać pliki .DAT, musisz mieć sterownik do jądra, który
dostarczany jest z linuksową wersją PowerDVD. Posiada on zmodyfikowany sterownik
systemu plików iso9660 (<filename>vcdfs/isofs-2.4.X.o</filename>), który jest w
stanie symulować odczyt ścieżek w trybie raw za pomocą pliku .DAT. Jeśli
podmontujesz płytę używając ich sterownika, możesz kopiować, a nawet odtwarzać
pliki .DAT za pomocą <application>MPlayera</application>. Ale nie będzie to
działało za pomocą standardowego sterownika iso9660 dostarczonego z jądrem
Linuksa! Zamiast tego użyj opcji <option>vcd://</option>. Alternatywą dla
kopiowania VCD jest nowy sterownik:
<ulink url="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</ulink> (nie jest
częścią oficjalnego jądra), który wyświetla sesje CD jako pliki obrazów, oraz
<ulink url="http://cdrdao.sf.net/">cdrdao</ulink>, program do zgrywania
płyt CD bit po bicie.
</para>
</formalpara>
</sect1>
</chapter>
