Apertura del subsistema PCM in modalità Registrazione

Da Gambas-it.org - Wikipedia.
Versione del 18 giu 2013 alle 15:11 di Vuott (Discussione | contributi) (Creata pagina con 'Per aprire il sub-sistema PCM di ALSA in modalità "''Registrazione''" bisognerà dotarsi di un ''handle'' specifico e diverso da quello relativo alla modalità in ''Riproduzi...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Per aprire il sub-sistema PCM di ALSA in modalità "Registrazione" bisognerà dotarsi di un handle specifico e diverso da quello relativo alla modalità in Riproduzione.

Si utilizzerà come parametro stream, che rappresenta la direzione del flusso dei dati audio, della funzione snd_pcm_open il valore espresso dalla costante di ALSA: SND_PCM_STREAM_CAPTURE.

Pertanto l'apertura del dispositivo PCM di ALSA avverrà in modo simile a quella effettuata la Riproduzione audio.

Si dichiarera all'inizio la libreria specifica di ALSA:

Library "libasound:2"


Private handle As Pointer
Private device As String = "default"
Private Const SND_PCM_STREAM_CAPTURE As Byte = 1

Si dichiara con Extern la funzione specifica per l'apertura del sub-sistema PCM di ALSA:

Private Extern snd_pcm_open(handleP As Pointer, nome As String, flusso As Integer, 0) As Integer

e potremo, quindi, in subroutine richiamare detta funzione per l'uso:

err = snd_pcm_open(VarPtr(handle), device, SND_PCM_STREAM_CAPTURE, 0)


Impostazioni generali

Le altre impostazioni sono identiche alle impostazioni viste per la modalità in Riproduzione.


Funzione per la registrazione dei dati

Per un accesso di tipo noninterleaved si userà la funzione snd_pcm_readn. Essa legge i frames contenuti dalla variabile numFrames dal dispositivo PCM puntato dalla variabile di tipo pointer handle nel buffer cattdati.
Ovviamente andrà preventivamente dichiarata con la funzione Extern.

snd_pcm_readn(handle, cattdati, numframes)

Anche in questo caso bisognerà far sì che l'applicazione chiami la funzione di registrazione prima che il buffer di acquisizione della scheda audio sia completamente riempito. Altrimenti ci sarà un sovraccarico del buffer, e verrà sollevato un corrispondente errore di overrun.