Utilizzo CD/DVD Lettori CD/DVD I lettori CD-ROM recenti possono raggiungere velocita' molto alte, ma molti lettori sono capaci di girare a velocita' ridotte. Ci sono diversi motivi che possono farti pensare di cambiare la velocita' di un'unita' CD-ROM: Ci sono state notifiche di errori di lettura ad alte velocita', specialmente con CD-ROM malamente pressati. Ridurre la velocita' puo' prevenire la perdita di dati in queste circostanze. Molti lettori CD-ROM sono fastidiosamente rumorosi, una minor velocita' puo' ridurre il rumore. Linux Puoi diminuire la velocita' delle unita' CD-ROM IDE con hdparm, setcd o cdctl. Funziona cosi': hdparm -E [velocita'] [dispositivo cdrom device] setcd -x [velocita'] [dispositivo cdrom] cdctl -bS [velocita'] Se stai usando l'emulazione SCSI, puoi dover applicare le impostazioni al lettore IDE reale, e non al dispositivo emulato come SCSI. Se hai i privilegi di root puoi' essere di aiuto anche il comando seguente: echo file_readahead:2000000 > /proc/ide/[dispositivo cdrom]/settings hdparm -d1 -a8 -u1 [cdrom device] Cio' imposta la lettura in prefetch dei file a 2MB, che aiuta con CD-ROM graffiati. Se la imposti troppo alta, il lettore continuera' ad aumentare e diminuire la velocita', e le prestazioni diminuiranno drasticamente. Si raccomanda di regolare il tuo lettore CD-ROM anche con hdparm: hdparm -d1 -a8 -u1 [dispositivo cdrom] Questo abilita l'accesso in DMA, la pre-lettura, e la mascheratura IRQ (leggi la pagina man di hdparm per una spiegazione dettagliata). Perfavore fai riferimento a "/proc/ide/[dispositivo cdrom]/settings" per regolare con precisione il tuo CD-ROM. I lettori SCSI non hanno un modo uniforme di impostare questi parametri (Ne conosci uno? diccelo!) C'e' uno strumento che funziona con i lettori SCSI Plextor. FreeBSD velocita': cdcontrol [-f dispositivo] speed [velocita'] DMA: sysctl hw.ata.atapi_dma=1 Riproduzione DVD Per una lista completa delle opzioni disponibili per favore leggi la pagina man. La sintassi per riprodurre un DVD normale e' la seguente: mplayer dvd://<traccia> [-dvd-device <dispositivo>] Esempio: mplayer dvd://1 -dvd-device /dev/hdc Se hai compilato MPlayer con il supporto per dvdnav, la sintassi e' la stessa, tranne che devi usare dvdnav:// invece di dvd://. Il dispositivo DVD di default e' /dev/dvd. Se la tua impostazione e' diversa, crea un collegamento simbolico o indica il dispositivo giusto dalla riga comando con l'opzione . MPlayer usa libdvdread e libdvdcss per la riproduzione e la decrittazione dei DVD. Queste due librerie sono contenute nei sorgenti di MPlayer, non hai bisogno di installarle separatamente. Puoi anche usare le controparti di sistema delle due librerie, ma questa non e' la soluzione raccomandata, in quanto puo' portare a bachi, incompatibilita' di librerie e minor velocita'. Nel caso di problemi di decodifica di DVD, prova a disabilitare il supermount, o qualsiasi altra utilita'. Alcuni lettori RPC-2 possono anche aver bisogno di impostare il codice di zona. Struttura DVD I dischi DVD hanno 2048 byte per settore con ECC/CRC. Di solito hanno un filesystem UDF su una sola traccia, contenente svariati file (piccoli file .IFO e .BUK e grossi (1GB) file .VOB). Questi sono file veri e possono esser copiati/riprodotti dal filesystem montato di un DVD non criptato. I file .IFO contengono le informazioni per navigare nel film (capitoli/titoli/angolazioni, tabella lingue, etc) e sono necessari per leggere e interpretare il contenuto .VOB (il film). I file .BUK sono dei loro backup. Usano sectors dappertutto, per cui hai bisogno di usare un indirizzamento dei settori del disco a basso livello per implementare la navigazione DVD o decrittarne il contenuto. Il supporto per DVD ha bisogno di un accesso di basso livello basato su settori al dispositivo. Sfortunatamente devi (sotto Linux) essere root per ottenere l'indirizzamento del settore in un file. Per questo non usiamo proprio il filesystem del kernel, piuttosto lo reimplementiamo nello spazio utente di esecuzione. libdvdread 0.9.x fa cio'. Non serve il driver del kernel per il filesystem UDF visto che ha gia' il suo driver integrato per il filesystem UDF. Inoltre non serve che il DVD sia montato visto che viene utilizzato solo l'accesso di basso livello a settori. Alcune volte /dev/dvd non puo' esser letto dagli utenti, percio' gli autori di libdvdread hanno implementato un livello di emulazione che traduce gli indirizzi dei settori in nomifile+posizioni relative, per emulare un accesso di basso livello su di un filesystem montato o anche su un disco fisso. libdvdread accetta anche il nome del punto di mount al posto del nome del dispositivo per l'accesso di basso livello e controlla in /proc/mounts per definire il nome del dispositivo. E' stato sviluppato per Solaris, dove i nomi dei dispositivi sono allocati dinamicamente. Decrittazione DVD La decrittazione dei DVD viene fatta da libdvdcss. La modalita' puo' esser specificata attraverso la variabile d'ambiente DVDCSS_METHOD, vedi la pagina di manuale per i dettagli. Warning: You can only set the region 5 times. I lettori DVD RPC-1 proteggono le impostazioni di zona solo via software. I lettori RPC-2 hanno invece una protezione hardware che permette solo 5 modifiche. Puo' esser necessario/consigliato aggiornare il firmware a RPC-1 se hai un lettore DVD RPC-2. Puoi provare a cercare aggiornamenti di firmware per il tuo lettore su internet, questo forum su firmware potrebbe essere un buon punto di partenza per la tua ricerca. Se non c'e' alcun aggiornamento di firmware disponibile per il tuo dispositivo, usa lo strumento regionset per impostare la zona del tuo lettore DVD (sotto Linux). Riproduzione VCD Per una lista completa delle opzioni disponibili per favore leggi la pagina man. La sintassi per riprodurre un Video CD (VCD) normale e' la seguente: mplayer vcd://<traccia> [-cdrom-device <dispositivo>] Esempio: mplayer vcd://2 -cdrom-device /dev/hdc Il dispositivo VCD di default e' /dev/cdrom. Se la tua impostazione e' diversa, crea un collegamento simbolico o indica il dispositivo giusto dalla riga comando con l'opzione . Perlomeno i lettori CD-ROM Plextor e alcuni Toshiba SCSI hanno prestazioni orribili leggendo i VCD. Questo perche' l'ioctl CDROMREADRAW non e' implementata appieno per questi lettori. Se hai una qualche conoscenza della programmazione SCSI, per favore aiutaci ad implementare un supporto SCSI generico per i VCD. Nel frattempo puoi estrarre i dati dal VCD con readvcd e riprodurre con MPlayer il file cosi' ricavato. Struttura VCD Un Video CD (VCD) e' fatto di settori CD-ROM XA, per es. tracce CD-ROM mode 2 form 1 e 2: La prima traccia e' in formato mode 2 form 2 il che significa che usa una correzione errori L2. La traccia contiene un filesystem ISO-9660 con 2048 byte/settore. Il filesystem contiene delle informazioni metadati VCD, cosi' come fermi-immagine spesso usati nei menu. I segmenti MPEG per i menu possono anche essere salvati nella prima traccia, ma gli MPEG devono essere spezzettati in una serie di blocchi di 150 settori. Il filesystem ISO-9660 puo' contenere altri file o programmi che non sono essenziali per le operazioni VCD. Le seconde e rimanenti tracce spesso sono tracce MPEG (filmato) di basso livello di 2324 byte/settore, contenenti un pacchetto dati MPEG PS per settore. Queste sono in formato mode 2 form 1, cosi' da poter archiviare piu' dati per settore con la perdita di qualche correzione di errore. E' anche valido avere tracce CD-DA in un VCD dopo la prima traccia. In alcuni sistemi operativi c'e' qualche trucchetto che fa apparire queste tracce non ISO-9660 in un filesystem. In altri sistemi operativi come GNU/Linux non e' (ancora) cosi'. Qui i dati MPEG non possono venir montati. Siccome molti film sono dentro questo tipo di tracce, dovresti provare prima . Ci sono dischi VCD senza la prima traccia (traccia singola e proprio nessun filesystem). Essi sono comunque riproducibili, ma non possono essere montati. La definizione dello standard VCD viene chiamato il "White Book" Philips, e non e' disponibile on-line visto che deve essere acquistato da Philips. Informazioni piu' dettagliate sui Video CD si possono trovare nella documentazione di vcdimager. Riguardo i file .DAT Il file .DAT da ~600MB visibile sulla prima traccia del filsystem VCD montato non e' un vero file! Viene anche detto "ISO gateway", creato per permettere a Windows di gestire tali tracce (Windows non permette alle applicazioni alcun accesso di basso livello ai dispositivi). Sotto Linux non puoi' copiare o riprodurre questi file (contengono spazzatura). Sotto Windows e' possibile che il driver iso9660 emuli la lettura a basso livello delle tracce nel file. Per riprodurre un file .DAT ti serve il driver per il kernel che si puo' trovare nella versione per Linux di PowerDVD. Esso ha un driver modificato per il filesystem iso9660 (vcdfs/isofs-2.4.X.o), che e' in grado di emulare le tracce di basso livello attraverso quel file fantasma .DAT. Se monti il disco usando il loro driver, puoi poi copiare e anche riprodurre i file .DAT con MPlayer. Ma non funzionera' col driver iso9660 standard del kernel Linux! Usa invece . Alternative per copiare i VCD sono il nuovo driver del kernel cdfs (non incluso nel kernel ufficiale) che mostra le sessioni dei CD come file immagine e cdrdao, un'applicazione per copiare/fare il dump di CD bit-per-bit.