DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

## 4.1. Lettori CD/DVD

Dalla documentazione di Linux:

Alcuni lettori CDROM sono capaci di cambiare la loro velocità. Ci sono varie ragioni per cambiare la velocità di un CD-ROM. CDROM pressati male possono avere benefici da una velocità minore della massima. I moderni lettori CDROM possono raggiungere velocità molto alte (fino a 24-volte è comune). E' stato riportato che questi lettori possono dare errori di lettura a queste alte velocità, ridurre la velocità può prevenire perdite di dati in queste circostanze. In fine, alcuni di questi lettori possono produrre un fastidioso rumore, che si può ridurre a velocità più basse.

Per ridurre la velocità del lettore si può usare hdparm o un programma chiamato setcd. Usali così:

`hdparm -E [velocità] [cdrom]`

`setcd -x [velocità] [cdrom]`

Puoi anche provare:

`echo current_speed:4 >/proc/ide/[cdrom device]/settings`

ma devi avere i privilegi di root. Può aiutare anche il seguente comando:

`echo file_readahead:2000000 >/proc/ide/[cdrom device]/settings`

per leggere 2MB in anticipo dal file (è utile per i CDROM rigati). Se viene impostato ad un valore troppo alto, il lettore continuerà a girare e a fermarsi, riducendo drasticamente la performance. Si consiglia anche di regolare il tuo lettore CDROM anche con hdparm:

`hdparm -d1 -a8 -u1 (cdrom device)`

per abilitare l'accesso DMA, readahead, e l' IRQ unmasking. (se non capisci, *leggi la pagina di man di hdparm*)

Per favore fai riferimento a "`/proc/ide/[cdrom device]/settings`" per una regolazione fine del CDROM.

I lettori SCSI non hanno un modo comune per regolare questi parametri (ne conosci uno? Diccelo!) Esiste una utility che funziona con i lettori SCSI Plextor.

FreeBSD:

Velocità: `cdcontrol [-f device] speed [velocità]`

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

## 4.2. Vedere i DVD

Per la lista completa delle opzioni disponibili, leggete la pagina di man. La sintassi per la riproduzione di un DVD standard è la seguente:

`mplayer dvd://<track> [-dvd-device <device>]`

Esempio:`mplayer dvd://1 -dvd-device /dev/hdc`

Il dispositivo DVD predefinito è `/dev/dvd`. Se il tuo sistema è diverso, crea un symlink o specifica il dispositivo corretto sulla linea di comando con l'opzione `-dvd-device`.

#### Supporto DVD nuovo stile (mpdvdkit2)

MPlayer usa `libdvdread` e `libdvdcss` per decifrare e leggere i DVD. Queste due librerie si trovano nella subdirectory `libmpdvdkit2/` dell'albero di MPlayer, non devi installarle separatamente. Abbiamo optato per questa soluzione perchè abbiamo dovuto correggere un bug di libdvdread, e applicare una patch che aggiunge il supporto al caching delle chiavi CSS crackate per libdvdcss. Risulta un grande aumento della velocità perchè le chiavi non devono essere crackate ogni volta prima della riproduzione . Queste chiavi vengono conservate nella directory `$HOME/.mplayer/DVDKeys`.

MPlayer può anche utilizzare le librerie `libdvdread` e `libdvdcss` installate nel sistema, ma questa soluzione non è consigliata, in quanto possono risultare bug, incompatibilità di librerie, e minore velocità.

#### Supporto DVD Navigation (dvdnav)

Il supporto per DVD navigation attraverso `dvdnav` era in implementazione, ma non è mai stato completato del tutto ed è quindi sconsigliato!

#### Supporto DVD vecchio stile - OPZIONALE

Utile se vuoi leggere file VOB dall' hardisk. Compila e installa libcss 0.0.1 (non più recente) (se MPlayer non lo trova, usa l'opzione `-csslib /percorso/di/libcss.so`). Per usarlo, devi essere root, usare un binario di MPlayer suid root o far richiamare ad MPlayer il programma wrapper fibmap_mplayer che è suid root.

#### Struttura dei DVD

I dischi DVD hanno settori da 2048 byte/settore con ECC/CRC. Solitamente hanno un filesystem UDF su una singola traccia, che contiene vari file (piccoli file .IFO e .BUK e grandi (1GB) file .VOB). Questi sono veri file e possono essere copiati/riprodotti dal filesystem montato di un DVD non criptato.

I file .IFO contengono le informazioni per la navigazione del film (capitoli/titoli/mappa delle angolazioni, tabella delle lingue, ecc.) ed è necessario per leggere ed interpretare il contenuto .VOB (film). I file .BUK sono i loro backup. Usano i settori ovunque, quindi bisogna usare il puro indirizzamento dei settori del disco per implementare la navigazione dei DVD navigation. Questo è necessario anche per decrittare il contenuto.

L'intero supporto DVD vecchio stile con libcss deve quindi avere il filesystem del DVD montato e l'accesso a basso livello ai settori della device. Sfortunatamente devi essere root (sotto Linux) per avere l'indirizzo del settore di un file. Hai quindi le seguenti possibilità:

- Essere root o usare un binario di mplayer suid-root.
- Far chiamare ad MPlayer il programma wrapper fibmap_mplayer (che è suid root) per accedere al DVD (usato col metodo che utilizzava libcss).
- Non usare per nulla il driver di filesystem del kernel e reimplementarlo in userspace. libdvdread 0.9.x e libmpdvdkit fanno questo (supporto DVD nuovo stile). Il driver per il filesystem udf del kernel non è necessario in quanto hanno già il proprio driver per l'udf. Inoltre il dvd non deve essere montato in quanto viene usato solo l'accesso a basso livello ai settori.

A volte /dev/dvd non può essere letto dagli utenti, quindi gli autori di libdvdread hanno implementato un livello di emulazione che trasferisce gli indirizzi dei settori in nomifile+offset, per simulare un accesso a basso livello su un filesystem montato o anche su un hard disk.

libdvdread accetta anche il punto di mount al posto del nome del dispositivo e controlla in `/proc/mounts` per ottenere il nome del device. E' stato sviluppato per Solaris, dove i nomi dei dispositivi sono assegnati dinamicamente.

Il dispositivo DVD di default è `/dev/dvd`. Se la tua impostazione è diversa, fai un symlink, o specifica la device corretta alla riga di comando con l'opzione `-dvd-device`.

#### Autenticazione del DVD

Il metodo di autenticazione e decrittazione del supporto DVD nuovo stile usa un libdvdcss modificato (vedi sopra). Il metodo può essere specificato con la variabile d'ambiente `DVDCSS_METHOD` che può avere i valori `key`, `disk` o `title`.

Se non è specificato nulla vengono provati i seguenti metodi (default: key, title request):

1. bus key: Questa chiave è negoziata durante l'autenticazione (un lungo miscuglio di ioctls e vari scambi di chiavi, roba crittografica) ed è usata per criptare le chiavi del titolo e del disco prima di mandarle sul bus non protetto (per prevenire l'eavesdropping). La chiave del bus è necessaria per ottenere e pre-decriptare la chiave del disco.
2. cached key: MPlayer cerca chiavi di titolo eventualmente già scoperte che sono salvate nella directory `~/.mplayer/DVDKeys` (veloce ;).
3. key: Se non è disponibile nessuna chiave già salvata, MPlayer prova a decriptare la chiave del disco con un insieme di chiavi incluse.
4. disk: Se il metodo della chave fallisce (es. nessuna chiave inclusa), MPlayer romperà la chiave del disco usando un algoritmo