2.3.1. Dispositivi di output video
E' DECISAMENTE consigliato controllare se i registri MTRR sono ben configurati, perchè possono fornire un grande aumento di 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' a posto, mostra la mia Matrox G400 con 16Mb di memoria. L'ho ottenuto con XFree 4.x.x , che configura i registri MTRR automaticamente.
Se non ha funzionato, devi farlo manualmente. Prima, bisogna trovare l'indirizzo di base. Hai 3 modi per scoprirlo:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
(--) SVGA: Linear framebuffer at 0xD8000000
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
Memory at d8000000 (32-bit, prefetchable)
mga_mem_base = d8000000
Poi troviamo la dimensione della memoria. E molto semplice, basta convertire la quantità di ram video in esadecimale, o usare questa tabella:
1 MB | 0x100000 | ||
2 MB | 0x200000 | ||
4 MB | 0x400000 | ||
8 MB | 0x800000 | ||
16 MB | 0x1000000 | ||
32 MB | 0x2000000 | ||
Conosci l'indirizzo di base e la dimensione della memoria, configuriamo i registri mtrr! Per esempio, per la scheda Matrox di cui sopra (base=0xd8000000) con 32MB di ram (size=0x2000000) basta eseguire:
echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
Non tutte le CPU supportano l'MTRR. Per esempio i più vecchi K6-2 [circa 266Mhz,
stepping 0] non supportano l'MTRR, ma gli stepping 12 si ('cat /proc/cpuinfo
'
per controllare').
Sotto XFree86 4.0.2 o più recente, si possono usare le routine hardware della tua scheda usando l'estensione XVideo. Questo è quello che usa l'opzione '-vo xv'. Inoltre, questo driver è quello che supporta la regolazione di luminosità/contrasto/hue/etc (a meno che tu stia usando il vecchio, lento codec DirectShow DivX, che lo supporta ovunque), vedi la pagina di man.
Per farlo funzionare, assicurati delle seguenti cose:
(II) Loading extension XVideo
in /var/log/XFree86.0.log
NOTA: questo carica solo l'estensione XFree86. In una buona installazione, questo è sempre caricato, e non significa che il supporto XVideo _della scheda_ è caricato!
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) (...ecc...)
Deve supportare i formati pixel YUY2 packed, e YV12 planar per essere utilizzabile con MPlayer.
I vecchi driver 3dfx avevano problemi con l'accelerazione XVideo, non supportavano ne YUY2 ne YV12, e cose del genere. Verifica di possedere XFree86 versione 4.2.0 o maggiore, funziona bene con YV12 e YUY2. Le versioni precedenti, inclusa la 4.1.0 vanno in crash con YV12! Se hai strani effetti con -vo xv, prova SDL (ha anche XVideo) e guarda se aiuta. Controlla la sezione SDL per dettagli.
O, prova il NUOVO driver -vo tdfxfb! Vedi la sezione tdfxfb!
La S3 Savage3D dovrebbe funzionare bene, ma per la Savage4, usa XFree86 versione 4.0.3 o maggiore (in caso di problemi con l'immagine, prova 16bpp). Come per S3 Virge.. c'è il supporto xv, ma la scheda stessa è molto lenta, quindi faresti meglio a rivenderla.
NOTA: la schede Savage hanno una visualizzazione delle immagini lenta con YV12 (deve fare una conversione YV12->YUY2, perchè l'hardware Savage non può usare YV12). Quindi quando ad un certo punto di questa documentazione si dice "ha l'output YV12 usa questo, è più veloce", non è cosa certa. Prova questo driver che usa MMX2 per questa operazione ed è più veloce del driver nativo di X.
nVidia non è una scelta molto buona sotto Linux (secondo NVidia, questo non è vero).. Sarai costretto ad usare il driver binario closed-source di nVidia, disponibile sul sito di nVidia. Il driver XFree86 standard non supporta XVideo per queste schede, a causa delle specificazioni e dei sorgenti chiusi di nVidia.
Per quanto ne so l'ultimo driver XFree86 contiene il supporto XVideo per Geforce 2 e 3.
Queste schede possono essere trovate su molti laptop. Sfortunatamente, il driver in X 4.2.0 non può usare Xv, ma abbiamo un driver modificato, capace di Xv, per te. Scaricalo da qui. Driver fornito da Stefan Seyfried.
Per permettere la riproduzione di DVD cambia il tuo XF86Config così:
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
Se vuoi usare xv con una scheda trident, dato che non funziona col 4.1.0, prova l'ultimo cvs di Xfree o aspetta Xfree 4.2.0. L'ultimo cvs aggiunge il supporto per xv a pieno schermo con la scheda Cyberblade XP.
Questo documento tenta di spiegare cosa sia il DGA in generale e cosa può fare (e cosa non può) il driver di output video DGA di mplayer.
DGA è l'acronimo di Direct Graphics Access (Accesso Diretto alla Grafica, ndt) ed è un modo per un programma di aggirare il server X e modificare direttamente la memoria del framebuffer. Detto tecnicamente questo è possibile mappando la memoria del framebuffer nell'area di memoria del tuo processo. Questo è permesso dal kernel solo se hai i privilegi di superutente. Puoi ottenerli o loggandoti come root o applicando il bit suid all'eseguibile mplayer (NON consigliato!).
Esistono due versioni di DGA: DGA1 è usato da XFree 3.x.x e DGA2 è stato introdotto con XFree 4.0.1.
DGA1 fornisce solo accesso diretto al framebuffer come descritto sopra. Per cambiare la risoluzione del segnale video bisogna appoggiarsi all'estensione XVidMode.
DGA2 incorpora le caratteristiche di XVidMode e permette anche di cambiare la profondità del display. Cosi puoi, anche se è in esecuzione un server X a 32 bit di profondità, cambiare ad una profondità di 15 bit e vice versa.
Però il DGA ha alcune pecche. Sembra che siano in qualche modo dipendenti dal chip grafico che si usa e dall'implementazione del driver video del server X che controlla questo chip. Quindi non funziona su tutti i sistemi ...
2.3.1.3.3. Installare il supporto DGA per MPlayer
Per prima cosa assicurati che X carichi l'estensione DGA, controlla in /var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
Vedi, XFree86 4.0.x o maggiore è DECISAMENTE CONSIGLIATO! Il driver DGA di MPlayer è trovato automaticamente da ./configure, o si può forzare con --enable-dga.
Se il driver non può cambiare ad una risoluzione minore, prova con le opzioni -vm (solo con X 3.3.x), -fs, -bpp, -zoom per trovare una modalità adatta. Non c'è una conversione per ora.. :(
Diventa ROOT. DGA ha bisogno dell'accesso di root per poter scrivere direttamente nella memoria video. Se vuoi eseguirlo da 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 semplice utente.
!!!! MA RIMANI IN ASCOLTO !!!!
Questo è un GRANDE rischio per la sicurezza! Non farlo mai su un server o un computer
al quale possono accedere altre persone perchè si possono ottenere i privilegi di root
attraverso mplayer suid root.
!!!! QUINDI SEI STATO AVVISATO ... !!!!
Ora usa l'opzione '-vo dga', ed ecco fatto! (spero:) Dovresti anche provare se l'opzione '-vo sdl:dga' funziona per te! E' molto più veloce!!!
2.3.1.3.4. Cambiare risoluzione
Il driver DGA permette di cambiare la risoluzione del segnale di uscita.
Questo evita la necessita di eseguire un (lento) ridimensionamento software e allo stesso
tempo fornisce un'immagine a pieno schermo. Idealmente dovrebbe andare all'esatta risoluzione
(tranne che per rispettare le proporzioni) dei dati video, ma il server X
permette solo di andare ad una risoluzione presente in
/etc/X11/XF86Config
(/etc/X11/XF86Config-4
per XFree 4.0.X).
Queste sono definite dalle cosi dette modeline e dipendono dalle capacità
del tuo hardware video. Il server X legge questo file di configurazione all'avvio e
disabilita le modeline non adatte al tuo hardware. Puoi scoprire quali modalità rimangono
nel file di log di X11. Si trova in:
/var/log/XFree86.0.log
.
Vedi l'appendice A per alcune definizioni di modeline di esempio.
DGA è utilizzato in due posti in MPlayer: nel driver SDL (-vo sdl:dga) e nel driver DGA (-vo dga). Quello detto sopra è valido per entrambi; nella seguente sezione spiegherò come funziona il driver DGA di MPlayer.
2.3.1.3.6. Caratteristiche del driver DGA
Il driver DGA è invocato specificando -vo dga alla riga di comando. Il comportamento di default è quello di cambiare ad una risoluzione il più vicino possibile a quella originale del filmato. Ignora deliberatamente le opzioni -vm e -fs (cambiare la modalità video e il pieno schermo) - tenta sempre di coprire la maggior parte possibile del monitor cambiando la modalità video, astenendosi così dall'usare anche un solo ciclo in più della CPU per ridimensionare l'immagine. Se non ti piace la modalità che ha scelto puoi forzarlo ad usare la risoluzione più vicina a quella che gli viene passata con le opzioni -x e -y. Con l'opzione -v, il driver DGA stamperà a video, tra le altre cose, una lista delle risoluzioni supportate dal tuo attuale file XF86-Config. Con il DGA2 puoi anche forzarlo ad usare una certa profondità usando l'pzione -bpp. Le profondità valide sono 15, 16, 24 e 32. Dipende dal tuo hardware se queste profondità sono supportate nativamente o se deve essere fatta una (possibilmente lenta) conversione.
Se sei abbastanza fortunato da avere abbastanza memoria video rimasta per inserire un'intera immagine, il driver DGA userà il doppio buffering, che permette una riproduzione video più fluida. Ti dirà se il doppio buffering è abilitato oppure no.
Doppio buffering significa che la successiva immagine del filmato viene disegnata nella memoria video mentre è mostrata l'immagine attuale. Quando il successivo frame è pronto, basta dire al chip grafico la posizione nella memoria del nuovo frame e prende semplicemente i dati da visualizzare da lì. Nel frattempo un altro buffer nella memoria sarà di nuovo riempito con nuovi dati video.
Il doppio buffering può essere abilitato con l'opzione -double e disabilitato con -nodouble. L'azione attualmente predefinita è quella di disabilitare il doppio buffering. Quando si usa il driver DGA, l' OSD funziona solo col doppio buffering abilitato. Comunque, abilitare il doppio buffering può risultare in una grande perdita di velocità (sul mio K6-II+ 525 usa un 20% in più di tempo della CPU!) a seconda dell'implementazione del DGA per il tuo hardware.2.3.1.3.7. Questioni sulla velocità
Parlando in generale, l'accesso al framebuffer DGA dovrebbe essere veloce almeno quanto il driver X11 con in più il beneficio di avere l'immagine a pieno schermo. I valori di velocità in percentuale dati da mplayer devono essere interpretati con una certa cura, dato che per esempio, col driver X11 non includono il tempo impiegato dal server X necessario per il reale disegno. Aggancia un terminale alla porta seriale della tua box ed esegui top per vedere cosa sta realmente accadendo ...
Parlando in generale, l'incremento di velocità dato da DGA rispetto ad un uso 'normale' di X11 dipende in larga misura dalla tua scheda grafica e da quanto sia ben ottimizzato il modulo X-Server per essa.
Se hai un sistema lento, faresti meglio ad usare una profondità di 15 o 16bit in quanto necessitano solo metà della larghezza di banda della memoria rispetto ai 32.
Anche usare una profondità di 24bit è una buona idea se la tua scheda li supporta nativamente solo i 32 bit in quanto trasferisce il 25% in meno di dati rispetto alla modalità 32/32.
Ho visto già dei file avi riprodotti su un Pentium MMX 266. Le CPU AMD K6-2 dovrebbero andare bene dai 400 MHZ in su.
Bene, secondo alcuni sviluppatori di XFree, DGA è proprio una bestiaccia. Raccomandano di non usarlo. La sua implementazione non è sempre perfetta con tutti i driver per chipset di XFree la fuori.
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
Queste funzionano bene col mio chip Riva128, usando il modulo del driver XServer nv.o .
Se riscontri dei problemi col driver DGA per favore sentiti libero di inviare una segnalazione di bug a me (indirizzo e-mail sotto). Per favore esegui mplayer con l'opzione -v e includi tutte le linee che cominciano con vo_dga: nella segnalazione
Includi anche la versione di X11 che usi, la scheda video e il tuo tipo di CPU. Anche il modulo del driver X11 (definito in XF86-Config) potrebbe aiutare. Grazie!
Acki (acki@acki-netz.de, www.acki-netz.de)
SDL (Simple Directmedia Layer, Semplice Livello Diretto per media, ndt) è in generale una interfaccio video/audio unificata. I programmi che ne fanno uso conoscono solo l' SDL, e nulla su quale driver video o audio SDL usano veramente. Per esempio un port di Doom che usa SDL può essere eseguito su svgalib, aalib, X, fbdev, e altri, devi solo specificare il (per esempio) driver video da usare con la variabile d'ambiente SDL_VIDEODRIVER. Bhe, in teoria.
Con MPlayer, abbiamo usato la capacita di ridimensionamento software del suo driver X11 per schede/driver che non supportano XVideo, finchè non abbiamo fatto il nostro (più veloce, più bello) ridimensionatore software. Abbiamo anche usato il suo output aalib, ma ora abbiamo il nostro che è più comodo. La sua modalità DGA era migliore della nostra, fino a poco tempo fà. Afferrato ora? :)
Aiuta anche con alcuni driver/schede difettosi se il video o l'audio sono a scatti (non un problema di sistema lento).
Il video output SDL supporta la visualizzazione dei sottotitoli sotto al filmato, sulla (se presente) barra nera.
Ecco alcune note sull'output SDL in MPlayer.
Ci sono molte opzioni a riga di comando per SDL: | |||
-vo sdl:nome | specifica il driver video sdl da usare (es. aalib, dga, x11) | ||
-ao sdl:nome | specifica il driver audio sdl da usare (es. dsp, esd, arts) | ||
-noxv | disabilita l'accelerazione hardware Xvideo | ||
-forcexv | tenta di forzare l'accelerazione Xvideo | ||
Tasti per SDL: | |||
F | scambia le modalità pieno schermo/finestra | ||
C | cambia tra le modalità a pieno schermo disponibili | ||
W/S | sostituiscono * e / (controllo mixer) | ||
BUG CONOSCIUTI:
Installazione
Devi installare svgalib e il suo pacchetto di sviluppo per fare in modo che
MPlayer compili il suo driver SVGAlib (riconosciuto automaticamente, ma può essere forzato),
e non dimenticare di modificare /etc/vga/libvga.config per adattarlo alla tua scheda & monitor.
Note
Non usare l'opzione -fs, in quanto abilita il ridimensionamento via software,
che è lento. Se ne hai davvero bisogno, usa l'opzione -sws 4
,
risulterà una qualità peggiore ma è in qualche modo più veloce.
Supporto EGA (4bpp)
SVGAlib incorpora EGAlib, e MPlayer può mostrare qualsiasi
filmato in 16 colori, quindi è utilizzabile con le seguenti configurazioni:
Il valore di bpp (bits per pixel) deve essere impostato manualmente a 4:
-bpp 4
Il filmato probabilmente deve essere ridimensionato per adattarlo alla modalità EGA:
-vop scale=640:350
or
-vop scale=320:200
Per questo abbiamo bisogno di una routine di ridimensionamento veloca ma di cattiva qualità:
-sws 4
Forse deve essere disabilitata la correzione automatica dell'aspetto:
-noaspect
2.3.1.6. Output col Framebuffer (FBdev)
Se compilare il driver FBdev è stabilito automaticamente da ./configure . Leggi la documentazione del framebuffer nei sorgenti del kernel (Documentation/fb/*) per informazioni su come abilitarlo, ecc.. !
Se la tua scheda non supporta lo standard VBE 2.0 (le più vecchie schede ISA/PCI, come la S3 Trio64), ma solo VBE 1.2 (o più vecchio?) : ebbene, VESAfb è ancora disponibile, ma dovrai caricare il programma SciTech Display Doctor (prima UniVBE) prima di fare il boot di Linux. Usa un dischetto di boot DOS o quello che vuoi. E non dimenticare di registrare il tuo UniVBE ;))
L'output FBdev accetta alcuni parametri supplementari tra i quali:
-fb | specifica il dispositivo framebuffer da usare (/dev/fb0) | ||
-fbmode | nome della modalità da usare (secondo /etc/fb.modes) | ||
-fbmodeconfig | file di configurazione delle modalità (default /etc/fb.modes) | ||
-monitor_hfreq | valori IMPORTANTI, vedi example.conf | ||
-monitor_vfreq | |||
-monitor_dotclock | |||
Se vuoi cambiare ad una modalità specifica, allora usa
mplayer -vm -fbmode (NomeModalità) nomefile
echo -e '\033[?25l'
o setterm -cursor off
setterm -blank 0
echo -e '\033[?25h'
o setterm -cursor on
NOTA: il cambiamento di modalità video di FBdev _non funziona_ col framebuffer VESA, e non richiederlo, in quanto non è una limitazione di MPlayer.
2.3.1.7. Framebuffer Matrox (mga_vid)
Questa sezione parla del supporto BES (Back-End Scaler) di Matrox G200/G400/G450/G550, il driver del kernel mga_vid. E' attualmente sviluppato da me (A'rpi), e ha il supporto VSYNC hardware con triplo buffering. Funziona sia da console col framebuffer che sotto X.
ATTENZIONE: su sistemi non-Linux, usa Vidix per mga_vid !!!
Per usarlo, devi prima compilare mga_vid.o:
cd drivers
make
Poi crea il dispositivo /dev/mga_vid:
mknod /dev/mga_vid c 178 0
e carica il driver con
insmod mga_vid.o
Dovresti controllare il riconoscimento della dimensione della memoria usando il comando 'dmesg'. Se è sbagliata, usa l'opzione mga_ram_size (prima rmmod mga_vid), specifica la dimensione della memoria della scheda in MB:
insmod mga_vid.o mga_ram_size=16
Per farlo caricare/scaricare automaticamente quando ce n'è bisogno, prima inserisci la seguente riga alla fine di /etc/modules.conf:
alias char-major-178 mga_vid
Quindi copia il modulo mga_vid.o
nella posizione appropriata sotto
/lib/modules/<versione kernel>/daqualcheparte
.
Poi esegui
depmod -a
Ora devi (ri)compilare MPlayer, ./configure troverà /dev/mga_vid e compilerà il driver 'mga'. In MPlayer si usa con '-vo mga' se hai la console matroxfb, o '-vo xmga' sotto XFree86 3.x.x o 4.x.x.
Il driver mga_vid coopera con Xv.
Il file del dispositivo /dev/mga_vid
può essere letto (per esempio con
cat /dev/mga_vid
) per avere alcune informazioni, e scritto per cambiare la luminosità
: echo "brightness=120" > /dev/mga_vid
2.3.1.8. Supporto YUV 3dfx (tdfxfb)
Questo driver usa il driver framebuffer del kernel tdfx per riprodurre i filmati con
accelerazione YUV. Devi avere un kernel col supporto tdfxfb, e ricompilare con
./configure --enable-tdfxfb
MPlayer supporta la visualizzazione dei filmati usando OpenGL, ma se la tua piattaforma/driver supporta xv come dovrebbe essere su un PC con Linux, usa xv invece, le prestazioni di OpenGL sono peggiori. Se hai una implementazione X11 senza il supporto di xv, OpenGL è un' alternativa disponibile.
Sfortunatamente, non tutti i driver hanno questa capacità. Per esempio i driver Utah-GLX (per XFree86 3.3.6) lo supportano, con tutte le schede. Vedi http://utah-glx.sourceforge.net per dettagli su come installarlo.
XFree86(DRI) >= 4.0.3 supporta OpenGL con schede Matrox, e Radeon, >= 4.2 lo supporta anche per le Rage128. Vedi http://dri.sourceforge.net per scaricarlo, e per istruzioni sull'installazione.
2.3.1.10. AAlib - visione in modalità testo
AAlib è una libreria per vedere la grafica in modalità testo, usando un potente renderer ASCII. Ci sono MOLTI programmi che già la supportano, come Doom, Quake, ecc. MPlayer contiene un driver molto facile da usare per questa. Se ./configure trova aalib installata, sarà compilato il driver libvo aalib.
Puoi usare alcuni tasti nella finestra AA per cambiare le opzioni di rendering: | |||
1 | diminuisce il contrasto | ||
2 | aumenta il contrasto | ||
3 | diminuisce la luminosità | ||
4 | aumenta la luminosità | ||
5 | (dis)attiva il rendering veloce | ||
6 | cambia la modalità di dithering (nessuno, distribuzione dell'errore, floyd steinberg) | ||
7 | inverte l' immagine | ||
a | cambia i controlli da aa a mplayer | ||
Possono essere usate le seguenti opzioni a riga di comando: | |||
-aaosdcolor=V | cambia il colore dell'osd | ||
-aasubcolor=V | cambia il colore dei sottotitoli | ||
dove V può essere: (0/normal, 1/dark, 2/bold, 3/boldfont, 4/reverse, 5/special) | |||
La stessa AAlib fornisce un gran numero do opzioni. Eccone alcune importanti: | |||
-aadriver | seleziona il driver aa consigliato (X11, curses, linux) | ||
-aaextended | usa tutti i 256 caratteri | ||
-aaeight | usa ascii a otto bit | ||
-aahelp | stampa tutte le opzioni di aalib | ||
NOTA: il rendering utilizza molta CPU, specialmente usando aalib su X, e ne usa meno su console standard, non-framebuffer. Usa SVGATextMode per selezionare una modalità testo grande, e divertiti! (le schede Hercules con uscita secondaria vanno forte :)) (qualcuno può migliorare bdev per fare conversione/dithering a hgafb? Sarebbe bello :)
Usa l'opzione -framedrop se il tuo computer non è abbastanza veloce da renderizzare tutti i frame!
Usandolo da terminale otterrai una più alta velocità e qualità usando il driver di linux, non curses (-aadriver linux). Ma per questo devi avere accesso in scrittura a /dev/vcsa<terminale>! Questa non è ipostata automaticamente da aalib, ma vo_aa cerca di trovare la modalità migliore. Vedi http://aa-project.sourceforge.net/tune/ per ulteriori questioni di regolazione.
2.3.1.11. VESA - output col BIOS VESA
Questo driver è stato pensato e introdotto come un driver generico per qualsiasi scheda video
con un BIOS VESA VBE 2.0 compatibile. Ma c'è ancora una ragione per lo sviluppo di
questo driver - la sua possibilità di abilitare l'output sulla TV.
VESA BIOS EXTENSION (VBE) Versione 3.0 Data: 16 Settembre 1998 (Pagina 70)
dice:
Design a doppio controller
VBE 3.0 supporta il design a doppio controller supponendo che, dato che entrambi
i controller sono solitamente forniti dallo stesso OEM, sotto il controllo di una
singola ROM BIOS sulla stessa scheda grafica, è possibile nascondere all'applicazione il fatto che
sono realmente presenti due controller. Questo ha la limitazione
di impedire l'uso contemporaneo dei controller indipendenti,
ma consente alle applicazioni rilasciate prima del VBE 3.0 di operare normalmente. La funzione
VBE 00h fornisce l'informazione combinata dei due
controller, inclusa la lista combinata delle modalità disponibili.
Quando l'applicazione seleziona una modalità, viene attivato il controller appropriato.
Ogni rimanente funzione VBE quindi opera sul controller attivo.
Quindi si ha la possibilità di far andare il TV-out con questo driver.
(Suppongo che spesso il TV-out abbia un output suo proprio,
almeno.)
Le cose positive:
- Hai la possibilità di vedere filmati anche se Linux non conosce nemmeno il tuo hardware video.
- Non devi aver installato niente per la grafica sul tuo Linux
(come X11 (cioè XFree86), fbdev e così via). Questo driver può essere eseguito dalla
modalità testo.
- Hai la possibilità di avere il TV-out funzionante. (almeno con le schede ATI).
- Questo driver richiama l'handler int 10h quindi non è un emulatore - richiama le
cose reali del reale BIOS in modalità reale. (detto meglio -
in modalità vm86).
- Puoi usarlo insieme a Vidix, ottenendo così l'accelerazione video
E l'output su TV allo stesso tempo! (raccomandato per le schede ATI)
Le cose negative:
- Funziona solo su sistemi x86.
- Può essere usato solo da ROOT.
- Attualmente è disponibile solo per Linux.
Non usare questo driver col GCC 2.96 ! Non funzionerà !
Sono attualmente disponibili queste opzioni per VESA: | |||
-vo vesa:opzioni | attualmente riconosciute: dga per forzare la modalità dga e nodga per disabilitarla. Nota: puoi omettere questi parametri per abilitare il riconoscimento automatico della modalità dga. (In futuro si potranno specificare anche parametri come refresh rate, interlacing, doublescan e così via. Esempi: i43, 85, d100) | ||
-screenw, -screenh, -bpp | forza la modalità definita dall'utente | ||
-x, -y | configura il predimensionamento definito dall'utente | ||
-zoom | abilita il predimensionamento definito dall'utente | ||
-fs | ridimensiona l'immagine a pieno schermo | ||
-fs -zoom | ridimensiona il predimensionamento definito dall'utente a pieno schermo | ||
-double | abilita la modalità di doppio buffering. (Disponibile solo in modalità DGA). Dovrebbe essere più lento del buffering singolo, ma non ha scatti. | ||
Problemi conosciuti e come aggirarli:
- Se hai installato il font NLS sulla tua Linux box ed esegui il driver VESA
dalla modalità testo allora dopo aver chiuso mplayer avrai il font ROM caricato invece del
nazionale. Puoi ricaricare il font nazionale usando l'utilità setsysfont
dalla, per esempio, distribuzione Mandrake.
(Suggerimento: la stessa utilità è usata per la "localizzazione" di fbdev).
- Alcuni driver grafici di Linux non aggiornano la modalità BIOS attiva nella memoria DOS. Quindi se hai
un tale problema - usa sempre il driver VESA solo dalla modalità testo. Altrimenti la modalità testo (#03) sarà
attivata comunque e dovrai far ripartire il computer.
- Spesso dopo aver terminato il driver VESA si ottiene uno schermo nero. Per farlo ritornare
allo stato originale - cambia semplicemente console (premendo Alt-Fx) poi ritorna
alla precedente console nello stesso modo.
- Per far funzionare il TV-out devi avere il connettore della tv inserito prima di far partire
il tuo PC in quanto il BIOS video si inizializza solo una volta durante la procedura di POST.
Evitalo se possibile. Da l'output a X11 (usa l'estensione per la memoria condivisa), senza alcuna
accelerazione hardware. Supporta (accelerato da MMX/3DNow/SSE, ma ancora
lento) il ridimensionamento software, usa le opzioni -fs -zoom
. Molte schede
hanno il supporto per il ridimensionamento hardware, usa l'output -vo xv
per queste, o
-vo xmga
per le Matrox.
Il problema è che il driver della maggior parte delle schede non supporta l'accelerazione hardware sulla seconda uscita/TV. In quei casi, si vede una finestra verde/blu invece del filmato. Qui è dove questo driver è utile, ma hai bisogno di una CPU potente per usare il ridimensionamento software. Non usare l'output+scaler software del driver SDL, ha una pessima qualità d'immagine !
Il ridimensionamento software è molto lento, faresti meglio a cambiare modalità video invece. E' molto semplice. Vedi la sezione sulle modeline DGA, e inseriscile nel tuo XF86Config.
-vm
. Cambierà ad una
risoluzione adatta al tuo filmato. Se non funziona :COS'E' IL VIDIX
VIDIX è l'acronimo di VIDeo Interface for
*niX (Interfaccia Video per *nix, ndt).
VIDIX è stato studiato e implementato come un'interfaccia per veloci driver in spazio utente
che offrono le stesse performance video che mga_vid fornisce pe le schede Matrox. E anche
molto portabile.
Questa interfaccia è stata studiata come un tentativo di far rientrare le esistenti interfacce di accelerazione video (conosciute come mga_vid, rage128_vid, radeon_vid, pm3_vid) in uno schema fisso. Fornisce un'interfaccia di alto livello ai chip conosciuti come BES (BackEnd scaler) o OV (Video Overlay). Non fornisce un'interfaccia di basso livello a cose conosciute come server grafici. (Non voglio competere con il team di X11 nel cambiamento di modalità grafica). Cioè, l'obbiettivo principale di questa interfaccia è di fornire la massima velocità di riproduzione video.
UTILIZZO
-vo xvidix
-vo vesa:vidix
(SOLO PER LINUX) e -vo fbdev:vidix
REQUISITI
:vidix
.
METODI DI UTILIZZO
Quando VIDIX è usato come sottodispositivo (-vo vesa:vidix
) allora
la configurazione della modalità video è fatta dal dispositivo di output video
(vo_server in breve). Quindi puoi passare alla linea di comando di
MPlayer le stesse opzioni di vo_server. In aggiunta interpreta l'opzione
-double
come un parametro globalmente visibile. (Consiglio di usare
questa opzione con VIDIX almeno per le schede ATI).
Come per -vo xvidix
: attualmente riconosce le seguenti
opzioni: -fs -zoom -x -y -double
.
Puoi anche specificare il driver VIDIX direttamente come terzo sotto argomento alla linea di
comando :
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 dato sarà
forzato e il risultato è imprevedibile (potrebbe bloccare il tuo
computer). Dovresti farlo SOLO se sei assolutamente sicuro che funzionerà,
e MPlayer non lo fa automaticamente. Per favore dillo agli
sviluppatori. Il Modo Giusto è usare VIDIX senza argomenti per abilitare il riconoscimento automatico del
driver.
VIDIX è una tecnologia molto nuova ed è molto probabile che sul tuo sistema (OS=abc CPU=xyz) non funzioni. In questo caso la sola soluzione per te è di eseguire un port (principalmente libdha). Ma c'è la speranza che funzioni su quei sistemi dove funziona X11.
E l'ultimo AVVERTIMENTO: (s)fortunatamente DEVI avere i permessi di ROOT per usare VIDIX a causa dell'accesso diretto all'hardware. Al limite dai il bit suid all'eseguibile MPlayer.
EQUALIZZATORE VIDEO
Questo è un equalizzatore video implementato specificatamente per Vidix. Puoi usarlo sia coi tasti 1-8 come descritto nelle pagine di man, o con argomenti dalla linea di comando. MPlayer riconosce le seguenti opzioni :
-brightness
- regola la LUMINOSITÀ dell'output
video. Non è come la regolazione della luminosità sul pannello del monitor o della TV. Cambia
l'intensità dei componenti RGB del segnale video da schermo nero a
bianco.
-contrast
- regola il CONTRASTO dell'output video.
Funziona in maniera simile alla lumunosità.
-saturation
- regola la SATURAZIONE dell'output video.
Puoi ottenere un output in scala di grigi con questa opzione.
-hue
- regola l' HUE del segnale video. Puoi ottenere
il negativo a colori dell'immagine con questa opzione.
-red_intensity
- regola l'intensità della componente ROSSO
del segnale video.
-green_intensity
- regola l'intensità della componente VERDE
del segnale video.
-blue_intensity
- regola l'intensità della componente BLU
del segnale video.
Ogni parametro accetta valori da -1000 a +1000.
Il valore predefinito per ogni parametro è 0.
Nota: Non tutti i driver supportano ognuno di questi parametri. Attualmente solo radeon_vid.so fornisce il pieno supporto per l'equalizzazione video. Altri driver supportano solo parzialmente queste opzioni.
Esempi:
mplayer -vo vesa:vidix -brightness -300 -contrast 200
nomefile.avi
o
mplayer -vo xvidix -red_intensity -50 -saturation 400 -hue 300
nomefile.vob
Questo è un driver per la visualizzazione (-vo zr
) per un certo numero di schede MJPEG
di cattura/riproduzione (testato per DC10+ e Buz, e dovrebbe funzionare per
LML33, DC10). Il driver funziona codificando il frame in jpeg e mandandolo poi
alla scheda. Per la codifica jpeg è usato libavcodec,
ed è quindi necessario.
Questo driver dialoga col driver del kernel disponibile a
http://mjpeg.sourceforge.net, quindi
devi far funzionare questo prima. Poi ricompila MPlayer con
--enable-zr
.
Alcune osservazioni:
-zr*
alla linea di comando. La spiegazione di
queste opzioni può essere visualizzata con -zrhelp
. E' possibile tagliare
il frame di input (tagliare i bordi per adattarlo o migliorare le prestazioni)
e fare altre cose.Sorry, selected video_out device is incompatible with this codec.
MPlayer supporta le schede con chipset DVB Siemens fabbricati da aziende quali Siemens, Technotrend, Galaxis o Hauppauge. I driver DVB più recenti sono disponibili sul sito Linux TV. Se vuoi fare il transcoding software devi avere almeno una CPU da 1GHz.
Lo script configure dovrebbe riconoscere automaticamente la tua scheda DVB. se non riesce, forzane il riconoscimento con
./configure --enable-dvb
Se hai gli header ost in una locazione non-standard, imposta il path con
./configure --with-extraincdir=<directory sorgenti DVB>/ost/include
Quindi compila e installa come al solito.
UTILIZZOSi può abilitare la decodifica hardware (riproduzione di file MPEG1/2 standard) col comando:
mplayer -ao mpegpes -vo mpegpes file.mpg|vob
Si può abilitare la decodifica software o il transcoding da diversi formati a MPEG1 usando un comando come questo:
mplayer -ao mpegpes -vo mpegpes -vop lavc tuofile.ext mplayer -ao mpegpes -vo mpegpes -vop fame,expand tuofile.ext
Nota che le schede DVB supportano solo un'altezza di 288 o 576 per il PAL e 240 o 480
per NTSC. Devi ridimensionare se vuoi altre altezze aggiungendo
scale=larghezza:altezza
con le dimensioni desiderate all'opzione
-vop
. Le schede DVB accettano varie larghezze, come 720, 704,
640, 512, 480, 352 ecc e utilizzano il ridimensionamento hardware nella direzione orizzontale,
quindi nella maggior parte dei casi non devi ridimensionare orizzontalmente. Per un DivX 512x384 (aspetto 4:3) prova:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576
Se hai un filmato widescreen e non vuoi ridimensionarlo a piena altezza,
puoi usare il plugin expand=l:a
per aggiungere delle bande nere. Per vedere
un DivX 640x384, prova:
mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 file.avi
Se la tua CPU è troppo lenta per un DivX a dimensione intera 720x576, prova a ridurlo:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 file.avi
Se la velocità non aumenta, prova anche a ridurlo verticalmente:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 file.avi
Per l'OSD e i sottotitoli usa l'opzione di espansione del plugin OSD. Quindi, invece
di expand=l:a
o expand=l:a:x:y
, usa
expand=l:a:x:y:1
(il quinto parametro :1
alla fine
abilita il rendering OSD). Potresti aver bisogno di spostare l'immagine un po' in alto
per ottenere una zona nera più grande per i sottotitoli. Potresti anche voler spostare in alto i sottotitoli, se
sono fuori dallo schermo della TV, usa l'opzione -subpos <0-100>
per regolarli (-subpos 80
è una buona scelta).
Per riprodurre filmati non a 25fps su una TV PAL o con una CPU lenta, aggiungi l'opzione
-framedrop
.
Per mantenere le proporzioni dei file DivX e ottenere i parametri di ridimensionamento ottimali (ridimensionamento orizzontale in hardware e verticale in software mentre si conservano le giuste proporzioni), usa il nuovo plugin dvbscale:
per TV 3:4: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale per TV 16:9: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024
Se hai domande o vuoi sentire gli annunci di nuove caratteristiche e prender parte alle discussioni su questo argomento, unisciti alla nostra mailing list MPlayer-DVB. Per favore ricorda che la lingua di questa lista è l'inglese.
In futuro potresti aspettarti la possibilità di mostrare l'OSD e i sottotitoli usando la caratteristica OSD nativa delle schede DVB, e anche una riproduzione più fluente dei filmati non a 25fps e il transcoding in tempo reale tra MPEG2 e MPEG4 (decompressione parziale).
MPlayer supporta la riproduzione accelerata in hardware con le schede Creative DXR3 e Sigma Designs Hollywood Plus. Queste schede usano il chip di decodifica MPEG em8300 prodotto da Sigma Designs.
Prima di tutto devi installare correttamente i driver DXR3/H+, versione 0.12.0 o successiva. I driver e le istruzioni per l'installazione si trovano sul sito DXR3 & Hollywood Plus per Linux. Lo script configure dovrebbe riconoscere automaticamente la tua scheda, la compilazione dovrebbe procedere senza problemi.
Utilizzo:
-vo dxr3:noprebuf:<device>
noprebuf
disattiva il prebuffering. Il prebuffering è una caratteristica
del chip em8300 che gli consente di tenere più di un frame del video alla volta.
Qusto significa che quando utilizzi il prebuffering (default)
MPlayer tenta di tenere sempre pieno il buffer video.
Se sei su una macchina lenta probabilmente MPlayer userà circa
o esattamente il 100% della CPU. Questa situazione è comune in particolare nella riproduzione
di puri stream MPEG (come DVD, SVCD, ecc.) in quanto MPlayer non deve
ricodificarli in MPEG e riempirà il buffer molto velocemente.noprebuf
. Senza il prebuffering l' em8300 è
molto più sensibile al carico della CPU load, quindi è caldamente consigliato usare l'opzione di
MPlayer -framedrop
per evitare ulteriori perdite di sincronia.<device>
= numero del dispositivo da usare se hai più di una scheda
em8300.
dxr3:noprebuf
funziona, dxr3:1
funziona, ma dxr3:1:noprebuf
non va bene.-ao oss:/dev/em8300_ma-X
X
è il numero del dispositivo
(0 se hai una sola scheda).-aop list=resample:fout=xxxxx
-ac hwac3
).-vop lavc/fame
-vop lavc/fame
.-ac hwac3
Per ottenere l' overlay esegui dxr3view incluso nel pacchetto em8300 prima di
far partire MPlayer. Si possono regolare varie opzioni in dxr3view premendo
T
mentre si tiene il cursore del mouse sulla finestra.
I contenuti MPEG1/2 ora dovrebbero essere riconosciuti automaticamente da MPlayer,
che userà l'accelerazione hardware del DXR3 per riprodurli. Se questo non avviene, puoi
forzare l'accelerazione hardware con -vc mpegpes
. Inoltre, se hai
intenzione di usare filtri per il postprocessing devi usare -vc mpeg12
.
In alcuni casi, i sottotitoli potrebbero non apparire in sincronia col flusso A/V
quando si usa la decodifica hardware (-vc mpegpes
). Qusto è un bug
conosciuto. L' em8300 gestisce anche male i sottotitoli troppo grandi,
e potrebbe fermarsi per un secondo o due. Al momento l'unico modo per aggirare il problema
è usare -vc mpeg12
quando si guardano DVD con sottotitoli. Con
-vc mpeg12
MPlayer ricodifica il video in MPEG (anche nel caso in cui
è già MPEG). Questo significa che necessita una maggiore potenza della CPU, e potresti
perdere un po' di qualità dell'immagine.
Sotto Linux hai due modi per far funzionare l'output TV delle G400 :
IMPORTANTE: per istruzioni sul supporto TV-out delle Matrox G450/G550) vedi la prossima sezione!
-vo x11 -fs -zoom
,
ma sarà LENTO, e ha la protezione da copia Macrovision
abilitata (puoi "aggirare" Macrovision usando
questo script perl.
TVout/matroxset
e fai make
. Installa
matroxset
da qualche parte nel tuo PATH.fbset
installato, entra in
TVout/fbset
e fai make
. Installa
fbset
da qualche parte nel tuo PATH.TVout/
dei sorgenti di MPlayer,
ed esegui ./modules
da root. La tua console in modalità testo
entrerà in modalità framebuffer (non si può tornare indietro!)../matroxtv
. Questo ti presenterà un
menu molto semplice. Premi 2 e ENTER. Ora dovresti avere la stessa immagine
sul monitor e sulla TV. Se
l'immagine della TV (PAL di default) ha delle strane strisce, lo script non è stato in grado di
settare correttamente la risoluzione (a 640x512 di default). Prova altre
risoluzioni e/o esperimenta con fbsetYoh. Il prossimo compito è quello di far scomparire il cursore su tty1 (o quello che è), e disattivare lo spegnimento dello schermo. Esegui i seguenti comandi:
echo -e '\033[?25l'
o setterm -cursor off
setterm -blank 0
Probabilmente vorrai metterli in uno script, e anche pulire lo
schermo.. Per riavere il cursore :echo -e '\033[?25h'
o setterm -cursor on
Inizia la riproduzione del filmato con mplayer -vo mga -fs -screenw 640
-screenh 512 <nomefile>
(se usi X, ora cambia a matroxfb con per esempio CTRL-ALT-F1 !)
Cambia 640x512 se hai impostato la risoluzione diversamente..
Goditi l' ultra-veloce output TV Matrox (meglio di Xv) !
2.3.1.A.2 Schede Matrox G450/G550
Il supporto al TV output per queste schede è stato introdotto solo recentemente, e non è ancore ne kernel ufficiale. Al momento il modulo mga_vid non può essere usato AFAIK, perchè il driver G450/G550 funziona solo in una configurazione: il primo chip CRTC (con molte più caratteristiche) sul primo display (sul monitor), e il secondo CRTC (non BES - per una spiegazione del BES, vedi la sezione G400 sopra) sulla TV. Quindi al momento puoi usare solo il driver di output fbdev di MPlayer.
Il primo CRTC non può essere indirizzato alla seconda uscita, al momento. L'autore del driver del kernel matroxfb - Petr Vandrovec - ne implementerà probabilmente il supportp, visualizzando l'output del primo CRTC su entrambe le uscite insieme, come attualmente raccomandato per la G400, vedi la sezione sopra.
La necessaria patch del kernel e le istruzioni dettagliate sono scaricabili da http://www3.sympatico.ca/dan.eriksen/matrox_tvout
PREAMBOLO
Attualmente ATI non vuole supportare nessuno dei suoi chip TV-out sotto Linux
a causa della tecnologia sotto licenza della Macrovision che utilizzano.
STATO DEL TV-OUT DELLE SCHEDE ATI SOTTO LINUX
Con altre schede, usate semplicemente il driver VESA, senza Vidix. Però è necessaria una CPU potente.
La sola cosa che devi fare - collegare la TV prima di avviare il PC in quanto il BIOS video viene inizializzato solo al momento della procedura di POST.
Controlla questa URL.