# kldload snd_emu10k1
Capitolo 7. Multimedia
This translation may be out of date. To help with the translations please access the FreeBSD translations instance.
Indice
7.1. Sinossi
FreeBSD supporta una grande varietà di schede audio, permettendoti di apprezzare un output di alta fedeltà dal tuo computer. Questo include l’abilità di registrare e riprodurre suoni nei formati MPEG Audio Layer 3 (MP3), WAV, ed Ogg Vorbis così come in molti altri formati. La FreeBSD Ports Collection contiene inoltre applicazioni che ti permettono di modificare l’audio registrato, aggiungere effetti sonori, e controllare i dispositivi MIDI collegati.
Con un po' di sperimentazione, FreeBSD può supportare la riproduzione di file video e DVD. Il numero di applicazioni per codificare, convertire, e riprodurre i vari formati video è più limitato del numero delle applicazioni audio. Per esempio nel momento in cui sto scrivendo, non esiste nella FreeBSD Ports Collection una buona applicazione per ricodificare che potrebbe essere usata per la conversione tra diversi formati, come c’è con audio/sox. Tuttavia, il panorama software in quest’area sta rapidamente cambiando.
Questo capitolo descriverà i passi necessari per configurare la tua scheda audio. La configurazione e l’installazione di X11 (L’X Window System) si sono già prese cura dei problemi hardware della tua scheda video, sebbene ci possano essere delle ottimizzazioni da applicare per una migliore riproduzione.
Dopo aver letto questo capitolo, saprai:
Come configurare il sistema in modo che la scheda audio venga riconosciuta.
Metodi per verificare che la tua scheda funzioni.
Come risolvere i problemi di configurazione audio.
Come riprodurre e codificare file MP3.
Come sono supportate le applicazioni video dal server X.
Alcuni port per riprodurre/codificare filmati che danno buoni risultati.
Come riprodurre i DVD e i file .mpg e .avi.
Come estrarre i contenuti da CD e DVD su file.
Come configurare una scheda TV.
Come configurare uno scanner di immagini.
Prima di leggere questo capitolo, dovresti:
Sapere come configurare e installare un nuovo kernel (Configurazione del Kernel di FreeBSD).
Provare a montare CD audio con il comando mount(8) produrrà un errore, come minimo, o un kernel panic, alla peggio. Questi formati hanno codifiche particolari che differiscono dal comune file system ISO. |
7.2. Configurazione della Scheda Audio
7.2.1. Configurare il Sistema
Prima di iniziare, dovresti conoscere il modello della scheda che possiedi, il chip che utilizza, e se è una scheda PCI o ISA. FreeBSD supporta diverse schede PCI e ISA. Verifica la lista dei dispositivi audio supportati nell' Hardware Notes per vedere se la tua scheda è supportata. Inoltre tale documento ti indicherà quale driver supporta la tua scheda.
Per usare il tuo dispositivo audio, dovrai caricare i driver corretti. Il caricamento del driver del dispositivo può essere fatto in due modi. Il metodo più semplice consiste semplicemente nel caricare un modulo nel kernel per la tua scheda audio con kldload(8) che può essere fatto sia da linea di comando:
sia aggiungendo la riga appropriata al file /boot/defaults/loader.conf come questa:
snd_emu10k1_load="YES"
Questi esempi sono per la scheda audio Creative SoundBlaster® Live!. Altri moduli sonori disponibili sono elencati in /boot/loader.conf. Se hai dei dubbi su quale driver usare, potresti provare a caricare il modulo snd_driver:
# kldload snd_driver
Questo è un metadriver che carica i driver dei dispositivi audio più comuni in un solo colpo. Ciò permette di trovare velocemente il driver corretto. È anche possibile caricare tutti i driver audio attraverso il file /boot/loader.conf.
Se desideri scoprire il driver selezionato per la tua scheda audio dopo aver caricato il metadriver snd_driver, puoi verificare il file /dev/sndstat con il comando cat /dev/sndstat
.
Un altro metodo è quello di compilare staticamente il supporto per la tua scheda audio nel kernel. La sezione seguente fornisce le informazioni di cui hai bisogno per aggiungere il supporto al tuo hardware in questo metodo. Per informazioni aggiuntive su come ricompilare il kernel, guarda il Configurazione del Kernel di FreeBSD.
7.2.1.1. Configurare un Kernel Custom con il Supporto Audio
La prima cosa da fare è aggiungere al kernel il driver di framework audio sound(4); per fare ciò devi aggiungere la seguente riga al tuo file di configurazione del kernel:
device sound
Poi, devi aggiungere il supporto per la tua scheda audio. Di conseguenza, devi conoscere quale driver supporta la scheda. Controlla la lista dei dispositivi audio supportati nell’Hardware Notes, per determinare il driver corretto per la tua scheda sonora. Per esempio, la scheda SoundBlaster® Live! della Creative è supportata dal driver snd_emu10k1(4). Per aggiungere il supporto per questa scheda, usiamo la seguente riga:
device snd_emu10k1
Per conoscere la corretta sintassi da usare assicurati di leggere la pagina man del driver. La sintassi corretta per la configurazione del kernel di ogni driver audio supportato può essere trovata nel file /usr/src/sys/conf/NOTES.
Schede ISA non-PnP possono obbligarti a fornire al kernel informazioni su alcuni settaggi della scheda audio (IRQ, porta di I/O, etc), tipico di tutte le scheda ISA non-PnP. Questo può essere realizzato attraverso il file /boot/device.hints. All’avvio del sistema, il loader(8) leggerà questo file e passerà i settaggi al kernel. Per esempio, una vecchia scheda audio SoundBlaster® 16 ISA non-PnP della Creative userà il driver snd_sbc(4) in congiunzione con snd_sb16
. Per questa scheda le seguenti linee devono essere aggiunte al file di configurazione del kernel:
device snd_sbc device snd_sb16
e queste nel /boot/device.hints:
hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15"
In questo caso, la scheda usa la porta di I/O 0x220
e l’IRQ 5
.
La sintassi usata nel file /boot/device.hints è spiegata nella pagina man di sound(4) e nella pagina man del driver in questione.
Il settaggi qui sopra sono quelli di default. In alcuni casi, potresti avere la necesità di modificare l’IRQ o altri parametri per far funzionare la tua scheda audio. Guarda la pagina man di snd_sbc(4) per maggiori dettagli su questo driver.
7.2.2. Collaudo della Scheda Audio
Dopo aver riavviato con il nuovo kernel, o dopo aver caricato il modulo richiesto, la scheda audio dovrebbe apparire nel tuo buffer dei messaggi (dmesg(8)) in modo simile a quanto segue:
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>
Lo stato della scheda audio può essere verificato leggendo il file /dev/sndstat:
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)
L’output del tuo sistema potrebbe essere diverso. Se nessun dispositivo pcm viene visualizzato, rivedi ciò che è stato fatto di recente. Ricontrolla ancora una volta il tuo file di configurazione del kernel e assicurati di aver scelto il driver corretto. Alcuni problemi comuni sono elencati nella Problemi Comuni.
Se tutto va bene, ora dovresti avere una scheda audio funzionante. Se i pin di audio-out del tuo drive CD-ROM o DVD-ROM sono collegati correttamente alla scheda audio, puoi inserire un CD nel drive e riprodurlo con cdcontrol(1):
% cdcontrol -f /dev/acd0 play 1
Varie applicazioni, come audio/workman possono offrire una migliore interfaccia. Potresti voler installare una applicazione come audio/mpg123 per ascoltare i file audio MP3.
Un altro modo veloce per controllare se la scheda trasmette dati al nodo /dev/dsp è questo:
% cat filename > /dev/dsp
dove filename può essere qualsiasi file. Questo comando dovrebbe produrre del rumore, confermando che la scheda sonora sta lavorando.
I livelli del mixer della scheda possono essere modificati attraverso il comando mixer(8). Maggiori dettagli possono essere trovati nella pagina man mixer(8).
7.2.2.1. Problemi Comuni
Errore | Soluzione |
---|---|
| Non è stata impostata correttamente la porta di I/O. |
| È stato configurato erroneamente l’IRQ. Assicurati che l’IRQ impostato e quello della scheda siano gli stessi. |
| Non c’è abbastanza memoria disponibile per usare il dispositivo. |
| Controlla con |
7.2.3. Utilizzo di Sorgenti Audio Multiple
È spesso desiderabile avere più sorgenti di audio che siano in grado di suonare contemporaneamente, per esempio quando esound o artsd non supportano la condivisione del dispositivo audio con una certa applicazione.
FreeBSD ti permette di fare questo attraverso i Virtual Sound Channels, che possono essere abilitati con sysctl(8). I canali virtuali permettono di multiplexare i canali di riproduzione della tua scheda audio mixando l’audio nel kernel.
Per impostare il numero dei canali virtuali, ci sono due variabili sysctl che, se sei l’utente root
, possono essere impostate così:
# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4
L’esempio qui sopra alloca quattro canali virtuali, che è un numero adatto all’uso di ogni giorno. hw.snd.pcm0.vchans
è il numero dei canali virtuali che ha pcm0, ed è configurabile una volta che il dispositivo è collegato. hw.snd.maxautovchans
è il numero dei canali virtuali che vengono dati a un nuovo dispositivo audio quando viene collegato tramite kldload(8). Visto che il modulo pcm può essere caricato indipendentemente dai driver dell’hardware, hw.snd.maxautovchans
può contenere tanti canali virtuali quanti ne verranno allocati successivamente ad ogni dispositivo collegato.
Non puoi cambiare il numero di canali virtuali per un dispositivo mentre questo è in uso. Chiudi tutti i programmi che stanno usando quel dispositivo, come player di musica o demoni del suono. |
7.2.4. Settare i Valori di Default per i Canali del Mixer
I valori di default per i diversi canali del mixer sono rigidamente codificati nel codice sorgente del driver pcm(4). Ci sono svariate applicazioni e demoni che ti permettono di settare i valori del mixer memorizzandoli per le successive invocazioni, ma questa non è una soluzione pulita. È possibile settare valori di default del mixer a livello del driver - questo è realizzabile definendo i valori desiderati nel file /boot/device.hints, per esempio:
hint.pcm.0.vol="50"
Questo imposterà il canale volume a un valore di default di 50 non appena il modulo pcm(4) sarà caricato.
7.3. Audio MP3
Il formato MP3 (Audio MPEG Livello 3) raggiunge una qualità audio vicina a quella dei CD, non lasciandoti motivi per non utilizzarlo sulla tua workstation FreeBSD.
7.3.1. Lettori MP3
Da tempo, il più famoso lettore MP3 per X11 è XMMS (X Multimedia System). Le skin per Winamp possono essere usate con XMMS visto che la GUI è praticamente identica a quella di Winamp della Nullsoft. XMMS ha inoltre supporto nativo ai plug-in.
XMMS può essere installato dal port o dal package multimedia/xmms.
L’interfaccia di XMMS è intuitiva, comprende una lista di brani da eseguire, un equalizzatore grafico, ed altro. Coloro che sono familiari con Winamp troveranno XMMS semplice da usare.
Il port audio/mpg123 è un lettore MP3 alternativo, da riga di comando.
mpg123 può essere eseguito specificando il dispositivo audio e il nome del file MP3 sulla riga di comando, come mostrato qui sotto:
# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.0
deve essere sostituito con il dispositivo dsp presente sul tuo sistema.
7.3.2. Estrazione delle Tracce Audio dei CD
Prima di codificare un CD o una traccia di CD in MP3, i dati audio sul CD devono essere estratti sul disco fisso. Questo avviene copiando direttamente i dati CDDA (CD Digital Audio) in file WAV.
Il tool cdda2wav
, che fa parte della suite sysutils/cdrtools, viene usato per estrarre le informazioni audio dai CD e i dati associati.
Mentre il CD audio è nel lettore, può essere eseguito il seguente comando (come root
) per estrarre un intero CD in singoli (per traccia) file WAV:
# cdda2wav -D 0,1,0 -B
cdda2wav supporta anche i lettori CDROM ATAPI (IDE). Per estrarre da un lettore IDE, specifica il nome del dispositivo al posto nel numero dell’unità SCSI. Ad esempio, per estrarre la traccia 7 dal lettore IDE:
# cdda2wav -D /dev/acd0 -t 7
Il -D 0,1,0
indica il dispositivo SCSI 0,1,0, che corrisponde all’output di cdrecord -scanbus
.
Per estrarre tracce singole, usa l’opzione -t
come mostrato:
# cdda2wav -D 0,1,0 -t 7
Questo esempio estrae la settima traccia del CD audio. Per estrarre una serie di tracce, per esempio dalla traccia uno alla sette, specifica un intervallo:
# cdda2wav -D 0,1,0 -t 1+7
L’utility dd(1) può anche essere usata per estrarre le tracce audio dai drive ATAPI, leggi Duplicating Audio CDs per maggiori informazioni su questa possibilità.
7.3.3. Codifica in MP3
Al giorno d’oggi, il programma di codifica in mp3 da scegliere è lame. Lame può essere trovato in audio/lame nell’albero dei port.
Usando i file WAV estratti, il seguente comando convertirà audio01.wav in audio01.mp3:
# lame -h -b 128 \
--tt "Titolo" \
--ta "Artista" \
--tl "Album" \
--ty "2002" \
--tc "Estratto e codificato da Blah" \
--tg "Genere" \
audio01.wav audio01.mp3
128 kbits sembra essere il bitrate standard in uso per gli MP3. Molti preferiscono la qualità maggiore dei 160, o 192. Più alto è il bitrate, più spazio consumerà l’MP3 risultante—ma la qualità sarà maggiore. L’opzione -h
attiva il modo "qualità migliore ma un po' più lento"". Le opzioni che iniziano con --t
indicano i tag ID3, che solitamente contengono le informazioni sulla canzone, da inserire all’interno del file MP3. Ulteriori opzioni di codifica possono essere trovate consultando la pagina man di lame.
7.3.4. Decodifica da MP3
Per masterizzare un CD audio partendo dagli MP3, questi ultimi devono essere convertiti in un formato WAV non compresso. Sia XMMS che mpg123 supportano l’output di un MP3 in un formato non compresso.
Scrittura su Disco con XMMS:
Avvia XMMS.
Clicca con il tasto destro sulla finestra per far comparire il menu di XMMS.
Seleziona
Preference
sottoOptions
.Cambia l’Output Plugin in "Disk Writer Plugin".
Premi
Configure
.Inserisci (o scegli browse) la directory in cui salvare i file decompressi.
Carica il file MP3 in XMMS come al solito, con il volume al 100% e le impostazioni dell’equalizzatore disattivate.
Premi
Play
- XMMS apparirà come se stesse riproducendo l’MP3, ma non si sentirà nessuna musica. Sta riproducendo la musica su un file.Assicurati di reimpostare l’Output Plugin di default come prima per ascoltare nuovamente gli MP3.
Scrittura su stdout con mpg123:
Esegui
mpg123 -s audio01.mp3 > audio01.pcm
XMMS scrive un file nel formato WAV, mentre mpg123 converte l’MP3 direttamente in dati audio PCM. Entrambi questi formati possono essere usati con cdrecord per creare CD audio. Devi utilizzare PCM con burncd(8). Se usi file WAV, noterai un breve ticchettio all’inizio di ogni traccia, questo suono è l’intestazione del file WAV. Puoi semplicemente rimuovere l’intestazione del file WAV con l’utility SoX (può essere installata dal port o dal package audio/sox):
% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw
Leggi Creating and Using Optical Media (CDs & DVDs) per ulteriori informazioni su come usare un masterizzatore con FreeBSD.
7.4. Riproduzione Video
La riproduzione video è un’area applicativa molto recente e in rapido sviluppo. Sii paziente. Non tutto funzionerà così facilmente come è stato per l’audio.
Prima di iniziare, dovresti conoscere il modello della scheda video che possiedi e il chip che usa. Sebbene Xorg e XFree86™ supportino una vasta varietà di schede video, poche offrono buone prestazioni in riproduzione. Per ottenere una lista di estensioni supportate dall’X server con la tua scheda usa il comando xdpyinfo(1) mentre X11 sta girando.
È una buona idea avere un piccolo file MPEG che possa essere trattato come un file di test per la valutazione di vari riproduttori e opzioni. Visto che alcuni riproduttori di DVD cercheranno di default i DVD in /dev/dvd, o hanno questo nome di dispositivo codificato permanentemente al loro interno, potresti trovare utile creare dei link simbolici al dispositivo corretto:
# ln -sf /dev/acd0 /dev/dvd
# ln -sf /dev/acd0 /dev/rdvd
Nota che, data la natura del devfs(5), i collegamenti creati a mano come questi non rimarranno se riavvii il sistema. Per creare i collegamenti simbolici automaticamente quando avvii il sistema, aggiungi le seguenti righe in /etc/devfs.conf:
# ln -sf /dev/acd0c /dev/dvd
# ln -sf /dev/acd0c /dev/rdvd
In aggiunta, la decrittazione dei DVD, che richiede l’invocazione di speciali funzioni dei DVD-ROM, richiede il permesso in scrittura sui dispositivi DVD.
Per migliorare l’interfaccia della memoria condivisa di X11, è consigliabile incrementare i valori di alcune variabili sysctl(8):
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
7.4.1. Determinazione delle Capacità Video
Ci sono molti modi possibili per visualizzare immagini e filmati con X11. Quello che funzionerà meglio in pratica dipende in gran parte dal tuo hardware. Ogni metodo descritto qui sotto avrà una qualità variabile su hardware differente. In secondo luogo, il rendering video in X11 è un argomento che sta ricevendo un sacco di attenzione ultimamente, e con ogni nuova versione di Xorg, o di XFree86™ ci possono essere notevoli miglioramenti.
Una lista di interfacce video comuni:
X11: normale output di X11 che usa la memoria condivisa.
XVideo: un’estensione all’interfaccia X11 che supporta grafica e filmati in ogni oggetto X11 disegnabile.
SDL: Simple Directmedia Layer.
DGA: Direct Graphics Access.
SVGAlib: interfaccia di basso livello per la grafica da console.
7.4.1.1. XVideo
Xorg e XFree86™ 4.X hanno un’estensione chiamata XVideo (aka Xvideo, aka Xv, aka xv) che permette di visualizzare grafica e filmati direttamente negli oggetti disegnabili attraverso una speciale accelerazione. Questa estensione fornisce una riproduzione di ottima qualità anche su macchine poco potenti.
Per controllare se l’estensione sta girando, usa xvinfo
:
% xvinfo
XVideo è supportato dalla tua scheda se il risultato è simile a:
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
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
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)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0
Inoltre tieni presente che i formati elencati (YUV2, YUV12, ecc) non sono presenti in tutte le implementazioni di XVideo e la loro assenza può ostacolare alcuni programmi.
Se il risultato è:
X-Video Extension version 2.2
screen #0
no adaptors present
Allora XVideo probabilmente non è supportato per la tua scheda.
Se XVideo non è supportato per la tua scheda, questo vuol dire solamente che sarà più difficile soddisfare le richieste computazionali per il rendering video. A seconda della tua scheda video e del tuo processore, comunque, potresti essere ancora in grado di avere un’esperienza soddisfacente. Dovrai probabilmente dare un occhio ai modi per migliorare le prestazioni nella lettura avanzata Ulteriori Letture.
7.4.1.2. Simple Directmedia Layer
Il Simple Directmedia Layer, SDL, vuole essere un’interfaccia di portabilità tra Microsoft® Windows, BeOS, e UNIX®, che possa permettere di sviluppare applicazioni multi-piattaforma che facciano buon uso di suoni e grafica. L’interfaccia SDL fornisce una astrazione di basso livello all’hardware che può a volte essere più efficiente dell’interfaccia X11.
L’SDL può essere trovata in devel/sdl12.
7.4.1.3. Direct Graphics Access
Direct Graphics Access è un’estensione di X11 che permette a un programma di evitare il server X ed alterare direttamente il buffer video. Siccome si basa su una mappatura di memoria a basso livello per effettuare questa condivisione, i programmi che la usano devono essere avviati da root
.
L’estensione DGA può essere testata con dga(1). Quando dga
è in esecuzione, cambia i colori del display ogni volta che viene premuto un tasto. Per uscire, premi q.
7.4.2. Port e Package che Riguardano il Video
In questa sezione si discuterà del software disponibile nella FreeBSD Port Collection che possono essere usati per la riproduzione video. La sezione software sulla riproduzione video è in continuo sviluppo, per cui le caratteristiche delle varie applicazioni sono destinate a differire dalla descrizione che segue.
In primo luogo, è importante sapere che molte delle applicazioni video che girano su FreeBSD sono stati sviluppate come applicazioni Linux. Molte di queste applicazioni sono ancora in fase beta. Alcuni dei problemi che puoi incontrare con i package video su FreeBSD comprendono:
Un’applicazione non riesce a riprodurre un file generato da un’altra applicazione.
Un’applicazione non riesce a riprodurre un file che lei stessa ha prodotto.
Lo stesso applicativo posto su due computer diversi, ricompilato su ognuno dei due computer, riproduce lo stesso file in modo diverso.
Da un filtro apparentemente banale quale il ridimensionamento di un’immagine si ottenga un pessimo risultato derivato da una routine di ridimensionamento bacata.
Un’applicazione che genera frequentemente file "core".
La documentazione non viene installata con il port e può essere trovata sul web o nella directory work del port.
Molte di queste applicazioni possono anche esibire "Linuxismi". Ovvero, ci possono essere problemi risultanti dal modo in cui le librerie standard sono state implementate nelle distribuzioni Linux, o alcune modifiche al kernel di Linux che sono state apportate dagli autori delle applicazioni. Questi problemi possono non essere stati notati e aggirati dal mantainer del port, e possono portare comunque a problemi come questi:
L’uso di /proc/cpuinfo per riconoscere le caratteristiche del processore.
Un uso errato dei thread che può portare un programma a bloccare la propria esecuzione piuttosto che terminare correttamente.
Software non ancora presente nella collezione dei port di FreeBSD che è comunemente usato unitamente all’applicazione.
A questo punto, gli sviluppatori di queste applicazioni sono stati collaborativi con i maintainer dei port al fine di minimizzare la ricerca di soluzioni necessarie al processo di porting.
7.4.2.1. MPlayer
MPlayer è stata sviluppata di recente ed è un player in rapida evoluzione. Gli obbiettivi degli sviluppatori di MPlayer sono la velocità e la flessibilità su Linux e le altre famiglie di UNIX®. Il progetto è partito non appena il fondatore del gruppo si stancò delle prestazioni degli altri riproduttori. C’è chi dice che l’interfaccia grafica sia stata sacrificata per un design essenziale. Tuttavia, una volta che si sono imparate perfettamente le opzioni da riga di comando e le scorciatoie, funziona decisamente bene.
7.4.2.1.1. Compilazione di MPlayer
MPlayer è reperibile sotto multimedia/mplayer. MPlayer effettua una serie di controlli sull’hardware durante il processo di compilazione, che ha come risultato un binario che non potrà essere considerato portabile da una piattaforma ad un’altra. Questo è il motivo per cui risulta importante compilarlo usando il port piuttosto che il pacchetto contenente il binario. Inoltre, ulteriori opzioni possono essere specificate nella riga di comando di make
, come descritto nel Makefile e all’inizio della compilazione.
# cd /usr/ports/multimedia/mplayer
# make
N - O - T - E
Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
for example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
if you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.html
Le opzioni di default del port dovrebbero essere sufficienti per la maggior parte degli utenti. Tuttavia, se hai bisogno del codec XviD, devi specificare l’opzione WITH_XVID
nella riga di comando. Inoltre puoi definire il dispositivo DVD di default con l’opzione WITH_DVD_DEVICE
, altrimenti sarà utilizzato di default /dev/acd0.
Al momento, il port MPlayer creerà la sua documentazione in HTML e due eseguibili mplayer
, e mencoder
, che è uno strumento per la ri-codifica video.
La documentazione HTML di MPlayer è molto istruttiva. Qualora il lettore trovasse le informazioni sull’hardware e le interfacce video in questo capitolo scarne, la documentazione di MPlayer risulta essere un ottimo supplemento. Se si stanno cercando informazioni riguardo il supporto video sotto UNIX®, sarebbe utile trovare il tempo di leggere in modo preciso la documentazione di MPlayer.
7.4.2.1.2. Utilizzo di MPlayer
Ogni utente che voglia usare MPlayer deve creare la directory .mplayer sotto la propria home. Per creare questa directory necessaria, puoi digitare il seguente comando:
% cd /usr/ports/multimedia/mplayer
% make install-user
Le opzioni del comando mplayer
sono elencate nella pagina del manuale. Per qualunque altro dettaglio consulta la documentazione HTML. In questa sezione, descriveremo solamente alcuni degli usi più comuni.
Per riprodurre un file, ad esempio testfile.avi, usando una delle varie interfacce video usa l’opzione -vo
:
% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi
È utile provare tutte queste opzioni, considerando che le prestazioni dipendono da svariati fattori e variano in modo considerevole a seconda dell’hardware.
Per riprodurre un DVD, sostituisci testfile.avi con l’opzione dvd://N -dvd-device DISPOSITIVO
dove N corrisponde al numero del titolo da riprodurre e DISPOSITIVO al dispositivo che identifica il DVD-ROM. Per esempio, per riprodurre il terzo titolo da /dev/dvd:
# mplayer -vo xv dvd://3 -dvd-device /dev/dvd
Il dispositivo DVD di default può essere definito durante la compilazione del port MPlayer tramite l’opzione |
Per interrompere, mettere in pausa, andare avanti e così via, leggi l’elenco delle associazioni dei tasti, che vengono elencati eseguendo mplayer -h
o consulta la pagina man.
Ulteriori opzioni utili per la riproduzione sono: -fs -zoom
che abilita la modalità schermo intero e -framedrop
che aiuta le prestazioni.
Perchè la riga di comando di mplayer non diventi eccessivamente lunga, l’utente può creare il file .mplayer/config ed impostare lì i valori predefiniti:
vo=xv fs=yes zoom=yes
In ultimo, è possibile usare mplayer
per estrarre una traccia DVD in un file .vob. Per estrarre la seconda traccia dal DVD, digita questo:
# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
Il file ottenuto, out.vob, sarà in formato MPEG e potrà manipolato da un’altro programma descritto in questa sezione.
7.4.2.1.3. mencoder
Prima di usare mencoder
è una buona idea familiarizzare con le opzioni contenute nella documentazione HTML. Esiste anche una pagina man, ma non è utile senza la documentazione HTML. Esiste un numero considerevole di modi per migliorare la qualità, un bitrate più basso, cambiare codifica ed alcuni di questi trucchi può fare la differenza tra prestazioni più o meno accettabili. Di seguito un paio di esempi per cominciare. Prima di tutto, una semplice copia:
% mencoder input.avi -oac copy -ovc copy -o output.avi
Combinazioni errate di opzioni da riga di comando possono portare a file di output irriproducibili perfino con mplayer
. Di conseguenza, se si vuole semplicemente estrarre una traccia, usare l’opzione -dumpfile
eseguendo in mplayer
.
Per convertire il file input.avi in formato MPEG4 con l’audio codificato in MPEG3 (è necessario audio/lame):
% mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi
Questo comando ha creato un file riproducibile con mplayer
e xine
.
Il parametro input.avi può essere sostituito con dvd://1 -dvd-device /dev/dvd
ed eseguire il comando come root
per ricodificare il capitolo DVD direttamente. Poichè si sarà certamente poco soddisfatti del risultato la prima volta, è consigliato eseguire il dump del capitolo e lavorare direttamente sul file.
7.4.2.2. Il Riproduttore Video xine
Il riproduttore video xine è un progetto dagli ampi obiettivi e non solo l’essere una soluzione unica per la riproduzione, ma anche una libreria di base riutilizzabile ed un eseguibile modulare che possa essere esteso con i plugin. È disponibile sia come pacchetto che come port, sotto multimedia/xine.
xine è ancora un pò rozzo, ma è chiaramente un buon inizio. In pratica, xine necessita sia di una CPU veloce che di una scheda video veloce o il supporto per l’estensione XVideo. L’interfaccia grafica è utilizzabile, ma ancora mal disegnata.
Allo stato attuale, non ci sono moduli distribuiti con xine che possano riprodurre DVD codificati in CSS. Esistono distribuzioni di terze parti che hanno moduli di questo genere già compilati, ma nessuno di questi esiste nella FreeBSD Ports Collection.
Comparato con MPlayer, xine offre maggiori caratteristiche all’utente ma, allo stesso tempo, non rende disponibile all’utente un controllo più accurato. Il riproduttore video xine funziona molto meglio sulle interfacce XVideo.
Di default, xine si avvierà con un’interfaccia grafica. Si possono quindi usare i menu per aprire per aprire un file specifico:
% xine
Alternativamente, può essere invocato per aprire direttamente un file senza l’interfaccia grafica, con il comando:
% xine -g -p mymovie.avi
7.4.2.3. Le Utility transcode
Il software transcode non è un riproduttore, piuttosto un insieme di strumenti per ricodificare file audio e video. Con transcode, si ha la possibilità di unire file video, riparare file corrotti ed utilizzare strumenti da riga di comando con interfaccie che utilizzano i flussi stdin/stdout.
Durante la compilazione del port multimedia/transcode possono essere specificate diverse opzioni, noi ti consigliamo il comando seguente per compilare transcode:
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yes
I settaggi proposti dovrebbero essere sufficienti per la maggior parte degli utenti.
Per illustrare le capacità di transcode
, viene dato un esempio che mostra come convertire un file DivX in un file PAL MPEG-1 (PAL VCD):
% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
% mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa
Il file MPEG risultante, output_vcd.mpg, è pronto per essere letto con MPlayer. Puoi perfino masterizzare il file su un CD-R per creare un Video CD, e in questo caso necessiti di installare ed usare i programmi multimedia/vcdimager e sysutils/cdrdao.
Esiste una pagina man per transcode
, ma dovresti anche consultare il wiki di transcode per ulteriori informazioni ed esempi.
7.4.3. Ulteriori Letture
I vari package di applicazioni video per FreeBSD si stanno evolvendo rapidamente. È abbastanza possibile che in un futuro vicino molti dei problemi discussi qui saranno risolti. Nel frattempo, chiunque voglia ottenere il massimo dalle capacità A/V di FreeBSD, dovrà unire alla meglio la conoscenza che deriva dalle svariate FAQ e guide con l’uso di queste poche applicazioni. Questa sezione esiste per fornire al lettore indicazioni a queste informazioni aggiuntive.
La Documentazione di MPlayer è molto istruttiva sul piano tecnico. Questa documentazione, probabilmente, dovrà essere consultata da chiunque voglia ottenere un alto grado di conoscenza del video sotto UNIX®. La mailing list di MPlayer risulta abbastanza ostile a chiunque non si sia preoccupato di leggere la documentazione, se si ha intenzione di segnalar loro un bug, RTFM.
L’HOWTO di xine contiene un capitolo su come aumentare le prestazioni che è comune a tutti i riproduttori.
In ultimo, ci sono alcuni applicativi promettenti che il lettore può provare:
Avifile che è anche un port multimedia/avifile.
Ogle che è anche un port multimedia/ogle.
multimedia/dvdauthor, un package open source per la creazione di DVD.
7.5. Configurazione delle Schede TV
7.5.1. Introduzione
Le schede TV permettono di visualizzare la TV via onde radio o via cavo sul tuo computer. La maggior parte di queste accettano in input video composito tramite connettori RCA o S-video e alcune di queste schede hanno un sintonizzatore radio FM.
FreeBSD fornisce supporto per le schede TV su bus PCI che usano un chip di acquisizione video Brooktree Bt848/849/878/879 o Conexant CN-878/Fusion 878a tramite il driver bktr(4). Devi anche assicurarti che la scheda abbia un sintonizzatore supportato, consulta la pagina man di bktr(4) per una lista dei sintonizzatori supportati.
7.5.2. Aggiunta del Driver
Per usare la scheda, devi caricare il driver bktr(4), e questo può essere fatto aggiungendo la seguente riga al file /boot/loader.conf in questo modo:
bktr_load="YES"
Alternativamente, puoi compilare staticamente il supporto per la scheda TV nel tuo kernel, in questo caso aggiungi le seguenti righe alla configurazione del tuo kernel:
device bktr device iicbus device iicbb device smbus
Questi driver aggiuntivi sono necessari poiché le componenti della scheda sono interconnesse tramite un bus I2C. Quindi compila ed installa un nuovo kernel.
Una volta che hai aggiunto il supporto al tuo sistema, devi riavviare la macchina. Durante il processo di avvio, la tua scheda TV dovrebbe apparire, come in questo esempio:
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
Ovviamente questi messaggi possono differire a seconda dell’hardware. Tuttavia dovresti controllare se il sintonizzatore viene rilevato correttamente; è sempre possibile modificare alcuni dei parametri rilevati tramite le MIB di sysctl(8) e le opzioni nel file di configurazione del kernel. Ad esempio, se vuoi imporre che il sintonizzatore sia un Philips SECAM, dovresti aggiungere la riga seguente al file di configurazione del kernel:
options OVERRIDE_TUNER=6
o puoi usare direttamente sysctl(8):
# sysctl hw.bt848.tuner=6
Guarda la pagina man di bktr(4) e il file /usr/src/sys/conf/NOTES per maggiori dettagli sulle opzioni disponibili.
7.5.3. Applicazioni Utili
Per usare la tua scheda TV devi installare una delle seguenti applicazioni:
multimedia/fxtv fornisce capacità di TV-in-una-finestra e acquisizione di immagini/audio/video.
multimedia/xawtv è anch’esso un’applicazione TV, con le stesse caratteristiche di fxtv.
misc/alevt decodifica e visualizza Videotext/Teletext.
audio/xmradio, un’applicazione per usare il sintonizzatore radio FM che hanno alcune schede TV.
audio/wmtune, un’applicazione desktop maneggevole per i sintonizzatori radio.
Altre applicazioni sono disponibili nella FreeBSD Ports Collection.
7.5.4. Risoluzione dei Problemi
Se incontri qualche problema con la tua scheda TV, dovresti verificare dapprima se il chip di acquisizione video e il sintonizzatore sono realmente supportati dal driver bktr(4) e se hai usato le corrette opzioni di configurazione. Per maggiore supporto e varie domande sulla tua scheda video potresti voler leggere ed usare gli archivi della mailing list mailing list sulle applicazioni multimediali con FreeBSD.
7.6. Scanner di immagini
7.6.1. Introduzione
In FreeBSD, l’accesso agli scanner è fornito dalle API di SANE (Scanner Access Now Easy) disponibili nella collezione dei port di FreeBSD. SANE usa anche alcuni driver dei dispositivi di FreeBSD per accedere all’hardware dello scanner.
FreeBSD supporta sia scanner SCSI che USB. Verifica che il tuo scanner sia supportato da SANE prima di effettuare ogni configurazione. SANE ha una lista di dispositivi supportati, che può fornire informazioni riguardo il supporto per uno scanner ed il suo stato. La pagina man uscanner(4) fornisce una lista di scanner USB supportati.
7.6.2. Configurazione del Kernel
Come già menzionato, sono supportati sia scanner USB che SCSI. A seconda dell’interfaccia del tuo scanner, sono richiesti diversi driver dei dispositivi.
7.6.2.1. Interfaccia USB
Il kernel GENERIC di default include i driver dei dispositivi necessari per il funzionamento degli scanner USB. In caso tu voglia usare un kernel custom, accertati che le linee seguenti siano presenti nel tuo file di configurazione del kernel:
device usb device uhci device ohci device uscanner
A seconda del tipo di chipset USB sulla tua scheda madre, hai bisogno solo di una fra le opzioni device uhci
e device ohci
, comunque avere entrambe le linee nel proprio file di configurazione del kernel non crea problemi.
Se non intendi ricompilare un kernel custom ed il tuo kernel non è il GENERIC, puoi direttamente caricare il modulo del driver del dispositivo di uscanner(4) con il comando kldload(8):
# kldload uscanner
Per caricare il modulo ad ogni avvio di sistema, aggiungi la seguente linea al file /boot/loader.conf:
uscanner_load="YES"
Dopo aver riavviato con il kernel corretto, o dopo aver caricato il modulo necessario, attacca il tuo scanner USB. Nel buffer dei messaggi di sistema (dmesg(8)) dovrebbe apparire una riga che mostra il riconoscimento dello scanner:
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
Questo mostra che il nostro scanner usa il nodo del dispositivo /dev/uscanner0.
7.6.2.2. Interfaccia SCSI
Se il tuo scanner possiede un’interfaccia SCSI, è importante sapere quale controller SCSI usi. A seconda del chipset SCSI usato, dovrai modificare il tuo file di configurazione del kernel. Il kernel GENERIC supporta i più comuni controller SCSI. Accertati di leggere il file di NOTES e aggiungi la linea corretta al tuo file di configurazione del kernel. Oltre al driver dell’interfaccia SCSI, devi avere le seguenti linee nel tuo file di configurazione del kernel:
device scbus device pass
Una volta che il kernel è stato correttamente compilato ed installato, dovresti vedere i dispositivi nel buffer dei messaggi di sistema, al momento del boot:
pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers
Se il tuo scanner non era acceso al momento dell’avvio, è ancora possibile forzare manualmente il riconoscimento attraverso uno scan del bus SCSI con il comando camcontrol(8):
# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful
A questo punto lo scanner apparirà nella lista dei device SCSI:
# camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
Ulteriori dettagli sui dispositivi SCSI sono disponibili nelle pagine man scsi(4) e camcontrol(8).
7.6.3. Configurazione di SANE
Il sistema SANE è diviso in due parti: il backend (graphics/sane-backends) ed il frontend (graphics/sane-frontends). La parte backend fornisce accesso allo scanner. La lista dei dispositivi supportati da SANE specifica quale backend supporta il tuo scanner di immagini. È necessario determinare il corretto backend per il tuo scanner se intendi usare il tuo dispositivo. La parte frontend fornisce l’interfaccia grafica allo scanning (xscanimage).
La prima cosa da fare è installare il port o il pacchetto graphics/sane-backends. Quindi, usa il comando sane-find-scanner
per verificare il riconoscimento dello scanner da parte del sistema SANE:
# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
L’output mostrerà il tipo di interfaccia dello scanner ed il nodo del dispositivo usato per connettere lo scanner al sistema. La marca ed il nome del modello potrebbero non comparire, non è importante.
Alcuni scanner USB richiedono il caricamento di un firmware, ciò è spiegato nella pagina man del backend. È utile anche leggere le pagine man di sane-find-scanner(1) e di linprocfs(7). |
Adesso dobbiamo verificare se lo scanner sarà identificato da un frontend di scanning. Di default, il backend di SANE fornisce un programma da linea di comando chiamato sane(1). Questo comando ti permette di elencare i dispositivi ed effettuare un’acquisizione di immagini da linea di comando. L’opzione -L
è usata per ottenere una lista di scanner:
# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Nessun output o un messaggio che dice che nessuno scanner è stato identificato indica che sane(1) non è in grado di identificare lo scanner. Se ciò succede, dovrai editare il file di configurazione del backend ed indicare il driver del dispositivo usato dallo scanner. La directory /usr/local/etc/sane.d/ contiene tutti i file di configurazione del backend. Questo problema di identificazione avviene con alcuni scanner USB.
Ad esempio, usando Interfaccia USB, sane-find-scanner
su uno scanner USB otteniamo la seguente informazione:
# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device
/dev/uscanner0
Lo scanner è stato riconosciuto correttamente, usa l’interfaccia USB ed è attaccato al nodo del dispositivo /dev/uscanner0. Ora possiamo testare se lo scanner è correttamente identificato:
# scanimage -L
Nessun scanner è stato identificato. Se ti aspettavi qualcosa di diverso,
verifica che lo scanner sia collegato, accendilo e avvia il tool di
riconoscimento degli scanner di sane (se adatto). Per cortesia leggi la
documentazione fornita con questo software (README, FAQ, pagine man).
Dato che lo scanner non è stato identificato, dovremo editare il file /usr/local/etc/sane.d/epson.conf. Il modello di scanner usato è l’EPSON Perfection® 1650, così sappiamo che userà il backend epson
. Accertati di leggere i commenti di aiuto nei file di configurazione del backend. Le modifiche alle linee sono abbastanza semplici: commenta tutte le linee che hanno un’interfaccia non adatta al tuo scanner (nel nostro caso, commenteremo tutte le linee che iniziano con la parola scsi
dato che il nostro scanner usa l’interfaccia USB), quindi aggiungi alla fine del file una linea che specifica l’interfaccia ed il nodo di dispositivo usato. In questo caso, aggiungiamo la seguente linea:
usb /dev/uscanner0
Sei invitato a leggere i commenti presenti nel file di configurazione del backend così come le pagine man del backend per più dettagli e per la corretta sintassi da usare. Ora possiamo verificare se lo scanner è identificato:
# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
Il nostro scanner USB è stato riconosciuto. Non è importante se la marca ed il modello non coincidono con il proprio scanner. Il punto principale a cui prestare attenzione è il campo epson:/dev/uscanner0
, che ci dà il corretto nome del backend ed il corretto nodo del dispositvo.
Una volta che il comando scanimage -L
è in grado di vedere lo scanner, la configurazione è completa. Il dispositivo ora è in grado di scannerizzare.
Mentre sane(1) ci permette di effettuare l’acquisizione di un’immagine dalla linea di comando, è preferibile usare un’interfaccia grafica per effettuare scansioni di immagini. SANE offre una semplice ma efficace interfaccia grafica: xscanimage (graphics/sane-frontends).
Xsane (graphics/xsane) è un altro comune frontend grafico di scanning. Questo frontend offre caratteristiche avanzate come varie tecniche di scanning (fotocopia, fax, etc.), correzione del colore, scans multipli, etc. Entrambe queste applicazioni sono fruibili come plugin di GIMP.
7.6.4. Permettere ad Altri Utenti l’Accesso allo Scanner
Tutte le operazioni precedenti sono state compiute con privilegi di root
. Tuttavia potresti aver bisogno che altri utenti abbiano accesso allo scanner. L’utente necessiterà permessi di lettura e scrittura sul nodo di dispositivo usato dallo scanner. Per esempio, il nostro scanner USB usa il nodo di dispositivo /dev/uscanner0 che appartiene al gruppo operator
. Aggiungendo l’utente joe
al gruppo operator
gli permetterà di usare lo scanner:
# pw groupmod operator -m joe
Per maggiori informazioni consulta la pagina man di pw(8). Inoltre devi settare corretamente i permessi di scrittura (0660 o 0664) per il nodo del dispositivo /dev/uscanner0; di default il gruppo operator
può solo leggere questo nodo di dispositivo. Tale operazione può essere realizzata aggiungendo la seguente riga al file /etc/devfs.rules:
[system=5] add path uscanner0 mode 660
Quindi aggiungi la seguente riga al file /etc/rc.conf e riavvia la macchina:
devfs_system_ruleset="system"
Ulteriori informazioni riguardo queste righe possono essere trovate nella pagina man di devfs(8).
Chiaramente, per ragioni di sicurezza, dovresti pensarci due volte prima di aggiungere un utente a qualsiasi gruppo, specialmente al gruppo |
Ultima modifica: 9 marzo 2024 da Danilo G. Baio