## 4.1 Napędy CD/DVD

Urywek z dokumentacji Linuksa:

Nowoczesne napędy CD-ROM mogą osiągać bardzo wysokie prędkości głowicy, ale niektóre napędy CD-ROM potrafią działać ze zmniejszoną prędkością. Jest kilka powodów, które mogą spowodować, że rozważysz zmianę prędkości napędu CD-ROM:

- Raportowano o błędach odczytu przy wysokich prędkościach, zwłaszcza ze źle wytłoczonymi CD-ROMami. Zmniejszenie prędkości może zapobiec utracie danych w tych sytuacjach.
- Wiele napędów CD-ROM jest irytująco głośnych, mniejsza prędkość może zmniejszyć hałas.

Możesz zmniejszyć prędkość napędu CD-ROM IDE programem `hdparm` lub programem o nazwie `setcd`. Działa to miej więcej tak:

`hdparm -E [prędkość] [napęd cdrom]`

`setcd -x [prędkość] [napęd cdrom]`

Możesz ponad to spróbować

`echo current_speed:4 > /proc/ide/[napęd cdrom]/settings`

ale będziesz uprawnień roota. Poniższa komenda także może pomóc:

`echo file_readahead:2000000 > /proc/ide/[napęd cdrom]/settings`

Ustawi to pobranie wstępne odczytu pliku na 2MB, co pomaga z porysowanymi CD-ROMami. Jeżeli ustawisz zbyt wysoką wartość, napęd będzie ciągle zwiększał i zmniejszał obroty, co radykalnie zmniejszy wydajność. Zalecane jest byś ponad to wyregulował twój napęd CD-ROM programem `hdparm`:

`hdparm -d1 -a8 -u1 (napęd cdrom)`

Włączy to DMA, read-ahead, i odmaskowanie IRQ (przeczytaj stronę man dla `hdparm` po szczegółowe wyjaśnienie).

Prosimy o odwołanie sie do "`/proc/ide/[napęd cdrom]/settings`" by lepiej dostroić twój CD-ROM.

Napędy SCSI nie mają jednolitego sposobu ustawiania ich parametrów (Znasz jakiś? Powiedz nam!) Jest narzędzie, które działa z napędami Plextor SCSI drives.

FreeBSD:

Prędkość: `cdcontrol [-f urządzenie] speed [prędkość]`

DMA: `sysctl hw.ata.atapi_dma=1`

## 4.2 Odtwarzanie DVD

Po kompletną listę dostępnych opcji, prosimy o przeczytanie manula.

#### Wsparcie nowego-stylu DVD (mpdvdkit2)

MPlayer używa `libdvdread` i `libdvdcss` do deszyfrowania i odtwarzania DVD. Te dwie biblioteki są zawarte w podkatalogu `libmpdvdkit2/` w drzewie kodu źródłowego MPlayera, nie musisz instalować ich osobno. Zdecydowaliśmy się na takie rozwiązanie ponieważ musieliśmy naprawić błąd w `libdvdread` i nałożych nakładkę która dodawała do `libdvdcss` obsługę buforowania (cache) skrakowanych kluczy CSS. Dało to duży przyrost prędkości, ponieważ klucze nie muszą być krakowane za każdym razem przed odtwarzaniem.

MPlayer może również używać systemowych bibliotek `libdvdread` i `libdvdcss` , ale to rozwiązanie nie jest polecane, ponieważ może to powodować błędy, niekompatybilność bibliotek i wolniejszą prędkość.

#### wsparcie dla DVD Navigation (dvdnav)

Wsparcie dla DVD navigation (menu na płycie DVD, z wyborem scen, napisów itp.; przyp.tłum.). przez `dvdnav` zaczęło działać, ale nigdy nie zostało poprawnie zakończone i aktualnie nie jest rozwijane. Kto wie, może jeszcze zostanie ukończone.

#### Wsparcie dla starego-stylu DVD - OPCJONALNIE

Przydatne jeżeli chcesz odtworzyć zakodowane VOBy z twardego dysku. W tym celu skompiluj i zainstaluj libcss 0.0.1 (nie nowszy) (Jeżeli MPlayer nie wykryję go, użyj opcji `-csslib /ścieżka/do/libcss.so`). By go użyć, musisz być rootem, używać MPlayera z suid root lub kazać MPlayerowi użyć programu wrapera z suid-root o nazwie fibmap_mplayer.

#### Struktura DVD

Dyski DVD mają po 2048 bajtów na sektor z ECC/CRC. Mają zazwyczaj system plików UDF na pojedyńczej ścieżce, zawierającej różne pliki (małe pliki .IFO i .BUK i duże (1GB) pliki .VOB). To są prawdziwe pliki które możesz kopiować/odtwarzać z zamontowanego systemu plików na niezaszyfrowanym DVD.

Pliki .IFO zawierają informacje nawigacyjne filmu (rozdziały/tytułu/kąty kamery, tablice języków, itd.) i są wymagane do odczytu i interpretacji zawartości .VOB (filmu). Pliki .BUK są ich kopiami zapasowymi. Wszędzie wykorzystują sektory, więc musiał użyć adresowania sektorów raw na dysku by użyć nawigacji DVD lub zdeszyfrować zawartość.

Całe wsparcie dla starego-stylu DVD jest przez `libcss`, zatem potrzebuje zamontowanego systemu plików DVD i dostępu dla raw opartego na sektorach do urządzenia. Na nieszczęście musisz być (w Linuksie) rootem by pobrać adres sektora pliku. Masz następujące rozwiązania:

- Bycie rootem lub użycie MPlayera z suid-root.
- Kazać MPlayerowi użyć programu wrapera z suid-root o nazwie fibmap_mplayer by mieć dostęp do DVD (używane tylko w odtwarzaniu DVD w starym-stylu DVD z `libcss`).
- W ogóle nie używaj sterownika systemu plików kernela i reimplementacji tego w przestrzeni użytkownika. `libdvdread` 0.9.x i `libmpdvdkit` robią to (wsparcie nowego-stylu DVD). System plików UDF kernela nie jest potrzebny, ponieważ biblioteki te mają już własny wbudowany sterownik systemu plików UDF. Ponad to DVD nie muszą być montowane, ponieważ tylko dostęp raw oparty na sektorach jest użyty.

Czasami `/dev/dvd` nie możę być odczytany przez użytkowników, więc autorzy `libdvdread` zaimpletowali emulację która przesyła adresy sektorów do nazwplików+przesunięć, by zemulować dostęp raw na zamontowanym systemie plików lub nawet na dysku twardym.

`libdvdread` akceptuje nawet punkty montowania (ang. mountpoint) zamiast nazwy urządzenia dla dostępu raw i sprawdza `/proc/mounts` by pobrać nazwę urządzenia. Zrobione to zostało dla Solarisa, gdzie nazwy urządzeń są dynamicznie przydzielane.

Domyślnym urządzeniem DVD jest `/dev/dvd`. jeżeli ustawiłeś inne, stwórz link symboliczny, lyb podaj poprawne urządzenie w linii komend opcją `-dvd-device`.

#### Autentyfikacja DVD

Wsparcia dla autentyfikacji i metod deszyfrowania nowego-stylu DVD są ukończone, używają poprawionej biblioteki `libdvdcss` (patrz wyżej). Metoda może być określona poprzez zmienną systemową `DVDCSS_METHOD`, która może być ustawiona na `key (klucz)`, `disk (dysk)` lub `title (tytuł)`.

Jeżeli nic nie jest określone, biblioteka próbuje poniższych metod (domyślnie: key, title request):

1. bus key: Ten klucz jest negocjowany podczas autentyfikacji (długi mix ioctl'i wymiany różnych kluczy, oprogramowanie kryptograficzne) i używa go do deszyfracji kluczy tytułu i dysku zanim wyśle je przez niechronioną magistralę (bus) (by zapobiec podsłuchiwaniu). Klucz magistrali jest wymagany do pobrania i predeszyfracji zaszyfrowanego klucza dysku.
2. cached key: MPlayer szuka aktualnie skrakowanych kluczy tytułów które są zapisane w katalogu `~/.mplayer/DVDKeys` (szybkie ;).
3. key: Jeżeli nie są dostępne zbuforowane klucze, MPlayer próbuje deszyfrować klucz dysku grupą kluczy dołączonych do odtwarzacza.
4. disk: Jeżeli metoda klucza zawiedzie (np. nie ma doączony kluczy do odtwarzacza), MPlayer skrakuje klucz dysku używając algorytmu brute force. Ten proces intensywnie wykorzystuje CPU i wymaga 64 MB pamięci (16M 32Bit wpisów tablicy mieszającej (org. hash table)) by zapisać tymczasowe dane. Ta metoda powinna zawsze działać (wolno).
5. title request: Z kluczem dysku MPlayer wymaga zaszyfrowanych kluczy tytułów, które są wewnątrz ukrytych sektorów używających `ioctl()`. Kod regionu (dla USA, Japoni, Europy inny, kwestia zabezpieczeń; przyp. tłum.) urządzeń RPC-2 jest sprawdzany w tym kroku i może się nie powieść w takich urządzeniach. Jeżeli się powiedzie, klucz tytułu zostanie zdeszyfrowany z magistralą (bus) i kluczem dysku.
6. title: Ta metoda zostanie użyta, jeżeli metoda "title request" (patrz wyżej) zawiedzie i nie polega na wymianie klucza z napędem DVD. Używa ataku kryptograficznego by bezpośrednio odgadnąć klucz tytułu (poprzez odnajdywanie powtarzających się wzorców w zaszyfrowanej zawartości VOB i odgadywaniu, że tekst jawny odpowiadający pierwszym zaszyfrowanym bajtom jest kontunuacją wzorca). Ta metoda jest również znana jako "known plaintext attack" (atak znanym tekstem jawnym) lub "DeCSSPlus". W wielu przypadkach ta metoda zawodzi, ponieważ nie ma wystarczającej ilości zaszyfrowanych informacji na dysku, by sporządzić statystyki ataku lub dlatego, że klucz zmienia się wewnątrz tytułu. Ta metoda jest jedynym rozwiązaniem by zdeszyfrować DVD zapisane na dysku twardym lub z DVD z błędnym kodem regionu w napędach RPC2 (wolny).

Napędy DVD RPC-1 chronią ustawienia regionu tylko programowo. Napędu RPC-2 mają sprzętową ochronę która pozwala tylko na 5 zmian. Możliwe, że będziesz potrzebował/będzie zalecany upgrade firmware'u do RPC-1, jeżli masz napęd DVD RPC-2. Upgrade'y firmware'u można znaleść tej stronie firmware'owej. Jeżeli nie ma tam upgrade'u firmware'u dostępnego dla twojego urządzenia, użyj narzędzia regionset by ustawić kod regionu twojego napędu DVD (pod Linuksem). Ostrzeżenie: Możesz zmienić region tylko 5 razy.

## 4.3 Odtwarzanie VCDk

Po kompletną listę dostępnych opcji, prosimy o przeczytanie manuala. Składnia dla standardowego Video CD (VCD) jest następująca:

`mplayer -vcd <ścieżka> [-cdrom-device <uządzenie>]`

przykład: `mplayer -vcd 2 -cdrom-device /dev/hdc`

Domyślnym użądzeniem VCD jest `/dev/cdrom`. Jeżeli twoje ustawienia są inne, stwórz link symboliczny lub podaj poprawne urządzenie w lini komend opcją `-cdrom-device`.

Informacja: Najnowsze napędy Plextora i niektóre CD-ROMy SCSI Toshiba mają straszną osiągi w czytaniu VCDików. Jest tak, ponieważ CDROMREADRAW ioctl nie jest w pełni zaimpletowany dla tych napędów. Jeżli masz jakąś wiedzę na temat programowania SCSI, prosimy pomóż nam wprowadzić ogólne wsparcie dla SCSI VCD.

#### Struktura VCD

Dyski VCD składają się z jednej lub więcej ścieżek:

- Pierwsza ścieżka jest małą ścieżką danych 2048 bajtów/sektor z systemem plików iso9660, zazwyczaj zawierającą odtwarzacz VDC dla Windowsa i może inne informacje (zdjęcia, tekst, itp).
- Druga i inne ścieżki są to MPEGi raw, 2324 bajtów/sektor (film), zawierające jeden pakiet danych MPEG PS na sektor zamiast systemu plików. Podobnie do ścieżek audio CD, te ścieżki nie mogą być zamontowane (Montowałeś kiedykolwiek audio CD, by je odtworzyć?). Ponieważ większość filmów jest w tej ścieżce, powinieneś najpierw spróbować `-vcd 2`.
- Istnieją dyski VCD bez pierwszej ścieżki (pojedyńcza ścieżka i całkowity brak systemu plików). Nadal można je odtworzyć, ale nie mogą być zamontowane.

#### O plikach .DAT:

Widoczny plik ~600 MB na pierwszej ścieżce w zamontowanym VCD nie jest prawdziwym plikiem! Jest on więc przekierowaniem ISO z własną nazwą, stworzonym by pozwolić Windowsom przechwycenie tych ścieżek (Windowsy w ogóle nie pozwalają na dostęp raw urządzenia). Pod Linuksem nie możesz kopiować lub odtwarzać tych plików (zawierają śmieci). Pod Windowsami jest to możliwe, ponieważ ich sterownik iso9660 emuluje odczyt raw ścieżek w tym pliku. By odtworzyć pliki .DAT potrzebujesz sterownika kernela który możesz znaleść w wersji linuksowej PowerDVD. Zawiera on zmodyfikowany sterownik systemu plików iso9660 (`vcdfs/isofs-2.4.X.o`), który ma dostępną emulację ścieżek raw bezpośrednio do ukrytych plików .DAT. Jeżeli zamontujesz dysku używając tego sterownika, możesz kopiować i nawet odtwarzać pliki .DAT MPlayerem. Ale to nie zadziała ze standardowym sterownikiem iso9660 kernela Linuksa! Użyj zamiast tego opcji `-vcd`. Alternatywami dla kopiowania VCD są: nowy sterownik kernela cdfs (nie jest częścią oficjalnego kernela) który pokazuje sesje CD jako pliki obrazów i cdrdao, aplikacja do grabowania/kopiowania CD metodą bit-by-bit.