# Dispositivi di uscita video

## Impostare gli MTRR

Si consiglia vivamente di controllare che i registri MTRR siano impostati correttamente, al fine di migliorare molto le prestazioni.

Fai un `cat /proc/mtrr`:

    --($:~)-- cat /proc/mtrr
    reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
    reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

E' giusto, mostra la mia Matrox G400 con 16MB di memoria. L'ho fatto da XFree 4.x.x, che imposta i registri MTRR automaticamente.

Se non ha funzionato, devi farlo a mano. Per prima cosa, devi trovare l'indirizzo di base. Hai 3 modi per trovarlo:

1. dai messaggi di avvio di X11, per esempio:

       (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
       (--) SVGA: Linear framebuffer at 0xD8000000

2. da `/proc/pci` (usa il comando `lspci -v`):

       01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
       Memory at d8000000 (32-bit, prefetchable)

3. dai messaggi del driver del kernel mga_vid (usa `dmesg`):

       mga_mem_base = d8000000

Ora troviamo la dimensione della memoria. Questo è molto facile, converti semplicemente la video RAM in esadecimale, o usa questa tabella:

1 MB | 0x100000
2 MB | 0x200000
4 MB | 0x400000
8 MB | 0x800000
16 MB | 0x1000000
32 MB | 0x2000000

Ora che sai l'indirizzo di base e la dimensione della memoria, impostiamo i registri MTRR! Per esempio, per la scheda Matrox suddetta (`base=0xd8000000`) con 32MB di ram (`size=0x2000000`) esegui semplicemente:

    echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Non tutte le CPU hanno gli MTRR. Per esempio le CPU K6-2 più vecchie (intorno ai 266MHz, stepping 0) non hanno degli MTRR, ma gli stepping 12 invece sì (esegui `cat /proc/cpuinfo` per verificarlo).

## Xv

In XFree86 4.0.2 o successivi, puoi utilizzare le funzioni YUV hardware della tua scheda usando l'estensione XVideo. Questo è quello che fa l'opzione `-vo xv`. Inoltre, il driver supporta l'impostazione di luminosità/contrasto/tonalità/etc (a meno che tu non usi il vecchio e lento codec DirectShow DivX, che le supporta ovunque), vedi la pagina man.

In order to make this work, be sure to check the following: Per far sì che funzioni, assicurati di controllare le seguenti:

1. Che tu usi XFree86 4.0.2 o superiore (le versioni precedenti non hanno XVideo)

2. Che la tua scheda supporti l'accelerazione hardware (le schede moderne la supportano)

3. Che X carichi l'estensione XVideo, è un qualcosa del genere:

       (II) Loading extension XVideo

   in `/var/log/XFree86.0.log`

   Questo carica solo l'estensione per XFree86. In una buona installazione viene sempre caricata, e non significa che il supporto per l'XVideo della scheda sia presente!

4. Che la tua scheda abbia il supporto Xv sotto Linux. Per controllare, prova con `xvinfo`, è parte della distribuzione di XFree86. Dovrebbe mostrarti un lungo testo, simile al seguente:

       X-Video Extension version 2.2
       screen #0
         Adaptor #0: "Savage Streams Engine"
           number of ports: 1
           port base: 43
           operations supported: PutImage
           supported visuals:
             depth 16, visualID 0x22
             depth 16, visualID 0x23
           number of attributes: 5
       (...)
           Number of image formats: 7
             id: 0x32595559 (YUY2)
               guid: 59555932-0000-0010-8000-00aa00389b71
               bits per pixel: 16
               number of planes: 1
               type: YUV (packed)
             id: 0x32315659 (YV12)
               guid: 59563132-0000-0010-8000-00aa00389b71
               bits per pixel: 12
               number of planes: 3
               type: YUV (planar)
       (...etc...)

   Deve supportare i formati pixel YUY2 packed e YV12 planar per poter essere utilizzabile con MPlayer.

5. E infine, controlla che MPlayer sia stato compilato col supporto per 'xv'. Lancia un `mplayer -vo help | grep xv` . Se il supporto per 'xv' è compilato, dovrebbe uscire una linea come la seguente:

         xv      X11/Xv

### Schede 3dfx

I vecchi driver 3dfx avevano notoriamente dei problemi con l'accelerazione XVideo, non erano compatibili con gli spazi colore YV12 e YUY2. Verifica di avere XFree86 4.2.0 o superiore, può gestire YV12 e YUY2, mentre le versioni precedenti, 4.1.0 incluso, vanno in crash con YV12. Se hai degli strani risultati usando `-vo xv`, prova SDL (anch'essa ha XVideo) e vedi se aiuta. Controlla la sezione su SDL per i dettagli.

OPPURE, prova il NUOVO driver `-vo tdfxfb`! Vedi la sezione tdfxfb

### Schede S3

Le S3 Savage3D dovrebbero funzionare bene, ma per le Savage4, usa XFree86 4.0.3 o superiore (nel caso tu abbia problemi di immagini, prova a 16bpp). Per le S3 Virge invece: c'è il supporto per xv, ma la scheda in sé è molto lenta, per cui ti conviene venderla.

Non c'è un driver framebuffer nativo per le schede S3 Virge simile a tdfxfb. Configura il tuo framebuffer (per es. aggiungi "`vga=792 video=vesa:mtrr`" alla riga di avvio del kernel) e usa `-vo s3fb` (`-vf yuy2` e `-dr` aiutano).

Non è ben chiaro il perché i modelli Savage non abbiano il supporto YV12 e facciano la conversione con il driver (lento). Se pensi sia colpa della scheda, cerca un driver più recente, o chiedi gentilmente di un driver abilitato MMX/3DNow! sulla mailing list MPlayer-users.

### Schede nVidia

nVidia non è sempre una scelta molto buona sotto Linux... Il driver open-source di XFree86 supporta la maggior parte di queste schede, ma in alcuni casi, dovrai usare il driver proprietario a sorgenti chiusi di nVidia, disponibile sul sito nVidia. Ti servirà sempre questo driver anche se vuoi l'accelerazione 3D.

Le schede Riva128 non hanno il supporto XVideo con il driver nVidia di XFree86 :( Lamentati con nVidia.

Tuttavia, MPlayer contiene un driver VIDIX per la maggior parte delle schede nVidia. Attualmente è a livello di sviluppo beta e ha alcuni problemi. Per ulteriori informazioni, vedi la sezione VIDIX nVidia.

### Schede ATI

Il driver GATOS (che dovresti usare a meno che tu non abbia una Rage128 o una Radeon) di default ha il VSYNC abilitato. Ciò significa che la velocità di decodifica (!) è sincronizzata alla frequenza di aggiornamento del monitor. Se la riproduzione ti pare lenta, prova a disabilitare in qualche modo VSYNC, o ad impostare la frequenza di aggiornamento a n*(fps del film) Hz.

Read the VIDIX section. Radeon VE - se ti serve X, per questa scheda usa XFree86 4.2.0 o superiore. Il TV out non è supportato. Ovviamente con MPlayer puoi felicemente avere un display accelerato, con o senza l'uscita TV, e non servono librerie né X. Leggi la sezione VIDIX.

### Schede NeoMagic

Queste schede si possono trovare in molti portatili. Devi usare XFree86 4.3.0 o superiore, o alternativamente usare i driver con Xv di Stefan Seyfried. Scegli semplicemente quello che ti serve in base alla tua versione di XFree86.

XFree86 4.3.0 include il supporto per Xv, caomunque Bohdan Horst ha postato una piccola patch ai sorgenti di XFree86 che velocizza fino a quattro volte le operazioni sul framebuffer (quindi XVideo). La patch è stata poi incorporata in XFree86 CVS e dovrebbe esserci nei rilasci successivi al 4.3.0.

Per permettere la riproduzione di contenuti della dimensione DVD, modifica il tuo XF86Config in questo modo:

    Section "Device"
        [...]
        Driver "neomagic"
        Option "OverlayMem" "829440"
        [...]
    EndSection

### Schede Trident

Se vuoi usare Xv con una scheda Trident, assunto il fatto che con 4.1.0 non funziona, intalla Xfree 4.2.0. Il 4.2.0 aggiunge il supporto per Xv a schermo intero con la scheda Cyberblade XP.

Alternativamente, MPlayer contiene un driver VIDIX per le schede Cyberblade/i1.

### Schede Kyro/PowerVR

Se vuoi usare Xv con una scheda basata su Kyro (per esempio la Hercules Prophet 4000XT), dovresti scaricare i driver dal sito di PowerVR.

## DGA

PREAMBOLO

Questa documento cerca di spiegare in poche parole cosa sia DGA e cosa possa fare (e cosa no) il driver di uscita video DGA di MPlayer.

COS'E' DGA

DGA è il nome breve di Direct Graphics Access (accesso grafico diretto) ed è un modo per fa sì che un programma scavalchi l'X server e modifichi direttamente la memoria del framebuffer. In termini tecnici la memoria del framebuffer viene rimappata nello spazio di memoria del tuo processo. Questo è permesso dal kernel solo se hai provilegi di superutente. Puoi averli o autenticandoti come root o impostando il bit SUID sull'eseguibile di MPlayer (sconsigliato).

Ci sono due versioni di DGA: DGA1 usato da XFree 3.x.x e DGA2 che è stato introdotto con XFree 4.0.1.

DGA1 fornisce solamente accesso diretto al framebuffer come descritto sopra. Per modificare la risoluzione del segnale video devi affidarti all'estensione XVidMode.

DGA2 include le funzionalità dell'estensione XVidMode e inoltre permette la modifica della profondità di colore del display. Così, anche se stai facendo girare un X server con profondità di 32 bit, puoi passare a una di 15 e viceversa.

Tuttavia DGA ha dei punti deboli. Sembra sia in qualche modo dipendente dal chip grafico utilizzato e dall'implementazione del driver video dell'X server che controlla tale chip. Per cui non funziona su tutti i sistemi...

INSTALLARE IL SUPPORTO PER DGA IN MPLAYER

Per prima cosa assicurati che X carichi l'estensione DGA, guarda in `/var/log/XFree86.0.log`:

    (II) Loading extension XFree86-DGA

Attenzione, si consiglia vivamente XFree86 4.0.x o superiore! Il driver DGA di MPlayer viene rilevato automaticamente da `./configure`, ovvero puoi forzarlo con `--enable-dga`.

Se il driver non è riuscito a reimpostare una risoluzione inferiore, fai delle prove con le opzioni `-vm` (solo con X 3.3.x), `-fs`, `-bpp`, `-zoom` per trovare una modalità video in cui ci stia il film. Per ora non c'è un convertitore :(

Diventa root. A DGA serve l'accesso da root per essere in grado di scrivere direttamente sulla memoria video. Se vuoi eseguirlo come utente, allora installa MPlayer SUID root:

    chown root /usr/local/bin/mplayer
    chmod 750 /usr/local/bin/mplayer
    chmod +s /usr/local/bin/mplayer

Ora funziona anche da utente normale.

Rischi di sicurezza

Questo porta un grosso rischio di sicurezza! Non farlo mai su un server o su un computer che può essere utilizzato da altre persone, perché si possono ottenere privilegi di root attraverso MPlayer SUID root.

Ora usa l'opzione `-vo dga`, e sei a cavallo! (speralo:) Potresti anche provare se ti funziona l'opzione `-vo sdl:driver=dga`! E' molto più veloce!

MODIFICARE LA RISOLUZIONE

Il driver DGA permette la modifica della risoluzione del segnale di uscita. Questo evita la necessità di eseguire un (lento) ridimensionamento software e allo stesso tempo fornisce un'immagine a schermo pieno. Idealmente dovrebbe ridimensionarsi alla risoluzione precisa (rispettando il rapporto di aspetto) dei dati video, ma l'X server permette solo di impostare le risoluzioni precedentemente definite in `/etc/X11/XF86Config` (`/etc/X11/XF86Config-4` per XFree 4.X.X). Queste ultime sono conosciute come "modelines" e dipendono dalle potenzialità del tuo hardware video. Il server X legge questo file di configurazione all'avvio e disabilita le modelines incompatibili col tuo hardware. Puoi scoprire quali modalità ti restano attraverso il file di log di X11. Si può trovare qui: `/var/log/XFree86.0.log`.

Queste modalità si sa che funzionano correttamente con un chip Riva128, usando il driver nv.o del server X.

    Section "Modes"
      Identifier "Modes[0]"
      Modeline "800x600"  40     800 840 968 1056  600 601 605 628
      Modeline "712x600"  35.0   712 740 850 900   400 410 412 425
      Modeline "640x480"  25.175 640 664 760 800   480 491 493 525
      Modeline "400x300"  20     400 416 480 528   300 301 303 314 Doublescan
      Modeline "352x288"  25.10  352 368 416 432   288 296 290 310
      Modeline "352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
      Modeline "320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
    EndSection

DGA & MPLAYER

DGA is used in two places with MPlayer: The SDL driver can be made to make use of it (`-vo sdl:driver=dga`) and within the DGA driver (`-vo dga`). The above said is true for both; in the following sections I'll explain how the DGA driver for MPlayer works. DGA viene usato con MPlayer in due posti: può essere usato attraverso il driver SDL (`-vo sdl:driver=dga`) e con il driver DGA (`-vo dga`). Quanto detto sopra è valido per entrambi; nei paragrafi seguenti viene spiegato come il driver DGA funziona per MPlayer.

CARATTERISTICHE

Il driver DGA viene utilizzato specificando `-vo dga` sulla riga comando. Il comportamento di default è di passare ad una risoluzione il più vicino possibile a quella originaria del video. Ignora volutamente le opzioni `-vm` e `-fs` (abilitazione ridimensionamento video e schermo intero) - cerca sempre di coprire la più vasta area possibile dello schermo reimpostando la modalità video, evitando così di sprecare cicli della CPU per ridimensionare l'immagine. Se la modalità video selezionata non ti piace, puoi forzarlo a scegliere la modalità più prossima alla risoluzione specificata con `-x` e `-y`. Impostando l'opzione `-v`, il driver DGA emetterà, tra una sacco ci altre cose, un'elenco delle risoluzioni supportate dal tuo file `XF86Config`. Se hai DGA2, puoi anche forzarlo ad utilizzare una data profondità usando l'opzione `-bpp`. Profondità valide sono 15, 16, 24 e 32. Se queste profondità siano supportate nativamente oppure se debba venir effettuata una conversione (eventualmente lenta), dipende dal tuo hardware.

Se dovessi essere abbastanza fortunato da avere sufficiente memoria fuori dalla visualizzazione per poterci far stare un'immagine intera, il driver DGA userà un buffering doppio, fornendo una riproduzione più fluida. Ti dirà quando il doppio buffering sarà abilitato o no.

"Doppio buffering" significa che il fotogramma successivo del video viene disegnato nella memoria fuori dello schermo, mentre il fotogramma corrente viene mostrato. Quando il fotogramma successivo è pronto, il chip grafico rivece solo l'indirizzo in memoria del nuovo fotogramma e semplicemente prende da là i dati da mostrare. Nel frattempo l'altro buffer di memoria viene riempito con altri dati video.

Il doppio buffering può venir abilitato usando l'opzione `-double` e disabilitato con `-nodouble`. L'opzione attuale di default è di disabilitarlo. Usando il driver DGA, la visualizzazione dati su schermo (OSD, onscreen display) funziona solo con il doppio buffering abilitato. In ogni caso, abilitare il doppio buffering può portare una pesante penalizzazione della velocità (sul mio K6-II+ 525 usa un ulteriore 20% di tempo di CPU) in dipendenza dall'implementazione per DGA del tuo hardware.

PROBLEMI DI VELOCITA'

In generale, l'accesso DGA al framebuffer dovrebbe essere almeno veloce quanto utilizzare il driver X11, con il beneficio aggiunto di ottenere un'immagine a schermo intero. I valori di velocità percentuale emessi da MPlayer devono essere interpretati con un po' di attenzione, dato che per esempio con il driver X11 non includono il tempo usato dal server X per il disegno effettivo. Attacca un terminale sulla seriale della tua macchina e lancia `top` per vedere cosa stia davvero succedendo.

In linea di massima, l'aumento di velocità usando DGA rispetto all'utilizzo 'normale' di X11 dipende fortemente dalla tua scheda video e da quanto bene il relativo modulo del server X sia ottimizzato.

Se hai un sistema lento, è meglio usare una profondità di 15 o 16 bit, visto che richiedono solo la metà della banda di memoria di una visualizzazion a 32 bit.

Usare una profondità di 24 è una buona idea anche se la tua scheda supporta nativamente solo quella a 32 bit, dato che trasferisce il 25% dei dati in meno rispetto alla modalità a 32/32.

Ho visto alcuni file AVI riprodotti su Pentium MMX 266. Le CPU AMD K6-2 possono lavorare a 400 MHz e oltre.

PROBLEMI/BACHI CONOSCIUTI

Bene, secondo gli sviluppatori di XFree, DGA è quasi una bestia. Ti dicono che è meglio non usarla. La sua implementazione non è sempre perfetta con tutti i driver dei chip per XFree che ci sono là fuori.

- Con XFree 4.0.3 e `nv.o` c'è un baco che porta ad avere strani colori.

- I driver ATI hanno bisogno che la modalità sia reimpostata più di una volta dopo aver utilizzato DGA.

- Alcuni driver semplicemente non riescono a tornare alla risoluzione normale (Usa Ctrl Alt Keypad + e Ctrl Alt Keypad - per cambiarla manualmente).

- Alcuni driver semplicemente mostrano strani colori.

- Alcuni driver mentono riguardo alla memoria che mappano nello spazio indirizzi del processo, perciò vo_dga non usa il doppio buffering (SIS?).

- Alcuni driver sembra che falliscano nel fornire almeno una modalità valida. In questo caso il driver DGA andrà in crash raccontandoti di una modalità senza senso tipo 100000x100000 o qualcosa di simile.

- L'OSD funziona solo col doppio buffering abilitato (altrimenti sfarfalla).

## SDL

SDL (Simple Directmedia Layer) è praticamente un'interfaccia unificata audio/video. I programmi che la usano non sanno che driver video o audio SDL usi davvero, ma conoscono solo l'interfaccia. Per esempio un porting di Doom che usi SDL può girara sopra a svgalib, aalib, X, fbdev e altro, devi semplicemente specificare (per esempio) il driver video da usare attraverso la variabile d'ambiente `SDL_VIDEODRIVER`. In teoria, perlomeno.

Con MPlayer, usiamo la sua potenzialità di ridimensionamento via software del driver di X11 per le schede che non gestiscono XVideo, fino a quando non faremo il nostro (più veloce, più bello) ridimensionatore software. Abbiamo anche usato la sua uscita per aalib, ma ora abbiamo la nostra che è più comoda. La sua modalità per DGA era migliore della nostra fino a poco tempo fa. Hai capito, no? :)

Aiuta anche con alcuni driver/schede bacate, se il video è scattoso (non per problemi di sistema lento) oppure l'audio è saltellante.

L'uscita video SDL supporta la visualizzazione dei sottotitoli sotto al filmato ovvero sulla striscia nera (se presente).

## SVGAlib

INSTALLAZIONE

Affinché MPlayer compili il suo driver per SVGAlib (autorilevato, ma può essere forzato), devi installare svgalib e il suo pacchetto di sviluppo e non dimenticare di modificare `/etc/vga/libvga.config` in modo che corrisponda alla tua scheda e al tuo monitor.

Assicurati di non usare l'opzione `-fs`, dato che attiva l'utilizzo del ridimensionatore software, ed è lento. Se davvero ti serve, usa l'opzione `-sws 4`, che porterà una bassa qualità, ma è in qualche modo più veloce.

SUPPORTO PER EGA (4BPP)

SVGAlib include EGAlib, e MPlayer ha la possibilità di mostrare qualsiasi filmato in 16 colori, utilizzabile in queste situazioni:

- Scheda EGA con monitor EGA: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp

- Scheda EGA con monitor CGA: 320x200x4bpp, 640x200x4bpp

Il valore dei bpp (bit per pixel) deve essere impostato a 4 manualmente: `-bpp 4`

Il filmato probabilmente deve essere rimpicciolito per starci nella modalità EGA:

    -vf scale=640:350

or

    -vf scale=320:200

Per questo ci serve una funzione di ridimensionamento veloce ma a bassa qualità:

    -sws 4

Forse la correzione automatica dell'aspetto va disattivata:

    -noaspect

Secondo la mia esperienza la qualità migliore dell'immagine su schermi EGA può essere ottenuta diminuendo un pochino la luminosità: `-vf eq=-20:0`. Sul mio sistema ho anche bisogno di abbassare la frequenza audio, dato che era rovinata a 44kHz: `-srate 22050`.

Puoi abilitare l'OSD e i sottotitoli solo con il filtro `expand`, vedi la pagina man per i parametri precisi.

## Uscita su framebuffer (FBdev)

Se compilare l'uscita FBdev o no viene rilevato automaticamente da `./configure`. Leggi nei sorgenti del kernel la documentazione sul framebuffer (`Documentation/fb/*`) per ulteriori informazioni.

Se la tua scheda non supporta lo standard VBE 2.0 (vecchie schede ISA/PCI, come la S3 Trio64), ma solo VBE 1.2 (o precedente?): bene, c'è ancora VESAfb, ma ddovrai caricare SciTech Display Doctor (conosciuto precedentemente come UniVBE) prima di avviare Linux. Usa un disco di avvio DOS o qualcosa del genere. E non dimenticare di registrare il tuo UniVBE ;))

L'uscita su FBdev richiede principalmente alcuni parametri addizionali:

`-fb`

  specifica il dispositivo framebuffer da usare (default: `/dev/fb0`)

`-fbmode`

  nome della modalità da usare (come in `/etc/fb.modes`)

`-fbmodeconfig`

  file di configirazione delle modalità (default: `/etc/fb.modes`)

`-monitor-hfreq`
`-monitor-vfreq`
`-monitor-dotclock`

  valori importanti, vedi `example.conf`

Se vuoi passare a una modalità particolare, allora usa

    mplayer -vm -fbmode nome_modalità nomefile

- `-vm` da sola può scegliere la modalità più adatta da `/etc/fb.modes`. Può essere usata anche insieme con le opzioni `-x` e `-y`. L'opzione `-flip` è supportata solo se il formato pixel del film corrisponde al formato pixel della modalità video. Stai attento al valore di bpp, il driver fbdev cerca di usare prima quello corrente, poi quello che indichi tramite l'opzione `-bpp` option.

- l'opzione `-zoom` non è supportata (usa `-vf scale`). Non puoi usare modalità a 8bbp (o meno).

- Probabilmente vuoi disabilitare il cursore:

      echo -e '\033[?25l'

  o

      setterm -cursor off

  e il salvaschermo:

      setterm -blank 0

  Per riabilitare il cursore:

      echo -e '\033[?25h'

  o

      setterm -cursor on

La modifica della modalità video di FBdev non funziona con il framebuffer VESA, e non chiederla, visto che non è una limitazione di MPlayer.

## Framebuffer Matrox (mga_vid)

mga_vid è un'incrocio di un driver di uscita video e di un modulo del kernel, che utilizza il ridimensionatore e l'overlay video delle Matrox G200/G400/G450/G550 per effettuare una conversione dello spazio colore YUV->RGB e un ridimensionamento video arbitrario. mga_vid ha un supporto hardware per VSYNC con triplo buffering. Funziona sia in una console su framebuffer che dentro X, ma solo con Linux 2.4.x.

Per una versione del driver per Linux 2.6.x controlla .

Installazione:

- Per usarlo, devi innanzitutto compilare `mga_vid.o`:

      cd drivers
      make

- Poi esegui (come root)

      make install

  che dovrebbe installare il modulo e creare per te il nodo del dispositivo. Carica il driver con

      insmod mga_vid.o

- Dovresti verificare il rilevamento della dimensione della memoria usando il comando `dmesg`. Se è errato, usa l'opzione `mga_ram_size` (prima fai `rmmod mga_vid`), indicando in MB la dimensione della memoria della scheda:

      insmod mga_vid.o mga_ram_size=16

- Per far sì che venga caricato/scaricato quando serve, prima inserisci la riga seguente alla fine di `/etc/modules.conf`:

      alias char-major-178 mga_vid

- Ora devi (ri)compilare MPlayer, `./configure` rileverà `/dev/mga_vid` e compilerà il driver 'mga'. Si potrà usare da MPlayer con `-vo mga` se sei su una console matroxfb, oppure `-vo xmga` se sei sotto XFree86 3.x.x o 4.x.x.

Il driver mga_vid collabora con Xv.

Si può leggere il file del dispositivo `/dev/mga_vid` per alcune informazioni, per esempio facendo

    cat /dev/mga_vid

e ci si può scrivere per modificare la luminosità:

    echo "brightness=120" > /dev/mga_vid

Nella stessa directory c'è un'applicazione di test che si chiama `mga_vid_test`. Se tutto funziona bene, dovrebbe disegnare immagini di 256x256 sullo schermo.

## Supporto YUV per 3Dfx

Questo driver usa il driver tdfx del kernel per il framebuffer per riprodurre filmati con accelerazione YUV. Ti serve un kernel con supporto per tdfxfb e ricompilare con

    ./configure --enable-tdfxfb

## tdfx_vid

Questo è un'incrocio di un driver di uscita video e di un modulo del kernel, simile a mga_vid. Ti serve un kernel 2.4.x con il driver agpgart, visto che tdfx_vid usa AGP. Passa `--enable-tdfxfb` a `configure` per compilare il driver di uscita video e compila il module del kernel con le istruzioni seguenti.

Installare il modulo del kernel tdfx_vid.o:

- Compila `tdfx_vid.o`:

      cd drivers
      make

- Poi esegui (come root)

      make install

  che dovrebbe installare il modulo e creare per te il nodo del dispositivo. Carica il driver con

      insmod tdfx_vid.o

- Per far sì che venga caricato/scaricato quando serve, prima inserisci la riga seguente alla fine di `/etc/modules.conf`:

      alias char-major-178 tdfx_vid

Nella stessa directory c'è un'applicazione di test che si chiama `tdfx_vid_test`. Se tutto funziona bene, dovrebbe fornire alcune informazioni utili.

## Uscita OpenGL

MPlayer supporta la riproduzione di filmati usando OpenGL, ma se se la tua piattaforma/driver supportano xv come è il caso di un PC con Linux, allora usa xv, le prestazioni OpenGL sono pesantemente peggiori. Se hai un'implementazione di X11 senza xv, OpenGL è una valida alternativa.

Sfortunatamente non tutti i driver supportano questa caratteristica. I driver Utah-GLX (per XFree86 3.3.6) la supportano per tutte le schede. Vedi per dettagli su come installarli.

XFree86(DRI) 4.0.3 or later supports OpenGL with Matrox and Radeon cards, 4.2.0 or later supports Rage128. Vedi for download and installation instructions. XFree86(DRI) 4.0.3 o successivi supportano OpenGL con schede Matrox e Radeon, 4.2.0 o successivi supportano le Rage128. Leggi su le istruzioni per scaricarli ed installare.

Un consiglio per i nostri utenti: l'uscita video GL può essere usata per ottenere un'uscita sincronizzata su vsync. Devi impostare una variabile d'ambiente (perlomeno con nVidia):

`export __GL_SYNC_TO_VBLANK=1`

## AAlib – Visualizzazione in modalità testuale

AAlib è una libreria per mostrare elementi grafici in modalità testuale, usando un potente renderizzatore ASCII. Ci sono valanghe di programmi che la utilizzano, come Doom, Quake, etc. MPlayer ne include un driver facilmente utilizzabile. Se `./configure` trova AAlib installata, il driver di uscita video per aalib verrà compilato.

Puoi usare alcune chiavi nella finestra AA per modificare le opzioni di renderizzazione:

Chiave | Azione
--- | ---
1 | diminuisce il contrasto
2 | aumenta il contrasto
3 | diminuisce la luminosità
4 | aumenta la luminosità
5 | abilita/disabilita il fast rendering
6 | imposta la modalità di dithering (nessuna, distribuzione di errore, Floyd Steinberg)
7 | inverte l'immagine
8 | passa tra i controlli di aa e quelli di MPlayer

Si possono usare le seguenti opzioni sulla riga di comando:

`-aaosdcolor=V`

  modifica il colore OSD

`-aasubcolor=V`

  modifica il colore dei sottitoli

  dove V può essere: `0` (normale), `1` (scuro), `2` (grassetto), `3` (font grassetto), `4` (invertito), `5` (speciale).

AAlib di suo fornisce un po' di opzioni. Di seguito alcune importanti:

`-aadriver`

  Impostra il driver aa preferito (X11, curses, Linux).

`-aaextended`

  Usa tutti e 256 i caratteri.

`-aaeight`

  Usa ASCII a otto bit.

`-aahelp`

  Lista tutte le opzioni per aalib.

La renderizzazione è molto pesante per la CPU, specialmente usando AA-on-X (usando aalib su X), ed è più leggera su una console standard, senza framebuffer. Usa SVGATextMode per impostare una modalità a molti caratteri, poi divertiti! (le schede Hercules con seconda uscita sono mitiche :)) (ma IMHO puoi usare l'opzione `-vf 1bpp` per avere grafica su hgafb:)

Usa l'opzione `-framedrop` se il tuo computer non è abbastanza veloce da renderizzare tutti i fotogrammi!

Riproducendo su un terminale, avrai migliore velocità e qualità usando il driver Linux, non ncurses (`-aadriver linux`). Ma devi anche avere accesso a `/dev/vcsa<terminale>`! Questo non è rilevato automaticamente da aalib, ma vo_aa cerca di trovare la modalità migliore. Leggi per altri consigli di impostazioni.

## libcaca – Libreria Color ASCII Art

La libreria libcaca è una libreria grafica che emette testo al posto di pixel, indi può funzionare su schede video più vecchie o su terminali di testo. Non è dissimile dalla famosa libreria AAlib. libcaca ha bisogno di un terminale per poter funzionare, perciò dovrebbe funzionare su tutti i sistemi Unix (incluso Mac OS X) usando la libreria slang ovvero la libreria ncurses, sotto DOS usando la libreria conio.h, e nei sistemi Windows usando slang o ncurses (tramite l'emulazione Cygwin) oppure conio.h. Se `./configure` rileva la presenza di libcaca, il driver di uscita video per caca verrà compilato.

Le differenze rispetto ad AAlib sono le seguenti:

- 16 colori disponibili per l'emissione a caratteri (256 coppie di colori)

- dithering del colore dell'immagine

Ma libcaca ha anche le seguenti limitazioni:

- nessun supporto per luminosià, contrasto, gamma

Puoi utilizzare alcuni tasti nella finestra caca per modificare le opzioni di renderizzazione:

Chiave | Azione
--- | ---
d | Attiva/disattiva il metodo di dithering di libcaca.
a | Attiva/disattiva l'antialias di libcaca.
b | Attiva/disattiva lo sfondo di libcaca.

libcaca terrà anche conto di alcune variabili d'ambiente:

`CACA_DRIVER`

  Imposta il driver caca richiesto. Per es. ncurses, slang, x11.

`CACA_GEOMETRY (solo X11)`

  Specifica il numero di righe e colonne. Per es. 128x50.

`CACA_FONT (solo X11)`

  Specifica il font da usare. Per es. fixed, nexus.

Usa l'opzione `-framedrop` se il tuo computer non è abbastanza veloce per renderizzare tutti i fotogrammi.

## VESA - uscita attraverso il VESA BIOS

Questo driver è stato progettato ed introdotto come un driver generico per qualsiasi scheda video che abbia un BIOS compatibile con VESA VBE 2.0. Un altro vantaggio di questo driver è che cerca di attivare l'uscita TV. La VESA BIOS EXTENSION (VBE) Versione 3.0 Data: 16 settembre 1998 (pagina 70) dice:

> Dual-Controller Designs

> VBE 3.0 supports the dual-controller design by assuming that since both controllers are typically provided by the same OEM, under control of a single BIOS ROM on the same graphics card, it is possible to hide the fact that two controllers are indeed present from the application. This has the limitation of preventing simultaneous use of the independent controllers, but allows applications released before VBE 3.0 to operate normally. The VBE Function 00h (Return Controller Information) returns the combined information of both controllers, including the combined list of available modes. When the application selects a mode, the appropriate controller is activated. Each of the remaining VBE functions then operates on the active controller.

Perciò usando questo driver hai qualche possibilità di far funzionare l'uscita TV (si presume che spesso l'uscita TV sia almeno un'uscita a sè stante).

VANTAGGI

- Puoi riuscire a guardare film anche se Linux non riconosce il tuo hardware grafico.

- Non ti serve avere alcuna cosa relativa alla grafica (come X11 (AKA XFree86), fbdev e così via) sul tuo Linux. Questo driver può venir utilizzato dalla modalità testo.

- Hai qualche possibilità di avere l'uscita TV funzionante (per le schede ATI perlomeno è così).

- Questo driver chiama la funzione `int 10h` percui non è un emulatore - fa riferimento a cose reali del BIOS reale in modalità reale (attualmente in modalità vm86).

- Con esso puoi usare VIDIX, potendo ottenere contemporaneamente un'uscita video accelerata e e l'uscita TV! (consigliato per schede ATI)

- Se hai VESA VBE 3.0+ e hai specificato in qualche dove `monitor-hfreq, monitor-vfreq, monitor-dotclock` (nel file di configurazione o dalla riga comando) otterrai la massima frequenza di aggiornamento possibile (usando formule generiche di temporizzazione). Per abilitare questa funzionalità devi specificare tutte le opzioni per il tuo monitor.

SVANTAGGI

- Funziona solo su sistemi x86.

- Può essere usato solo da root.

- Attualmente è disponibile solo per Linux.

Non usare questo driver con GCC 2.96! Non funzionerà!

OPZIONI DELLA RIGA COMANDO DISPONIBILI PER VESA

`-vo vesa:opzioni`

  attualmente riconosciute: `dga` per forzare la modalità dga e `nodga` per disabilitarla. In modalità dga puoi abilitare il doppio buffering con l'opzione `-double`. Nota: puoi omettere questi parametri per abilitare l'auto-rilevazione della modalità dga.

PROBLEMI CONOSCIUTI E SOLUZIONI

- Se hai dei font NLS installati sulla tua macchina Linux ed utilizzi il driver VESA in modalità testo, allora dopo essere uscito daMPlayer avrai i font ROM caricati al posto di quelli locali. Puoi ricaricare i font locali usando lo strumento `setsysfont` per Mandrake/Mandriva, ad esempio (consiglio: lo stesso strumento viene usato per la localizzazione di fbdev).

- Alcuni driver grafici per Linux non modificano nella memoria DOS la modalità BIOS attiva. Per cui se hai questo problema - usa sempre il driver VESA dalla modalità testo. Altrimenti verrà comunque attivata la modalità testo (#03) e dovrai riavviare il tuo computer.

- Spesso dopo aver dismesso il driver VESA ottieni uno schermo nero. Per riportare il tuo schermo allo stato originario - salta semplicemente ad unìaltra console (premendo Alt F<x>) poi ritorna alla console precedente allo stesso modo.

- Per avere l'uscita TV funzionante devi avere il connettore TV collegato prima di avviare il tuo PC, visto che il BIOS video si inizializza solo una volta durante il passaggio POST.

## X11

Da evitare se possibile. Uscita su X11 (utilizza l'estensione della memoria condivisa), senza alcuna accelerazione hardware. Gestisce il ridimensionamento software (accelerato MMX/3DNow/SSE, ma sempre lento), usa le opzioni `-fs -zoom`. La maggior parte delle schede gestisce un ridimensionamento hardware, usa per queste l'uscita `-vo xv`, oppure `-vo xmga` per le schede Matrox.

Il problema è che i driver di molte schede non supportano l'accelerazione hardware sulla seconda uscita o TV. In quei casi, vedi delle finestre blu/verdi al posto del film. In questi casi torna utile questo driver, ma ti serve una CPU potente per effettuare il ridimensionamento software. Non usare il driver di uscita SDL + ridimensionamento software, ha una peggior qualità dell'immagine.

Il ridimensionamento software è molto lento, ti conviene piuttosto cambiare la modalità video. E' molto facile. Guarda le modeline della sezione DGA, e inseriscile nel tuo `XF86Config`.

- Se hai XFree86 4.x.x: usa l'opzione `-vm`. Passerà alla risoluzione che meglio si adatta al tuo film. Se non lo fa:

- With XFree86 3.x.x: you have to cycle through available resolutions Con XFree86 3.x.x: devi passare attraverso le risoluzioni disponibili con i tasti Ctrl Alt Keypad + e Ctrl Alt Keypad -.

Se non trovi le modalità che hai aggiunto, controlla l'emissione di XFree86. Alcuni driver non possono usare dei pixelclock che servono per modalità a bassa risoluzione.

## VIDIX

PREAMBOLO

VIDIX è un nome breve che sta per VIDeo Interface per *niX. VIDIX è stato progettato ed introdotto com un'interfaccia per driver veloci nello spazio utente, fornendo delle prestazioni video come quelle che fornisce mga_vid per le schede Matrox. E' anche molto portabile.

Quest'interfaccia è stata progettata come un tentativo di riunire le interfacce di accelerazione video già esistenti (conosciute come mga_vid, rage128_vid, radeon_vid, pm3_vid) in uno schema fissato. Fornisce un'interfaccia di alto livello a chip conosciuti come BES (BackEnd scalers) o OV (Video Overlays). Non fornisce un'interfaccia a basso livello a cose conosciute come server grafici (non voglio entrare in competizione con il gruppo di X11 per le modifiche alla modalità grafica). Per es. l'obiettivo principale di quest'intarfaccia è quello di velocizzare la riproduzione video.

USO

- Puoi usare un driver di uscita video a sé stante: `-vo xvidix`. Questo driver è stato sviluppato come un front-end tra X11 e la tecnologia VIDIX. Richiede l'X server e può funzionare solo dentro all'X server stesso. Nota che, visto che accede direttamente all'hardware e oltrepassa il driver X, le immagini memorizzate nella memoria della scheda video possono venir corrotte. Puoi evitarlo limitando la dimensione della memoria video usata da X con l'opzine "VideoRam" nella sezione device di XF86Config. Dovresti impostare tale opzione alla quantità di memoria della tua scheda meno 4MB. Se hai meno di 8MB di ram video, puoi usare invece l'opzione "XaaNoPixmapCache" nella sezione screen.

- C'è poi un driver VIDIX per la console: `-vo cvidix`. Questo richiede per la maggior parte delle schede un framebuffer inizializzato e funzionante (altrimenti incasinerai solamente lo schermo), e otterrai un effetto simile a `-vo mga` o `-vo fbdev`. Le schede nVidia tuttavia sono in grado di emettere video completamente grafico su vere console di testo. Vedi la sezione nvidia_vid per ulteriori informazioni. Per evitare il testo sui bordi e il cursore lampeggiante, prova qualcosa tipo

      setterm -cursor off > /dev/tty9

  (presumendo che tty9 non venga utilizzata) e poi passa a tty9. D'altro canto, `-colorkey 0` dovrebbe mostrarti il video sullo "sfondo", anche se questo dipende dal fatto che colorkey funzioni bene o no.

- Puoi usare un sotto-dispositivo VIDIX che sia stato applicato a vari driver di uscita video, così: `-vo vesa:vidix` (solo per Linux) e `-vo fbdev:vidix`.

In verità non conta quale driver di uscita video venga usato con VIDIX.

PREREQUISITI

- La scheda video dovrebbe essere in modalità grafica (tranne le schede nVidia con il driver di uscita `-vo cvidix`).

- Il driver di uscita video di MPlayer dovrebbe conoscere la modalità video attiva ed essere in grado di fornire al sotto-dispositivo VIDIX alcune caratteristiche video del server.

MODI DI UTILIZZO

Quando VIDIX viene usato come un sotto-dispositivo (`-vo vesa:vidix`) allora la configurazione della modalità video viene eseguita dal dispositivo di uscita video (vo_server, in breve). Perciò puoi passare sulla riga comando di MPlayer le stesse chiavi per vo_server. Inoltre accetta `-double` come un parametro globale (si consiglia di usare questa opzione con VIDIX almeno per le schede ATI). Come `-vo xvidix`, attualmente riconosce le seguenti opzioni: `-fs -zoom -x -y -double`.

Poi puoi specificare il driver VIDIX direttamente sulla riga comando come una terza sotto-opzione:

    mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi

o

    mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi

ma è pericoloso e non dovresti farlo. In questo caso il driver indicato verrà forzato e i risultati sono imprevedibili (potrebbe mandarti il computer in freeze). Dovresti farlo SOLO se sei assolutamente sicuro che funzionerà e MPlayer non lo farà automaticamente. Per favore dillo agli sviluppatori. Il modo corretto è utilizzare VIDIX senza argomenti per abilitare la rilevazione automatica del driver.

Visto che VIDIX richiede un accesso diretto all'hardware puoi sia eseguirlo come root, sia impostare il bit SUID sull'eseguibile di MPlayer. (Attenzione: questo è un rischio di sicurezza!) Alternativamente puoi usare uno modulo del kernel speciale, come questo:

- Scarica la versione di sviluppo di svgalib (per esempio la 1.9.17), OPPURE scarica una versione fatta da Alex appositamente per essere usata con MPlayer (non ha bisogno dei sorgenti di svgalib per la compilazione) da qui.

- Compila il modulo nella directory `svgalib_helper` (si trova dentro la directory `svgalib-1.9.17/kernel/` se hai scaricato i sorgenti dal sito di svgalib) e caricalo nel kernel.

- Per creare i dispositivi necessari nella directory `/dev`, esegui, come root,

      make device

  nella directory `svgalib_helper`.

- Sposta la directory `svgalib_helper` nella sotto-directory `vidix` nei sorgenti di MPlayer.

- Togli il commento prima della riga con CFLAGS che contiene "svgalib_helper" dal file `vidix/Makefile`.

- Ricompila.

### Schede ATI

Attualmente la maggior parte delle schede ATI è supportata nativamente, dalle Mach64 alle più recenti Radeon.

Ci sono due binari compilati: `radeon_vid` per le Radeon e `rage128_vid` per le schede Rage 128. Puoi forzare l'utilizzo di uno dei due, oppure lasciare che il sistema VIDIX provi tutti i driver disponibili.

### Schede Matrox

Le Matrox G200, G400, G450 and G550 sono state riportate come funzionanti.

Il driver supporta gli equalizzatori video e dovrebbe essere veloce quasi quanto il framebuffer Matrox.

### Schede Trident

C'è un driver disponibile per il chipset Trident Cyberblade/i1, che si può trovare sulle schede madri VIA Epia.

Il driver è scritto e mantenuto da Alastair M. Robinson.

### Schede 3DLabs

Anche se esiste un driver per i chip 3DLabs GLINT R3 e Permedia3, nessuno lo ha provato, perciò delle informazioni sono benvenute.

### Schede nVidia

Una caratteristica unica del driver nvidia_vid è la sua abilità nel mostrare video su di una semplice, pura, console di testo - senza alcun framebuffer o qualche magia di X. Per questo fine, dovremo usare il driver di uscita video `cvidix`, come mostrato nell'esempio che segue:

    mplayer -vo cvidix esempio.avi

### Schede SiS

Questo codice è davvero sperimentale, proprio come nvidia_vid.

E' stato testato su SiS 650/651/740 (i chipset più diffusi usati nelle versioni SiS dello "Shuttle XPC").

Si attendono resoconti!

## DirectFB

> "DirectFB is a graphics library which was designed with embedded systems in mind. It offers maximum hardware accelerated performance at a minimum of resource usage and overhead." - citazione da

Ometterò le caratteristiche di DirectFB da questa sezione.

Anche se MPlayer non è supportato come un "provider video" in DirectFB, questo driver di uscita video abiliterà la riproduzione video tramite DirectFB. Sarà - ovviamente - accelerata, la velocità di DirectFB sulla mia Matrox G400 è la stessa di XVideo.

Cerca sempre di utilizzare la versione più recente di DirectFB. Sulla riga comando puoi usare le opzioni di DirectFB, usando `-dfbopts`. La scelta del livello può essere fatta con il metodo del sotto-dispositivo, per es.: `-vo directfb:2` (il livello -1 è il default: autorilevazione)

## DirectFB/Matrox (dfbmga)

Leggi per favore la sezione principale di DirectFB per le informazioni generali.

Questo driver di uscita video abiliterà il CRTC2 (sulla seconda uscita) delle schede Matrox G400/G450/G550, mostrando il video independentemente rispetto alla prima uscita.

Ville Syrjala's ha un README e un HOWTO sul suo sito, che spiegano come far funzionare l'uscita TV DirectFB sulle schede Matrox.

La prima versione di DirectFB con cui siamo riusciti a farlo funzionare è la 0.9.17 (ha problemi, gli serve la patch surfacemanager dal sito suddetto). Portare il codice per CRTC2 in mga_vid è in progetto da anni, sono benvenute delle patch.

## Decodificatori MPEG

### Uscita e ingresso DVB

MPlayer supporta le schede con chipset DVB Siemens di produttori come Siemens, Technotrend, Galaxis o Hauppauge. I driver DVB più recenti sono disponibili sul sito di Linux TV. Se vuoi eseguire la transcodifica software dovresti avere almeno una CPU a 1GHz.

Configure dovrebbe rilevare la tua scheda DVB. Se non lo fa, forzalo con

    ./configure --enable-dvb

Se hai gli header ost in un percorso non standard, imposta il percorso con

    ./configure --with-extraincdir=directory sorgenti DVB/ost/include

Poi compila ed installa come al solito.

USO

La decodifica hardware di flussi contententi video MPEG-1/2 e/o audio MPEG puà essere effettuata con questo comando:

    mplayer -ao mpegpes -vo mpegpes file.mpg|vob

La decodfica di qualsiasi altro tipo di flusso video richiede la transcodifica in MPEG-1, indi è lenta a potrebbe non valerne la pena, specialmente se il tuo computer è lento. Si puà ottenere usando un comando come questo:

    mplayer -ao mpegpes -vo mpegpes tuofile.ext
    mplayer -ao mpegpes -vo mpegpes -vf expand tuofile.ext

Fai attenzione che le schede DVB supportano solo le altezze 288 e 576 per PAL oppure 240 e 480 per NTSC. Devi ridimensionare le altre altezze aggiungendo `scale=larghezza:altezza`, con la larghezza e l'altezza volute, all'opzione `-vf`. Le schede DVB accettano diverse larghezze, come 720, 704, 640, 512, 480, 352 etc. ed effettuano il ridimensionamento hardware sulla direzione orizzontale, perciò nella maggior parte deiu casi non ti serve ridimensionare in orizzontale. Per un MPEG-4 (DivX) a 512x384 (aspetto 4:3), prova:

    mplayer -ao mpegpes -vo mpegpes -vf scale=512:576

Se hai un film in widescreen e non vuoi ridimensionarlo ad altezza piena, puoi usare il filtro `expand=w:h` per aggiungere delle bande nere. Per guardare un MPEG-4 (DivX) a 640x384, prova:

    mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 file.avi

Se la tua CPU è troppo lenta per un MPEG-4 (DivX) intero a 720x576, prova a rimpicciolirlo:

    mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 file.avi

Se la velocità non migliora, prova a rimpicciolirlo anche in verticale:

    mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 file.avi

Per l'OSD e i sottotitoli usa la caratteristica OSD del filtro expand. Quindi, al posto di `expand=w:h` o `expand=w:h:x:y`, usa `expand=w:h:x:y:1` (il quinto parametro `:1` alla fine abiliterà il rendering dell'OSD). Potresti voler spostare leggermente verso l'alto l'immagine per ottenere una banda nera più ampia per i sottotitoli. Potresti anche voler spostare più in alto i sottotitoli, se sono al di fuori dello schermo della tua TV, usa l'opzione `-subpos <0-100>` (`-subpos 80` è una buona scelta).

Per poter riprodurre un film non a 25fps su una TV PAL ovvero con una CPU lenta, aggiungi l'opzione `-framedrop`.

Per mantenere il rapporto di aspetto dei file MPEG-4 (DivX) e ottenere i parametri ottimali per il ridimensionamento (ridimensionamento orizzontale hardware e verticale software mantenendo il giusto rapporto di aspetto), usa il nuovo filtro dvbscale:

    per una TV a  4:3: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
    per una TV a 16:9: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1

TV Digitale (modulo d'ingresso DVB)

Puoi usare la tua scheda TV per guardare la TV Digitale.

Dovresti avere installati i programmi `scan` e `szap/tzap/czap/azap`; essi sono inclusi nel pacchetto dei driver.

Verifica che i tuoi driver funzionino correttamente attraverso un programma tipo `dvbstream` (che è la base del modulo d'ingresso DVB).

Ora dovresti riempire un file `~/.mplayer/channels.conf`, con la sintassi accettata da `szap/tzap/czap/azap`, o fare in modo che `scan` lo riempia per te.

Se hai più di un tipo di scheda (per es. Satellitare, Terrestre, Via Cavo e ATSC) puoi salvare i tuoi file dei canali come `~/.mplayer/channels.conf.sat`, `~/.mplayer/channels.conf.ter`, `~/.mplayer/channels.conf.cbl`, e `~/.mplayer/channels.conf.atsc`, rispettivamente, per spingere implicitamente MPlayer ad usare questi file invece che `~/.mplayer/channels.conf`, e devi solamente specificare quale scheda usare.

Assicurati di avere solo canali in chiaro nel tuo file `channels.conf`, altrimenti MPlayer cercherà di saltare al canale visibile successivo, ma potrebbe impiegarci molto se ci fossero tanti canali criptati consecutivi.

Nei tuoi campi audio e video puoi usare una sintassi espansa: `...:pid[+pid]:...` (fino ad un massimo di 6 pid ciascuno); in questo caso MPlayer includerà nel flusso tutti i pid indicati, oltre al pid 0 (che contiene il PAT). Si consiglia di includere in ogni riga il pid PMT per il canale corrispondente (se conosciuto). Puoi anche specificare 8192, che seleziona tutti i pid su quella frequenza e puoi anche passare con TAB attraverso i programmi. Potrebbe aver bisogno di più banda, anche se le schede economiche passano sempre tutti canali al kernel, per cui non fa molta differenza per queste. Altri utilizzi possibili sono: pid televideo, seconda traccia audio, etc...

Se MPlayer si lamenta frequentemente di

    Troppi pacchetti video/audio nel buffer

oppure noti una desincronizzazione crescente tra l'audio e il video, prova ad usare il demuxer MPEG-TS di libavformat aggiungendo `-demuxer lavf -lavfdopts probesize=128` alla tua riga comando.

Per vedere il primo dei canali presenti nella tua lista, esegui

    mplayer dvb://

Se vuoi guardare un canale in particolare, come R1, esegui

    mplayer dvb://R1

Se hai più di una scheda puoi anche dover specificare il numero della scheda dove il canale si vede (per es. 2) con la sintassi:

    mplayer dvb://2@R1

Per cambiare canale premi i tasti h (successivo) e k (precedente), oppure usa il menu OSD.

Se il tuo `~/.mplayer/menu.conf` contiene una voce `<dvbsel>`, come quella nel file di esempio `etc/dvb-menu.conf` (che puoi usare per sovrascrivere `~/.mplayer/menu.conf`), il menu principale mostrerà una voce di sotto-menu che ti lascerà scegliere uno dei canali presenti nel tuo `channels.conf`, possibilmente preceduto da un menu con la lista delle schede disponibili, se ve ne è più di una utilizzabile da MPlayer.

Se vuoi salvare su disco un programma puoi usare

    mplayer -dumpfile r1.ts -dumpstream dvb://R1

Se vuoi registrarlo in un formato diverso (ri-codificandolo) puoi invece lanciare un comando come

    mencoder -o r1.avi -ovc xvid -xvidencopts bitrate=800 \
        -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1

Leggi la pagina man per una lista di opzioni che puoi passare al modulo di ingresso DVB.

FUTURO

Se hai domande o vuoi ricevere gli annunci di nuove caratteristiche e vuoi partecipare a discussioni su questo argomento, iscriviti alla nostra mailing list MPlayer-DVB. Per favore tieni presente che la lingua della lista è l'inglese.

In futuro puoi aspettarti la possibilità di mostrare OSD e sottotitoli usando la caratteristica nativa delle schede DVB, così come una riproduzione più fluida di film non a 25fps e transcodifica in tempo reale tra MPEG-2 e MPEG-4 (decompressione parziale).

### DXR2

MPlayer fornisce una riproduzione accelerata hardware con la scheda Creative DXR2.

Prima di tutto ti serviranno dei driver DXR2 correttamente installati. Puoi trovare i driver e le istruzioni per l'installazione sul sito DXR2 Resource Center.

USO

`-vo dxr2`

  Abilita l'uscita TV.

`-vo dxr2:x11` or `-vo dxr2:xv`

  Abilita in X11 l'uscita su Overlay.

`-dxr2 <option1:option2:...>`

  Questa opzione viene usata per controllare il driver DXR2.

Il chipset di overlay usato sulla DXR2 ha una qualità piuttosto bassa, ma le impostazioni di default dovrebbero funzionare per chiunque. L'OSD potrebbe essre utilizzabile con l'overlay (non sulla TV) disegnandolo nella chiave colore. Con le impostazioni di default della chiave colore puoi ottenere risultati variabili, spesso vedrai la chiave colore attorno ai caratteri o qualche altro effetto strambo. Ma se imposti correttamente le opzioni della chiave colore dovresti ricavare dei risultati accettabili.

Per favore vedi nella pagina man le opzioni disponibili.

### DXR3/Hollywood+

MPlayer fornisce una riproduzione accelerata con le schede Creative DXR3 e Sigma Designs Hollywood Plus. Queste schede usano entrambe il chip em8300 di decodifica MPEG di Sigma Designs.

Prima di tutto ti serviranno dei driver DXR3/H+ correttamente installati, versione 0.12.0 o successiva. Puoi trovare i driver e le istruzioni per l'installazione sul sito DXR3 & Hollywood Plus per Linux. `configure` dovrebbe rilevare automaticamente la tua scheda, la compilazione dovrebbe concludersi senza problemi.

USO

`-vo dxr3:prebuf:sync:norm=x:dispositivo`

  `overlay` attiva l'overlay (sovrapposizione) invece che l'uscita TV. Per funzionare richiede un'impostazione dell'overlay adeguatamente configurata. Il modo più semplice di configurare l'overlay è eseguire prima autocal. Poi lanciare mplayer con l'uscita dxr3 e, senza l'overlay abilitato, eseguire dxr3view. In dxr3view puoi giocherellare con le impostazioni dell'overlay e vederne il risultato in tempo reale, forse questa funzionalità sarà utilizzabile in futueo dalla GUI di MPlayer. Una volta che l'overlay sarà correttamente configurato, non ti servirà più dxr3view. `prebuf` abilita il pre-buffering. Il pre-buffering è una funzionalità del chip em8300 che gli permette di contenere più di un fotogramma video per volta. Questo significa che quando stai usando il pre-buffering, MPlayer cercherà di mantenere il buffer video constantemente pieno di dati. Se sei su una macchina lenta, l'uso della CPU di MPlayer sarà vicino, o pari, al 100%. Questo è particolarmente vero se riproduci flussi MPEG puri (come DVD, SVCD e così via), visto che MPlayer non dovrà ricodificarli in MPEG riempirà il buffer molto velocemente. Con il pre-buffering la riproduzione video è molto meno sensibile all'utilizzo della CPU da parte di altri programmi, non scarterà fotogrammi a meno che tale applicazione prenda possesso della CPU per un tempo lungo. Quando viene usato senza pre-buffering, l'em8300 è molto più sensibile al carico della CPU, per cui si consiglia caldamente di abilitare l'opzione `-framedrop` di MPlayer per evitare un'ulteriore perdita di sincronia. `sync` abiliterà il nuovo motore di sincronizzazione. Questa attualmente è una caratteristica sperimentale. Con il motore di sincronizzazione abilitato, l'orologio interno dell'em8300 verrà tenuto constantemente sotto controllo, se inizia a spostarsi dall'orologio di MPlayer verrà resettato causando lo scarto da parte dell'em8300 di tutti i fotogrammi rimasti indietro. `norm=x` imposterà la norma TV della scheda DXR3 senza il bisogno di strumenti esterni come em8300setup. Norme valide sono 5 = NTSC, 4 = PAL-60, 3 = PAL. Norme speciali sono 2 (auto-impostazione usando PAL/PAL-60) e 1 (auto-impostazione usando PAL/NTSC) poiché decidono quale norma usare in base alla frequenza fotogrammi del filmato. norm = 0 (default) non modifica la norma corrente. `dispositivo` = numero del dipositivo da usare se hai più di una scheda em8300. Ognuna di queste opzioni può essere tralasciata. `:prebuf:sync` sembra funzionare molto bene riproducendo filmati MPEG-4 (DivX). Alcune persone hanno notificato problemi usando l'opzione prebuf riproducendo file MPEG-1/2. Potresti voler provare dapprima l'esecuzione senza alcuna opzione, se hai problemi di sincronizzazione, o problemi coi sottotitoli DVD, fai un tentativo con `:sync`.

`-ao oss:/dev/em8300_ma-X`

  Per l'uscita audio, dove X è il numero del dispositivo (0 per una scheda sola).

`-af resample=xxxxx`

  This does not work with digital audio output (`-ac hwac3`). L'em8300 non può riprodurre frequenze inferiori a 44100Hz. Se la frequenza è minore di 44100Hz imposta 44100Hz oppure 48000Hz a seconda di quale sia la più prossima. Per es. se il film usa 22050Hz allora usa 44100Hz come 44100 / 2 = 22050, se è 24000Hz usa 48000Hz come 48000 / 2 = 24000 e così via.

`-vf lavc`

  Per visualizzare contenuti non MPEG sull'em8300 (per es. MPEG-4 (DivX) o RealVideo) devi specificare un filtro video MPEG-1 come libavcodec (lavc). Vedi la pagina man per ulteriori informazioni circa `-vf lavc`. Attualmente non c'è modo di impostare gli fps dell'em8300, il che significa che sono fissati a 30000/1001 fps. A causa di ciò si raccomanda caldamente di usare `-vf lavc=qualità:25` soprattutto se stai usando il pre-buffering. Allora perché 25 e non 30000/1001? Bene, il fatto è che quando usi 30000/1001 l'immagine diventa un pochino saltellante. La ragione di ciò ci è sconosciuta. Se li imposti a qualcosa tra 25 e 27 l'immagine diventa stabile. Per adesso tutto quello che possiamo fare è accettarlo empiricamente.

`-vf expand=-1:-1:-1:-1:1`

  Anche se il driver DXR3 può posizionare qualche OSD sul video MPEG-1/2/4, ha una qualità decisamente inferiore del tipico OSD di MPlayer, e ha anche molti problemi di aggiornamento. La riga comando suddetta dapprima converte il video in ingresso a MPEG-4 (questo è obbligatorio, scusa), poi applica un filtro expand che non espande nulla (-1: default), ma aggiunge all'immagine l'OSD normale (questo è ciò che fa l'"1" alla fine).

`-ac hwac3`

  L'em8300 supporta la riproduzione audio AC-3 (in surround) attraverso l'uscita digitale della scheda. Vedi l'opzione `-ao oss` più sopra, deve essere usata per specificare l'uscita DXR3 al posto di una scheda audio.

## Altri dispositivi di visualizzazione

### Zr

Questo è un driver video (`-vo zr`) per un buon numero di schede di cattura/riproduzione MJPEG (provato con DC10+ e Buz, e dovrebbe funzionare per LML33, la DC10). Il driver lavora codificando il fotogramma in JPEG e poi inviandolo alla scheda. Per la codifica JPEG viene usata, e richiesta, libavcodec. Con la modalità speciale cinerama, puoi guardare filmati in verà modalità widescreen a patto che tu abbia due proiettori e due schede MJPEG. Proporzionalmente alla risoluzione e alle impostazioni della qualità, questo driver può richiedere molta potenza di CPU, ricordati di specificare `-framedrop` se la tua macchina è troppo lenta. Nota: il mio AMD K6-2 350MHz è (con `-framedrop`) abbastanza adeguato per riprodurre materiale VCD e film rimpiccioliti.

Il driver comunica col driver del kernel disponibile su , indi devi avere per prima cosa questo funzionante. La presenza di una scheda MJPEG è autorilevata dallo script `configure`, se la rilevazione fallisce, forzala con

    ./configure --enable-zr

L'uscita può essere controllata con varie opzioni, una descrizione dettagliata delle opzioni si trova nella pagina man, una lista breve delle opzioni si può avere eseguendo

    mplayer -zrhelp

Cose come il ridimensionamento e l'OSD (on screen display) non sono gestite da questo driver ma possono essere ottenute usado dei filtri video. Per esempio, supponi di avere un film a una risoluzione di 512x272 e vuoi vederlo a schermo intero con un'ampiezza di 768, 384 o 192. Per ragioni di prestazioni e di qualità, io sceglierei di ridimensionare il film a 384x204 usando il ridimensionatore software bilineae veloce. La riga comando diventa

    mplayer -vo zr -sws 0 -vf scale=384:204 filmato.avi

Il ritaglio può essere eseguito dal filtro `crop` e da questo driver di per sé. Supponi che un film sia troppo ampio per vedersi dal tuo Buz e che tu voglia usare `-zrcrop` per ridurre l'ampiezza del film, allora dovrai lanciare il comando seguente

    mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi

Se vuoi usare il filtro `crop`, dovresti lanciare

    mplayer -vo zr -vf crop=720:320:80:0 benhur.avi

Ulteriori presenze di `-zrcrop` evocano la modalità cinerama, per es. puoi distribuire il filmato su varie TV o proiettori per creare uno schermo più grande. Supponi di avere due proiettori. Quello di sinistra è collegato al tuo Buz su `/dev/video1` e quello di destra è connesso al tuo DC10+ su `/dev/video0`. Il film ha una risoluzione di 704x288. Supponi inoltre di volere il proiettore di destra in bianco e nero e che quello di sinistra debba avere fotogrammi JPEG con una qualità 10, allora dovrai eseguire il comando seguente

    mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
        -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
    	film.avi

Vedi che le opzioni che ci sono prima della seconda `-zrcrop` si applicano solo al DC10+ e che le opzioni dopo la seconda `-zrcrop` si applicano al Buz. Il massino numero di schede MJPEG contemporanee in cinerama è quattro, per cui puoi costruire un muro video di 2x2.

Infine una nota importante: non avviare o fermare XawTV sul dispoitivo di riproduzione durante la riproduzione stessa, o ti manderà in crash il computer. Va tuttavia bene PRIMA lanciare XawTV, POI avviare MPlayer, attendere l'uscita di MPlayer, e DOPO fermare XawTV.

### Blinkenlights

Il driver è in grado di riprodurre usando il protocollo UDP Blinkenlights. Se non sai cosa siano Blinkenlights o il suo successore Arcade, scoprilo. Anche se probabilmente questo è uno degli ultimi driver video usati, senza dubbio è il più figo che MPlayer abbia da offrire. Guarda solo alcuni dei video documentali di Blinkenlights. Sul video Arcade puoi vedere il driver di uscita video Blinkenlights in azione alla posizione 00:07:50.

## Gestione uscita TV-out

### Schede Matrox G400

Sotto Linux hai due modi per far funzionare l'uscita TV delle G400:

Per le istruzioni per l'uscita TV-out su Matrox G450/G550, vedi per favore la sezione successiva!

XFree86

  Usando il driver e il modulo HAL, disponibile dal sito Matrox. Questo ti farò avere X sulla TV.

  Questo metodo non ti fornirà una riproduzione accelerate come sotto Windows! La seconda uscita ha solo il framebuffer YUV, il BES (Back End Scaler, il ridimensionatore sulle schede G200/G400/G450/G550) non funziona su di esso! Il driver per Windows in qualche modo aggira il problema, probabilmente usando il motore 3D per ridimensionare, e il framebuffer YUV per mostrare l'immagine ridimensionata. Se vuoi davvero usare X, uitlizza le opzioni `-vo x11 -fs -zoom`, ma sarà LENTO, e avrà la protezione di copia Macrovision abilitata (puoi "correggere" Macrovision usando questo script perl).

Framebuffer

  Usando i moduli matroxfb nei kernel 2.4. I kernel 2.2 non hanno in sé la funzionalità TVout, indi sono inutilizzabili per questo fine. Devi abilitare TUTTE le caratteristiche specifiche per matroxfb durante la compilazione (tranne MultiHead), e compilarle dentro ai moduli! Devi anche avere I2C abilitato.

  - Entra in `TVout` e scrivi `./compile.sh`. Installa `TVout/matroxset/matroxset` da qualche parte nella tua `PATH`.

  - Se non hai `fbset` installato, metti `TVout/fbset/fbset` in qualche dove nella tua `PATH`.

  - Se non hai `con2fb` installato, metti `TVout/con2fb/con2fb` da qualche parte nella tua `PATH`.

  - Poi entra nella directory `TVout/` nei sorgenti di MPlayer, ed esegui `./modules` come root. La tua console in modalità testuale entrerà in modalità framebuffer (nessuna via di ritorno!).

  - Poi, MODIFICA ed esegui lo script `./matroxtv`. Questo ti presenterà un menu molto semplice. Premi 2 e Enter. Ora dovresti avere la stessa immmagine sul tuo monitor e sulla TV. se l'immagine sulla TV (di default PAL) mostra alcune strane strisce, lo script non è stato in grado di impostare adeguatamente la risoluzione (a 640x512 di default). Prova altre risoluzioni dal menu e/o fai dei tentativi con fbset.

  - Evvai. L'operazione successiva è far sparire il cursore a blocco di tty1 (o quello che è) e disabilitare lo spegnimento dello schermo. Esegui i comandi seguenti:

        echo -e '\033[?25l'
        setterm -blank 0

    or

        setterm -cursor off
        setterm -blank 0

    Probabilmente vuoi mettere i suddetti in uno script e anche vuotare lo schermo. Per ripristinare il cursore:

        echo -e '\033[?25h'

    o

        setterm -cursor on

  - Yeah kewl. Avvia la riproduzione del film con

        mplayer -vo mga -fs -screenw 640 -screenh 512 nomefile

    (se usi X, adesso passa alla matroxfb con per esempio Ctrl Alt F1.) Sostituisci `640` e `512` se imposti la risoluzione ad un'altra...

  - Goditi la ultra-veloce ultra-accessoriata uscita TV Matrox (megli di Xv)!

Costruire un cavo per uscita TV-out Matrox

Nessuno si assume alcuna responsabilità, né risponde di alcuna danno causato da questa documentazione.

Cavo per G400

Il quarto pin del connettore CRTC2 è il segnale video composito. La terra sono il sesto, settimo e ottavo pin (informazioni fornite da Balázs Rácz).

Cavo per G450

Il primo pin del connettore CRTC2 è il segnale video composito. La terra sono il quinto, sesto, settimo e quindicesimo pin (5, 6, 7, 15) (informazioni fornite da Balázs Rácz).

### Schede Matrox G450/G550

La gestione dell'uscita TV per queste schede è stata aggiunta solo recentemente e non è ancora nel kernel ufficiale. Attualmente il modulo mga_vid non può essere utilizzato, per quanto ne so, perché il driver G450/G550 funziona solo in una modalità: il primo chip CRTC (con molte più funzioni) sul primo schermo (sul monitor), e il secondo CRTC (niente BES - per chiarimenti su BES, vedi la sezione sopra sulla G400) sulla TV. Perciò per ora puoi usare solo il driver di uscita fbdev di MPlayer.

The first CRTC can't be routed to the second head currently. The author of the kernel matroxfb driver - Petr Vandrovec - will maybe make support for this, by displaying the first CRTC's output onto both of the heads at once, as currently recommended for G400, see the section above.

La patch necessaria per il kernel e l'HOWTO dettagliato sono scaricabili da

### Schede ATI

PREAMBOLO

Attualmente ATI non vuole supportare alcuno dei suoi chip TV-out sotto Linux a causa della loro tecnologia Macrovision sotto licenza.

SITUAZIONE USCITA TV DELLE SCHEDE ATI IN LINUX

- ATI Mach64: supportata da GATOS.

- ASIC Radeon VIVO: supportata da GATOS.

- Radeon e Rage128: supportate da MPlayer! Controlla le sezioni driver VESA e VIDIX.

- Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: supportate da atitvout.

Con le altre schede usa semplicemente il driver VESA senza VIDIX. Tuttavia ti serve una CPU potente.

Un'unica cosa ti serve fare - Assicurati di avere il connettore TV collegato prima di avviare il tuo PC dato che il BIOS video si inizializza solamente durante il passaggio POST.

### nVidia

Per prima cosa, DEVI scaricare i driver proprietari a sorgenti chiusi da . Non sarà spiegato il processo di installazione e configurazione visto che non esula lo scopo di questa documentazione.

Dopo che XFree86, XVideo, e l'accelerazione 3D funzionano correttamente, modifica la sezione Device della tua scheda nel file `XF86Config`, secondo l'esempio seguente (adattalo alla tua scheda/TV):

    Section "Device"
            Identifier      "GeForce"
            VendorName      "ASUS"
            BoardName       "nVidia GeForce2/MX 400"
            Driver          "nvidia"
            #Option         "NvAGP" "1"
            Option          "NoLogo"
            Option          "CursorShadow"  "on"

            Option          "TwinView"
            Option          "TwinViewOrientation" "Clone"
            Option          "MetaModes" "1024x768,640x480"
            Option          "ConnectedMonitor" "CRT, TV"
            Option          "TVStandard" "PAL-B"
            Option          "TVOutFormat" "Composite"
    EndSection

Sicuramente la cosa importante è la parte TwinView.

### NeoMagic

Il chip NeoMagic si trova in unìampia gamma di portatili, alcuni dei quali sono equipaggiati con un codificatore TV analogico semplice, alcuni ne hanno uno avanzato.

- E' stato riportato che si può ottenere un'uscita TV affidabile usando `-vo fbdev` o `-vo fbdev2`. Devi avere vesafb compilato nel kernel e passare i seguenti parametri sulla riga di avvio del kernel: `append="video=vesafb:ywrap,mtrr" vga=791`. Dovresti far partire X, poi passare alla modalità in console con per es. Ctrl Alt F1. Se non avvii X prima di lanciare MPlayer dalla console, il video diventa lento e frammentato (chiarimenti sono benvenuti). Collegati in console, poi lancia il comando seguente:

      clear; mplayer -vo fbdev -zoom -cache 8192 dvd://

  Ora dovresti vedere il filmato in console, che riempie circa la metà dello schermo LCD del tuo portatile. Per passare alla TV premi per tre volte Fn F5. Provato su un Tecra 8000, kernel 2.6.15 con vesafb, ALSA v1.0.10.

- Chip di codifica Chrontel 70xx: Si trova negli IBM Thinkpad 390E e facilmente altri Thinkpad o portatili.

  Devi usare `-vo vesa:neotv_pal` per PAL o `-vo vesa:neotv_ntsc` per NTSC. Fornirà la funzione di uscita TV nelle modalità a 16 e 8 bpp seguenti:

  - NTSC 320x240, 640x480 e forse anche 800x600.

  - PAL 320x240, 400x300, 640x480, 800x600.

  La modalità 512x384 non è supportata dal BIOS. Per attivare l'uscita TV devi ridimensionare l'immagine a una risoluzione diversa. Se riesci a vedere un immagine sullo schermo a 640x480 o a 800x600 ma non a 320x240 o ad altre risoluzioni inferiori devi sostituire due tabelle in `vbelib.c`. Vedi la funzione vbeSetTV per i dettagli. In questo caso per favore contatta l'autore.

  Problemi conosciuti: solo VESA, non è implementato alcun controllo come luminosità, contrasto, livello del nero, filtro per lo sfarfallio.